From da3e6424b9d858f8cb772d1b1b2de06abe61713a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 28 May 2024 14:41:42 +0300 Subject: [PATCH 001/100] standalone --- .gitignore | 3 +- compottie/build.gradle.kts | 8 +- .../kotlin/com/airbnb/lottie/Cancellable.java | 6 + .../com/airbnb/lottie/FontAssetDelegate.java | 40 + .../com/airbnb/lottie/ImageAssetDelegate.java | 14 + .../com/airbnb/lottie/LottieComposition.java | 395 ++++ .../lottie/LottieCompositionFactory.java | 758 +++++++ .../com/airbnb/lottie/LottieConfig.java | 150 ++ .../com/airbnb/lottie/LottieDrawable.java | 1827 +++++++++++++++++ .../com/airbnb/lottie/LottieImageAsset.java | 92 + .../com/airbnb/lottie/LottieListener.java | 8 + .../com/airbnb/lottie/LottieLogger.java | 17 + .../LottieOnCompositionLoadedListener.java | 5 + .../com/airbnb/lottie/LottieProperty.java | 235 +++ .../com/airbnb/lottie/LottieResult.java | 55 + .../kotlin/com/airbnb/lottie/LottieTask.java | 225 ++ .../airbnb/lottie/LottieTaskIdleListener.java | 11 + .../lottie/OnCompositionLoadedListener.java | 15 + .../com/airbnb/lottie/SimpleColorFilter.java | 20 + .../kotlin/com/airbnb/lottie/TextDelegate.kt | 86 + .../animation/content/BaseStrokeContent.kt | 418 ++++ .../content/CompoundTrimPathContent.kt | 18 + .../lottie/animation/content/Content.kt | 7 + .../lottie/animation/content/ContentGroup.kt | 255 +++ .../animation/content/DrawingContent.kt | 11 + .../animation/content/EllipseContent.kt | 125 ++ .../lottie/animation/content/FillContent.java | 202 ++ .../content/GradientFillContent.java | 319 +++ .../content/GradientStrokeContent.java | 181 ++ .../lottie/animation/content/GreedyContent.kt | 18 + .../content/KeyPathElementContent.java | 6 + .../animation/content/MergePathsContent.java | 123 ++ .../animation/content/ModifierContent.java | 4 + .../lottie/animation/content/PathContent.kt | 8 + .../animation/content/PolystarContent.kt | 363 ++++ .../animation/content/RectangleContent.java | 180 ++ .../animation/content/RepeaterContent.java | 155 ++ .../content/RoundedCornersContent.java | 225 ++ .../animation/content/ShapeContent.java | 114 + .../animation/content/ShapeModifierContent.kt | 8 + .../animation/content/StrokeContent.java | 76 + .../animation/content/TrimPathContent.java | 74 + .../animation/content/package-info.java | 6 + .../keyframe/BaseKeyframeAnimation.kt | 318 +++ .../keyframe/ColorKeyframeAnimation.kt | 50 + .../keyframe/DropShadowKeyframeAnimation.kt | 102 + .../keyframe/FloatKeyframeAnimation.java | 45 + .../GradientColorKeyframeAnimation.java | 32 + .../keyframe/IntegerKeyframeAnimation.java | 48 + .../animation/keyframe/KeyframeAnimation.java | 11 + .../keyframe/MaskKeyframeAnimation.java | 39 + .../animation/keyframe/PathKeyframe.java | 40 + .../keyframe/PathKeyframeAnimation.java | 59 + .../keyframe/PointKeyframeAnimation.java | 41 + .../keyframe/ScaleKeyframeAnimation.java | 40 + .../keyframe/ShapeKeyframeAnimation.java | 58 + .../SplitDimensionPathKeyframeAnimation.java | 105 + .../keyframe/TextKeyframeAnimation.java | 45 + .../keyframe/TransformKeyframeAnimation.java | 361 ++++ .../ValueCallbackKeyframeAnimation.java | 49 + .../animation/keyframe/package-info.java | 6 + .../airbnb/lottie/animation/package-info.java | 6 + .../lottie/manager/FontAssetManager.java | 129 ++ .../lottie/manager/ImageAssetManager.java | 151 ++ .../airbnb/lottie/manager/package-info.java | 6 + .../airbnb/lottie/model/CubicCurveData.java | 91 + .../com/airbnb/lottie/model/DocumentData.java | 76 + .../kotlin/com/airbnb/lottie/model/Font.java | 52 + .../airbnb/lottie/model/FontCharacter.java | 49 + .../com/airbnb/lottie/model/KeyPath.java | 243 +++ .../airbnb/lottie/model/KeyPathElement.java | 41 + .../lottie/model/LottieCompositionCache.java | 50 + .../com/airbnb/lottie/model/Marker.java | 37 + .../com/airbnb/lottie/model/MutablePair.java | 57 + .../animatable/AnimatableColorValue.java | 17 + .../animatable/AnimatableFloatValue.java | 18 + .../AnimatableGradientColorValue.java | 56 + .../animatable/AnimatableIntegerValue.java | 18 + .../model/animatable/AnimatablePathValue.java | 36 + .../animatable/AnimatablePointValue.java | 19 + .../animatable/AnimatableScaleValue.java | 23 + .../animatable/AnimatableShapeValue.java | 20 + .../AnimatableSplitDimensionPathValue.java | 36 + .../model/animatable/AnimatableTextFrame.java | 18 + .../animatable/AnimatableTextProperties.java | 20 + .../model/animatable/AnimatableTransform.java | 124 ++ .../model/animatable/AnimatableValue.java | 14 + .../model/animatable/BaseAnimatableValue.java | 39 + .../lottie/model/animatable/package-info.java | 6 + .../lottie/model/content/BlurEffect.java | 16 + .../lottie/model/content/CircleShape.java | 52 + .../lottie/model/content/ContentModel.java | 13 + .../lottie/model/content/GradientColor.java | 118 ++ .../lottie/model/content/GradientFill.java | 83 + .../lottie/model/content/GradientStroke.java | 110 + .../lottie/model/content/GradientType.java | 6 + .../lottie/model/content/LBlendMode.java | 68 + .../com/airbnb/lottie/model/content/Mask.java | 41 + .../lottie/model/content/MergePaths.java | 74 + .../lottie/model/content/PolystarShape.java | 111 + .../lottie/model/content/RectangleShape.java | 58 + .../airbnb/lottie/model/content/Repeater.java | 52 + .../lottie/model/content/RoundedCorners.java | 32 + .../lottie/model/content/ShapeData.java | 111 + .../lottie/model/content/ShapeFill.java | 63 + .../lottie/model/content/ShapeGroup.java | 42 + .../lottie/model/content/ShapePath.java | 44 + .../lottie/model/content/ShapeStroke.java | 125 ++ .../lottie/model/content/ShapeTrimPath.java | 76 + .../lottie/model/content/package-info.java | 6 + .../airbnb/lottie/model/layer/BaseLayer.java | 761 +++++++ .../lottie/model/layer/CompositionLayer.java | 246 +++ .../airbnb/lottie/model/layer/ImageLayer.java | 112 + .../com/airbnb/lottie/model/layer/Layer.java | 236 +++ .../airbnb/lottie/model/layer/NullLayer.java | 22 + .../airbnb/lottie/model/layer/ShapeLayer.java | 66 + .../airbnb/lottie/model/layer/SolidLayer.java | 110 + .../airbnb/lottie/model/layer/TextLayer.java | 627 ++++++ .../lottie/model/layer/package-info.java | 6 + .../airbnb/lottie/utils/BaseLottieAnimator.kt | 115 ++ .../com/airbnb/lottie/utils/GammaEvaluator.kt | 74 + .../lottie/utils/LottieValueAnimator.kt | 320 +++ .../com/airbnb/lottie/utils/MiscUtils.kt | 120 ++ .../kotlin/com/airbnb/lottie/utils/Utils.kt | 247 +++ .../com/airbnb/lottie/utils/package-info.java | 6 + .../com/airbnb/lottie/value/Interpolator.kt | 9 + .../com/airbnb/lottie/value/Keyframe.kt | 199 ++ .../airbnb/lottie/value/LottieFrameInfo.kt | 17 + .../value/LottieInterpolatedFloatValue.kt | 19 + .../value/LottieInterpolatedIntegerValue.kt | 13 + .../value/LottieInterpolatedPointValue.kt | 22 + .../lottie/value/LottieInterpolatedValue.kt | 15 + .../kotlin/com/airbnb/lottie/value/ScaleXY.kt | 16 + .../compottie/LottieAnimation.android.kt | 247 --- .../compottie/LottieCancellationBehavior.kt | 10 - .../compottie/LottieClipSpec.android.kt | 161 -- .../compottie/LottieComposition.android.kt | 28 - .../LottieCompositionResult.android.kt | 5 - .../LottieCompositionSpec.android.kt | 20 - .../compottie/LottieDynamicProperties.kt | 184 -- .../compottie/LottiePainter.android.kt | 20 - .../compottie/Marker.android.kt | 5 - ...animateLottieCompositionAsState.android.kt | 73 - .../platform/PlatformPathMeasure.android.kt | 80 + .../compottie/LottieAnimatable.kt | 27 +- .../compottie/LottieAnimation.kt | 149 +- ...ationState.kt => LottieAnimationState2.kt} | 5 +- .../compottie/LottieCancellationBehavior.kt | 2 +- .../compottie/LottieClipSpec.kt | 56 - .../compottie/LottieClipSpec.skiko.kt | 197 ++ .../compottie/LottieComposition.kt | 79 +- .../compottie/LottieCompositionResult.kt | 53 +- .../compottie/LottieCompositionSpec.kt | 39 +- .../compottie/LottieConstants.kt | 4 +- .../alexzhirkevich/compottie/LottiePainter.kt | 103 +- .../alexzhirkevich/compottie/Marker.skiko.kt | 6 +- .../animateLottieCompositionAsState.kt | 43 +- .../internal/graphics/ShapeLayerDraw.kt | 20 + .../internal/platform/PlatformPathMeasure.kt | 15 + .../compottie/internal/schema/Content.kt | 11 + .../internal/schema/DrawableContent.kt | 8 + .../compottie/internal/schema/Json.kt | 55 + .../compottie/internal/schema/LottieData.kt | 35 + .../internal/schema/ModifierContent.kt | 8 + .../compottie/internal/schema/PathContent.kt | 7 + .../internal/schema/effects/Effect.kt | 6 + .../schema/helpers/LottieBlendMode.kt | 53 + .../schema/helpers/LottieTransform.kt | 59 + .../internal/schema/helpers/Transform.kt | 33 + .../internal/schema/layers/BaseLayer.kt | 49 + .../compottie/internal/schema/layers/Layer.kt | 31 + .../internal/schema/layers/ShapeLayer.kt | 80 + .../internal/schema/layers/VisualLayer.kt | 34 + .../properties/BezierCurveInterpolation.kt | 10 + .../internal/schema/properties/BooleanInt.kt | 16 + .../schema/properties/GradientColors.kt | 20 + .../internal/schema/properties/Indexable.kt | 6 + .../internal/schema/properties/Keyframe.kt | 5 + .../internal/schema/properties/MatteMode.kt | 16 + .../schema/properties/ShapeProperties.kt | 56 + .../schema/properties/ShapeProperty.kt | 30 + .../properties/ShapePropertyKeyframe.kt | 21 + .../schema/properties/TrimPathType.kt | 18 + .../internal/schema/properties/Value.kt | 58 + .../schema/properties/ValueKeyframe.kt | 61 + .../internal/schema/properties/Vector.kt | 63 + .../schema/properties/VectorKeyframe.kt | 85 + .../internal/schema/shapes/BaseStroke.kt | 220 ++ .../internal/schema/shapes/Ellipse.kt | 89 + .../compottie/internal/schema/shapes/Fill.kt | 39 + .../internal/schema/shapes/GradientFill.kt | 103 + .../internal/schema/shapes/GradientStroke.kt | 84 + .../compottie/internal/schema/shapes/Group.kt | 84 + .../compottie/internal/schema/shapes/Path.kt | 53 + .../compottie/internal/schema/shapes/Rect.kt | 124 ++ .../compottie/internal/schema/shapes/Round.kt | 33 + .../compottie/internal/schema/shapes/Shape.kt | 89 + .../compottie/internal/schema/shapes/Star.kt | 166 ++ .../internal/schema/shapes/Stroke.kt | 94 + .../internal/schema/shapes/TransformShape.kt | 50 + .../compottie/internal/schema/shapes/Trim.kt | 31 + .../internal/schema/shapes/TrimPath.kt | 33 + .../schema/shapes/util/CompoundTrimPath.kt | 18 + .../schema/shapes/util/CornerRounding.kt | 64 + .../internal/schema/shapes/util/Cubic.kt | 437 ++++ .../internal/schema/shapes/util/Feature.kt | 83 + .../internal/schema/shapes/util/MiscUtil.kt | 19 + .../internal/schema/shapes/util/Point.kt | 84 + .../schema/shapes/util/RoundedPolygon.kt | 664 ++++++ .../internal/schema/shapes/util/Urils.kt | 119 ++ .../internal/schema/shapes/util/Utils.kt | 115 ++ .../internal/schema/util/VectorUtil.kt | 5 + .../compottie/LottieAnimation.skiko.kt | 84 - .../compottie/LottieCancellationBehavior.kt | 20 - .../compottie/LottieClipSpec.skiko.kt | 197 -- .../compottie/LottieComposition.skiko.kt | 73 - .../LottieCompositionParser.skiko.kt.kt | 22 - .../LottieCompositionResult.skiko.kt | 122 -- .../compottie/LottieCompositionSpec.skiko.kt | 35 - .../compottie/LottiePainter.skiko.kt | 80 - .../animateLottieCompositionAsState.skiko.kt | 93 - .../platform/PlatformPathMeasure.android.kt | 16 + example/desktopApp/build.gradle.kts | 3 + .../src/jvmMain/kotlin/main.desktop.kt | 40 +- example/shared/build.gradle.kts | 2 + example/shared/src/commonMain/kotlin/App.kt | 606 +++++- example/webApp/build.gradle.kts | 3 +- gradle/libs.versions.toml | 5 +- 228 files changed, 19534 insertions(+), 1778 deletions(-) create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt create mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.android.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.android.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.android.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.android.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.android.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieDynamicProperties.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/Marker.android.kt delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.android.kt create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/{LottieAnimationState.kt => LottieAnimationState2.kt} (86%) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt rename compottie/src/{skikoMain => commonMain}/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt (72%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Content.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/effects/Effect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieBlendMode.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BezierCurveInterpolation.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BooleanInt.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Indexable.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/MatteMode.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/TrimPathType.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Value.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Vector.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Stroke.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/MiscUtil.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/util/VectorUtil.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.skiko.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.skiko.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionParser.skiko.kt.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.skiko.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.skiko.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.skiko.kt delete mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.skiko.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt diff --git a/.gitignore b/.gitignore index bb24bd02..4c3073c3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ xcuserdata *.gpg *.pgp *.psd -kotlins-js-store \ No newline at end of file +kotlins-js-store +.kotlin \ No newline at end of file diff --git a/compottie/build.gradle.kts b/compottie/build.gradle.kts index ccd3aa2f..2b5d9848 100644 --- a/compottie/build.gradle.kts +++ b/compottie/build.gradle.kts @@ -6,6 +6,7 @@ plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.android.library) alias(libs.plugins.compose) + alias(libs.plugins.composeCompiler) alias(libs.plugins.dokka) alias(libs.plugins.serialization) id("maven-publish") @@ -55,14 +56,12 @@ kotlin { commonMain.dependencies { implementation(compose.foundation) implementation(compose.animation) + implementation(libs.serialization) } val desktopMain by getting val wasmJsMain by getting - androidMain.dependencies { - api(libs.lottie.android) - } val skikoMain by creating { @@ -72,9 +71,6 @@ kotlin { macosMain.get().dependsOn(this) jsMain.get().dependsOn(this) wasmJsMain.dependsOn(this) - dependencies { - implementation(libs.serialization) - } } } } diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java new file mode 100644 index 00000000..a192dadd --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java @@ -0,0 +1,6 @@ +package com.airbnb.lottie; + +@Deprecated +public interface Cancellable { + void cancel(); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java new file mode 100644 index 00000000..bea7afd2 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java @@ -0,0 +1,40 @@ +package com.airbnb.lottie; + +import android.graphics.Typeface; + +/** + * Delegate to handle the loading of fonts that are not packaged in the assets of your app or don't + * have the same file name. + * + * @see LottieDrawable#setFontAssetDelegate(FontAssetDelegate) + */ +@SuppressWarnings({"unused", "WeakerAccess"}) public class FontAssetDelegate { + + /** + * Override this if you want to return a Typeface from a font family. + */ + public Typeface fetchFont(String fontFamily) { + return null; + } + + /** + * Override this if you want to return a Typeface from a font family and style. + */ + public Typeface fetchFont(String fontFamily, String fontStyle, String fontName) { + return null; + } + + /** + * Override this if you want to specify the asset path for a given font family. + */ + public String getFontPath(String fontFamily) { + return null; + } + + /** + * Override this if you want to specify the asset path for a given font family and style. + */ + public String getFontPath(String fontFamily, String fontStyle, String fontName) { + return null; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java new file mode 100644 index 00000000..659a0144 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java @@ -0,0 +1,14 @@ +package com.airbnb.lottie; + +import android.graphics.Bitmap; + +import androidx.annotation.Nullable; + +/** + * Delegate to handle the loading of bitmaps that are not packaged in the assets of your app. + * + * @see LottieDrawable#setImageAssetDelegate(ImageAssetDelegate) + */ +public interface ImageAssetDelegate { + @Nullable Bitmap fetchBitmap(LottieImageAsset asset); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java new file mode 100644 index 00000000..057e4298 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java @@ -0,0 +1,395 @@ +package com.airbnb.lottie; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Rect; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RawRes; +import androidx.annotation.RestrictTo; +import androidx.annotation.WorkerThread; +import androidx.collection.LongSparseArray; +import androidx.collection.SparseArrayCompat; + +import com.airbnb.lottie.model.Font; +import com.airbnb.lottie.model.FontCharacter; +import com.airbnb.lottie.model.Marker; +import com.airbnb.lottie.model.layer.Layer; +import com.airbnb.lottie.parser.moshi.JsonReader; +import com.airbnb.lottie.utils.Logger; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.utils.Utils; + +import org.json.JSONObject; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * After Effects/Bodymovin composition model. This is the serialized model from which the + * animation will be created. It is designed to be stateless, cacheable, and shareable. + *

+ * To create one, use {@link LottieCompositionFactory}. + *

+ * It can be used with a {@link com.airbnb.lottie.LottieAnimationView} or + * {@link com.airbnb.lottie.LottieDrawable}. + */ +public class LottieComposition { + + private final HashSet warnings = new HashSet<>(); + private Map> precomps; + private Map images; + private float imagesDpScale; + /** + * Map of font names to fonts + */ + private Map fonts; + private List markers; + private SparseArrayCompat characters; + private LongSparseArray layerMap; + private List layers; + // This is stored as a set to avoid duplicates. + private Rect bounds; + private float startFrame; + private float endFrame; + private float frameRate; + /** + * Used to determine if an animation can be drawn with hardware acceleration. + */ + private boolean hasDashPattern; + /** + * Counts the number of mattes and masks. Before Android switched to SKIA + * for drawing in Oreo (API 28), using hardware acceleration with mattes and masks + * was only faster until you had ~4 masks after which it would actually become slower. + */ + private int maskAndMatteCount = 0; + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public void init(Rect bounds, float startFrame, float endFrame, float frameRate, + List layers, LongSparseArray layerMap, Map> precomps, Map images, float imagesDpScale, + SparseArrayCompat characters, Map fonts, + List markers) { + this.bounds = bounds; + this.startFrame = startFrame; + this.endFrame = endFrame; + this.frameRate = frameRate; + this.layers = layers; + this.layerMap = layerMap; + this.precomps = precomps; + this.images = images; + this.imagesDpScale = imagesDpScale; + this.characters = characters; + this.fonts = fonts; + this.markers = markers; + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public void addWarning(String warning) { + Logger.warning(warning); + warnings.add(warning); + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public void setHasDashPattern(boolean hasDashPattern) { + this.hasDashPattern = hasDashPattern; + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public void incrementMatteOrMaskCount(int amount) { + maskAndMatteCount += amount; + } + + /** + * Used to determine if an animation can be drawn with hardware acceleration. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY) + public boolean hasDashPattern() { + return hasDashPattern; + } + + /** + * Used to determine if an animation can be drawn with hardware acceleration. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY) + public int getMaskAndMatteCount() { + return maskAndMatteCount; + } + + public ArrayList getWarnings() { + return new ArrayList<>(Arrays.asList(warnings.toArray(new String[warnings.size()]))); + } + + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public Layer layerModelForId(long id) { + return layerMap.get(id); + } + + @SuppressWarnings("WeakerAccess") public Rect getBounds() { + return bounds; + } + + @SuppressWarnings("WeakerAccess") public float getDuration() { + return (long) (getDurationFrames() / frameRate * 1000); + } + + public float getStartFrame() { + return startFrame; + } + + public float getEndFrame() { + return endFrame; + } + + public float getFrameForProgress(float progress) { + return MiscUtils.lerp(startFrame, endFrame, progress); + } + + public float getProgressForFrame(float frame) { + float framesSinceStart = frame - startFrame; + float frameRange = endFrame - startFrame; + return framesSinceStart / frameRange; + } + + public float getFrameRate() { + return frameRate; + } + + public List getLayers() { + return layers; + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + @Nullable + public List getPrecomps(String id) { + return precomps.get(id); + } + + public SparseArrayCompat getCharacters() { + return characters; + } + + public Map getFonts() { + return fonts; + } + + public List getMarkers() { + return markers; + } + + @Nullable + public Marker getMarker(String markerName) { + int size = markers.size(); + for (int i = 0; i < size; i++) { + Marker marker = markers.get(i); + if (marker.matchesName(markerName)) { + return marker; + } + } + return null; + } + + public boolean hasImages() { + return !images.isEmpty(); + } + + /** + * Returns a map of image asset id to {@link LottieImageAsset}. These assets contain image metadata exported + * from After Effects or other design tool. The resulting Bitmaps can be set directly on the image asset so + * they can be loaded once and reused across compositions. + * + * If the context dp scale has changed since the last time images were retrieved, images will be rescaled. + */ + public Map getImages() { + float dpScale = Utils.dpScale(); + if (dpScale != imagesDpScale) { + Set> entries = images.entrySet(); + + for (Map.Entry entry : entries) { + images.put(entry.getKey(), entry.getValue().copyWithScale(imagesDpScale / dpScale)); + } + } + imagesDpScale = dpScale; + return images; + } + + public float getDurationFrames() { + return endFrame - startFrame; + } + + + @NonNull + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("LottieComposition:\n"); + for (Layer layer : layers) { + sb.append(layer.toString("\t")); + } + return sb.toString(); + } + + /** + * This will be removed in the next version of Lottie. {@link LottieCompositionFactory} has improved + * API names, failure handlers, and will return in-progress tasks so you will never parse the same + * animation twice in parallel. + * + * @see LottieCompositionFactory + */ + @Deprecated + public static class Factory { + + private Factory() { + } + + /** + * @see LottieCompositionFactory#fromAsset(Context, String) + */ + @SuppressWarnings("deprecation") + @Deprecated + public static Cancellable fromAssetFileName(Context context, String fileName, OnCompositionLoadedListener l) { + ListenerAdapter listener = new ListenerAdapter(l); + LottieCompositionFactory.fromAsset(context, fileName).addListener(listener); + return listener; + } + + /** + * @see LottieCompositionFactory#fromRawRes(Context, int) + */ + @SuppressWarnings("deprecation") + @Deprecated + public static Cancellable fromRawFile(Context context, @RawRes int resId, OnCompositionLoadedListener l) { + ListenerAdapter listener = new ListenerAdapter(l); + LottieCompositionFactory.fromRawRes(context, resId).addListener(listener); + return listener; + } + + /** + * @see LottieCompositionFactory#fromJsonInputStream(InputStream, String) + */ + @SuppressWarnings("deprecation") + @Deprecated + public static Cancellable fromInputStream(InputStream stream, OnCompositionLoadedListener l) { + ListenerAdapter listener = new ListenerAdapter(l); + LottieCompositionFactory.fromJsonInputStream(stream, null).addListener(listener); + return listener; + } + + /** + * @see LottieCompositionFactory#fromJsonString(String, String) + */ + @SuppressWarnings("deprecation") + @Deprecated + public static Cancellable fromJsonString(String jsonString, OnCompositionLoadedListener l) { + ListenerAdapter listener = new ListenerAdapter(l); + LottieCompositionFactory.fromJsonString(jsonString, null).addListener(listener); + return listener; + } + + /** + * @see LottieCompositionFactory#fromJsonReader(JsonReader, String) + */ + @SuppressWarnings("deprecation") + @Deprecated + public static Cancellable fromJsonReader(JsonReader reader, OnCompositionLoadedListener l) { + ListenerAdapter listener = new ListenerAdapter(l); + LottieCompositionFactory.fromJsonReader(reader, null).addListener(listener); + return listener; + } + + /** + * @see LottieCompositionFactory#fromAssetSync(Context, String) + */ + @Nullable + @WorkerThread + @Deprecated + public static LottieComposition fromFileSync(Context context, String fileName) { + return LottieCompositionFactory.fromAssetSync(context, fileName).getValue(); + } + + /** + * @see LottieCompositionFactory#fromJsonInputStreamSync(InputStream, String) + */ + @Nullable + @WorkerThread + @Deprecated + public static LottieComposition fromInputStreamSync(InputStream stream) { + return LottieCompositionFactory.fromJsonInputStreamSync(stream, null).getValue(); + } + + /** + * This will now auto-close the input stream! + * + * @see LottieCompositionFactory#fromJsonInputStreamSync(InputStream, String) + */ + @Nullable + @WorkerThread + @Deprecated + public static LottieComposition fromInputStreamSync(InputStream stream, boolean close) { + if (close) { + Logger.warning("Lottie now auto-closes input stream!"); + } + return LottieCompositionFactory.fromJsonInputStreamSync(stream, null).getValue(); + } + + /** + * @see LottieCompositionFactory#fromJsonSync(JSONObject, String) + */ + @Nullable + @WorkerThread + @Deprecated + public static LottieComposition fromJsonSync(@SuppressWarnings("unused") Resources res, JSONObject json) { + //noinspection deprecation + return LottieCompositionFactory.fromJsonSync(json, null).getValue(); + } + + /** + * @see LottieCompositionFactory#fromJsonStringSync(String, String) + */ + @Nullable + @WorkerThread + @Deprecated + public static LottieComposition fromJsonSync(String json) { + return LottieCompositionFactory.fromJsonStringSync(json, null).getValue(); + } + + /** + * @see LottieCompositionFactory#fromJsonReaderSync(JsonReader, String) + */ + @Nullable + @WorkerThread + @Deprecated + public static LottieComposition fromJsonSync(JsonReader reader) { + return LottieCompositionFactory.fromJsonReaderSync(reader, null).getValue(); + } + + @SuppressWarnings("deprecation") + private static final class ListenerAdapter implements LottieListener, Cancellable { + + private final OnCompositionLoadedListener listener; + private boolean cancelled = false; + + private ListenerAdapter(OnCompositionLoadedListener listener) { + this.listener = listener; + } + + @Override public void onResult(LottieComposition composition) { + if (cancelled) { + return; + } + listener.onCompositionLoaded(composition); + } + + @Override public void cancel() { + cancelled = true; + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java new file mode 100644 index 00000000..d2eaa3bb --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java @@ -0,0 +1,758 @@ +package com.airbnb.lottie; + +import static com.airbnb.lottie.utils.Utils.closeQuietly; +import static okio.Okio.buffer; +import static okio.Okio.source; + +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Typeface; +import android.util.Base64; +import android.util.Log; + +import androidx.annotation.Nullable; +import androidx.annotation.RawRes; +import androidx.annotation.WorkerThread; + +import com.airbnb.lottie.model.Font; +import com.airbnb.lottie.model.LottieCompositionCache; +import com.airbnb.lottie.network.NetworkCache; +import com.airbnb.lottie.parser.LottieCompositionMoshiParser; +import com.airbnb.lottie.parser.moshi.JsonReader; +import com.airbnb.lottie.utils.Logger; +import com.airbnb.lottie.utils.Utils; + +import org.json.JSONObject; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.zip.GZIPInputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +import okio.BufferedSource; +import okio.Okio; + +/** + * Helpers to create or cache a LottieComposition. + *

+ * All factory methods take a cache key. The animation will be stored in an LRU cache for future use. + * In-progress tasks will also be held so they can be returned for subsequent requests for the same + * animation prior to the cache being populated. + */ +@SuppressWarnings({"WeakerAccess", "unused", "NullAway"}) +public class LottieCompositionFactory { + + /** + * Keep a map of cache keys to in-progress tasks and return them for new requests. + * Without this, simultaneous requests to parse a composition will trigger multiple parallel + * parse tasks prior to the cache getting populated. + */ + private static final Map> taskCache = new HashMap<>(); + private static final Set taskIdleListeners = new HashSet<>(); + + /** + * reference magic bytes for zip compressed files. + * useful to determine if an InputStream is a zip file or not + */ + private static final byte[] ZIP_MAGIC = new byte[]{0x50, 0x4b, 0x03, 0x04}; + private static final byte[] GZIP_MAGIC = new byte[]{0x1f, (byte) 0x8b, 0x08}; + + + private LottieCompositionFactory() { + } + + /** + * Set the maximum number of compositions to keep cached in memory. + * This must be {@literal >} 0. + */ + public static void setMaxCacheSize(int size) { + LottieCompositionCache.getInstance().resize(size); + } + + public static void clearCache(Context context) { + taskCache.clear(); + LottieCompositionCache.getInstance().clear(); + final NetworkCache networkCache = L.networkCache(context); + if (networkCache != null) { + networkCache.clear(); + } + } + + /** + * Use this to register a callback for when the composition factory is idle or not. + * This can be used to provide data to an espresso idling resource. + * Refer to FragmentVisibilityTests and its LottieIdlingResource in the Lottie repo for + * an example. + */ + public static void registerLottieTaskIdleListener(LottieTaskIdleListener listener) { + taskIdleListeners.add(listener); + listener.onIdleChanged(taskCache.size() == 0); + } + + public static void unregisterLottieTaskIdleListener(LottieTaskIdleListener listener) { + taskIdleListeners.remove(listener); + } + + /** + * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for + * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you + * might need an animation in the future. + *

+ * To skip the cache, add null as a third parameter. + */ + public static LottieTask fromUrl(final Context context, final String url) { + return fromUrl(context, url, "url_" + url); + } + + /** + * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for + * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you + * might need an animation in the future. + */ + public static LottieTask fromUrl(final Context context, final String url, @Nullable final String cacheKey) { + return cache(cacheKey, () -> { + LottieResult result = L.networkFetcher(context).fetchSync(context, url, cacheKey); + if (cacheKey != null && result.getValue() != null) { + LottieCompositionCache.getInstance().put(cacheKey, result.getValue()); + } + return result; + }, null); + } + + /** + * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for + * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you + * might need an animation in the future. + */ + @WorkerThread + public static LottieResult fromUrlSync(Context context, String url) { + return fromUrlSync(context, url, url); + } + + + /** + * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for + * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you + * might need an animation in the future. + */ + @WorkerThread + public static LottieResult fromUrlSync(Context context, String url, @Nullable String cacheKey) { + final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); + if (cachedComposition != null) { + return new LottieResult<>(cachedComposition); + } + LottieResult result = L.networkFetcher(context).fetchSync(context, url, cacheKey); + if (cacheKey != null && result.getValue() != null) { + LottieCompositionCache.getInstance().put(cacheKey, result.getValue()); + } + return result; + } + + /** + * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. + * The asset file name will be used as a cache key so future usages won't have to parse the json again. + * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. + *

+ * To skip the cache, add null as a third parameter. + * + * @see #fromZipStream(ZipInputStream, String) + */ + public static LottieTask fromAsset(Context context, final String fileName) { + String cacheKey = "asset_" + fileName; + return fromAsset(context, fileName, cacheKey); + } + + /** + * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. + * The asset file name will be used as a cache key so future usages won't have to parse the json again. + * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. + *

+ * Pass null as the cache key to skip the cache. + * + * @see #fromZipStream(ZipInputStream, String) + */ + public static LottieTask fromAsset(Context context, final String fileName, @Nullable final String cacheKey) { + // Prevent accidentally leaking an Activity. + final Context appContext = context.getApplicationContext(); + return cache(cacheKey, () -> fromAssetSync(appContext, fileName, cacheKey), null); + } + + /** + * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. + * The asset file name will be used as a cache key so future usages won't have to parse the json again. + * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. + *

+ * To skip the cache, add null as a third parameter. + * + * @see #fromZipStreamSync(Context, ZipInputStream, String) + */ + @WorkerThread + public static LottieResult fromAssetSync(Context context, String fileName) { + String cacheKey = "asset_" + fileName; + return fromAssetSync(context, fileName, cacheKey); + } + + /** + * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. + * The asset file name will be used as a cache key so future usages won't have to parse the json again. + * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. + *

+ * Pass null as the cache key to skip the cache. + * + * @see #fromZipStreamSync(Context, ZipInputStream, String) + */ + @WorkerThread + public static LottieResult fromAssetSync(Context context, String fileName, @Nullable String cacheKey) { + final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); + if (cachedComposition != null) { + return new LottieResult<>(cachedComposition); + } + try { + BufferedSource source = Okio.buffer(source(context.getAssets().open(fileName))); + if (isZipCompressed(source)) { + return fromZipStreamSync(context, new ZipInputStream(source.inputStream()), cacheKey); + } else if (isGzipCompressed(source)) { + return fromJsonInputStreamSync(new GZIPInputStream(source.inputStream()), cacheKey); + } + return fromJsonInputStreamSync(source.inputStream(), cacheKey); + } catch (IOException e) { + return new LottieResult<>(e); + } + } + + + /** + * Parse an animation from raw/res. This is recommended over putting your animation in assets because + * it uses a hard reference to R. + * The resource id will be used as a cache key so future usages won't parse the json again. + * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). + * The Activity won't be leaked. + *

+ * To skip the cache, add null as a third parameter. + */ + public static LottieTask fromRawRes(Context context, @RawRes final int rawRes) { + return fromRawRes(context, rawRes, rawResCacheKey(context, rawRes)); + } + + /** + * Parse an animation from raw/res. This is recommended over putting your animation in assets because + * it uses a hard reference to R. + * The resource id will be used as a cache key so future usages won't parse the json again. + * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). + * The Activity won't be leaked. + *

+ * Pass null as the cache key to skip caching. + */ + public static LottieTask fromRawRes(Context context, @RawRes final int rawRes, @Nullable final String cacheKey) { + // Prevent accidentally leaking an Activity. + final WeakReference contextRef = new WeakReference<>(context); + final Context appContext = context.getApplicationContext(); + return cache(cacheKey, () -> { + @Nullable Context originalContext = contextRef.get(); + Context context1 = originalContext != null ? originalContext : appContext; + return fromRawResSync(context1, rawRes, cacheKey); + }, null); + } + + /** + * Parse an animation from raw/res. This is recommended over putting your animation in assets because + * it uses a hard reference to R. + * The resource id will be used as a cache key so future usages won't parse the json again. + * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). + * The Activity won't be leaked. + *

+ * To skip the cache, add null as a third parameter. + */ + @WorkerThread + public static LottieResult fromRawResSync(Context context, @RawRes int rawRes) { + return fromRawResSync(context, rawRes, rawResCacheKey(context, rawRes)); + } + + /** + * Parse an animation from raw/res. This is recommended over putting your animation in assets because + * it uses a hard reference to R. + * The resource id will be used as a cache key so future usages won't parse the json again. + * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). + * The Activity won't be leaked. + *

+ * Pass null as the cache key to skip caching. + */ + @WorkerThread + public static LottieResult fromRawResSync(Context context, @RawRes int rawRes, @Nullable String cacheKey) { + final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); + if (cachedComposition != null) { + return new LottieResult<>(cachedComposition); + } + try { + BufferedSource source = Okio.buffer(source(context.getResources().openRawResource(rawRes))); + if (isZipCompressed(source)) { + return fromZipStreamSync(context, new ZipInputStream(source.inputStream()), cacheKey); + } else if (isGzipCompressed(source)) { + try { + return fromJsonInputStreamSync(new GZIPInputStream(source.inputStream()), cacheKey); + } catch (IOException e) { + // This shouldn't happen because we check the header for magic bytes. + return new LottieResult<>(e); + } + } + return fromJsonInputStreamSync(source.inputStream(), cacheKey); + } catch (Resources.NotFoundException e) { + return new LottieResult<>(e); + } + } + + private static String rawResCacheKey(Context context, @RawRes int resId) { + return "rawRes" + (isNightMode(context) ? "_night_" : "_day_") + resId; + } + + /** + * It is important to include day/night in the cache key so that if it changes, the cache won't return an animation from the wrong bucket. + */ + private static boolean isNightMode(Context context) { + int nightModeMasked = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; + return nightModeMasked == Configuration.UI_MODE_NIGHT_YES; + } + + /** + * Auto-closes the stream. + * + * @see #fromJsonInputStreamSync(InputStream, String, boolean) + */ + public static LottieTask fromJsonInputStream(final InputStream stream, @Nullable final String cacheKey) { + return cache(cacheKey, () -> fromJsonInputStreamSync(stream, cacheKey), () -> closeQuietly(stream)); + } + + /** + * @see #fromJsonInputStreamSync(InputStream, String, boolean) + */ + public static LottieTask fromJsonInputStream(final InputStream stream, @Nullable final String cacheKey, boolean close) { + return cache(cacheKey, () -> fromJsonInputStreamSync(stream, cacheKey, close), () -> { + if (close) { + closeQuietly(stream); + } + }); + } + + /** + * Return a LottieComposition for the given InputStream to json. + */ + @WorkerThread + public static LottieResult fromJsonInputStreamSync(InputStream stream, @Nullable String cacheKey) { + return fromJsonInputStreamSync(stream, cacheKey, true); + } + + /** + * Return a LottieComposition for the given InputStream to json. + */ + @WorkerThread + public static LottieResult fromJsonInputStreamSync(InputStream stream, @Nullable String cacheKey, boolean close) { + return fromJsonReaderSync(JsonReader.of(buffer(source(stream))), cacheKey, close); + } + + /** + * @see #fromJsonSync(JSONObject, String) + */ + @Deprecated + public static LottieTask fromJson(final JSONObject json, @Nullable final String cacheKey) { + return cache(cacheKey, () -> { + //noinspection deprecation + return fromJsonSync(json, cacheKey); + }, null); + } + + /** + * Prefer passing in the json string directly. This method just calls `toString()` on your JSONObject. + * If you are loading this animation from the network, just use the response body string instead of + * parsing it first for improved performance. + */ + @Deprecated + @WorkerThread + public static LottieResult fromJsonSync(JSONObject json, @Nullable String cacheKey) { + return fromJsonStringSync(json.toString(), cacheKey); + } + + /** + * @see #fromJsonStringSync(String, String) + */ + public static LottieTask fromJsonString(final String json, @Nullable final String cacheKey) { + return cache(cacheKey, () -> fromJsonStringSync(json, cacheKey), null); + } + + /** + * Return a LottieComposition for the specified raw json string. + * If loading from a file, it is preferable to use the InputStream or rawRes version. + */ + @WorkerThread + public static LottieResult fromJsonStringSync(String json, @Nullable String cacheKey) { + ByteArrayInputStream stream = new ByteArrayInputStream(json.getBytes()); + return fromJsonReaderSync(JsonReader.of(buffer(source(stream))), cacheKey); + } + + public static LottieTask fromJsonReader(final JsonReader reader, @Nullable final String cacheKey) { + return cache(cacheKey, () -> fromJsonReaderSync(reader, cacheKey), () -> Utils.closeQuietly(reader)); + } + + @WorkerThread + public static LottieResult fromJsonReaderSync(com.airbnb.lottie.parser.moshi.JsonReader reader, @Nullable String cacheKey) { + return fromJsonReaderSync(reader, cacheKey, true); + } + + @WorkerThread + public static LottieResult fromJsonReaderSync(com.airbnb.lottie.parser.moshi.JsonReader reader, @Nullable String cacheKey, + boolean close) { + return fromJsonReaderSyncInternal(reader, cacheKey, close); + } + + private static LottieResult fromJsonReaderSyncInternal( + com.airbnb.lottie.parser.moshi.JsonReader reader, @Nullable String cacheKey, boolean close) { + try { + final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); + if (cachedComposition != null) { + return new LottieResult<>(cachedComposition); + } + LottieComposition composition = LottieCompositionMoshiParser.parse(reader); + if (cacheKey != null) { + LottieCompositionCache.getInstance().put(cacheKey, composition); + } + return new LottieResult<>(composition); + } catch (Exception e) { + return new LottieResult<>(e); + } finally { + if (close) { + closeQuietly(reader); + } + } + } + + /** + * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload + * that takes Context as the first parameter. + */ + public static LottieTask fromZipStream(final ZipInputStream inputStream, @Nullable final String cacheKey) { + return fromZipStream(null, inputStream, cacheKey); + } + + /** + * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload + * that takes Context as the first parameter. + */ + public static LottieTask fromZipStream(final ZipInputStream inputStream, @Nullable final String cacheKey, boolean close) { + return fromZipStream(null, inputStream, cacheKey, close); + } + + /** + * @see #fromZipStreamSync(Context, ZipInputStream, String) + */ + public static LottieTask fromZipStream(Context context, final ZipInputStream inputStream, @Nullable final String cacheKey) { + return cache(cacheKey, () -> fromZipStreamSync(context, inputStream, cacheKey), () -> closeQuietly(inputStream)); + } + + /** + * @see #fromZipStreamSync(Context, ZipInputStream, String) + */ + public static LottieTask fromZipStream(Context context, final ZipInputStream inputStream, + @Nullable final String cacheKey, boolean close) { + return cache(cacheKey, () -> fromZipStreamSync(context, inputStream, cacheKey), close ? () -> closeQuietly(inputStream) : null); + } + + /** + * Parses a zip input stream into a Lottie composition. + * Your zip file should just be a folder with your json file and images zipped together. + * It will automatically store and configure any images inside the animation if they exist. + *

+ * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload + * that takes Context as the first parameter. + *

+ * The ZipInputStream will be automatically closed at the end. If you would like to keep it open, use the overload + * with a close parameter and pass in false. + */ + public static LottieResult fromZipStreamSync(ZipInputStream inputStream, @Nullable String cacheKey) { + return fromZipStreamSync(inputStream, cacheKey, true); + } + + /** + * Parses a zip input stream into a Lottie composition. + * Your zip file should just be a folder with your json file and images zipped together. + * It will automatically store and configure any images inside the animation if they exist. + *

+ * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload + * that takes Context as the first parameter. + */ + public static LottieResult fromZipStreamSync(ZipInputStream inputStream, @Nullable String cacheKey, boolean close) { + return fromZipStreamSync(null, inputStream, cacheKey, close); + } + + /** + * Parses a zip input stream into a Lottie composition. + * Your zip file should just be a folder with your json file and images zipped together. + * It will automatically store and configure any images inside the animation if they exist. + *

+ * The ZipInputStream will be automatically closed at the end. If you would like to keep it open, use the overload + * with a close parameter and pass in false. + * + * @param context is optional and only needed if your zip file contains ttf or otf fonts. If yours doesn't, you may pass null. + * Embedded fonts may be .ttf or .otf files, can be in subdirectories, but must have the same name as the + * font family (fFamily) in your animation file. + */ + @WorkerThread + public static LottieResult fromZipStreamSync(@Nullable Context context, ZipInputStream inputStream, @Nullable String cacheKey) { + return fromZipStreamSync(context, inputStream, cacheKey, true); + } + + /** + * Parses a zip input stream into a Lottie composition. + * Your zip file should just be a folder with your json file and images zipped together. + * It will automatically store and configure any images inside the animation if they exist. + * + * @param context is optional and only needed if your zip file contains ttf or otf fonts. If yours doesn't, you may pass null. + * Embedded fonts may be .ttf or .otf files, can be in subdirectories, but must have the same name as the + * font family (fFamily) in your animation file. + */ + @WorkerThread + public static LottieResult fromZipStreamSync(@Nullable Context context, ZipInputStream inputStream, + @Nullable String cacheKey, boolean close) { + try { + return fromZipStreamSyncInternal(context, inputStream, cacheKey); + } finally { + if (close) { + closeQuietly(inputStream); + } + } + } + + @WorkerThread + private static LottieResult fromZipStreamSyncInternal(Context context, ZipInputStream inputStream, @Nullable String cacheKey) { + LottieComposition composition = null; + Map images = new HashMap<>(); + Map fonts = new HashMap<>(); + + try { + final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); + if (cachedComposition != null) { + return new LottieResult<>(cachedComposition); + } + ZipEntry entry = inputStream.getNextEntry(); + while (entry != null) { + final String entryName = entry.getName(); + if (entryName.contains("__MACOSX")) { + inputStream.closeEntry(); + } else if (entry.getName().equalsIgnoreCase("manifest.json")) { //ignore .lottie manifest + inputStream.closeEntry(); + } else if (entry.getName().contains(".json")) { + com.airbnb.lottie.parser.moshi.JsonReader reader = JsonReader.of(buffer(source(inputStream))); + composition = LottieCompositionFactory.fromJsonReaderSyncInternal(reader, null, false).getValue(); + } else if (entryName.contains(".png") || entryName.contains(".webp") || entryName.contains(".jpg") || entryName.contains(".jpeg")) { + String[] splitName = entryName.split("/"); + String name = splitName[splitName.length - 1]; + images.put(name, BitmapFactory.decodeStream(inputStream)); + } else if (entryName.contains(".ttf") || entryName.contains(".otf")) { + String[] splitName = entryName.split("/"); + String fileName = splitName[splitName.length - 1]; + String fontFamily = fileName.split("\\.")[0]; + File tempFile = new File(context.getCacheDir(), fileName); + FileOutputStream fos = new FileOutputStream(tempFile); + try { + try (OutputStream output = new FileOutputStream(tempFile)) { + byte[] buffer = new byte[4 * 1024]; + int read; + while ((read = inputStream.read(buffer)) != -1) { + output.write(buffer, 0, read); + } + output.flush(); + } + } catch (Throwable e) { + Logger.warning("Unable to save font " + fontFamily + " to the temporary file: " + fileName + ". ", e); + } + Typeface typeface = Typeface.createFromFile(tempFile); + if (!tempFile.delete()) { + Logger.warning("Failed to delete temp font file " + tempFile.getAbsolutePath() + "."); + } + fonts.put(fontFamily, typeface); + } else { + inputStream.closeEntry(); + } + + entry = inputStream.getNextEntry(); + } + } catch (IOException e) { + return new LottieResult<>(e); + } + + + if (composition == null) { + return new LottieResult<>(new IllegalArgumentException("Unable to parse composition")); + } + + for (Map.Entry e : images.entrySet()) { + LottieImageAsset imageAsset = findImageAssetForFileName(composition, e.getKey()); + if (imageAsset != null) { + imageAsset.setBitmap(Utils.resizeBitmapIfNeeded(e.getValue(), imageAsset.getWidth(), imageAsset.getHeight())); + } + } + + for (Map.Entry e : fonts.entrySet()) { + boolean found = false; + for (Font font : composition.getFonts().values()) { + if (font.getFamily().equals(e.getKey())) { + found = true; + font.setTypeface(e.getValue()); + } + } + if (!found) { + Logger.warning("Parsed font for " + e.getKey() + " however it was not found in the animation."); + } + } + + if (images.isEmpty()) { + for (Map.Entry entry : composition.getImages().entrySet()) { + LottieImageAsset asset = entry.getValue(); + if (asset == null) { + return null; + } + String filename = asset.getFileName(); + BitmapFactory.Options opts = new BitmapFactory.Options(); + opts.inScaled = true; + opts.inDensity = 160; + + if (filename.startsWith("data:") && filename.indexOf("base64,") > 0) { + // Contents look like a base64 data URI, with the format data:image/png;base64,. + byte[] data; + try { + data = Base64.decode(filename.substring(filename.indexOf(',') + 1), Base64.DEFAULT); + } catch (IllegalArgumentException e) { + Logger.warning("data URL did not have correct base64 format.", e); + return null; + } + Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opts); + bitmap = Utils.resizeBitmapIfNeeded(bitmap, asset.getWidth(), asset.getHeight()); + asset.setBitmap(bitmap); + } + } + } + + if (cacheKey != null) { + LottieCompositionCache.getInstance().put(cacheKey, composition); + } + return new LottieResult<>(composition); + } + + /** + * Check if a given InputStream points to a .zip compressed file + */ + private static Boolean isZipCompressed(BufferedSource inputSource) { + return matchesMagicBytes(inputSource, ZIP_MAGIC); + } + + /** + * Check if a given InputStream points to a .gzip compressed file + */ + private static Boolean isGzipCompressed(BufferedSource inputSource) { + return matchesMagicBytes(inputSource, GZIP_MAGIC); + } + + private static Boolean matchesMagicBytes(BufferedSource inputSource, byte[] magic) { + try { + BufferedSource peek = inputSource.peek(); + for (byte b : magic) { + if (peek.readByte() != b) { + return false; + } + } + peek.close(); + return true; + } catch (NoSuchMethodError e) { + // This happens in the Android Studio layout preview. + return false; + } catch (Exception e) { + Logger.error("Failed to check zip file header", e); + return false; + } + } + + @Nullable + private static LottieImageAsset findImageAssetForFileName(LottieComposition composition, String fileName) { + for (LottieImageAsset asset : composition.getImages().values()) { + if (asset.getFileName().equals(fileName)) { + return asset; + } + } + return null; + } + + /** + * First, check to see if there are any in-progress tasks associated with the cache key and return it if there is. + * If not, create a new task for the callable. + * Then, add the new task to the task cache and set up listeners so it gets cleared when done. + */ + private static LottieTask cache(@Nullable final String cacheKey, Callable> callable, + @Nullable Runnable onCached) { + LottieTask task = null; + final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); + if (cachedComposition != null) { + task = new LottieTask<>(cachedComposition); + } + if (cacheKey != null && taskCache.containsKey(cacheKey)) { + task = taskCache.get(cacheKey); + } + if (task != null) { + if (onCached != null) { + onCached.run(); + } + return task; + } + + task = new LottieTask<>(callable); + if (cacheKey != null) { + AtomicBoolean resultAlreadyCalled = new AtomicBoolean(false); + task.addListener(result -> { + taskCache.remove(cacheKey); + resultAlreadyCalled.set(true); + if (taskCache.size() == 0) { + notifyTaskCacheIdleListeners(true); + } + }); + task.addFailureListener(result -> { + taskCache.remove(cacheKey); + resultAlreadyCalled.set(true); + if (taskCache.size() == 0) { + notifyTaskCacheIdleListeners(true); + } + }); + // It is technically possible for the task to finish and for the listeners to get called + // before this code runs. If this happens, the task will be put in taskCache but never removed. + // This would require this thread to be sleeping at exactly this point in the code + // for long enough for the task to finish and call the listeners. Unlikely but not impossible. + if (!resultAlreadyCalled.get()) { + taskCache.put(cacheKey, task); + if (taskCache.size() == 1) { + notifyTaskCacheIdleListeners(false); + } + } + } + return task; + } + + private static void notifyTaskCacheIdleListeners(boolean idle) { + List listeners = new ArrayList<>(taskIdleListeners); + for (int i = 0; i < listeners.size(); i++) { + listeners.get(i).onIdleChanged(idle); + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java new file mode 100644 index 00000000..09f5e57b --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java @@ -0,0 +1,150 @@ +package com.airbnb.lottie; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.airbnb.lottie.network.LottieNetworkCacheProvider; +import com.airbnb.lottie.network.LottieNetworkFetcher; + +import java.io.File; + +/** + * Class for custom library configuration. + *

+ * This should be constructed with {@link LottieConfig.Builder} + */ +public class LottieConfig { + + @Nullable final LottieNetworkFetcher networkFetcher; + @Nullable final LottieNetworkCacheProvider cacheProvider; + final boolean enableSystraceMarkers; + final boolean enableNetworkCache; + final boolean disablePathInterpolatorCache; + final AsyncUpdates defaultAsyncUpdates; + + private LottieConfig(@Nullable LottieNetworkFetcher networkFetcher, @Nullable LottieNetworkCacheProvider cacheProvider, + boolean enableSystraceMarkers, boolean enableNetworkCache, boolean disablePathInterpolatorCache, + AsyncUpdates defaultAsyncUpdates) { + this.networkFetcher = networkFetcher; + this.cacheProvider = cacheProvider; + this.enableSystraceMarkers = enableSystraceMarkers; + this.enableNetworkCache = enableNetworkCache; + this.disablePathInterpolatorCache = disablePathInterpolatorCache; + this.defaultAsyncUpdates = defaultAsyncUpdates; + } + + public static final class Builder { + + @Nullable + private LottieNetworkFetcher networkFetcher; + @Nullable + private LottieNetworkCacheProvider cacheProvider; + private boolean enableSystraceMarkers = false; + private boolean enableNetworkCache = true; + private boolean disablePathInterpolatorCache = true; + private AsyncUpdates defaultAsyncUpdates = AsyncUpdates.AUTOMATIC; + + /** + * Lottie has a default network fetching stack built on {@link java.net.HttpURLConnection}. However, if you would like to hook into your own + * network stack for performance, caching, or analytics, you may replace the internal stack with your own. + */ + @NonNull + public Builder setNetworkFetcher(@NonNull LottieNetworkFetcher fetcher) { + this.networkFetcher = fetcher; + return this; + } + + /** + * Provide your own network cache directory. By default, animations will be saved in your application's cacheDir/lottie_network_cache. + * + * @see #setNetworkCacheProvider(LottieNetworkCacheProvider) + */ + @NonNull + public Builder setNetworkCacheDir(@NonNull final File file) { + if (cacheProvider != null) { + throw new IllegalStateException("There is already a cache provider!"); + } + cacheProvider = new LottieNetworkCacheProvider() { + @Override @NonNull public File getCacheDir() { + if (!file.isDirectory()) { + throw new IllegalArgumentException("cache file must be a directory"); + } + return file; + } + }; + return this; + } + + /** + * Provide your own network cache provider. By default, animations will be saved in your application's cacheDir/lottie_network_cache. + */ + @NonNull + public Builder setNetworkCacheProvider(@NonNull final LottieNetworkCacheProvider fileCacheProvider) { + if (cacheProvider != null) { + throw new IllegalStateException("There is already a cache provider!"); + } + cacheProvider = new LottieNetworkCacheProvider() { + @NonNull @Override public File getCacheDir() { + File file = fileCacheProvider.getCacheDir(); + if (!file.isDirectory()) { + throw new IllegalArgumentException("cache file must be a directory"); + } + return file; + } + }; + return this; + } + + /** + * Enable this if you want to run systrace to debug the performance of animations. + *

+ * DO NOT leave this enabled in production. The overhead is low but non-zero. + * + * @see Systrace Docs + */ + @NonNull + public Builder setEnableSystraceMarkers(boolean enable) { + enableSystraceMarkers = enable; + return this; + } + + /** + * Disable this if you want to completely disable internal Lottie cache for retrieving network animations. + * Internal network cache is enabled by default. + */ + @NonNull + public Builder setEnableNetworkCache(boolean enable) { + enableNetworkCache = enable; + return this; + } + + /** + * When parsing animations, Lottie has a path interpolator cache. This cache allows Lottie to reuse PathInterpolators + * across an animation. This is desirable in most cases. However, when shared across screenshot tests, it can cause slight + * deviations in the rendering due to underlying approximations in the PathInterpolator. + * + * The cache is enabled by default and should probably only be disabled for screenshot tests. + */ + @NonNull + public Builder setDisablePathInterpolatorCache(boolean disable) { + disablePathInterpolatorCache = disable; + return this; + } + + /** + * Sets the default value for async updates. + * @see LottieDrawable#setAsyncUpdates(AsyncUpdates) + */ + @NonNull + public Builder setDefaultAsyncUpdates(AsyncUpdates asyncUpdates) { + defaultAsyncUpdates = asyncUpdates; + return this; + } + + @NonNull + public LottieConfig build() { + return new LottieConfig(networkFetcher, cacheProvider, enableSystraceMarkers, enableNetworkCache, disablePathInterpolatorCache, + defaultAsyncUpdates); + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java new file mode 100644 index 00000000..4aedd1f5 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java @@ -0,0 +1,1827 @@ +package com.airbnb.lottie; + +import android.animation.Animator; +import android.animation.ValueAnimator; +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Typeface; +import android.graphics.drawable.Animatable; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Handler; +import android.os.Looper; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.widget.ImageView; + +import androidx.annotation.FloatRange; +import androidx.annotation.IntDef; +import androidx.annotation.IntRange; +import androidx.annotation.MainThread; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; +import androidx.annotation.RestrictTo; + +import com.airbnb.lottie.animation.LPaint; +import com.airbnb.lottie.manager.FontAssetManager; +import com.airbnb.lottie.manager.ImageAssetManager; +import com.airbnb.lottie.model.Font; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.Marker; +import com.airbnb.lottie.model.layer.CompositionLayer; +import com.airbnb.lottie.parser.LayerParser; +import com.airbnb.lottie.utils.Logger; +import com.airbnb.lottie.utils.LottieThreadFactory; +import com.airbnb.lottie.utils.LottieValueAnimator; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.LottieFrameInfo; +import com.airbnb.lottie.value.LottieValueCallback; +import com.airbnb.lottie.value.SimpleLottieValueCallback; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Executor; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.Semaphore; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * This can be used to show an lottie animation in any place that would normally take a drawable. + * + * @see Full Documentation + */ +@SuppressWarnings({"WeakerAccess"}) +public class LottieDrawable extends Drawable implements Drawable.Callback, Animatable { + private interface LazyCompositionTask { + void run(LottieComposition composition); + } + + /** + * Internal record keeping of the desired play state when {@link #isVisible()} transitions to or is false. + *

+ * If the animation was playing when it becomes invisible or play/pause is called on it while it is invisible, it will + * store the state and then take the appropriate action when the drawable becomes visible again. + */ + private enum OnVisibleAction { + NONE, + PLAY, + RESUME, + } + + /** + * Prior to Oreo, you could only call invalidateDrawable() from the main thread. + * This means that when async updates are enabled, we must post the invalidate call to the main thread. + * Newer devices can call invalidate directly from whatever thread asyncUpdates runs on. + */ + private static final boolean invalidateSelfOnMainThread = Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1; + + /** + * The marker to use if "reduced motion" is enabled. + * Supported marker names are case insensitive, and include: + * - reduced motion + * - reducedMotion + * - reduced_motion + * - reduced-motion + */ + private static final List ALLOWED_REDUCED_MOTION_MARKERS = Arrays.asList( + "reduced motion", + "reduced_motion", + "reduced-motion", + "reducedmotion" + ); + + private LottieComposition composition; + private final LottieValueAnimator animator = new LottieValueAnimator(); + + // Call animationsEnabled() instead of using these fields directly. + private boolean systemAnimationsEnabled = true; + private boolean ignoreSystemAnimationsDisabled = false; + + private boolean safeMode = false; + private OnVisibleAction onVisibleAction = OnVisibleAction.NONE; + + private final ArrayList lazyCompositionTasks = new ArrayList<>(); + + /** + * ImageAssetManager created automatically by Lottie for views. + */ + @Nullable + private ImageAssetManager imageAssetManager; + @Nullable + private String imageAssetsFolder; + @Nullable + private ImageAssetDelegate imageAssetDelegate; + @Nullable + private FontAssetManager fontAssetManager; + @Nullable + private Map fontMap; + /** + * Will be set if manually overridden by {@link #setDefaultFontFileExtension(String)}. + * This must be stored as a field in case it is set before the font asset delegate + * has been created. + */ + @Nullable String defaultFontFileExtension; + @Nullable + FontAssetDelegate fontAssetDelegate; + @Nullable + TextDelegate textDelegate; + private boolean enableMergePaths; + private boolean maintainOriginalImageBounds = false; + private boolean clipToCompositionBounds = true; + @Nullable + private CompositionLayer compositionLayer; + private int alpha = 255; + private boolean outlineMasksAndMattes; + private boolean isApplyingOpacityToLayersEnabled; + private boolean clipTextToBoundingBox = false; + + private RenderMode renderMode = RenderMode.AUTOMATIC; + /** + * The actual render mode derived from {@link #renderMode}. + */ + private boolean useSoftwareRendering = false; + private final Matrix renderingMatrix = new Matrix(); + private Bitmap softwareRenderingBitmap; + private Canvas softwareRenderingCanvas; + private Rect canvasClipBounds; + private RectF canvasClipBoundsRectF; + private Paint softwareRenderingPaint; + private Rect softwareRenderingSrcBoundsRect; + private Rect softwareRenderingDstBoundsRect; + private RectF softwareRenderingDstBoundsRectF; + private RectF softwareRenderingTransformedBounds; + private Matrix softwareRenderingOriginalCanvasMatrix; + private Matrix softwareRenderingOriginalCanvasMatrixInverse; + + /** + * True if the drawable has not been drawn since the last invalidateSelf. + * We can do this to prevent things like bounds from getting recalculated + * many times. + */ + private boolean isDirty = false; + + /** Use the getter so that it can fall back to {@link L#getDefaultAsyncUpdates()}. */ + @Nullable private AsyncUpdates asyncUpdates; + private final ValueAnimator.AnimatorUpdateListener progressUpdateListener = animation -> { + if (getAsyncUpdatesEnabled()) { + // Render a new frame. + // If draw is called while lastDrawnProgress is still recent enough, it will + // draw straight away and then enqueue a background setProgress immediately after draw + // finishes. + invalidateSelf(); + } else if (compositionLayer != null) { + compositionLayer.setProgress(animator.getAnimatedValueAbsolute()); + } + }; + + /** + * Ensures that setProgress and draw will never happen at the same time on different threads. + * If that were to happen, parts of the animation may be on one frame while other parts would + * be on another. + */ + private final Semaphore setProgressDrawLock = new Semaphore(1); + /** + * The executor that {@link AsyncUpdates} will be run on. + *

+ * Defaults to a core size of 0 so that when no animations are playing, there will be no + * idle cores consuming resources. + *

+ * Allows up to two active threads so that if there are many animations, they can all work in parallel. + * Two was arbitrarily chosen but should be sufficient for most uses cases. In the case of a single + * animation, this should never exceed one. + *

+ * Each thread will timeout after 35ms which gives it enough time to persist for one frame, one dropped frame + * and a few extra ms just in case. + */ + private static final Executor setProgressExecutor = new ThreadPoolExecutor(0, 2, 35, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue<>(), new LottieThreadFactory()); + private Handler mainThreadHandler; + private Runnable invalidateSelfRunnable; + + private final Runnable updateProgressRunnable = () -> { + CompositionLayer compositionLayer = this.compositionLayer; + if (compositionLayer == null) { + return; + } + try { + setProgressDrawLock.acquire(); + compositionLayer.setProgress(animator.getAnimatedValueAbsolute()); + // Refer to invalidateSelfOnMainThread for more info. + if (invalidateSelfOnMainThread && isDirty) { + if (mainThreadHandler == null) { + mainThreadHandler = new Handler(Looper.getMainLooper()); + invalidateSelfRunnable = () -> { + final Callback callback = getCallback(); + if (callback != null) { + callback.invalidateDrawable(this); + } + }; + } + mainThreadHandler.post(invalidateSelfRunnable); + } + } catch (InterruptedException e) { + // Do nothing. + } finally { + setProgressDrawLock.release(); + } + }; + private float lastDrawnProgress = -Float.MAX_VALUE; + private static final float MAX_DELTA_MS_ASYNC_SET_PROGRESS = 3 / 60f * 1000; + + @IntDef({RESTART, REVERSE}) + @Retention(RetentionPolicy.SOURCE) + public @interface RepeatMode { + } + + /** + * When the animation reaches the end and repeatCount is INFINITE + * or a positive value, the animation restarts from the beginning. + */ + public static final int RESTART = ValueAnimator.RESTART; + /** + * When the animation reaches the end and repeatCount is INFINITE + * or a positive value, the animation reverses direction on every iteration. + */ + public static final int REVERSE = ValueAnimator.REVERSE; + /** + * This value used used with the {@link #setRepeatCount(int)} property to repeat + * the animation indefinitely. + */ + public static final int INFINITE = ValueAnimator.INFINITE; + + public LottieDrawable() { + animator.addUpdateListener(progressUpdateListener); + } + + /** + * Returns whether or not any layers in this composition has masks. + */ + public boolean hasMasks() { + return compositionLayer != null && compositionLayer.hasMasks(); + } + + /** + * Returns whether or not any layers in this composition has a matte layer. + */ + public boolean hasMatte() { + return compositionLayer != null && compositionLayer.hasMatte(); + } + + public boolean enableMergePathsForKitKatAndAbove() { + return enableMergePaths; + } + + /** + * Enable this to get merge path support for devices running KitKat (19) and above. + *

+ * Merge paths currently don't work if the the operand shape is entirely contained within the + * first shape. If you need to cut out one shape from another shape, use an even-odd fill type + * instead of using merge paths. + */ + public void enableMergePathsForKitKatAndAbove(boolean enable) { + if (enableMergePaths == enable) { + return; + } + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + Logger.warning("Merge paths are not supported pre-Kit Kat."); + return; + } + enableMergePaths = enable; + if (composition != null) { + buildCompositionLayer(); + } + } + + public boolean isMergePathsEnabledForKitKatAndAbove() { + return enableMergePaths; + } + + /** + * Sets whether or not Lottie should clip to the original animation composition bounds. + *

+ * Defaults to true. + */ + public void setClipToCompositionBounds(boolean clipToCompositionBounds) { + if (clipToCompositionBounds != this.clipToCompositionBounds) { + this.clipToCompositionBounds = clipToCompositionBounds; + CompositionLayer compositionLayer = this.compositionLayer; + if (compositionLayer != null) { + compositionLayer.setClipToCompositionBounds(clipToCompositionBounds); + } + invalidateSelf(); + } + } + + /** + * Gets whether or not Lottie should clip to the original animation composition bounds. + *

+ * Defaults to true. + */ + public boolean getClipToCompositionBounds() { + return clipToCompositionBounds; + } + + /** + * If you use image assets, you must explicitly specify the folder in assets/ in which they are + * located because bodymovin uses the name filenames across all compositions (img_#). + * Do NOT rename the images themselves. + *

+ * If your images are located in src/main/assets/airbnb_loader/ then call + * `setImageAssetsFolder("airbnb_loader/");`. + *

+ *

+ * Be wary if you are using many images, however. Lottie is designed to work with vector shapes + * from After Effects. If your images look like they could be represented with vector shapes, + * see if it is possible to convert them to shape layers and re-export your animation. Check + * the documentation at airbnb.io/lottie for more information about importing shapes from + * Sketch or Illustrator to avoid this. + */ + public void setImagesAssetsFolder(@Nullable String imageAssetsFolder) { + this.imageAssetsFolder = imageAssetsFolder; + } + + @Nullable + public String getImageAssetsFolder() { + return imageAssetsFolder; + } + + /** + * When true, dynamically set bitmaps will be drawn with the exact bounds of the original animation, regardless of the bitmap size. + * When false, dynamically set bitmaps will be drawn at the top left of the original image but with its own bounds. + *

+ * Defaults to false. + */ + public void setMaintainOriginalImageBounds(boolean maintainOriginalImageBounds) { + this.maintainOriginalImageBounds = maintainOriginalImageBounds; + } + + /** + * When true, dynamically set bitmaps will be drawn with the exact bounds of the original animation, regardless of the bitmap size. + * When false, dynamically set bitmaps will be drawn at the top left of the original image but with its own bounds. + *

+ * Defaults to false. + */ + public boolean getMaintainOriginalImageBounds() { + return maintainOriginalImageBounds; + } + + /** + * Create a composition with {@link LottieCompositionFactory} + * + * @return True if the composition is different from the previously set composition, false otherwise. + */ + public boolean setComposition(LottieComposition composition) { + if (this.composition == composition) { + return false; + } + + isDirty = true; + clearComposition(); + this.composition = composition; + buildCompositionLayer(); + animator.setComposition(composition); + setProgress(animator.getAnimatedFraction()); + + // We copy the tasks to a new ArrayList so that if this method is called from multiple threads, + // then there won't be two iterators iterating and removing at the same time. + Iterator it = new ArrayList<>(lazyCompositionTasks).iterator(); + while (it.hasNext()) { + LazyCompositionTask t = it.next(); + // The task should never be null but it appears to happen in rare cases. Maybe it's an oem-specific or ART bug. + // https://github.com/airbnb/lottie-android/issues/1702 + if (t != null) { + t.run(composition); + } + it.remove(); + } + lazyCompositionTasks.clear(); + + computeRenderMode(); + + // Ensure that ImageView updates the drawable width/height so it can + // properly calculate its drawable matrix. + Callback callback = getCallback(); + if (callback instanceof ImageView) { + ((ImageView) callback).setImageDrawable(null); + ((ImageView) callback).setImageDrawable(this); + } + + return true; + } + + /** + * Call this to set whether or not to render with hardware or software acceleration. + * Lottie defaults to Automatic which will use hardware acceleration unless: + * 1) There are dash paths and the device is pre-Pie. + * 2) There are more than 4 masks and mattes and the device is pre-Pie. + * Hardware acceleration is generally faster for those devices unless + * there are many large mattes and masks in which case there is a lot + * of GPU uploadTexture thrashing which makes it much slower. + *

+ * In most cases, hardware rendering will be faster, even if you have mattes and masks. + * However, if you have multiple mattes and masks (especially large ones), you + * should test both render modes. You should also test on pre-Pie and Pie+ devices + * because the underlying rendering engine changed significantly. + * + * @see Android Hardware Acceleration + */ + public void setRenderMode(RenderMode renderMode) { + this.renderMode = renderMode; + computeRenderMode(); + } + + /** + * Returns the current value of {@link AsyncUpdates}. Refer to the docs for {@link AsyncUpdates} for more info. + */ + public AsyncUpdates getAsyncUpdates() { + AsyncUpdates asyncUpdates = this.asyncUpdates; + if (asyncUpdates != null) { + return asyncUpdates; + } + return L.getDefaultAsyncUpdates(); + } + + /** + * Similar to {@link #getAsyncUpdates()} except it returns the actual + * boolean value for whether async updates are enabled or not. + * This is useful when the mode is automatic and you want to know + * whether automatic is defaulting to enabled or not. + */ + public boolean getAsyncUpdatesEnabled() { + return getAsyncUpdates() == AsyncUpdates.ENABLED; + } + + /** + * **Note: this API is experimental and may changed.** + *

+ * Sets the current value for {@link AsyncUpdates}. Refer to the docs for {@link AsyncUpdates} for more info. + */ + public void setAsyncUpdates(@Nullable AsyncUpdates asyncUpdates) { + this.asyncUpdates = asyncUpdates; + } + + /** + * Returns the actual render mode being used. It will always be {@link RenderMode#HARDWARE} or {@link RenderMode#SOFTWARE}. + * When the render mode is set to AUTOMATIC, the value will be derived from {@link RenderMode#useSoftwareRendering(int, boolean, int)}. + */ + public RenderMode getRenderMode() { + return useSoftwareRendering ? RenderMode.SOFTWARE : RenderMode.HARDWARE; + } + + private void computeRenderMode() { + LottieComposition composition = this.composition; + if (composition == null) { + return; + } + useSoftwareRendering = renderMode.useSoftwareRendering( + Build.VERSION.SDK_INT, composition.hasDashPattern(), composition.getMaskAndMatteCount()); + } + + /** + * Enable this to debug slow animations by outlining masks and mattes. The performance overhead of the masks and mattes will + * be proportional to the surface area of all of the masks/mattes combined. + *

+ * DO NOT leave this enabled in production. + */ + public void setOutlineMasksAndMattes(boolean outline) { + if (outlineMasksAndMattes == outline) { + return; + } + outlineMasksAndMattes = outline; + if (compositionLayer != null) { + compositionLayer.setOutlineMasksAndMattes(outline); + } + } + + /** + * Sets whether to apply opacity to the each layer instead of shape. + *

+ * Opacity is normally applied directly to a shape. In cases where translucent shapes overlap, applying opacity to a layer will be more accurate + * at the expense of performance. + *

+ * The default value is false. + *

+ * Note: This process is very expensive. The performance impact will be reduced when hardware acceleration is enabled. + * + * @see android.view.View#setLayerType(int, android.graphics.Paint) + * @see LottieAnimationView#setRenderMode(RenderMode) + */ + public void setApplyingOpacityToLayersEnabled(boolean isApplyingOpacityToLayersEnabled) { + this.isApplyingOpacityToLayersEnabled = isApplyingOpacityToLayersEnabled; + } + + /** + * This API no longer has any effect. + */ + @Deprecated + public void disableExtraScaleModeInFitXY() { + } + + public boolean isApplyingOpacityToLayersEnabled() { + return isApplyingOpacityToLayersEnabled; + } + + /** + * @see #setClipTextToBoundingBox(boolean) + */ + public boolean getClipTextToBoundingBox() { + return clipTextToBoundingBox; + } + + /** + * When true, if there is a bounding box set on a text layer (paragraph text), any text + * that overflows past its height will not be drawn. + */ + public void setClipTextToBoundingBox(boolean clipTextToBoundingBox) { + if (clipTextToBoundingBox != this.clipTextToBoundingBox) { + this.clipTextToBoundingBox = clipTextToBoundingBox; + invalidateSelf(); + } + } + + private void buildCompositionLayer() { + LottieComposition composition = this.composition; + if (composition == null) { + return; + } + compositionLayer = new CompositionLayer( + this, LayerParser.parse(composition), composition.getLayers(), composition); + if (outlineMasksAndMattes) { + compositionLayer.setOutlineMasksAndMattes(true); + } + compositionLayer.setClipToCompositionBounds(clipToCompositionBounds); + } + + public void clearComposition() { + if (animator.isRunning()) { + animator.cancel(); + if (!isVisible()) { + onVisibleAction = OnVisibleAction.NONE; + } + } + composition = null; + compositionLayer = null; + imageAssetManager = null; + lastDrawnProgress = -Float.MAX_VALUE; + animator.clearComposition(); + invalidateSelf(); + } + + /** + * If you are experiencing a device specific crash that happens during drawing, you can set this to true + * for those devices. If set to true, draw will be wrapped with a try/catch which will cause Lottie to + * render an empty frame rather than crash your app. + *

+ * Ideally, you will never need this and the vast majority of apps and animations won't. However, you may use + * this for very specific cases if absolutely necessary. + */ + public void setSafeMode(boolean safeMode) { + this.safeMode = safeMode; + } + + @Override + public void invalidateSelf() { + if (isDirty) { + return; + } + isDirty = true; + + // Refer to invalidateSelfOnMainThread for more info. + if (invalidateSelfOnMainThread && Looper.getMainLooper() != Looper.myLooper()) { + return; + } + final Callback callback = getCallback(); + if (callback != null) { + callback.invalidateDrawable(this); + } + } + + @Override + public void setAlpha(@IntRange(from = 0, to = 255) int alpha) { + this.alpha = alpha; + invalidateSelf(); + } + + @Override + public int getAlpha() { + return alpha; + } + + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) { + Logger.warning("Use addColorFilter instead."); + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSLUCENT; + } + + /** + * Helper for the async execution path to potentially call setProgress + * before drawing if the current progress has drifted sufficiently far + * from the last set progress. + * + * @see AsyncUpdates + * @see #setAsyncUpdates(AsyncUpdates) + */ + private boolean shouldSetProgressBeforeDrawing() { + LottieComposition composition = this.composition; + if (composition == null) { + return false; + } + float lastDrawnProgress = this.lastDrawnProgress; + float currentProgress = animator.getAnimatedValueAbsolute(); + this.lastDrawnProgress = currentProgress; + + float duration = composition.getDuration(); + + float deltaProgress = Math.abs(currentProgress - lastDrawnProgress); + float deltaMs = deltaProgress * duration; + return deltaMs >= MAX_DELTA_MS_ASYNC_SET_PROGRESS; + } + + @Override + public void draw(@NonNull Canvas canvas) { + CompositionLayer compositionLayer = this.compositionLayer; + if (compositionLayer == null) { + return; + } + boolean asyncUpdatesEnabled = getAsyncUpdatesEnabled(); + try { + if (asyncUpdatesEnabled) { + setProgressDrawLock.acquire(); + } + if (L.isTraceEnabled()) { + L.beginSection("Drawable#draw"); + } + + if (asyncUpdatesEnabled && shouldSetProgressBeforeDrawing()) { + setProgress(animator.getAnimatedValueAbsolute()); + } + + if (safeMode) { + try { + if (useSoftwareRendering) { + renderAndDrawAsBitmap(canvas, compositionLayer); + } else { + drawDirectlyToCanvas(canvas); + } + } catch (Throwable e) { + Logger.error("Lottie crashed in draw!", e); + } + } else { + if (useSoftwareRendering) { + renderAndDrawAsBitmap(canvas, compositionLayer); + } else { + drawDirectlyToCanvas(canvas); + } + } + + isDirty = false; + } catch (InterruptedException e) { + // Do nothing. + } finally { + if (L.isTraceEnabled()) { + L.endSection("Drawable#draw"); + } + if (asyncUpdatesEnabled) { + setProgressDrawLock.release(); + if (compositionLayer.getProgress() != animator.getAnimatedValueAbsolute()) { + setProgressExecutor.execute(updateProgressRunnable); + } + } + } + } + + /** + * To be used by lottie-compose only. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) + public void draw(Canvas canvas, Matrix matrix) { + CompositionLayer compositionLayer = this.compositionLayer; + LottieComposition composition = this.composition; + if (compositionLayer == null || composition == null) { + return; + } + boolean asyncUpdatesEnabled = getAsyncUpdatesEnabled(); + try { + if (asyncUpdatesEnabled) { + setProgressDrawLock.acquire(); + if (shouldSetProgressBeforeDrawing()) { + setProgress(animator.getAnimatedValueAbsolute()); + } + } + + if (useSoftwareRendering) { + canvas.save(); + canvas.concat(matrix); + renderAndDrawAsBitmap(canvas, compositionLayer); + canvas.restore(); + } else { + compositionLayer.draw(canvas, matrix, alpha); + } + isDirty = false; + } catch (InterruptedException e) { + // Do nothing. + } finally { + if (asyncUpdatesEnabled) { + setProgressDrawLock.release(); + if (compositionLayer.getProgress() != animator.getAnimatedValueAbsolute()) { + setProgressExecutor.execute(updateProgressRunnable); + } + } + } + } + + // + + @MainThread + @Override + public void start() { + Callback callback = getCallback(); + if (callback instanceof View && ((View) callback).isInEditMode()) { + // Don't auto play when in edit mode. + return; + } + playAnimation(); + } + + @MainThread + @Override + public void stop() { + endAnimation(); + } + + @Override + public boolean isRunning() { + return isAnimating(); + } + + /** + * Plays the animation from the beginning. If speed is {@literal <} 0, it will start at the end + * and play towards the beginning + */ + @MainThread + public void playAnimation() { + if (compositionLayer == null) { + lazyCompositionTasks.add(c -> playAnimation()); + return; + } + + computeRenderMode(); + if (animationsEnabled() || getRepeatCount() == 0) { + if (isVisible()) { + animator.playAnimation(); + onVisibleAction = OnVisibleAction.NONE; + } else { + onVisibleAction = OnVisibleAction.PLAY; + } + } + if (!animationsEnabled()) { + Marker markerForAnimationsDisabled = getMarkerForAnimationsDisabled(); + if (markerForAnimationsDisabled != null) { + setFrame((int) markerForAnimationsDisabled.startFrame); + } else { + setFrame((int) (getSpeed() < 0 ? getMinFrame() : getMaxFrame())); + } + animator.endAnimation(); + if (!isVisible()) { + onVisibleAction = OnVisibleAction.NONE; + } + } + } + + + /** + * This method is used to get the marker for animations when system animations are disabled. + * It iterates over the list of allowed reduced motion markers and returns the first non-null marker it finds. + * If no non-null marker is found, it returns null. + * + * @return The first non-null marker from the list of allowed reduced motion markers, or null if no such marker is found. + */ + private Marker getMarkerForAnimationsDisabled() { + Marker marker = null; + for (String markerName : ALLOWED_REDUCED_MOTION_MARKERS) { + marker = composition.getMarker(markerName); + if (marker != null) { + break; + } + } + return marker; + } + + @MainThread + public void endAnimation() { + lazyCompositionTasks.clear(); + animator.endAnimation(); + if (!isVisible()) { + onVisibleAction = OnVisibleAction.NONE; + } + } + + /** + * Continues playing the animation from its current position. If speed {@literal <} 0, it will play backwards + * from the current position. + */ + @MainThread + public void resumeAnimation() { + if (compositionLayer == null) { + lazyCompositionTasks.add(c -> resumeAnimation()); + return; + } + + computeRenderMode(); + if (animationsEnabled() || getRepeatCount() == 0) { + if (isVisible()) { + animator.resumeAnimation(); + onVisibleAction = OnVisibleAction.NONE; + } else { + onVisibleAction = OnVisibleAction.RESUME; + } + } + if (!animationsEnabled()) { + setFrame((int) (getSpeed() < 0 ? getMinFrame() : getMaxFrame())); + animator.endAnimation(); + if (!isVisible()) { + onVisibleAction = OnVisibleAction.NONE; + } + } + } + + /** + * Sets the minimum frame that the animation will start from when playing or looping. + */ + public void setMinFrame(final int minFrame) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMinFrame(minFrame)); + return; + } + animator.setMinFrame(minFrame); + } + + /** + * Returns the minimum frame set by {@link #setMinFrame(int)} or {@link #setMinProgress(float)} + */ + public float getMinFrame() { + return animator.getMinFrame(); + } + + /** + * Sets the minimum progress that the animation will start from when playing or looping. + */ + public void setMinProgress(final float minProgress) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMinProgress(minProgress)); + return; + } + setMinFrame((int) MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), minProgress)); + } + + /** + * Sets the maximum frame that the animation will end at when playing or looping. + *

+ * The value will be clamped to the composition bounds. For example, setting Integer.MAX_VALUE would result in the same + * thing as composition.endFrame. + */ + public void setMaxFrame(final int maxFrame) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMaxFrame(maxFrame)); + return; + } + animator.setMaxFrame(maxFrame + 0.99f); + } + + /** + * Returns the maximum frame set by {@link #setMaxFrame(int)} or {@link #setMaxProgress(float)} + */ + public float getMaxFrame() { + return animator.getMaxFrame(); + } + + /** + * Sets the maximum progress that the animation will end at when playing or looping. + */ + public void setMaxProgress(@FloatRange(from = 0f, to = 1f) final float maxProgress) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMaxProgress(maxProgress)); + return; + } + animator.setMaxFrame(MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), maxProgress)); + } + + /** + * Sets the minimum frame to the start time of the specified marker. + * + * @throws IllegalArgumentException if the marker is not found. + */ + public void setMinFrame(final String markerName) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMinFrame(markerName)); + return; + } + Marker marker = composition.getMarker(markerName); + if (marker == null) { + throw new IllegalArgumentException("Cannot find marker with name " + markerName + "."); + } + setMinFrame((int) marker.startFrame); + } + + /** + * Sets the maximum frame to the start time + duration of the specified marker. + * + * @throws IllegalArgumentException if the marker is not found. + */ + public void setMaxFrame(final String markerName) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMaxFrame(markerName)); + return; + } + Marker marker = composition.getMarker(markerName); + if (marker == null) { + throw new IllegalArgumentException("Cannot find marker with name " + markerName + "."); + } + setMaxFrame((int) (marker.startFrame + marker.durationFrames)); + } + + /** + * Sets the minimum and maximum frame to the start time and start time + duration + * of the specified marker. + * + * @throws IllegalArgumentException if the marker is not found. + */ + public void setMinAndMaxFrame(final String markerName) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMinAndMaxFrame(markerName)); + return; + } + Marker marker = composition.getMarker(markerName); + if (marker == null) { + throw new IllegalArgumentException("Cannot find marker with name " + markerName + "."); + } + int startFrame = (int) marker.startFrame; + setMinAndMaxFrame(startFrame, startFrame + (int) marker.durationFrames); + } + + /** + * Sets the minimum and maximum frame to the start marker start and the maximum frame to the end marker start. + * playEndMarkerStartFrame determines whether or not to play the frame that the end marker is on. If the end marker + * represents the end of the section that you want, it should be true. If the marker represents the beginning of the + * next section, it should be false. + * + * @throws IllegalArgumentException if either marker is not found. + */ + public void setMinAndMaxFrame(final String startMarkerName, final String endMarkerName, final boolean playEndMarkerStartFrame) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMinAndMaxFrame(startMarkerName, endMarkerName, playEndMarkerStartFrame)); + return; + } + Marker startMarker = composition.getMarker(startMarkerName); + if (startMarker == null) { + throw new IllegalArgumentException("Cannot find marker with name " + startMarkerName + "."); + } + int startFrame = (int) startMarker.startFrame; + + final Marker endMarker = composition.getMarker(endMarkerName); + if (endMarker == null) { + throw new IllegalArgumentException("Cannot find marker with name " + endMarkerName + "."); + } + int endFrame = (int) (endMarker.startFrame + (playEndMarkerStartFrame ? 1f : 0f)); + + setMinAndMaxFrame(startFrame, endFrame); + } + + /** + * @see #setMinFrame(int) + * @see #setMaxFrame(int) + */ + public void setMinAndMaxFrame(final int minFrame, final int maxFrame) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMinAndMaxFrame(minFrame, maxFrame)); + return; + } + // Adding 0.99 ensures that the maxFrame itself gets played. + animator.setMinAndMaxFrames(minFrame, maxFrame + 0.99f); + } + + /** + * @see #setMinProgress(float) + * @see #setMaxProgress(float) + */ + public void setMinAndMaxProgress( + @FloatRange(from = 0f, to = 1f) final float minProgress, + @FloatRange(from = 0f, to = 1f) final float maxProgress) { + if (composition == null) { + lazyCompositionTasks.add(c -> setMinAndMaxProgress(minProgress, maxProgress)); + return; + } + + setMinAndMaxFrame((int) MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), minProgress), + (int) MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), maxProgress)); + } + + /** + * Reverses the current animation speed. This does NOT play the animation. + * + * @see #setSpeed(float) + * @see #playAnimation() + * @see #resumeAnimation() + */ + public void reverseAnimationSpeed() { + animator.reverseAnimationSpeed(); + } + + /** + * Sets the playback speed. If speed {@literal <} 0, the animation will play backwards. + */ + public void setSpeed(float speed) { + animator.speed = speed; + } + + /** + * Returns the current playback speed. This will be {@literal <} 0 if the animation is playing backwards. + */ + public float getSpeed() { + return animator.speed; + } + + public void addAnimatorUpdateListener(ValueAnimator.AnimatorUpdateListener updateListener) { + animator.addUpdateListener(updateListener); + } + + public void removeAnimatorUpdateListener(ValueAnimator.AnimatorUpdateListener updateListener) { + animator.removeUpdateListener(updateListener); + } + + public void removeAllUpdateListeners() { + animator.removeAllUpdateListeners(); + animator.addUpdateListener(progressUpdateListener); + } + + public void addAnimatorListener(Animator.AnimatorListener listener) { + animator.addListener(listener); + } + + public void removeAnimatorListener(Animator.AnimatorListener listener) { + animator.removeListener(listener); + } + + public void removeAllAnimatorListeners() { + animator.removeAllListeners(); + } + + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + public void addAnimatorPauseListener(Animator.AnimatorPauseListener listener) { + animator.addPauseListener(listener); + } + + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + public void removeAnimatorPauseListener(Animator.AnimatorPauseListener listener) { + animator.removePauseListener(listener); + } + + /** + * Sets the progress to the specified frame. + * If the composition isn't set yet, the progress will be set to the frame when + * it is. + */ + public void setFrame(final int frame) { + if (composition == null) { + lazyCompositionTasks.add(c -> setFrame(frame)); + return; + } + + animator.setFrame(frame); + } + + /** + * Get the currently rendered frame. + */ + public int getFrame() { + return (int) animator.getFrame(); + } + + public void setProgress(@FloatRange(from = 0f, to = 1f) final float progress) { + if (composition == null) { + lazyCompositionTasks.add(c -> setProgress(progress)); + return; + } + if (L.isTraceEnabled()) { + L.beginSection("Drawable#setProgress"); + } + animator.setFrame(composition.getFrameForProgress(progress)); + if (L.isTraceEnabled()) { + L.endSection("Drawable#setProgress"); + } + } + + /** + * @see #setRepeatCount(int) + */ + @Deprecated + public void loop(boolean loop) { + animator.setRepeatCount(loop ? ValueAnimator.INFINITE : 0); + } + + /** + * Defines what this animation should do when it reaches the end. This + * setting is applied only when the repeat count is either greater than + * 0 or {@link #INFINITE}. Defaults to {@link #RESTART}. + * + * @param mode {@link #RESTART} or {@link #REVERSE} + */ + public void setRepeatMode(@RepeatMode int mode) { + animator.setRepeatMode(mode); + } + + /** + * Defines what this animation should do when it reaches the end. + * + * @return either one of {@link #REVERSE} or {@link #RESTART} + */ + @SuppressLint("WrongConstant") + @RepeatMode + public int getRepeatMode() { + return animator.getRepeatMode(); + } + + /** + * Sets how many times the animation should be repeated. If the repeat + * count is 0, the animation is never repeated. If the repeat count is + * greater than 0 or {@link #INFINITE}, the repeat mode will be taken + * into account. The repeat count is 0 by default. + * + * @param count the number of times the animation should be repeated + */ + public void setRepeatCount(int count) { + animator.setRepeatCount(count); + } + + /** + * Defines how many times the animation should repeat. The default value + * is 0. + * + * @return the number of times the animation should repeat, or {@link #INFINITE} + */ + public int getRepeatCount() { + return animator.getRepeatCount(); + } + + + @SuppressWarnings("unused") + public boolean isLooping() { + return animator.getRepeatCount() == ValueAnimator.INFINITE; + } + + public boolean isAnimating() { + // On some versions of Android, this is called from the LottieAnimationView constructor, before animator was created. + // https://github.com/airbnb/lottie-android/issues/1430 + //noinspection ConstantConditions + if (animator == null) { + return false; + } + return animator.isRunning(); + } + + boolean isAnimatingOrWillAnimateOnVisible() { + if (isVisible()) { + return animator.isRunning(); + } else { + return onVisibleAction == OnVisibleAction.PLAY || onVisibleAction == OnVisibleAction.RESUME; + } + } + + private boolean animationsEnabled() { + return systemAnimationsEnabled || ignoreSystemAnimationsDisabled; + } + + /** + * Tell Lottie that system animations are disabled. When using {@link LottieAnimationView} or Compose {@code LottieAnimation}, this is done + * automatically. However, if you are using LottieDrawable on its own, you should set this to false when + * {@link com.airbnb.lottie.utils.Utils#getAnimationScale(Context)} is 0. If the animation is provided a "reduced motion" + * marker name, they will be shown instead of the first or last frame. Supported marker names are case insensitive, and include: + * - reduced motion + * - reducedMotion + * - reduced_motion + * - reduced-motion + */ + public void setSystemAnimationsAreEnabled(Boolean areEnabled) { + systemAnimationsEnabled = areEnabled; + } + +// + + /** + * Allows ignoring system animations settings, therefore allowing animations to run even if they are disabled. + *

+ * Defaults to false. + * + * @param ignore if true animations will run even when they are disabled in the system settings. + */ + public void setIgnoreDisabledSystemAnimations(boolean ignore) { + ignoreSystemAnimationsDisabled = ignore; + } + + /** + * Lottie files can specify a target frame rate. By default, Lottie ignores it and re-renders + * on every frame. If that behavior is undesirable, you can set this to true to use the composition + * frame rate instead. + *

+ * Note: composition frame rates are usually lower than display frame rates + * so this will likely make your animation feel janky. However, it may be desirable + * for specific situations such as pixel art that are intended to have low frame rates. + */ + public void setUseCompositionFrameRate(boolean useCompositionFrameRate) { + animator.setUseCompositionFrameRate(useCompositionFrameRate); + } + + /** + * Use this if you can't bundle images with your app. This may be useful if you download the + * animations from the network or have the images saved to an SD Card. In that case, Lottie + * will defer the loading of the bitmap to this delegate. + *

+ * Be wary if you are using many images, however. Lottie is designed to work with vector shapes + * from After Effects. If your images look like they could be represented with vector shapes, + * see if it is possible to convert them to shape layers and re-export your animation. Check + * the documentation at http://airbnb.io/lottie for more information about importing shapes from + * Sketch or Illustrator to avoid this. + */ + public void setImageAssetDelegate(ImageAssetDelegate assetDelegate) { + this.imageAssetDelegate = assetDelegate; + if (imageAssetManager != null) { + imageAssetManager.setDelegate(assetDelegate); + } + } + + /** + * Use this to manually set fonts. + */ + public void setFontAssetDelegate(FontAssetDelegate assetDelegate) { + this.fontAssetDelegate = assetDelegate; + if (fontAssetManager != null) { + fontAssetManager.setDelegate(assetDelegate); + } + } + + /** + * Set a map from font name keys to Typefaces. + * The keys can be in the form: + * * fontFamily + * * fontFamily-fontStyle + * * fontName + * All 3 are defined as fName, fFamily, and fStyle in the Lottie file. + *

+ * If you change a value in fontMap, create a new map or call + * {@link #invalidateSelf()}. Setting the same map again will noop. + */ + public void setFontMap(@Nullable Map fontMap) { + if (fontMap == this.fontMap) { + return; + } + this.fontMap = fontMap; + invalidateSelf(); + } + + public void setTextDelegate(@SuppressWarnings("NullableProblems") TextDelegate textDelegate) { + this.textDelegate = textDelegate; + } + + @Nullable + public TextDelegate getTextDelegate() { + return textDelegate; + } + + public boolean useTextGlyphs() { + return fontMap == null && textDelegate == null && composition.getCharacters().size() > 0; + } + + public LottieComposition getComposition() { + return composition; + } + + public void cancelAnimation() { + lazyCompositionTasks.clear(); + animator.cancel(); + if (!isVisible()) { + onVisibleAction = OnVisibleAction.NONE; + } + } + + public void pauseAnimation() { + lazyCompositionTasks.clear(); + animator.pauseAnimation(); + if (!isVisible()) { + onVisibleAction = OnVisibleAction.NONE; + } + } + + @FloatRange(from = 0f, to = 1f) + public float getProgress() { + return animator.getAnimatedValueAbsolute(); + } + + @Override + public int getIntrinsicWidth() { + return composition == null ? -1 : composition.getBounds().width(); + } + + @Override + public int getIntrinsicHeight() { + return composition == null ? -1 : composition.getBounds().height(); + } + + /** + * Takes a {@link KeyPath}, potentially with wildcards or globstars and resolve it to a list of + * zero or more actual {@link KeyPath Keypaths} that exist in the current animation. + *

+ * If you want to set value callbacks for any of these values, it is recommend to use the + * returned {@link KeyPath} objects because they will be internally resolved to their content + * and won't trigger a tree walk of the animation contents when applied. + */ + public List resolveKeyPath(KeyPath keyPath) { + if (compositionLayer == null) { + Logger.warning("Cannot resolve KeyPath. Composition is not set yet."); + return Collections.emptyList(); + } + List keyPaths = new ArrayList<>(); + compositionLayer.resolveKeyPath(keyPath, 0, keyPaths, new KeyPath()); + return keyPaths; + } + + /** + * Add an property callback for the specified {@link KeyPath}. This {@link KeyPath} can resolve + * to multiple contents. In that case, the callback's value will apply to all of them. + *

+ * Internally, this will check if the {@link KeyPath} has already been resolved with + * {@link #resolveKeyPath(KeyPath)} and will resolve it if it hasn't. + *

+ * Set the callback to null to clear it. + */ + public void addValueCallback( + final KeyPath keyPath, final T property, @Nullable final LottieValueCallback callback) { + if (compositionLayer == null) { + lazyCompositionTasks.add(c -> addValueCallback(keyPath, property, callback)); + return; + } + boolean invalidate; + if (keyPath == KeyPath.COMPOSITION) { + compositionLayer.addValueCallback(property, callback); + invalidate = true; + } else if (keyPath.getResolvedElement() != null) { + keyPath.getResolvedElement().addValueCallback(property, callback); + invalidate = true; + } else { + List elements = resolveKeyPath(keyPath); + + for (int i = 0; i < elements.size(); i++) { + //noinspection ConstantConditions + elements.get(i).getResolvedElement().addValueCallback(property, callback); + } + invalidate = !elements.isEmpty(); + } + if (invalidate) { + invalidateSelf(); + if (property == LottieProperty.TIME_REMAP) { + // Time remapping values are read in setProgress. In order for the new value + // to apply, we have to re-set the progress with the current progress so that the + // time remapping can be reapplied. + setProgress(getProgress()); + } + } + } + + /** + * Overload of {@link #addValueCallback(KeyPath, Object, LottieValueCallback)} that takes an interface. This allows you to use a single abstract + * method code block in Kotlin such as: + * drawable.addValueCallback(yourKeyPath, LottieProperty.COLOR) { yourColor } + */ + public void addValueCallback(KeyPath keyPath, T property, + final SimpleLottieValueCallback callback) { + addValueCallback(keyPath, property, new LottieValueCallback() { + @Override + public T getValue(LottieFrameInfo frameInfo) { + return callback.getValue(frameInfo); + } + }); + } + + + /** + * Allows you to modify or clear a bitmap that was loaded for an image either automatically + * through {@link #setImagesAssetsFolder(String)} or with an {@link ImageAssetDelegate}. + * + * @return the previous Bitmap or null. + */ + @Nullable + public Bitmap updateBitmap(String id, @Nullable Bitmap bitmap) { + ImageAssetManager bm = getImageAssetManager(); + if (bm == null) { + Logger.warning("Cannot update bitmap. Most likely the drawable is not added to a View " + + "which prevents Lottie from getting a Context."); + return null; + } + Bitmap ret = bm.updateBitmap(id, bitmap); + invalidateSelf(); + return ret; + } + + /** + * @deprecated use {@link #getBitmapForId(String)}. + */ + @Nullable + @Deprecated + public Bitmap getImageAsset(String id) { + ImageAssetManager bm = getImageAssetManager(); + if (bm != null) { + return bm.bitmapForId(id); + } + LottieImageAsset imageAsset = composition == null ? null : composition.getImages().get(id); + if (imageAsset != null) { + return imageAsset.getBitmap(); + } + return null; + } + + /** + * Returns the bitmap that will be rendered for the given id in the Lottie animation file. + * The id is the asset reference id stored in the "id" property of each object in the "assets" array. + *

+ * The returned bitmap could be from: + * * Embedded in the animation file as a base64 string. + * * In the same directory as the animation file. + * * In the same zip file as the animation file. + * * Returned from an {@link ImageAssetDelegate}. + * or null if the image doesn't exist from any of those places. + */ + @Nullable + public Bitmap getBitmapForId(String id) { + ImageAssetManager assetManager = getImageAssetManager(); + if (assetManager != null) { + return assetManager.bitmapForId(id); + } + return null; + } + + /** + * Returns the {@link LottieImageAsset} that will be rendered for the given id in the Lottie animation file. + * The id is the asset reference id stored in the "id" property of each object in the "assets" array. + *

+ * The returned bitmap could be from: + * * Embedded in the animation file as a base64 string. + * * In the same directory as the animation file. + * * In the same zip file as the animation file. + * * Returned from an {@link ImageAssetDelegate}. + * or null if the image doesn't exist from any of those places. + */ + @Nullable + public LottieImageAsset getLottieImageAssetForId(String id) { + LottieComposition composition = this.composition; + if (composition == null) { + return null; + } + return composition.getImages().get(id); + } + + private ImageAssetManager getImageAssetManager() { + if (imageAssetManager != null && !imageAssetManager.hasSameContext(getContext())) { + imageAssetManager = null; + } + + if (imageAssetManager == null) { + imageAssetManager = new ImageAssetManager(getCallback(), + imageAssetsFolder, imageAssetDelegate, composition.getImages()); + } + + return imageAssetManager; + } + + @Nullable + @RestrictTo(RestrictTo.Scope.LIBRARY) + public Typeface getTypeface(Font font) { + Map fontMap = this.fontMap; + if (fontMap != null) { + String key = font.getFamily(); + if (fontMap.containsKey(key)) { + return fontMap.get(key); + } + key = font.getName(); + if (fontMap.containsKey(key)) { + return fontMap.get(key); + } + key = font.getFamily() + "-" + font.getStyle(); + if (fontMap.containsKey(key)) { + return fontMap.get(key); + } + } + + FontAssetManager assetManager = getFontAssetManager(); + if (assetManager != null) { + return assetManager.getTypeface(font); + } + return null; + } + + private FontAssetManager getFontAssetManager() { + if (getCallback() == null) { + // We can't get a bitmap since we can't get a Context from the callback. + return null; + } + + if (fontAssetManager == null) { + fontAssetManager = new FontAssetManager(getCallback(), fontAssetDelegate); + String defaultExtension = this.defaultFontFileExtension; + if (defaultExtension != null) { + fontAssetManager.setDefaultFontFileExtension(defaultFontFileExtension); + } + } + + return fontAssetManager; + } + + /** + * By default, Lottie will look in src/assets/fonts/FONT_NAME.ttf + * where FONT_NAME is the fFamily specified in your Lottie file. + * If your fonts have a different extension, you can override the + * default here. + *

+ * Alternatively, you can use {@link #setFontAssetDelegate(FontAssetDelegate)} + * for more control. + * + * @see #setFontAssetDelegate(FontAssetDelegate) + */ + public void setDefaultFontFileExtension(String extension) { + defaultFontFileExtension = extension; + FontAssetManager fam = getFontAssetManager(); + if (fam != null) { + fam.setDefaultFontFileExtension(extension); + } + } + + @Nullable + private Context getContext() { + Callback callback = getCallback(); + if (callback == null) { + return null; + } + + if (callback instanceof View) { + return ((View) callback).getContext(); + } + return null; + } + + @Override public boolean setVisible(boolean visible, boolean restart) { + // Sometimes, setVisible(false) gets called twice in a row. If we don't check wasNotVisibleAlready, we could + // wind up clearing the onVisibleAction value for the second call. + boolean wasNotVisibleAlready = !isVisible(); + boolean ret = super.setVisible(visible, restart); + + if (visible) { + if (onVisibleAction == OnVisibleAction.PLAY) { + playAnimation(); + } else if (onVisibleAction == OnVisibleAction.RESUME) { + resumeAnimation(); + } + } else { + if (animator.isRunning()) { + pauseAnimation(); + onVisibleAction = OnVisibleAction.RESUME; + } else if (!wasNotVisibleAlready) { + onVisibleAction = OnVisibleAction.NONE; + } + } + return ret; + } + + /** + * These Drawable.Callback methods proxy the calls so that this is the drawable that is + * actually invalidated, not a child one which will not pass the view's validateDrawable check. + */ + @Override + public void invalidateDrawable(@NonNull Drawable who) { + Callback callback = getCallback(); + if (callback == null) { + return; + } + callback.invalidateDrawable(this); + } + + @Override + public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) { + Callback callback = getCallback(); + if (callback == null) { + return; + } + callback.scheduleDrawable(this, what, when); + } + + @Override + public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) { + Callback callback = getCallback(); + if (callback == null) { + return; + } + callback.unscheduleDrawable(this, what); + } + + /** + * Hardware accelerated render path. + */ + private void drawDirectlyToCanvas(Canvas canvas) { + CompositionLayer compositionLayer = this.compositionLayer; + LottieComposition composition = this.composition; + if (compositionLayer == null || composition == null) { + return; + } + + renderingMatrix.reset(); + Rect bounds = getBounds(); + if (!bounds.isEmpty()) { + // In fitXY mode, the scale doesn't take effect. + float scaleX = bounds.width() / (float) composition.getBounds().width(); + float scaleY = bounds.height() / (float) composition.getBounds().height(); + + renderingMatrix.preScale(scaleX, scaleY); + renderingMatrix.preTranslate(bounds.left, bounds.top); + } + compositionLayer.draw(canvas, renderingMatrix, alpha); + } + + /** + * Software accelerated render path. + *

+ * This draws the animation to an internally managed bitmap and then draws the bitmap to the original canvas. + * + * @see LottieAnimationView#setRenderMode(RenderMode) + */ + private void renderAndDrawAsBitmap(Canvas originalCanvas, CompositionLayer compositionLayer) { + if (composition == null || compositionLayer == null) { + return; + } + ensureSoftwareRenderingObjectsInitialized(); + + //noinspection deprecation + originalCanvas.getMatrix(softwareRenderingOriginalCanvasMatrix); + + // Get the canvas clip bounds and map it to the coordinate space of canvas with it's current transform. + originalCanvas.getClipBounds(canvasClipBounds); + convertRect(canvasClipBounds, canvasClipBoundsRectF); + softwareRenderingOriginalCanvasMatrix.mapRect(canvasClipBoundsRectF); + convertRect(canvasClipBoundsRectF, canvasClipBounds); + + if (clipToCompositionBounds) { + // Start with the intrinsic bounds. This will later be unioned with the clip bounds to find the + // smallest possible render area. + softwareRenderingTransformedBounds.set(0f, 0f, getIntrinsicWidth(), getIntrinsicHeight()); + } else { + // Calculate the full bounds of the animation. + compositionLayer.getBounds(softwareRenderingTransformedBounds, null, false); + } + // Transform the animation bounds to the bounds that they will render to on the canvas. + softwareRenderingOriginalCanvasMatrix.mapRect(softwareRenderingTransformedBounds); + + // The bounds are usually intrinsicWidth x intrinsicHeight. If they are different, an external source is scaling this drawable. + // This is how ImageView.ScaleType.FIT_XY works. + Rect bounds = getBounds(); + float scaleX = bounds.width() / (float) getIntrinsicWidth(); + float scaleY = bounds.height() / (float) getIntrinsicHeight(); + scaleRect(softwareRenderingTransformedBounds, scaleX, scaleY); + + if (!ignoreCanvasClipBounds()) { + softwareRenderingTransformedBounds.intersect(canvasClipBounds.left, canvasClipBounds.top, canvasClipBounds.right, canvasClipBounds.bottom); + } + + int renderWidth = (int) Math.ceil(softwareRenderingTransformedBounds.width()); + int renderHeight = (int) Math.ceil(softwareRenderingTransformedBounds.height()); + + if (renderWidth <= 0 || renderHeight <= 0) { + return; + } + + ensureSoftwareRenderingBitmap(renderWidth, renderHeight); + + if (isDirty) { + renderingMatrix.set(softwareRenderingOriginalCanvasMatrix); + renderingMatrix.preScale(scaleX, scaleY); + // We want to render the smallest bitmap possible. If the animation doesn't start at the top left, we translate the canvas and shrink the + // bitmap to avoid allocating and copying the empty space on the left and top. renderWidth and renderHeight take this into account. + renderingMatrix.postTranslate(-softwareRenderingTransformedBounds.left, -softwareRenderingTransformedBounds.top); + + softwareRenderingBitmap.eraseColor(0); + compositionLayer.draw(softwareRenderingCanvas, renderingMatrix, alpha); + + // Calculate the dst bounds. + // We need to map the rendered coordinates back to the canvas's coordinates. To do so, we need to invert the transform + // of the original canvas. + // Take the bounds of the rendered animation and map them to the canvas's coordinates. + // This is similar to the src rect above but the src bound may have a left and top offset. + softwareRenderingOriginalCanvasMatrix.invert(softwareRenderingOriginalCanvasMatrixInverse); + softwareRenderingOriginalCanvasMatrixInverse.mapRect(softwareRenderingDstBoundsRectF, softwareRenderingTransformedBounds); + convertRect(softwareRenderingDstBoundsRectF, softwareRenderingDstBoundsRect); + } + + softwareRenderingSrcBoundsRect.set(0, 0, renderWidth, renderHeight); + originalCanvas.drawBitmap(softwareRenderingBitmap, softwareRenderingSrcBoundsRect, softwareRenderingDstBoundsRect, softwareRenderingPaint); + } + + private void ensureSoftwareRenderingObjectsInitialized() { + if (softwareRenderingCanvas != null) { + return; + } + softwareRenderingCanvas = new Canvas(); + softwareRenderingTransformedBounds = new RectF(); + softwareRenderingOriginalCanvasMatrix = new Matrix(); + softwareRenderingOriginalCanvasMatrixInverse = new Matrix(); + canvasClipBounds = new Rect(); + canvasClipBoundsRectF = new RectF(); + softwareRenderingPaint = new LPaint(); + softwareRenderingSrcBoundsRect = new Rect(); + softwareRenderingDstBoundsRect = new Rect(); + softwareRenderingDstBoundsRectF = new RectF(); + } + + private void ensureSoftwareRenderingBitmap(int renderWidth, int renderHeight) { + if (softwareRenderingBitmap == null || + softwareRenderingBitmap.getWidth() < renderWidth || + softwareRenderingBitmap.getHeight() < renderHeight) { + // The bitmap is larger. We need to create a new one. + softwareRenderingBitmap = Bitmap.createBitmap(renderWidth, renderHeight, Bitmap.Config.ARGB_8888); + softwareRenderingCanvas.setBitmap(softwareRenderingBitmap); + isDirty = true; + } else if (softwareRenderingBitmap.getWidth() > renderWidth || softwareRenderingBitmap.getHeight() > renderHeight) { + // The bitmap is smaller. Take subset of the original. + softwareRenderingBitmap = Bitmap.createBitmap(softwareRenderingBitmap, 0, 0, renderWidth, renderHeight); + softwareRenderingCanvas.setBitmap(softwareRenderingBitmap); + isDirty = true; + } + } + + /** + * Convert a RectF to a Rect + */ + private void convertRect(RectF src, Rect dst) { + dst.set( + (int) Math.floor(src.left), + (int) Math.floor(src.top), + (int) Math.ceil(src.right), + (int) Math.ceil(src.bottom) + ); + } + + /** + * Convert a Rect to a RectF + */ + private void convertRect(Rect src, RectF dst) { + dst.set( + src.left, + src.top, + src.right, + src.bottom); + } + + private void scaleRect(RectF rect, float scaleX, float scaleY) { + rect.set( + rect.left * scaleX, + rect.top * scaleY, + rect.right * scaleX, + rect.bottom * scaleY + ); + } + + /** + * When a View's parent has clipChildren set to false, it doesn't affect the clipBound + * of its child canvases so we should explicitly check for it and draw the full animation + * bounds instead. + */ + private boolean ignoreCanvasClipBounds() { + Callback callback = getCallback(); + if (!(callback instanceof View)) { + // If the callback isn't a view then respect the canvas's clip bounds. + return false; + } + ViewParent parent = ((View) callback).getParent(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && parent instanceof ViewGroup) { + return !((ViewGroup) parent).getClipChildren(); + } + // Unlikely to ever happen. If the callback is a View, its parent should be a ViewGroup. + return false; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java new file mode 100644 index 00000000..0184f416 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java @@ -0,0 +1,92 @@ +package com.airbnb.lottie; + +import android.graphics.Bitmap; + +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; + +/** + * Data class describing an image asset embedded in a Lottie json file. + */ +public class LottieImageAsset { + private final int width; + private final int height; + private final String id; + private final String fileName; + private final String dirName; + /** + * Pre-set a bitmap for this asset + */ + @Nullable private Bitmap bitmap; + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public LottieImageAsset(int width, int height, String id, String fileName, String dirName) { + this.width = width; + this.height = height; + this.id = id; + this.fileName = fileName; + this.dirName = dirName; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + /** + * The reference id in the json file. + */ + public String getId() { + return id; + } + + public String getFileName() { + return fileName; + } + + @SuppressWarnings("unused") public String getDirName() { + return dirName; + } + + /** + * Returns the bitmap that has been stored for this image asset if one was explicitly set. + */ + @Nullable public Bitmap getBitmap() { + return bitmap; + } + + /** + * Permanently sets the bitmap on this LottieImageAsset. This will: + * 1) Overwrite any existing Bitmaps. + * 2) Apply to *all* animations that use this LottieComposition. + * + * If you only want to replace the bitmap for this animation, use dynamic properties + * with {@link LottieProperty#IMAGE}. + */ + public void setBitmap(@Nullable Bitmap bitmap) { + this.bitmap = bitmap; + } + + /** + * Returns a new {@link LottieImageAsset} with the same properties as this one but with the + * dimensions and bitmap scaled. + */ + public LottieImageAsset copyWithScale(float scale) { + LottieImageAsset newAsset = new LottieImageAsset((int) (width * scale), (int) (height * scale), id, fileName, dirName); + if (bitmap != null) { + Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, newAsset.width, newAsset.height, true); + newAsset.setBitmap(scaledBitmap); + } + return newAsset; + } + + /** + * Returns whether this asset has an embedded Bitmap or whether the fileName is a base64 encoded bitmap. + */ + public boolean hasBitmap() { + return bitmap != null || (fileName.startsWith("data:") && fileName.indexOf("base64,") > 0); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java new file mode 100644 index 00000000..b43c35a6 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java @@ -0,0 +1,8 @@ +package com.airbnb.lottie; + +/** + * Receive a result with either the value or exception for a {@link LottieTask} + */ +public interface LottieListener { + void onResult(T result); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java new file mode 100644 index 00000000..7b36ed44 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java @@ -0,0 +1,17 @@ +package com.airbnb.lottie; + +/** + * Give ability to integrators to provide another logging mechanism. + */ +public interface LottieLogger { + + void debug(String message); + + void debug(String message, Throwable exception); + + void warning(String message); + + void warning(String message, Throwable exception); + + void error(String message, Throwable exception); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java new file mode 100644 index 00000000..5cf1f886 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java @@ -0,0 +1,5 @@ +package com.airbnb.lottie; + +public interface LottieOnCompositionLoadedListener { + void onCompositionLoaded(LottieComposition composition); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java new file mode 100644 index 00000000..5f75e9e8 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java @@ -0,0 +1,235 @@ +package com.airbnb.lottie; + +import android.graphics.Bitmap; +import android.graphics.ColorFilter; +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.Typeface; + +import com.airbnb.lottie.value.LottieValueCallback; +import com.airbnb.lottie.value.ScaleXY; + +/** + * Property values are the same type as the generic type of their corresponding + * {@link LottieValueCallback}. With this, we can use generics to maintain type safety + * of the callbacks. + *

+ * Supported properties: + * Transform: + * {@link #TRANSFORM_ANCHOR_POINT} + * {@link #TRANSFORM_POSITION} + * {@link #TRANSFORM_OPACITY} + * {@link #TRANSFORM_SCALE} + * {@link #TRANSFORM_ROTATION} + * {@link #TRANSFORM_SKEW} + * {@link #TRANSFORM_SKEW_ANGLE} + *

+ * Fill: + * {@link #COLOR} (non-gradient) + * {@link #OPACITY} + * {@link #COLOR_FILTER} + *

+ * Stroke: + * {@link #COLOR} (non-gradient) + * {@link #STROKE_WIDTH} + * {@link #OPACITY} + * {@link #COLOR_FILTER} + *

+ * Ellipse: + * {@link #POSITION} + * {@link #ELLIPSE_SIZE} + *

+ * Polystar: + * {@link #POLYSTAR_POINTS} + * {@link #POLYSTAR_ROTATION} + * {@link #POSITION} + * {@link #POLYSTAR_INNER_RADIUS} (star) + * {@link #POLYSTAR_OUTER_RADIUS} + * {@link #POLYSTAR_INNER_ROUNDEDNESS} (star) + * {@link #POLYSTAR_OUTER_ROUNDEDNESS} + *

+ * Repeater: + * All transform properties + * {@link #REPEATER_COPIES} + * {@link #REPEATER_OFFSET} + * {@link #TRANSFORM_ROTATION} + * {@link #TRANSFORM_START_OPACITY} + * {@link #TRANSFORM_END_OPACITY} + *

+ * Layers: + * All transform properties + * {@link #TIME_REMAP} (composition layers only) + */ +public interface LottieProperty { + /** + * ColorInt + **/ + Integer COLOR = 1; + Integer STROKE_COLOR = 2; + /** + * Opacity value are 0-100 to match after effects + **/ + Integer TRANSFORM_OPACITY = 3; + /** + * [0,100] + */ + Integer OPACITY = 4; + Integer DROP_SHADOW_COLOR = 5; + /** + * In Px + */ + PointF TRANSFORM_ANCHOR_POINT = new PointF(); + /** + * In Px + */ + PointF TRANSFORM_POSITION = new PointF(); + /** + * When split dimensions is enabled. In Px + */ + Float TRANSFORM_POSITION_X = 15f; + /** + * When split dimensions is enabled. In Px + */ + Float TRANSFORM_POSITION_Y = 16f; + /** + * In Px + */ + Float BLUR_RADIUS = 17f; + /** + * In Px + */ + PointF ELLIPSE_SIZE = new PointF(); + /** + * In Px + */ + PointF RECTANGLE_SIZE = new PointF(); + /** + * In degrees + */ + Float CORNER_RADIUS = 0f; + /** + * In Px + */ + PointF POSITION = new PointF(); + ScaleXY TRANSFORM_SCALE = new ScaleXY(); + /** + * In degrees + */ + Float TRANSFORM_ROTATION = 1f; + /** + * 0-85 + */ + Float TRANSFORM_SKEW = 0f; + /** + * In degrees + */ + Float TRANSFORM_SKEW_ANGLE = 0f; + /** + * In Px + */ + Float STROKE_WIDTH = 2f; + Float TEXT_TRACKING = 3f; + Float REPEATER_COPIES = 4f; + Float REPEATER_OFFSET = 5f; + Float POLYSTAR_POINTS = 6f; + /** + * In degrees + */ + Float POLYSTAR_ROTATION = 7f; + /** + * In Px + */ + Float POLYSTAR_INNER_RADIUS = 8f; + /** + * In Px + */ + Float POLYSTAR_OUTER_RADIUS = 9f; + /** + * [0,100] + */ + Float POLYSTAR_INNER_ROUNDEDNESS = 10f; + /** + * [0,100] + */ + Float POLYSTAR_OUTER_ROUNDEDNESS = 11f; + /** + * [0,100] + */ + Float TRANSFORM_START_OPACITY = 12f; + /** + * [0,100] + */ + Float TRANSFORM_END_OPACITY = 12.1f; + /** + * The time value in seconds + */ + Float TIME_REMAP = 13f; + /** + * In Dp + */ + Float TEXT_SIZE = 14f; + /** + * [0,100] + * Lottie Android resolved drop shadows on drawing content such as fills and strokes. + * If a drop shadow is applied to a layer, the dynamic properties must be set on all + * of its child elements that draw. The easiest way to do this is to append "**" to your + * Keypath after the layer name. + */ + Float DROP_SHADOW_OPACITY = 15f; + /** + * Degrees from 12 o'clock. + * Lottie Android resolved drop shadows on drawing content such as fills and strokes. + * If a drop shadow is applied to a layer, the dynamic properties must be set on all + * of its child elements that draw. The easiest way to do this is to append "**" to your + * Keypath after the layer name. + */ + Float DROP_SHADOW_DIRECTION = 16f; + /** + * In Px + * Lottie Android resolved drop shadows on drawing content such as fills and strokes. + * If a drop shadow is applied to a layer, the dynamic properties must be set on all + * of its child elements that draw. The easiest way to do this is to append "**" to your + * Keypath after the layer name. + */ + Float DROP_SHADOW_DISTANCE = 17f; + /** + * In Px + * Lottie Android resolved drop shadows on drawing content such as fills and strokes. + * If a drop shadow is applied to a layer, the dynamic properties must be set on all + * of its child elements that draw. The easiest way to do this is to append "**" to your + * Keypath after the layer name. + */ + Float DROP_SHADOW_RADIUS = 18f; + /** + * Set the color filter for an entire drawable content. Can be applied to fills, strokes, images, and solids. + */ + ColorFilter COLOR_FILTER = new ColorFilter(); + /** + * Array of ARGB colors that map to position stops in the original gradient. + * For example, a gradient from red to blue could be remapped with [0xFF00FF00, 0xFFFF00FF] (green to purple). + */ + Integer[] GRADIENT_COLOR = new Integer[0]; + /** + * Set on text layers. + */ + Typeface TYPEFACE = Typeface.DEFAULT; + /** + * Set on image layers. + */ + Bitmap IMAGE = Bitmap.createBitmap(1, 1, Bitmap.Config.ALPHA_8); + /** + * Replace the text for a text layer. + */ + CharSequence TEXT = "dynamic_text"; + + /** + * Replace a path. This can only be used on path contents. For other shapes such as rectangles and polystars, + * use LottieProperties corresponding to their specific properties. + *

+ * If you need to do any operations on the path such as morphing, use the Jetpack androidx.graphics.path library. + *

+ * In After Effects, any of those other shapes can be converted to a bezier path by right clicking it and + * selecting "Convert To Bezier Path". + */ + Path PATH = new Path(); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java new file mode 100644 index 00000000..b0f2f5ce --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java @@ -0,0 +1,55 @@ +package com.airbnb.lottie; + +import androidx.annotation.Nullable; + +import java.util.Arrays; + +/** + * Contains class to hold the resulting value of an async task or an exception if it failed. + *

+ * Either value or exception will be non-null. + */ +public final class LottieResult { + + @Nullable private final V value; + @Nullable private final Throwable exception; + + public LottieResult(V value) { + this.value = value; + exception = null; + } + + public LottieResult(Throwable exception) { + this.exception = exception; + value = null; + } + + @Nullable public V getValue() { + return value; + } + + @Nullable public Throwable getException() { + return exception; + } + + @Override public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof LottieResult)) { + return false; + } + LottieResult that = (LottieResult) o; + if (getValue() != null && getValue().equals(that.getValue())) { + return true; + } + if (getException() != null && that.getException() != null) { + return getException().toString().equals(getException().toString()); + } + return false; + } + + @Override public int hashCode() { + return Arrays.hashCode(new Object[]{getValue(), getException()}); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java new file mode 100644 index 00000000..8a62b3b5 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java @@ -0,0 +1,225 @@ +package com.airbnb.lottie; + +import android.os.Handler; +import android.os.Looper; + +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; + +import com.airbnb.lottie.utils.Logger; +import com.airbnb.lottie.utils.LottieThreadFactory; + +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.FutureTask; + +/** + * Helper to run asynchronous tasks with a result. + * Results can be obtained with {@link #addListener(LottieListener)}. + * Failures can be obtained with {@link #addFailureListener(LottieListener)}. + *

+ * A task will produce a single result or a single failure. + */ +@SuppressWarnings("UnusedReturnValue") +public class LottieTask { + + /** + * Set this to change the executor that LottieTasks are run on. This will be the executor that composition parsing and url + * fetching happens on. + *

+ * You may change this to run deserialization synchronously for testing. + */ + @SuppressWarnings("WeakerAccess") + public static Executor EXECUTOR = Executors.newCachedThreadPool(new LottieThreadFactory()); + + /* Preserve add order. */ + private final Set> successListeners = new LinkedHashSet<>(1); + private final Set> failureListeners = new LinkedHashSet<>(1); + private final Handler handler = new Handler(Looper.getMainLooper()); + + @Nullable private volatile LottieResult result = null; + + @RestrictTo(RestrictTo.Scope.LIBRARY) + public LottieTask(Callable> runnable) { + this(runnable, false); + } + + public LottieTask(T result) { + setResult(new LottieResult<>(result)); + } + + /** + * runNow is only used for testing. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY) LottieTask(Callable> runnable, boolean runNow) { + if (runNow) { + try { + setResult(runnable.call()); + } catch (Throwable e) { + setResult(new LottieResult<>(e)); + } + } else { + EXECUTOR.execute(new LottieFutureTask(this, runnable)); + } + } + + private void setResult(@Nullable LottieResult result) { + if (this.result != null) { + throw new IllegalStateException("A task may only be set once."); + } + this.result = result; + notifyListeners(); + } + + /** + * Add a task listener. If the task has completed, the listener will be called synchronously. + * + * @return the task for call chaining. + */ + public synchronized LottieTask addListener(LottieListener listener) { + LottieResult result = this.result; + if (result != null && result.getValue() != null) { + listener.onResult(result.getValue()); + } + + successListeners.add(listener); + return this; + } + + /** + * Remove a given task listener. The task will continue to execute so you can re-add + * a listener if necessary. + * + * @return the task for call chaining. + */ + public synchronized LottieTask removeListener(LottieListener listener) { + successListeners.remove(listener); + return this; + } + + /** + * Add a task failure listener. This will only be called in the even that an exception + * occurs. If an exception has already occurred, the listener will be called immediately. + * + * @return the task for call chaining. + */ + public synchronized LottieTask addFailureListener(LottieListener listener) { + LottieResult result = this.result; + if (result != null && result.getException() != null) { + listener.onResult(result.getException()); + } + + failureListeners.add(listener); + return this; + } + + /** + * Remove a given task failure listener. The task will continue to execute so you can re-add + * a listener if necessary. + * + * @return the task for call chaining. + */ + public synchronized LottieTask removeFailureListener(LottieListener listener) { + failureListeners.remove(listener); + return this; + } + + @Nullable + public LottieResult getResult() { + return result; + } + + private void notifyListeners() { + // Listeners should be called on the main thread. + if (Looper.myLooper() == Looper.getMainLooper()) { + notifyListenersInternal(); + } else { + handler.post(this::notifyListenersInternal); + } + } + + private void notifyListenersInternal() { + // Local reference in case it gets set on a background thread. + LottieResult result = LottieTask.this.result; + if (result == null) { + return; + } + if (result.getValue() != null) { + notifySuccessListeners(result.getValue()); + } else { + notifyFailureListeners(result.getException()); + } + } + + private synchronized void notifySuccessListeners(T value) { + // Allows listeners to remove themselves in onResult. + // Otherwise we risk ConcurrentModificationException. + List> listenersCopy = new ArrayList<>(successListeners); + for (LottieListener l : listenersCopy) { + l.onResult(value); + } + } + + private synchronized void notifyFailureListeners(Throwable e) { + // Allows listeners to remove themselves in onResult. + // Otherwise we risk ConcurrentModificationException. + List> listenersCopy = new ArrayList<>(failureListeners); + if (listenersCopy.isEmpty()) { + Logger.warning("Lottie encountered an error but no failure listener was added:", e); + return; + } + + for (LottieListener l : listenersCopy) { + l.onResult(e); + } + } + + private static class LottieFutureTask extends FutureTask> { + + private LottieTask lottieTask; + + LottieFutureTask(LottieTask task, Callable> callable) { + super(callable); + lottieTask = task; + } + + @Override + protected void done() { + try { + if (isCancelled()) { + // We don't need to notify and listeners if the task is cancelled. + return; + } + + try { + lottieTask.setResult(get()); + } catch (InterruptedException | ExecutionException e) { + lottieTask.setResult(new LottieResult<>(e)); + } + } finally { + // LottieFutureTask can be held in memory for up to 60 seconds after the task is done, which would + // result in holding on to the associated LottieTask instance and leaking its listeners. To avoid + // that, we clear our the reference to the LottieTask instance. + // + // How is LottieFutureTask held for up to 60 seconds? It's a bug in how the VM cleans up stack + // local variables. When you have a loop that polls a blocking queue and assigns the result + // to a local variable, after looping the local variable will still reference the previous value + // until the queue returns the next result. + // + // Executors.newCachedThreadPool() relies on a SynchronousQueue and creates a cached thread pool + // with a default keep alice of 60 seconds. After a given worker thread runs a task, that thread + // will wait for up to 60 seconds for a new task to come, and while waiting it's also accidentally + // keeping a reference to the previous task. + // + // See commit d577e728e9bccbafc707af3060ea914caa73c14f in AOSP for how that was fixed for Looper. + lottieTask = null; + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java new file mode 100644 index 00000000..b57e44e9 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java @@ -0,0 +1,11 @@ +package com.airbnb.lottie; + +/** + * Register this listener via {@link LottieCompositionFactory#registerLottieTaskIdleListener(LottieTaskIdleListener)}. + * + * Can be used to create an espresso idle resource. Refer to {@link LottieCompositionFactory#registerLottieTaskIdleListener(LottieTaskIdleListener)} + * for more information. + */ +public interface LottieTaskIdleListener { + void onIdleChanged(boolean idle); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java new file mode 100644 index 00000000..e42956a0 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java @@ -0,0 +1,15 @@ +package com.airbnb.lottie; + +import androidx.annotation.Nullable; + +/** + * @see LottieCompositionFactory + * @see LottieResult + */ +@Deprecated +public interface OnCompositionLoadedListener { + /** + * Composition will be null if there was an error loading it. Check logcat for more details. + */ + void onCompositionLoaded(@Nullable LottieComposition composition); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java new file mode 100644 index 00000000..bce3a199 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java @@ -0,0 +1,20 @@ +package com.airbnb.lottie; + +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; + +import androidx.annotation.ColorInt; + +/** + * A color filter with a predefined transfer mode that applies the specified color on top of the + * original color. As there are many other transfer modes, please take a look at the definition + * of PorterDuff.Mode.SRC_ATOP to find one that suits your needs. + * This site has a great explanation of Porter/Duff compositing algebra as well as a visual + * representation of many of the transfer modes: + * http://ssp.impulsetrain.com/porterduff.html + */ +@SuppressWarnings("WeakerAccess") public class SimpleColorFilter extends PorterDuffColorFilter { + public SimpleColorFilter(@ColorInt int color) { + super(color, PorterDuff.Mode.SRC_ATOP); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt new file mode 100644 index 00000000..07ab731b --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt @@ -0,0 +1,86 @@ +package com.airbnb.lottie + +import androidx.annotation.RestrictTo + +/** + * To replace static text in an animation at runtime, create an instance of this class and call [.setText] to + * replace the hard coded animation text (input) with the text of your choosing (output). + * + * + * Alternatively, extend this class and override [.getText] and if the text hasn't already been set + * by [.setText] then it will call [.getText]. + */ +class TextDelegate( + private val drawable: LottieDrawable? +) { + private val stringMap: MutableMap = HashMap() + + private var cacheText = true + + /** + * Override this to replace the animation text with something dynamic. This can be used for + * translations or custom data. + * @param layerName the name of the layer with text + * @param input the string at the layer with text + * @return a String to use for the specific data, by default this is the same as getText(input) + */ + fun getText(layerName: String?, input: String): String { + return getText(input) + } + + /** + * Override this to replace the animation text with something dynamic. This can be used for + * translations or custom data. + */ + fun getText(input: String): String { + return input + } + + /** + * Update the text that will be rendered for the given input text. + */ + fun setText(input: String, output: String) { + stringMap[input] = output + invalidate() + } + + /** + * Sets whether or not [TextDelegate] will cache (memoize) the results of getText. + * If this isn't necessary then set it to false. + */ + fun setCacheText(cacheText: Boolean) { + this.cacheText = cacheText + } + + /** + * Invalidates a cached string with the given input. + */ + fun invalidateText(input: String) { + stringMap.remove(input) + invalidate() + } + + /** + * Invalidates all cached strings. + */ + fun invalidateAllText() { + stringMap.clear() + invalidate() + } + + @RestrictTo(RestrictTo.Scope.LIBRARY) + fun getTextInternal(layerName: String?, input: String): String? { + if (cacheText && stringMap.containsKey(input)) { + return stringMap[input] + } + val text = getText(layerName, input) + if (cacheText) { + stringMap[input] = text + } + return text + } + + private fun invalidate() { + drawable?.invalidateSelf() + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt new file mode 100644 index 00000000..4b5a89b1 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt @@ -0,0 +1,418 @@ +package com.airbnb.lottie.animation.content + +import android.annotation.SuppressLint +import android.graphics.DashPathEffect +import android.graphics.PathMeasure +import androidx.annotation.CallSuper +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.graphics.StrokeJoin +import com.airbnb.lottie.L +import com.airbnb.lottie.LottieDrawable +import com.airbnb.lottie.LottieProperty +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation +import com.airbnb.lottie.animation.keyframe.DropShadowKeyframeAnimation +import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation +import com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation +import com.airbnb.lottie.model.KeyPath +import com.airbnb.lottie.model.animatable.AnimatableFloatValue +import com.airbnb.lottie.model.animatable.AnimatableIntegerValue +import com.airbnb.lottie.model.content.ShapeTrimPath +import com.airbnb.lottie.model.layer.BaseLayer +import com.airbnb.lottie.utils.MiscUtils +import com.airbnb.lottie.utils.Utils +import com.airbnb.lottie.value.LottieValueCallback +import kotlin.math.min + +@SuppressLint("RestrictedApi") +abstract class BaseStrokeContent internal constructor( + private val lottieDrawable: LottieDrawable, + protected val layer: BaseLayer, + cap: StrokeCap, + join: StrokeJoin, + miterLimit: Float, + opacity: AnimatableIntegerValue, + width: AnimatableFloatValue, + dashPattern: List, + offset: AnimatableFloatValue? +) : BaseKeyframeAnimation.AnimationListener, KeyPathElementContent, DrawingContent { + private val pm = PathMeasure() + private val path = Path() + private val trimPathPath = Path() + private val pathGroups: MutableList = ArrayList() + private val dashPatternValues: FloatArray + val paint: Paint = Paint().apply { + isAntiAlias = true + } + + private val widthAnimation: BaseKeyframeAnimation<*, Float> + private val opacityAnimation: BaseKeyframeAnimation<*, Int> + private val dashPatternAnimations: MutableList> + private var dashPatternOffsetAnimation: BaseKeyframeAnimation<*, Float> ? + private var colorFilterAnimation: BaseKeyframeAnimation? = null + private var blurAnimation: BaseKeyframeAnimation? = null + var blurMaskFilterRadius: Float = 0f + + private var dropShadowAnimation: DropShadowKeyframeAnimation? = null + + init { + paint.style = PaintingStyle.Stroke + paint.strokeCap = cap + paint.strokeJoin = join + paint.strokeMiterLimit = miterLimit + + opacityAnimation = opacity.createAnimation() + widthAnimation = width.createAnimation() + + dashPatternOffsetAnimation = offset?.createAnimation() + dashPatternAnimations = ArrayList(dashPattern.size) + dashPatternValues = FloatArray(dashPattern.size) + + for (i in dashPattern.indices) { + dashPatternAnimations.add(dashPattern[i].createAnimation()) + } + + layer.addAnimation(opacityAnimation) + layer.addAnimation(widthAnimation) + for (i in dashPatternAnimations.indices) { + layer.addAnimation(dashPatternAnimations[i]) + } + if (dashPatternOffsetAnimation != null) { + layer.addAnimation(dashPatternOffsetAnimation) + } + + opacityAnimation.addUpdateListener(this) + widthAnimation.addUpdateListener(this) + + for (i in dashPattern.indices) { + dashPatternAnimations[i].addUpdateListener(this) + } + dashPatternOffsetAnimation?.addUpdateListener(this) + + if (layer.blurEffect != null) { + blurAnimation = layer.blurEffect!!.blurriness.createAnimation() + blurAnimation.addUpdateListener(this) + layer.addAnimation(blurAnimation) + } + if (layer.dropShadowEffect != null) { + dropShadowAnimation = DropShadowKeyframeAnimation( + this, layer, layer.dropShadowEffect + ) + } + } + + override fun onValueChanged() { + lottieDrawable.invalidateSelf() + } + + override fun setContents(contentsBefore: List?, contentsAfter: List?) { + var trimPathContentBefore: TrimPathContent? = null + for (i in contentsBefore!!.indices.reversed()) { + val content = contentsBefore[i] + if (content is TrimPathContent && + content.type == ShapeTrimPath.Type.INDIVIDUALLY + ) { + trimPathContentBefore = content + } + } + trimPathContentBefore?.addListener(this) + + var currentPathGroup: PathGroup? = null + for (i in contentsAfter!!.indices.reversed()) { + val content = contentsAfter[i] + if (content is TrimPathContent && + content.type == ShapeTrimPath.Type.INDIVIDUALLY + ) { + if (currentPathGroup != null) { + pathGroups.add(currentPathGroup) + } + currentPathGroup = PathGroup(content as TrimPathContent?) + content.addListener(this) + } else if (content is PathContent) { + if (currentPathGroup == null) { + currentPathGroup = PathGroup(trimPathContentBefore) + } + currentPathGroup.paths.add(content) + } + } + if (currentPathGroup != null) { + pathGroups.add(currentPathGroup) + } + } + + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Int) { + if (L.isTraceEnabled()) { + L.beginSection("StrokeContent#draw") + } + if (Utils.hasZeroScaleAxis(parentMatrix)) { + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#draw") + } + return + } + val alpha = + ((parentAlpha / 255f * (opacityAnimation as IntegerKeyframeAnimation).intValue / 100f) * 255).toInt() + paint.alpha = MiscUtils.clamp(alpha, 0, 255) + paint.strokeWidth = + (widthAnimation as FloatKeyframeAnimation).floatValue * Utils.getScale( + parentMatrix + ) + if (paint.strokeWidth <= 0) { + // Android draws a hairline stroke for 0, After Effects doesn't. + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#draw") + } + return + } + applyDashPatternIfNeeded(parentMatrix) + + if (colorFilterAnimation != null) { + paint.setColorFilter(colorFilterAnimation.getValue()) + } + + if (blurAnimation != null) { + val blurRadius: Float = blurAnimation.getValue() + if (blurRadius == 0f) { + paint.setMaskFilter(null) + } else if (blurRadius != blurMaskFilterRadius) { + val blur = layer.getBlurMaskFilter(blurRadius) + paint.setMaskFilter(blur) + } + blurMaskFilterRadius = blurRadius + } + if (dropShadowAnimation != null) { + dropShadowAnimation.applyTo(paint) + } + + for (i in pathGroups.indices) { + val pathGroup = pathGroups[i] + + + if (pathGroup.trimPath != null) { + applyTrimPath(canvas, pathGroup, parentMatrix) + } else { + if (L.isTraceEnabled()) { + L.beginSection("StrokeContent#buildPath") + } + path.reset() + for (j in pathGroup.paths.indices.reversed()) { + path.addPath(pathGroup.paths[j].getPath(), parentMatrix) + } + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#buildPath") + L.beginSection("StrokeContent#drawPath") + } + canvas.drawPath(path, paint) + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#drawPath") + } + } + } + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#draw") + } + } + + private fun applyTrimPath(canvas: Canvas, pathGroup: PathGroup, parentMatrix: Matrix) { + if (L.isTraceEnabled()) { + L.beginSection("StrokeContent#applyTrimPath") + } + if (pathGroup.trimPath == null) { + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#applyTrimPath") + } + return + } + path.reset() + for (j in pathGroup.paths.indices.reversed()) { + path.addPath(pathGroup.paths[j].getPath(), parentMatrix) + } + val animStartValue = pathGroup.trimPath.start.value / 100f + val animEndValue = pathGroup.trimPath.end.value / 100f + val animOffsetValue = pathGroup.trimPath.offset.value / 360f + + // If the start-end is ~100, consider it to be the full path. + if (animStartValue < 0.01f && animEndValue > 0.99f) { + canvas.drawPath(path, paint) + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#applyTrimPath") + } + return + } + + pm.setPath(path, false) + var totalLength = pm.length + while (pm.nextContour()) { + totalLength += pm.length + } + val offsetLength = totalLength * animOffsetValue + val startLength = totalLength * animStartValue + offsetLength + val endLength = min( + (totalLength * animEndValue + offsetLength).toDouble(), + (startLength + totalLength - 1f).toDouble() + ).toFloat() + + var currentLength = 0f + for (j in pathGroup.paths.indices.reversed()) { + trimPathPath.set(pathGroup.paths[j].getPath()) + trimPathPath.transform(parentMatrix) + pm.setPath(trimPathPath, false) + val length = pm.length + if (endLength > totalLength && endLength - totalLength < currentLength + length && currentLength < endLength - totalLength) { + // Draw the segment when the end is greater than the length which wraps around to the + // beginning. + var startValue = if (startLength > totalLength) { + (startLength - totalLength) / length + } else { + 0f + } + val endValue = min(((endLength - totalLength) / length).toDouble(), 1.0) + .toFloat() + Utils.applyTrimPathIfNeeded(trimPathPath, startValue, endValue, 0f) + canvas.drawPath(trimPathPath, paint) + } else + if (currentLength + length < startLength || currentLength > endLength) { + // Do nothing + } else if (currentLength + length <= endLength && startLength < currentLength) { + canvas.drawPath(trimPathPath, paint) + } else { + var startValue = if (startLength < currentLength) { + 0f + } else { + (startLength - currentLength) / length + } + var endValue = if (endLength > currentLength + length) { + 1f + } else { + (endLength - currentLength) / length + } + Utils.applyTrimPathIfNeeded(trimPathPath, startValue, endValue, 0f) + canvas.drawPath(trimPathPath, paint) + } + currentLength += length + } + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#applyTrimPath") + } + } + + override fun getBounds(outBounds: RectF, parentMatrix: Matrix?, applyParents: Boolean) { + if (L.isTraceEnabled()) { + L.beginSection("StrokeContent#getBounds") + } + path.reset() + for (i in pathGroups.indices) { + val pathGroup = pathGroups[i] + for (j in pathGroup.paths.indices) { + path.addPath(pathGroup.paths[j].getPath(), parentMatrix!!) + } + } + path.computeBounds(rect, false) + + val width = (widthAnimation as FloatKeyframeAnimation).floatValue + rect[rect.left - width / 2f, rect.top - width / 2f, rect.right + width / 2f] = + rect.bottom + width / 2f + outBounds.set(rect) + // Add padding to account for rounding errors. + outBounds[outBounds.left - 1, outBounds.top - 1, outBounds.right + 1] = outBounds.bottom + 1 + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#getBounds") + } + } + + private fun applyDashPatternIfNeeded(parentMatrix: Matrix) { + if (L.isTraceEnabled()) { + L.beginSection("StrokeContent#applyDashPattern") + } + if (dashPatternAnimations.isEmpty()) { + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#applyDashPattern") + } + return + } + + val scale = Utils.getScale(parentMatrix) + for (i in dashPatternAnimations.indices) { + dashPatternValues[i] = dashPatternAnimations[i].getValue() + // If the value of the dash pattern or gap is too small, the number of individual sections + // approaches infinity as the value approaches 0. + // To mitigate this, we essentially put a minimum value on the dash pattern size of 1px + // and a minimum gap size of 0.01. + if (i % 2 == 0) { + if (dashPatternValues[i] < 1f) { + dashPatternValues[i] = 1f + } + } else { + if (dashPatternValues[i] < 0.1f) { + dashPatternValues[i] = 0.1f + } + } + dashPatternValues[i] *= scale + } + val offset = + if (dashPatternOffsetAnimation == null) 0f else dashPatternOffsetAnimation.getValue() * scale + paint.setPathEffect(DashPathEffect(dashPatternValues, offset)) + if (L.isTraceEnabled()) { + L.endSection("StrokeContent#applyDashPattern") + } + } + + override fun resolveKeyPath( + keyPath: KeyPath, depth: Int, accumulator: List, currentPartialKeyPath: KeyPath + ) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this) + } + + @CallSuper + override fun addValueCallback(property: T, callback: LottieValueCallback?) { + if (property === LottieProperty.OPACITY) { + opacityAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.STROKE_WIDTH) { + widthAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.COLOR_FILTER) { + if (colorFilterAnimation != null) { + layer.removeAnimation(colorFilterAnimation) + } + + if (callback == null) { + colorFilterAnimation = null + } else { + colorFilterAnimation = + ValueCallbackKeyframeAnimation(callback as LottieValueCallback?) + colorFilterAnimation.addUpdateListener(this) + layer.addAnimation(colorFilterAnimation) + } + } else if (property === LottieProperty.BLUR_RADIUS) { + if (blurAnimation != null) { + blurAnimation!!.setValueCallback(callback as LottieValueCallback?) + } else { + blurAnimation = + ValueCallbackKeyframeAnimation(callback as LottieValueCallback?) + blurAnimation.addUpdateListener(this) + layer.addAnimation(blurAnimation) + } + } else if (property === LottieProperty.DROP_SHADOW_COLOR && dropShadowAnimation != null) { + dropShadowAnimation.setColorCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.DROP_SHADOW_OPACITY && dropShadowAnimation != null) { + dropShadowAnimation.setOpacityCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.DROP_SHADOW_DIRECTION && dropShadowAnimation != null) { + dropShadowAnimation.setDirectionCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.DROP_SHADOW_DISTANCE && dropShadowAnimation != null) { + dropShadowAnimation.setDistanceCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.DROP_SHADOW_RADIUS && dropShadowAnimation != null) { + dropShadowAnimation.setRadiusCallback(callback as LottieValueCallback?) + } + } + + /** + * Data class to help drawing trim paths individually. + */ + private class PathGroup(val trimPath: TrimPathContent?) { + val paths: MutableList = ArrayList() + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt new file mode 100644 index 00000000..8a132b29 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt @@ -0,0 +1,18 @@ +package com.airbnb.lottie.animation.content + +import androidx.compose.ui.graphics.Path +import com.airbnb.lottie.utils.Utils.applyTrimPathIfNeeded + +class CompoundTrimPathContent { + private val contents: MutableList = ArrayList() + + fun addTrimPath(trimPath: TrimPathContent) { + contents.add(trimPath) + } + + fun apply(path: Path) { + for (i in contents.indices.reversed()) { + applyTrimPathIfNeeded(path, contents[i]) + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt new file mode 100644 index 00000000..8a42aecf --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt @@ -0,0 +1,7 @@ +package com.airbnb.lottie.animation.content + +interface Content { + val name: String? + + fun setContents(contentsBefore: List?, contentsAfter: List?) +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt new file mode 100644 index 00000000..199ae478 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt @@ -0,0 +1,255 @@ +package com.airbnb.lottie.animation.content + +import android.graphics.Canvas +import android.graphics.Matrix +import android.graphics.Paint +import android.graphics.Path +import androidx.compose.ui.geometry.Rect +import com.airbnb.lottie.LottieComposition +import com.airbnb.lottie.animation.LPaint +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation +import com.airbnb.lottie.model.content.ContentModel +import com.airbnb.lottie.utils.Utils + +class ContentGroup internal constructor( + lottieDrawable: LottieDrawable, + layer: BaseLayer?, + override val name: String, + private val hidden: Boolean, + @JvmField val contents: List, + transform: AnimatableTransform? +) : DrawingContent, PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElement { + private val offScreenPaint: Paint = LPaint() + private val offScreenRectF: RectF = RectF() + + private val matrix = Matrix() + private val path = Path() + private val rect: Rect = Rect() + + private val lottieDrawable: LottieDrawable = lottieDrawable + private var pathContents: MutableList? = null + private var transformAnimation: TransformKeyframeAnimation? = null + + constructor( + lottieDrawable: LottieDrawable, + layer: BaseLayer, + shapeGroup: ShapeGroup, + composition: LottieComposition + ) : this( + lottieDrawable, + layer, + shapeGroup.getName(), + shapeGroup.isHidden(), + contentsFromModels(lottieDrawable, composition, layer, shapeGroup.getItems()), + findTransform(shapeGroup.getItems()) + ) + + init { + if (transform != null) { + transformAnimation = transform.createAnimation() + transformAnimation.addAnimationsToLayer(layer) + transformAnimation.addListener(this) + } + + val greedyContents: MutableList = ArrayList() + for (i in contents.indices.reversed()) { + val content = contents[i] + if (content is GreedyContent) { + greedyContents.add(content as GreedyContent) + } + } + + for (i in greedyContents.indices.reversed()) { + greedyContents[i].absorbContent(contents.listIterator(contents.size)) + } + } + + override fun onValueChanged() { + lottieDrawable.invalidateSelf() + } + + override fun setContents(contentsBefore: List?, contentsAfter: List?) { + // Do nothing with contents after. + val myContentsBefore: MutableList = ArrayList( + contentsBefore!!.size + contents.size + ) + myContentsBefore.addAll(contentsBefore) + + for (i in contents.indices.reversed()) { + val content = contents[i] + content!!.setContents(myContentsBefore, contents.subList(0, i)) + myContentsBefore.add(content) + } + } + + val pathList: List + get() { + if (pathContents == null) { + pathContents = ArrayList() + for (i in contents.indices) { + val content = contents[i] + if (content is PathContent) { + pathContents.add(content) + } + } + } + return pathContents!! + } + + val transformationMatrix: Matrix + get() { + if (transformAnimation != null) { + return transformAnimation.getMatrix() + } + matrix.reset() + return matrix + } + + override fun getPath(): Path { + // TODO: cache this somehow. + matrix.reset() + if (transformAnimation != null) { + matrix.set(transformAnimation.getMatrix()) + } + path.reset() + if (hidden) { + return path + } + for (i in contents.indices.reversed()) { + val content = contents[i] + if (content is PathContent) { + path.addPath(content.path, matrix) + } + } + return path + } + + fun draw(canvas: Canvas, parentMatrix: Matrix?, parentAlpha: Int) { + if (hidden) { + return + } + matrix.set(parentMatrix) + val layerAlpha: Int + if (transformAnimation != null) { + matrix.preConcat(transformAnimation.getMatrix()) + val opacity = + if (transformAnimation.getOpacity() == null) 100 else transformAnimation.getOpacity().value + layerAlpha = ((opacity / 100f * parentAlpha / 255f) * 255).toInt() + } else { + layerAlpha = parentAlpha + } + + // Apply off-screen rendering only when needed in order to improve rendering performance. + val isRenderingWithOffScreen = + lottieDrawable.isApplyingOpacityToLayersEnabled() && hasTwoOrMoreDrawableContent() && layerAlpha != 255 + if (isRenderingWithOffScreen) { + offScreenRectF.set(0f, 0f, 0f, 0f) + getBounds(offScreenRectF, matrix, true) + offScreenPaint.alpha = layerAlpha + Utils.saveLayerCompat(canvas, offScreenRectF, offScreenPaint) + } + + val childAlpha = if (isRenderingWithOffScreen) 255 else layerAlpha + for (i in contents.indices.reversed()) { + val content: Any? = contents[i] + if (content is DrawingContent) { + content.draw(canvas, matrix, childAlpha) + } + } + + if (isRenderingWithOffScreen) { + canvas.restore() + } + } + + private fun hasTwoOrMoreDrawableContent(): Boolean { + var drawableContentCount = 0 + for (i in contents.indices) { + if (contents[i] is DrawingContent) { + drawableContentCount += 1 + if (drawableContentCount >= 2) { + return true + } + } + } + return false + } + + fun getBounds(outBounds: RectF, parentMatrix: Matrix?, applyParents: Boolean) { + matrix.set(parentMatrix) + if (transformAnimation != null) { + matrix.preConcat(transformAnimation.getMatrix()) + } + rect.set(0f, 0f, 0f, 0f) + for (i in contents.indices.reversed()) { + val content = contents[i] + if (content is DrawingContent) { + content.getBounds(rect, matrix, applyParents) + outBounds.union(rect) + } + } + } + + override fun resolveKeyPath( + keyPath: KeyPath, + depth: Int, + accumulator: MutableList, + currentPartialKeyPath: KeyPath + ) { + var currentPartialKeyPath: KeyPath = currentPartialKeyPath + if (!keyPath.matches(name, depth) && "__container" != name) { + return + } + + if ("__container" != name) { + currentPartialKeyPath = currentPartialKeyPath.addKey(name) + + if (keyPath.fullyResolvesTo(name, depth)) { + accumulator.add(currentPartialKeyPath.resolve(this)) + } + } + + if (keyPath.propagateToChildren(name, depth)) { + val newDepth: Int = depth + keyPath.incrementDepthBy(name, depth) + for (i in contents.indices) { + val content = contents[i] + if (content is KeyPathElement) { + val element: KeyPathElement? = content as KeyPathElement? + element.resolveKeyPath(keyPath, newDepth, accumulator, currentPartialKeyPath) + } + } + } + } + + override fun addValueCallback(property: T, callback: LottieValueCallback?) { + if (transformAnimation != null) { + transformAnimation.applyValueCallback(property, callback) + } + } + + companion object { + private fun contentsFromModels( + drawable: LottieDrawable, composition: LottieComposition, layer: BaseLayer, + contentModels: List + ): List { + val contents: MutableList = ArrayList(contentModels.size) + for (i in contentModels.indices) { + val content = contentModels[i].toContent(drawable, composition, layer) + if (content != null) { + contents.add(content) + } + } + return contents + } + + fun findTransform(contentModels: List): AnimatableTransform? { + for (i in contentModels.indices) { + val contentModel = contentModels[i] + if (contentModel is AnimatableTransform) { + return contentModel as AnimatableTransform? + } + } + return null + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt new file mode 100644 index 00000000..18d58548 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt @@ -0,0 +1,11 @@ +package com.airbnb.lottie.animation.content + +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix + +interface DrawingContent : Content { + fun draw(canvas: Canvas?, parentMatrix: Matrix?, alpha: Int) + + fun getBounds(outBounds: Rect?, parentMatrix: Matrix?, applyParents: Boolean) +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt new file mode 100644 index 00000000..5ff6af95 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt @@ -0,0 +1,125 @@ +package com.airbnb.lottie.animation.content + +import android.annotation.SuppressLint +import android.graphics.PointF +import androidx.compose.ui.graphics.Path +import com.airbnb.lottie.LottieDrawable +import com.airbnb.lottie.LottieProperty +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation +import com.airbnb.lottie.model.KeyPath +import com.airbnb.lottie.model.content.CircleShape +import com.airbnb.lottie.model.content.ShapeTrimPath +import com.airbnb.lottie.model.layer.BaseLayer +import com.airbnb.lottie.utils.MiscUtils +import com.airbnb.lottie.value.LottieValueCallback + +@SuppressLint("RestrictedApi") +class EllipseContent + ( + private val lottieDrawable: LottieDrawable, + layer: BaseLayer, + private val circleShape: CircleShape +) : PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { + private val path = Path() + + override val name: String = circleShape.name + private val sizeAnimation: BaseKeyframeAnimation<*, PointF> = + circleShape.size.createAnimation() + private val positionAnimation: BaseKeyframeAnimation<*, PointF> = + circleShape.position.createAnimation() + + private val trimPaths = CompoundTrimPathContent() + private var isPathValid = false + + init { + layer.addAnimation(sizeAnimation) + layer.addAnimation(positionAnimation) + + sizeAnimation.addUpdateListener(this) + positionAnimation.addUpdateListener(this) + } + + override fun onValueChanged() { + invalidate() + } + + private fun invalidate() { + isPathValid = false + lottieDrawable.invalidateSelf() + } + + override fun setContents(contentsBefore: List?, contentsAfter: List?) { + for (i in contentsBefore!!.indices) { + val content = contentsBefore[i] + if (content is TrimPathContent && content.type == ShapeTrimPath.Type.SIMULTANEOUSLY) { + val trimPath = content + trimPaths.addTrimPath(trimPath) + trimPath.addListener(this) + } + } + } + + override fun getPath(): Path { + if (isPathValid) { + return path + } + + path.reset() + + if (circleShape.isHidden) { + isPathValid = true + return path + } + + val size = sizeAnimation.value + val halfWidth = size.x / 2f + val halfHeight = size.y / 2f + + // TODO: handle bounds + val cpW = halfWidth * ELLIPSE_CONTROL_POINT_PERCENTAGE + val cpH = halfHeight * ELLIPSE_CONTROL_POINT_PERCENTAGE + + path.reset() + if (circleShape.isReversed) { + path.moveTo(0f, -halfHeight) + path.cubicTo(0 - cpW, -halfHeight, -halfWidth, 0 - cpH, -halfWidth, 0f) + path.cubicTo(-halfWidth, 0 + cpH, 0 - cpW, halfHeight, 0f, halfHeight) + path.cubicTo(0 + cpW, halfHeight, halfWidth, 0 + cpH, halfWidth, 0f) + path.cubicTo(halfWidth, 0 - cpH, 0 + cpW, -halfHeight, 0f, -halfHeight) + } else { + path.moveTo(0f, -halfHeight) + path.cubicTo(0 + cpW, -halfHeight, halfWidth, 0 - cpH, halfWidth, 0f) + path.cubicTo(halfWidth, 0 + cpH, 0 + cpW, halfHeight, 0f, halfHeight) + path.cubicTo(0 - cpW, halfHeight, -halfWidth, 0 + cpH, -halfWidth, 0f) + path.cubicTo(-halfWidth, 0 - cpH, 0 - cpW, -halfHeight, 0f, -halfHeight) + } + + val position = positionAnimation.value + path.translate(position.x, position.y) + + path.close() + + trimPaths.apply(path) + + isPathValid = true + return path + } + + override fun resolveKeyPath( + keyPath: KeyPath, depth: Int, accumulator: List, currentPartialKeyPath: KeyPath + ) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this) + } + + override fun addValueCallback(property: T, callback: LottieValueCallback?) { + if (property === LottieProperty.ELLIPSE_SIZE) { + sizeAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.POSITION) { + positionAnimation.setValueCallback(callback as LottieValueCallback?) + } + } + + companion object { + private const val ELLIPSE_CONTROL_POINT_PERCENTAGE = 0.55228f + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java new file mode 100644 index 00000000..89bccbb8 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java @@ -0,0 +1,202 @@ +package com.airbnb.lottie.animation.content; + +import static com.airbnb.lottie.utils.MiscUtils.clamp; + +import android.graphics.BlurMaskFilter; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.RectF; + +import androidx.annotation.Nullable; +import androidx.core.graphics.PaintCompat; + +import com.airbnb.lottie.L; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.LPaint; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.DropShadowKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.content.ShapeFill; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.ArrayList; +import java.util.List; + +public class FillContent + implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { + + private final Path path = new Path(); + private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG); + private final BaseLayer layer; + private final String name; + private final boolean hidden; + private final List paths = new ArrayList<>(); + private final BaseKeyframeAnimation colorAnimation; + private final BaseKeyframeAnimation opacityAnimation; + @Nullable private BaseKeyframeAnimation colorFilterAnimation; + private final LottieDrawable lottieDrawable; + @Nullable private BaseKeyframeAnimation blurAnimation; + float blurMaskFilterRadius; + + @Nullable private DropShadowKeyframeAnimation dropShadowAnimation; + + public FillContent(final LottieDrawable lottieDrawable, BaseLayer layer, ShapeFill fill) { + this.layer = layer; + name = fill.getName(); + hidden = fill.isHidden(); + this.lottieDrawable = lottieDrawable; + if (layer.getBlurEffect() != null) { + blurAnimation = layer.getBlurEffect().getBlurriness().createAnimation(); + blurAnimation.addUpdateListener(this); + layer.addAnimation(blurAnimation); + } + if (layer.getDropShadowEffect() != null) { + dropShadowAnimation = new DropShadowKeyframeAnimation(this, layer, layer.getDropShadowEffect()); + } + + if (fill.getColor() == null || fill.getOpacity() == null) { + colorAnimation = null; + opacityAnimation = null; + return; + } + + PaintCompat.setBlendMode(paint, layer.getBlendMode().toNativeBlendMode()); + + path.setFillType(fill.getFillType()); + + colorAnimation = fill.getColor().createAnimation(); + colorAnimation.addUpdateListener(this); + layer.addAnimation(colorAnimation); + opacityAnimation = fill.getOpacity().createAnimation(); + opacityAnimation.addUpdateListener(this); + layer.addAnimation(opacityAnimation); + } + + @Override public void onValueChanged() { + lottieDrawable.invalidateSelf(); + } + + @Override public void setContents(List contentsBefore, List contentsAfter) { + for (int i = 0; i < contentsAfter.size(); i++) { + Content content = contentsAfter.get(i); + if (content instanceof PathContent) { + paths.add((PathContent) content); + } + } + } + + @Override public String getName() { + return name; + } + + @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + if (hidden) { + return; + } + if (L.isTraceEnabled()) { + L.beginSection("FillContent#draw"); + } + int color = ((ColorKeyframeAnimation) this.colorAnimation).getIntValue(); + int alpha = (int) ((parentAlpha / 255f * opacityAnimation.getValue() / 100f) * 255); + paint.setColor((clamp(alpha, 0, 255) << 24) | (color & 0xFFFFFF)); + + if (colorFilterAnimation != null) { + paint.setColorFilter(colorFilterAnimation.getValue()); + } + + if (blurAnimation != null) { + float blurRadius = blurAnimation.getValue(); + if (blurRadius == 0f) { + paint.setMaskFilter(null); + } else if (blurRadius != blurMaskFilterRadius) { + BlurMaskFilter blur = layer.getBlurMaskFilter(blurRadius); + paint.setMaskFilter(blur); + } + blurMaskFilterRadius = blurRadius; + } + if (dropShadowAnimation != null) { + dropShadowAnimation.applyTo(paint); + } + + path.reset(); + for (int i = 0; i < paths.size(); i++) { + path.addPath(paths.get(i).path, parentMatrix); + } + + canvas.drawPath(path, paint); + + if (L.isTraceEnabled()) { + L.endSection("FillContent#draw"); + } + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + path.reset(); + for (int i = 0; i < paths.size(); i++) { + this.path.addPath(paths.get(i).path, parentMatrix); + } + path.computeBounds(outBounds, false); + // Add padding to account for rounding errors. + outBounds.set( + outBounds.left - 1, + outBounds.top - 1, + outBounds.right + 1, + outBounds.bottom + 1 + ); + } + + @Override public void resolveKeyPath( + KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + if (property == LottieProperty.COLOR) { + colorAnimation.setValueCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.OPACITY) { + opacityAnimation.setValueCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.COLOR_FILTER) { + if (colorFilterAnimation != null) { + layer.removeAnimation(colorFilterAnimation); + } + + if (callback == null) { + colorFilterAnimation = null; + } else { + colorFilterAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + colorFilterAnimation.addUpdateListener(this); + layer.addAnimation(colorFilterAnimation); + } + } else if (property == LottieProperty.BLUR_RADIUS) { + if (blurAnimation != null) { + blurAnimation.setValueCallback((LottieValueCallback) callback); + } else { + blurAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + blurAnimation.addUpdateListener(this); + layer.addAnimation(blurAnimation); + } + } else if (property == LottieProperty.DROP_SHADOW_COLOR && dropShadowAnimation != null) { + dropShadowAnimation.setColorCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_OPACITY && dropShadowAnimation != null) { + dropShadowAnimation.setOpacityCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_DIRECTION && dropShadowAnimation != null) { + dropShadowAnimation.setDirectionCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_DISTANCE && dropShadowAnimation != null) { + dropShadowAnimation.setDistanceCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_RADIUS && dropShadowAnimation != null) { + dropShadowAnimation.setRadiusCallback((LottieValueCallback) callback); + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java new file mode 100644 index 00000000..4d851864 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java @@ -0,0 +1,319 @@ +package com.airbnb.lottie.animation.content; + +import static com.airbnb.lottie.utils.MiscUtils.clamp; + +import android.graphics.BlurMaskFilter; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.RadialGradient; +import android.graphics.RectF; +import android.graphics.Shader; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.collection.LongSparseArray; + +import com.airbnb.lottie.L; +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.LPaint; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.DropShadowKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.content.GradientColor; +import com.airbnb.lottie.model.content.GradientFill; +import com.airbnb.lottie.model.content.GradientType; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.ArrayList; +import java.util.List; + +public class GradientFillContent + implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { + /** + * Cache the gradients such that it runs at 30fps. + */ + private static final int CACHE_STEPS_MS = 32; + @NonNull private final String name; + private final boolean hidden; + private final BaseLayer layer; + private final LongSparseArray linearGradientCache = new LongSparseArray<>(); + private final LongSparseArray radialGradientCache = new LongSparseArray<>(); + private final Path path = new Path(); + private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG); + private final RectF boundsRect = new RectF(); + private final List paths = new ArrayList<>(); + private final GradientType type; + private final BaseKeyframeAnimation colorAnimation; + private final BaseKeyframeAnimation opacityAnimation; + private final BaseKeyframeAnimation startPointAnimation; + private final BaseKeyframeAnimation endPointAnimation; + @Nullable private BaseKeyframeAnimation colorFilterAnimation; + @Nullable private ValueCallbackKeyframeAnimation colorCallbackAnimation; + private final LottieDrawable lottieDrawable; + private final int cacheSteps; + @Nullable private BaseKeyframeAnimation blurAnimation; + float blurMaskFilterRadius = 0f; + @Nullable private DropShadowKeyframeAnimation dropShadowAnimation; + + public GradientFillContent(final LottieDrawable lottieDrawable, LottieComposition composition, BaseLayer layer, GradientFill fill) { + this.layer = layer; + name = fill.getName(); + hidden = fill.isHidden(); + this.lottieDrawable = lottieDrawable; + type = fill.getGradientType(); + path.setFillType(fill.getFillType()); + cacheSteps = (int) (composition.getDuration() / CACHE_STEPS_MS); + + colorAnimation = fill.getGradientColor().createAnimation(); + colorAnimation.addUpdateListener(this); + layer.addAnimation(colorAnimation); + + opacityAnimation = fill.getOpacity().createAnimation(); + opacityAnimation.addUpdateListener(this); + layer.addAnimation(opacityAnimation); + + startPointAnimation = fill.getStartPoint().createAnimation(); + startPointAnimation.addUpdateListener(this); + layer.addAnimation(startPointAnimation); + + endPointAnimation = fill.getEndPoint().createAnimation(); + endPointAnimation.addUpdateListener(this); + layer.addAnimation(endPointAnimation); + + if (layer.getBlurEffect() != null) { + blurAnimation = layer.getBlurEffect().getBlurriness().createAnimation(); + blurAnimation.addUpdateListener(this); + layer.addAnimation(blurAnimation); + } + if (layer.getDropShadowEffect() != null) { + dropShadowAnimation = new DropShadowKeyframeAnimation(this, layer, layer.getDropShadowEffect()); + } + } + + @Override public void onValueChanged() { + lottieDrawable.invalidateSelf(); + } + + @Override public void setContents(List contentsBefore, List contentsAfter) { + for (int i = 0; i < contentsAfter.size(); i++) { + Content content = contentsAfter.get(i); + if (content instanceof PathContent) { + paths.add((PathContent) content); + } + } + } + + @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + if (hidden) { + return; + } + if (L.isTraceEnabled()) { + L.beginSection("GradientFillContent#draw"); + } + path.reset(); + for (int i = 0; i < paths.size(); i++) { + path.addPath(paths.get(i).path, parentMatrix); + } + + path.computeBounds(boundsRect, false); + + Shader shader; + if (type == GradientType.LINEAR) { + shader = getLinearGradient(); + } else { + shader = getRadialGradient(); + } + shader.setLocalMatrix(parentMatrix); + paint.setShader(shader); + + if (colorFilterAnimation != null) { + paint.setColorFilter(colorFilterAnimation.getValue()); + } + + if (blurAnimation != null) { + float blurRadius = blurAnimation.getValue(); + if (blurRadius == 0f) { + paint.setMaskFilter(null); + } else if (blurRadius != blurMaskFilterRadius){ + BlurMaskFilter blur = new BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL); + paint.setMaskFilter(blur); + } + blurMaskFilterRadius = blurRadius; + } + if (dropShadowAnimation != null) { + dropShadowAnimation.applyTo(paint); + } + + int alpha = (int) ((parentAlpha / 255f * opacityAnimation.getValue() / 100f) * 255); + paint.setAlpha(clamp(alpha, 0, 255)); + + canvas.drawPath(path, paint); + if (L.isTraceEnabled()) { + L.endSection("GradientFillContent#draw"); + } + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + path.reset(); + for (int i = 0; i < paths.size(); i++) { + path.addPath(paths.get(i).path, parentMatrix); + } + + path.computeBounds(outBounds, false); + // Add padding to account for rounding errors. + outBounds.set( + outBounds.left - 1, + outBounds.top - 1, + outBounds.right + 1, + outBounds.bottom + 1 + ); + } + + @Override public String getName() { + return name; + } + + private LinearGradient getLinearGradient() { + int gradientHash = getGradientHash(); + LinearGradient gradient = linearGradientCache.get(gradientHash); + if (gradient != null) { + return gradient; + } + PointF startPoint = startPointAnimation.getValue(); + PointF endPoint = endPointAnimation.getValue(); + GradientColor gradientColor = colorAnimation.getValue(); + int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); + float[] positions = gradientColor.getPositions(); + gradient = new LinearGradient(startPoint.x, startPoint.y, endPoint.x, endPoint.y, colors, + positions, Shader.TileMode.CLAMP); + linearGradientCache.put(gradientHash, gradient); + return gradient; + } + + private RadialGradient getRadialGradient() { + int gradientHash = getGradientHash(); + RadialGradient gradient = radialGradientCache.get(gradientHash); + if (gradient != null) { + return gradient; + } + PointF startPoint = startPointAnimation.getValue(); + PointF endPoint = endPointAnimation.getValue(); + GradientColor gradientColor = colorAnimation.getValue(); + int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); + float[] positions = gradientColor.getPositions(); + float x0 = startPoint.x; + float y0 = startPoint.y; + float x1 = endPoint.x; + float y1 = endPoint.y; + float r = (float) Math.hypot(x1 - x0, y1 - y0); + if (r <= 0) { + r = 0.001f; + } + gradient = new RadialGradient(x0, y0, r, colors, positions, Shader.TileMode.CLAMP); + radialGradientCache.put(gradientHash, gradient); + return gradient; + } + + private int getGradientHash() { + int startPointProgress = Math.round(startPointAnimation.getProgress() * cacheSteps); + int endPointProgress = Math.round(endPointAnimation.getProgress() * cacheSteps); + int colorProgress = Math.round(colorAnimation.getProgress() * cacheSteps); + int hash = 17; + if (startPointProgress != 0) { + hash = hash * 31 * startPointProgress; + } + if (endPointProgress != 0) { + hash = hash * 31 * endPointProgress; + } + if (colorProgress != 0) { + hash = hash * 31 * colorProgress; + } + return hash; + } + + private int[] applyDynamicColorsIfNeeded(int[] colors) { + if (colorCallbackAnimation != null) { + Integer[] dynamicColors = (Integer[]) colorCallbackAnimation.getValue(); + if (colors.length == dynamicColors.length) { + for (int i = 0; i < colors.length; i++) { + colors[i] = dynamicColors[i]; + } + } else { + colors = new int[dynamicColors.length]; + for (int i = 0; i < dynamicColors.length; i++) { + colors[i] = dynamicColors[i]; + } + } + } + return colors; + } + + @Override public void resolveKeyPath( + KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + if (property == LottieProperty.OPACITY) { + opacityAnimation.setValueCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.COLOR_FILTER) { + if (colorFilterAnimation != null) { + layer.removeAnimation(colorFilterAnimation); + } + + if (callback == null) { + colorFilterAnimation = null; + } else { + colorFilterAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + colorFilterAnimation.addUpdateListener(this); + layer.addAnimation(colorFilterAnimation); + } + } else if (property == LottieProperty.GRADIENT_COLOR) { + if (colorCallbackAnimation != null) { + layer.removeAnimation(colorCallbackAnimation); + } + + if (callback == null) { + colorCallbackAnimation = null; + } else { + linearGradientCache.clear(); + radialGradientCache.clear(); + colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>(callback); + colorCallbackAnimation.addUpdateListener(this); + layer.addAnimation(colorCallbackAnimation); + } + } else if (property == LottieProperty.BLUR_RADIUS) { + if (blurAnimation != null) { + blurAnimation.setValueCallback((LottieValueCallback) callback); + } else { + blurAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + blurAnimation.addUpdateListener(this); + layer.addAnimation(blurAnimation); + } + } else if (property == LottieProperty.DROP_SHADOW_COLOR && dropShadowAnimation != null) { + dropShadowAnimation.setColorCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_OPACITY && dropShadowAnimation != null) { + dropShadowAnimation.setOpacityCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_DIRECTION && dropShadowAnimation != null) { + dropShadowAnimation.setDirectionCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_DISTANCE && dropShadowAnimation != null) { + dropShadowAnimation.setDistanceCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.DROP_SHADOW_RADIUS && dropShadowAnimation != null) { + dropShadowAnimation.setRadiusCallback((LottieValueCallback) callback); + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java new file mode 100644 index 00000000..b8f05553 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java @@ -0,0 +1,181 @@ +package com.airbnb.lottie.animation.content; + +import android.graphics.Canvas; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.PointF; +import android.graphics.RadialGradient; +import android.graphics.RectF; +import android.graphics.Shader; + +import androidx.annotation.Nullable; +import androidx.collection.LongSparseArray; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.model.content.GradientColor; +import com.airbnb.lottie.model.content.GradientStroke; +import com.airbnb.lottie.model.content.GradientType; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.value.LottieValueCallback; + +public class GradientStrokeContent extends BaseStrokeContent { + /** + * Cache the gradients such that it runs at 30fps. + */ + private static final int CACHE_STEPS_MS = 32; + + private final String name; + private final boolean hidden; + private final LongSparseArray linearGradientCache = new LongSparseArray<>(); + private final LongSparseArray radialGradientCache = new LongSparseArray<>(); + private final RectF boundsRect = new RectF(); + + private final GradientType type; + private final int cacheSteps; + private final BaseKeyframeAnimation colorAnimation; + private final BaseKeyframeAnimation startPointAnimation; + private final BaseKeyframeAnimation endPointAnimation; + @Nullable private ValueCallbackKeyframeAnimation colorCallbackAnimation; + + public GradientStrokeContent( + final LottieDrawable lottieDrawable, BaseLayer layer, GradientStroke stroke) { + super(lottieDrawable, layer, stroke.getCapType().toPaintCap(), + stroke.getJoinType().toPaintJoin(), stroke.getMiterLimit(), stroke.getOpacity(), + stroke.getWidth(), stroke.getLineDashPattern(), stroke.getDashOffset()); + + name = stroke.getName(); + type = stroke.getGradientType(); + hidden = stroke.isHidden(); + cacheSteps = (int) (lottieDrawable.getComposition().getDuration() / CACHE_STEPS_MS); + + colorAnimation = stroke.getGradientColor().createAnimation(); + colorAnimation.addUpdateListener(this); + layer.addAnimation(colorAnimation); + + startPointAnimation = stroke.getStartPoint().createAnimation(); + startPointAnimation.addUpdateListener(this); + layer.addAnimation(startPointAnimation); + + endPointAnimation = stroke.getEndPoint().createAnimation(); + endPointAnimation.addUpdateListener(this); + layer.addAnimation(endPointAnimation); + } + + @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + if (hidden) { + return; + } + getBounds(boundsRect, parentMatrix, false); + + Shader shader; + if (type == GradientType.LINEAR) { + shader = getLinearGradient(); + } else { + shader = getRadialGradient(); + } + shader.setLocalMatrix(parentMatrix); + paint.setShader(shader); + + super.draw(canvas, parentMatrix, parentAlpha); + } + + @Override public String getName() { + return name; + } + + private LinearGradient getLinearGradient() { + int gradientHash = getGradientHash(); + LinearGradient gradient = linearGradientCache.get(gradientHash); + if (gradient != null) { + return gradient; + } + PointF startPoint = startPointAnimation.getValue(); + PointF endPoint = endPointAnimation.getValue(); + GradientColor gradientColor = colorAnimation.getValue(); + int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); + float[] positions = gradientColor.getPositions(); + float x0 = startPoint.x; + float y0 = startPoint.y; + float x1 = endPoint.x; + float y1 = endPoint.y; + gradient = new LinearGradient(x0, y0, x1, y1, colors, positions, Shader.TileMode.CLAMP); + linearGradientCache.put(gradientHash, gradient); + return gradient; + } + + private RadialGradient getRadialGradient() { + int gradientHash = getGradientHash(); + RadialGradient gradient = radialGradientCache.get(gradientHash); + if (gradient != null) { + return gradient; + } + PointF startPoint = startPointAnimation.getValue(); + PointF endPoint = endPointAnimation.getValue(); + GradientColor gradientColor = colorAnimation.getValue(); + int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); + float[] positions = gradientColor.getPositions(); + float x0 = startPoint.x; + float y0 = startPoint.y; + float x1 = endPoint.x; + float y1 = endPoint.y; + float r = (float) Math.hypot(x1 - x0, y1 - y0); + gradient = new RadialGradient(x0, y0, r, colors, positions, Shader.TileMode.CLAMP); + radialGradientCache.put(gradientHash, gradient); + return gradient; + } + + private int getGradientHash() { + int startPointProgress = Math.round(startPointAnimation.getProgress() * cacheSteps); + int endPointProgress = Math.round(endPointAnimation.getProgress() * cacheSteps); + int colorProgress = Math.round(colorAnimation.getProgress() * cacheSteps); + int hash = 17; + if (startPointProgress != 0) { + hash = hash * 31 * startPointProgress; + } + if (endPointProgress != 0) { + hash = hash * 31 * endPointProgress; + } + if (colorProgress != 0) { + hash = hash * 31 * colorProgress; + } + return hash; + } + + private int[] applyDynamicColorsIfNeeded(int[] colors) { + if (colorCallbackAnimation != null) { + Integer[] dynamicColors = (Integer[]) colorCallbackAnimation.getValue(); + if (colors.length == dynamicColors.length) { + for (int i = 0; i < colors.length; i++) { + colors[i] = dynamicColors[i]; + } + } else { + colors = new int[dynamicColors.length]; + for (int i = 0; i < dynamicColors.length; i++) { + colors[i] = dynamicColors[i]; + } + } + } + return colors; + } + + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + super.addValueCallback(property, callback); + if (property == LottieProperty.GRADIENT_COLOR) { + if (colorCallbackAnimation != null) { + layer.removeAnimation(colorCallbackAnimation); + } + + if (callback == null) { + colorCallbackAnimation = null; + } else { + colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>(callback); + colorCallbackAnimation.addUpdateListener(this); + layer.addAnimation(colorCallbackAnimation); + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt new file mode 100644 index 00000000..fcbf6007 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt @@ -0,0 +1,18 @@ +package com.airbnb.lottie.animation.content + +/** + * Content that may want to absorb and take ownership of the content around it. + * For example, merge paths will absorb the shapes above it and repeaters will absorb the content + * above it. + */ +internal interface GreedyContent { + /** + * An iterator of contents that can be used to take ownership of contents. If ownership is taken, + * the content should be removed from the iterator. + * + * + * The contents should be iterated by calling hasPrevious() and previous() so that the list of + * contents is traversed from bottom to top which is the correct order for handling AE logic. + */ + fun absorbContent(contents: ListIterator?) +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java new file mode 100644 index 00000000..c11d4f65 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java @@ -0,0 +1,6 @@ +package com.airbnb.lottie.animation.content; + +import com.airbnb.lottie.model.KeyPathElement; + +public interface KeyPathElementContent extends KeyPathElement, Content { +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java new file mode 100644 index 00000000..b600e179 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java @@ -0,0 +1,123 @@ +package com.airbnb.lottie.animation.content; + +import android.annotation.TargetApi; +import android.graphics.Path; +import android.os.Build; + +import com.airbnb.lottie.model.content.MergePaths; + +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; + +@TargetApi(Build.VERSION_CODES.KITKAT) +public class MergePathsContent implements PathContent, GreedyContent { + private final Path firstPath = new Path(); + private final Path remainderPath = new Path(); + private final Path path = new Path(); + + private final String name; + private final List pathContents = new ArrayList<>(); + private final MergePaths mergePaths; + + public MergePathsContent(MergePaths mergePaths) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + throw new IllegalStateException("Merge paths are not supported pre-KitKat."); + } + name = mergePaths.getName(); + this.mergePaths = mergePaths; + } + + @Override public void absorbContent(ListIterator contents) { + // Fast forward the iterator until after this content. + //noinspection StatementWithEmptyBody + while (contents.hasPrevious() && contents.previous() != this) { + } + while (contents.hasPrevious()) { + Content content = contents.previous(); + if (content instanceof PathContent) { + pathContents.add((PathContent) content); + contents.remove(); + } + } + } + + @Override public void setContents(List contentsBefore, List contentsAfter) { + for (int i = 0; i < pathContents.size(); i++) { + pathContents.get(i).setContents(contentsBefore, contentsAfter); + } + } + + @Override public Path getPath() { + path.reset(); + + if (mergePaths.isHidden()) { + return path; + } + + switch (mergePaths.getMode()) { + case MERGE: + addPaths(); + break; + case ADD: + opFirstPathWithRest(Path.Op.UNION); + break; + case SUBTRACT: + opFirstPathWithRest(Path.Op.REVERSE_DIFFERENCE); + break; + case INTERSECT: + opFirstPathWithRest(Path.Op.INTERSECT); + break; + case EXCLUDE_INTERSECTIONS: + opFirstPathWithRest(Path.Op.XOR); + break; + } + + return path; + } + + @Override public String getName() { + return name; + } + + private void addPaths() { + for (int i = 0; i < pathContents.size(); i++) { + path.addPath(pathContents.get(i).path); + } + } + + @TargetApi(Build.VERSION_CODES.KITKAT) + private void opFirstPathWithRest(Path.Op op) { + remainderPath.reset(); + firstPath.reset(); + + for (int i = pathContents.size() - 1; i >= 1; i--) { + PathContent content = pathContents.get(i); + + if (content instanceof ContentGroup) { + List pathList = ((ContentGroup) content).getPathList(); + for (int j = pathList.size() - 1; j >= 0; j--) { + Path path = pathList.get(j).path; + path.transform(((ContentGroup) content).getTransformationMatrix()); + this.remainderPath.addPath(path); + } + } else { + remainderPath.addPath(content.path); + } + } + + PathContent lastContent = pathContents.get(0); + if (lastContent instanceof ContentGroup) { + List pathList = ((ContentGroup) lastContent).getPathList(); + for (int j = 0; j < pathList.size(); j++) { + Path path = pathList.get(j).path; + path.transform(((ContentGroup) lastContent).getTransformationMatrix()); + this.firstPath.addPath(path); + } + } else { + firstPath.set(lastContent.path); + } + + path.op(firstPath, remainderPath, op); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java new file mode 100644 index 00000000..4f56c435 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java @@ -0,0 +1,4 @@ +package com.airbnb.lottie.animation.content; + +public interface ModifierContent { +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt new file mode 100644 index 00000000..ce0e638d --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt @@ -0,0 +1,8 @@ +package com.airbnb.lottie.animation.content + +import androidx.compose.ui.graphics.Path + + +interface PathContent : Content { + fun getPath() : Path +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt new file mode 100644 index 00000000..8862d5c0 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt @@ -0,0 +1,363 @@ +package com.airbnb.lottie.animation.content + +import android.graphics.Path +import android.graphics.PathMeasure +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation +import com.airbnb.lottie.value.LottieValueCallback +import kotlin.math.atan2 +import kotlin.math.ceil +import kotlin.math.cos +import kotlin.math.floor +import kotlin.math.sin + +class PolystarContent + ( + lottieDrawable: LottieDrawable, layer: BaseLayer, + polystarShape: PolystarShape +) : PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { + private val path = Path() + private val lastSegmentPath = Path() + private val lastSegmentPathMeasure = PathMeasure() + private val lastSegmentPosition = FloatArray(2) + + override val name: String = polystarShape.getName() + private val lottieDrawable: LottieDrawable = lottieDrawable + private val type: PolystarShape.Type = polystarShape.getType() + private val hidden: Boolean = polystarShape.isHidden() + private val isReversed: Boolean = polystarShape.isReversed() + private val pointsAnimation: BaseKeyframeAnimation<*, Float> = + polystarShape.getPoints().createAnimation() + private val positionAnimation: BaseKeyframeAnimation<*, PointF> = + polystarShape.getPosition().createAnimation() + private val rotationAnimation: BaseKeyframeAnimation<*, Float>? = + polystarShape.getRotation().createAnimation() + private var innerRadiusAnimation: BaseKeyframeAnimation<*, Float>? = null + private val outerRadiusAnimation: BaseKeyframeAnimation<*, Float> = + polystarShape.getOuterRadius().createAnimation() + private var innerRoundednessAnimation: BaseKeyframeAnimation<*, Float>? = null + private val outerRoundednessAnimation: BaseKeyframeAnimation<*, Float>? = + polystarShape.getOuterRoundedness().createAnimation() + + private val trimPaths = CompoundTrimPathContent() + private var isPathValid = false + + init { + if (type == PolystarShape.Type.STAR) { + innerRadiusAnimation = polystarShape.getInnerRadius().createAnimation() + innerRoundednessAnimation = polystarShape.getInnerRoundedness().createAnimation() + } else { + innerRadiusAnimation = null + innerRoundednessAnimation = null + } + + layer.addAnimation(pointsAnimation) + layer.addAnimation(positionAnimation) + layer.addAnimation(rotationAnimation) + layer.addAnimation(outerRadiusAnimation) + layer.addAnimation(outerRoundednessAnimation) + if (type == PolystarShape.Type.STAR) { + layer.addAnimation(innerRadiusAnimation) + layer.addAnimation(innerRoundednessAnimation) + } + + pointsAnimation.addUpdateListener(this) + positionAnimation.addUpdateListener(this) + rotationAnimation.addUpdateListener(this) + outerRadiusAnimation.addUpdateListener(this) + outerRoundednessAnimation.addUpdateListener(this) + if (type == PolystarShape.Type.STAR) { + innerRadiusAnimation.addUpdateListener(this) + innerRoundednessAnimation.addUpdateListener(this) + } + } + + override fun onValueChanged() { + invalidate() + } + + private fun invalidate() { + isPathValid = false + lottieDrawable.invalidateSelf() + } + + override fun setContents(contentsBefore: List?, contentsAfter: List?) { + for (i in contentsBefore!!.indices) { + val content = contentsBefore[i] + if (content is TrimPathContent && + content.type == ShapeTrimPath.Type.SIMULTANEOUSLY + ) { + val trimPath = content + trimPaths.addTrimPath(trimPath) + trimPath.addListener(this) + } + } + } + + override fun getPath(): Path { + if (isPathValid) { + return path + } + + path.reset() + + if (hidden) { + isPathValid = true + return path + } + + when (type) { + PolystarShape.Type.STAR -> createStarPath() + PolystarShape.Type.POLYGON -> createPolygonPath() + } + path.close() + + trimPaths.apply(path) + + isPathValid = true + return path + } + + private fun createStarPath() { + val points: Float = pointsAnimation.value + var currentAngle = + (if (rotationAnimation == null) 0f else rotationAnimation.value).toDouble() + // Start at +y instead of +x + currentAngle -= 90.0 + // convert to radians + currentAngle = Math.toRadians(currentAngle) + // adjust current angle for partial points + var anglePerPoint = (2 * Math.PI / points).toFloat() + if (isReversed) { + anglePerPoint *= -1f + } + val halfAnglePerPoint = anglePerPoint / 2.0f + val partialPointAmount = points - points.toInt() + if (partialPointAmount != 0f) { + currentAngle += (halfAnglePerPoint * (1f - partialPointAmount)).toDouble() + } + + val outerRadius: Float = outerRadiusAnimation.value + val innerRadius: Float = innerRadiusAnimation.value + + var innerRoundedness = 0f + if (innerRoundednessAnimation != null) { + innerRoundedness = innerRoundednessAnimation.value / 100f + } + var outerRoundedness = 0f + if (outerRoundednessAnimation != null) { + outerRoundedness = outerRoundednessAnimation.value / 100f + } + + var x: Float + var y: Float + var previousX: Float + var previousY: Float + var partialPointRadius = 0f + if (partialPointAmount != 0f) { + partialPointRadius = innerRadius + partialPointAmount * (outerRadius - innerRadius) + x = (partialPointRadius * cos(currentAngle)).toFloat() + y = (partialPointRadius * sin(currentAngle)).toFloat() + path.moveTo(x, y) + currentAngle += (anglePerPoint * partialPointAmount / 2f).toDouble() + } else { + x = (outerRadius * cos(currentAngle)).toFloat() + y = (outerRadius * sin(currentAngle)).toFloat() + path.moveTo(x, y) + currentAngle += halfAnglePerPoint.toDouble() + } + + // True means the line will go to outer radius. False means inner radius. + var longSegment = false + val numPoints = ceil(points.toDouble()) * 2 + var i = 0 + while (i < numPoints) { + var radius = if (longSegment) outerRadius else innerRadius + var dTheta = halfAnglePerPoint + if (partialPointRadius != 0f && i.toDouble() == numPoints - 2) { + dTheta = anglePerPoint * partialPointAmount / 2f + } + if (partialPointRadius != 0f && i.toDouble() == numPoints - 1) { + radius = partialPointRadius + } + previousX = x + previousY = y + x = (radius * cos(currentAngle)).toFloat() + y = (radius * sin(currentAngle)).toFloat() + + if (innerRoundedness == 0f && outerRoundedness == 0f) { + path.lineTo(x, y) + } else { + val cp1Theta = + (atan2(previousY.toDouble(), previousX.toDouble()) - Math.PI / 2f).toFloat() + val cp1Dx = cos(cp1Theta.toDouble()).toFloat() + val cp1Dy = sin(cp1Theta.toDouble()).toFloat() + + val cp2Theta = (atan2(y.toDouble(), x.toDouble()) - Math.PI / 2f).toFloat() + val cp2Dx = cos(cp2Theta.toDouble()).toFloat() + val cp2Dy = sin(cp2Theta.toDouble()).toFloat() + + val cp1Roundedness = if (longSegment) innerRoundedness else outerRoundedness + val cp2Roundedness = if (longSegment) outerRoundedness else innerRoundedness + val cp1Radius = if (longSegment) innerRadius else outerRadius + val cp2Radius = if (longSegment) outerRadius else innerRadius + + var cp1x = cp1Radius * cp1Roundedness * POLYSTAR_MAGIC_NUMBER * cp1Dx + var cp1y = cp1Radius * cp1Roundedness * POLYSTAR_MAGIC_NUMBER * cp1Dy + var cp2x = cp2Radius * cp2Roundedness * POLYSTAR_MAGIC_NUMBER * cp2Dx + var cp2y = cp2Radius * cp2Roundedness * POLYSTAR_MAGIC_NUMBER * cp2Dy + if (partialPointAmount != 0f) { + if (i == 0) { + cp1x *= partialPointAmount + cp1y *= partialPointAmount + } else if (i.toDouble() == numPoints - 1) { + cp2x *= partialPointAmount + cp2y *= partialPointAmount + } + } + + path.cubicTo(previousX - cp1x, previousY - cp1y, x + cp2x, y + cp2y, x, y) + } + + currentAngle += dTheta.toDouble() + longSegment = !longSegment + i++ + } + + + val position: PointF = positionAnimation.value + path.offset(position.x, position.y) + path.close() + } + + private fun createPolygonPath() { + val points = floor(pointsAnimation.value.toDouble()).toInt() + var currentAngle = + (if (rotationAnimation == null) 0f else rotationAnimation.value).toDouble() + // Start at +y instead of +x + currentAngle -= 90.0 + // convert to radians + currentAngle = Math.toRadians(currentAngle) + // adjust current angle for partial points + val anglePerPoint = (2 * Math.PI / points).toFloat() + + val roundedness: Float = outerRoundednessAnimation.value / 100f + val radius: Float = outerRadiusAnimation.value + var x: Float + var y: Float + var previousX: Float + var previousY: Float + x = (radius * cos(currentAngle)).toFloat() + y = (radius * sin(currentAngle)).toFloat() + path.moveTo(x, y) + currentAngle += anglePerPoint.toDouble() + + val numPoints = ceil(points.toDouble()) + var i = 0 + while (i < numPoints) { + previousX = x + previousY = y + x = (radius * cos(currentAngle)).toFloat() + y = (radius * sin(currentAngle)).toFloat() + + if (roundedness != 0f) { + val cp1Theta = + (atan2(previousY.toDouble(), previousX.toDouble()) - Math.PI / 2f).toFloat() + val cp1Dx = cos(cp1Theta.toDouble()).toFloat() + val cp1Dy = sin(cp1Theta.toDouble()).toFloat() + + val cp2Theta = (atan2(y.toDouble(), x.toDouble()) - Math.PI / 2f).toFloat() + val cp2Dx = cos(cp2Theta.toDouble()).toFloat() + val cp2Dy = sin(cp2Theta.toDouble()).toFloat() + + val cp1x = radius * roundedness * POLYGON_MAGIC_NUMBER * cp1Dx + val cp1y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp1Dy + val cp2x = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dx + val cp2y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dy + + if (i.toDouble() == numPoints - 1) { + // When there is a huge stroke, it will flash if the path ends where it starts. + // We want the final bezier curve to end *slightly* before the start. + // The close() call at the end will complete the polystar. + // https://github.com/airbnb/lottie-android/issues/2329 + lastSegmentPath.reset() + lastSegmentPath.moveTo(previousX, previousY) + lastSegmentPath.cubicTo( + previousX - cp1x, + previousY - cp1y, + x + cp2x, + y + cp2y, + x, + y + ) + lastSegmentPathMeasure.setPath(lastSegmentPath, false) + lastSegmentPathMeasure.getPosTan( + lastSegmentPathMeasure.length * 0.9999f, + lastSegmentPosition, + null + ) + path.cubicTo( + previousX - cp1x, + previousY - cp1y, + x + cp2x, + y + cp2y, + lastSegmentPosition[0], + lastSegmentPosition[1] + ) + } else { + path.cubicTo(previousX - cp1x, previousY - cp1y, x + cp2x, y + cp2y, x, y) + } + } else { + if (i.toDouble() == numPoints - 1) { + // When there is a huge stroke, it will flash if the path ends where it starts. + // The close() call should make the path effectively equivalent. + // https://github.com/airbnb/lottie-android/issues/2329 + i++ + continue + } + path.lineTo(x, y) + } + + currentAngle += anglePerPoint.toDouble() + i++ + } + + val position: PointF = positionAnimation.value + path.offset(position.x, position.y) + path.close() + } + + override fun resolveKeyPath( + keyPath: KeyPath, depth: Int, accumulator: List, currentPartialKeyPath: KeyPath + ) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this) + } + + override fun addValueCallback(property: T, callback: LottieValueCallback?) { + if (property === LottieProperty.POLYSTAR_POINTS) { + pointsAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.POLYSTAR_ROTATION) { + rotationAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.POSITION) { + positionAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.POLYSTAR_INNER_RADIUS && innerRadiusAnimation != null) { + innerRadiusAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.POLYSTAR_OUTER_RADIUS) { + outerRadiusAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.POLYSTAR_INNER_ROUNDEDNESS && innerRoundednessAnimation != null) { + innerRoundednessAnimation.setValueCallback(callback as LottieValueCallback?) + } else if (property === LottieProperty.POLYSTAR_OUTER_ROUNDEDNESS) { + outerRoundednessAnimation.setValueCallback(callback as LottieValueCallback?) + } + } + + companion object { + /** + * This was empirically derived by creating polystars, converting them to + * curves, and calculating a scale factor. + * It works best for polygons and stars with 3 points and needs more + * work otherwise. + */ + private const val POLYSTAR_MAGIC_NUMBER = .47829f + private const val POLYGON_MAGIC_NUMBER = .25f + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java new file mode 100644 index 00000000..89a966ff --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java @@ -0,0 +1,180 @@ +package com.airbnb.lottie.animation.content; + +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.RectF; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.content.RectangleShape; +import com.airbnb.lottie.model.content.ShapeTrimPath; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.List; + +public class RectangleContent + implements BaseKeyframeAnimation.AnimationListener, KeyPathElementContent, PathContent { + private final Path path = new Path(); + private final RectF rect = new RectF(); + + private final String name; + private final boolean hidden; + private final LottieDrawable lottieDrawable; + private final BaseKeyframeAnimation positionAnimation; + private final BaseKeyframeAnimation sizeAnimation; + private final BaseKeyframeAnimation cornerRadiusAnimation; + + private final CompoundTrimPathContent trimPaths = new CompoundTrimPathContent(); + /** This corner radius is from a layer item. The first one is from the roundedness on this specific rect. */ + @Nullable private BaseKeyframeAnimation roundedCornersAnimation = null; + private boolean isPathValid; + + public RectangleContent(LottieDrawable lottieDrawable, BaseLayer layer, RectangleShape rectShape) { + name = rectShape.getName(); + hidden = rectShape.isHidden(); + this.lottieDrawable = lottieDrawable; + positionAnimation = rectShape.getPosition().createAnimation(); + sizeAnimation = rectShape.getSize().createAnimation(); + cornerRadiusAnimation = rectShape.getCornerRadius().createAnimation(); + + layer.addAnimation(positionAnimation); + layer.addAnimation(sizeAnimation); + layer.addAnimation(cornerRadiusAnimation); + + positionAnimation.addUpdateListener(this); + sizeAnimation.addUpdateListener(this); + cornerRadiusAnimation.addUpdateListener(this); + } + + @Override + public String getName() { + return name; + } + + @Override + public void onValueChanged() { + invalidate(); + } + + private void invalidate() { + isPathValid = false; + lottieDrawable.invalidateSelf(); + } + + @Override + public void setContents(List contentsBefore, List contentsAfter) { + for (int i = 0; i < contentsBefore.size(); i++) { + Content content = contentsBefore.get(i); + if (content instanceof TrimPathContent && + ((TrimPathContent) content).getType() == ShapeTrimPath.Type.SIMULTANEOUSLY) { + TrimPathContent trimPath = (TrimPathContent) content; + trimPaths.addTrimPath(trimPath); + trimPath.addListener(this); + } else if (content instanceof RoundedCornersContent) { + roundedCornersAnimation = ((RoundedCornersContent) content).getRoundedCorners(); + } + } + } + + @Override + public Path getPath() { + if (isPathValid) { + return path; + } + + path.reset(); + + if (hidden) { + isPathValid = true; + return path; + } + + PointF size = sizeAnimation.getValue(); + float halfWidth = size.x / 2f; + float halfHeight = size.y / 2f; + float radius = cornerRadiusAnimation == null ? + 0f : ((FloatKeyframeAnimation) cornerRadiusAnimation).getFloatValue(); + if (radius == 0f && this.roundedCornersAnimation != null) { + radius = Math.min(roundedCornersAnimation.getValue(), Math.min(halfWidth, halfHeight)); + } + float maxRadius = Math.min(halfWidth, halfHeight); + if (radius > maxRadius) { + radius = maxRadius; + } + + // Draw the rectangle top right to bottom left. + PointF position = positionAnimation.getValue(); + + path.moveTo(position.x + halfWidth, position.y - halfHeight + radius); + + path.lineTo(position.x + halfWidth, position.y + halfHeight - radius); + + if (radius > 0) { + rect.set(position.x + halfWidth - 2 * radius, + position.y + halfHeight - 2 * radius, + position.x + halfWidth, + position.y + halfHeight); + path.arcTo(rect, 0, 90, false); + } + + path.lineTo(position.x - halfWidth + radius, position.y + halfHeight); + + if (radius > 0) { + rect.set(position.x - halfWidth, + position.y + halfHeight - 2 * radius, + position.x - halfWidth + 2 * radius, + position.y + halfHeight); + path.arcTo(rect, 90, 90, false); + } + + path.lineTo(position.x - halfWidth, position.y - halfHeight + radius); + + if (radius > 0) { + rect.set(position.x - halfWidth, + position.y - halfHeight, + position.x - halfWidth + 2 * radius, + position.y - halfHeight + 2 * radius); + path.arcTo(rect, 180, 90, false); + } + + path.lineTo(position.x + halfWidth - radius, position.y - halfHeight); + + if (radius > 0) { + rect.set(position.x + halfWidth - 2 * radius, + position.y - halfHeight, + position.x + halfWidth, + position.y - halfHeight + 2 * radius); + path.arcTo(rect, 270, 90, false); + } + path.close(); + + trimPaths.apply(path); + + isPathValid = true; + return path; + } + + @Override + public void resolveKeyPath(KeyPath keyPath, int depth, List accumulator, + KeyPath currentPartialKeyPath) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); + } + + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + if (property == LottieProperty.RECTANGLE_SIZE) { + sizeAnimation.setValueCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.POSITION) { + positionAnimation.setValueCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.CORNER_RADIUS) { + cornerRadiusAnimation.setValueCallback((LottieValueCallback) callback); + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java new file mode 100644 index 00000000..693ac727 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java @@ -0,0 +1,155 @@ +package com.airbnb.lottie.animation.content; + +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Path; +import android.graphics.RectF; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.TransformKeyframeAnimation; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.content.Repeater; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.ListIterator; + +public class RepeaterContent implements DrawingContent, PathContent, GreedyContent, + BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { + private final Matrix matrix = new Matrix(); + private final Path path = new Path(); + + private final LottieDrawable lottieDrawable; + private final BaseLayer layer; + private final String name; + private final boolean hidden; + private final BaseKeyframeAnimation copies; + private final BaseKeyframeAnimation offset; + private final TransformKeyframeAnimation transform; + private ContentGroup contentGroup; + + + public RepeaterContent(LottieDrawable lottieDrawable, BaseLayer layer, Repeater repeater) { + this.lottieDrawable = lottieDrawable; + this.layer = layer; + name = repeater.getName(); + this.hidden = repeater.isHidden(); + copies = repeater.getCopies().createAnimation(); + layer.addAnimation(copies); + copies.addUpdateListener(this); + + offset = repeater.getOffset().createAnimation(); + layer.addAnimation(offset); + offset.addUpdateListener(this); + + transform = repeater.getTransform().createAnimation(); + transform.addAnimationsToLayer(layer); + transform.addListener(this); + } + + @Override public void absorbContent(ListIterator contentsIter) { + // This check prevents a repeater from getting added twice. + // This can happen in the following situation: + // RECTANGLE + // REPEATER 1 + // FILL + // REPEATER 2 + // In this case, the expected structure would be: + // REPEATER 2 + // REPEATER 1 + // RECTANGLE + // FILL + // Without this check, REPEATER 1 will try and absorb contents once it is already inside of + // REPEATER 2. + if (contentGroup != null) { + return; + } + // Fast forward the iterator until after this content. + //noinspection StatementWithEmptyBody + while (contentsIter.hasPrevious() && contentsIter.previous() != this) { + } + List contents = new ArrayList<>(); + while (contentsIter.hasPrevious()) { + contents.add(contentsIter.previous()); + contentsIter.remove(); + } + Collections.reverse(contents); + contentGroup = new ContentGroup(lottieDrawable, layer, "Repeater", hidden, contents, null); + } + + @Override public String getName() { + return name; + } + + @Override public void setContents(List contentsBefore, List contentsAfter) { + contentGroup.setContents(contentsBefore, contentsAfter); + } + + @Override public Path getPath() { + Path contentPath = contentGroup.getPath(); + path.reset(); + float copies = this.copies.getValue(); + float offset = this.offset.getValue(); + for (int i = (int) copies - 1; i >= 0; i--) { + matrix.set(transform.getMatrixForRepeater(i + offset)); + path.addPath(contentPath, matrix); + } + return path; + } + + @Override public void draw(Canvas canvas, Matrix parentMatrix, int alpha) { + float copies = this.copies.getValue(); + float offset = this.offset.getValue(); + //noinspection ConstantConditions + float startOpacity = this.transform.getStartOpacity().getValue() / 100f; + //noinspection ConstantConditions + float endOpacity = this.transform.getEndOpacity().getValue() / 100f; + for (int i = (int) copies - 1; i >= 0; i--) { + matrix.set(parentMatrix); + matrix.preConcat(transform.getMatrixForRepeater(i + offset)); + float newAlpha = alpha * MiscUtils.lerp(startOpacity, endOpacity, i / copies); + contentGroup.draw(canvas, matrix, (int) newAlpha); + } + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + contentGroup.getBounds(outBounds, parentMatrix, applyParents); + } + + @Override public void onValueChanged() { + lottieDrawable.invalidateSelf(); + } + + @Override public void resolveKeyPath( + KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); + for (int i = 0; i < contentGroup.contents.size(); i++) { + Content content = contentGroup.contents.get(i); + if (content instanceof KeyPathElementContent) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, (KeyPathElementContent) content); + } + } + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + if (transform.applyValueCallback(property, callback)) { + return; + } + + if (property == LottieProperty.REPEATER_COPIES) { + copies.setValueCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.REPEATER_OFFSET) { + offset.setValueCallback((LottieValueCallback) callback); + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java new file mode 100644 index 00000000..d4453be0 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java @@ -0,0 +1,225 @@ +package com.airbnb.lottie.animation.content; + +import android.graphics.PointF; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.model.CubicCurveData; +import com.airbnb.lottie.model.content.RoundedCorners; +import com.airbnb.lottie.model.content.ShapeData; +import com.airbnb.lottie.model.layer.BaseLayer; + +import java.util.ArrayList; +import java.util.List; + +public class RoundedCornersContent implements ShapeModifierContent, BaseKeyframeAnimation.AnimationListener { + /** + * Copied from: + * https://github.com/airbnb/lottie-web/blob/bb71072a26e03f1ca993da60915860f39aae890b/player/js/utils/common.js#L47 + */ + private static final float ROUNDED_CORNER_MAGIC_NUMBER = 0.5519f; + + private final LottieDrawable lottieDrawable; + private final String name; + private final BaseKeyframeAnimation roundedCorners; + @Nullable private ShapeData shapeData; + + public RoundedCornersContent(LottieDrawable lottieDrawable, BaseLayer layer, RoundedCorners roundedCorners) { + this.lottieDrawable = lottieDrawable; + this.name = roundedCorners.getName(); + this.roundedCorners = roundedCorners.getCornerRadius().createAnimation(); + layer.addAnimation(this.roundedCorners); + this.roundedCorners.addUpdateListener(this); + } + + @Override public String getName() { + return name; + } + + @Override public void onValueChanged() { + lottieDrawable.invalidateSelf(); + } + + @Override public void setContents(List contentsBefore, List contentsAfter) { + // Do nothing. + } + + public BaseKeyframeAnimation getRoundedCorners() { + return roundedCorners; + } + + /** + * Rounded corner algorithm: + * Iterate through each vertex. + * If a vertex is a sharp corner, it rounds it. + * If a vertex has control points, it is already rounded, so it does nothing. + *

+ * To round a vertex: + * Split the vertex into two. + * Move vertex 1 directly towards the previous vertex. + * Set vertex 1's in control point to itself so it is not rounded on that side. + * Extend vertex 1's out control point towards the original vertex. + *

+ * Repeat for vertex 2: + * Move vertex 2 directly towards the next vertex. + * Set vertex 2's out point to itself so it is not rounded on that side. + * Extend vertex 2's in control point towards the original vertex. + *

+ * The distance that the vertices and control points are moved are relative to the + * shape's vertex distances and the roundedness set in the animation. + */ + @Override public ShapeData modifyShape(ShapeData startingShapeData) { + List startingCurves = startingShapeData.getCurves(); + if (startingCurves.size() <= 2) { + return startingShapeData; + } + float roundedness = roundedCorners.getValue(); + if (roundedness == 0f) { + return startingShapeData; + } + + ShapeData modifiedShapeData = getShapeData(startingShapeData); + modifiedShapeData.setInitialPoint(startingShapeData.getInitialPoint().x, startingShapeData.getInitialPoint().y); + List modifiedCurves = modifiedShapeData.getCurves(); + int modifiedCurvesIndex = 0; + boolean isClosed = startingShapeData.isClosed(); + + // i represents which vertex we are currently on. Refer to the docs of CubicCurveData prior to working with + // this code. + // When i == 0 + // vertex=ShapeData.initialPoint + // inCp=if closed vertex else curves[size - 1].cp2 + // outCp=curves[0].cp1 + // When i == 1 + // vertex=curves[0].vertex + // inCp=curves[0].cp2 + // outCp=curves[1].cp1. + // When i == size - 1 + // vertex=curves[size - 1].vertex + // inCp=curves[size - 1].cp2 + // outCp=if closed vertex else curves[0].cp1 + for (int i = 0; i < startingCurves.size(); i++) { + CubicCurveData startingCurve = startingCurves.get(i); + CubicCurveData previousCurve = startingCurves.get(floorMod(i - 1, startingCurves.size())); + CubicCurveData previousPreviousCurve = startingCurves.get(floorMod(i - 2, startingCurves.size())); + PointF vertex = (i == 0 && !isClosed) ? startingShapeData.getInitialPoint() : previousCurve.getVertex(); + PointF inPoint = (i == 0 && !isClosed) ? vertex : previousCurve.getControlPoint2(); + PointF outPoint = startingCurve.getControlPoint1(); + PointF previousVertex = previousPreviousCurve.getVertex(); + PointF nextVertex = startingCurve.getVertex(); + + // We can't round the corner of the end of a non-closed curve. + boolean isEndOfCurve = !startingShapeData.isClosed() && (i == 0 || i == startingCurves.size() - 1); + if (inPoint.equals(vertex) && outPoint.equals(vertex) && !isEndOfCurve) { + // This vertex is a point. Round its corners + float dxToPreviousVertex = vertex.x - previousVertex.x; + float dyToPreviousVertex = vertex.y - previousVertex.y; + float dxToNextVertex = nextVertex.x - vertex.x; + float dyToNextVertex = nextVertex.y - vertex.y; + + float dToPreviousVertex = (float) Math.hypot(dxToPreviousVertex, dyToPreviousVertex); + float dToNextVertex = (float) Math.hypot(dxToNextVertex, dyToNextVertex); + + float previousVertexPercent = Math.min(roundedness / dToPreviousVertex, 0.5f); + float nextVertexPercent = Math.min(roundedness / dToNextVertex, 0.5f); + + // Split the vertex into two and move each vertex towards the previous/next vertex. + float newVertex1X = vertex.x + (previousVertex.x - vertex.x) * previousVertexPercent; + float newVertex1Y = vertex.y + (previousVertex.y - vertex.y) * previousVertexPercent; + float newVertex2X = vertex.x + (nextVertex.x - vertex.x) * nextVertexPercent; + float newVertex2Y = vertex.y + (nextVertex.y - vertex.y) * nextVertexPercent; + + // Extend the new vertex control point towards the original vertex. + float newVertex1OutPointX = newVertex1X - (newVertex1X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER; + float newVertex1OutPointY = newVertex1Y - (newVertex1Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER; + float newVertex2InPointX = newVertex2X - (newVertex2X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER; + float newVertex2InPointY = newVertex2Y - (newVertex2Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER; + + // Remap vertex/in/out point to CubicCurveData. + // Refer to the docs for CubicCurveData for more info on the difference. + CubicCurveData previousCurveData = modifiedCurves.get(floorMod(modifiedCurvesIndex - 1, modifiedCurves.size())); + CubicCurveData currentCurveData = modifiedCurves.get(modifiedCurvesIndex); + previousCurveData.setControlPoint2(newVertex1X, newVertex1Y); + previousCurveData.setVertex(newVertex1X, newVertex1Y); + if (i == 0) { + modifiedShapeData.setInitialPoint(newVertex1X, newVertex1Y); + } + currentCurveData.setControlPoint1(newVertex1OutPointX, newVertex1OutPointY); + modifiedCurvesIndex++; + + previousCurveData = currentCurveData; + currentCurveData = modifiedCurves.get(modifiedCurvesIndex); + previousCurveData.setControlPoint2(newVertex2InPointX, newVertex2InPointY); + previousCurveData.setVertex(newVertex2X, newVertex2Y); + currentCurveData.setControlPoint1(newVertex2X, newVertex2Y); + modifiedCurvesIndex++; + } else { + // This vertex is not a point. Don't modify it. Refer to the documentation above and for CubicCurveData for mapping a vertex + // oriented point to CubicCurveData (path segments). + CubicCurveData previousCurveData = modifiedCurves.get(floorMod(modifiedCurvesIndex - 1, modifiedCurves.size())); + CubicCurveData currentCurveData = modifiedCurves.get(modifiedCurvesIndex); + previousCurveData.setControlPoint2(previousCurve.getControlPoint2().x, previousCurve.getControlPoint2().y); + previousCurveData.setVertex(previousCurve.getVertex().x, previousCurve.getVertex().y); + currentCurveData.setControlPoint1(startingCurve.getControlPoint1().x, startingCurve.getControlPoint1().y); + modifiedCurvesIndex++; + } + } + return modifiedShapeData; + } + + /** + * Returns a shape data with the correct number of vertices for the rounded corners shape. + * This just returns the object. It does not update any values within the shape. + */ + @NonNull + private ShapeData getShapeData(ShapeData startingShapeData) { + List startingCurves = startingShapeData.getCurves(); + boolean isClosed = startingShapeData.isClosed(); + int vertices = 0; + for (int i = startingCurves.size() - 1; i >= 0; i--) { + CubicCurveData startingCurve = startingCurves.get(i); + CubicCurveData previousCurve = startingCurves.get(floorMod(i - 1, startingCurves.size())); + PointF vertex = (i == 0 && !isClosed) ? startingShapeData.getInitialPoint() : previousCurve.getVertex(); + PointF inPoint = (i == 0 && !isClosed) ? vertex : previousCurve.getControlPoint2(); + PointF outPoint = startingCurve.getControlPoint1(); + + boolean isEndOfCurve = !startingShapeData.isClosed() && (i == 0 || i == startingCurves.size() - 1); + if (inPoint.equals(vertex) && outPoint.equals(vertex) && !isEndOfCurve) { + vertices += 2; + } else { + vertices += 1; + } + } + if (shapeData == null || shapeData.getCurves().size() != vertices) { + List newCurves = new ArrayList<>(vertices); + for (int i = 0; i < vertices; i++) { + newCurves.add(new CubicCurveData()); + } + shapeData = new ShapeData(new PointF(0f, 0f), false, newCurves); + } + shapeData.setClosed(isClosed); + return shapeData; + } + + /** + * Copied from the API 24+ AOSP source. + */ + private static int floorMod(int x, int y) { + return x - floorDiv(x, y) * y; + } + + /** + * Copied from the API 24+ AOSP source. + */ + private static int floorDiv(int x, int y) { + int r = x / y; + // if the signs are different and modulo not zero, round down + if ((x ^ y) < 0 && (r * y != x)) { + r--; + } + return r; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java new file mode 100644 index 00000000..03869458 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java @@ -0,0 +1,114 @@ +package com.airbnb.lottie.animation.content; + +import android.graphics.Path; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ShapeKeyframeAnimation; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.content.ShapePath; +import com.airbnb.lottie.model.content.ShapeTrimPath; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.ArrayList; +import java.util.List; + +public class ShapeContent implements PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { + private final Path path = new Path(); + + private final String name; + private final boolean hidden; + private final LottieDrawable lottieDrawable; + private final ShapeKeyframeAnimation shapeAnimation; + @Nullable private List shapeModifierContents; + + private boolean isPathValid; + private final CompoundTrimPathContent trimPaths = new CompoundTrimPathContent(); + + public ShapeContent(LottieDrawable lottieDrawable, BaseLayer layer, ShapePath shape) { + name = shape.getName(); + hidden = shape.isHidden(); + this.lottieDrawable = lottieDrawable; + shapeAnimation = shape.getShapePath().createAnimation(); + layer.addAnimation(shapeAnimation); + shapeAnimation.addUpdateListener(this); + } + + @Override public void onValueChanged() { + invalidate(); + } + + private void invalidate() { + isPathValid = false; + lottieDrawable.invalidateSelf(); + } + + @Override public void setContents(List contentsBefore, List contentsAfter) { + @Nullable List shapeModifierContents = null; + for (int i = 0; i < contentsBefore.size(); i++) { + Content content = contentsBefore.get(i); + if (content instanceof TrimPathContent && + ((TrimPathContent) content).getType() == ShapeTrimPath.Type.SIMULTANEOUSLY) { + // Trim path individually will be handled by the stroke where paths are combined. + TrimPathContent trimPath = (TrimPathContent) content; + trimPaths.addTrimPath(trimPath); + trimPath.addListener(this); + } else if (content instanceof ShapeModifierContent) { + if (shapeModifierContents == null) { + shapeModifierContents = new ArrayList<>(); + } + shapeModifierContents.add((ShapeModifierContent) content); + } + } + shapeAnimation.setShapeModifiers(shapeModifierContents); + } + + @Override public Path getPath() { + if (isPathValid && !shapeAnimation.hasValueCallback()) { + return path; + } + + path.reset(); + + if (hidden) { + isPathValid = true; + return path; + } + + Path shapeAnimationPath = shapeAnimation.getValue(); + if (shapeAnimationPath == null) { + // It is unclear why this ever returns null but it seems to in rare cases. + // https://github.com/airbnb/lottie-android/issues/1632 + return path; + } + path.set(shapeAnimationPath); + path.setFillType(Path.FillType.EVEN_ODD); + + trimPaths.apply(path); + + isPathValid = true; + return path; + } + + @Override public String getName() { + return name; + } + + @Override public void resolveKeyPath( + KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { + MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + if (property == LottieProperty.PATH) { + shapeAnimation.setValueCallback((LottieValueCallback) callback); + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt new file mode 100644 index 00000000..2a9bfb41 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt @@ -0,0 +1,8 @@ +package com.airbnb.lottie.animation.content + +import com.airbnb.lottie.model.content.ShapeData + +interface ShapeModifierContent : Content { + + fun modifyShape(shapeData: ShapeData?): ShapeData? +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java new file mode 100644 index 00000000..212aa55f --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java @@ -0,0 +1,76 @@ +package com.airbnb.lottie.animation.content; + +import static com.airbnb.lottie.LottieProperty.STROKE_COLOR; + +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Matrix; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.model.content.ShapeStroke; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.value.LottieValueCallback; + +public class StrokeContent extends BaseStrokeContent { + + private final BaseLayer layer; + private final String name; + private final boolean hidden; + private final BaseKeyframeAnimation colorAnimation; + @Nullable private BaseKeyframeAnimation colorFilterAnimation; + + public StrokeContent(final LottieDrawable lottieDrawable, BaseLayer layer, ShapeStroke stroke) { + super(lottieDrawable, layer, stroke.getCapType().toPaintCap(), + stroke.getJoinType().toPaintJoin(), stroke.getMiterLimit(), stroke.getOpacity(), + stroke.getWidth(), stroke.getLineDashPattern(), stroke.getDashOffset()); + this.layer = layer; + name = stroke.getName(); + hidden = stroke.isHidden(); + colorAnimation = stroke.getColor().createAnimation(); + colorAnimation.addUpdateListener(this); + layer.addAnimation(colorAnimation); + } + + @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + if (hidden) { + return; + } + paint.setColor(((ColorKeyframeAnimation) colorAnimation).getIntValue()); + if (colorFilterAnimation != null) { + paint.setColorFilter(colorFilterAnimation.getValue()); + } + super.draw(canvas, parentMatrix, parentAlpha); + } + + @Override public String getName() { + return name; + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + super.addValueCallback(property, callback); + if (property == STROKE_COLOR) { + colorAnimation.setValueCallback((LottieValueCallback) callback); + } else if (property == LottieProperty.COLOR_FILTER) { + if (colorFilterAnimation != null) { + layer.removeAnimation(colorFilterAnimation); + } + + if (callback == null) { + colorFilterAnimation = null; + } else { + colorFilterAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + colorFilterAnimation.addUpdateListener(this); + layer.addAnimation(colorAnimation); + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java new file mode 100644 index 00000000..9dd77b20 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java @@ -0,0 +1,74 @@ +package com.airbnb.lottie.animation.content; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.model.content.ShapeTrimPath; +import com.airbnb.lottie.model.layer.BaseLayer; + +import java.util.ArrayList; +import java.util.List; + +public class TrimPathContent implements Content, BaseKeyframeAnimation.AnimationListener { + + private final String name; + private final boolean hidden; + private final List listeners = new ArrayList<>(); + private final ShapeTrimPath.Type type; + private final BaseKeyframeAnimation startAnimation; + private final BaseKeyframeAnimation endAnimation; + private final BaseKeyframeAnimation offsetAnimation; + + public TrimPathContent(BaseLayer layer, ShapeTrimPath trimPath) { + name = trimPath.getName(); + hidden = trimPath.isHidden(); + type = trimPath.getType(); + startAnimation = trimPath.getStart().createAnimation(); + endAnimation = trimPath.getEnd().createAnimation(); + offsetAnimation = trimPath.getOffset().createAnimation(); + + layer.addAnimation(startAnimation); + layer.addAnimation(endAnimation); + layer.addAnimation(offsetAnimation); + + startAnimation.addUpdateListener(this); + endAnimation.addUpdateListener(this); + offsetAnimation.addUpdateListener(this); + } + + @Override public void onValueChanged() { + for (int i = 0; i < listeners.size(); i++) { + listeners.get(i).onValueChanged(); + } + } + + @Override public void setContents(List contentsBefore, List contentsAfter) { + // Do nothing. + } + + @Override public String getName() { + return name; + } + + void addListener(BaseKeyframeAnimation.AnimationListener listener) { + listeners.add(listener); + } + + ShapeTrimPath.Type getType() { + return type; + } + + public BaseKeyframeAnimation getStart() { + return startAnimation; + } + + public BaseKeyframeAnimation getEnd() { + return endAnimation; + } + + public BaseKeyframeAnimation getOffset() { + return offsetAnimation; + } + + public boolean isHidden() { + return hidden; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java new file mode 100644 index 00000000..24cec408 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.animation.content; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt new file mode 100644 index 00000000..d39739dd --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt @@ -0,0 +1,318 @@ +package com.airbnb.lottie.animation.keyframe + +import android.annotation.SuppressLint +import androidx.annotation.FloatRange +import com.airbnb.lottie.L +import com.airbnb.lottie.value.Keyframe +import com.airbnb.lottie.value.LottieValueCallback + +/** + * @param Keyframe type + * @param Animation type + */ +@SuppressLint("RestrictedApi") +abstract class BaseKeyframeAnimation internal constructor(keyframes: List>) { + interface AnimationListener { + fun onValueChanged() + } + + // This is not a Set because we don't want to create an iterator object on every setProgress. + val listeners: MutableList = ArrayList(1) + private var isDiscrete = false + + private val keyframesWrapper: KeyframesWrapper = wrap(keyframes) + protected var progress: Float = 0f + protected var valueCallback: LottieValueCallback? = null + + private var cachedGetValue: A? = null + + private var cachedStartDelayProgress = -1f + private var cachedEndProgress = -1f + + fun setIsDiscrete() { + isDiscrete = true + } + + fun addUpdateListener(listener: AnimationListener) { + listeners.add(listener) + } + + open fun setProgress(/*@FloatRange(from = 0f, to = 1f)*/ progress: Float) { + var progress = progress + if (keyframesWrapper.isEmpty) { + return + } + if (progress < startDelayProgress) { + progress = startDelayProgress + } else if (progress > endProgress) { + progress = endProgress + } + + if (progress == this.progress) { + return + } + this.progress = progress + if (keyframesWrapper.isValueChanged(progress)) { + notifyListeners() + } + } + + open fun notifyListeners() { + for (i in listeners.indices) { + listeners[i].onValueChanged() + } + } + + val currentKeyframe: Keyframe + get() { + val keyframe: Keyframe = keyframesWrapper.currentKeyframe + return keyframe + } + + val linearCurrentKeyframeProgress: Float + /** + * Returns the progress into the current keyframe between 0 and 1. This does not take into account + * any interpolation that the keyframe may have. + */ + get() { + if (isDiscrete) { + return 0f + } + + val keyframe = currentKeyframe + if (keyframe.isStatic) { + return 0f + } + val progressIntoFrame = progress - keyframe.startProgress + val keyframeProgress = keyframe.endProgress - keyframe.startProgress + return progressIntoFrame / keyframeProgress + } + + val interpolatedCurrentKeyframeProgress: Float + /** + * Takes the value of [.getLinearCurrentKeyframeProgress] and interpolates it with + * the current keyframe's interpolator. + */ + get() { + val keyframe = currentKeyframe + // Keyframe should not be null here but there seems to be a Xiaomi Android 10 specific crash. + // https://github.com/airbnb/lottie-android/issues/2050 + // https://github.com/airbnb/lottie-android/issues/2483 + if (keyframe == null || keyframe.isStatic || keyframe.interpolator == null) { + return 0f + } + return keyframe.interpolator.getInterpolation(linearCurrentKeyframeProgress) + } + +// @get:FloatRange(from = 0f, to = 1f) + @get:SuppressLint("Range") + private val startDelayProgress: Float + get() { + if (cachedStartDelayProgress == -1f) { + cachedStartDelayProgress = keyframesWrapper.startDelayProgress + } + return cachedStartDelayProgress + } + +// @get:FloatRange(from = 0f, to = 1f) + @get:SuppressLint("Range") + open val endProgress: Float + get() { + if (cachedEndProgress == -1f) { + cachedEndProgress = keyframesWrapper.endProgress + } + return cachedEndProgress + } + + open val value: A? + get() { + val value: A + + val linearProgress = linearCurrentKeyframeProgress + if (valueCallback == null && keyframesWrapper.isCachedValueEnabled(linearProgress)) { + return cachedGetValue + } + val keyframe = currentKeyframe + + if (keyframe.xInterpolator != null && keyframe.yInterpolator != null) { + val xProgress = keyframe.xInterpolator.getInterpolation(linearProgress) + val yProgress = keyframe.yInterpolator.getInterpolation(linearProgress) + value = getValue(keyframe, linearProgress, xProgress, yProgress) + } else { + val progress = interpolatedCurrentKeyframeProgress + value = getValue(keyframe, progress) + } + + cachedGetValue = value + return value + } + + fun getProgress(): Float { + return progress + } + + fun setValueCallback(valueCallback: LottieValueCallback?) { + if (this.valueCallback != null) { + this.valueCallback!!.setAnimation(null) + } + this.valueCallback = valueCallback + valueCallback?.setAnimation(this) + } + + fun hasValueCallback(): Boolean { + return valueCallback != null + } + + /** + * keyframeProgress will be [0, 1] unless the interpolator has overshoot in which case, this + * should be able to handle values outside of that range. + */ + abstract fun getValue(keyframe: Keyframe?, keyframeProgress: Float): A + + /** + * Similar to [.getValue] but used when an animation has separate interpolators for the X and Y axis. + */ + protected open fun getValue( + keyframe: Keyframe?, + linearKeyframeProgress: Float, + xKeyframeProgress: Float, + yKeyframeProgress: Float + ): A { + throw UnsupportedOperationException("This animation does not support split dimensions!") + } + + private interface KeyframesWrapper { + val isEmpty: Boolean + + fun isValueChanged(progress: Float): Boolean + + val currentKeyframe: Keyframe + +// @get:FloatRange(from = 0f, to = 1f) + val startDelayProgress: Float + +// @get:FloatRange(from = 0f, to = 1f) + val endProgress: Float + + fun isCachedValueEnabled(progress: Float): Boolean + } + + private class EmptyKeyframeWrapper : KeyframesWrapper { + override val isEmpty: Boolean + get() = true + + override fun isValueChanged(progress: Float): Boolean { + return false + } + + override val currentKeyframe: Keyframe + get() { + throw IllegalStateException("not implemented") + } + + override val startDelayProgress: Float + get() = 0f + + override val endProgress: Float + get() = 1f + + override fun isCachedValueEnabled(progress: Float): Boolean { + throw IllegalStateException("not implemented") + } + } + + private class SingleKeyframeWrapper(keyframes: List>) : KeyframesWrapper { + override val currentKeyframe: Keyframe = keyframes[0] + private var cachedInterpolatedProgress = -1f + + override val isEmpty: Boolean + get() = false + + override fun isValueChanged(progress: Float): Boolean { + return !currentKeyframe.isStatic + } + + override val startDelayProgress: Float + get() = currentKeyframe.startProgress + + override val endProgress: Float + get() = currentKeyframe.endProgress + + override fun isCachedValueEnabled(progress: Float): Boolean { + if (cachedInterpolatedProgress == progress) { + return true + } + cachedInterpolatedProgress = progress + return false + } + } + + private class KeyframesWrapperImpl(private val keyframes: List>) : + KeyframesWrapper { + override var currentKeyframe: Keyframe + private set + private var cachedCurrentKeyframe: Keyframe? = null + private var cachedInterpolatedProgress = -1f + + init { + currentKeyframe = findKeyframe(0f) + } + + override val isEmpty: Boolean + get() = false + + override fun isValueChanged(progress: Float): Boolean { + if (currentKeyframe.containsProgress(progress)) { + return !currentKeyframe.isStatic + } + currentKeyframe = findKeyframe(progress) + return true + } + + private fun findKeyframe(progress: Float): Keyframe { + var keyframe = keyframes[keyframes.size - 1] + if (progress >= keyframe.startProgress) { + return keyframe + } + for (i in keyframes.size - 2 downTo 1) { + keyframe = keyframes[i] + if (currentKeyframe === keyframe) { + continue + } + if (keyframe.containsProgress(progress)) { + return keyframe + } + } + return keyframes[0] + } + + override val startDelayProgress: Float + get() = keyframes[0].startProgress + + override val endProgress: Float + get() = keyframes[keyframes.size - 1].endProgress + + override fun isCachedValueEnabled(progress: Float): Boolean { + if (cachedCurrentKeyframe === currentKeyframe + && cachedInterpolatedProgress == progress + ) { + return true + } + cachedCurrentKeyframe = currentKeyframe + cachedInterpolatedProgress = progress + return false + } + } + + companion object { + private fun wrap(keyframes: List>): KeyframesWrapper { + if (keyframes.isEmpty()) { + return EmptyKeyframeWrapper() + } + if (keyframes.size == 1) { + return SingleKeyframeWrapper(keyframes) + } + return KeyframesWrapperImpl(keyframes) + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt new file mode 100644 index 00000000..a4c4e422 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt @@ -0,0 +1,50 @@ +package com.airbnb.lottie.animation.keyframe + +import android.annotation.SuppressLint +import com.airbnb.lottie.utils.GammaEvaluator +import com.airbnb.lottie.utils.MiscUtils +import com.airbnb.lottie.value.Keyframe + +@SuppressLint("RestrictedApi") +internal class ColorKeyframeAnimation(keyframes: List>) : KeyframeAnimation(keyframes) { + override fun getValue(keyframe: Keyframe?, keyframeProgress: Float): Int { + return getIntValue(keyframe, keyframeProgress) + } + + /** + * Optimization to avoid autoboxing. + */ + fun getIntValue(keyframe: Keyframe?, keyframeProgress: Float): Int { + check(!(keyframe!!.startValue == null || keyframe.endValue == null)) { "Missing values for keyframe." } + + // keyframe.endFrame should not be null under normal operation. + // It is not clear why this would be null and when it does, it seems to be extremely rare. + // https://github.com/airbnb/lottie-android/issues/2361 + if (valueCallback != null && keyframe.endFrame != null) { + val value = valueCallback!!.getValueInternal( + keyframe.startFrame, + keyframe.endFrame!!, + keyframe.startValue, + keyframe.endValue, + keyframeProgress, + linearCurrentKeyframeProgress, + getProgress() + ) + if (value != null) { + return value + } + } + + return GammaEvaluator.evaluate( + MiscUtils.clamp(keyframeProgress, 0f, 1f), + keyframe.startValue, + keyframe.endValue!! + ) + } + + val intValue: Int + /** + * Optimization to avoid autoboxing. + */ + get() = getIntValue(getCurrentKeyframe(), getInterpolatedCurrentKeyframeProgress()) +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt new file mode 100644 index 00000000..a2904305 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt @@ -0,0 +1,102 @@ +package com.airbnb.lottie.animation.keyframe + +import android.annotation.SuppressLint +import android.graphics.Color +import android.graphics.Paint +import com.airbnb.lottie.model.layer.BaseLayer +import com.airbnb.lottie.parser.DropShadowEffect +import com.airbnb.lottie.value.LottieFrameInfo +import com.airbnb.lottie.value.LottieValueCallback +import kotlin.math.cos +import kotlin.math.sin + +@SuppressLint("RestrictedApi") +class DropShadowKeyframeAnimation( + private val listener: BaseKeyframeAnimation.AnimationListener, + layer: BaseLayer, + dropShadowEffect: DropShadowEffect +) : BaseKeyframeAnimation.AnimationListener { + private val color: BaseKeyframeAnimation = + dropShadowEffect.color.createAnimation() + private val opacity: BaseKeyframeAnimation + private val direction: BaseKeyframeAnimation + private val distance: BaseKeyframeAnimation + private val radius: BaseKeyframeAnimation + + private var isDirty = true + + init { + color.addUpdateListener(this) + layer.addAnimation(color) + opacity = dropShadowEffect.opacity.createAnimation() + opacity.addUpdateListener(this) + layer.addAnimation(opacity) + direction = dropShadowEffect.direction.createAnimation() + direction.addUpdateListener(this) + layer.addAnimation(direction) + distance = dropShadowEffect.distance.createAnimation() + distance.addUpdateListener(this) + layer.addAnimation(distance) + radius = dropShadowEffect.radius.createAnimation() + radius.addUpdateListener(this) + layer.addAnimation(radius) + } + + override fun onValueChanged() { + isDirty = true + listener.onValueChanged() + } + + fun applyTo(paint: Paint) { + if (!isDirty) { + return + } + isDirty = false + + val directionRad: Double = (direction.getValue().toDouble()) * DEG_TO_RAD + val distance: Float = distance.getValue() + val x = (sin(directionRad).toFloat()) * distance + val y = (cos(directionRad + Math.PI) + .toFloat()) * distance + val baseColor: Int = color.getValue() + val opacity = Math.round(opacity.getValue()).toInt() + val color = + Color.argb(opacity, Color.red(baseColor), Color.green(baseColor), Color.blue(baseColor)) + val radius: Float = radius.getValue() + paint.setShadowLayer(radius, x, y, color) + } + + fun setColorCallback(callback: LottieValueCallback?) { + color.setValueCallback(callback) + } + + fun setOpacityCallback(callback: LottieValueCallback?) { + if (callback == null) { + opacity.setValueCallback(null) + return + } + opacity.setValueCallback(object : LottieValueCallback() { + override fun getValue(frameInfo: LottieFrameInfo): Float? { + val value = callback.getValue(frameInfo) ?: return null + // Convert [0,100] to [0,255] because other dynamic properties use [0,100]. + return value * 2.55f + } + }) + } + + fun setDirectionCallback(callback: LottieValueCallback?) { + direction.setValueCallback(callback) + } + + fun setDistanceCallback(callback: LottieValueCallback?) { + distance.setValueCallback(callback) + } + + fun setRadiusCallback(callback: LottieValueCallback?) { + radius.setValueCallback(callback) + } + + companion object { + private const val DEG_TO_RAD = Math.PI / 180.0 + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java new file mode 100644 index 00000000..1a8908f2 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java @@ -0,0 +1,45 @@ +package com.airbnb.lottie.animation.keyframe; + +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class FloatKeyframeAnimation extends KeyframeAnimation { + + public FloatKeyframeAnimation(List> keyframes) { + super(keyframes); + } + + @Override Float getValue(Keyframe keyframe, float keyframeProgress) { + return getFloatValue(keyframe, keyframeProgress); + } + + /** + * Optimization to avoid autoboxing. + */ + float getFloatValue(Keyframe keyframe, float keyframeProgress) { + if (keyframe.startValue == null || keyframe.endValue == null) { + throw new IllegalStateException("Missing values for keyframe."); + } + + if (valueCallback != null) { + //noinspection ConstantConditions + Float value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, + keyframe.startValue, keyframe.endValue, + keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); + if (value != null) { + return value; + } + } + + return MiscUtils.lerp(keyframe.getStartValueFloat(), keyframe.getEndValueFloat(), keyframeProgress); + } + + /** + * Optimization to avoid autoboxing. + */ + public float getFloatValue() { + return getFloatValue(getCurrentKeyframe(), getInterpolatedCurrentKeyframeProgress()); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java new file mode 100644 index 00000000..2ce54d8d --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java @@ -0,0 +1,32 @@ +package com.airbnb.lottie.animation.keyframe; + +import com.airbnb.lottie.model.content.GradientColor; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class GradientColorKeyframeAnimation extends KeyframeAnimation { + private final GradientColor gradientColor; + + public GradientColorKeyframeAnimation(List> keyframes) { + super(keyframes); + // Not all keyframes that this GradientColor are used for will have the same length. + // AnimatableGradientColorValue.ensureInterpolatableKeyframes may add extra positions + // for some keyframes but not others to ensure that it is interpolatable. + // Ensure that there is enough space for the largest keyframe. + int size = 0; + for (int i = 0; i < keyframes.size(); i++) { + GradientColor startValue = keyframes.get(i).startValue; + if (startValue != null) { + size = Math.max(size, startValue.getSize()); + } + } + gradientColor = new GradientColor(new float[size], new int[size]); + } + + @Override GradientColor getValue(Keyframe keyframe, float keyframeProgress) { + //noinspection DataFlowIssue + gradientColor.lerp(keyframe.startValue, keyframe.endValue, keyframeProgress); + return gradientColor; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java new file mode 100644 index 00000000..3398f3cc --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java @@ -0,0 +1,48 @@ +package com.airbnb.lottie.animation.keyframe; + +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class IntegerKeyframeAnimation extends KeyframeAnimation { + + public IntegerKeyframeAnimation(List> keyframes) { + super(keyframes); + } + + @Override + Integer getValue(Keyframe keyframe, float keyframeProgress) { + return getIntValue(keyframe, keyframeProgress); + } + + /** + * Optimization to avoid autoboxing. + */ + int getIntValue(Keyframe keyframe, float keyframeProgress) { + if (keyframe.startValue == null) { + throw new IllegalStateException("Missing values for keyframe."); + } + + int endValue = keyframe.endValue == null ? keyframe.getStartValueInt() : keyframe.getEndValueInt(); + + if (valueCallback != null) { + //noinspection ConstantConditions + Integer value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, + keyframe.startValue, endValue, + keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); + if (value != null) { + return value; + } + } + + return MiscUtils.lerp(keyframe.getStartValueInt(), endValue, keyframeProgress); + } + + /** + * Optimization to avoid autoboxing. + */ + public int getIntValue() { + return getIntValue(getCurrentKeyframe(), getInterpolatedCurrentKeyframeProgress()); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java new file mode 100644 index 00000000..c37c7a4c --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java @@ -0,0 +1,11 @@ +package com.airbnb.lottie.animation.keyframe; + +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +abstract class KeyframeAnimation extends BaseKeyframeAnimation { + KeyframeAnimation(List> keyframes) { + super(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java new file mode 100644 index 00000000..c27a3556 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java @@ -0,0 +1,39 @@ +package com.airbnb.lottie.animation.keyframe; + +import android.graphics.Path; + +import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; +import com.airbnb.lottie.model.content.Mask; +import com.airbnb.lottie.model.content.ShapeData; + +import java.util.ArrayList; +import java.util.List; + +public class MaskKeyframeAnimation { + private final List> maskAnimations; + private final List> opacityAnimations; + private final List masks; + + public MaskKeyframeAnimation(List masks) { + this.masks = masks; + this.maskAnimations = new ArrayList<>(masks.size()); + this.opacityAnimations = new ArrayList<>(masks.size()); + for (int i = 0; i < masks.size(); i++) { + this.maskAnimations.add(masks.get(i).getMaskPath().createAnimation()); + AnimatableIntegerValue opacity = masks.get(i).getOpacity(); + opacityAnimations.add(opacity.createAnimation()); + } + } + + public List getMasks() { + return masks; + } + + public List> getMaskAnimations() { + return maskAnimations; + } + + public List> getOpacityAnimations() { + return opacityAnimations; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java new file mode 100644 index 00000000..aea15298 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java @@ -0,0 +1,40 @@ +package com.airbnb.lottie.animation.keyframe; + +import android.graphics.Path; +import android.graphics.PointF; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.utils.Utils; +import com.airbnb.lottie.value.Keyframe; + +public class PathKeyframe extends Keyframe { + @Nullable private Path path; + + private final Keyframe pointKeyFrame; + + public PathKeyframe(LottieComposition composition, Keyframe keyframe) { + super(composition, keyframe.startValue, keyframe.endValue, keyframe.interpolator, keyframe.xInterpolator, keyframe.yInterpolator, + keyframe.startFrame, keyframe.endFrame); + this.pointKeyFrame = keyframe; + createPath(); + } + + public void createPath() { + // This must use equals(float, float) because PointF didn't have an equals(PathF) method + // until KitKat... + boolean equals = endValue != null && startValue != null && + startValue.equals(endValue.x, endValue.y); + if (startValue != null && endValue != null && !equals) { + path = Utils.createPath(startValue, endValue, pointKeyFrame.pathCp1, pointKeyFrame.pathCp2); + } + } + + /** + * This will be null if the startValue and endValue are the same. + */ + @Nullable Path getPath() { + return path; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java new file mode 100644 index 00000000..7418405d --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java @@ -0,0 +1,59 @@ +package com.airbnb.lottie.animation.keyframe; + +import android.graphics.Path; +import android.graphics.PathMeasure; +import android.graphics.PointF; + +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class PathKeyframeAnimation extends KeyframeAnimation { + private final PointF point = new PointF(); + private final float[] pos = new float[2]; + private final float[] tangent = new float[2]; + private final PathMeasure pathMeasure = new PathMeasure(); + private PathKeyframe pathMeasureKeyframe; + + public PathKeyframeAnimation(List> keyframes) { + super(keyframes); + } + + @Override public PointF getValue(Keyframe keyframe, float keyframeProgress) { + PathKeyframe pathKeyframe = (PathKeyframe) keyframe; + Path path = pathKeyframe.getPath(); + if (path == null) { + return keyframe.startValue; + } + + if (valueCallback != null) { + PointF value = valueCallback.getValueInternal(pathKeyframe.startFrame, pathKeyframe.endFrame, + pathKeyframe.startValue, pathKeyframe.endValue, getLinearCurrentKeyframeProgress(), + keyframeProgress, getProgress()); + if (value != null) { + return value; + } + } + + if (pathMeasureKeyframe != pathKeyframe) { + pathMeasure.setPath(path, false); + pathMeasureKeyframe = pathKeyframe; + } + + // allow bounce easings to calculate positions outside the path + // by using the tangent at the extremities + + float length = pathMeasure.getLength(); + + float distance = keyframeProgress * length; + pathMeasure.getPosTan(distance, pos, tangent); + point.set(pos[0], pos[1]); + + if (distance < 0) { + point.offset(tangent[0] * distance, tangent[1] * distance); + } else if (distance > length) { + point.offset(tangent[0] * (distance - length), tangent[1] * (distance - length)); + } + return point; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java new file mode 100644 index 00000000..7d4d6065 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java @@ -0,0 +1,41 @@ +package com.airbnb.lottie.animation.keyframe; + +import android.graphics.PointF; + +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class PointKeyframeAnimation extends KeyframeAnimation { + private final PointF point = new PointF(); + + public PointKeyframeAnimation(List> keyframes) { + super(keyframes); + } + + @Override public PointF getValue(Keyframe keyframe, float keyframeProgress) { + return getValue(keyframe, keyframeProgress, keyframeProgress, keyframeProgress); + } + + @Override protected PointF getValue(Keyframe keyframe, float linearKeyframeProgress, float xKeyframeProgress, float yKeyframeProgress) { + if (keyframe.startValue == null || keyframe.endValue == null) { + throw new IllegalStateException("Missing values for keyframe."); + } + + PointF startPoint = keyframe.startValue; + PointF endPoint = keyframe.endValue; + + if (valueCallback != null) { + //noinspection ConstantConditions + PointF value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, startPoint, + endPoint, linearKeyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); + if (value != null) { + return value; + } + } + + point.set(startPoint.x + xKeyframeProgress * (endPoint.x - startPoint.x), + startPoint.y + yKeyframeProgress * (endPoint.y - startPoint.y)); + return point; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java new file mode 100644 index 00000000..724e433d --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java @@ -0,0 +1,40 @@ +package com.airbnb.lottie.animation.keyframe; + +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.Keyframe; +import com.airbnb.lottie.value.ScaleXY; + +import java.util.List; + +public class ScaleKeyframeAnimation extends KeyframeAnimation { + + private final ScaleXY scaleXY = new ScaleXY(); + + public ScaleKeyframeAnimation(List> keyframes) { + super(keyframes); + } + + @Override public ScaleXY getValue(Keyframe keyframe, float keyframeProgress) { + if (keyframe.startValue == null || keyframe.endValue == null) { + throw new IllegalStateException("Missing values for keyframe."); + } + ScaleXY startTransform = keyframe.startValue; + ScaleXY endTransform = keyframe.endValue; + + if (valueCallback != null) { + //noinspection ConstantConditions + ScaleXY value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, + startTransform, endTransform, + keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); + if (value != null) { + return value; + } + } + + scaleXY.set( + MiscUtils.lerp(startTransform.getScaleX(), endTransform.getScaleX(), keyframeProgress), + MiscUtils.lerp(startTransform.getScaleY(), endTransform.getScaleY(), keyframeProgress) + ); + return scaleXY; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java new file mode 100644 index 00000000..43cc1857 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java @@ -0,0 +1,58 @@ +package com.airbnb.lottie.animation.keyframe; + +import android.graphics.Path; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.animation.content.ShapeModifierContent; +import com.airbnb.lottie.model.content.ShapeData; +import com.airbnb.lottie.utils.MiscUtils; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class ShapeKeyframeAnimation extends BaseKeyframeAnimation { + private final ShapeData tempShapeData = new ShapeData(); + private final Path tempPath = new Path(); + private Path valueCallbackStartPath; + private Path valueCallbackEndPath; + + private List shapeModifiers; + + public ShapeKeyframeAnimation(List> keyframes) { + super(keyframes); + } + + @Override public Path getValue(Keyframe keyframe, float keyframeProgress) { + ShapeData startShapeData = keyframe.startValue; + ShapeData endShapeData = keyframe.endValue; + + tempShapeData.interpolateBetween(startShapeData, endShapeData == null ? startShapeData : endShapeData, keyframeProgress); + ShapeData modifiedShapeData = tempShapeData; + if (shapeModifiers != null) { + for (int i = shapeModifiers.size() - 1; i >= 0; i--) { + modifiedShapeData = shapeModifiers.get(i).modifyShape(modifiedShapeData); + } + } + MiscUtils.getPathFromData(modifiedShapeData, tempPath); + if (valueCallback != null) { + if (valueCallbackStartPath == null) { + valueCallbackStartPath = new Path(); + valueCallbackEndPath = new Path(); + } + MiscUtils.getPathFromData(startShapeData, valueCallbackStartPath); + if (endShapeData != null) { + MiscUtils.getPathFromData(endShapeData, valueCallbackEndPath); + } + + return valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, + valueCallbackStartPath, endShapeData == null ? valueCallbackStartPath : valueCallbackEndPath, + keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); + } + return tempPath; + } + + public void setShapeModifiers(@Nullable List shapeModifiers) { + this.shapeModifiers = shapeModifiers; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java new file mode 100644 index 00000000..6d3cf46e --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java @@ -0,0 +1,105 @@ +package com.airbnb.lottie.animation.keyframe; + +import android.graphics.PointF; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.value.Keyframe; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.Collections; + +public class SplitDimensionPathKeyframeAnimation extends BaseKeyframeAnimation { + private final PointF point = new PointF(); + private final PointF pointWithCallbackValues = new PointF(); + private final BaseKeyframeAnimation xAnimation; + private final BaseKeyframeAnimation yAnimation; + + @Nullable protected LottieValueCallback xValueCallback; + @Nullable protected LottieValueCallback yValueCallback; + + + public SplitDimensionPathKeyframeAnimation( + BaseKeyframeAnimation xAnimation, + BaseKeyframeAnimation yAnimation) { + super(Collections.>emptyList()); + + this.xAnimation = xAnimation; + this.yAnimation = yAnimation; + // We need to call an initial setProgress so point gets set with the initial value. + setProgress(getProgress()); + } + + public void setXValueCallback(@Nullable LottieValueCallback xValueCallback) { + if (this.xValueCallback != null) { + this.xValueCallback.setAnimation(null); + } + this.xValueCallback = xValueCallback; + if (xValueCallback != null) { + xValueCallback.setAnimation(this); + } + } + + public void setYValueCallback(@Nullable LottieValueCallback yValueCallback) { + if (this.yValueCallback != null) { + this.yValueCallback.setAnimation(null); + } + this.yValueCallback = yValueCallback; + if (yValueCallback != null) { + yValueCallback.setAnimation(this); + } + } + + @Override public void setProgress(float progress) { + xAnimation.setProgress(progress); + yAnimation.setProgress(progress); + point.set(xAnimation.getValue(), yAnimation.getValue()); + for (int i = 0; i < listeners.size(); i++) { + listeners.get(i).onValueChanged(); + } + } + + @Override public PointF getValue() { + return getValue(null, 0); + } + + @Override PointF getValue(Keyframe keyframe, float keyframeProgress) { + Float xCallbackValue = null; + Float yCallbackValue = null; + + if (xValueCallback != null) { + Keyframe xKeyframe = xAnimation.getCurrentKeyframe(); + if (xKeyframe != null) { + float progress = xAnimation.getInterpolatedCurrentKeyframeProgress(); + Float endFrame = xKeyframe.endFrame; + xCallbackValue = + xValueCallback.getValueInternal(xKeyframe.startFrame, endFrame == null ? xKeyframe.startFrame : endFrame, xKeyframe.startValue, + xKeyframe.endValue, keyframeProgress, keyframeProgress, progress); + } + } + if (yValueCallback != null) { + Keyframe yKeyframe = yAnimation.getCurrentKeyframe(); + if (yKeyframe != null) { + float progress = yAnimation.getInterpolatedCurrentKeyframeProgress(); + Float endFrame = yKeyframe.endFrame; + yCallbackValue = + yValueCallback.getValueInternal(yKeyframe.startFrame, endFrame == null ? yKeyframe.startFrame : endFrame, yKeyframe.startValue, + yKeyframe.endValue, keyframeProgress, keyframeProgress, progress); + } + } + + if (xCallbackValue == null) { + pointWithCallbackValues.set(point.x, 0f); + } else { + pointWithCallbackValues.set(xCallbackValue, 0f); + } + + if (yCallbackValue == null) { + pointWithCallbackValues.set(pointWithCallbackValues.x, point.y); + } else { + pointWithCallbackValues.set(pointWithCallbackValues.x, yCallbackValue); + } + + return pointWithCallbackValues; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java new file mode 100644 index 00000000..e271585c --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java @@ -0,0 +1,45 @@ +package com.airbnb.lottie.animation.keyframe; + +import com.airbnb.lottie.model.DocumentData; +import com.airbnb.lottie.value.Keyframe; +import com.airbnb.lottie.value.LottieFrameInfo; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.List; + +public class TextKeyframeAnimation extends KeyframeAnimation { + public TextKeyframeAnimation(List> keyframes) { + super(keyframes); + } + + @Override DocumentData getValue(Keyframe keyframe, float keyframeProgress) { + if (valueCallback != null) { + return valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame == null ? Float.MAX_VALUE : keyframe.endFrame, + keyframe.startValue, keyframe.endValue == null ? keyframe.startValue : keyframe.endValue, keyframeProgress, + getInterpolatedCurrentKeyframeProgress(), getProgress()); + } else if (keyframeProgress != 1.0f || keyframe.endValue == null) { + return keyframe.startValue; + } else { + return keyframe.endValue; + } + } + + public void setStringValueCallback(LottieValueCallback valueCallback) { + final LottieFrameInfo stringFrameInfo = new LottieFrameInfo<>(); + final DocumentData documentData = new DocumentData(); + super.setValueCallback(new LottieValueCallback() { + @Override + public DocumentData getValue(LottieFrameInfo frameInfo) { + stringFrameInfo.set(frameInfo.getStartFrame(), frameInfo.getEndFrame(), frameInfo.getStartValue().text, + frameInfo.getEndValue().text, frameInfo.getLinearKeyframeProgress(), frameInfo.getInterpolatedKeyframeProgress(), + frameInfo.getOverallProgress()); + String text = valueCallback.getValue(stringFrameInfo); + DocumentData baseDocumentData = frameInfo.getInterpolatedKeyframeProgress() == 1f ? frameInfo.getEndValue() : frameInfo.getStartValue(); + documentData.set(text, baseDocumentData.fontName, baseDocumentData.size, baseDocumentData.justification, baseDocumentData.tracking, + baseDocumentData.lineHeight, baseDocumentData.baselineShift, baseDocumentData.color, baseDocumentData.strokeColor, + baseDocumentData.strokeWidth, baseDocumentData.strokeOverFill, baseDocumentData.boxPosition, baseDocumentData.boxSize); + return documentData; + } + }); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java new file mode 100644 index 00000000..13a63ee6 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java @@ -0,0 +1,361 @@ +package com.airbnb.lottie.animation.keyframe; + +import static com.airbnb.lottie.LottieProperty.TRANSFORM_ANCHOR_POINT; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_END_OPACITY; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_OPACITY; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_POSITION; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_POSITION_X; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_POSITION_Y; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_ROTATION; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_SCALE; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_SKEW; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_SKEW_ANGLE; +import static com.airbnb.lottie.LottieProperty.TRANSFORM_START_OPACITY; + +import android.graphics.Matrix; +import android.graphics.PointF; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.model.animatable.AnimatableTransform; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.value.Keyframe; +import com.airbnb.lottie.value.LottieValueCallback; +import com.airbnb.lottie.value.ScaleXY; + +import java.util.Collections; + +public class TransformKeyframeAnimation { + private final Matrix matrix = new Matrix(); + private final Matrix skewMatrix1; + private final Matrix skewMatrix2; + private final Matrix skewMatrix3; + private final float[] skewValues; + + @Nullable private BaseKeyframeAnimation anchorPoint; + @Nullable private BaseKeyframeAnimation position; + @Nullable private BaseKeyframeAnimation scale; + @Nullable private BaseKeyframeAnimation rotation; + @Nullable private BaseKeyframeAnimation opacity; + @Nullable private FloatKeyframeAnimation skew; + @Nullable private FloatKeyframeAnimation skewAngle; + + // Used for repeaters + @Nullable private BaseKeyframeAnimation startOpacity; + @Nullable private BaseKeyframeAnimation endOpacity; + + private final boolean autoOrient; + + + public TransformKeyframeAnimation(AnimatableTransform animatableTransform) { + anchorPoint = animatableTransform.getAnchorPoint() == null ? null : animatableTransform.getAnchorPoint().createAnimation(); + position = animatableTransform.getPosition() == null ? null : animatableTransform.getPosition().createAnimation(); + scale = animatableTransform.getScale() == null ? null : animatableTransform.getScale().createAnimation(); + rotation = animatableTransform.getRotation() == null ? null : animatableTransform.getRotation().createAnimation(); + skew = animatableTransform.getSkew() == null ? null : (FloatKeyframeAnimation) animatableTransform.getSkew().createAnimation(); + autoOrient = animatableTransform.isAutoOrient(); + if (skew != null) { + skewMatrix1 = new Matrix(); + skewMatrix2 = new Matrix(); + skewMatrix3 = new Matrix(); + skewValues = new float[9]; + } else { + skewMatrix1 = null; + skewMatrix2 = null; + skewMatrix3 = null; + skewValues = null; + } + skewAngle = animatableTransform.getSkewAngle() == null ? null : (FloatKeyframeAnimation) animatableTransform.getSkewAngle().createAnimation(); + if (animatableTransform.getOpacity() != null) { + opacity = animatableTransform.getOpacity().createAnimation(); + } + if (animatableTransform.getStartOpacity() != null) { + startOpacity = animatableTransform.getStartOpacity().createAnimation(); + } else { + startOpacity = null; + } + if (animatableTransform.getEndOpacity() != null) { + endOpacity = animatableTransform.getEndOpacity().createAnimation(); + } else { + endOpacity = null; + } + } + + public void addAnimationsToLayer(BaseLayer layer) { + layer.addAnimation(opacity); + layer.addAnimation(startOpacity); + layer.addAnimation(endOpacity); + + layer.addAnimation(anchorPoint); + layer.addAnimation(position); + layer.addAnimation(scale); + layer.addAnimation(rotation); + layer.addAnimation(skew); + layer.addAnimation(skewAngle); + } + + public void addListener(final BaseKeyframeAnimation.AnimationListener listener) { + if (opacity != null) { + opacity.addUpdateListener(listener); + } + if (startOpacity != null) { + startOpacity.addUpdateListener(listener); + } + if (endOpacity != null) { + endOpacity.addUpdateListener(listener); + } + + if (anchorPoint != null) { + anchorPoint.addUpdateListener(listener); + } + if (position != null) { + position.addUpdateListener(listener); + } + if (scale != null) { + scale.addUpdateListener(listener); + } + if (rotation != null) { + rotation.addUpdateListener(listener); + } + if (skew != null) { + skew.addUpdateListener(listener); + } + if (skewAngle != null) { + skewAngle.addUpdateListener(listener); + } + } + + public void setProgress(float progress) { + if (opacity != null) { + opacity.setProgress(progress); + } + if (startOpacity != null) { + startOpacity.setProgress(progress); + } + if (endOpacity != null) { + endOpacity.setProgress(progress); + } + + if (anchorPoint != null) { + anchorPoint.setProgress(progress); + } + if (position != null) { + position.setProgress(progress); + } + if (scale != null) { + scale.setProgress(progress); + } + if (rotation != null) { + rotation.setProgress(progress); + } + if (skew != null) { + skew.setProgress(progress); + } + if (skewAngle != null) { + skewAngle.setProgress(progress); + } + } + + @Nullable public BaseKeyframeAnimation getOpacity() { + return opacity; + } + + @Nullable public BaseKeyframeAnimation getStartOpacity() { + return startOpacity; + } + + @Nullable public BaseKeyframeAnimation getEndOpacity() { + return endOpacity; + } + + public Matrix getMatrix() { + matrix.reset(); + BaseKeyframeAnimation position = this.position; + if (position != null) { + PointF positionValue = position.getValue(); + if (positionValue != null && (positionValue.x != 0 || positionValue.y != 0)) { + matrix.preTranslate(positionValue.x, positionValue.y); + } + } + + // If autoOrient is true, the rotation should follow the derivative of the position rather + // than the rotation property. + if (autoOrient) { + if (position != null) { + float currentProgress = position.getProgress(); + PointF startPosition = position.getValue(); + // Store the start X and Y values because the pointF will be overwritten by the next getValue call. + float startX = startPosition.x; + float startY = startPosition.y; + // 1) Find the next position value. + // 2) Create a vector from the current position to the next position. + // 3) Find the angle of that vector to the X axis (0 degrees). + position.setProgress(currentProgress + 0.0001f); + PointF nextPosition = position.getValue(); + position.setProgress(currentProgress); + double rotationValue = Math.toDegrees(Math.atan2(nextPosition.y - startY, nextPosition.x - startX)); + matrix.preRotate((float) rotationValue); + } + } else { + BaseKeyframeAnimation rotation = this.rotation; + if (rotation != null) { + float rotationValue; + if (rotation instanceof ValueCallbackKeyframeAnimation) { + rotationValue = rotation.getValue(); + } else { + rotationValue = ((FloatKeyframeAnimation) rotation).getFloatValue(); + } + if (rotationValue != 0f) { + matrix.preRotate(rotationValue); + } + } + } + + FloatKeyframeAnimation skew = this.skew; + if (skew != null) { + float mCos = skewAngle == null ? 0f : (float) Math.cos(Math.toRadians(-skewAngle.getFloatValue() + 90)); + float mSin = skewAngle == null ? 1f : (float) Math.sin(Math.toRadians(-skewAngle.getFloatValue() + 90)); + float aTan = (float) Math.tan(Math.toRadians(skew.getFloatValue())); + clearSkewValues(); + skewValues[0] = mCos; + skewValues[1] = mSin; + skewValues[3] = -mSin; + skewValues[4] = mCos; + skewValues[8] = 1f; + skewMatrix1.setValues(skewValues); + clearSkewValues(); + skewValues[0] = 1f; + skewValues[3] = aTan; + skewValues[4] = 1f; + skewValues[8] = 1f; + skewMatrix2.setValues(skewValues); + clearSkewValues(); + skewValues[0] = mCos; + skewValues[1] = -mSin; + skewValues[3] = mSin; + skewValues[4] = mCos; + skewValues[8] = 1; + skewMatrix3.setValues(skewValues); + skewMatrix2.preConcat(skewMatrix1); + skewMatrix3.preConcat(skewMatrix2); + + matrix.preConcat(skewMatrix3); + } + + BaseKeyframeAnimation scale = this.scale; + if (scale != null) { + ScaleXY scaleTransform = scale.getValue(); + if (scaleTransform != null && (scaleTransform.getScaleX() != 1f || scaleTransform.getScaleY() != 1f)) { + matrix.preScale(scaleTransform.getScaleX(), scaleTransform.getScaleY()); + } + } + + BaseKeyframeAnimation anchorPoint = this.anchorPoint; + if (anchorPoint != null) { + PointF anchorPointValue = anchorPoint.getValue(); + if (anchorPointValue != null && (anchorPointValue.x != 0 || anchorPointValue.y != 0)) { + matrix.preTranslate(-anchorPointValue.x, -anchorPointValue.y); + } + } + + return matrix; + } + + private void clearSkewValues() { + for (int i = 0; i < 9; i++) { + skewValues[i] = 0f; + } + } + + /** + * TODO: see if we can use this for the main {@link #getMatrix()} method. + */ + public Matrix getMatrixForRepeater(float amount) { + PointF position = this.position == null ? null : this.position.getValue(); + ScaleXY scale = this.scale == null ? null : this.scale.getValue(); + + matrix.reset(); + if (position != null) { + matrix.preTranslate(position.x * amount, position.y * amount); + } + if (scale != null) { + matrix.preScale( + (float) Math.pow(scale.getScaleX(), amount), + (float) Math.pow(scale.getScaleY(), amount)); + } + if (this.rotation != null) { + float rotation = this.rotation.getValue(); + PointF anchorPoint = this.anchorPoint == null ? null : this.anchorPoint.getValue(); + matrix.preRotate(rotation * amount, anchorPoint == null ? 0f : anchorPoint.x, anchorPoint == null ? 0f : anchorPoint.y); + } + + return matrix; + } + + /** + * Returns whether the callback was applied. + */ + @SuppressWarnings("unchecked") + public boolean applyValueCallback(T property, @Nullable LottieValueCallback callback) { + if (property == TRANSFORM_ANCHOR_POINT) { + if (anchorPoint == null) { + anchorPoint = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, new PointF()); + } else { + anchorPoint.setValueCallback((LottieValueCallback) callback); + } + } else if (property == TRANSFORM_POSITION) { + if (position == null) { + position = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, new PointF()); + } else { + position.setValueCallback((LottieValueCallback) callback); + } + } else if (property == TRANSFORM_POSITION_X && position instanceof SplitDimensionPathKeyframeAnimation) { + ((SplitDimensionPathKeyframeAnimation) position).setXValueCallback((LottieValueCallback) callback); + } else if (property == TRANSFORM_POSITION_Y && position instanceof SplitDimensionPathKeyframeAnimation) { + ((SplitDimensionPathKeyframeAnimation) position).setYValueCallback((LottieValueCallback) callback); + } else if (property == TRANSFORM_SCALE) { + if (scale == null) { + scale = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, new ScaleXY()); + } else { + scale.setValueCallback((LottieValueCallback) callback); + } + } else if (property == TRANSFORM_ROTATION) { + if (rotation == null) { + rotation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 0f); + } else { + rotation.setValueCallback((LottieValueCallback) callback); + } + } else if (property == TRANSFORM_OPACITY) { + if (opacity == null) { + opacity = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 100); + } else { + opacity.setValueCallback((LottieValueCallback) callback); + } + } else if (property == TRANSFORM_START_OPACITY) { + if (startOpacity == null) { + startOpacity = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 100f); + } else { + startOpacity.setValueCallback((LottieValueCallback) callback); + } + } else if (property == TRANSFORM_END_OPACITY) { + if (endOpacity == null) { + endOpacity = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 100f); + } else { + endOpacity.setValueCallback((LottieValueCallback) callback); + } + } else if (property == TRANSFORM_SKEW) { + if (skew == null) { + skew = new FloatKeyframeAnimation(Collections.singletonList(new Keyframe<>(0f))); + } + skew.setValueCallback((LottieValueCallback) callback); + } else if (property == TRANSFORM_SKEW_ANGLE) { + if (skewAngle == null) { + skewAngle = new FloatKeyframeAnimation(Collections.singletonList(new Keyframe<>(0f))); + } + skewAngle.setValueCallback((LottieValueCallback) callback); + } else { + return false; + } + return true; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java new file mode 100644 index 00000000..f9ddd059 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java @@ -0,0 +1,49 @@ +package com.airbnb.lottie.animation.keyframe; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.value.Keyframe; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.Collections; + +public class ValueCallbackKeyframeAnimation extends BaseKeyframeAnimation { + private final A valueCallbackValue; + + public ValueCallbackKeyframeAnimation(LottieValueCallback valueCallback) { + this(valueCallback, null); + } + + public ValueCallbackKeyframeAnimation(LottieValueCallback valueCallback, @Nullable A valueCallbackValue) { + super(Collections.emptyList()); + setValueCallback(valueCallback); + this.valueCallbackValue = valueCallbackValue; + } + + @Override public void setProgress(float progress) { + this.progress = progress; + } + + /** + * If this doesn't return 1, then {@link #setProgress(float)} will always clamp the progress + * to 0. + */ + @Override float getEndProgress() { + return 1f; + } + + @Override public void notifyListeners() { + if (this.valueCallback != null) { + super.notifyListeners(); + } + } + + @Override public A getValue() { + //noinspection ConstantConditions + return valueCallback.getValueInternal(0f, 0f, valueCallbackValue, valueCallbackValue, getProgress(), getProgress(), getProgress()); + } + + @Override A getValue(Keyframe keyframe, float keyframeProgress) { + return getValue(); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java new file mode 100644 index 00000000..7b7e10af --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.animation.keyframe; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java new file mode 100644 index 00000000..fb0fff4c --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.animation; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java new file mode 100644 index 00000000..d2b80e8a --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java @@ -0,0 +1,129 @@ +package com.airbnb.lottie.manager; + +import android.content.res.AssetManager; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.view.View; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.FontAssetDelegate; +import com.airbnb.lottie.model.Font; +import com.airbnb.lottie.model.MutablePair; +import com.airbnb.lottie.utils.Logger; + +import java.util.HashMap; +import java.util.Map; + +public class FontAssetManager { + private final MutablePair tempPair = new MutablePair<>(); + + /** + * Pair is (fontName, fontStyle) + */ + private final Map, Typeface> fontMap = new HashMap<>(); + /** + * Map of font families to their fonts. Necessary to create a font with a different style + */ + private final Map fontFamilies = new HashMap<>(); + private final AssetManager assetManager; + @Nullable private FontAssetDelegate delegate; + private String defaultFontFileExtension = ".ttf"; + + public FontAssetManager(Drawable.Callback callback, @Nullable FontAssetDelegate delegate) { + this.delegate = delegate; + if (!(callback instanceof View)) { + Logger.warning("LottieDrawable must be inside of a view for images to work."); + assetManager = null; + return; + } + + assetManager = ((View) callback).getContext().getAssets(); + } + + public void setDelegate(@Nullable FontAssetDelegate assetDelegate) { + this.delegate = assetDelegate; + } + + /** + * Sets the default file extension (include the `.`). + *

+ * e.g. `.ttf` `.otf` + *

+ * Defaults to `.ttf` + */ + @SuppressWarnings("unused") public void setDefaultFontFileExtension(String defaultFontFileExtension) { + this.defaultFontFileExtension = defaultFontFileExtension; + } + + public Typeface getTypeface(Font font) { + tempPair.set(font.getFamily(), font.getStyle()); + Typeface typeface = fontMap.get(tempPair); + if (typeface != null) { + return typeface; + } + Typeface typefaceWithDefaultStyle = getFontFamily(font); + typeface = typefaceForStyle(typefaceWithDefaultStyle, font.getStyle()); + fontMap.put(tempPair, typeface); + return typeface; + } + + private Typeface getFontFamily(Font font) { + String fontFamily = font.getFamily(); + Typeface defaultTypeface = fontFamilies.get(fontFamily); + if (defaultTypeface != null) { + return defaultTypeface; + } + + Typeface typeface = null; + String fontStyle = font.getStyle(); + String fontName = font.getName(); + if (delegate != null) { + typeface = delegate.fetchFont(fontFamily, fontStyle, fontName); + if (typeface == null) { + typeface = delegate.fetchFont(fontFamily); + } + } + + if (delegate != null && typeface == null) { + String path = delegate.getFontPath(fontFamily, fontStyle, fontName); + if (path == null) { + path = delegate.getFontPath(fontFamily); + } + if (path != null) { + typeface = Typeface.createFromAsset(assetManager, path); + } + } + + if (font.getTypeface() != null) { + return font.getTypeface(); + } + + if (typeface == null) { + String path = "fonts/" + fontFamily + defaultFontFileExtension; + typeface = Typeface.createFromAsset(assetManager, path); + } + + fontFamilies.put(fontFamily, typeface); + return typeface; + } + + private Typeface typefaceForStyle(Typeface typeface, String style) { + int styleInt = Typeface.NORMAL; + boolean containsItalic = style.contains("Italic"); + boolean containsBold = style.contains("Bold"); + if (containsItalic && containsBold) { + styleInt = Typeface.BOLD_ITALIC; + } else if (containsItalic) { + styleInt = Typeface.ITALIC; + } else if (containsBold) { + styleInt = Typeface.BOLD; + } + + if (typeface.getStyle() == styleInt) { + return typeface; + } + + return Typeface.create(typeface, styleInt); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java new file mode 100644 index 00000000..fb491ca5 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java @@ -0,0 +1,151 @@ +package com.airbnb.lottie.manager; + +import android.app.Application; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; +import android.util.Base64; +import android.view.View; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.ImageAssetDelegate; +import com.airbnb.lottie.LottieImageAsset; +import com.airbnb.lottie.utils.Logger; +import com.airbnb.lottie.utils.Utils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +public class ImageAssetManager { + private static final Object bitmapHashLock = new Object(); + @Nullable private final Context context; + private final String imagesFolder; + @Nullable private ImageAssetDelegate delegate; + private final Map imageAssets; + + public ImageAssetManager(Drawable.Callback callback, String imagesFolder, + ImageAssetDelegate delegate, Map imageAssets) { + if (!TextUtils.isEmpty(imagesFolder) && imagesFolder.charAt(imagesFolder.length() - 1) != '/') { + this.imagesFolder = imagesFolder + '/'; + } else { + this.imagesFolder = imagesFolder; + } + this.imageAssets = imageAssets; + setDelegate(delegate); + if (!(callback instanceof View)) { + context = null; + return; + } + + context = ((View) callback).getContext().getApplicationContext(); + } + + public void setDelegate(@Nullable ImageAssetDelegate assetDelegate) { + this.delegate = assetDelegate; + } + + /** + * Returns the previously set bitmap or null. + */ + @Nullable public Bitmap updateBitmap(String id, @Nullable Bitmap bitmap) { + if (bitmap == null) { + LottieImageAsset asset = imageAssets.get(id); + Bitmap ret = asset.getBitmap(); + asset.setBitmap(null); + return ret; + } + Bitmap prevBitmap = imageAssets.get(id).getBitmap(); + putBitmap(id, bitmap); + return prevBitmap; + } + + @Nullable public LottieImageAsset getImageAssetById(String id) { + return imageAssets.get(id); + } + + @Nullable public Bitmap bitmapForId(String id) { + LottieImageAsset asset = imageAssets.get(id); + if (asset == null) { + return null; + } + + Bitmap bitmap = asset.getBitmap(); + if (bitmap != null) { + return bitmap; + } + + if (delegate != null) { + bitmap = delegate.fetchBitmap(asset); + if (bitmap != null) { + putBitmap(id, bitmap); + } + return bitmap; + } + Context context = this.context; + if (context == null) { + // If there is no context, the image has to be embedded or provided via + // a delegate. + return null; + } + + String filename = asset.getFileName(); + BitmapFactory.Options opts = new BitmapFactory.Options(); + opts.inScaled = true; + opts.inDensity = 160; + + if (filename.startsWith("data:") && filename.indexOf("base64,") > 0) { + // Contents look like a base64 data URI, with the format data:image/png;base64,. + byte[] data; + try { + data = Base64.decode(filename.substring(filename.indexOf(',') + 1), Base64.DEFAULT); + } catch (IllegalArgumentException e) { + Logger.warning("data URL did not have correct base64 format.", e); + return null; + } + bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opts); + Bitmap resizedBitmap = Utils.resizeBitmapIfNeeded(bitmap, asset.getWidth(), asset.getHeight()); + return putBitmap(id, resizedBitmap); + } + + InputStream is; + try { + if (TextUtils.isEmpty(imagesFolder)) { + throw new IllegalStateException("You must set an images folder before loading an image." + + " Set it with LottieComposition#setImagesFolder or LottieDrawable#setImagesFolder"); + } + is = context.getAssets().open(imagesFolder + filename); + } catch (IOException e) { + Logger.warning("Unable to open asset.", e); + return null; + } + + try { + bitmap = BitmapFactory.decodeStream(is, null, opts); + } catch (IllegalArgumentException e) { + Logger.warning("Unable to decode image `" + id + "`.", e); + return null; + } + if (bitmap == null) { + Logger.warning("Decoded image `" + id + "` is null."); + return null; + } + bitmap = Utils.resizeBitmapIfNeeded(bitmap, asset.getWidth(), asset.getHeight()); + return putBitmap(id, bitmap); + } + + public boolean hasSameContext(Context context) { + Context contextToCompare = this.context instanceof Application ? context.getApplicationContext() : context; + return contextToCompare == this.context; + } + + private Bitmap putBitmap(String key, @Nullable Bitmap bitmap) { + synchronized (bitmapHashLock) { + imageAssets.get(key).setBitmap(bitmap); + return bitmap; + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java new file mode 100644 index 00000000..23aa8c70 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.manager; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java new file mode 100644 index 00000000..ba4fa024 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java @@ -0,0 +1,91 @@ +package com.airbnb.lottie.model; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import android.annotation.SuppressLint; +import android.graphics.PointF; + +import androidx.annotation.NonNull; +import androidx.annotation.RestrictTo; + +/** + * One cubic path operation. CubicCurveData is structured such that it is easy to iterate through + * it and build a path. However, it is modeled differently than most path operations. + * + * CubicCurveData + * | - vertex + * | / + * | cp1 cp2 + * | / + * | | + * | / + * -------------------------- + * + * When incrementally building a path, it will already have a "current point" so that is + * not captured in this data structure. + * The control points here represent {@link android.graphics.Path#cubicTo(float, float, float, float, float, float)}. + * + * Most path operations are centered around a vertex and its in control point and out control point like this: + * | outCp + * | / + * | | + * | v + * | / + * | inCp + * -------------------------- + */ +@RestrictTo(LIBRARY) +public class CubicCurveData { + private final PointF controlPoint1; + private final PointF controlPoint2; + private final PointF vertex; + + public CubicCurveData() { + controlPoint1 = new PointF(); + controlPoint2 = new PointF(); + vertex = new PointF(); + } + + public CubicCurveData(PointF controlPoint1, PointF controlPoint2, PointF vertex) { + this.controlPoint1 = controlPoint1; + this.controlPoint2 = controlPoint2; + this.vertex = vertex; + } + + public void setControlPoint1(float x, float y) { + controlPoint1.set(x, y); + } + + public PointF getControlPoint1() { + return controlPoint1; + } + + public void setControlPoint2(float x, float y) { + controlPoint2.set(x, y); + } + + public PointF getControlPoint2() { + return controlPoint2; + } + + public void setVertex(float x, float y) { + vertex.set(x, y); + } + + public void setFrom(CubicCurveData curveData) { + setVertex(curveData.vertex.x, curveData.vertex.y); + setControlPoint1(curveData.controlPoint1.x, curveData.controlPoint1.y); + setControlPoint2(curveData.controlPoint2.x, curveData.controlPoint2.y); + } + + public PointF getVertex() { + return vertex; + } + + @SuppressLint("DefaultLocale") + @NonNull + @Override public String toString() { + return String.format("v=%.2f,%.2f cp1=%.2f,%.2f cp2=%.2f,%.2f", + vertex.x, vertex.y, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java new file mode 100644 index 00000000..3b6cda15 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java @@ -0,0 +1,76 @@ +package com.airbnb.lottie.model; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import android.graphics.PointF; + +import androidx.annotation.ColorInt; +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; + +@RestrictTo(LIBRARY) +public class DocumentData { + + public enum Justification { + LEFT_ALIGN, + RIGHT_ALIGN, + CENTER + } + + public String text; + public String fontName; + public float size; + public Justification justification; + public int tracking; + /** Extra space in between lines. */ + public float lineHeight; + public float baselineShift; + @ColorInt public int color; + @ColorInt public int strokeColor; + public float strokeWidth; + public boolean strokeOverFill; + @Nullable public PointF boxPosition; + @Nullable public PointF boxSize; + + + public DocumentData(String text, String fontName, float size, Justification justification, int tracking, + float lineHeight, float baselineShift, @ColorInt int color, @ColorInt int strokeColor, + float strokeWidth, boolean strokeOverFill, PointF boxPosition, PointF boxSize) { + set(text, fontName, size, justification, tracking, lineHeight, baselineShift, color, strokeColor, strokeWidth, strokeOverFill, boxPosition, boxSize); + } + + public DocumentData() { + } + + public void set(String text, String fontName, float size, Justification justification, int tracking, + float lineHeight, float baselineShift, @ColorInt int color, @ColorInt int strokeColor, + float strokeWidth, boolean strokeOverFill, PointF boxPosition, PointF boxSize) { + this.text = text; + this.fontName = fontName; + this.size = size; + this.justification = justification; + this.tracking = tracking; + this.lineHeight = lineHeight; + this.baselineShift = baselineShift; + this.color = color; + this.strokeColor = strokeColor; + this.strokeWidth = strokeWidth; + this.strokeOverFill = strokeOverFill; + this.boxPosition = boxPosition; + this.boxSize = boxSize; + } + + @Override public int hashCode() { + int result; + long temp; + result = text.hashCode(); + result = 31 * result + fontName.hashCode(); + result = (int) (31 * result + size); + result = 31 * result + justification.ordinal(); + result = 31 * result + tracking; + temp = Float.floatToRawIntBits(lineHeight); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + result = 31 * result + color; + return result; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java new file mode 100644 index 00000000..5aa3d459 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java @@ -0,0 +1,52 @@ +package com.airbnb.lottie.model; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import android.graphics.Typeface; + +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; + +@RestrictTo(LIBRARY) +public class Font { + + private final String family; + private final String name; + private final String style; + private final float ascent; + + @Nullable + private Typeface typeface; + + public Font(String family, String name, String style, float ascent) { + this.family = family; + this.name = name; + this.style = style; + this.ascent = ascent; + } + + @SuppressWarnings("unused") public String getFamily() { + return family; + } + + public String getName() { + return name; + } + + public String getStyle() { + return style; + } + + @SuppressWarnings("unused") float getAscent() { + return ascent; + } + + @Nullable + public Typeface getTypeface() { + return typeface; + } + + public void setTypeface(@Nullable Typeface typeface) { + this.typeface = typeface; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java new file mode 100644 index 00000000..12c60eb6 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java @@ -0,0 +1,49 @@ +package com.airbnb.lottie.model; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; + +import com.airbnb.lottie.model.content.ShapeGroup; + +import java.util.List; + +@RestrictTo(LIBRARY) +public class FontCharacter { + + public static int hashFor(char character, String fontFamily, String style) { + int result = (int) character; + result = 31 * result + fontFamily.hashCode(); + result = 31 * result + style.hashCode(); + return result; + } + + private final List shapes; + private final char character; + private final double size; + private final double width; + private final String style; + private final String fontFamily; + + public FontCharacter(List shapes, char character, double size, + double width, String style, String fontFamily) { + this.shapes = shapes; + this.character = character; + this.size = size; + this.width = width; + this.style = style; + this.fontFamily = fontFamily; + } + + public List getShapes() { + return shapes; + } + + public double getWidth() { + return width; + } + + @Override public int hashCode() { + return hashFor(character, fontFamily, style); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java new file mode 100644 index 00000000..8c110faa --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java @@ -0,0 +1,243 @@ +package com.airbnb.lottie.model; + +import androidx.annotation.CheckResult; +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Defines which content to target. + * The keypath can contain wildcards ('*') with match exactly 1 item. + * or globstars ('**') which match 0 or more items. or KeyPath.COMPOSITION + * to represent the root composition layer. + *

+ * For example, if your content were arranged like this: + * Gabriel (Shape Layer) + * Body (Shape Group) + * Left Hand (Shape) + * Fill (Fill) + * Transform (Transform) + * ... + * Brandon (Shape Layer) + * Body (Shape Group) + * Left Hand (Shape) + * Fill (Fill) + * Transform (Transform) + * ... + *

+ *

+ * You could: + * Match Gabriel left hand fill: + * new KeyPath("Gabriel", "Body", "Left Hand", "Fill"); + * Match Gabriel and Brandon's left hand fill: + * new KeyPath("*", "Body", Left Hand", "Fill"); + * Match anything with the name Fill: + * new KeyPath("**", "Fill"); + * Target the the root composition layer: + * KeyPath.COMPOSITION + *

+ *

+ * NOTE: Content that are part of merge paths or repeaters cannot currently be resolved with + * a {@link KeyPath}. This may be fixed in the future. + */ +public class KeyPath { + /** + * A singleton KeyPath that targets on the root composition layer. + * This is useful if you want to apply transformer to the animation as a whole. + */ + public final static KeyPath COMPOSITION = new KeyPath("COMPOSITION"); + + private final List keys; + @Nullable private KeyPathElement resolvedElement; + + public KeyPath(String... keys) { + this.keys = Arrays.asList(keys); + } + + /** + * Copy constructor. Copies keys as well. + */ + private KeyPath(KeyPath keyPath) { + keys = new ArrayList<>(keyPath.keys); + resolvedElement = keyPath.resolvedElement; + } + + /** + * Returns a new KeyPath with the key added. + * This is used during keypath resolution. Children normally don't know about all of their parent + * elements so this is used to keep track of the fully qualified keypath. + * This returns a key keypath because during resolution, the full keypath element tree is walked + * and if this modified the original copy, it would remain after popping back up the element tree. + */ + @CheckResult + @RestrictTo(RestrictTo.Scope.LIBRARY) + public KeyPath addKey(String key) { + KeyPath newKeyPath = new KeyPath(this); + newKeyPath.keys.add(key); + return newKeyPath; + } + + /** + * Return a new KeyPath with the element resolved to the specified {@link KeyPathElement}. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY) + public KeyPath resolve(KeyPathElement element) { + KeyPath keyPath = new KeyPath(this); + keyPath.resolvedElement = element; + return keyPath; + } + + /** + * Returns a {@link KeyPathElement} that this has been resolved to. KeyPaths get resolved with + * resolveKeyPath on LottieDrawable or LottieAnimationView. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY) + @Nullable + public KeyPathElement getResolvedElement() { + return resolvedElement; + } + + /** + * Returns whether they key matches at the specified depth. + */ + @SuppressWarnings("RedundantIfStatement") + @RestrictTo(RestrictTo.Scope.LIBRARY) + public boolean matches(String key, int depth) { + if (isContainer(key)) { + // This is an artificial layer we programatically create. + return true; + } + if (depth >= keys.size()) { + return false; + } + if (keys.get(depth).equals(key) || + keys.get(depth).equals("**") || + keys.get(depth).equals("*")) { + return true; + } + return false; + } + + /** + * For a given key and depth, returns how much the depth should be incremented by when + * resolving a keypath to children. + *

+ * This can be 0 or 2 when there is a globstar and the next key either matches or doesn't match + * the current key. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY) + public int incrementDepthBy(String key, int depth) { + if (isContainer(key)) { + // If it's a container then we added programatically and it isn't a part of the keypath. + return 0; + } + if (!keys.get(depth).equals("**")) { + // If it's not a globstar then it is part of the keypath. + return 1; + } + if (depth == keys.size() - 1) { + // The last key is a globstar. + return 0; + } + if (keys.get(depth + 1).equals(key)) { + // We are a globstar and the next key is our current key so consume both. + return 2; + } + return 0; + } + + /** + * Returns whether the key at specified depth is fully specific enough to match the full set of + * keys in this keypath. + */ + @RestrictTo(RestrictTo.Scope.LIBRARY) + public boolean fullyResolvesTo(String key, int depth) { + if (depth >= keys.size()) { + return false; + } + boolean isLastDepth = depth == keys.size() - 1; + String keyAtDepth = keys.get(depth); + boolean isGlobstar = keyAtDepth.equals("**"); + + if (!isGlobstar) { + boolean matches = keyAtDepth.equals(key) || keyAtDepth.equals("*"); + return (isLastDepth || (depth == keys.size() - 2 && endsWithGlobstar())) && matches; + } + + boolean isGlobstarButNextKeyMatches = !isLastDepth && keys.get(depth + 1).equals(key); + if (isGlobstarButNextKeyMatches) { + return depth == keys.size() - 2 || + (depth == keys.size() - 3 && endsWithGlobstar()); + } + + if (isLastDepth) { + return true; + } + if (depth + 1 < keys.size() - 1) { + // We are a globstar but there is more than 1 key after the globstar we we can't fully match. + return false; + } + // Return whether the next key (which we now know is the last one) is the same as the current + // key. + return keys.get(depth + 1).equals(key); + } + + /** + * Returns whether the keypath resolution should propagate to children. Some keypaths resolve + * to content other than leaf contents (such as a layer or content group transform) so sometimes + * this will return false. + */ + @SuppressWarnings("SimplifiableIfStatement") + @RestrictTo(RestrictTo.Scope.LIBRARY) + public boolean propagateToChildren(String key, int depth) { + if ("__container".equals(key)) { + return true; + } + return depth < keys.size() - 1 || keys.get(depth).equals("**"); + } + + /** + * We artificially create some container groups (like a root ContentGroup for the entire animation + * and for the contents of a ShapeLayer). + */ + private boolean isContainer(String key) { + return "__container".equals(key); + } + + private boolean endsWithGlobstar() { + return keys.get(keys.size() - 1).equals("**"); + } + + public String keysToString() { + return keys.toString(); + } + + @Override public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + KeyPath keyPath = (KeyPath) o; + + if (!keys.equals(keyPath.keys)) { + return false; + } + return resolvedElement != null ? resolvedElement.equals(keyPath.resolvedElement) : keyPath.resolvedElement == null; + } + + @Override public int hashCode() { + int result = keys.hashCode(); + result = 31 * result + (resolvedElement != null ? resolvedElement.hashCode() : 0); + return result; + } + + @Override public String toString() { + return "KeyPath{" + "keys=" + keys + ",resolved=" + (resolvedElement != null) + '}'; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java new file mode 100644 index 00000000..e43f600f --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java @@ -0,0 +1,41 @@ +package com.airbnb.lottie.model; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; + +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.List; + +/** + * Any item that can be a part of a {@link KeyPath} should implement this. + */ +@RestrictTo(LIBRARY) +public interface KeyPathElement { + + /** + * Called recursively during keypath resolution. + *

+ * The overridden method should just call: + * MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); + * + * @param keyPath The full keypath being resolved. + * @param depth The current depth that this element should be checked at in the keypath. + * @param accumulator A list of fully resolved keypaths. If this element fully matches the + * keypath then it should add itself to this list. + * @param currentPartialKeyPath A keypath that contains all parent element of this one. + * This element should create a copy of this and append itself + * with KeyPath#addKey when it adds itself to the accumulator + * or propagates resolution to its children. + */ + void resolveKeyPath( + KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath); + + /** + * The overridden method should handle appropriate properties and set value callbacks on their + * animations. + */ + void addValueCallback(T property, @Nullable LottieValueCallback callback); +} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java new file mode 100644 index 00000000..cfa897b1 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java @@ -0,0 +1,50 @@ +package com.airbnb.lottie.model; + +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; +import androidx.annotation.VisibleForTesting; +import androidx.collection.LruCache; + +import com.airbnb.lottie.LottieComposition; + +@RestrictTo(RestrictTo.Scope.LIBRARY) +public class LottieCompositionCache { + + private static final LottieCompositionCache INSTANCE = new LottieCompositionCache(); + + public static LottieCompositionCache getInstance() { + return INSTANCE; + } + + private final LruCache cache = new LruCache<>(20); + + @VisibleForTesting LottieCompositionCache() { + } + + @Nullable + public LottieComposition get(@Nullable String cacheKey) { + if (cacheKey == null) { + return null; + } + return cache.get(cacheKey); + } + + public void put(@Nullable String cacheKey, LottieComposition composition) { + if (cacheKey == null) { + return; + } + cache.put(cacheKey, composition); + } + + public void clear() { + cache.evictAll(); + } + + /** + * Set the maximum number of compositions to keep cached in memory. + * This must be {@literal >} 0. + */ + public void resize(int size) { + cache.resize(size); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java new file mode 100644 index 00000000..a8ec9035 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java @@ -0,0 +1,37 @@ +package com.airbnb.lottie.model; + +public class Marker { + private static final String CARRIAGE_RETURN = "\r"; + + private final String name; + public final float startFrame; + public final float durationFrames; + + public Marker(String name, float startFrame, float durationFrames) { + this.name = name; + this.durationFrames = durationFrames; + this.startFrame = startFrame; + } + + public String getName() { + return name; + } + + public float getStartFrame() { + return startFrame; + } + + public float getDurationFrames() { + return durationFrames; + } + + public boolean matchesName(String name) { + if (this.name.equalsIgnoreCase(name)) { + return true; + } + + // It is easy for a designer to accidentally include an extra newline which will cause the name to not match what they would + // expect. This is a convenience to precent unneccesary confusion. + return this.name.endsWith(CARRIAGE_RETURN) && this.name.substring(0, this.name.length() - 1).equalsIgnoreCase(name); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java new file mode 100644 index 00000000..ea7e473c --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java @@ -0,0 +1,57 @@ +package com.airbnb.lottie.model; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.Nullable; +import androidx.annotation.RestrictTo; +import androidx.core.util.Pair; + +/** + * Non final version of {@link Pair}. + */ +@RestrictTo(LIBRARY) +public class MutablePair { + @Nullable T first; + @Nullable T second; + + public void set(T first, T second) { + this.first = first; + this.second = second; + } + + /** + * Checks the two objects for equality by delegating to their respective + * {@link Object#equals(Object)} methods. + * + * @param o the {@link Pair} to which this one is to be checked for equality + * @return true if the underlying objects of the Pair are both considered + * equal + */ + @Override + public boolean equals(Object o) { + if (!(o instanceof Pair)) { + return false; + } + Pair p = (Pair) o; + return objectsEqual(p.first, first) && objectsEqual(p.second, second); + } + + private static boolean objectsEqual(Object a, Object b) { + return a == b || (a != null && a.equals(b)); + } + + /** + * Compute a hash code using the hash codes of the underlying objects + * + * @return a hashcode of the Pair + */ + @Override + public int hashCode() { + return (first == null ? 0 : first.hashCode()) ^ (second == null ? 0 : second.hashCode()); + } + + @Override + public String toString() { + return "Pair{" + first + " " + second + "}"; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java new file mode 100644 index 00000000..fee7b662 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java @@ -0,0 +1,17 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatableColorValue extends BaseAnimatableValue { + public AnimatableColorValue(List> keyframes) { + super(keyframes); + } + + @Override public BaseKeyframeAnimation createAnimation() { + return new ColorKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java new file mode 100644 index 00000000..c2975da7 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java @@ -0,0 +1,18 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatableFloatValue extends BaseAnimatableValue { + + public AnimatableFloatValue(List> keyframes) { + super(keyframes); + } + + @Override public BaseKeyframeAnimation createAnimation() { + return new FloatKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java new file mode 100644 index 00000000..963b7ff1 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java @@ -0,0 +1,56 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.GradientColorKeyframeAnimation; +import com.airbnb.lottie.model.content.GradientColor; +import com.airbnb.lottie.value.Keyframe; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class AnimatableGradientColorValue extends BaseAnimatableValue { + public AnimatableGradientColorValue(List> keyframes) { + super(ensureInterpolatableKeyframes(keyframes)); + } + + private static List> ensureInterpolatableKeyframes(List> keyframes) { + for (int i = 0; i < keyframes.size(); i++) { + keyframes.set(i, ensureInterpolatableKeyframe(keyframes.get(i))); + } + return keyframes; + } + + private static Keyframe ensureInterpolatableKeyframe(Keyframe keyframe) { + GradientColor startValue = keyframe.startValue; + GradientColor endValue = keyframe.endValue; + if (startValue == null || endValue == null || startValue.getPositions().length == endValue.getPositions().length) { + return keyframe; + } + float[] mergedPositions = mergePositions(startValue.getPositions(), endValue.getPositions()); + // The start/end has opacity stops which required adding extra positions in between the existing colors. + return keyframe.copyWith(startValue.copyWithPositions(mergedPositions), endValue.copyWithPositions(mergedPositions)); + } + + static float[] mergePositions(float[] startPositions, float[] endPositions) { + float[] mergedArray = new float[startPositions.length + endPositions.length]; + System.arraycopy(startPositions, 0, mergedArray, 0, startPositions.length); + System.arraycopy(endPositions, 0, mergedArray, startPositions.length, endPositions.length); + Arrays.sort(mergedArray); + int uniqueValues = 0; + float lastValue = Float.NaN; + for (int i = 0; i < mergedArray.length; i++) { + if (mergedArray[i] != lastValue) { + mergedArray[uniqueValues] = mergedArray[i]; + uniqueValues++; + lastValue = mergedArray[i]; + } + } + return Arrays.copyOfRange(mergedArray, 0, uniqueValues); + } + + @Override public BaseKeyframeAnimation createAnimation() { + return new GradientColorKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java new file mode 100644 index 00000000..54fb03b8 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java @@ -0,0 +1,18 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatableIntegerValue extends BaseAnimatableValue { + + public AnimatableIntegerValue(List> keyframes) { + super(keyframes); + } + + @Override public BaseKeyframeAnimation createAnimation() { + return new IntegerKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java new file mode 100644 index 00000000..67a01320 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java @@ -0,0 +1,36 @@ +package com.airbnb.lottie.model.animatable; + +import android.graphics.PointF; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.PathKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.PointKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatablePathValue implements AnimatableValue { + private final List> keyframes; + + public AnimatablePathValue(List> keyframes) { + this.keyframes = keyframes; + } + + @Override + public List> getKeyframes() { + return keyframes; + } + + @Override + public boolean isStatic() { + return keyframes.size() == 1 && keyframes.get(0).isStatic(); + } + + @Override + public BaseKeyframeAnimation createAnimation() { + if (keyframes.get(0).isStatic()) { + return new PointKeyframeAnimation(keyframes); + } + return new PathKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java new file mode 100644 index 00000000..867040a1 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java @@ -0,0 +1,19 @@ +package com.airbnb.lottie.model.animatable; + +import android.graphics.PointF; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.PointKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatablePointValue extends BaseAnimatableValue { + public AnimatablePointValue(List> keyframes) { + super(keyframes); + } + + @Override public BaseKeyframeAnimation createAnimation() { + return new PointKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java new file mode 100644 index 00000000..5bd57b0c --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java @@ -0,0 +1,23 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ScaleKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; +import com.airbnb.lottie.value.ScaleXY; + +import java.util.List; + +public class AnimatableScaleValue extends BaseAnimatableValue { + + public AnimatableScaleValue(ScaleXY value) { + super(value); + } + + public AnimatableScaleValue(List> keyframes) { + super(keyframes); + } + + @Override public BaseKeyframeAnimation createAnimation() { + return new ScaleKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java new file mode 100644 index 00000000..8db80d6c --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java @@ -0,0 +1,20 @@ +package com.airbnb.lottie.model.animatable; + +import android.graphics.Path; + +import com.airbnb.lottie.animation.keyframe.ShapeKeyframeAnimation; +import com.airbnb.lottie.model.content.ShapeData; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatableShapeValue extends BaseAnimatableValue { + + public AnimatableShapeValue(List> keyframes) { + super(keyframes); + } + + @Override public ShapeKeyframeAnimation createAnimation() { + return new ShapeKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java new file mode 100644 index 00000000..f046b53c --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java @@ -0,0 +1,36 @@ +package com.airbnb.lottie.model.animatable; + +import android.graphics.PointF; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.SplitDimensionPathKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatableSplitDimensionPathValue implements AnimatableValue { + private final AnimatableFloatValue animatableXDimension; + private final AnimatableFloatValue animatableYDimension; + + public AnimatableSplitDimensionPathValue( + AnimatableFloatValue animatableXDimension, + AnimatableFloatValue animatableYDimension) { + this.animatableXDimension = animatableXDimension; + this.animatableYDimension = animatableYDimension; + } + + @Override + public List> getKeyframes() { + throw new UnsupportedOperationException("Cannot call getKeyframes on AnimatableSplitDimensionPathValue."); + } + + @Override + public boolean isStatic() { + return animatableXDimension.isStatic() && animatableYDimension.isStatic(); + } + + @Override public BaseKeyframeAnimation createAnimation() { + return new SplitDimensionPathKeyframeAnimation( + animatableXDimension.createAnimation(), animatableYDimension.createAnimation()); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java new file mode 100644 index 00000000..231a2962 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java @@ -0,0 +1,18 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.animation.keyframe.TextKeyframeAnimation; +import com.airbnb.lottie.model.DocumentData; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public class AnimatableTextFrame extends BaseAnimatableValue { + + public AnimatableTextFrame(List> keyframes) { + super(keyframes); + } + + @Override public TextKeyframeAnimation createAnimation() { + return new TextKeyframeAnimation(keyframes); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java new file mode 100644 index 00000000..1b72bb30 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java @@ -0,0 +1,20 @@ +package com.airbnb.lottie.model.animatable; + +import androidx.annotation.Nullable; + +public class AnimatableTextProperties { + + @Nullable public final AnimatableColorValue color; + @Nullable public final AnimatableColorValue stroke; + @Nullable public final AnimatableFloatValue strokeWidth; + @Nullable public final AnimatableFloatValue tracking; + + public AnimatableTextProperties(@Nullable AnimatableColorValue color, + @Nullable AnimatableColorValue stroke, @Nullable AnimatableFloatValue strokeWidth, + @Nullable AnimatableFloatValue tracking) { + this.color = color; + this.stroke = stroke; + this.strokeWidth = strokeWidth; + this.tracking = tracking; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java new file mode 100644 index 00000000..d88e11f4 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java @@ -0,0 +1,124 @@ +package com.airbnb.lottie.model.animatable; + +import android.graphics.PointF; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.ModifierContent; +import com.airbnb.lottie.animation.keyframe.TransformKeyframeAnimation; +import com.airbnb.lottie.model.content.ContentModel; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class AnimatableTransform implements ModifierContent, ContentModel { + @Nullable + private final AnimatablePathValue anchorPoint; + @Nullable + private final AnimatableValue position; + @Nullable + private final AnimatableScaleValue scale; + @Nullable + private final AnimatableFloatValue rotation; + @Nullable + private final AnimatableIntegerValue opacity; + @Nullable + private final AnimatableFloatValue skew; + @Nullable + private final AnimatableFloatValue skewAngle; + + // Used for repeaters + @Nullable + private final AnimatableFloatValue startOpacity; + @Nullable + private final AnimatableFloatValue endOpacity; + + private boolean autoOrient = false; + + public AnimatableTransform() { + this(null, null, null, null, null, null, null, null, null); + } + + public AnimatableTransform(@Nullable AnimatablePathValue anchorPoint, + @Nullable AnimatableValue position, @Nullable AnimatableScaleValue scale, + @Nullable AnimatableFloatValue rotation, @Nullable AnimatableIntegerValue opacity, + @Nullable AnimatableFloatValue startOpacity, @Nullable AnimatableFloatValue endOpacity, + @Nullable AnimatableFloatValue skew, @Nullable AnimatableFloatValue skewAngle) { + this.anchorPoint = anchorPoint; + this.position = position; + this.scale = scale; + this.rotation = rotation; + this.opacity = opacity; + this.startOpacity = startOpacity; + this.endOpacity = endOpacity; + this.skew = skew; + this.skewAngle = skewAngle; + } + + /** + * This is set as a property of the layer so it is parsed and set separately. + */ + public void setAutoOrient(boolean autoOrient) { + this.autoOrient = autoOrient; + } + + @Nullable + public AnimatablePathValue getAnchorPoint() { + return anchorPoint; + } + + @Nullable + public AnimatableValue getPosition() { + return position; + } + + @Nullable + public AnimatableScaleValue getScale() { + return scale; + } + + @Nullable + public AnimatableFloatValue getRotation() { + return rotation; + } + + @Nullable + public AnimatableIntegerValue getOpacity() { + return opacity; + } + + @Nullable + public AnimatableFloatValue getStartOpacity() { + return startOpacity; + } + + @Nullable + public AnimatableFloatValue getEndOpacity() { + return endOpacity; + } + + @Nullable + public AnimatableFloatValue getSkew() { + return skew; + } + + @Nullable + public AnimatableFloatValue getSkewAngle() { + return skewAngle; + } + + public boolean isAutoOrient() { + return autoOrient; + } + + public TransformKeyframeAnimation createAnimation() { + return new TransformKeyframeAnimation(this); + } + + @Nullable + @Override + public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return null; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java new file mode 100644 index 00000000..9dcf176a --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java @@ -0,0 +1,14 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; + +public interface AnimatableValue { + List> getKeyframes(); + + boolean isStatic(); + + BaseKeyframeAnimation createAnimation(); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java new file mode 100644 index 00000000..6a5f6a74 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java @@ -0,0 +1,39 @@ +package com.airbnb.lottie.model.animatable; + +import com.airbnb.lottie.value.Keyframe; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +abstract class BaseAnimatableValue implements AnimatableValue { + final List> keyframes; + + /** + * Create a default static animatable path. + */ + BaseAnimatableValue(V value) { + this(Collections.singletonList(new Keyframe<>(value))); + } + + BaseAnimatableValue(List> keyframes) { + this.keyframes = keyframes; + } + + public List> getKeyframes() { + return keyframes; + } + + @Override + public boolean isStatic() { + return keyframes.isEmpty() || (keyframes.size() == 1 && keyframes.get(0).isStatic()); + } + + @Override public String toString() { + final StringBuilder sb = new StringBuilder(); + if (!keyframes.isEmpty()) { + sb.append("values=").append(Arrays.toString(keyframes.toArray())); + } + return sb.toString(); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java new file mode 100644 index 00000000..407730c1 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.model.animatable; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java new file mode 100644 index 00000000..82829c0b --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java @@ -0,0 +1,16 @@ +package com.airbnb.lottie.model.content; + +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; + +public class BlurEffect { + + final AnimatableFloatValue blurriness; + + public BlurEffect(AnimatableFloatValue blurriness) { + this.blurriness = blurriness; + } + + public AnimatableFloatValue getBlurriness() { + return blurriness; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java new file mode 100644 index 00000000..fd7cd23b --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java @@ -0,0 +1,52 @@ +package com.airbnb.lottie.model.content; + +import android.graphics.PointF; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.EllipseContent; +import com.airbnb.lottie.model.animatable.AnimatablePointValue; +import com.airbnb.lottie.model.animatable.AnimatableValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class CircleShape implements ContentModel { + private final String name; + private final AnimatableValue position; + private final AnimatablePointValue size; + private final boolean isReversed; + private final boolean hidden; + + public CircleShape(String name, AnimatableValue position, + AnimatablePointValue size, boolean isReversed, boolean hidden) { + this.name = name; + this.position = position; + this.size = size; + this.isReversed = isReversed; + this.hidden = hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new EllipseContent(drawable, layer, this); + } + + public String getName() { + return name; + } + + public AnimatableValue getPosition() { + return position; + } + + public AnimatablePointValue getSize() { + return size; + } + + public boolean isReversed() { + return isReversed; + } + + public boolean isHidden() { + return hidden; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java new file mode 100644 index 00000000..a5060471 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java @@ -0,0 +1,13 @@ +package com.airbnb.lottie.model.content; + + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.model.layer.BaseLayer; + +public interface ContentModel { + @Nullable Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer); +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java new file mode 100644 index 00000000..41e1e29e --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java @@ -0,0 +1,118 @@ +package com.airbnb.lottie.model.content; + +import com.airbnb.lottie.utils.GammaEvaluator; +import com.airbnb.lottie.utils.MiscUtils; + +import java.util.Arrays; + + +public class GradientColor { + private final float[] positions; + private final int[] colors; + + public GradientColor(float[] positions, int[] colors) { + this.positions = positions; + this.colors = colors; + } + + public float[] getPositions() { + return positions; + } + + public int[] getColors() { + return colors; + } + + public int getSize() { + return colors.length; + } + + public void lerp(GradientColor gc1, GradientColor gc2, float progress) { + // Fast return in case start and end is the same + // or if progress is at start/end or out of [0,1] bounds + if (gc1.equals(gc2)) { + copyFrom(gc1); + return; + } else if (progress <= 0f) { + copyFrom(gc1); + return; + } else if (progress >= 1f) { + copyFrom(gc2); + return; + } + + if (gc1.colors.length != gc2.colors.length) { + throw new IllegalArgumentException("Cannot interpolate between gradients. Lengths vary (" + + gc1.colors.length + " vs " + gc2.colors.length + ")"); + } + + for (int i = 0; i < gc1.colors.length; i++) { + positions[i] = MiscUtils.lerp(gc1.positions[i], gc2.positions[i], progress); + colors[i] = GammaEvaluator.evaluate(progress, gc1.colors[i], gc2.colors[i]); + } + + // Not all keyframes that this GradientColor are used for will have the same length. + // AnimatableGradientColorValue.ensureInterpolatableKeyframes may add extra positions + // for some keyframes but not others to ensure that it is interpolatable. + // If there are extra positions here, just duplicate the last value in the gradient. + for (int i = gc1.colors.length; i < positions.length; i++) { + positions[i] = positions[gc1.colors.length - 1]; + colors[i] = colors[gc1.colors.length - 1]; + } + } + + public GradientColor copyWithPositions(float[] positions) { + int[] colors = new int[positions.length]; + for (int i = 0; i < positions.length; i++) { + colors[i] = getColorForPosition(positions[i]); + } + return new GradientColor(positions, colors); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GradientColor that = (GradientColor) o; + return Arrays.equals(positions, that.positions) && Arrays.equals(colors, that.colors); + } + + @Override + public int hashCode() { + int result = Arrays.hashCode(positions); + result = 31 * result + Arrays.hashCode(colors); + return result; + } + + private int getColorForPosition(float position) { + int existingIndex = Arrays.binarySearch(positions, position); + if (existingIndex >= 0) { + return colors[existingIndex]; + } + // binarySearch returns -insertionPoint - 1 if it is not found. + int insertionPoint = -(existingIndex + 1); + if (insertionPoint == 0) { + return colors[0]; + } else if (insertionPoint == colors.length - 1) { + return colors[colors.length - 1]; + } + float startPosition = positions[insertionPoint - 1]; + float endPosition = positions[insertionPoint]; + int startColor = colors[insertionPoint - 1]; + int endColor = colors[insertionPoint]; + + float fraction = (position - startPosition) / (endPosition - startPosition); + return GammaEvaluator.evaluate(fraction, startColor, endColor); + } + + private void copyFrom(GradientColor other) { + for (int i = 0; i < other.colors.length; i++) { + positions[i] = other.positions[i]; + colors[i] = other.colors[i]; + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java new file mode 100644 index 00000000..9a082809 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java @@ -0,0 +1,83 @@ +package com.airbnb.lottie.model.content; + +import android.graphics.Path; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.GradientFillContent; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.animatable.AnimatableGradientColorValue; +import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; +import com.airbnb.lottie.model.animatable.AnimatablePointValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class GradientFill implements ContentModel { + + private final GradientType gradientType; + private final Path.FillType fillType; + private final AnimatableGradientColorValue gradientColor; + private final AnimatableIntegerValue opacity; + private final AnimatablePointValue startPoint; + private final AnimatablePointValue endPoint; + private final String name; + @Nullable private final AnimatableFloatValue highlightLength; + @Nullable private final AnimatableFloatValue highlightAngle; + private final boolean hidden; + + public GradientFill(String name, GradientType gradientType, Path.FillType fillType, + AnimatableGradientColorValue gradientColor, + AnimatableIntegerValue opacity, AnimatablePointValue startPoint, + AnimatablePointValue endPoint, AnimatableFloatValue highlightLength, + AnimatableFloatValue highlightAngle, boolean hidden) { + this.gradientType = gradientType; + this.fillType = fillType; + this.gradientColor = gradientColor; + this.opacity = opacity; + this.startPoint = startPoint; + this.endPoint = endPoint; + this.name = name; + this.highlightLength = highlightLength; + this.highlightAngle = highlightAngle; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public GradientType getGradientType() { + return gradientType; + } + + public Path.FillType getFillType() { + return fillType; + } + + public AnimatableGradientColorValue getGradientColor() { + return gradientColor; + } + + public AnimatableIntegerValue getOpacity() { + return opacity; + } + + public AnimatablePointValue getStartPoint() { + return startPoint; + } + + public AnimatablePointValue getEndPoint() { + return endPoint; + } + + public boolean isHidden() { + return hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new GradientFillContent(drawable, composition, layer, this); + } + +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java new file mode 100644 index 00000000..6e4b2029 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java @@ -0,0 +1,110 @@ +package com.airbnb.lottie.model.content; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.GradientStrokeContent; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.animatable.AnimatableGradientColorValue; +import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; +import com.airbnb.lottie.model.animatable.AnimatablePointValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +import java.util.List; + +public class GradientStroke implements ContentModel { + + private final String name; + private final GradientType gradientType; + private final AnimatableGradientColorValue gradientColor; + private final AnimatableIntegerValue opacity; + private final AnimatablePointValue startPoint; + private final AnimatablePointValue endPoint; + private final AnimatableFloatValue width; + private final ShapeStroke.LineCapType capType; + private final ShapeStroke.LineJoinType joinType; + private final float miterLimit; + private final List lineDashPattern; + @Nullable private final AnimatableFloatValue dashOffset; + private final boolean hidden; + + public GradientStroke(String name, GradientType gradientType, + AnimatableGradientColorValue gradientColor, + AnimatableIntegerValue opacity, AnimatablePointValue startPoint, + AnimatablePointValue endPoint, AnimatableFloatValue width, ShapeStroke.LineCapType capType, + ShapeStroke.LineJoinType joinType, float miterLimit, + List lineDashPattern, + @Nullable AnimatableFloatValue dashOffset, boolean hidden) { + this.name = name; + this.gradientType = gradientType; + this.gradientColor = gradientColor; + this.opacity = opacity; + this.startPoint = startPoint; + this.endPoint = endPoint; + this.width = width; + this.capType = capType; + this.joinType = joinType; + this.miterLimit = miterLimit; + this.lineDashPattern = lineDashPattern; + this.dashOffset = dashOffset; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public GradientType getGradientType() { + return gradientType; + } + + public AnimatableGradientColorValue getGradientColor() { + return gradientColor; + } + + public AnimatableIntegerValue getOpacity() { + return opacity; + } + + public AnimatablePointValue getStartPoint() { + return startPoint; + } + + public AnimatablePointValue getEndPoint() { + return endPoint; + } + + public AnimatableFloatValue getWidth() { + return width; + } + + public ShapeStroke.LineCapType getCapType() { + return capType; + } + + public ShapeStroke.LineJoinType getJoinType() { + return joinType; + } + + public List getLineDashPattern() { + return lineDashPattern; + } + + @Nullable public AnimatableFloatValue getDashOffset() { + return dashOffset; + } + + public float getMiterLimit() { + return miterLimit; + } + + public boolean isHidden() { + return hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new GradientStrokeContent(drawable, layer, this); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java new file mode 100644 index 00000000..bd75fa10 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java @@ -0,0 +1,6 @@ +package com.airbnb.lottie.model.content; + +public enum GradientType { + LINEAR, + RADIAL +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java new file mode 100644 index 00000000..e1c91a0a --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java @@ -0,0 +1,68 @@ +package com.airbnb.lottie.model.content; + +import androidx.annotation.Nullable; +import androidx.core.graphics.BlendModeCompat; + +/** + * Lottie BlendMode, + * not to be confused with Paint.BlendMode in android graphics core, + * which we will rely on for rendering. + */ +public enum LBlendMode { + NORMAL, + MULTIPLY, + SCREEN, + OVERLAY, + DARKEN, + LIGHTEN, + COLOR_DODGE, + COLOR_BURN, + HARD_LIGHT, + SOFT_LIGHT, + DIFFERENCE, + EXCLUSION, + HUE, + SATURATION, + COLOR, + LUMINOSITY, + ADD, + HARD_MIX; + + @Nullable + public BlendModeCompat toNativeBlendMode() { + switch (this) { + case NORMAL: + return null; + case SCREEN: + return BlendModeCompat.SCREEN; + case OVERLAY: + return BlendModeCompat.OVERLAY; + case DARKEN: + return BlendModeCompat.DARKEN; + case LIGHTEN: + return BlendModeCompat.LIGHTEN; + case ADD: + return BlendModeCompat.PLUS; + + // Blend modes below were not added to the platform until Q. + // To prevent unexpected issues where animations look correct + // during development but silently break for users with older devices + // we won't support any of these until Q is widely used. + case MULTIPLY: + case COLOR_DODGE: + case COLOR_BURN: + case HARD_LIGHT: + case SOFT_LIGHT: + case DIFFERENCE: + case EXCLUSION: + case HUE: + case SATURATION: + case COLOR: + case LUMINOSITY: + case HARD_MIX: + default: + return null; + } + } + +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java new file mode 100644 index 00000000..f7094854 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java @@ -0,0 +1,41 @@ +package com.airbnb.lottie.model.content; + +import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; +import com.airbnb.lottie.model.animatable.AnimatableShapeValue; + +public class Mask { + public enum MaskMode { + MASK_MODE_ADD, + MASK_MODE_SUBTRACT, + MASK_MODE_INTERSECT, + MASK_MODE_NONE + } + + private final MaskMode maskMode; + private final AnimatableShapeValue maskPath; + private final AnimatableIntegerValue opacity; + private final boolean inverted; + + public Mask(MaskMode maskMode, AnimatableShapeValue maskPath, AnimatableIntegerValue opacity, boolean inverted) { + this.maskMode = maskMode; + this.maskPath = maskPath; + this.opacity = opacity; + this.inverted = inverted; + } + + public MaskMode getMaskMode() { + return maskMode; + } + + public AnimatableShapeValue getMaskPath() { + return maskPath; + } + + public AnimatableIntegerValue getOpacity() { + return opacity; + } + + public boolean isInverted() { + return inverted; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java new file mode 100644 index 00000000..315add2d --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java @@ -0,0 +1,74 @@ +package com.airbnb.lottie.model.content; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.MergePathsContent; +import com.airbnb.lottie.model.layer.BaseLayer; +import com.airbnb.lottie.utils.Logger; + + +public class MergePaths implements ContentModel { + + public enum MergePathsMode { + MERGE, + ADD, + SUBTRACT, + INTERSECT, + EXCLUDE_INTERSECTIONS; + + public static MergePathsMode forId(int id) { + switch (id) { + case 1: + return MERGE; + case 2: + return ADD; + case 3: + return SUBTRACT; + case 4: + return INTERSECT; + case 5: + return EXCLUDE_INTERSECTIONS; + default: + return MERGE; + } + } + } + + private final String name; + private final MergePathsMode mode; + private final boolean hidden; + + public MergePaths(String name, MergePathsMode mode, boolean hidden) { + this.name = name; + this.mode = mode; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public MergePathsMode getMode() { + return mode; + } + + public boolean isHidden() { + return hidden; + } + + @Override @Nullable public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + if (!drawable.enableMergePathsForKitKatAndAbove()) { + Logger.warning("Animation contains merge paths but they are disabled."); + return null; + } + return new MergePathsContent(this); + } + + @Override + public String toString() { + return "MergePaths{" + "mode=" + mode + '}'; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java new file mode 100644 index 00000000..45144221 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java @@ -0,0 +1,111 @@ +package com.airbnb.lottie.model.content; + +import android.graphics.PointF; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.PolystarContent; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.animatable.AnimatableValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class PolystarShape implements ContentModel { + public enum Type { + STAR(1), + POLYGON(2); + + private final int value; + + Type(int value) { + this.value = value; + } + + public static Type forValue(int value) { + for (Type type : Type.values()) { + if (type.value == value) { + return type; + } + } + return null; + } + } + + private final String name; + private final Type type; + private final AnimatableFloatValue points; + private final AnimatableValue position; + private final AnimatableFloatValue rotation; + private final AnimatableFloatValue innerRadius; + private final AnimatableFloatValue outerRadius; + private final AnimatableFloatValue innerRoundedness; + private final AnimatableFloatValue outerRoundedness; + private final boolean hidden; + private final boolean isReversed; + + public PolystarShape(String name, Type type, AnimatableFloatValue points, + AnimatableValue position, + AnimatableFloatValue rotation, AnimatableFloatValue innerRadius, + AnimatableFloatValue outerRadius, AnimatableFloatValue innerRoundedness, + AnimatableFloatValue outerRoundedness, boolean hidden, boolean isReversed) { + this.name = name; + this.type = type; + this.points = points; + this.position = position; + this.rotation = rotation; + this.innerRadius = innerRadius; + this.outerRadius = outerRadius; + this.innerRoundedness = innerRoundedness; + this.outerRoundedness = outerRoundedness; + this.hidden = hidden; + this.isReversed = isReversed; + } + + public String getName() { + return name; + } + + public Type getType() { + return type; + } + + public AnimatableFloatValue getPoints() { + return points; + } + + public AnimatableValue getPosition() { + return position; + } + + public AnimatableFloatValue getRotation() { + return rotation; + } + + public AnimatableFloatValue getInnerRadius() { + return innerRadius; + } + + public AnimatableFloatValue getOuterRadius() { + return outerRadius; + } + + public AnimatableFloatValue getInnerRoundedness() { + return innerRoundedness; + } + + public AnimatableFloatValue getOuterRoundedness() { + return outerRoundedness; + } + + public boolean isHidden() { + return hidden; + } + + public boolean isReversed() { + return isReversed; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new PolystarContent(drawable, layer, this); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java new file mode 100644 index 00000000..13b1f4d4 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java @@ -0,0 +1,58 @@ +package com.airbnb.lottie.model.content; + +import android.graphics.PointF; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.RectangleContent; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.animatable.AnimatableValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class RectangleShape implements ContentModel { + private final String name; + private final AnimatableValue position; + private final AnimatableValue size; + private final AnimatableFloatValue cornerRadius; + private final boolean hidden; + + public RectangleShape(String name, AnimatableValue position, + AnimatableValue size, AnimatableFloatValue cornerRadius, boolean hidden) { + this.name = name; + this.position = position; + this.size = size; + this.cornerRadius = cornerRadius; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public AnimatableFloatValue getCornerRadius() { + return cornerRadius; + } + + public AnimatableValue getSize() { + return size; + } + + public AnimatableValue getPosition() { + return position; + } + + public boolean isHidden() { + return hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new RectangleContent(drawable, layer, this); + } + + @Override public String toString() { + return "RectangleShape{position=" + position + + ", size=" + size + + '}'; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java new file mode 100644 index 00000000..f336391e --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java @@ -0,0 +1,52 @@ +package com.airbnb.lottie.model.content; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.RepeaterContent; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.animatable.AnimatableTransform; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class Repeater implements ContentModel { + private final String name; + private final AnimatableFloatValue copies; + private final AnimatableFloatValue offset; + private final AnimatableTransform transform; + private final boolean hidden; + + public Repeater(String name, AnimatableFloatValue copies, AnimatableFloatValue offset, + AnimatableTransform transform, boolean hidden) { + this.name = name; + this.copies = copies; + this.offset = offset; + this.transform = transform; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public AnimatableFloatValue getCopies() { + return copies; + } + + public AnimatableFloatValue getOffset() { + return offset; + } + + public AnimatableTransform getTransform() { + return transform; + } + + public boolean isHidden() { + return hidden; + } + + @Nullable @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new RepeaterContent(drawable, layer, this); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java new file mode 100644 index 00000000..8daa5378 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java @@ -0,0 +1,32 @@ +package com.airbnb.lottie.model.content; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.RoundedCornersContent; +import com.airbnb.lottie.model.animatable.AnimatableValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class RoundedCorners implements ContentModel { + private final String name; + private final AnimatableValue cornerRadius; + + public RoundedCorners(String name, AnimatableValue cornerRadius) { + this.name = name; + this.cornerRadius = cornerRadius; + } + + public String getName() { + return name; + } + + public AnimatableValue getCornerRadius() { + return cornerRadius; + } + + @Nullable @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new RoundedCornersContent(drawable, layer, this); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java new file mode 100644 index 00000000..a49ce9b8 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java @@ -0,0 +1,111 @@ +package com.airbnb.lottie.model.content; + +import android.graphics.PointF; + +import androidx.annotation.FloatRange; + +import com.airbnb.lottie.model.CubicCurveData; +import com.airbnb.lottie.utils.Logger; +import com.airbnb.lottie.utils.MiscUtils; + +import java.util.ArrayList; +import java.util.List; + +public class ShapeData { + private final List curves; + private PointF initialPoint; + private boolean closed; + + public ShapeData(PointF initialPoint, boolean closed, List curves) { + this.initialPoint = initialPoint; + this.closed = closed; + this.curves = new ArrayList<>(curves); + } + + public ShapeData() { + curves = new ArrayList<>(); + } + + public void setInitialPoint(float x, float y) { + if (initialPoint == null) { + initialPoint = new PointF(); + } + initialPoint.set(x, y); + } + + public PointF getInitialPoint() { + return initialPoint; + } + + public void setClosed(boolean closed) { + this.closed = closed; + } + + public boolean isClosed() { + return closed; + } + + public List getCurves() { + return curves; + } + + public void interpolateBetween(ShapeData shapeData1, ShapeData shapeData2, + @FloatRange(from = 0f, to = 1f) float percentage) { + if (initialPoint == null) { + initialPoint = new PointF(); + } + closed = shapeData1.isClosed() || shapeData2.isClosed(); + + + if (shapeData1.getCurves().size() != shapeData2.getCurves().size()) { + Logger.warning("Curves must have the same number of control points. Shape 1: " + + shapeData1.getCurves().size() + "\tShape 2: " + shapeData2.getCurves().size()); + } + + int points = Math.min(shapeData1.getCurves().size(), shapeData2.getCurves().size()); + if (curves.size() < points) { + for (int i = curves.size(); i < points; i++) { + curves.add(new CubicCurveData()); + } + } else if (curves.size() > points) { + for (int i = curves.size() - 1; i >= points; i--) { + curves.remove(curves.size() - 1); + } + } + + PointF initialPoint1 = shapeData1.getInitialPoint(); + PointF initialPoint2 = shapeData2.getInitialPoint(); + + setInitialPoint(MiscUtils.lerp(initialPoint1.x, initialPoint2.x, percentage), + MiscUtils.lerp(initialPoint1.y, initialPoint2.y, percentage)); + + for (int i = curves.size() - 1; i >= 0; i--) { + CubicCurveData curve1 = shapeData1.getCurves().get(i); + CubicCurveData curve2 = shapeData2.getCurves().get(i); + + PointF cp11 = curve1.getControlPoint1(); + PointF cp21 = curve1.getControlPoint2(); + PointF vertex1 = curve1.getVertex(); + + PointF cp12 = curve2.getControlPoint1(); + PointF cp22 = curve2.getControlPoint2(); + PointF vertex2 = curve2.getVertex(); + + curves.get(i).setControlPoint1( + MiscUtils.lerp(cp11.x, cp12.x, percentage), MiscUtils.lerp(cp11.y, cp12.y, + percentage)); + curves.get(i).setControlPoint2( + MiscUtils.lerp(cp21.x, cp22.x, percentage), MiscUtils.lerp(cp21.y, cp22.y, + percentage)); + curves.get(i).setVertex( + MiscUtils.lerp(vertex1.x, vertex2.x, percentage), MiscUtils.lerp(vertex1.y, vertex2.y, + percentage)); + } + } + + @Override public String toString() { + return "ShapeData{" + "numCurves=" + curves.size() + + "closed=" + closed + + '}'; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java new file mode 100644 index 00000000..a3364ac2 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java @@ -0,0 +1,63 @@ +package com.airbnb.lottie.model.content; + +import android.graphics.Path; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.FillContent; +import com.airbnb.lottie.model.animatable.AnimatableColorValue; +import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class ShapeFill implements ContentModel { + private final boolean fillEnabled; + private final Path.FillType fillType; + private final String name; + @Nullable private final AnimatableColorValue color; + @Nullable private final AnimatableIntegerValue opacity; + private final boolean hidden; + + public ShapeFill(String name, boolean fillEnabled, Path.FillType fillType, + @Nullable AnimatableColorValue color, @Nullable AnimatableIntegerValue opacity, boolean hidden) { + this.name = name; + this.fillEnabled = fillEnabled; + this.fillType = fillType; + this.color = color; + this.opacity = opacity; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + @Nullable public AnimatableColorValue getColor() { + return color; + } + + @Nullable public AnimatableIntegerValue getOpacity() { + return opacity; + } + + public Path.FillType getFillType() { + return fillType; + } + + public boolean isHidden() { + return hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new FillContent(drawable, layer, this); + } + + @Override + public String toString() { + return "ShapeFill{" + "color=" + + ", fillEnabled=" + fillEnabled + + '}'; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java new file mode 100644 index 00000000..5865d6ed --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java @@ -0,0 +1,42 @@ +package com.airbnb.lottie.model.content; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.ContentGroup; +import com.airbnb.lottie.model.layer.BaseLayer; + +import java.util.Arrays; +import java.util.List; + +public class ShapeGroup implements ContentModel { + private final String name; + private final List items; + private final boolean hidden; + + public ShapeGroup(String name, List items, boolean hidden) { + this.name = name; + this.items = items; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public List getItems() { + return items; + } + + public boolean isHidden() { + return hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new ContentGroup(drawable, layer, this, composition); + } + + @Override public String toString() { + return "ShapeGroup{" + "name='" + name + "\' Shapes: " + Arrays.toString(items.toArray()) + '}'; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java new file mode 100644 index 00000000..9ae952b2 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java @@ -0,0 +1,44 @@ +package com.airbnb.lottie.model.content; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.ShapeContent; +import com.airbnb.lottie.model.animatable.AnimatableShapeValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class ShapePath implements ContentModel { + private final String name; + private final int index; + private final AnimatableShapeValue shapePath; + private final boolean hidden; + + public ShapePath(String name, int index, AnimatableShapeValue shapePath, boolean hidden) { + this.name = name; + this.index = index; + this.shapePath = shapePath; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public AnimatableShapeValue getShapePath() { + return shapePath; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new ShapeContent(drawable, layer, this); + } + + public boolean isHidden() { + return hidden; + } + + @Override public String toString() { + return "ShapePath{" + "name=" + name + + ", index=" + index + + '}'; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java new file mode 100644 index 00000000..4c900585 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java @@ -0,0 +1,125 @@ +package com.airbnb.lottie.model.content; + +import android.graphics.Paint; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.StrokeContent; +import com.airbnb.lottie.model.animatable.AnimatableColorValue; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +import java.util.List; + +public class ShapeStroke implements ContentModel { + public enum LineCapType { + BUTT, + ROUND, + UNKNOWN; + + public Paint.Cap toPaintCap() { + switch (this) { + case BUTT: + return Paint.Cap.BUTT; + case ROUND: + return Paint.Cap.ROUND; + case UNKNOWN: + default: + return Paint.Cap.SQUARE; + } + } + } + + public enum LineJoinType { + MITER, + ROUND, + BEVEL; + + public Paint.Join toPaintJoin() { + switch (this) { + case BEVEL: + return Paint.Join.BEVEL; + case MITER: + return Paint.Join.MITER; + case ROUND: + return Paint.Join.ROUND; + } + return null; + } + } + + private final String name; + @Nullable private final AnimatableFloatValue offset; + private final List lineDashPattern; + private final AnimatableColorValue color; + private final AnimatableIntegerValue opacity; + private final AnimatableFloatValue width; + private final LineCapType capType; + private final LineJoinType joinType; + private final float miterLimit; + private final boolean hidden; + + public ShapeStroke(String name, @Nullable AnimatableFloatValue offset, + List lineDashPattern, AnimatableColorValue color, + AnimatableIntegerValue opacity, AnimatableFloatValue width, LineCapType capType, + LineJoinType joinType, float miterLimit, boolean hidden) { + this.name = name; + this.offset = offset; + this.lineDashPattern = lineDashPattern; + this.color = color; + this.opacity = opacity; + this.width = width; + this.capType = capType; + this.joinType = joinType; + this.miterLimit = miterLimit; + this.hidden = hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new StrokeContent(drawable, layer, this); + } + + public String getName() { + return name; + } + + public AnimatableColorValue getColor() { + return color; + } + + public AnimatableIntegerValue getOpacity() { + return opacity; + } + + public AnimatableFloatValue getWidth() { + return width; + } + + public List getLineDashPattern() { + return lineDashPattern; + } + + public AnimatableFloatValue getDashOffset() { + return offset; + } + + public LineCapType getCapType() { + return capType; + } + + public LineJoinType getJoinType() { + return joinType; + } + + public float getMiterLimit() { + return miterLimit; + } + + public boolean isHidden() { + return hidden; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java new file mode 100644 index 00000000..b86e5ed2 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java @@ -0,0 +1,76 @@ +package com.airbnb.lottie.model.content; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.TrimPathContent; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.layer.BaseLayer; + +public class ShapeTrimPath implements ContentModel { + + public enum Type { + SIMULTANEOUSLY, + INDIVIDUALLY; + + public static Type forId(int id) { + switch (id) { + case 1: + return SIMULTANEOUSLY; + case 2: + return INDIVIDUALLY; + default: + throw new IllegalArgumentException("Unknown trim path type " + id); + } + } + } + + private final String name; + private final Type type; + private final AnimatableFloatValue start; + private final AnimatableFloatValue end; + private final AnimatableFloatValue offset; + private final boolean hidden; + + public ShapeTrimPath(String name, Type type, AnimatableFloatValue start, + AnimatableFloatValue end, AnimatableFloatValue offset, boolean hidden) { + this.name = name; + this.type = type; + this.start = start; + this.end = end; + this.offset = offset; + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public Type getType() { + return type; + } + + public AnimatableFloatValue getEnd() { + return end; + } + + public AnimatableFloatValue getStart() { + return start; + } + + public AnimatableFloatValue getOffset() { + return offset; + } + + public boolean isHidden() { + return hidden; + } + + @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { + return new TrimPathContent(layer, this); + } + + @Override public String toString() { + return "Trim Path: {start: " + start + ", end: " + end + ", offset: " + offset + "}"; + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java new file mode 100644 index 00000000..3278a495 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.model.content; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java new file mode 100644 index 00000000..5a4afc01 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java @@ -0,0 +1,761 @@ +package com.airbnb.lottie.model.layer; + +import android.graphics.BlurMaskFilter; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.RectF; +import android.os.Build; + +import androidx.annotation.CallSuper; +import androidx.annotation.FloatRange; +import androidx.annotation.Nullable; + +import com.airbnb.lottie.L; +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.LPaint; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.DrawingContent; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.MaskKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.TransformKeyframeAnimation; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.KeyPathElement; +import com.airbnb.lottie.model.content.BlurEffect; +import com.airbnb.lottie.model.content.LBlendMode; +import com.airbnb.lottie.model.content.Mask; +import com.airbnb.lottie.model.content.ShapeData; +import com.airbnb.lottie.parser.DropShadowEffect; +import com.airbnb.lottie.utils.Logger; +import com.airbnb.lottie.utils.Utils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public abstract class BaseLayer + implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElement { + /** + * These flags were in Canvas but they were deprecated and removed. + * TODO: test removing these on older versions of Android. + */ + private static final int CLIP_SAVE_FLAG = 0x02; + private static final int CLIP_TO_LAYER_SAVE_FLAG = 0x10; + private static final int MATRIX_SAVE_FLAG = 0x01; + private static final int SAVE_FLAGS = CLIP_SAVE_FLAG | CLIP_TO_LAYER_SAVE_FLAG | MATRIX_SAVE_FLAG; + + @Nullable + static BaseLayer forModel( + CompositionLayer compositionLayer, Layer layerModel, LottieDrawable drawable, LottieComposition composition) { + switch (layerModel.getLayerType()) { + case SHAPE: + return new ShapeLayer(drawable, layerModel, compositionLayer, composition); + case PRE_COMP: + return new CompositionLayer(drawable, layerModel, + composition.getPrecomps(layerModel.getRefId()), composition); + case SOLID: + return new SolidLayer(drawable, layerModel); + case IMAGE: + return new ImageLayer(drawable, layerModel); + case NULL: + return new NullLayer(drawable, layerModel); + case TEXT: + return new TextLayer(drawable, layerModel); + case UNKNOWN: + default: + // Do nothing + Logger.warning("Unknown layer type " + layerModel.getLayerType()); + return null; + } + } + + private final Path path = new Path(); + private final Matrix matrix = new Matrix(); + private final Matrix canvasMatrix = new Matrix(); + private final Paint contentPaint = new LPaint(Paint.ANTI_ALIAS_FLAG); + private final Paint dstInPaint = new LPaint(Paint.ANTI_ALIAS_FLAG, PorterDuff.Mode.DST_IN); + private final Paint dstOutPaint = new LPaint(Paint.ANTI_ALIAS_FLAG, PorterDuff.Mode.DST_OUT); + private final Paint mattePaint = new LPaint(Paint.ANTI_ALIAS_FLAG); + private final Paint clearPaint = new LPaint(PorterDuff.Mode.CLEAR); + private final RectF rect = new RectF(); + private final RectF canvasBounds = new RectF(); + private final RectF maskBoundsRect = new RectF(); + private final RectF matteBoundsRect = new RectF(); + private final RectF tempMaskBoundsRect = new RectF(); + private final String drawTraceName; + final Matrix boundsMatrix = new Matrix(); + final LottieDrawable lottieDrawable; + final Layer layerModel; + @Nullable + private MaskKeyframeAnimation mask; + @Nullable + private FloatKeyframeAnimation inOutAnimation; + @Nullable + private BaseLayer matteLayer; + /** + * This should only be used by {@link #buildParentLayerListIfNeeded()} + * to construct the list of parent layers. + */ + @Nullable + private BaseLayer parentLayer; + private List parentLayers; + + private final List> animations = new ArrayList<>(); + final TransformKeyframeAnimation transform; + private boolean visible = true; + + private boolean outlineMasksAndMattes; + @Nullable private Paint outlineMasksAndMattesPaint; + + float blurMaskFilterRadius = 0f; + @Nullable BlurMaskFilter blurMaskFilter; + + BaseLayer(LottieDrawable lottieDrawable, Layer layerModel) { + this.lottieDrawable = lottieDrawable; + this.layerModel = layerModel; + drawTraceName = layerModel.getName() + "#draw"; + if (layerModel.getMatteType() == Layer.MatteType.INVERT) { + mattePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); + } else { + mattePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); + } + + this.transform = layerModel.getTransform().createAnimation(); + transform.addListener(this); + + if (layerModel.getMasks() != null && !layerModel.getMasks().isEmpty()) { + this.mask = new MaskKeyframeAnimation(layerModel.getMasks()); + for (BaseKeyframeAnimation animation : mask.getMaskAnimations()) { + // Don't call addAnimation() because progress gets set manually in setProgress to + // properly handle time scale. + animation.addUpdateListener(this); + } + for (BaseKeyframeAnimation animation : mask.getOpacityAnimations()) { + addAnimation(animation); + animation.addUpdateListener(this); + } + } + setupInOutAnimations(); + } + + /** + * Enable this to debug slow animations by outlining masks and mattes. The performance overhead of the masks and mattes will + * be proportional to the surface area of all of the masks/mattes combined. + *

+ * DO NOT leave this enabled in production. + */ + void setOutlineMasksAndMattes(boolean outline) { + if (outline && outlineMasksAndMattesPaint == null) { + outlineMasksAndMattesPaint = new LPaint(); + } + outlineMasksAndMattes = outline; + } + + @Override + public void onValueChanged() { + invalidateSelf(); + } + + Layer getLayerModel() { + return layerModel; + } + + void setMatteLayer(@Nullable BaseLayer matteLayer) { + this.matteLayer = matteLayer; + } + + boolean hasMatteOnThisLayer() { + return matteLayer != null; + } + + void setParentLayer(@Nullable BaseLayer parentLayer) { + this.parentLayer = parentLayer; + } + + private void setupInOutAnimations() { + if (!layerModel.getInOutKeyframes().isEmpty()) { + inOutAnimation = new FloatKeyframeAnimation(layerModel.getInOutKeyframes()); + inOutAnimation.setIsDiscrete(); + inOutAnimation.addUpdateListener(() -> setVisible(inOutAnimation.getFloatValue() == 1f)); + setVisible(inOutAnimation.getValue() == 1f); + addAnimation(inOutAnimation); + } else { + setVisible(true); + } + } + + private void invalidateSelf() { + lottieDrawable.invalidateSelf(); + } + + public void addAnimation(@Nullable BaseKeyframeAnimation newAnimation) { + if (newAnimation == null) { + return; + } + animations.add(newAnimation); + } + + public void removeAnimation(BaseKeyframeAnimation animation) { + animations.remove(animation); + } + + @CallSuper + @Override + public void getBounds( + RectF outBounds, Matrix parentMatrix, boolean applyParents) { + rect.set(0, 0, 0, 0); + buildParentLayerListIfNeeded(); + boundsMatrix.set(parentMatrix); + + if (applyParents) { + if (parentLayers != null) { + for (int i = parentLayers.size() - 1; i >= 0; i--) { + boundsMatrix.preConcat(parentLayers.get(i).transform.getMatrix()); + } + } else if (parentLayer != null) { + boundsMatrix.preConcat(parentLayer.transform.getMatrix()); + } + } + + boundsMatrix.preConcat(transform.getMatrix()); + } + + @Override + public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + L.beginSection(drawTraceName); + if (!visible || layerModel.isHidden()) { + L.endSection(drawTraceName); + return; + } + buildParentLayerListIfNeeded(); + if (L.isTraceEnabled()) { + L.beginSection("Layer#parentMatrix"); + } + matrix.reset(); + matrix.set(parentMatrix); + for (int i = parentLayers.size() - 1; i >= 0; i--) { + matrix.preConcat(parentLayers.get(i).transform.getMatrix()); + } + if (L.isTraceEnabled()) { + L.endSection("Layer#parentMatrix"); + } + // It is unclear why but getting the opacity here would sometimes NPE. + // The extra code here is designed to avoid this. + // https://github.com/airbnb/lottie-android/issues/2083 + int opacity = 100; + BaseKeyframeAnimation opacityAnimation = transform.getOpacity(); + if (opacityAnimation != null) { + Integer opacityValue = opacityAnimation.getValue(); + if (opacityValue != null) { + opacity = opacityValue; + } + } + int alpha = (int) ((parentAlpha / 255f * (float) opacity / 100f) * 255); + if (!hasMatteOnThisLayer() && !hasMasksOnThisLayer()) { + matrix.preConcat(transform.getMatrix()); + if (L.isTraceEnabled()) { + L.beginSection("Layer#drawLayer"); + } + drawLayer(canvas, matrix, alpha); + if (L.isTraceEnabled()) { + L.endSection("Layer#drawLayer"); + } + recordRenderTime(L.endSection(drawTraceName)); + return; + } + + if (L.isTraceEnabled()) { + L.beginSection("Layer#computeBounds"); + } + getBounds(rect, matrix, false); + + intersectBoundsWithMatte(rect, parentMatrix); + + matrix.preConcat(transform.getMatrix()); + intersectBoundsWithMask(rect, matrix); + + // Intersect the mask and matte rect with the canvas bounds. + // If the canvas has a transform, then we need to transform its bounds by its matrix + // so that we know the coordinate space that the canvas is showing. + canvasBounds.set(0f, 0f, canvas.getWidth(), canvas.getHeight()); + //noinspection deprecation + canvas.getMatrix(canvasMatrix); + if (!canvasMatrix.isIdentity()) { + canvasMatrix.invert(canvasMatrix); + canvasMatrix.mapRect(canvasBounds); + } + if (!rect.intersect(canvasBounds)) { + rect.set(0, 0, 0, 0); + } + + if (L.isTraceEnabled()) { + L.endSection("Layer#computeBounds"); + } + + // Ensure that what we are drawing is >=1px of width and height. + // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. + // https://github.com/airbnb/lottie-android/issues/1625 + if (rect.width() >= 1f && rect.height() >= 1f) { + if (L.isTraceEnabled()) { + L.beginSection("Layer#saveLayer"); + } + contentPaint.setAlpha(255); + Utils.saveLayerCompat(canvas, rect, contentPaint); + if (L.isTraceEnabled()) { + L.endSection("Layer#saveLayer"); + } + + // Clear the off screen buffer. This is necessary for some phones. + clearCanvas(canvas); + if (L.isTraceEnabled()) { + L.beginSection("Layer#drawLayer"); + } + drawLayer(canvas, matrix, alpha); + if (L.isTraceEnabled()) { + L.endSection("Layer#drawLayer"); + } + + if (hasMasksOnThisLayer()) { + applyMasks(canvas, matrix); + } + + if (hasMatteOnThisLayer()) { + if (L.isTraceEnabled()) { + L.beginSection("Layer#drawMatte"); + L.beginSection("Layer#saveLayer"); + } + Utils.saveLayerCompat(canvas, rect, mattePaint, SAVE_FLAGS); + if (L.isTraceEnabled()) { + L.endSection("Layer#saveLayer"); + } + clearCanvas(canvas); + //noinspection ConstantConditions + matteLayer.draw(canvas, parentMatrix, alpha); + if (L.isTraceEnabled()) { + L.beginSection("Layer#restoreLayer"); + } + canvas.restore(); + if (L.isTraceEnabled()) { + L.endSection("Layer#restoreLayer"); + L.endSection("Layer#drawMatte"); + } + } + + if (L.isTraceEnabled()) { + L.beginSection("Layer#restoreLayer"); + } + canvas.restore(); + if (L.isTraceEnabled()) { + L.endSection("Layer#restoreLayer"); + } + } + + if (outlineMasksAndMattes && outlineMasksAndMattesPaint != null) { + outlineMasksAndMattesPaint.setStyle(Paint.Style.STROKE); + outlineMasksAndMattesPaint.setColor(0xFFFC2803); + outlineMasksAndMattesPaint.setStrokeWidth(4); + canvas.drawRect(rect, outlineMasksAndMattesPaint); + outlineMasksAndMattesPaint.setStyle(Paint.Style.FILL); + outlineMasksAndMattesPaint.setColor(0x50EBEBEB); + canvas.drawRect(rect, outlineMasksAndMattesPaint); + } + + recordRenderTime(L.endSection(drawTraceName)); + } + + private void recordRenderTime(float ms) { + lottieDrawable.getComposition() + .getPerformanceTracker().recordRenderTime(layerModel.getName(), ms); + + } + + private void clearCanvas(Canvas canvas) { + if (L.isTraceEnabled()) { + L.beginSection("Layer#clearLayer"); + } + // If we don't pad the clear draw, some phones leave a 1px border of the graphics buffer. + canvas.drawRect(rect.left - 1, rect.top - 1, rect.right + 1, rect.bottom + 1, clearPaint); + if (L.isTraceEnabled()) { + L.endSection("Layer#clearLayer"); + } + } + + private void intersectBoundsWithMask(RectF rect, Matrix matrix) { + maskBoundsRect.set(0, 0, 0, 0); + if (!hasMasksOnThisLayer()) { + return; + } + //noinspection ConstantConditions + int size = mask.getMasks().size(); + for (int i = 0; i < size; i++) { + Mask mask = this.mask.getMasks().get(i); + BaseKeyframeAnimation maskAnimation = this.mask.getMaskAnimations().get(i); + Path maskPath = maskAnimation.getValue(); + if (maskPath == null) { + // This should never happen but seems to happen occasionally. + // There is no known repro for this but is is probably best to just skip this mask if that is the case. + // https://github.com/airbnb/lottie-android/issues/1879 + continue; + } + path.set(maskPath); + path.transform(matrix); + + switch (mask.getMaskMode()) { + case MASK_MODE_NONE: + // Mask mode none will just render the original content so it is the whole bounds. + return; + case MASK_MODE_SUBTRACT: + // If there is a subtract mask, the mask could potentially be the size of the entire + // canvas so we can't use the mask bounds. + return; + case MASK_MODE_INTERSECT: + case MASK_MODE_ADD: + if (mask.isInverted()) { + return; + } + default: + path.computeBounds(tempMaskBoundsRect, false); + // As we iterate through the masks, we want to calculate the union region of the masks. + // We initialize the rect with the first mask. If we don't call set() on the first call, + // the rect will always extend to (0,0). + if (i == 0) { + maskBoundsRect.set(tempMaskBoundsRect); + } else { + maskBoundsRect.set( + Math.min(maskBoundsRect.left, tempMaskBoundsRect.left), + Math.min(maskBoundsRect.top, tempMaskBoundsRect.top), + Math.max(maskBoundsRect.right, tempMaskBoundsRect.right), + Math.max(maskBoundsRect.bottom, tempMaskBoundsRect.bottom) + ); + } + } + } + + boolean intersects = rect.intersect(maskBoundsRect); + if (!intersects) { + rect.set(0f, 0f, 0f, 0f); + } + } + + private void intersectBoundsWithMatte(RectF rect, Matrix matrix) { + if (!hasMatteOnThisLayer()) { + return; + } + + if (layerModel.getMatteType() == Layer.MatteType.INVERT) { + // We can't trim the bounds if the mask is inverted since it extends all the way to the + // composition bounds. + return; + } + matteBoundsRect.set(0f, 0f, 0f, 0f); + matteLayer.getBounds(matteBoundsRect, matrix, true); + boolean intersects = rect.intersect(matteBoundsRect); + if (!intersects) { + rect.set(0f, 0f, 0f, 0f); + } + } + + abstract void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha); + + private void applyMasks(Canvas canvas, Matrix matrix) { + if (L.isTraceEnabled()) { + L.beginSection("Layer#saveLayer"); + } + Utils.saveLayerCompat(canvas, rect, dstInPaint, SAVE_FLAGS); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { + // Pre-Pie, offscreen buffers were opaque which meant that outer border of a mask + // might get drawn depending on the result of float rounding. + clearCanvas(canvas); + } + if (L.isTraceEnabled()) { + L.endSection("Layer#saveLayer"); + } + for (int i = 0; i < mask.getMasks().size(); i++) { + Mask mask = this.mask.getMasks().get(i); + BaseKeyframeAnimation maskAnimation = this.mask.getMaskAnimations().get(i); + BaseKeyframeAnimation opacityAnimation = this.mask.getOpacityAnimations().get(i); + switch (mask.getMaskMode()) { + case MASK_MODE_NONE: + // None mask should have no effect. If all masks are NONE, fill the + // mask canvas with a rectangle so it fully covers the original layer content. + // However, if there are other masks, they should be the only ones that have an effect so + // this should noop. + if (areAllMasksNone()) { + contentPaint.setAlpha(255); + canvas.drawRect(rect, contentPaint); + } + break; + case MASK_MODE_ADD: + if (mask.isInverted()) { + applyInvertedAddMask(canvas, matrix, maskAnimation, opacityAnimation); + } else { + applyAddMask(canvas, matrix, maskAnimation, opacityAnimation); + } + break; + case MASK_MODE_SUBTRACT: + if (i == 0) { + contentPaint.setColor(Color.BLACK); + contentPaint.setAlpha(255); + canvas.drawRect(rect, contentPaint); + } + if (mask.isInverted()) { + applyInvertedSubtractMask(canvas, matrix, maskAnimation, opacityAnimation); + } else { + applySubtractMask(canvas, matrix, maskAnimation); + } + break; + case MASK_MODE_INTERSECT: + if (mask.isInverted()) { + applyInvertedIntersectMask(canvas, matrix, maskAnimation, opacityAnimation); + } else { + applyIntersectMask(canvas, matrix, maskAnimation, opacityAnimation); + } + break; + } + } + if (L.isTraceEnabled()) { + L.beginSection("Layer#restoreLayer"); + } + canvas.restore(); + if (L.isTraceEnabled()) { + L.endSection("Layer#restoreLayer"); + } + } + + private boolean areAllMasksNone() { + if (mask.getMaskAnimations().isEmpty()) { + return false; + } + for (int i = 0; i < mask.getMasks().size(); i++) { + if (mask.getMasks().get(i).getMaskMode() != Mask.MaskMode.MASK_MODE_NONE) { + return false; + } + } + return true; + } + + private void applyAddMask(Canvas canvas, Matrix matrix, + BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { + Path maskPath = maskAnimation.getValue(); + path.set(maskPath); + path.transform(matrix); + contentPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); + canvas.drawPath(path, contentPaint); + } + + private void applyInvertedAddMask(Canvas canvas, Matrix matrix, + BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { + Utils.saveLayerCompat(canvas, rect, contentPaint); + canvas.drawRect(rect, contentPaint); + Path maskPath = maskAnimation.getValue(); + path.set(maskPath); + path.transform(matrix); + contentPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); + canvas.drawPath(path, dstOutPaint); + canvas.restore(); + } + + private void applySubtractMask(Canvas canvas, Matrix matrix, BaseKeyframeAnimation maskAnimation) { + Path maskPath = maskAnimation.getValue(); + path.set(maskPath); + path.transform(matrix); + canvas.drawPath(path, dstOutPaint); + } + + private void applyInvertedSubtractMask(Canvas canvas, Matrix matrix, + BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { + Utils.saveLayerCompat(canvas, rect, dstOutPaint); + canvas.drawRect(rect, contentPaint); + dstOutPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); + Path maskPath = maskAnimation.getValue(); + path.set(maskPath); + path.transform(matrix); + canvas.drawPath(path, dstOutPaint); + canvas.restore(); + } + + private void applyIntersectMask(Canvas canvas, Matrix matrix, + BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { + Utils.saveLayerCompat(canvas, rect, dstInPaint); + Path maskPath = maskAnimation.getValue(); + path.set(maskPath); + path.transform(matrix); + contentPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); + canvas.drawPath(path, contentPaint); + canvas.restore(); + } + + private void applyInvertedIntersectMask(Canvas canvas, Matrix matrix, + BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { + Utils.saveLayerCompat(canvas, rect, dstInPaint); + canvas.drawRect(rect, contentPaint); + dstOutPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); + Path maskPath = maskAnimation.getValue(); + path.set(maskPath); + path.transform(matrix); + canvas.drawPath(path, dstOutPaint); + canvas.restore(); + } + + boolean hasMasksOnThisLayer() { + return mask != null && !mask.getMaskAnimations().isEmpty(); + } + + private void setVisible(boolean visible) { + if (visible != this.visible) { + this.visible = visible; + invalidateSelf(); + } + } + + void setProgress(@FloatRange(from = 0f, to = 1f) float progress) { + if (L.isTraceEnabled()) { + L.beginSection("BaseLayer#setProgress"); + // Time stretch should not be applied to the layer transform. + L.beginSection("BaseLayer#setProgress.transform"); + } + transform.setProgress(progress); + if (L.isTraceEnabled()) { + L.endSection("BaseLayer#setProgress.transform"); + } + if (mask != null) { + if (L.isTraceEnabled()) { + L.beginSection("BaseLayer#setProgress.mask"); + } + for (int i = 0; i < mask.getMaskAnimations().size(); i++) { + mask.getMaskAnimations().get(i).setProgress(progress); + } + if (L.isTraceEnabled()) { + L.endSection("BaseLayer#setProgress.mask"); + } + } + if (inOutAnimation != null) { + if (L.isTraceEnabled()) { + L.beginSection("BaseLayer#setProgress.inout"); + } + inOutAnimation.setProgress(progress); + if (L.isTraceEnabled()) { + L.endSection("BaseLayer#setProgress.inout"); + } + } + if (matteLayer != null) { + if (L.isTraceEnabled()) { + L.beginSection("BaseLayer#setProgress.matte"); + } + matteLayer.setProgress(progress); + if (L.isTraceEnabled()) { + L.endSection("BaseLayer#setProgress.matte"); + } + } + if (L.isTraceEnabled()) { + L.beginSection("BaseLayer#setProgress.animations." + animations.size()); + } + for (int i = 0; i < animations.size(); i++) { + animations.get(i).setProgress(progress); + } + if (L.isTraceEnabled()) { + L.endSection("BaseLayer#setProgress.animations." + animations.size()); + L.endSection("BaseLayer#setProgress"); + } + } + + private void buildParentLayerListIfNeeded() { + if (parentLayers != null) { + return; + } + if (parentLayer == null) { + parentLayers = Collections.emptyList(); + return; + } + + parentLayers = new ArrayList<>(); + BaseLayer layer = parentLayer; + while (layer != null) { + parentLayers.add(layer); + layer = layer.parentLayer; + } + } + + @Override + public String getName() { + return layerModel.getName(); + } + + @Nullable + public BlurEffect getBlurEffect() { + return layerModel.getBlurEffect(); + } + + public LBlendMode getBlendMode() { + return layerModel.getBlendMode(); + } + + public BlurMaskFilter getBlurMaskFilter(float radius) { + if (blurMaskFilterRadius == radius) { + return blurMaskFilter; + } + blurMaskFilter = new BlurMaskFilter(radius / 2f, BlurMaskFilter.Blur.NORMAL); + blurMaskFilterRadius = radius; + return blurMaskFilter; + } + + @Nullable + public DropShadowEffect getDropShadowEffect() { + return layerModel.getDropShadowEffect(); + } + + @Override + public void setContents(List contentsBefore, List contentsAfter) { + // Do nothing + } + + @Override + public void resolveKeyPath( + KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { + if (matteLayer != null) { + KeyPath matteCurrentPartialKeyPath = currentPartialKeyPath.addKey(matteLayer.getName()); + if (keyPath.fullyResolvesTo(matteLayer.getName(), depth)) { + accumulator.add(matteCurrentPartialKeyPath.resolve(matteLayer)); + } + + if (keyPath.propagateToChildren(getName(), depth)) { + int newDepth = depth + keyPath.incrementDepthBy(matteLayer.getName(), depth); + matteLayer.resolveChildKeyPath(keyPath, newDepth, accumulator, matteCurrentPartialKeyPath); + } + } + + if (!keyPath.matches(getName(), depth)) { + return; + } + + if (!"__container".equals(getName())) { + currentPartialKeyPath = currentPartialKeyPath.addKey(getName()); + + if (keyPath.fullyResolvesTo(getName(), depth)) { + accumulator.add(currentPartialKeyPath.resolve(this)); + } + } + + if (keyPath.propagateToChildren(getName(), depth)) { + int newDepth = depth + keyPath.incrementDepthBy(getName(), depth); + resolveChildKeyPath(keyPath, newDepth, accumulator, currentPartialKeyPath); + } + } + + void resolveChildKeyPath( + KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { + } + + @CallSuper + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + transform.applyValueCallback(property, callback); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java new file mode 100644 index 00000000..92745ab7 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java @@ -0,0 +1,246 @@ +package com.airbnb.lottie.model.layer; + +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.RectF; +import android.util.Log; + +import androidx.annotation.FloatRange; +import androidx.annotation.Nullable; +import androidx.collection.LongSparseArray; + +import com.airbnb.lottie.L; +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.utils.Utils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.ArrayList; +import java.util.List; + +public class CompositionLayer extends BaseLayer { + @Nullable private BaseKeyframeAnimation timeRemapping; + private final List layers = new ArrayList<>(); + private final RectF rect = new RectF(); + private final RectF newClipRect = new RectF(); + private final Paint layerPaint = new Paint(); + + @Nullable private Boolean hasMatte; + @Nullable private Boolean hasMasks; + private float progress; + + private boolean clipToCompositionBounds = true; + + public CompositionLayer(LottieDrawable lottieDrawable, Layer layerModel, List layerModels, + LottieComposition composition) { + super(lottieDrawable, layerModel); + + AnimatableFloatValue timeRemapping = layerModel.getTimeRemapping(); + if (timeRemapping != null) { + this.timeRemapping = timeRemapping.createAnimation(); + addAnimation(this.timeRemapping); + //noinspection ConstantConditions + this.timeRemapping.addUpdateListener(this); + } else { + this.timeRemapping = null; + } + + LongSparseArray layerMap = + new LongSparseArray<>(composition.getLayers().size()); + + BaseLayer mattedLayer = null; + for (int i = layerModels.size() - 1; i >= 0; i--) { + Layer lm = layerModels.get(i); + BaseLayer layer = BaseLayer.forModel(this, lm, lottieDrawable, composition); + if (layer == null) { + continue; + } + layerMap.put(layer.getLayerModel().getId(), layer); + if (mattedLayer != null) { + mattedLayer.setMatteLayer(layer); + mattedLayer = null; + } else { + layers.add(0, layer); + switch (lm.getMatteType()) { + case ADD: + case INVERT: + mattedLayer = layer; + break; + } + } + } + + for (int i = 0; i < layerMap.size(); i++) { + long key = layerMap.keyAt(i); + BaseLayer layerView = layerMap.get(key); + // This shouldn't happen but it appears as if sometimes on pre-lollipop devices when + // compiled with d8, layerView is null sometimes. + // https://github.com/airbnb/lottie-android/issues/524 + if (layerView == null) { + continue; + } + BaseLayer parentLayer = layerMap.get(layerView.getLayerModel().getParentId()); + if (parentLayer != null) { + layerView.setParentLayer(parentLayer); + } + } + } + + public void setClipToCompositionBounds(boolean clipToCompositionBounds) { + this.clipToCompositionBounds = clipToCompositionBounds; + } + + @Override public void setOutlineMasksAndMattes(boolean outline) { + super.setOutlineMasksAndMattes(outline); + for (BaseLayer layer : layers) { + layer.setOutlineMasksAndMattes(outline); + } + } + + @Override void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + if (L.isTraceEnabled()) { + L.beginSection("CompositionLayer#draw"); + } + newClipRect.set(0, 0, layerModel.getPreCompWidth(), layerModel.getPreCompHeight()); + parentMatrix.mapRect(newClipRect); + + // Apply off-screen rendering only when needed in order to improve rendering performance. + boolean isDrawingWithOffScreen = lottieDrawable.isApplyingOpacityToLayersEnabled() && layers.size() > 1 && parentAlpha != 255; + if (isDrawingWithOffScreen) { + layerPaint.setAlpha(parentAlpha); + Utils.saveLayerCompat(canvas, newClipRect, layerPaint); + } else { + canvas.save(); + } + + int childAlpha = isDrawingWithOffScreen ? 255 : parentAlpha; + for (int i = layers.size() - 1; i >= 0; i--) { + boolean nonEmptyClip = true; + // Only clip precomps. This mimics the way After Effects renders animations. + boolean ignoreClipOnThisLayer = !clipToCompositionBounds && "__container".equals(layerModel.getName()); + if (!ignoreClipOnThisLayer && !newClipRect.isEmpty()) { + nonEmptyClip = canvas.clipRect(newClipRect); + } + if (nonEmptyClip) { + BaseLayer layer = layers.get(i); + layer.draw(canvas, parentMatrix, childAlpha); + } + } + canvas.restore(); + if (L.isTraceEnabled()) { + L.endSection("CompositionLayer#draw"); + } + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + super.getBounds(outBounds, parentMatrix, applyParents); + for (int i = layers.size() - 1; i >= 0; i--) { + rect.set(0, 0, 0, 0); + layers.get(i).getBounds(rect, boundsMatrix, true); + outBounds.union(rect); + } + } + + @Override public void setProgress(@FloatRange(from = 0f, to = 1f) float progress) { + if (L.isTraceEnabled()) { + L.beginSection("CompositionLayer#setProgress"); + } + this.progress = progress; + super.setProgress(progress); + if (timeRemapping != null) { + // The duration has 0.01 frame offset to show end of animation properly. + // https://github.com/airbnb/lottie-android/pull/766 + // Ignore this offset for calculating time-remapping because time-remapping value is based on original duration. + float durationFrames = lottieDrawable.getComposition().getDurationFrames() + 0.01f; + float compositionDelayFrames = layerModel.getComposition().getStartFrame(); + float remappedFrames = timeRemapping.getValue() * layerModel.getComposition().getFrameRate() - compositionDelayFrames; + progress = remappedFrames / durationFrames; + } + if (timeRemapping == null) { + progress -= layerModel.getStartProgress(); + } + //Time stretch needs to be divided if is not "__container" + if (layerModel.getTimeStretch() != 0 && !"__container".equals(layerModel.getName())) { + progress /= layerModel.getTimeStretch(); + } + for (int i = layers.size() - 1; i >= 0; i--) { + layers.get(i).setProgress(progress); + } + if (L.isTraceEnabled()) { + L.endSection("CompositionLayer#setProgress"); + } + } + + public float getProgress() { + return progress; + } + + public boolean hasMasks() { + if (hasMasks == null) { + for (int i = layers.size() - 1; i >= 0; i--) { + BaseLayer layer = layers.get(i); + if (layer instanceof ShapeLayer) { + if (layer.hasMasksOnThisLayer()) { + hasMasks = true; + return true; + } + } else if (layer instanceof CompositionLayer && ((CompositionLayer) layer).hasMasks()) { + hasMasks = true; + return true; + } + } + hasMasks = false; + } + return hasMasks; + } + + public boolean hasMatte() { + if (hasMatte == null) { + if (hasMatteOnThisLayer()) { + hasMatte = true; + return true; + } + + for (int i = layers.size() - 1; i >= 0; i--) { + if (layers.get(i).hasMatteOnThisLayer()) { + hasMatte = true; + return true; + } + } + hasMatte = false; + } + return hasMatte; + } + + @Override + protected void resolveChildKeyPath(KeyPath keyPath, int depth, List accumulator, + KeyPath currentPartialKeyPath) { + for (int i = 0; i < layers.size(); i++) { + layers.get(i).resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath); + } + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + super.addValueCallback(property, callback); + + if (property == LottieProperty.TIME_REMAP) { + if (callback == null) { + if (timeRemapping != null) { + timeRemapping.setValueCallback(null); + } + } else { + timeRemapping = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + timeRemapping.addUpdateListener(this); + addAnimation(timeRemapping); + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java new file mode 100644 index 00000000..6cd60b64 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java @@ -0,0 +1,112 @@ +package com.airbnb.lottie.model.layer; + +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieImageAsset; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.LPaint; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.utils.Utils; +import com.airbnb.lottie.value.LottieValueCallback; + +public class ImageLayer extends BaseLayer { + + private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); + private final Rect src = new Rect(); + private final Rect dst = new Rect(); + @Nullable private final LottieImageAsset lottieImageAsset; + @Nullable private BaseKeyframeAnimation colorFilterAnimation; + @Nullable private BaseKeyframeAnimation imageAnimation; + + ImageLayer(LottieDrawable lottieDrawable, Layer layerModel) { + super(lottieDrawable, layerModel); + lottieImageAsset = lottieDrawable.getLottieImageAssetForId(layerModel.getRefId()); + } + + @Override public void drawLayer(@NonNull Canvas canvas, Matrix parentMatrix, int parentAlpha) { + Bitmap bitmap = getBitmap(); + if (bitmap == null || bitmap.isRecycled() || lottieImageAsset == null) { + return; + } + float density = Utils.dpScale(); + + paint.setAlpha(parentAlpha); + if (colorFilterAnimation != null) { + paint.setColorFilter(colorFilterAnimation.getValue()); + } + canvas.save(); + canvas.concat(parentMatrix); + src.set(0, 0, bitmap.getWidth(), bitmap.getHeight()); + if (lottieDrawable.getMaintainOriginalImageBounds()) { + dst.set(0, 0, (int) (lottieImageAsset.getWidth() * density), (int) (lottieImageAsset.getHeight() * density)); + } else { + dst.set(0, 0, (int) (bitmap.getWidth() * density), (int) (bitmap.getHeight() * density)); + } + + canvas.drawBitmap(bitmap, src, dst, paint); + canvas.restore(); + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + super.getBounds(outBounds, parentMatrix, applyParents); + if (lottieImageAsset != null) { + float scale = Utils.dpScale(); + outBounds.set(0, 0, lottieImageAsset.getWidth() * scale, lottieImageAsset.getHeight() * scale); + boundsMatrix.mapRect(outBounds); + } + } + + @Nullable + private Bitmap getBitmap() { + if (imageAnimation != null) { + Bitmap callbackBitmap = imageAnimation.getValue(); + if (callbackBitmap != null) { + return callbackBitmap; + } + } + String refId = layerModel.getRefId(); + Bitmap bitmapFromDrawable = lottieDrawable.getBitmapForId(refId); + if (bitmapFromDrawable != null) { + return bitmapFromDrawable; + } + LottieImageAsset asset = this.lottieImageAsset; + if (asset != null) { + return asset.getBitmap(); + } + return null; + } + + @SuppressWarnings("SingleStatementInBlock") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + super.addValueCallback(property, callback); + if (property == LottieProperty.COLOR_FILTER) { + if (callback == null) { + colorFilterAnimation = null; + } else { + //noinspection unchecked + colorFilterAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + } + } else if (property == LottieProperty.IMAGE) { + if (callback == null) { + imageAnimation = null; + } else { + //noinspection unchecked + imageAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java new file mode 100644 index 00000000..edea4fa2 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java @@ -0,0 +1,236 @@ +package com.airbnb.lottie.model.layer; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.model.animatable.AnimatableFloatValue; +import com.airbnb.lottie.model.animatable.AnimatableTextFrame; +import com.airbnb.lottie.model.animatable.AnimatableTextProperties; +import com.airbnb.lottie.model.animatable.AnimatableTransform; +import com.airbnb.lottie.model.content.BlurEffect; +import com.airbnb.lottie.model.content.ContentModel; +import com.airbnb.lottie.model.content.LBlendMode; +import com.airbnb.lottie.model.content.Mask; +import com.airbnb.lottie.parser.DropShadowEffect; +import com.airbnb.lottie.value.Keyframe; + +import java.util.List; +import java.util.Locale; + +public class Layer { + + public enum LayerType { + PRE_COMP, + SOLID, + IMAGE, + NULL, + SHAPE, + TEXT, + UNKNOWN + } + + public enum MatteType { + NONE, + ADD, + INVERT, + LUMA, + LUMA_INVERTED, + UNKNOWN + } + + private final List shapes; + private final LottieComposition composition; + private final String layerName; + private final long layerId; + private final LayerType layerType; + private final long parentId; + @Nullable private final String refId; + private final List masks; + private final AnimatableTransform transform; + private final int solidWidth; + private final int solidHeight; + private final int solidColor; + private final float timeStretch; + private final float startFrame; + private final float preCompWidth; + private final float preCompHeight; + @Nullable private final AnimatableTextFrame text; + @Nullable private final AnimatableTextProperties textProperties; + @Nullable private final AnimatableFloatValue timeRemapping; + private final List> inOutKeyframes; + private final MatteType matteType; + private final boolean hidden; + @Nullable private final BlurEffect blurEffect; + @Nullable private final DropShadowEffect dropShadowEffect; + private final LBlendMode blendMode; + + + public Layer(List shapes, LottieComposition composition, String layerName, long layerId, + LayerType layerType, long parentId, @Nullable String refId, List masks, + AnimatableTransform transform, int solidWidth, int solidHeight, int solidColor, + float timeStretch, float startFrame, float preCompWidth, float preCompHeight, + @Nullable AnimatableTextFrame text, @Nullable AnimatableTextProperties textProperties, + List> inOutKeyframes, MatteType matteType, + @Nullable AnimatableFloatValue timeRemapping, boolean hidden, @Nullable BlurEffect blurEffect, + @Nullable DropShadowEffect dropShadowEffect, LBlendMode blendMode) { + this.shapes = shapes; + this.composition = composition; + this.layerName = layerName; + this.layerId = layerId; + this.layerType = layerType; + this.parentId = parentId; + this.refId = refId; + this.masks = masks; + this.transform = transform; + this.solidWidth = solidWidth; + this.solidHeight = solidHeight; + this.solidColor = solidColor; + this.timeStretch = timeStretch; + this.startFrame = startFrame; + this.preCompWidth = preCompWidth; + this.preCompHeight = preCompHeight; + this.text = text; + this.textProperties = textProperties; + this.inOutKeyframes = inOutKeyframes; + this.matteType = matteType; + this.timeRemapping = timeRemapping; + this.hidden = hidden; + this.blurEffect = blurEffect; + this.dropShadowEffect = dropShadowEffect; + this.blendMode = blendMode; + } + + LottieComposition getComposition() { + return composition; + } + + float getTimeStretch() { + return timeStretch; + } + + float getStartProgress() { + return startFrame / composition.getDurationFrames(); + } + + List> getInOutKeyframes() { + return inOutKeyframes; + } + + public long getId() { + return layerId; + } + + public String getName() { + return layerName; + } + + public @Nullable String getRefId() { + return refId; + } + + float getPreCompWidth() { + return preCompWidth; + } + + float getPreCompHeight() { + return preCompHeight; + } + + List getMasks() { + return masks; + } + + public LayerType getLayerType() { + return layerType; + } + + MatteType getMatteType() { + return matteType; + } + + long getParentId() { + return parentId; + } + + List getShapes() { + return shapes; + } + + AnimatableTransform getTransform() { + return transform; + } + + int getSolidColor() { + return solidColor; + } + + int getSolidHeight() { + return solidHeight; + } + + int getSolidWidth() { + return solidWidth; + } + + @Nullable AnimatableTextFrame getText() { + return text; + } + + @Nullable AnimatableTextProperties getTextProperties() { + return textProperties; + } + + @Nullable AnimatableFloatValue getTimeRemapping() { + return timeRemapping; + } + + @Override public String toString() { + return toString(""); + } + + public boolean isHidden() { + return hidden; + } + + @Nullable + public LBlendMode getBlendMode() { + return blendMode; + } + + @Nullable public BlurEffect getBlurEffect() { + return blurEffect; + } + + @Nullable public DropShadowEffect getDropShadowEffect() { + return dropShadowEffect; + } + + public String toString(String prefix) { + StringBuilder sb = new StringBuilder(); + sb.append(prefix).append(getName()).append("\n"); + Layer parent = composition.layerModelForId(getParentId()); + if (parent != null) { + sb.append("\t\tParents: ").append(parent.getName()); + parent = composition.layerModelForId(parent.getParentId()); + while (parent != null) { + sb.append("->").append(parent.getName()); + parent = composition.layerModelForId(parent.getParentId()); + } + sb.append(prefix).append("\n"); + } + if (!getMasks().isEmpty()) { + sb.append(prefix).append("\tMasks: ").append(getMasks().size()).append("\n"); + } + if (getSolidWidth() != 0 && getSolidHeight() != 0) { + sb.append(prefix).append("\tBackground: ").append(String + .format(Locale.US, "%dx%d %X\n", getSolidWidth(), getSolidHeight(), getSolidColor())); + } + if (!shapes.isEmpty()) { + sb.append(prefix).append("\tShapes:\n"); + for (Object shape : shapes) { + sb.append(prefix).append("\t\t").append(shape).append("\n"); + } + } + return sb.toString(); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java new file mode 100644 index 00000000..045cabfe --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java @@ -0,0 +1,22 @@ +package com.airbnb.lottie.model.layer; + +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.RectF; + +import com.airbnb.lottie.LottieDrawable; + +public class NullLayer extends BaseLayer { + NullLayer(LottieDrawable lottieDrawable, Layer layerModel) { + super(lottieDrawable, layerModel); + } + + @Override void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + // Do nothing. + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + super.getBounds(outBounds, parentMatrix, applyParents); + outBounds.set(0, 0, 0, 0); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java new file mode 100644 index 00000000..3a82138f --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java @@ -0,0 +1,66 @@ +package com.airbnb.lottie.model.layer; + +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.RectF; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.animation.content.Content; +import com.airbnb.lottie.animation.content.ContentGroup; +import com.airbnb.lottie.model.KeyPath; +import com.airbnb.lottie.model.content.BlurEffect; +import com.airbnb.lottie.model.content.ShapeGroup; +import com.airbnb.lottie.parser.DropShadowEffect; + +import java.util.Collections; +import java.util.List; + +public class ShapeLayer extends BaseLayer { + private final ContentGroup contentGroup; + private final CompositionLayer compositionLayer; + + ShapeLayer(LottieDrawable lottieDrawable, Layer layerModel, CompositionLayer compositionLayer, LottieComposition composition) { + super(lottieDrawable, layerModel); + this.compositionLayer = compositionLayer; + + // Naming this __container allows it to be ignored in KeyPath matching. + ShapeGroup shapeGroup = new ShapeGroup("__container", layerModel.getShapes(), false); + contentGroup = new ContentGroup(lottieDrawable, this, shapeGroup, composition); + contentGroup.setContents(Collections.emptyList(), Collections.emptyList()); + } + + @Override void drawLayer(@NonNull Canvas canvas, Matrix parentMatrix, int parentAlpha) { + contentGroup.draw(canvas, parentMatrix, parentAlpha); + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + super.getBounds(outBounds, parentMatrix, applyParents); + contentGroup.getBounds(outBounds, boundsMatrix, applyParents); + } + + @Nullable @Override public BlurEffect getBlurEffect() { + BlurEffect layerBlur = super.getBlurEffect(); + if (layerBlur != null) { + return layerBlur; + } + return compositionLayer.getBlurEffect(); + } + + @Nullable @Override public DropShadowEffect getDropShadowEffect() { + DropShadowEffect layerDropShadow = super.getDropShadowEffect(); + if (layerDropShadow != null) { + return layerDropShadow; + } + return compositionLayer.getDropShadowEffect(); + } + + @Override + protected void resolveChildKeyPath(KeyPath keyPath, int depth, List accumulator, + KeyPath currentPartialKeyPath) { + contentGroup.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath); + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java new file mode 100644 index 00000000..19e7d53b --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java @@ -0,0 +1,110 @@ +package com.airbnb.lottie.model.layer; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.RectF; + +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.animation.LPaint; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.value.LottieValueCallback; + +public class SolidLayer extends BaseLayer { + + private final RectF rect = new RectF(); + private final Paint paint = new LPaint(); + private final float[] points = new float[8]; + private final Path path = new Path(); + private final Layer layerModel; + @Nullable private BaseKeyframeAnimation colorFilterAnimation; + @Nullable private BaseKeyframeAnimation colorAnimation; + + SolidLayer(LottieDrawable lottieDrawable, Layer layerModel) { + super(lottieDrawable, layerModel); + this.layerModel = layerModel; + + paint.setAlpha(0); + paint.setStyle(Paint.Style.FILL); + paint.setColor(layerModel.getSolidColor()); + } + + @Override public void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + int backgroundAlpha = Color.alpha(layerModel.getSolidColor()); + if (backgroundAlpha == 0) { + return; + } + + Integer color = colorAnimation == null ? null : colorAnimation.getValue(); + if (color != null) { + paint.setColor(color); + } else { + paint.setColor(layerModel.getSolidColor()); + } + + int opacity = transform.getOpacity() == null ? 100 : transform.getOpacity().getValue(); + int alpha = (int) (parentAlpha / 255f * (backgroundAlpha / 255f * opacity / 100f) * 255); + paint.setAlpha(alpha); + + if (colorFilterAnimation != null) { + paint.setColorFilter(colorFilterAnimation.getValue()); + } + if (alpha > 0) { + points[0] = 0; + points[1] = 0; + points[2] = layerModel.getSolidWidth(); + points[3] = 0; + points[4] = layerModel.getSolidWidth(); + points[5] = layerModel.getSolidHeight(); + points[6] = 0; + points[7] = layerModel.getSolidHeight(); + + // We can't map rect here because if there is rotation on the transform then we aren't + // actually drawing a rect. + parentMatrix.mapPoints(points); + path.reset(); + path.moveTo(points[0], points[1]); + path.lineTo(points[2], points[3]); + path.lineTo(points[4], points[5]); + path.lineTo(points[6], points[7]); + path.lineTo(points[0], points[1]); + path.close(); + canvas.drawPath(path, paint); + } + } + + @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + super.getBounds(outBounds, parentMatrix, applyParents); + rect.set(0, 0, layerModel.getSolidWidth(), layerModel.getSolidHeight()); + boundsMatrix.mapRect(rect); + outBounds.set(rect); + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + super.addValueCallback(property, callback); + if (property == LottieProperty.COLOR_FILTER) { + if (callback == null) { + colorFilterAnimation = null; + } else { + colorFilterAnimation = + new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + } + } else if (property == LottieProperty.COLOR) { + if (callback == null) { + colorAnimation = null; + paint.setColor(layerModel.getSolidColor()); + } else { + colorAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java new file mode 100644 index 00000000..211f1d6a --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java @@ -0,0 +1,627 @@ +package com.airbnb.lottie.model.layer; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.RectF; +import android.graphics.Typeface; + +import androidx.annotation.Nullable; +import androidx.collection.LongSparseArray; + +import com.airbnb.lottie.LottieComposition; +import com.airbnb.lottie.LottieDrawable; +import com.airbnb.lottie.LottieProperty; +import com.airbnb.lottie.TextDelegate; +import com.airbnb.lottie.animation.content.ContentGroup; +import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.TextKeyframeAnimation; +import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; +import com.airbnb.lottie.model.DocumentData; +import com.airbnb.lottie.model.Font; +import com.airbnb.lottie.model.FontCharacter; +import com.airbnb.lottie.model.animatable.AnimatableTextProperties; +import com.airbnb.lottie.model.content.ShapeGroup; +import com.airbnb.lottie.utils.Utils; +import com.airbnb.lottie.value.LottieValueCallback; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TextLayer extends BaseLayer { + + // Capacity is 2 because emojis are 2 characters. Some are longer in which case, the capacity will + // be expanded but that should be pretty rare. + private final StringBuilder stringBuilder = new StringBuilder(2); + private final RectF rectF = new RectF(); + private final Matrix matrix = new Matrix(); + private final Paint fillPaint = new Paint(Paint.ANTI_ALIAS_FLAG) {{ + setStyle(Style.FILL); + }}; + private final Paint strokePaint = new Paint(Paint.ANTI_ALIAS_FLAG) {{ + setStyle(Style.STROKE); + }}; + private final Map> contentsForCharacter = new HashMap<>(); + private final LongSparseArray codePointCache = new LongSparseArray<>(); + /** + * If this is paragraph text, one line may wrap depending on the size of the document data box. + */ + private final List textSubLines = new ArrayList<>(); + private final TextKeyframeAnimation textAnimation; + private final LottieDrawable lottieDrawable; + private final LottieComposition composition; + @Nullable + private BaseKeyframeAnimation colorAnimation; + @Nullable + private BaseKeyframeAnimation colorCallbackAnimation; + @Nullable + private BaseKeyframeAnimation strokeColorAnimation; + @Nullable + private BaseKeyframeAnimation strokeColorCallbackAnimation; + @Nullable + private BaseKeyframeAnimation strokeWidthAnimation; + @Nullable + private BaseKeyframeAnimation strokeWidthCallbackAnimation; + @Nullable + private BaseKeyframeAnimation trackingAnimation; + @Nullable + private BaseKeyframeAnimation trackingCallbackAnimation; + @Nullable + private BaseKeyframeAnimation textSizeCallbackAnimation; + @Nullable + private BaseKeyframeAnimation typefaceCallbackAnimation; + + TextLayer(LottieDrawable lottieDrawable, Layer layerModel) { + super(lottieDrawable, layerModel); + this.lottieDrawable = lottieDrawable; + composition = layerModel.getComposition(); + //noinspection ConstantConditions + textAnimation = layerModel.getText().createAnimation(); + textAnimation.addUpdateListener(this); + addAnimation(textAnimation); + + AnimatableTextProperties textProperties = layerModel.getTextProperties(); + if (textProperties != null && textProperties.color != null) { + colorAnimation = textProperties.color.createAnimation(); + colorAnimation.addUpdateListener(this); + addAnimation(colorAnimation); + } + + if (textProperties != null && textProperties.stroke != null) { + strokeColorAnimation = textProperties.stroke.createAnimation(); + strokeColorAnimation.addUpdateListener(this); + addAnimation(strokeColorAnimation); + } + + if (textProperties != null && textProperties.strokeWidth != null) { + strokeWidthAnimation = textProperties.strokeWidth.createAnimation(); + strokeWidthAnimation.addUpdateListener(this); + addAnimation(strokeWidthAnimation); + } + + if (textProperties != null && textProperties.tracking != null) { + trackingAnimation = textProperties.tracking.createAnimation(); + trackingAnimation.addUpdateListener(this); + addAnimation(trackingAnimation); + } + } + + @Override + public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { + super.getBounds(outBounds, parentMatrix, applyParents); + // TODO: use the correct text bounds. + outBounds.set(0, 0, composition.getBounds().width(), composition.getBounds().height()); + } + + @Override + void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { + DocumentData documentData = textAnimation.getValue(); + Font font = composition.getFonts().get(documentData.fontName); + if (font == null) { + return; + } + canvas.save(); + canvas.concat(parentMatrix); + + configurePaint(documentData, parentAlpha); + + if (lottieDrawable.useTextGlyphs()) { + drawTextWithGlyphs(documentData, parentMatrix, font, canvas); + } else { + drawTextWithFont(documentData, font, canvas); + } + + canvas.restore(); + } + + private void configurePaint(DocumentData documentData, int parentAlpha) { + if (colorCallbackAnimation != null) { + fillPaint.setColor(colorCallbackAnimation.getValue()); + } else if (colorAnimation != null) { + fillPaint.setColor(colorAnimation.getValue()); + } else { + fillPaint.setColor(documentData.color); + } + + if (strokeColorCallbackAnimation != null) { + strokePaint.setColor(strokeColorCallbackAnimation.getValue()); + } else if (strokeColorAnimation != null) { + strokePaint.setColor(strokeColorAnimation.getValue()); + } else { + strokePaint.setColor(documentData.strokeColor); + } + int opacity = transform.getOpacity() == null ? 100 : transform.getOpacity().getValue(); + int alpha = opacity * 255 / 100 * parentAlpha / 255; + fillPaint.setAlpha(alpha); + strokePaint.setAlpha(alpha); + + if (strokeWidthCallbackAnimation != null) { + strokePaint.setStrokeWidth(strokeWidthCallbackAnimation.getValue()); + } else if (strokeWidthAnimation != null) { + strokePaint.setStrokeWidth(strokeWidthAnimation.getValue()); + } else { + strokePaint.setStrokeWidth(documentData.strokeWidth * Utils.dpScale()); + } + } + + private void drawTextWithGlyphs( + DocumentData documentData, Matrix parentMatrix, Font font, Canvas canvas) { + float textSize; + if (textSizeCallbackAnimation != null) { + textSize = textSizeCallbackAnimation.getValue(); + } else { + textSize = documentData.size; + } + float fontScale = textSize / 100f; + float parentScale = Utils.getScale(parentMatrix); + + String text = documentData.text; + + // Split full text in multiple lines + List textLines = getTextLines(text); + int textLineCount = textLines.size(); + // Add tracking + float tracking = documentData.tracking / 10f; + if (trackingCallbackAnimation != null) { + tracking += trackingCallbackAnimation.getValue(); + } else if (trackingAnimation != null) { + tracking += trackingAnimation.getValue(); + } + int lineIndex = -1; + for (int i = 0; i < textLineCount; i++) { + String textLine = textLines.get(i); + float boxWidth = documentData.boxSize == null ? 0f : documentData.boxSize.x; + List lines = splitGlyphTextIntoLines(textLine, boxWidth, font, fontScale, tracking, true); + for (int j = 0; j < lines.size(); j++) { + TextSubLine line = lines.get(j); + lineIndex++; + + canvas.save(); + + if (offsetCanvas(canvas, documentData, lineIndex, line.width)) { + drawGlyphTextLine(line.text, documentData, font, canvas, parentScale, fontScale, tracking); + } + + canvas.restore(); + } + } + } + + private void drawGlyphTextLine(String text, DocumentData documentData, + Font font, Canvas canvas, float parentScale, float fontScale, float tracking) { + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + int characterHash = FontCharacter.hashFor(c, font.getFamily(), font.getStyle()); + FontCharacter character = composition.getCharacters().get(characterHash); + if (character == null) { + // Something is wrong. Potentially, they didn't export the text as a glyph. + continue; + } + drawCharacterAsGlyph(character, fontScale, documentData, canvas); + float tx = (float) character.getWidth() * fontScale * Utils.dpScale() + tracking; + canvas.translate(tx, 0); + } + } + + private void drawTextWithFont(DocumentData documentData, Font font, Canvas canvas) { + Typeface typeface = getTypeface(font); + if (typeface == null) { + return; + } + String text = documentData.text; + TextDelegate textDelegate = lottieDrawable.getTextDelegate(); + if (textDelegate != null) { + text = textDelegate.getTextInternal(getName(), text); + } + fillPaint.setTypeface(typeface); + float textSize; + if (textSizeCallbackAnimation != null) { + textSize = textSizeCallbackAnimation.getValue(); + } else { + textSize = documentData.size; + } + fillPaint.setTextSize(textSize * Utils.dpScale()); + strokePaint.setTypeface(fillPaint.getTypeface()); + strokePaint.setTextSize(fillPaint.getTextSize()); + + // Calculate tracking + float tracking = documentData.tracking / 10f; + if (trackingCallbackAnimation != null) { + tracking += trackingCallbackAnimation.getValue(); + } else if (trackingAnimation != null) { + tracking += trackingAnimation.getValue(); + } + tracking = tracking * Utils.dpScale() * textSize / 100.0f; + + // Split full text in multiple lines + List textLines = getTextLines(text); + int textLineCount = textLines.size(); + int lineIndex = -1; + for (int i = 0; i < textLineCount; i++) { + String textLine = textLines.get(i); + float boxWidth = documentData.boxSize == null ? 0f : documentData.boxSize.x; + List lines = splitGlyphTextIntoLines(textLine, boxWidth, font, 0f, tracking, false); + for (int j = 0; j < lines.size(); j++) { + TextSubLine line = lines.get(j); + lineIndex++; + + canvas.save(); + + if (offsetCanvas(canvas, documentData, lineIndex, line.width)) { + drawFontTextLine(line.text, documentData, canvas, tracking); + } + + canvas.restore(); + } + } + } + + private boolean offsetCanvas(Canvas canvas, DocumentData documentData, int lineIndex, float lineWidth) { + PointF position = documentData.boxPosition; + PointF size = documentData.boxSize; + float dpScale = Utils.dpScale(); + float lineStartY = position == null ? 0f : documentData.lineHeight * dpScale + position.y; + float lineOffset = (lineIndex * documentData.lineHeight * dpScale) + lineStartY; + if (lottieDrawable.getClipTextToBoundingBox() && size != null && position != null && lineOffset >= position.y + size.y + documentData.size) { + return false; + } + float lineStart = position == null ? 0f : position.x; + float boxWidth = size == null ? 0f : size.x; + switch (documentData.justification) { + case LEFT_ALIGN: + canvas.translate(lineStart, lineOffset); + break; + case RIGHT_ALIGN: + canvas.translate(lineStart + boxWidth - lineWidth, lineOffset); + break; + case CENTER: + canvas.translate(lineStart + boxWidth / 2f - lineWidth / 2f, lineOffset); + break; + } + return true; + } + + @Nullable + private Typeface getTypeface(Font font) { + if (typefaceCallbackAnimation != null) { + Typeface callbackTypeface = typefaceCallbackAnimation.getValue(); + if (callbackTypeface != null) { + return callbackTypeface; + } + } + Typeface drawableTypeface = lottieDrawable.getTypeface(font); + if (drawableTypeface != null) { + return drawableTypeface; + } + return font.getTypeface(); + } + + private List getTextLines(String text) { + // Split full text by carriage return character + String formattedText = text.replaceAll("\r\n", "\r") + .replaceAll("\u0003", "\r") + .replaceAll("\n", "\r"); + String[] textLinesArray = formattedText.split("\r"); + return Arrays.asList(textLinesArray); + } + + private void drawFontTextLine(String text, DocumentData documentData, Canvas canvas, float tracking) { + for (int i = 0; i < text.length(); ) { + String charString = codePointToString(text, i); + i += charString.length(); + drawCharacterFromFont(charString, documentData, canvas); + float charWidth = fillPaint.measureText(charString); + float tx = charWidth + tracking; + canvas.translate(tx, 0); + } + } + + private List splitGlyphTextIntoLines(String textLine, float boxWidth, Font font, float fontScale, float tracking, + boolean usingGlyphs) { + int lineCount = 0; + + float currentLineWidth = 0; + int currentLineStartIndex = 0; + + int currentWordStartIndex = 0; + float currentWordWidth = 0f; + boolean nextCharacterStartsWord = false; + + // The measured size of a space. + float spaceWidth = 0f; + + for (int i = 0; i < textLine.length(); i++) { + char c = textLine.charAt(i); + float currentCharWidth; + if (usingGlyphs) { + int characterHash = FontCharacter.hashFor(c, font.getFamily(), font.getStyle()); + FontCharacter character = composition.getCharacters().get(characterHash); + if (character == null) { + continue; + } + currentCharWidth = (float) character.getWidth() * fontScale * Utils.dpScale() + tracking; + } else { + currentCharWidth = fillPaint.measureText(textLine.substring(i, i + 1)) + tracking; + } + + if (c == ' ') { + spaceWidth = currentCharWidth; + nextCharacterStartsWord = true; + } else if (nextCharacterStartsWord) { + nextCharacterStartsWord = false; + currentWordStartIndex = i; + currentWordWidth = currentCharWidth; + } else { + currentWordWidth += currentCharWidth; + } + currentLineWidth += currentCharWidth; + + if (boxWidth > 0f && currentLineWidth >= boxWidth) { + if (c == ' ') { + // Spaces at the end of a line don't do anything. Ignore it. + // The next non-space character will hit the conditions below. + continue; + } + TextSubLine subLine = ensureEnoughSubLines(++lineCount); + if (currentWordStartIndex == currentLineStartIndex) { + // Only word on line is wider than box, start wrapping mid-word. + String substr = textLine.substring(currentLineStartIndex, i); + String trimmed = substr.trim(); + float trimmedSpace = (trimmed.length() - substr.length()) * spaceWidth; + subLine.set(trimmed, currentLineWidth - currentCharWidth - trimmedSpace); + currentLineStartIndex = i; + currentLineWidth = currentCharWidth; + currentWordStartIndex = currentLineStartIndex; + currentWordWidth = currentCharWidth; + } else { + String substr = textLine.substring(currentLineStartIndex, currentWordStartIndex - 1); + String trimmed = substr.trim(); + float trimmedSpace = (substr.length() - trimmed.length()) * spaceWidth; + subLine.set(trimmed, currentLineWidth - currentWordWidth - trimmedSpace - spaceWidth); + currentLineStartIndex = currentWordStartIndex; + currentLineWidth = currentWordWidth; + } + } + } + if (currentLineWidth > 0f) { + TextSubLine line = ensureEnoughSubLines(++lineCount); + line.set(textLine.substring(currentLineStartIndex), currentLineWidth); + } + return textSubLines.subList(0, lineCount); + } + + /** + * Elements are reused and not deleted to save allocations. + */ + private TextSubLine ensureEnoughSubLines(int numLines) { + for (int i = textSubLines.size(); i < numLines; i++) { + textSubLines.add(new TextSubLine()); + } + return textSubLines.get(numLines - 1); + } + + private void drawCharacterAsGlyph( + FontCharacter character, + float fontScale, + DocumentData documentData, + Canvas canvas) { + List contentGroups = getContentsForCharacter(character); + for (int j = 0; j < contentGroups.size(); j++) { + Path path = contentGroups.get(j).getPath(); + path.computeBounds(rectF, false); + matrix.reset(); + matrix.preTranslate(0, -documentData.baselineShift * Utils.dpScale()); + matrix.preScale(fontScale, fontScale); + path.transform(matrix); + if (documentData.strokeOverFill) { + drawGlyph(path, fillPaint, canvas); + drawGlyph(path, strokePaint, canvas); + } else { + drawGlyph(path, strokePaint, canvas); + drawGlyph(path, fillPaint, canvas); + } + } + } + + private void drawGlyph(Path path, Paint paint, Canvas canvas) { + if (paint.getColor() == Color.TRANSPARENT) { + return; + } + if (paint.getStyle() == Paint.Style.STROKE && paint.getStrokeWidth() == 0) { + return; + } + canvas.drawPath(path, paint); + } + + private void drawCharacterFromFont(String character, DocumentData documentData, Canvas canvas) { + if (documentData.strokeOverFill) { + drawCharacter(character, fillPaint, canvas); + drawCharacter(character, strokePaint, canvas); + } else { + drawCharacter(character, strokePaint, canvas); + drawCharacter(character, fillPaint, canvas); + } + } + + private void drawCharacter(String character, Paint paint, Canvas canvas) { + if (paint.getColor() == Color.TRANSPARENT) { + return; + } + if (paint.getStyle() == Paint.Style.STROKE && paint.getStrokeWidth() == 0) { + return; + } + canvas.drawText(character, 0, character.length(), 0, 0, paint); + } + + private List getContentsForCharacter(FontCharacter character) { + if (contentsForCharacter.containsKey(character)) { + return contentsForCharacter.get(character); + } + List shapes = character.getShapes(); + int size = shapes.size(); + List contents = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + ShapeGroup sg = shapes.get(i); + contents.add(new ContentGroup(lottieDrawable, this, sg, composition)); + } + contentsForCharacter.put(character, contents); + return contents; + } + + private String codePointToString(String text, int startIndex) { + int firstCodePoint = text.codePointAt(startIndex); + int firstCodePointLength = Character.charCount(firstCodePoint); + int key = firstCodePoint; + int index = startIndex + firstCodePointLength; + while (index < text.length()) { + int nextCodePoint = text.codePointAt(index); + if (!isModifier(nextCodePoint)) { + break; + } + int nextCodePointLength = Character.charCount(nextCodePoint); + index += nextCodePointLength; + key = key * 31 + nextCodePoint; + } + + if (codePointCache.containsKey(key)) { + return codePointCache.get(key); + } + + stringBuilder.setLength(0); + for (int i = startIndex; i < index; ) { + int codePoint = text.codePointAt(i); + stringBuilder.appendCodePoint(codePoint); + i += Character.charCount(codePoint); + } + String str = stringBuilder.toString(); + codePointCache.put(key, str); + return str; + } + + private boolean isModifier(int codePoint) { + return Character.getType(codePoint) == Character.FORMAT || + Character.getType(codePoint) == Character.MODIFIER_SYMBOL || + Character.getType(codePoint) == Character.NON_SPACING_MARK || + Character.getType(codePoint) == Character.OTHER_SYMBOL || + Character.getType(codePoint) == Character.DIRECTIONALITY_NONSPACING_MARK || + Character.getType(codePoint) == Character.SURROGATE; + } + + @SuppressWarnings("unchecked") + @Override + public void addValueCallback(T property, @Nullable LottieValueCallback callback) { + super.addValueCallback(property, callback); + if (property == LottieProperty.COLOR) { + if (colorCallbackAnimation != null) { + removeAnimation(colorCallbackAnimation); + } + + if (callback == null) { + colorCallbackAnimation = null; + } else { + colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + colorCallbackAnimation.addUpdateListener(this); + addAnimation(colorCallbackAnimation); + } + } else if (property == LottieProperty.STROKE_COLOR) { + if (strokeColorCallbackAnimation != null) { + removeAnimation(strokeColorCallbackAnimation); + } + + if (callback == null) { + strokeColorCallbackAnimation = null; + } else { + strokeColorCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + strokeColorCallbackAnimation.addUpdateListener(this); + addAnimation(strokeColorCallbackAnimation); + } + } else if (property == LottieProperty.STROKE_WIDTH) { + if (strokeWidthCallbackAnimation != null) { + removeAnimation(strokeWidthCallbackAnimation); + } + + if (callback == null) { + strokeWidthCallbackAnimation = null; + } else { + strokeWidthCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + strokeWidthCallbackAnimation.addUpdateListener(this); + addAnimation(strokeWidthCallbackAnimation); + } + } else if (property == LottieProperty.TEXT_TRACKING) { + if (trackingCallbackAnimation != null) { + removeAnimation(trackingCallbackAnimation); + } + + if (callback == null) { + trackingCallbackAnimation = null; + } else { + trackingCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + trackingCallbackAnimation.addUpdateListener(this); + addAnimation(trackingCallbackAnimation); + } + } else if (property == LottieProperty.TEXT_SIZE) { + if (textSizeCallbackAnimation != null) { + removeAnimation(textSizeCallbackAnimation); + } + + if (callback == null) { + textSizeCallbackAnimation = null; + } else { + textSizeCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + textSizeCallbackAnimation.addUpdateListener(this); + addAnimation(textSizeCallbackAnimation); + } + } else if (property == LottieProperty.TYPEFACE) { + if (typefaceCallbackAnimation != null) { + removeAnimation(typefaceCallbackAnimation); + } + + if (callback == null) { + typefaceCallbackAnimation = null; + } else { + typefaceCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); + typefaceCallbackAnimation.addUpdateListener(this); + addAnimation(typefaceCallbackAnimation); + } + } else if (property == LottieProperty.TEXT) { + textAnimation.setStringValueCallback((LottieValueCallback) callback); + } + } + + private static class TextSubLine { + + private String text = ""; + private float width = 0f; + + void set(String text, float width) { + this.text = text; + this.width = width; + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java new file mode 100644 index 00000000..761ae4b3 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.model.layer; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt new file mode 100644 index 00000000..75a9431a --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt @@ -0,0 +1,115 @@ +package com.airbnb.lottie.utils + +import android.animation.TimeInterpolator +import android.animation.ValueAnimator +import android.os.Build +import java.util.concurrent.CopyOnWriteArraySet + +abstract class BaseLottieAnimator : ValueAnimator() { + private val updateListeners: MutableSet = CopyOnWriteArraySet() + private val listeners: MutableSet = CopyOnWriteArraySet() + private val pauseListeners: MutableSet = CopyOnWriteArraySet() + + + override fun getStartDelay(): Long { + throw UnsupportedOperationException("LottieAnimator does not support getStartDelay.") + } + + override fun setStartDelay(startDelay: Long) { + throw UnsupportedOperationException("LottieAnimator does not support setStartDelay.") + } + + override fun setDuration(duration: Long): ValueAnimator { + throw UnsupportedOperationException("LottieAnimator does not support setDuration.") + } + + override fun setInterpolator(value: TimeInterpolator) { + throw UnsupportedOperationException("LottieAnimator does not support setInterpolator.") + } + + override fun addUpdateListener(listener: AnimatorUpdateListener) { + updateListeners.add(listener) + } + + override fun removeUpdateListener(listener: AnimatorUpdateListener) { + updateListeners.remove(listener) + } + + override fun removeAllUpdateListeners() { + updateListeners.clear() + } + + override fun addListener(listener: AnimatorListener) { + listeners.add(listener) + } + + override fun removeListener(listener: AnimatorListener) { + listeners.remove(listener) + } + + override fun removeAllListeners() { + listeners.clear() + } + + fun notifyStart(isReverse: Boolean) { + for (listener in listeners) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + listener.onAnimationStart(this, isReverse) + } else { + listener.onAnimationStart(this) + } + } + } + + override fun addPauseListener(listener: AnimatorPauseListener) { + pauseListeners.add(listener) + } + + override fun removePauseListener(listener: AnimatorPauseListener) { + pauseListeners.remove(listener) + } + + fun notifyRepeat() { + for (listener in listeners) { + listener.onAnimationRepeat(this) + } + } + + fun notifyEnd(isReverse: Boolean) { + for (listener in listeners) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + listener.onAnimationEnd(this, isReverse) + } else { + listener.onAnimationEnd(this) + } + } + } + + open fun notifyCancel() { + for (listener in listeners) { + listener.onAnimationCancel(this) + } + } + + fun notifyUpdate() { + for (listener in updateListeners) { + listener.onAnimationUpdate(this) + } + } + + fun notifyPause() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + for (pauseListener in pauseListeners) { + pauseListener.onAnimationPause(this) + } + } + } + + fun notifyResume() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + for (pauseListener in pauseListeners) { + pauseListener.onAnimationResume(this) + } + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt new file mode 100644 index 00000000..1566e008 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt @@ -0,0 +1,74 @@ +package com.airbnb.lottie.utils + +import kotlin.math.pow + +/** + * Use this instead of [android.animation.ArgbEvaluator] because it interpolates through the gamma color + * space which looks better to us humans. + * + * + * Written by Romain Guy and Francois Blavoet. + * https://androidstudygroup.slack.com/archives/animation/p1476461064000335 + */ +object GammaEvaluator { + // Opto-electronic conversion function for the sRGB color space + // Takes a gamma-encoded sRGB value and converts it to a linear sRGB value + private fun OECF_sRGB(linear: Float): Float { + // IEC 61966-2-1:1999 + return if (linear <= 0.0031308f) linear * 12.92f else ((linear.pow((1.0f / 2.4f)) * 1.055f) - 0.055f).toFloat() + } + + // Electro-optical conversion function for the sRGB color space + // Takes a linear sRGB value and converts it to a gamma-encoded sRGB value + private fun EOCF_sRGB(srgb: Float): Float { + // IEC 61966-2-1:1999 + return if (srgb <= 0.04045f) srgb / 12.92f else ((srgb + 0.055f) / 1.055f).pow(2.4f) as Float + } + + fun evaluate(fraction: Float, startInt: Int, endInt: Int): Int { + // Fast return in case start and end is the same + // or if fraction is at start/end or out of [0,1] bounds + if (startInt == endInt) { + return startInt + } else if (fraction <= 0f) { + return startInt + } else if (fraction >= 1f) { + return endInt + } + + val startA = ((startInt shr 24) and 0xff) / 255.0f + var startR = ((startInt shr 16) and 0xff) / 255.0f + var startG = ((startInt shr 8) and 0xff) / 255.0f + var startB = (startInt and 0xff) / 255.0f + + val endA = ((endInt shr 24) and 0xff) / 255.0f + var endR = ((endInt shr 16) and 0xff) / 255.0f + var endG = ((endInt shr 8) and 0xff) / 255.0f + var endB = (endInt and 0xff) / 255.0f + + // convert from sRGB to linear + startR = EOCF_sRGB(startR) + startG = EOCF_sRGB(startG) + startB = EOCF_sRGB(startB) + + endR = EOCF_sRGB(endR) + endG = EOCF_sRGB(endG) + endB = EOCF_sRGB(endB) + + // compute the interpolated color in linear space + var a = startA + fraction * (endA - startA) + var r = startR + fraction * (endR - startR) + var g = startG + fraction * (endG - startG) + var b = startB + fraction * (endB - startB) + + // convert back to sRGB in the [0..255] range + a = a * 255.0f + r = OECF_sRGB(r) * 255.0f + g = OECF_sRGB(g) * 255.0f + b = OECF_sRGB(b) * 255.0f + + return Math.round(a) shl 24 or (Math.round(r) shl 16) or (Math.round(g) shl 8) or Math.round( + b + ) + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt new file mode 100644 index 00000000..5c13c2e9 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt @@ -0,0 +1,320 @@ +package com.airbnb.lottie.utils + +import android.animation.ValueAnimator +import android.view.Choreographer +import androidx.annotation.FloatRange +import androidx.annotation.MainThread +import androidx.annotation.VisibleForTesting +import com.airbnb.lottie.LottieComposition +import kotlin.math.abs +import kotlin.math.floor +import kotlin.math.max +import kotlin.math.min + +/** + * This is a slightly modified [ValueAnimator] that allows us to update start and end values + * easily optimizing for the fact that we know that it's a value animator with 2 floats. + */ +class LottieValueAnimator : BaseLottieAnimator(), Choreographer.FrameCallback { + /** + * Returns the current speed. This will be affected by repeat mode REVERSE. + */ + @JvmField + var speed: Float = 1f + private var speedReversedForRepeatMode = false + private var lastFrameTimeNs: Long = 0 + private var frameRaw = 0f + private var frame = 0f + private var repeatCount = 0 + private var minFrame = Int.MIN_VALUE.toFloat() + private var maxFrame = Int.MAX_VALUE.toFloat() + private var composition: LottieComposition? = null + + @VisibleForTesting + protected var running: Boolean = false + private var useCompositionFrameRate = false + + /** + * Returns a float representing the current value of the animation from 0 to 1 + * regardless of the animation speed, direction, or min and max frames. + */ + override fun getAnimatedValue(): Any { + return animatedValueAbsolute + } + + val animatedValueAbsolute: Float + /** + * Returns the current value of the animation from 0 to 1 regardless + * of the animation speed, direction, or min and max frames. + */ + get() { + if (composition == null) { + return 0f + } + return (frame - composition!!.startFrame) / (composition!!.endFrame - composition!!.startFrame) + } + + /** + * Returns the current value of the currently playing animation taking into + * account direction, min and max frames. + */ + override fun getAnimatedFraction(): Float { + if (composition == null) { + return 0f + } + return if (isReversed) { + (getMaxFrame() - frame) / (getMaxFrame() - getMinFrame()) + } else { + (frame - getMinFrame()) / (getMaxFrame() - getMinFrame()) + } + } + + override fun getDuration(): Long { + return if (composition == null) 0 else composition!!.duration.toLong() + } + + fun getFrame(): Float { + return frame + } + + override fun isRunning(): Boolean { + return running + } + + fun setUseCompositionFrameRate(useCompositionFrameRate: Boolean) { + this.useCompositionFrameRate = useCompositionFrameRate + } + + override fun doFrame(frameTimeNanos: Long) { + postFrameCallback() + if (composition == null || !isRunning) { + return + } + + val timeSinceFrame = if (lastFrameTimeNs == 0L) 0 else frameTimeNanos - lastFrameTimeNs + val frameDuration = frameDurationNs + val dFrames = timeSinceFrame / frameDuration + + val newFrameRaw = frameRaw + (if (isReversed) -dFrames else dFrames) + val ended = !MiscUtils.contains(newFrameRaw, getMinFrame(), getMaxFrame()) + val previousFrameRaw = frameRaw + frameRaw = MiscUtils.clamp(newFrameRaw, getMinFrame(), getMaxFrame()) + frame = if (useCompositionFrameRate) floor(frameRaw.toDouble()).toFloat() else frameRaw + + lastFrameTimeNs = frameTimeNanos + + if (!useCompositionFrameRate || frameRaw != previousFrameRaw) { + notifyUpdate() + } + if (ended) { + if (getRepeatCount() != ValueAnimator.INFINITE && repeatCount >= getRepeatCount()) { + frameRaw = if (speed < 0) getMinFrame() else getMaxFrame() + frame = frameRaw + removeFrameCallback() + notifyEnd(isReversed) + } else { + notifyRepeat() + repeatCount++ + if (repeatMode == ValueAnimator.REVERSE) { + speedReversedForRepeatMode = !speedReversedForRepeatMode + reverseAnimationSpeed() + } else { + frameRaw = if (isReversed) getMaxFrame() else getMinFrame() + frame = frameRaw + } + lastFrameTimeNs = frameTimeNanos + } + } + + verifyFrame() + } + + private val frameDurationNs: Float + get() { + if (composition == null) { + return Float.MAX_VALUE + } + return (Utils.SECOND_IN_NANOS / composition!!.frameRate / abs( + speed.toDouble() + )).toFloat() + } + + fun clearComposition() { + this.composition = null + minFrame = Int.MIN_VALUE.toFloat() + maxFrame = Int.MAX_VALUE.toFloat() + } + + fun setComposition(composition: LottieComposition) { + // Because the initial composition is loaded async, the first min/max frame may be set + val keepMinAndMaxFrames = this.composition == null + this.composition = composition + + if (keepMinAndMaxFrames) { + setMinAndMaxFrames( + max(minFrame.toDouble(), composition.startFrame.toDouble()) + .toFloat(), + min(maxFrame.toDouble(), composition.endFrame.toDouble()) + .toFloat() + ) + } else { + setMinAndMaxFrames( + composition.startFrame.toInt().toFloat(), composition.endFrame.toInt().toFloat() + ) + } + val frame = this.frame + this.frame = 0f + this.frameRaw = 0f + setFrame(frame.toInt().toFloat()) + notifyUpdate() + } + + fun setFrame(frame: Float) { + if (this.frameRaw == frame) { + return + } + this.frameRaw = MiscUtils.clamp(frame, getMinFrame(), getMaxFrame()) + this.frame = if (useCompositionFrameRate) (floor(frameRaw.toDouble()) + .toFloat()) else frameRaw + lastFrameTimeNs = 0 + notifyUpdate() + } + + fun setMinFrame(minFrame: Int) { + setMinAndMaxFrames(minFrame.toFloat(), maxFrame.toInt().toFloat()) + } + + fun setMaxFrame(maxFrame: Float) { + setMinAndMaxFrames(minFrame, maxFrame) + } + + fun setMinAndMaxFrames(minFrame: Float, maxFrame: Float) { + require(!(minFrame > maxFrame)) { + String.format( + "minFrame (%s) must be <= maxFrame (%s)", + minFrame, + maxFrame + ) + } + val compositionMinFrame = + if (composition == null) -Float.MAX_VALUE else composition!!.startFrame + val compositionMaxFrame = + if (composition == null) Float.MAX_VALUE else composition!!.endFrame + val newMinFrame = MiscUtils.clamp(minFrame, compositionMinFrame, compositionMaxFrame) + val newMaxFrame = MiscUtils.clamp(maxFrame, compositionMinFrame, compositionMaxFrame) + if (newMinFrame != this.minFrame || newMaxFrame != this.maxFrame) { + this.minFrame = newMinFrame + this.maxFrame = newMaxFrame + setFrame(MiscUtils.clamp(frame, newMinFrame, newMaxFrame).toInt().toFloat()) + } + } + + fun reverseAnimationSpeed() { + speed = -speed + } + + override fun setRepeatMode(value: Int) { + super.setRepeatMode(value) + if (value != ValueAnimator.REVERSE && speedReversedForRepeatMode) { + speedReversedForRepeatMode = false + reverseAnimationSpeed() + } + } + + @MainThread + fun playAnimation() { + running = true + notifyStart(isReversed) + setFrame((if (isReversed) getMaxFrame() else getMinFrame()).toInt().toFloat()) + lastFrameTimeNs = 0 + repeatCount = 0 + postFrameCallback() + } + + @MainThread + fun endAnimation() { + removeFrameCallback() + notifyEnd(isReversed) + } + + @MainThread + fun pauseAnimation() { + removeFrameCallback() + notifyPause() + } + + @MainThread + fun resumeAnimation() { + running = true + postFrameCallback() + lastFrameTimeNs = 0 + if (isReversed && getFrame() == getMinFrame()) { + setFrame(getMaxFrame()) + } else if (!isReversed && getFrame() == getMaxFrame()) { + setFrame(getMinFrame()) + } + notifyResume() + } + + @MainThread + override fun cancel() { + notifyCancel() + removeFrameCallback() + } + + private val isReversed: Boolean + get() = speed < 0 + + fun getMinFrame(): Float { + if (composition == null) { + return 0f + } + return if (minFrame.toInt() == Int.MIN_VALUE) composition!!.startFrame else minFrame + } + + fun getMaxFrame(): Float { + if (composition == null) { + return 0f + } + return if (maxFrame.toInt() == Int.MAX_VALUE) composition!!.endFrame else maxFrame + } + + override fun notifyCancel() { + super.notifyCancel() + notifyEnd(isReversed) + } + + protected fun postFrameCallback() { + if (isRunning) { + removeFrameCallback(false) + Choreographer.getInstance().postFrameCallback(this) + } + } + + @MainThread + protected fun removeFrameCallback() { + this.removeFrameCallback(true) + } + + @MainThread + protected fun removeFrameCallback(stopRunning: Boolean) { + Choreographer.getInstance().removeFrameCallback(this) + if (stopRunning) { + running = false + } + } + + private fun verifyFrame() { + if (composition == null) { + return + } + check(!(frame < minFrame || frame > maxFrame)) { + String.format( + "Frame must be [%f,%f]. It is %f", + minFrame, + maxFrame, + frame + ) + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt new file mode 100644 index 00000000..6b30e7fd --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt @@ -0,0 +1,120 @@ +package com.airbnb.lottie.utils + +import android.graphics.Path +import android.graphics.PointF +import androidx.annotation.FloatRange +import com.airbnb.lottie.animation.content.KeyPathElementContent +import com.airbnb.lottie.model.KeyPath +import com.airbnb.lottie.model.content.ShapeData +import kotlin.math.max +import kotlin.math.min + +object MiscUtils { + private val pathFromDataCurrentPoint = PointF() + + fun addPoints(p1: PointF, p2: PointF): PointF { + return PointF(p1.x + p2.x, p1.y + p2.y) + } + + @JvmStatic + fun getPathFromData(shapeData: ShapeData, outPath: Path) { + outPath.reset() + val initialPoint = shapeData.initialPoint + outPath.moveTo(initialPoint.x, initialPoint.y) + pathFromDataCurrentPoint[initialPoint.x] = initialPoint.y + for (i in shapeData.curves.indices) { + val curveData = shapeData.curves[i] + val cp1 = curveData.controlPoint1 + val cp2 = curveData.controlPoint2 + val vertex = curveData.vertex + + if (cp1 == pathFromDataCurrentPoint && cp2 == vertex) { + // On some phones like Samsung phones, zero valued control points can cause artifacting. + // https://github.com/airbnb/lottie-android/issues/275 + // + // This does its best to add a tiny value to the vertex without affecting the final + // animation as much as possible. + // outPath.rMoveTo(0.01f, 0.01f); + outPath.lineTo(vertex.x, vertex.y) + } else { + outPath.cubicTo(cp1.x, cp1.y, cp2.x, cp2.y, vertex.x, vertex.y) + } + pathFromDataCurrentPoint[vertex.x] = vertex.y + } + if (shapeData.isClosed) { + outPath.close() + } + } + + @JvmStatic + fun lerp(a: Float, b: Float, percentage: Float): Float { + return a + percentage * (b - a) + } + + fun lerp(a: Double, b: Double, percentage: Double): Double { + return a + percentage * (b - a) + } + + @JvmStatic + fun lerp(a: Int, b: Int, percentage: Float): Int { + return (a + percentage * (b - a)).toInt() + } + + fun floorMod(x: Float, y: Float): Int { + return floorMod(x.toInt(), y.toInt()) + } + + private fun floorMod(x: Int, y: Int): Int { + return x - y * floorDiv(x, y) + } + + private fun floorDiv(x: Int, y: Int): Int { + var r = x / y + val sameSign = (x xor y) >= 0 + val mod = x % y + if (!sameSign && mod != 0) { + r-- + } + return r + } + + @JvmStatic + fun clamp(number: Int, min: Int, max: Int): Int { + return max(min.toDouble(), min(max.toDouble(), number.toDouble())).toInt() + } + + @JvmStatic + fun clamp(number: Float, min: Float, max: Float): Float { + return max(min.toDouble(), min(max.toDouble(), number.toDouble())).toFloat() + } + + @JvmStatic + fun clamp(number: Double, min: Double, max: Double): Double { + return max(min, min(max, number)) + } + + fun contains(number: Float, rangeMin: Float, rangeMax: Float): Boolean { + return number >= rangeMin && number <= rangeMax + } + + /** + * Helper method for any [KeyPathElementContent] that will check if the content + * fully matches the keypath then will add itself as the final key, resolve it, and add + * it to the accumulator list. + * + * + * Any [KeyPathElementContent] should call through to this as its implementation of + * [KeyPathElementContent.resolveKeyPath]. + */ + @JvmStatic + fun resolveKeyPath( + keyPath: KeyPath, depth: Int, accumulator: MutableList, + currentPartialKeyPath: KeyPath, content: KeyPathElementContent + ) { + var currentPartialKeyPath = currentPartialKeyPath + if (keyPath.fullyResolvesTo(content.name, depth)) { + currentPartialKeyPath = currentPartialKeyPath.addKey(content.name) + accumulator.add(currentPartialKeyPath.resolve(content)) + } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt new file mode 100644 index 00000000..cf0bbd19 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt @@ -0,0 +1,247 @@ +package com.airbnb.lottie.utils + +import android.content.Context +import android.content.res.Resources +import android.graphics.Bitmap +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathMeasure +import com.airbnb.lottie.L +import com.airbnb.lottie.animation.content.TrimPathContent +import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation +import kotlin.math.abs +import kotlin.math.hypot +import kotlin.math.max +import kotlin.math.min +import kotlin.math.sqrt + +object Utils { + const val SECOND_IN_NANOS: Int = 1000000000 + + private val INV_SQRT_2 = (sqrt(2.0) / 2.0).toFloat() + +// fun createPath(startPoint: Offset, endPoint: Offset, cp1: Offset?, cp2: Offset?): Path { +// val path = Path() +// path.moveTo(startPoint.x, startPoint.y) +// +// if (cp1 != null && cp2 != null && (cp1.length() != 0f || cp2.length() != 0f)) { +// path.cubicTo( +// startPoint.x + cp1.x, startPoint.y + cp1.y, +// endPoint.x + cp2.x, endPoint.y + cp2.y, +// endPoint.x, endPoint.y +// ) +// } else { +// path.lineTo(endPoint.x, endPoint.y) +// } +// return path +// } + + + fun getScale(matrix: Matrix): Float { + + val rect = Rect(0f,0f,INV_SQRT_2,INV_SQRT_2) + val points = FloatArray(4) + + points[0] = 0f + points[1] = 0f + // Use 1/sqrt(2) so that the hypotenuse is of length 1. + points[2] = INV_SQRT_2 + points[3] = INV_SQRT_2 + + matrix.mapPoints(points) + val dx = points[2] - points[0] + val dy = points[3] - points[1] + + return hypot(dx.toDouble(), dy.toDouble()).toFloat() + } + + fun hasZeroScaleAxis(matrix: Matrix): Boolean { + val points = FloatArray(4) + + points[0] = 0f + points[1] = 0f + // Random numbers. The only way these should map to the same thing as 0,0 is if the scale is 0. + points[2] = 37394.729378f + points[3] = 39575.2343807f + matrix.mapPoints(points) + return points[0] == points[2] || points[1] == points[3] + } + + fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathContent?) { + if (trimPath == null || trimPath.isHidden) { + return + } + val start = (trimPath.start as FloatKeyframeAnimation).floatValue + val end = (trimPath.end as FloatKeyframeAnimation).floatValue + val offset = (trimPath.offset as FloatKeyframeAnimation).floatValue + applyTrimPathIfNeeded(path, start / 100f, end / 100f, offset / 360f) + } + + fun applyTrimPathIfNeeded( + path: Path, startValue: Float, endValue: Float, offsetValue: Float + ) { + if (L.isTraceEnabled()) { + L.beginSection("applyTrimPathIfNeeded") + } + val pathMeasure = PathMeasure() + val tempPath = Path() + + pathMeasure.setPath(path, false) + + val length = pathMeasure.length + if (startValue == 1f && endValue == 0f) { + if (L.isTraceEnabled()) { + L.endSection("applyTrimPathIfNeeded") + } + return + } + if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { + if (L.isTraceEnabled()) { + L.endSection("applyTrimPathIfNeeded") + } + return + } + val start = length * startValue + val end = length * endValue + var newStart = min(start.toDouble(), end.toDouble()).toFloat() + var newEnd = max(start.toDouble(), end.toDouble()).toFloat() + + val offset = offsetValue * length + newStart += offset + newEnd += offset + + // If the trim path has rotated around the path, we need to shift it back. + if (newStart >= length && newEnd >= length) { + newStart = MiscUtils.floorMod(newStart, length).toFloat() + newEnd = MiscUtils.floorMod(newEnd, length).toFloat() + } + + if (newStart < 0) { + newStart = MiscUtils.floorMod(newStart, length).toFloat() + } + if (newEnd < 0) { + newEnd = MiscUtils.floorMod(newEnd, length).toFloat() + } + + // If the start and end are equals, return an empty path. + if (newStart == newEnd) { + path.reset() + if (L.isTraceEnabled()) { + L.endSection("applyTrimPathIfNeeded") + } + return + } + + if (newStart >= newEnd) { + newStart -= length + } + + path.reset() + pathMeasure.getSegment( + newStart, + newEnd, + path, + true + ) + + if (newEnd > length) { + tempPath.reset() + pathMeasure.getSegment( + 0f, + newEnd % length, + tempPath, + true + ) + path.addPath(tempPath) + } else if (newStart < 0) { + tempPath.reset() + pathMeasure.getSegment( + length + newStart, + length, + tempPath, + true + ) + path.addPath(tempPath) + } + if (L.isTraceEnabled()) { + L.endSection("applyTrimPathIfNeeded") + } + } + + fun isAtLeastVersion( + major: Int, + minor: Int, + patch: Int, + minMajor: Int, + minMinor: Int, + minPatch: Int + ): Boolean { + if (major < minMajor) { + return false + } else if (major > minMajor) { + return true + } + + if (minor < minMinor) { + return false + } else if (minor > minMinor) { + return true + } + + return patch >= minPatch + } + + fun hashFor(a: Float, b: Float, c: Float, d: Float): Int { + var result = 17 + if (a != 0f) { + result = (31 * result * a).toInt() + } + if (b != 0f) { + result = (31 * result * b).toInt() + } + if (c != 0f) { + result = (31 * result * c).toInt() + } + if (d != 0f) { + result = (31 * result * d).toInt() + } + return result + } + + fun dpScale(): Float { + return Resources.getSystem().displayMetrics.density + } + + fun getAnimationScale(context: Context): Float { + return 1f +// return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { +// Settings.Global.getFloat( +// context.contentResolver, +// Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f +// ) +// } else { +// Settings.System.getFloat( +// context.contentResolver, +// Settings.System.ANIMATOR_DURATION_SCALE, 1.0f +// ) +// } + } + + /** + * Resize the bitmap to exactly the same size as the specified dimension, changing the aspect ratio if needed. + * Returns the original bitmap if the dimensions already match. + */ + fun resizeBitmapIfNeeded(bitmap: Bitmap, width: Int, height: Int): Bitmap { + if (bitmap.width == width && bitmap.height == height) { + return bitmap + } + val resizedBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true) + bitmap.recycle() + return resizedBitmap + } +} + +fun Matrix.mapPoints(floatArray: FloatArray) { + TODO("mapPoints") +} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java new file mode 100644 index 00000000..f0a42a22 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java @@ -0,0 +1,6 @@ +@RestrictTo(LIBRARY) +package com.airbnb.lottie.utils; + +import static androidx.annotation.RestrictTo.Scope.LIBRARY; + +import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt new file mode 100644 index 00000000..9da3cc13 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt @@ -0,0 +1,9 @@ +package com.airbnb.lottie.value + +fun interface Interpolator { + fun getInterpolation(var1: Float): Float + + companion object { + val Linear = Interpolator { it } + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt new file mode 100644 index 00000000..eb8d0502 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt @@ -0,0 +1,199 @@ +package com.airbnb.lottie.value + +import android.graphics.PointF +import android.view.animation.Interpolator +import androidx.annotation.FloatRange +import com.airbnb.lottie.LottieComposition + +open class Keyframe { + private val composition: LottieComposition? + val startValue: T? + var endValue: T? + val interpolator: Interpolator? + val xInterpolator: Interpolator? + val yInterpolator: Interpolator? + val startFrame: Float + var endFrame: Float? + + var startValueFloat: Float = UNSET_FLOAT + /** + * Optimization to avoid autoboxing. + */ + get() { + if (field == UNSET_FLOAT) { + field = startValue as Float? as Float + } + return field + } + private set + var endValueFloat: Float = UNSET_FLOAT + /** + * Optimization to avoid autoboxing. + */ + get() { + if (field == UNSET_FLOAT) { + field = endValue as Float? as Float + } + return field + } + private set + + var startValueInt: Int = UNSET_INT + /** + * Optimization to avoid autoboxing. + */ + get() { + if (field == UNSET_INT) { + field = startValue as Int? as Int + } + return field + } + private set + var endValueInt: Int = UNSET_INT + /** + * Optimization to avoid autoboxing. + */ + get() { + if (field == UNSET_INT) { + field = endValue as Int? as Int + } + return field + } + private set + + var startProgress: Float = Float.MIN_VALUE + get() { + if (composition == null) { + return 0f + } + if (field == Float.MIN_VALUE) { + field = (startFrame - composition.startFrame) / composition.durationFrames + } + return field + } + private set + var endProgress: Float = Float.MIN_VALUE + get() { + if (composition == null) { + return 1f + } + if (field == Float.MIN_VALUE) { + if (endFrame == null) { + field = 1f + } else { + val startProgress = startProgress + val durationFrames = endFrame!! - startFrame + val durationProgress = durationFrames / composition.durationFrames + field = startProgress + durationProgress + } + } + return field + } + private set + + // Used by PathKeyframe but it has to be parsed by KeyFrame because we use a JsonReader to + // deserialzie the data so we have to parse everything in order + var pathCp1: PointF? = null + var pathCp2: PointF? = null + + + constructor( + composition: LottieComposition?, + startValue: T?, endValue: T?, + interpolator: Interpolator?, startFrame: Float, endFrame: Float? + ) { + this.composition = composition + this.startValue = startValue + this.endValue = endValue + this.interpolator = interpolator + xInterpolator = null + yInterpolator = null + this.startFrame = startFrame + this.endFrame = endFrame + } + + constructor( + composition: LottieComposition?, + startValue: T?, + endValue: T?, + xInterpolator: Interpolator?, + yInterpolator: Interpolator?, + startFrame: Float, + endFrame: Float? + ) { + this.composition = composition + this.startValue = startValue + this.endValue = endValue + interpolator = null + this.xInterpolator = xInterpolator + this.yInterpolator = yInterpolator + this.startFrame = startFrame + this.endFrame = endFrame + } + + protected constructor( + composition: LottieComposition?, + startValue: T?, endValue: T?, + interpolator: Interpolator?, xInterpolator: Interpolator?, yInterpolator: Interpolator?, + startFrame: Float, endFrame: Float? + ) { + this.composition = composition + this.startValue = startValue + this.endValue = endValue + this.interpolator = interpolator + this.xInterpolator = xInterpolator + this.yInterpolator = yInterpolator + this.startFrame = startFrame + this.endFrame = endFrame + } + + /** + * Non-animated value. + */ + constructor(value: T) { + composition = null + startValue = value + endValue = value + interpolator = null + xInterpolator = null + yInterpolator = null + startFrame = Float.MIN_VALUE + endFrame = Float.MAX_VALUE + } + + private constructor(startValue: T, endValue: T) { + composition = null + this.startValue = startValue + this.endValue = endValue + interpolator = null + xInterpolator = null + yInterpolator = null + startFrame = Float.MIN_VALUE + endFrame = Float.MAX_VALUE + } + + fun copyWith(startValue: T, endValue: T): Keyframe { + return Keyframe(startValue, endValue) + } + + val isStatic: Boolean + get() = interpolator == null && xInterpolator == null && yInterpolator == null + + fun containsProgress(/*@FloatRange(from = 0f, to = 1f)*/ progress: Float): Boolean { + return progress >= startProgress && progress < endProgress + } + + override fun toString(): String { + return "Keyframe{" + "startValue=" + startValue + + ", endValue=" + endValue + + ", startFrame=" + startFrame + + ", endFrame=" + endFrame + + ", interpolator=" + interpolator + + '}' + } + + companion object { + private const val UNSET_FLOAT = -3987645.78543923f + private const val UNSET_INT = 784923401 + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt new file mode 100644 index 00000000..f8656aa0 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt @@ -0,0 +1,17 @@ +package com.airbnb.lottie.value + +import androidx.annotation.RestrictTo + +/** + * Data class for use with [LottieValueCallback]. + * You should *not* hold a reference to the frame info parameter passed to your callback. It will be reused. + */ +class LottieFrameInfo( + var startFrame: Float = 0f, + var endFrame: Float = 0f, + var startValue: T, + var endValue: T, + var linearKeyframeProgress: Float = 0f, + var interpolatedKeyframeProgress: Float = 0f, + var overallProgress: Float = 0f +) \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt new file mode 100644 index 00000000..c2c74946 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt @@ -0,0 +1,19 @@ +package com.airbnb.lottie.value + +import androidx.compose.ui.util.lerp + +@Suppress("unused") +class LottieInterpolatedFloatValue( + startValue: Float, + endValue: Float, + interpolator: Interpolator = Interpolator.Linear +) : LottieInterpolatedValue(startValue, endValue, interpolator) { + + override fun interpolateValue( + startValue: Float, + endValue: Float, + progress: Float + ): Float { + return lerp(startValue, endValue, progress) + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt new file mode 100644 index 00000000..9af254c3 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt @@ -0,0 +1,13 @@ +package com.airbnb.lottie.value + +import androidx.compose.ui.util.lerp + +@Suppress("unused") +class LottieInterpolatedIntegerValue( + startValue: Int, endValue: Int, interpolator: Interpolator +) : LottieInterpolatedValue(startValue, endValue, interpolator) { + + public override fun interpolateValue(startValue: Int, endValue: Int, progress: Float): Int { + return lerp(startValue, endValue, progress) + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt new file mode 100644 index 00000000..04a9fbfa --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt @@ -0,0 +1,22 @@ +package com.airbnb.lottie.value + +import android.graphics.PointF +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.lerp + + +@Suppress("unused") +class LottieInterpolatedPointValue( + startValue: Offset, + endValue: Offset, + interpolator: Interpolator = Interpolator.Linear +) : LottieInterpolatedValue(startValue, endValue, interpolator) { + + public override fun interpolateValue( + startValue: Offset, + endValue: Offset, + progress: Float + ): Offset { + return lerp(startValue, endValue, progress) + } +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt new file mode 100644 index 00000000..38b60622 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt @@ -0,0 +1,15 @@ +package com.airbnb.lottie.value + +abstract class LottieInterpolatedValue @JvmOverloads constructor( + private val startValue: T, + private val endValue: T, + private val interpolator: Interpolator = Interpolator.Linear +) : LottieValueCallback() { + + override fun getValue(frameInfo: LottieFrameInfo): T { + val progress = interpolator.getInterpolation(frameInfo.overallProgress) + return interpolateValue(this.startValue, this.endValue, progress) + } + + abstract fun interpolateValue(startValue: T, endValue: T, progress: Float): T +} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt new file mode 100644 index 00000000..b3f060f3 --- /dev/null +++ b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt @@ -0,0 +1,16 @@ +package com.airbnb.lottie.value + +class ScaleXY @JvmOverloads constructor(var scaleX: Float = 1f, var scaleY: Float = 1f) { + fun set(scaleX: Float, scaleY: Float) { + this.scaleX = scaleX + this.scaleY = scaleY + } + + fun equals(scaleX: Float, scaleY: Float): Boolean { + return this.scaleX == scaleX && this.scaleY == scaleY + } + + override fun toString(): String { + return scaleX.toString() + "x" + scaleY + } +} diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.android.kt deleted file mode 100644 index ab7b957a..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.android.kt +++ /dev/null @@ -1,247 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import android.graphics.Matrix -import android.graphics.Typeface -import androidx.annotation.FloatRange -import androidx.compose.foundation.Canvas -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.size -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.nativeCanvas -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.unit.IntSize -import androidx.compose.ui.unit.dp -import com.airbnb.lottie.AsyncUpdates -import com.airbnb.lottie.LottieComposition -import com.airbnb.lottie.LottieDrawable -import com.airbnb.lottie.RenderMode -import io.github.alexzhirkevich.compottie.LottieClipSpec -import io.github.alexzhirkevich.compottie.LottieDynamicProperties -import com.airbnb.lottie.utils.Utils -import kotlin.math.roundToInt - -@Composable -actual fun LottieAnimation( - composition : LottieComposition?, - progress : () -> Float, - modifier: Modifier, - alignment: Alignment, - contentScale: ContentScale, - clipToCompositionBounds: Boolean -) = LottieAnimation( - composition = composition, - progress = progress, - modifier = modifier, - alignment = alignment, - contentScale = contentScale, - clipToCompositionBounds = clipToCompositionBounds, - renderMode = RenderMode.AUTOMATIC -) - -/** - * This is the base LottieAnimation composable. It takes a composition and renders it at a specific progress. - * - * The overloaded version of [LottieAnimation] that handles playback and is sufficient for most use cases. - * - * @param composition The composition that will be rendered. To generate a [LottieComposition], you can use - * [rememberLottieComposition]. - * @param progress A provider for the progress (between 0 and 1) that should be rendered. If you want to render a - * specific frame, you can use [LottieComposition.getFrameForProgress]. In most cases, you will want - * to use one of the overloaded LottieAnimation composables that drives the animation for you. - * The overloads that have isPlaying as a parameter instead of progress will drive the - * animation automatically. You may want to use this version if you want to drive the animation - * from your own Animatable or via events such as download progress or a gesture. - * @param outlineMasksAndMattes Enable this to debug slow animations by outlining masks and mattes. - * The performance overhead of the masks and mattes will be proportional to the - * surface area of all of the masks/mattes combined. - * DO NOT leave this enabled in production. - * @param applyOpacityToLayers Sets whether to apply opacity to the each layer instead of shape. - * Opacity is normally applied directly to a shape. In cases where translucent - * shapes overlap, applying opacity to a layer will be more accurate at the - * expense of performance. - * Note: This process is very expensive. The performance impact will be reduced - * when hardware acceleration is enabled. - * @param enableMergePaths Enables experimental merge paths support. Most animations with merge paths will - * want this on but merge path support is more limited than some other rendering - * features so it defaults to off. The only way to know if your animation will work - * well with merge paths or not is to try it. If your animation has merge paths and - * doesn't render correctly, please file an issue. - * @param renderMode Allows you to specify whether you want Lottie to use hardware or software rendering. - * Defaults to AUTOMATIC. Refer to [LottieAnimationView.setRenderMode] for more info. - * @param maintainOriginalImageBounds When true, dynamically set bitmaps will be drawn with the exact bounds of the original animation, - * regardless of the bitmap size. - * When false, dynamically set bitmaps will be drawn at the top left of the original image but with its own bounds. - * Defaults to false. - * @param dynamicProperties Allows you to change the properties of an animation dynamically. To use them, use - * [rememberLottieDynamicProperties]. Refer to its docs for more info. - * @param alignment Define where the animation should be placed within this composable if it has a different - * size than this composable. - * @param contentScale Define how the animation should be scaled if it has a different size than this Composable. - * @param clipToCompositionBounds Determines whether or not Lottie will clip the animation to the original animation composition bounds. - * @param fontMap A map of keys to Typefaces. The key can be: "fName", "fFamily", or "fFamily-fStyle" as specified in your Lottie file. - * @param asyncUpdates When set to true, some parts of animation updates will be done off of the main thread. - * For more details, refer to the docs of [AsyncUpdates]. - */ -@Composable -@JvmOverloads -fun LottieAnimation( - composition: LottieComposition?, - progress: () -> Float, - modifier: Modifier = Modifier, - outlineMasksAndMattes: Boolean = false, - applyOpacityToLayers: Boolean = false, - enableMergePaths: Boolean = false, - renderMode: RenderMode = RenderMode.AUTOMATIC, - maintainOriginalImageBounds: Boolean = false, - dynamicProperties: LottieDynamicProperties? = null, - alignment: Alignment = Alignment.Center, - contentScale: ContentScale = ContentScale.Fit, - clipToCompositionBounds: Boolean = true, - fontMap: Map? = null, - asyncUpdates: AsyncUpdates = AsyncUpdates.AUTOMATIC, -) { - val drawable = remember { LottieDrawable() } - val matrix = remember { Matrix() } - var setDynamicProperties: LottieDynamicProperties? by remember(composition) { mutableStateOf(null) } - - if (composition == null || composition.duration == 0f) return Box(modifier) - - val dpScale = Utils.dpScale() - Canvas( - modifier = modifier - .size((composition.bounds.width() / dpScale).dp, (composition.bounds.height() / dpScale).dp) - ) { - drawIntoCanvas { canvas -> - val compositionSize = Size(composition.bounds.width().toFloat(), composition.bounds.height().toFloat()) - val intSize = IntSize(size.width.roundToInt(), size.height.roundToInt()) - - val scale = contentScale.computeScaleFactor(compositionSize, size) - val translation = alignment.align(compositionSize * scale, intSize, layoutDirection) - matrix.reset() - matrix.preTranslate(translation.x.toFloat(), translation.y.toFloat()) - matrix.preScale(scale.scaleX, scale.scaleY) - - drawable.enableMergePathsForKitKatAndAbove(enableMergePaths) - drawable.renderMode = renderMode - drawable.asyncUpdates = asyncUpdates - drawable.composition = composition - drawable.setFontMap(fontMap) - if (dynamicProperties !== setDynamicProperties) { - setDynamicProperties?.removeFrom(drawable) - dynamicProperties?.addTo(drawable) - setDynamicProperties = dynamicProperties - } - drawable.setOutlineMasksAndMattes(outlineMasksAndMattes) - drawable.isApplyingOpacityToLayersEnabled = applyOpacityToLayers - drawable.maintainOriginalImageBounds = maintainOriginalImageBounds - drawable.clipToCompositionBounds = clipToCompositionBounds - drawable.progress = progress() - drawable.setBounds(0, 0, composition.bounds.width(), composition.bounds.height()) - drawable.draw(canvas.nativeCanvas, matrix) - } - } -} - -/** - * This is like [LottieAnimation] except that it takes a raw progress parameter instead of taking a progress provider. - * - * @see LottieAnimation - */ -@Composable -@Deprecated("Pass progress as a lambda instead of a float. This overload will be removed in the next release.") -fun LottieAnimation( - composition: LottieComposition?, - @FloatRange(from = 0.0, to = 1.0) progress: Float, - modifier: Modifier = Modifier, - outlineMasksAndMattes: Boolean = false, - applyOpacityToLayers: Boolean = false, - enableMergePaths: Boolean = false, - renderMode: RenderMode = RenderMode.AUTOMATIC, - maintainOriginalImageBounds: Boolean = false, - dynamicProperties: LottieDynamicProperties? = null, - alignment: Alignment = Alignment.Center, - contentScale: ContentScale = ContentScale.Fit, - clipToCompositionBounds: Boolean = true, - asyncUpdates: AsyncUpdates = AsyncUpdates.AUTOMATIC, -) { - LottieAnimation( - composition = composition, - progress = { progress }, - modifier = modifier, - outlineMasksAndMattes = outlineMasksAndMattes, - applyOpacityToLayers = applyOpacityToLayers, - enableMergePaths = enableMergePaths, - renderMode = renderMode, - maintainOriginalImageBounds = maintainOriginalImageBounds, - dynamicProperties = dynamicProperties, - alignment = alignment, - contentScale = contentScale, - clipToCompositionBounds = clipToCompositionBounds, - asyncUpdates = asyncUpdates, - ) -} - -/** - * This is like [LottieAnimation] except that it handles driving the animation via [animateLottieCompositionAsState] - * instead of taking a progress provider. - * - * @see LottieAnimation - * @see animateLottieCompositionAsState - */ -@Composable -@JvmOverloads -fun LottieAnimation( - composition: LottieComposition?, - modifier: Modifier = Modifier, - isPlaying: Boolean = true, - restartOnPlay: Boolean = true, - clipSpec: LottieClipSpec? = null, - speed: Float = 1f, - iterations: Int = 1, - outlineMasksAndMattes: Boolean = false, - applyOpacityToLayers: Boolean = false, - enableMergePaths: Boolean = false, - renderMode: RenderMode = RenderMode.AUTOMATIC, - reverseOnRepeat: Boolean = false, - maintainOriginalImageBounds: Boolean = false, - dynamicProperties: LottieDynamicProperties? = null, - alignment: Alignment = Alignment.Center, - contentScale: ContentScale = ContentScale.Fit, - clipToCompositionBounds: Boolean = true, - fontMap: Map? = null, - asyncUpdates: AsyncUpdates = AsyncUpdates.AUTOMATIC, -) { - val progress by io.github.alexzhirkevich.compottie.animateLottieCompositionAsState( - composition, - isPlaying, - restartOnPlay, - reverseOnRepeat, - clipSpec, - speed, - iterations, - ) - LottieAnimation( - composition = composition, - progress = { progress }, - modifier = modifier, - outlineMasksAndMattes = outlineMasksAndMattes, - applyOpacityToLayers = applyOpacityToLayers, - enableMergePaths = enableMergePaths, - renderMode = renderMode, - maintainOriginalImageBounds = maintainOriginalImageBounds, - dynamicProperties = dynamicProperties, - alignment = alignment, - contentScale = contentScale, - clipToCompositionBounds = clipToCompositionBounds, - fontMap = fontMap, - asyncUpdates = asyncUpdates, - ) -} diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt deleted file mode 100644 index 2808b880..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import com.airbnb.lottie.compose.LottieCancellationBehavior - -/** - * Determines how the animation should behave if the calling CoroutineScope is cancelled. - * - * @see rememberLottieAnimatable - */ -actual typealias LottieCancellationBehavior = LottieCancellationBehavior \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.android.kt deleted file mode 100644 index 3773705a..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.android.kt +++ /dev/null @@ -1,161 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import com.airbnb.lottie.compose.LottieClipSpec as PlatformLottieClipSpec - -/** - * Use subclasses of [LottieClipSpec] to set min/max bounds on the animation playback. - * - * @see LottieAnimation - * @see rememberLottieAnimatable - * @see animateLottieCompositionAsState - */ -@Suppress("INVISIBLE_MEMBER") -actual sealed class LottieClipSpec( - val delegate : PlatformLottieClipSpec -) { - internal actual abstract fun getMinProgress(composition: LottieComposition): Float - internal actual abstract fun getMaxProgress(composition: LottieComposition): Float - - /** - * Play the animation between these two frames. [maxInclusive] determines whether the animation - * should play the max frame or stop one frame before it. - */ - actual class Frame actual constructor( - min: Int?, - max: Int?, - maxInclusive: Boolean - ) : LottieClipSpec(PlatformLottieClipSpec.Frame(min, max, maxInclusive)) { - - override fun getMinProgress(composition: LottieComposition): Float { - return delegate.getMinProgress(composition) - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return delegate.getMaxProgress(composition) - } - - override fun equals(other: Any?): Boolean { - return (other as? Frame)?.delegate == delegate - } - - override fun toString(): String { - return delegate.toString() - } - - override fun hashCode(): Int { - return delegate.hashCode() - } - } - - /** - * Play the animation between these two progress values. - */ - actual class Progress actual constructor(min: Float, max: Float) : - LottieClipSpec(PlatformLottieClipSpec.Progress(min, max)) { - override fun getMinProgress(composition: LottieComposition): Float { - return delegate.getMinProgress(composition) - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return delegate.getMaxProgress(composition) - } - - override fun equals(other: Any?): Boolean { - return (other as? Progress)?.delegate == delegate - } - - override fun toString(): String { - return delegate.toString() - } - - override fun hashCode(): Int { - return delegate.hashCode() - } - } - - /** - * Play the animation from minMarker until maxMarker. If maxMarker represents the end of your animation, - * set [maxInclusive] to true. If the marker represents the beginning of the next section, set - * it to false to stop the animation at the frame before maxMarker. - */ - actual class Markers actual constructor( - min: String?, - max: String?, - maxInclusive: Boolean - ) : LottieClipSpec(PlatformLottieClipSpec.Markers(min, max, maxInclusive)) { - override fun getMinProgress(composition: LottieComposition): Float { - return delegate.getMinProgress(composition) - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return delegate.getMaxProgress(composition) - } - - override fun equals(other: Any?): Boolean { - return (other as? Markers)?.delegate == delegate - } - - override fun toString(): String { - return delegate.toString() - } - - override fun hashCode(): Int { - return delegate.hashCode() - } - } - - /** - * Play the animation from the beginning of the marker for the duration of the marker itself. - * The duration can be set in After Effects. - */ - actual class Marker actual constructor(marker: String) : - LottieClipSpec(PlatformLottieClipSpec.Marker(marker)) { - override fun getMinProgress(composition: LottieComposition): Float { - return delegate.getMinProgress(composition) - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return delegate.getMaxProgress(composition) - } - - override fun equals(other: Any?): Boolean { - return (other as? Marker)?.delegate == delegate - } - - override fun toString(): String { - return delegate.toString() - } - - override fun hashCode(): Int { - return delegate.hashCode() - } - } -} - -/** - * Play the animation from the beginning of the marker for the duration of the marker itself. - * The duration can be set in After Effects. - */ -@Suppress("INVISIBLE_MEMBER") -internal class DelegatedLottieClipSpec(delegate: com.airbnb.lottie.compose.LottieClipSpec) : - LottieClipSpec(delegate) { - override fun getMinProgress(composition: LottieComposition): Float { - return delegate.getMinProgress(composition) - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return delegate.getMaxProgress(composition) - } - - override fun equals(other: Any?): Boolean { - return (other as? Marker)?.delegate == delegate - } - - override fun toString(): String { - return delegate.toString() - } - - override fun hashCode(): Int { - return delegate.hashCode() - } -} diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.android.kt deleted file mode 100644 index 5dfaa17b..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.android.kt +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Composable -import com.airbnb.lottie.LottieComposition - -actual typealias LottieComposition = LottieComposition - -internal actual val LottieComposition.fps: Float - get() = frameRate - -internal actual val LottieComposition.durationMillis: Float - get() = duration - - -internal actual val LottieComposition.lastFrame: Float - get() = endFrame - -internal actual fun LottieComposition.marker(markerName : String) : Marker? = - getMarker(markerName) - - -@Composable -actual fun rememberLottieComposition(spec: LottieCompositionSpec) : LottieCompositionResult = - com.airbnb.lottie.compose.rememberLottieComposition( - spec = spec.delegate, - imageAssetsFolder = null - ) - diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.android.kt deleted file mode 100644 index 9203746c..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.android.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import com.airbnb.lottie.compose.LottieCompositionResult - -actual typealias LottieCompositionResult = LottieCompositionResult \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.android.kt deleted file mode 100644 index 72077ab6..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.android.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import com.airbnb.lottie.compose.LottieCompositionSpec as PlatformLottieCompositionSpec -/** - * Specification for a [com.airbnb.lottie.LottieComposition]. Each subclass represents a different source. - * A [com.airbnb.lottie.LottieComposition] is the stateless parsed version of a Lottie json file and is - * passed into [rememberLottieComposition] or [LottieAnimation]. - */ - -actual sealed class LottieCompositionSpec( - internal val delegate : com.airbnb.lottie.compose.LottieCompositionSpec -) { - - actual class JsonString actual constructor(jsonString: String) : LottieCompositionSpec( - PlatformLottieCompositionSpec.JsonString(jsonString) - ) - - actual companion object {} -} - diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieDynamicProperties.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieDynamicProperties.kt deleted file mode 100644 index bdb2faee..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieDynamicProperties.kt +++ /dev/null @@ -1,184 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import android.graphics.Bitmap -import android.graphics.ColorFilter -import android.graphics.PointF -import android.graphics.Typeface -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberUpdatedState -import com.airbnb.lottie.LottieDrawable -import com.airbnb.lottie.model.KeyPath -import com.airbnb.lottie.value.LottieFrameInfo -import com.airbnb.lottie.value.LottieValueCallback -import com.airbnb.lottie.value.ScaleXY - -/** - * Use this function when you want to apply one or more dynamic properties to an animation. - * This takes a vararg of individual dynamic properties which should be created with [rememberLottieDynamicProperty]. - * - * @see rememberLottieDynamicProperty - * @see LottieDrawable.setMaintainOriginalImageBounds - */ -@Composable -fun rememberLottieDynamicProperties( - vararg properties: LottieDynamicProperty<*>, -): LottieDynamicProperties { - return remember(properties.contentHashCode()) { - LottieDynamicProperties(properties.toList()) - } -} - -/** - * Use this to create a single dynamic property for an animation. - * - * @param property should be one of [com.airbnb.lottie.LottieProperty]. - * @param value the desired value to use as this property's value. - * @param keyPath the string parts of a [com.airbnb.lottie.model.KeyPath] that specify which animation element - * the property resides on. - */ -@Composable -fun rememberLottieDynamicProperty( - property: T, - value: T, - vararg keyPath: String, -): LottieDynamicProperty { - val keyPathObj = remember(keyPath) { KeyPath(*keyPath) } - return remember(keyPathObj, property, value) { - LottieDynamicProperty(property, keyPathObj, value) - } -} - -/** - * Use this to create a single dynamic property for an animation. - * - * @param property Should be one of [com.airbnb.lottie.LottieProperty]. - * @param keyPath The string parts of a [com.airbnb.lottie.model.KeyPath] that specify which animation element - * the property resides on. - * @param callback A callback that will be invoked during the drawing pass with current frame info. The frame - * info can be used to alter the property's value based on the original animation data or it - * can be completely ignored and an arbitrary value can be returned. In this case, you may want - * the overloaded version of this function that takes a static value instead of a callback. - */ -@Composable -fun rememberLottieDynamicProperty( - property: T, - vararg keyPath: String, - callback: (frameInfo: LottieFrameInfo) -> T, -): LottieDynamicProperty { - val keyPathObj = remember(keyPath.contentHashCode()) { KeyPath(*keyPath) } - val callbackState by rememberUpdatedState(callback) - return remember(keyPathObj, property) { - LottieDynamicProperty( - property, - keyPathObj, - ) { callbackState(it) } - } -} - -/** - * @see rememberLottieDynamicProperty - */ -class LottieDynamicProperty internal constructor( - internal val property: T, - internal val keyPath: KeyPath, - internal val callback: (frameInfo: LottieFrameInfo) -> T, -) { - constructor(property: T, keyPath: KeyPath, value: T) : this(property, keyPath, { value }) -} - -/** - * @see rememberLottieDynamicProperties - */ -class LottieDynamicProperties internal constructor( - private val intProperties: List>, - private val pointFProperties: List>, - private val floatProperties: List>, - private val scaleProperties: List>, - private val colorFilterProperties: List>, - // Java doesn't have reified types. All LottieProperty arrays are Integer[]. - private val intArrayProperties: List>>, - private val typefaceProperties: List>, - private val bitmapProperties: List>, - private val charSequenceProperties: List>, -) { - @Suppress("UNCHECKED_CAST") - constructor(properties: List>) : this( - properties.filter { it.property is Int } as List>, - properties.filter { it.property is PointF } as List>, - properties.filter { it.property is Float } as List>, - properties.filter { it.property is ScaleXY } as List>, - properties.filter { it.property is ColorFilter } as List>, - properties.filter { it.property is Array<*> } as List>>, - properties.filter { it.property is Typeface } as List>, - properties.filter { it.property is Bitmap } as List>, - properties.filter { it.property is CharSequence } as List>, - ) - - internal fun addTo(drawable: LottieDrawable) { - intProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - pointFProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - floatProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - scaleProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - colorFilterProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - intArrayProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - typefaceProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - bitmapProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - charSequenceProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, p.callback.toValueCallback()) - } - } - - internal fun removeFrom(drawable: LottieDrawable) { - intProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - pointFProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - floatProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - scaleProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - colorFilterProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - intArrayProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback>?) - } - typefaceProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - bitmapProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - charSequenceProperties.forEach { p -> - drawable.addValueCallback(p.keyPath, p.property, null as LottieValueCallback?) - } - } -} - -private fun ((frameInfo: LottieFrameInfo) -> T).toValueCallback() = object : LottieValueCallback() { - override fun getValue(frameInfo: LottieFrameInfo): T { - return invoke(frameInfo) - } -} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt deleted file mode 100644 index 435fe40f..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.painter.Painter - -/** - * A composable that makes it easy to create a [LottiePainter] and update its properties. - */ -@Composable -actual fun rememberLottiePainter( - composition: LottieComposition?, - progress: Float, - clipToCompositionBounds: Boolean, -): LottiePainter = com.airbnb.lottie.compose.rememberLottiePainter( - composition = composition, - progress = progress, - clipToCompositionBounds = clipToCompositionBounds, -) - -actual typealias LottiePainter = com.airbnb.lottie.compose.LottiePainter diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/Marker.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/Marker.android.kt deleted file mode 100644 index 1b9f63fd..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/Marker.android.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import com.airbnb.lottie.model.Marker - -actual typealias Marker = Marker diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.android.kt deleted file mode 100644 index b3f1a963..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.android.kt +++ /dev/null @@ -1,73 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable -import androidx.compose.runtime.remember -import com.airbnb.lottie.compose.animateLottieCompositionAsState -import com.airbnb.lottie.compose.LottieAnimationState as PlatformLottieAnimationState - -@Composable -@Stable -actual fun animateLottieCompositionAsState( - composition: LottieComposition?, - isPlaying: Boolean, - restartOnPlay: Boolean, - reverseOnRepeat: Boolean, - clipSpec: LottieClipSpec?, - speed: Float, - iterations: Int, - cancellationBehavior: LottieCancellationBehavior, - ignoreSystemAnimatorScale: Boolean, - useCompositionFrameRate: Boolean, -): LottieAnimationState { - - val platform = animateLottieCompositionAsState( - composition, - isPlaying, - restartOnPlay, - reverseOnRepeat, - clipSpec?.delegate, - speed, - iterations, - cancellationBehavior, - ignoreSystemAnimatorScale, - useCompositionFrameRate - ) - - return remember(platform) { - DelegatedLottieAnimationState(platform) - } -} - - -@Stable -private class DelegatedLottieAnimationState( - private val delegate : PlatformLottieAnimationState -) : LottieAnimationState { - override val isPlaying: Boolean - get() = delegate.isPlaying - override val progress: Float - get() = delegate.progress - override val iteration: Int - get() = delegate.iteration - override val iterations: Int - get() = delegate.iterations - override val reverseOnRepeat: Boolean - get() = delegate.reverseOnRepeat - - override val clipSpec: LottieClipSpec? = - delegate.clipSpec?.let(::DelegatedLottieClipSpec) - override val speed: Float - get() = delegate.speed - override val useCompositionFrameRate: Boolean - get() = delegate.useCompositionFrameRate - override val composition: LottieComposition? - get() = delegate.composition - override val lastFrameNanos: Long - get() = delegate.lastFrameNanos - override val isAtEnd: Boolean - get() = delegate.isAtEnd - override val value: Float - get() = delegate.value - -} diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt new file mode 100644 index 00000000..e39e2497 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt @@ -0,0 +1,80 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.asAndroidPath + + +actual fun ExtendedPathMeasure() : ExtendedPathMeasure = AndroidExtendedPathMeasure( + android.graphics.PathMeasure() +) + + + +private class AndroidExtendedPathMeasure( + private val internalPathMeasure: android.graphics.PathMeasure +) : ExtendedPathMeasure { + + override fun nextContour(): Boolean { + return internalPathMeasure.nextContour() + } + + override val length: Float + get() = internalPathMeasure.length + + private var positionArray: FloatArray? = null + + private var tangentArray: FloatArray? = null + + override fun getSegment( + startDistance: Float, + stopDistance: Float, + destination: Path, + startWithMoveTo: Boolean + ): Boolean { + return internalPathMeasure.getSegment( + startDistance, + stopDistance, + destination.asAndroidPath(), + startWithMoveTo + ) + } + + override fun setPath(path: Path?, forceClosed: Boolean) { + internalPathMeasure.setPath(path?.asAndroidPath(), forceClosed) + } + + override fun getPosition( + distance: Float + ): Offset { + if (positionArray == null) { + positionArray = FloatArray(2) + } + if (tangentArray == null) { + tangentArray = FloatArray(2) + } + val result = internalPathMeasure.getPosTan(distance, positionArray, tangentArray) + return if (result) { + Offset(positionArray!![0], positionArray!![1]) + } else { + Offset.Unspecified + } + } + + override fun getTangent( + distance: Float + ): Offset { + if (positionArray == null) { + positionArray = FloatArray(2) + } + if (tangentArray == null) { + tangentArray = FloatArray(2) + } + val result = internalPathMeasure.getPosTan(distance, positionArray, tangentArray) + return if (result) { + Offset(tangentArray!![0], tangentArray!![1]) + } else { + Offset.Unspecified + } + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt index 45556505..f5ef4c6a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt @@ -18,7 +18,6 @@ import kotlinx.coroutines.job import kotlinx.coroutines.withContext import kotlin.coroutines.EmptyCoroutineContext import kotlin.coroutines.coroutineContext -import kotlin.js.JsName /** * Use this to create a [LottieAnimatable] in a composable. @@ -26,16 +25,8 @@ import kotlin.js.JsName * @see LottieAnimatable */ @Composable -fun rememberLottieAnimatable(): LottieAnimatable = remember { LottieAnimatable() } +fun rememberLottieAnimatable(): LottieAnimatable = remember { LottieAnimatableImpl() } -/** - * Use this to create a [LottieAnimatable] outside of a composable such as a hoisted state class. - * - * @see rememberLottieAnimatable - * @see LottieAnimatable - */ -@JsName("NewLottieAnimatable") -fun LottieAnimatable(): LottieAnimatable = LottieAnimatableImpl() /** * Reset the animation back to the minimum progress and first iteration. @@ -265,7 +256,6 @@ private class LottieAnimatableImpl : LottieAnimatable { val context = when (cancellationBehavior) { LottieCancellationBehavior.OnIterationFinish -> NonCancellable LottieCancellationBehavior.Immediately -> EmptyCoroutineContext - else -> error("Invalid LottieCancellationBehavior: $cancellationBehavior") } val parentJob = coroutineContext.job withContext(context) { @@ -302,17 +292,21 @@ private class LottieAnimatableImpl : LottieAnimatable { private fun onFrame(iterations: Int, frameNanos: Long): Boolean { val composition = composition ?: return true - val dNanos = if (lastFrameNanos == AnimationConstants.UnspecifiedTime) 0L else (frameNanos - lastFrameNanos) + val dNanos = if (lastFrameNanos == AnimationConstants.UnspecifiedTime) + 0L else (frameNanos - lastFrameNanos) + lastFrameNanos = frameNanos val minProgress = clipSpec?.getMinProgress(composition) ?: 0f val maxProgress = clipSpec?.getMaxProgress(composition) ?: 1f - val dProgress = dNanos / 1_000_000 / composition.durationMillis * frameSpeed + val dProgress = dNanos.toFloat() / 1_000_000 / composition.duration * frameSpeed + val progressPastEndOfIteration = when { frameSpeed < 0 -> minProgress - (progressRaw + dProgress) else -> progressRaw + dProgress - maxProgress } + if (progressPastEndOfIteration < 0f) { updateProgress(progressRaw.coerceIn(minProgress, maxProgress) + dProgress) } else { @@ -326,6 +320,7 @@ private class LottieAnimatableImpl : LottieAnimatable { } iteration += dIterations val progressPastEndRem = progressPastEndOfIteration - (dIterations - 1) * durationProgress + updateProgress( when { frameSpeed < 0 -> maxProgress - progressPastEndRem @@ -339,14 +334,16 @@ private class LottieAnimatableImpl : LottieAnimatable { private fun Float.roundToCompositionFrameRate(composition: LottieComposition?): Float { composition ?: return this - val frameRate = composition.fps + val frameRate = composition.frameRate val interval = 1 / frameRate return this - this % interval } private fun updateProgress(progress: Float) { this.progressRaw = progress - this.progress = if (useCompositionFrameRate) progress.roundToCompositionFrameRate(composition) else progress + this.progress = if (useCompositionFrameRate) + progress.roundToCompositionFrameRate(composition) + else progress } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt index e7a12c3c..5da7ca6f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt @@ -1,87 +1,62 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.State -import androidx.compose.runtime.getValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.geometry.Size -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.layout.ScaleFactor -import androidx.compose.ui.unit.IntSize - - -/** - * This is the base LottieAnimation composable. It takes a composition and renders it at a specific progress. - * - * The overloaded version of [LottieAnimation] that handles playback and is sufficient for most use cases. - * - * @param composition The composition that will be rendered. To generate a [LottieComposition], you can use - * [rememberLottieComposition]. - * @param progress A provider for the progress (between 0 and 1) that should be rendered. If you want to render a - * specific frame, you can use [LottieComposition.getFrameForProgress]. In most cases, you will want - * to use one of the overloaded LottieAnimation composables that drives the animation for you. - * The overloads that have isPlaying as a parameter instead of progress will drive the - * animation automatically. You may want to use this version if you want to drive the animation - * from your own Animatable or via events such as download progress or a gesture. - * @param alignment Define where the animation should be placed within this composable if it has a different - * size than this composable. - * @param contentScale Define how the animation should be scaled if it has a different size than this Composable. - * @param clipToCompositionBounds Determines whether or not Lottie will clip the animation to the original animation composition bounds. - */ -@Composable -expect fun LottieAnimation( - composition : LottieComposition?, - progress : () -> Float, - modifier: Modifier = Modifier, - alignment: Alignment = Alignment.Center, - contentScale: ContentScale = ContentScale.Fit, - clipToCompositionBounds: Boolean = false, -) - -/** - * This is like [LottieAnimation] except that it handles driving the animation via [animateLottieCompositionAsState] - * instead of taking a progress provider. - * - * @see LottieAnimation - * @see animateLottieCompositionAsState - */ -@Composable -fun LottieAnimation( - composition: LottieComposition?, - modifier: Modifier = Modifier, - isPlaying: Boolean = true, - restartOnPlay: Boolean = true, - clipSpec: LottieClipSpec? = null, - speed: Float = 1f, - iterations: Int = 1, - reverseOnRepeat: Boolean = false, - alignment: Alignment = Alignment.Center, - contentScale: ContentScale = ContentScale.Fit, - clipToCompositionBounds: Boolean = true, -) { - val progress by animateLottieCompositionAsState( - composition = composition, - isPlaying = isPlaying, - restartOnPlay = restartOnPlay, - clipSpec = clipSpec, - reverseOnRepeat = reverseOnRepeat, - speed = speed, - iterations = iterations, - ) - LottieAnimation( - composition = composition, - progress = { progress }, - modifier = modifier, - alignment = alignment, - contentScale = contentScale, - clipToCompositionBounds = clipToCompositionBounds - ) -} - -internal operator fun Size.times(scale: ScaleFactor): IntSize { - return IntSize((width * scale.scaleX).toInt(), (height * scale.scaleY).toInt()) -} - - - +//package io.github.alexzhirkevich.compottie +// +//import androidx.compose.foundation.Canvas +//import androidx.compose.foundation.layout.size +//import androidx.compose.runtime.Composable +//import androidx.compose.runtime.remember +//import androidx.compose.ui.Alignment +//import androidx.compose.ui.Modifier +//import androidx.compose.ui.geometry.Size +//import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +//import androidx.compose.ui.graphics.nativeCanvas +//import androidx.compose.ui.layout.ContentScale +//import androidx.compose.ui.platform.LocalDensity +//import androidx.compose.ui.unit.DpSize +//import androidx.compose.ui.unit.IntSize +//import androidx.compose.ui.unit.toOffset +//import org.jetbrains.skia.Rect +//import org.jetbrains.skia.skottie.RenderFlag +//import kotlin.math.roundToInt +// +// +//@Composable +//fun LottieAnimation( +// composition : LottieComposition?, +// progress : () -> Float, +// modifier: Modifier, +// alignment: Alignment, +// contentScale: ContentScale, +// clipToCompositionBounds : Boolean, +//) { +// val density = LocalDensity.current +// +// +// Canvas(modifier) { +// if (composition == null || composition.animation.isClosed || composition.invalidationController.isClosed) +// return@Canvas +// +// val compositionSize = composition.animation.size.let { Size(it.x, it.y) } +// +// val scale = contentScale.computeScaleFactor(compositionSize, size) +// val intSize = size.round() +// val translation = alignment.align(compositionSize * scale, intSize, layoutDirection).toOffset() +// +// drawIntoCanvas { +// if (clipToCompositionBounds) +// it.clipRect(0f, 0f, size.width, size.height) +// +// it.translate(translation.x, translation.y) +// it.scale(scale.scaleX, scale.scaleY) +// +// composition.animation +// .seek(progress(), composition.invalidationController) +// .render( +// canvas = it.nativeCanvas, +// dst = Rect.makeWH(compositionSize.width, compositionSize.height), +// *flags +// ) +// } +// } +//} +// +//internal fun Size.round() = IntSize(width.roundToInt(), height.roundToInt()) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState2.kt similarity index 86% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState2.kt index 5c3da693..89d96be2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState2.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.animation.core.AnimationConstants import androidx.compose.runtime.Stable import androidx.compose.runtime.State @@ -33,7 +34,7 @@ interface LottieAnimationState : State { val composition: LottieComposition? - val lastFrameNanos: Long + val lastFrameNanos: Long get() = AnimationConstants.UnspecifiedTime val isAtEnd: Boolean -} +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt index 86dbc3f4..d3cd0341 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt @@ -5,7 +5,7 @@ package io.github.alexzhirkevich.compottie * * @see rememberLottieAnimatable */ -expect enum class LottieCancellationBehavior { +enum class LottieCancellationBehavior { /** * Stop animation immediately and return early. */ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.kt deleted file mode 100644 index 71bcb504..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.kt +++ /dev/null @@ -1,56 +0,0 @@ -package io.github.alexzhirkevich.compottie - -expect class Marker { - val startFrame : Float - val durationFrames : Float -} - - -/** - * Use subclasses of [LottieClipSpec] to set min/max bounds on the animation playback. - * - * @see LottieAnimation - * @see rememberLottieAnimatable - * @see animateLottieCompositionAsState - */ -expect sealed class LottieClipSpec { - - internal abstract fun getMinProgress(composition: LottieComposition): Float - - internal abstract fun getMaxProgress(composition: LottieComposition): Float - - /** - * Play the animation between these two frames. [maxInclusive] determines whether the animation - * should play the max frame or stop one frame before it. - */ - class Frame( - min: Int? = null, - max: Int? = null, - maxInclusive: Boolean = true, - ) : LottieClipSpec - - /** - * Play the animation between these two progress values. - */ - class Progress( - min: Float = 0f, - max: Float = 1f, - ) : LottieClipSpec - - /** - * Play the animation from minMarker until maxMarker. If maxMarker represents the end of your animation, - * set [maxInclusive] to true. If the marker represents the beginning of the next section, set - * it to false to stop the animation at the frame before maxMarker. - */ - class Markers( - min: String? = null, - max: String? = null, - maxInclusive: Boolean = true - ) : LottieClipSpec - - /** - * Play the animation from the beginning of the marker for the duration of the marker itself. - * The duration can be set in After Effects. - */ - class Marker(marker: String) : LottieClipSpec -} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt new file mode 100644 index 00000000..7713c84c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt @@ -0,0 +1,197 @@ +package io.github.alexzhirkevich.compottie + +/** + * Use subclasses of [LottieClipSpec] to set min/max bounds on the animation playback. + * + * @see LottieAnimation + * @see rememberLottieAnimatable + * @see animateLottieCompositionAsState + */ +sealed class LottieClipSpec { + + internal abstract fun getMinProgress(composition: LottieComposition): Float + + internal abstract fun getMaxProgress(composition: LottieComposition): Float + + /** + * Play the animation between these two frames. [maxInclusive] determines whether the animation + * should play the max frame or stop one frame before it. + */ +// class Frame constructor( +// val min: Int?, +// val max: Int?, +// val maxInclusive: Boolean, +// ) : LottieClipSpec() { +// +// private val actualMaxFrame = when { +// max == null -> null +// maxInclusive -> max +// else -> max - 1 +// } +// +// override fun getMinProgress(composition: LottieComposition): Float { +// return when (min) { +// null -> 0f +// else -> (min / composition.lastFrame).coerceIn(0f, 1f) +// } +// } +// +// override fun getMaxProgress(composition: LottieComposition): Float { +// return when (actualMaxFrame) { +// null -> 1f +// else -> (actualMaxFrame / composition.lastFrame).coerceIn(0f, 1f) +// } +// } +// +// override fun equals(other: Any?): Boolean { +// if (this === other) return true +// if (other == null || this::class != other::class) return false +// +// other as Frame +// +// if (min != other.min) return false +// if (max != other.max) return false +// if (maxInclusive != other.maxInclusive) return false +// if (actualMaxFrame != other.actualMaxFrame) return false +// +// return true +// } +// +// override fun hashCode(): Int { +// var result = min ?: 0 +// result = 31 * result + (max ?: 0) +// result = 31 * result + maxInclusive.hashCode() +// result = 31 * result + (actualMaxFrame ?: 0) +// return result +// } +// +// override fun toString(): String { +// return "Frame(min=$min, max=$max, maxInclusive=$maxInclusive, actualMaxFrame=$actualMaxFrame)" +// } +// } +// +// /** +// * Play the animation between these two progress values. +// */ +// class Progress constructor( +// val min: Float, +// val max: Float, +// ) : LottieClipSpec() { +// override fun getMinProgress(composition: LottieComposition): Float { +// return min +// } +// +// override fun getMaxProgress(composition: LottieComposition): Float { +// return max +// } +// +// override fun equals(other: Any?): Boolean { +// if (this === other) return true +// if (other == null || this::class != other::class) return false +// +// other as Progress +// +// if (min != other.min) return false +// if (max != other.max) return false +// +// return true +// } +// +// override fun hashCode(): Int { +// var result = min.hashCode() +// result = 31 * result + max.hashCode() +// return result +// } +// +// override fun toString(): String { +// return "Progress(min=$min, max=$max)" +// } +// +// } +// +// /** +// * Play the animation from minMarker until maxMarker. If maxMarker represents the end of your animation, +// * set [maxInclusive] to true. If the marker represents the beginning of the next section, set +// * it to false to stop the animation at the frame before maxMarker. +// */ +// class Markers constructor( +// val min: String?, +// val max: String?, +// val maxInclusive: Boolean +// ) : LottieClipSpec() { +// override fun getMinProgress(composition: LottieComposition): Float { +// return when (min) { +// null -> 0f +// else -> ((composition.marker(min)?.startFrame ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) +// } +// } +// +// override fun getMaxProgress(composition: LottieComposition): Float { +// return when (max) { +// null -> 1f +// else -> { +// val offset = if (maxInclusive) 0 else -1 +// return ((composition.marker(max)?.startFrame?.plus(offset) ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) +// } +// } +// } +// +// override fun equals(other: Any?): Boolean { +// if (this === other) return true +// if (other == null || this::class != other::class) return false +// +// other as Markers +// +// if (min != other.min) return false +// if (max != other.max) return false +// if (maxInclusive != other.maxInclusive) return false +// +// return true +// } +// +// override fun hashCode(): Int { +// var result = min?.hashCode() ?: 0 +// result = 31 * result + (max?.hashCode() ?: 0) +// result = 31 * result + maxInclusive.hashCode() +// return result +// } +// +// override fun toString(): String { +// return "Markers(min=$min, max=$max, maxInclusive=$maxInclusive)" +// } +// } +// +// /** +// * Play the animation from the beginning of the marker for the duration of the marker itself. +// * The duration can be set in After Effects. +// */ +// actual class Marker actual constructor(val marker: String) : LottieClipSpec() { +// override fun getMinProgress(composition: LottieComposition): Float { +// return ((composition.marker(marker)?.startFrame ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) +// } +// +// override fun getMaxProgress(composition: LottieComposition): Float { +// val marker = composition.marker(marker) ?: return 1f +// return ((marker.startFrame + marker.durationFrames) / composition.lastFrame).coerceIn(0f, 1f) +// } +// +// override fun equals(other: Any?): Boolean { +// if (this === other) return true +// if (other == null || this::class != other::class) return false +// +// other as Marker +// +// if (marker != other.marker) return false +// +// return true +// } +// +// override fun hashCode(): Int { +// return marker.hashCode() +// } +// +// override fun toString(): String { +// return "Marker(marker='$marker')" +// } +// } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 8df89443..b052fc9d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -1,43 +1,56 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable - -/** - * Holds animation data - * */ -@Stable -expect class LottieComposition - -internal expect val LottieComposition.fps : Float +import androidx.compose.runtime.remember +import io.github.alexzhirkevich.compottie.internal.schema.LottieData +import io.github.alexzhirkevich.compottie.internal.schema.LottieJson +import io.github.alexzhirkevich.compottie.internal.schema.durationMillis +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext -internal expect val LottieComposition.durationMillis : Float - - -internal expect val LottieComposition.lastFrame : Float +@Stable +class LottieComposition internal constructor( + internal val lottieData: LottieData, +) { + val duration: Int get() = lottieData.durationMillis -internal expect fun LottieComposition.marker(markerName : String) : Marker? + val frameRate : Int get() = lottieData.frameRate +} -/** - * Takes a [LottieCompositionSpec], attempts to load and parse the animation, and returns a [LottieCompositionResult]. - * - * [LottieCompositionResult] allows you to explicitly check for loading, failures, call - * [LottieCompositionResult.await], or invoke it like a function to get the nullable composition. - * - * [LottieCompositionResult] implements State so if you don't need the full result class, - * you can use this function like: - * ``` - * val compositionResult: LottieCompositionResult = lottieComposition(spec) - * // or... - * val composition: State by lottieComposition(spec) - * ``` - * - * The loaded composition will automatically load and set images that are embedded in the json as a base64 string - * or will load them from assets if an imageAssetsFolder is supplied. - * - * @param spec The [LottieCompositionSpec] that defines which LottieComposition should be loaded. - */ @Composable @Stable -expect fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionResult +fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionResult { + + val result = remember(spec) { + LottieCompositionResultImpl() + } + + LaunchedEffect(spec){ + when (spec){ + is LottieCompositionSpec.JsonString -> { + withContext(Dispatchers.Default) { + try { + val composition = parseFromJsonString(spec.jsonString) + result.complete(composition) + } catch (c: CancellationException) { + throw c + } catch (t: Throwable) { + result.completeExceptionally(t) + } + } + } + } + } + + return result +} + +private fun parseFromJsonString(jsonString: String) : LottieComposition { + return LottieComposition( + LottieJson.decodeFromString(jsonString), + ) +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt index 1f90250e..b5ab6601 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt @@ -28,7 +28,7 @@ import kotlinx.coroutines.sync.withLock * @see LottieAnimation */ @Stable -expect interface LottieCompositionResult : State { +interface LottieCompositionResult : State { /** * The composition or null if it hasn't yet loaded or failed to load. */ @@ -77,15 +77,46 @@ expect interface LottieCompositionResult : State { suspend fun await(): LottieComposition } -/** - * Like [LottieCompositionResult.await] but returns null instead of throwing an exception if the animation fails - * to load. - */ -suspend fun LottieCompositionResult.awaitOrNull(): LottieComposition? { - return try { - await() - } catch (e: Throwable) { - null + +@Stable +internal class LottieCompositionResultImpl : LottieCompositionResult { + private val compositionDeferred = CompletableDeferred() + + override var value: LottieComposition? by mutableStateOf(null) + private set + + override var error by mutableStateOf(null) + private set + + override val isLoading by derivedStateOf { value == null && error == null } + + override val isComplete by derivedStateOf { value != null || error != null } + + override val isFailure by derivedStateOf { error != null } + + override val isSuccess by derivedStateOf { value != null } + + override suspend fun await(): LottieComposition { + return compositionDeferred.await() } -} + private val mutex = Mutex() + + internal suspend fun complete(composition: LottieComposition) { + mutex.withLock { + if (isComplete) return + + this.value = composition + compositionDeferred.complete(composition) + } + } + + internal suspend fun completeExceptionally(error: Throwable) { + mutex.withLock { + if (isComplete) return + + this.error = error + compositionDeferred.completeExceptionally(error) + } + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index b1f2f36f..234e9236 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -1,26 +1,35 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable -import androidx.compose.runtime.Stable - -/** - * Specification for a [LottieComposition]. Each subclass represents a different source. - * A [LottieComposition] is the stateless parsed version of a Lottie json file and is - * passed into [rememberLottieComposition] or [LottieAnimation]. - */ @Immutable -expect sealed class LottieCompositionSpec { +sealed class LottieCompositionSpec { - /** - * Load an animation from its json string. - */ @Immutable - class JsonString(jsonString: String) : LottieCompositionSpec + class JsonString constructor( + internal val jsonString: String + ) : LottieCompositionSpec() { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false - companion object -} + other as JsonString + + if (jsonString != other.jsonString) return false + + return true + } -//internal expect fun LottieCompositionSpec.JsonString() + override fun hashCode(): Int { + return jsonString.hashCode() + } + override fun toString(): String { + return "JsonString(jsonString='$jsonString')" + } + + } + + companion object +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt index db57d643..a0f7c18b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt @@ -1,7 +1,9 @@ package io.github.alexzhirkevich.compottie + + object LottieConstants { /** * Use this with [animateLottieCompositionAsState]'s iterations parameter to repeat forever. */ const val IterateForever = Int.MAX_VALUE -} +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 523eb579..98ca3986 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -1,16 +1,101 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.produceState +import androidx.compose.runtime.setValue +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Alignment +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.LottieCompositionResult +import io.github.alexzhirkevich.compottie.internal.graphics.draw +import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer +import kotlin.math.roundToInt + -/** - * A composable that makes it easy to create a [LottiePainter] and update its properties. - */ @Composable -expect fun rememberLottiePainter( - composition: LottieComposition? = null, - progress: Float = 0f, - clipToCompositionBounds: Boolean = true, -): LottiePainter +fun rememberLottiePainter( + composition : LottieCompositionResult, + progress : () -> Float +) : Painter { + + val painter by produceState(EmptyPainter){ + value = LottiePainter(composition.await()) + } + + LaunchedEffect(painter){ + snapshotFlow { + progress() + }.collect { + painter.progress = it + } + } + + return painter +} + +private abstract class ProgressPainter : Painter() { + + abstract var progress : Float +} + +private object EmptyPainter : ProgressPainter() { + + override var progress: Float = 0f + + override val intrinsicSize: Size = Size(1f,1f) + + override fun DrawScope.onDraw() { + } + +} +private class LottiePainter( + private val composition: LottieComposition, +) : ProgressPainter() { + + override val intrinsicSize: Size = + Size(composition.lottieData.width.toFloat(), composition.lottieData.height.toFloat()) + + override var progress: Float by mutableStateOf(0f) + + override fun DrawScope.onDraw() { + + val dat = composition.lottieData + + val frame = (dat.outPoint * progress.coerceIn(0f, 1f) - dat.inPoint) + .coerceAtLeast(0f).roundToInt() + + val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) + val offset = Alignment.Center.align( + IntSize( + (intrinsicSize.width).roundToInt(), + (intrinsicSize.height).roundToInt() + ), + IntSize( + size.width.roundToInt(), + size.height.roundToInt() + ), + layoutDirection + ) -expect class LottiePainter : Painter + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + dat.layers.fastForEachReversed { + when (it) { + is ShapeLayer -> it.draw(this, frame) + } + } + } + } + } +} \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt similarity index 72% rename from compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt index 9183db47..93f05cf2 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt @@ -4,11 +4,11 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -actual class Marker( +class Marker( @SerialName("tm") - actual val startFrame: Float, + val startFrame: Float, @SerialName("cm") internal val name : String, @SerialName("dr") - actual val durationFrames : Float + val durationFrames : Float ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt index c9f6a7c6..959e9e94 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -39,8 +38,7 @@ import androidx.compose.runtime.setValue * Set this to false if you want to ignore the system animator scale and always default to normal speed. */ @Composable -@Stable -expect fun animateLottieCompositionAsState( +fun animateLottieCompositionAsState( composition: LottieComposition?, isPlaying: Boolean = true, restartOnPlay: Boolean = true, @@ -51,4 +49,41 @@ expect fun animateLottieCompositionAsState( cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, ignoreSystemAnimatorScale: Boolean = false, useCompositionFrameRate: Boolean = false, -): LottieAnimationState \ No newline at end of file +): LottieAnimationState { + require(iterations > 0) { "Iterations must be a positive number ($iterations)." } + require(speed.isFinite()) { "Speed must be a finite number. It is $speed." } + + val animatable = rememberLottieAnimatable() + var wasPlaying by remember { mutableStateOf(isPlaying) } + + // Dividing by 0 correctly yields Float.POSITIVE_INFINITY here. + val actualSpeed = if (ignoreSystemAnimatorScale) speed else speed //TODO + + LaunchedEffect( + composition, + isPlaying, + clipSpec, + actualSpeed, + iterations, + ) { + if (isPlaying && !wasPlaying && restartOnPlay) { + animatable.resetToBeginning() + } + wasPlaying = isPlaying + if (!isPlaying) return@LaunchedEffect + + animatable.animate( + composition, + iterations = iterations, + reverseOnRepeat = reverseOnRepeat, + speed = actualSpeed, + clipSpec = clipSpec, + initialProgress = animatable.progress, + continueFromPreviousAnimate = false, + cancellationBehavior = cancellationBehavior, + useCompositionFrameRate = useCompositionFrameRate, + ) + } + + return animatable +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt new file mode 100644 index 00000000..e1ce3739 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt @@ -0,0 +1,20 @@ +package io.github.alexzhirkevich.compottie.internal.graphics + +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.withSave +import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer + + +internal fun ShapeLayer.draw(scope: DrawScope, time : Int) { + scope.drawIntoCanvas { canvas -> + canvas.withSave { + canvas.concat(transform.matrix(time)) + drawIntoCanvas( + canvas = canvas, + time = time + ) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.kt new file mode 100644 index 00000000..aa684db2 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.kt @@ -0,0 +1,15 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathMeasure +import androidx.compose.ui.graphics.PathOperation + +expect fun ExtendedPathMeasure() : ExtendedPathMeasure + +interface ExtendedPathMeasure : PathMeasure { + fun nextContour() : Boolean +} + +fun Path.set(other : Path){ + op(this, other, PathOperation.Union) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Content.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Content.kt new file mode 100644 index 00000000..1a6c21b1 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Content.kt @@ -0,0 +1,11 @@ +package io.github.alexzhirkevich.compottie.internal.schema + + +interface Content { + val name: String? + + fun setContents( + contentsBefore: List, + contentsAfter: List + ) +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt new file mode 100644 index 00000000..13a3143e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie.internal.schema + +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix + +interface DrawableContent : Content { + fun drawIntoCanvas(canvas: Canvas, parentMatrix: Matrix, time: Int) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt new file mode 100644 index 00000000..cb8e3980 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt @@ -0,0 +1,55 @@ +package io.github.alexzhirkevich.compottie.internal.schema + +import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer +import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Ellipse +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Fill +import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFill +import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientStroke +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Group +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Path +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Rect +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Round +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Stroke +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Trim +import kotlinx.serialization.json.Json +import kotlinx.serialization.modules.SerializersModule +import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass + +val LottieJson = Json { + ignoreUnknownKeys = true + isLenient = true + + serializersModule = SerializersModule { + polymorphic(Layer::class){ + subclass(ShapeLayer::class) + } + + polymorphic(Value::class){ + subclass(Value.Default::class) + subclass(Value.Keyframed::class) + } + polymorphic(Vector::class){ + subclass(Vector.Keyframed::class) + subclass(Vector.Default::class) + } + polymorphic(Shape::class){ + subclass(Path::class) + subclass(Ellipse::class) + subclass(Fill::class) + subclass(GradientFill::class) + subclass(Group::class) + subclass(Rect::class) + subclass(Round::class) + subclass(Stroke::class) + subclass(GradientStroke::class) + subclass(Trim::class) + subclass(TransformShape::class) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt new file mode 100644 index 00000000..ee2c8275 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt @@ -0,0 +1,35 @@ +package io.github.alexzhirkevich.compottie.internal.schema + +import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + + +@Serializable +internal class LottieData( + @SerialName("fr") + val frameRate : Int, + + @SerialName("w") + val width : Int, + + @SerialName("h") + val height : Int, + + @SerialName("v") + val version : String, + + @SerialName("ip") + val inPoint : Int, + + @SerialName("op") + val outPoint : Int, + + @SerialName("nm") + val name : String, + + val layers: List +) + +internal val LottieData.durationMillis + get() = (outPoint - inPoint) / frameRate * 1000 \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt new file mode 100644 index 00000000..cbf5b5f8 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie.internal.schema + +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path + +interface ModifierContent { + fun applyTo(path: Path, paint: Paint, time: Int) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt new file mode 100644 index 00000000..6069c34e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt @@ -0,0 +1,7 @@ +package io.github.alexzhirkevich.compottie.internal.schema + +import androidx.compose.ui.graphics.Path + +interface PathContent : Content { + fun getPath(time: Int) : Path +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/effects/Effect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/effects/Effect.kt new file mode 100644 index 00000000..09529524 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/effects/Effect.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie.internal.schema.effects + +import kotlinx.serialization.Serializable + +@Serializable +sealed interface Effect \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieBlendMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieBlendMode.kt new file mode 100644 index 00000000..affa6608 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieBlendMode.kt @@ -0,0 +1,53 @@ +package io.github.alexzhirkevich.compottie.internal.schema.helpers + +import androidx.compose.ui.graphics.BlendMode +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@JvmInline +@Serializable +internal value class LottieBlendMode(val type : Byte){ + companion object { + val Normal = LottieBlendMode(0) + val Multiply = LottieBlendMode(1) + val Screen = LottieBlendMode(2) + val Overlay = LottieBlendMode(3) + val Darken = LottieBlendMode(4) + val Lighten = LottieBlendMode(5) + val ColorDodge = LottieBlendMode(6) + val ColorBurn = LottieBlendMode(7) + val HardLight = LottieBlendMode(8) + val SoftLight = LottieBlendMode(9) + val Difference = LottieBlendMode(10) + val Exclusion = LottieBlendMode(11) + val Hue = LottieBlendMode(12) + val Saturation = LottieBlendMode(13) + val Color = LottieBlendMode(14) + val Luminosity = LottieBlendMode(15) + } +} + +internal fun LottieBlendMode.asComposeBlendMode() : BlendMode { + return BlendModeMapping[this] ?: error("Unknown lottie blend mode: $this") +} + +private val BlendModeMapping by lazy { + mapOf( + LottieBlendMode.Normal to null, + LottieBlendMode.Multiply to BlendMode.Multiply, + LottieBlendMode.Screen to BlendMode.Screen, + LottieBlendMode.Overlay to BlendMode.Overlay, + LottieBlendMode.Darken to BlendMode.Darken, + LottieBlendMode.Lighten to BlendMode.Lighten, + LottieBlendMode.ColorDodge to BlendMode.ColorDodge, + LottieBlendMode.ColorBurn to BlendMode.ColorBurn, + LottieBlendMode.HardLight to BlendMode.Hardlight, + LottieBlendMode.SoftLight to BlendMode.Softlight, + LottieBlendMode.Difference to BlendMode.Difference, + LottieBlendMode.Exclusion to BlendMode.Exclusion, + LottieBlendMode.Hue to BlendMode.Hue, + LottieBlendMode.Saturation to BlendMode.Saturation, + LottieBlendMode.Color to BlendMode.Color, + LottieBlendMode.Luminosity to BlendMode.Luminosity + ) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt new file mode 100644 index 00000000..0d2b6fb1 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt @@ -0,0 +1,59 @@ +package io.github.alexzhirkevich.compottie.internal.schema.helpers + +import androidx.compose.ui.graphics.Matrix +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value + +internal abstract class LottieTransform { + + abstract val anchorPoint : Vector + abstract val position : Vector? + abstract val scale : Vector? + abstract val rotation : Value? + abstract val opacity : Value + abstract val skew: Value? + abstract val skewAxis: Value? + + private val matrix : Matrix = Matrix() + + private var lastFrame : Int = -1 + + fun matrix(time : Int) : Matrix { + if (lastFrame == time) { + return matrix + } + lastFrame = time + + matrix.reset() + + val (anchorX, anchorY) = anchorPoint.interpolated(time) + + val position = position?.interpolated(time) + + if (position != null && (position[0] != 0f || position[1] != 0f)) { + matrix.translate( + position[0] - anchorX, + position[1] - anchorY, + ) + } + + if (scale != null || rotation != null) { + val (scaleX, scaleY) = scale?.interpolated(time) ?: defaultScale + val rotation= rotation?.interpolated(time) ?: 0f + + matrix.translate(anchorX, anchorY) + + matrix.scale( + x = scaleX / 100f, + y = scaleY / 100f, + ) + + matrix.rotateZ(rotation) + + matrix.translate(-anchorX, -anchorY) + } + return matrix + } +} + +private val defaultScale = floatArrayOf(100f,100f) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt new file mode 100644 index 00000000..b6511ffc --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt @@ -0,0 +1,33 @@ +package io.github.alexzhirkevich.compottie.internal.schema.helpers + +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class Transform( + + @SerialName("a") + override val anchorPoint : Vector = Vector.Default(value = floatArrayOf(0f, 0f, 0f)), + + @SerialName("p") + override val position : Vector? = null, + + @SerialName("s") + override val scale : Vector? = null, + + @SerialName("r") + override val rotation : Value? = null, + + @SerialName("o") + override val opacity : Value = Value.Default(value = 100f), + + @SerialName("sk") + override val skew: Value = Value.Default(value = 0f), + + @SerialName("sa") + override val skewAxis: Value = Value.Default(value = 0f), +) : LottieTransform() + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt new file mode 100644 index 00000000..5150b33b --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt @@ -0,0 +1,49 @@ +//package io.github.alexzhirkevich.compottie.standalone.schema.layers +// +//import androidx.compose.ui.geometry.Rect +//import androidx.compose.ui.graphics.Matrix +//import androidx.compose.ui.util.fastForEachReversed +//import io.github.alexzhirkevich.compottie.standalone.schema.DrawableContent +// +//abstract class BaseLayer : VisualLayer, DrawableContent { +// +// private val boundsMatrix = Matrix() +// +// private var parentLayers: List = emptyList() +// +// private var parentLayer: BaseLayer? = null +// +// override fun getBounds(outBounds: Rect, parentMatrix: Matrix, applyParents: Boolean) { +// val rect = Rect(0f, 0f, 0f, 0f) +// +// buildParentLayerListIfNeeded() +// +// boundsMatrix.setFrom(parentMatrix) +// +// if (applyParents) { +// if (parentLayers.isNotEmpty()) { +// parentLayers.fastForEachReversed { +// boundsMatrix *= it.transform.getMatrix() +// } +// for (i in parentLayers.indices.reversed()) { +// boundsMatrix.preConcat(parentLayers[i].transform.getMatrix()) +// } +// } else if (parentLayer != null) { +// boundsMatrix.preConcat(parentLayer.transform.getMatrix()) +// } +// } +// +// boundsMatrix.preConcat(transform.getMatrix()) +// } +// +// private fun buildParentLayerListIfNeeded() { +// val list = mutableListOf() +// +// parentLayers = mutableListOf() +// val layer = parentLayer +// while (layer != null) { +// list.add(layer) +// parentLayers = list +// } +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt new file mode 100644 index 00000000..cbbaa535 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt @@ -0,0 +1,31 @@ +package io.github.alexzhirkevich.compottie.internal.schema.layers + +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@JsonClassDiscriminator("ty") +internal sealed interface Layer { + + val is3d: BooleanInt + + val hidden: Boolean + + val index : Int? + + val parent : Int? + + val stretch : Float + + val inPoint : Float? + + val outPoint : Float? + + val startTime : Int? + + val name : String? +} + + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt new file mode 100644 index 00000000..01aa7790 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt @@ -0,0 +1,80 @@ +package io.github.alexzhirkevich.compottie.internal.schema.layers + +import androidx.compose.ui.graphics.Canvas +import io.github.alexzhirkevich.compottie.internal.schema.effects.Effect +import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode +import io.github.alexzhirkevich.compottie.internal.schema.shapes.BaseCanvasShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.CanvasShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("4") +internal class ShapeLayer( + + @SerialName("ks") + override val transform : Transform = Transform(), + + @SerialName("ao") + override val autoOrient : BooleanInt = BooleanInt.No, + + @SerialName("ddd") + override val is3d: BooleanInt = BooleanInt.No, + + @SerialName("ind") + override val index : Int? = null, + + @SerialName("bm") + override val blendMode: LottieBlendMode = LottieBlendMode.Normal, + + @SerialName("cl") + override val clazz : String? = null, + + @SerialName("ln") + override val htmlId : String? = null, + + @SerialName("ip") + override val inPoint : Float? = null, + + @SerialName("op") + override val outPoint : Float? = null, + + @SerialName("st") + override val startTime : Int? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("ef") + val effect : List = emptyList(), + + @SerialName("sr") + override val stretch : Float = 1f, + + @SerialName("parent") + override val parent : Int? = null, + + @SerialName("shapes") + override val shapes : List = emptyList(), + + @SerialName("tt") + override val matteMode : MatteMode? = null, + + @SerialName("tp") + override val matteParent : Int? = null, + + @SerialName("td") + override val matteTarget : BooleanInt? = null, + + @SerialName("hd") + override val hidden: Boolean = false, + + override val collapseTransform: BooleanInt = BooleanInt.No +) : VisualLayer, CanvasShape by BaseCanvasShape( + root = true, hidden = hidden, shapes = shapes, matchName = name +) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt new file mode 100644 index 00000000..d93947af --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt @@ -0,0 +1,34 @@ +package io.github.alexzhirkevich.compottie.internal.schema.layers + +import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@JsonClassDiscriminator("ty") +internal sealed interface VisualLayer : Layer { + + val transform : Transform + + val autoOrient : BooleanInt + + val matteMode : MatteMode? + + val matteParent : Int? + + val matteTarget : BooleanInt? + + val blendMode: LottieBlendMode + + val clazz : String? + + val htmlId : String? + + val collapseTransform : BooleanInt +} + + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BezierCurveInterpolation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BezierCurveInterpolation.kt new file mode 100644 index 00000000..7e8edcbc --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BezierCurveInterpolation.kt @@ -0,0 +1,10 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.Serializable + +@Serializable +class BezierCurveInterpolation( + val x : FloatArray, + val y : FloatArray +) + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BooleanInt.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BooleanInt.kt new file mode 100644 index 00000000..ac925176 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BooleanInt.kt @@ -0,0 +1,16 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@JvmInline +@Serializable +internal value class BooleanInt(val value : Byte) { + + companion object { + val Yes = BooleanInt(1) + val No = BooleanInt(0) + } + + fun toBoolean() = this == Yes +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt new file mode 100644 index 00000000..a8f5211c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt @@ -0,0 +1,20 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import androidx.compose.ui.graphics.Color +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class GradientColors( + + @SerialName("k") + val colors : Vector, + + @SerialName("p") + val numberOfColors : Int = 0 +) { + fun interpolated(time : Int) : List> { + + val vector = colors.interpolated(time) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Indexable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Indexable.kt new file mode 100644 index 00000000..a22a342e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Indexable.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +internal interface Indexable { + val expression : String ? + val index : String? +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt new file mode 100644 index 00000000..c485c9d6 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +internal interface Keyframe { + val time : Int +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/MatteMode.kt new file mode 100644 index 00000000..5defc945 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/MatteMode.kt @@ -0,0 +1,16 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +value class MatteMode(val mode : Byte) { + companion object { + val Normal = MatteMode(0) + val Alpha = MatteMode(1) + val InvertedAlpha = MatteMode(2) + val Luma = MatteMode(3) + val InvertedLuma = MatteMode(4) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt new file mode 100644 index 00000000..2a93beb4 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt @@ -0,0 +1,56 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("a") +internal sealed interface ShapeProperties : Indexable { + + fun interpolated(time : Int) : ShapeProperty + + @Serializable + @SerialName("0") + class Default( + @SerialName("k") + val value : ShapeProperty, + + @SerialName("x") + override val expression : String? = null, + + @SerialName("ix") + override val index: String? = null, + + ) : ShapeProperties { + override fun interpolated(time: Int): ShapeProperty { + return value + } + } + + @SerialName("1") + @Serializable + class Keyframed( + + @SerialName("k") + val value : ShapePropertyKeyframe, + + @SerialName("x") + override val expression : String? = null, + + @SerialName("ix") + override val index: String? = null, + + @SerialName("ti") + val inTangent: FloatArray? = null, + + @SerialName("to") + val outTangent: FloatArray? = null, + ) : ShapeProperties { + override fun interpolated(time: Int): ShapeProperty { + TODO("Not yet implemented") + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt new file mode 100644 index 00000000..ff555384 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt @@ -0,0 +1,30 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + + +@Serializable +internal class ShapeProperty( + + @SerialName("c") + val closed : Boolean, + + /** + * Bezier curve In points. Array of 2 dimensional arrays + * */ + @SerialName("i") + val inPoints : List, + + /** + * Bezier curve Out points. Array of 2 dimensional arrays. + * */ + @SerialName("o") + val outPoints : List, + + /** + * Bezier curve Vertices. Array of 2 dimensional arrays. + * */ + @SerialName("v") + val vertices : List +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt new file mode 100644 index 00000000..f11af4bc --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt @@ -0,0 +1,21 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + + +@Serializable +internal class ShapePropertyKeyframe( + + @SerialName("s") + val start : List, + + @SerialName("t") + override val time: Int, + + @SerialName("i") + val inValue : BezierCurveInterpolation, + + @SerialName("o") + val outValue : BezierCurveInterpolation, +) : Keyframe \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/TrimPathType.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/TrimPathType.kt new file mode 100644 index 00000000..090d831f --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/TrimPathType.kt @@ -0,0 +1,18 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.TripleSerializer +import kotlin.jvm.JvmInline + +@JvmInline +@Serializable +internal value class TrimPathType( + val type : Byte +) { + + companion object { + val Simultaneously = TrimPathType(1) + + val Individually = TrimPathType(2) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Value.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Value.kt new file mode 100644 index 00000000..e952f045 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Value.kt @@ -0,0 +1,58 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import androidx.compose.animation.core.AnimationVector +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonClassDiscriminator +import kotlin.time.Duration.Companion.milliseconds + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("a") +internal sealed interface Value : Indexable { + + fun interpolated(time : Int) : Float + + @Serializable + @SerialName("0") + class Default( + @SerialName("k") + val value : Float, + + @SerialName("x") + override val expression : String? = null, + + @SerialName("ix") + override val index : String? = null + ) : Value { + + override fun interpolated(time: Int): Float = value + } + + @Serializable + @SerialName("1") + class Keyframed( + @SerialName("k") + val value : List, + + @SerialName("x") + override val expression : String? = null, + + @SerialName("ix") + override val index : String? = null + ) : Value { + + @Transient + private val keyframes = value.toAnimation() + + override fun interpolated(time: Int): Float { + return keyframes.getValueFromNanos( + playTimeNanos = time.milliseconds.inWholeNanoseconds, + ).value + } + } +} + +private val ZeroVector = AnimationVector(0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt new file mode 100644 index 00000000..f8ee616e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt @@ -0,0 +1,61 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import androidx.compose.animation.core.AnimationVector +import androidx.compose.animation.core.CubicBezierEasing +import androidx.compose.animation.core.TwoWayConverter +import androidx.compose.animation.core.createAnimation +import androidx.compose.animation.core.keyframes +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +internal class ValueKeyframe( + + @SerialName("s") + val start: FloatArray = floatArrayOf(0f), + + @SerialName("t") + override val time: Int, + + @SerialName("i") + val inValue : BezierCurveInterpolation? = null, + + @SerialName("o") + val outValue : BezierCurveInterpolation? = null, +) : Keyframe { + + @Transient + internal val easing = if (inValue != null && outValue != null) { + CubicBezierEasing( + inValue.x[0], + inValue.y[0], + outValue.x[0], + outValue.y[0] + ) + } else null +} + +internal fun Iterable.toAnimation() = keyframes { + durationMillis = last().time + forEach { + if (it.easing != null) { + it.start[0] at it.time using it.easing + } else { + it.start[0] at it.time + } + } +}.vectorize( + converter = TwoWayConverter( + convertToVector = { + AnimationVector(it) + }, + convertFromVector = { it.value } + ) +).createAnimation( + initialValue = AnimationVector(first().start[0]), + targetValue = AnimationVector(last().start[0]), + initialVelocity = ZeroVector1d +) + +private val ZeroVector1d = AnimationVector(0f) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Vector.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Vector.kt new file mode 100644 index 00000000..0403a6a6 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Vector.kt @@ -0,0 +1,63 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonClassDiscriminator +import kotlin.time.Duration.Companion.milliseconds + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("a") +internal sealed interface Vector : Indexable { + + fun interpolated(time: Int): FloatArray + + @Serializable + @SerialName("0") + class Default( + @SerialName("k") + val value: FloatArray, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null + ) : Vector { + + override fun interpolated(time: Int): FloatArray = value + } + + @Serializable + @SerialName("1") + class Keyframed( + + @SerialName("k") + val value: List, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null, + + @SerialName("ti") + val inTangent: FloatArray? = null, + + @SerialName("to") + val outTangent: FloatArray? = null, + ) : Vector { + + @Transient + private val animation = value.to2DAnimation() + + override fun interpolated(time: Int): FloatArray { + return animation.getValueFromNanos( + playTimeNanos = time.milliseconds.inWholeNanoseconds, + ).let { floatArrayOf(it.v1, it.v2) } + } + } +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt new file mode 100644 index 00000000..6501264c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt @@ -0,0 +1,85 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import androidx.compose.animation.core.AnimationSpec +import androidx.compose.animation.core.AnimationVector +import androidx.compose.animation.core.CubicBezierEasing +import androidx.compose.animation.core.Easing +import androidx.compose.animation.core.KeyframesSpec +import androidx.compose.animation.core.TwoWayConverter +import androidx.compose.animation.core.VectorizedKeyframesSpec +import androidx.compose.animation.core.createAnimation +import androidx.compose.animation.core.keyframes +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +class VectorKeyframe( + + @SerialName("s") + val start : FloatArray = floatArrayOf(0f,0f), + + @SerialName("t") + val time : Int, + + @SerialName("i") + val inValue : BezierCurveInterpolation? = null, + + @SerialName("o") + val outValue : BezierCurveInterpolation? = null +) { + + @Transient + val easing = if (inValue != null && outValue != null){ + CubicBezierEasing( + outValue.x[0], outValue.y[0], + inValue.x[0], inValue.y[0], + ) + } else null +} + + + +internal fun Iterable.to2DAnimation() = keyframes { + durationMillis = last().time + + forEach { + if (it.easing != null) { + it.start at it.time using it.easing + } else { + it.start at it.time + } + } +}.vectorize( + converter = TwoWayConverter( + convertToVector = { + AnimationVector(it[0], it[1]) + }, + convertFromVector = { + floatArrayOf(it.v1, it.v2) + } + ) +).createAnimation( + initialValue = AnimationVector(first().start[0], first().start[1]), + targetValue = AnimationVector(last().start[0], last().start[1]), + initialVelocity = ZeroVector +) + +private val ZeroVector = AnimationVector(0f,0f) + + +@Suppress("INVISIBLE_MEMBER","INVISIBLE_REFERENCE") +private fun KeyframesSpec.vectorize( +): VectorizedKeyframesSpec { + + @Suppress("PrimitiveInCollection") // Consumed by stable public API + val vectorizedKeyframes = mutableMapOf>() + config.keyframes.forEach { key, value -> + vectorizedKeyframes[key] = value.toPair(converter.convertToVector) + } + return VectorizedKeyframesSpec( + keyframes = vectorizedKeyframes, + durationMillis = config.durationMillis, + delayMillis = config.delayMillis + ) +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt new file mode 100644 index 00000000..b03812ce --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt @@ -0,0 +1,220 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure +import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.schema.Content +import io.github.alexzhirkevich.compottie.internal.schema.DrawableContent +import io.github.alexzhirkevich.compottie.internal.schema.PathContent +import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.Utils +import kotlin.math.min + +internal abstract class BaseStroke() : DrawableContent { + + private val pathGroups = mutableListOf() + + private val trimPathPath = Path() + private val path = Path() + private val paint = Paint() + private val pm = ExtendedPathMeasure() + + abstract val opacity: Value + abstract val strokeWidth: Value + + open fun setupPaint(paint: Paint, time: Int){ + paint.style = PaintingStyle.Stroke + paint.alpha = opacity.interpolated(time) + paint.strokeWidth = strokeWidth.interpolated(time) + } + + final override fun drawIntoCanvas(canvas: Canvas, parentMatrix: Matrix, time: Int) { + + //TODO: +// if (com.airbnb.lottie.utils.Utils.hasZeroScaleAxis(parentMatrix)) { +// return +// } + + setupPaint(paint, time) + + if (paint.strokeWidth <= 0) { + return + } +// applyDashPatternIfNeeded(parentMatrix) + +// if (colorFilterAnimation != null) { +// paint.setColorFilter(colorFilterAnimation.getValue()) +// } +// +// if (blurAnimation != null) { +// val blurRadius: Float = blurAnimation.getValue() +// if (blurRadius == 0f) { +// paint.setMaskFilter(null) +// } else if (blurRadius != blurMaskFilterRadius) { +// val blur: BlurMaskFilter = layer.getBlurMaskFilter(blurRadius) +// paint.setMaskFilter(blur) +// } +// blurMaskFilterRadius = blurRadius +// } +// if (dropShadowAnimation != null) { +// dropShadowAnimation.applyTo(paint) +// } + + pathGroups.fastForEach { pathGroup -> + + if (pathGroup.trimPath != null) { + applyTrimPath(canvas, time, pathGroup, parentMatrix) + } else { + path.reset() + pathGroup.paths.fastForEachReversed { + path.addPath(it.getPath(time).apply { transform(parentMatrix) }) + } + canvas.drawPath(path, paint) + } + } + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + + val trimPathContentBefore: TrimPath? = contentsBefore.firstOrNull { + it is TrimPath && it.type == TrimPathType.Companion.Individually + } as TrimPath? + + var currentPathGroup: PathGroup? = null + + contentsAfter.fastForEachReversed { content -> + if (content is TrimPath && content.type == TrimPathType.Individually) { + currentPathGroup?.let(pathGroups::add) + + currentPathGroup = PathGroup(content) + } else if (content is PathContent) { + if (currentPathGroup == null) { + currentPathGroup = PathGroup(trimPathContentBefore) + } + currentPathGroup?.paths?.add(content) + } + } + + contentsAfter.fastForEachReversed { content -> + if (content is TrimPath && content.type == TrimPathType.Individually) { + currentPathGroup?.let(pathGroups::add) + + currentPathGroup = PathGroup(content) + + } else if (content is PathContent) { + if (currentPathGroup == null) { + currentPathGroup = PathGroup( + trimPathContentBefore + ) + } + currentPathGroup!!.paths.add(content) + } + } + + currentPathGroup?.let(pathGroups::add) + } + + private fun applyTrimPath( + canvas: Canvas, + time: Int, + pathGroup: PathGroup, + parentMatrix: Matrix + ) { + if (pathGroup.trimPath == null) { + return + } + path.reset() + + pathGroup.paths.fastForEachReversed { + path.addPath(it.getPath(time).apply { transform(parentMatrix) }) + } + val animStartValue: Float = pathGroup.trimPath.start.interpolated(time) / 100f + val animEndValue: Float = pathGroup.trimPath.end.interpolated(time) / 100f + val animOffsetValue: Float = pathGroup.trimPath.offset.interpolated(time) / 360f + + // If the start-end is ~100, consider it to be the full path. + if (animStartValue < 0.01f && animEndValue > 0.99f) { + canvas.drawPath(path, paint) + return + } + + pm.setPath(path, false) + + var totalLength: Float = pm.length + + while (pm.nextContour()) { + totalLength += pm.length + } + val offsetLength = totalLength * animOffsetValue + val startLength = totalLength * animStartValue + offsetLength + val endLength = min( + (totalLength * animEndValue + offsetLength).toDouble(), + (startLength + totalLength - 1f).toDouble() + ).toFloat() + + var currentLength = 0f + for (j in pathGroup.paths.indices.reversed()) { + trimPathPath.set(pathGroup.paths[j].getPath(time)) + trimPathPath.transform(parentMatrix) + pm.setPath(trimPathPath, false) + val length: Float = pm.length + if (endLength > totalLength && endLength - totalLength < currentLength + length && currentLength < endLength - totalLength) { + // Draw the segment when the end is greater than the length which wraps around to the + // beginning. + val startValue = if (startLength > totalLength) { + (startLength - totalLength) / length + } else { + 0f + } + val endValue = + min(((endLength - totalLength) / length).toDouble(), 1.0) + .toFloat() + Utils.applyTrimPathIfNeeded( + trimPathPath, + startValue, + endValue, + 0f + ) + canvas.drawPath(trimPathPath, paint) + } else + if (currentLength + length < startLength || currentLength > endLength) { + // Do nothing + } else if (currentLength + length <= endLength && startLength < currentLength) { + canvas.drawPath(trimPathPath, paint) + } else { + val startValue = if (startLength < currentLength) { + 0f + } else { + (startLength - currentLength) / length + } + val endValue = if (endLength > currentLength + length) { + 1f + } else { + (endLength - currentLength) / length + } + Utils.applyTrimPathIfNeeded( + trimPathPath, + startValue, + endValue, + 0f + ) + canvas.drawPath(trimPathPath, paint) + } + currentLength += length + } + } +} + +private class PathGroup( + val trimPath: TrimPath? +) { + + val paths: MutableList = mutableListOf() +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt new file mode 100644 index 00000000..1858f026 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt @@ -0,0 +1,89 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.schema.Content +import io.github.alexzhirkevich.compottie.internal.schema.PathContent +import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("el") +internal class Ellipse( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("d") + val direction : Int = 1, + + @SerialName("p") + val position : Vector, + + @SerialName("s") + val size : Vector, +) : Shape, PathContent { + + @Transient + private val path = Path() + + @Transient + private val trimPaths = CompoundTrimPath() + + private var lastPosition : FloatArray? = null + private var lastSize : FloatArray? = null + + override fun setContents(contentsBefore: List, contentsAfter: List) { + contentsBefore.forEach { + if (it is TrimPath && it.type == TrimPathType.Simultaneously){ + trimPaths.addTrimPath((it)) + } + } + } + + override fun getPath(time: Int): Path { + + if (hidden) { + path.rewind() + return path + } + + val position = position.interpolated(time) + val size = size.interpolated(time) + + if (lastPosition.contentEquals(position) && lastSize.contentEquals(size)){ + return path + } + + lastPosition = position + lastSize = size + + path.rewind() + + val top = (position[0] - size[0] / 2) + val left = (position[1] - size[1] / 2) + + path.addOval( + Rect( + top = top, + left = left, + bottom = top + size[0], + right = left + size[1], + ) + ) + + trimPaths.apply(path, time) + + return path + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt new file mode 100644 index 00000000..ecfae218 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt @@ -0,0 +1,39 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.PaintingStyle +import io.github.alexzhirkevich.compottie.internal.schema.Content +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("fl") +internal class Fill( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("a") + override val withAlpha : BooleanInt = BooleanInt.No, + + @SerialName("d") + val direction : Int = 1, + + @SerialName("o") + override val opacity : Value, + + @SerialName("c") + override val color : Vector, +) : SolidDrawShape() { + + override val paintingStyle: PaintingStyle + get() = PaintingStyle.Fill +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt new file mode 100644 index 00000000..6b3ec34c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt @@ -0,0 +1,103 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.LinearGradientShader +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle +import androidx.compose.ui.graphics.RadialGradientShader +import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@SerialName("gf") +internal class GradientFill( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("o") + val opacity : Value, + + @SerialName("s") + val startPoint : Vector, + + @SerialName("e") + val endPoint : Vector, + + @SerialName("t") + val type : GradientType, + + /** + * Gradient Highlight Length. Only if type is Radial + * */ + @SerialName("h") + val highlightLength : Value? = null, + + /** + * Highlight Angle. Only if type is Radial + * */ + @SerialName("a") + val highlightAngle : Value? = null, + + @SerialName("g") + val colors : GradientColors, +) : DrawShape { + + override fun applyTo(paint: Paint, time: Int) { + paint.style = PaintingStyle.Fill + paint.alpha = opacity.interpolated(time) + + val interpolatedColors = colors.colors.interpolated(time) + + val colorStops = List(colors.numberOfColors) { + interpolatedColors[it * 4] + } + + val colors = List(colors.numberOfColors) { + Color( + interpolatedColors[it * 4 + 1], + interpolatedColors[it * 4 + 2], + interpolatedColors[it * 4 + 3] + ) + } + + paint.shader = when (type) { + + GradientType.Linear -> LinearGradientShader( + from = startPoint.interpolated(time).toOffset(), + to = endPoint.interpolated(time).toOffset(), + colorStops = colorStops, + colors = colors + ) + + GradientType.Radial -> RadialGradientShader( + colorStops = colorStops, + colors = colors, + center = startPoint.interpolated(time).toOffset(), + radius = highlightLength?.interpolated(time) ?: 0f, + ) + else -> error("Unknown gradient type: $type") + } + } +} + + +@Serializable +@JvmInline +internal value class GradientType(val type : Byte) { + companion object { + val Linear = GradientType(1) + val Radial = GradientType(2) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt new file mode 100644 index 00000000..8a8ad9f9 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt @@ -0,0 +1,84 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Shader +import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("gs") +internal class GradientStroke( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("lc") + val lineCap : LineCap, + + @SerialName("lj") + val lineJoin : LineJoin, + + @SerialName("ml") + val miterLimit : Float? = null, + + @SerialName("o") + val opacity : Value, + + @SerialName("w") + val width : Value, + + @SerialName("s") + val startPoint : Vector, + + @SerialName("e") + val endPoint : Vector, + + /** + * Gradient Highlight Length. Only if type is Radial + * */ + @SerialName("h") + val highlightLength : Value? = null, + + /** + * Highlight Angle. Only if type is Radial + * */ + @SerialName("a") + val highlightAngle : Value? = null, + + @SerialName("g") + val colors : GradientColors, + + @SerialName("t") + val type : GradientType, +) : BaseStroke(), Shape { + + override fun setupPaint(paint: Paint, time: Int) { + super.setupPaint(paint, time) + + paint.shader = when (type){ + GradientType.Linear -> getLinearGradient(time) + GradientType.Radial -> getRadialGradient(time) + else -> error("Unknown gradient type: $type") + } + } + + private fun getLinearGradient(time: Int) : Shader { + val startPoint = startPoint.interpolated(time) + val endPoint = endPoint.interpolated(time) + val color = colors. + } + + private fun getRadialGradient(time: Int) : Shader { + TODO() + } +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt new file mode 100644 index 00000000..4c5c6a5b --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt @@ -0,0 +1,84 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("gr") +internal class Group( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("np") + val numberOfProperties : Int = 0, + + @SerialName("it") + val items : List = emptyList(), +) : CanvasShape by BaseCanvasShape( + root = false, + hidden = hidden, + shapes = items, + matchName = matchName, + name = name +) + +internal class BaseCanvasShape( + val root : Boolean, + override val hidden: Boolean, + override val shapes : List, + override val matchName: String? = null, + override val name: String? = null, +) : CanvasShape { + + private val visibleShapes = shapes.filterNot(Shape::hidden) + + private val drawShapes = visibleShapes + .filterIsInstance().map { + it to Paint() + } + + override var path = Path() + + private val layoutShapes = visibleShapes + .filterIsInstance() + + private val groupShapes = visibleShapes + .filterIsInstance() + .onEach { + it.path = path + } + + override fun drawIntoCanvas(canvas: Canvas, time: Int) { + + if (drawShapes.isEmpty()) { + groupShapes.fastForEach { + it.drawIntoCanvas(canvas, time) + } + } else { + drawShapes.fastForEach { (drawShape, paint) -> + if (root) { + path.rewind() + } + drawShape.applyTo(paint, time) + groupShapes.fastForEach { + it.drawIntoCanvas(canvas, time) + } + layoutShapes.fastForEach { layoutShape -> + layoutShape.applyTo(path, time) + } + canvas.drawPath(path, paint) + } + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt new file mode 100644 index 00000000..e495ac41 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt @@ -0,0 +1,53 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.schema.properties.ShapeProperties +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("sh") +internal class Path( + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("ks") + val properties : ShapeProperties +) : LayoutShape { + + @Transient + private var path = Path() + + override fun getPath(time: Int): Path { + path.rewind() + + val shape = properties.interpolated(time) + + val first = shape.vertices.first() + + path.moveTo(first[0], first[1]) + + for (i in shape.vertices.indices){ + path.cubicTo( + shape.vertices[i][0], + shape.vertices[i][1], + shape.inPoints[i][0], + shape.inPoints[i][1], + shape.outPoints[i][0], + shape.outPoints[i][1], + ) + } + + if (shape.closed){ + path.close() + } + return path + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt new file mode 100644 index 00000000..67f2ec6f --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt @@ -0,0 +1,124 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.geometry.RoundRect +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.schema.Content +import io.github.alexzhirkevich.compottie.internal.schema.PathContent +import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("rc") +internal class Rect( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("d") + val direction : Int = 1, + + @SerialName("p") + val position : Vector, + + @SerialName("s") + val size : Vector, + + @SerialName("r") + val roundedCorners : Value? = null, +) : Shape, PathContent { + + @Transient + private val path = Path() + + @Transient + private val trimPaths = CompoundTrimPath() + + override fun setContents(contentsBefore: List, contentsAfter: List) { + contentsBefore.forEach { + if (it is TrimPath && it.type == TrimPathType.Simultaneously) { + trimPaths.addTrimPath(it) + } + } +// if (content is com.airbnb.lottie.animation.content.RoundedCornersContent) { +// roundedCornersAnimation = +// (content as com.airbnb.lottie.animation.content.RoundedCornersContent).getRoundedCorners() +// } +// } + } + + @Transient + private var lastPosition: FloatArray? = null + + @Transient + private var lastSize: FloatArray? = null + + @Transient + private var lastCorners: Float? = null + + + override fun getPath(time: Int): Path { + + if (hidden) { + path.rewind() + return path + } + + val position = position.interpolated(time) + val size = size.interpolated(time) + val radius = roundedCorners?.interpolated(time) + + if (lastPosition.contentEquals(position) && + lastSize.contentEquals(size) && + lastCorners == radius + ) { + return path + } + + lastPosition = position + lastSize = size + lastCorners = radius + + path.rewind() + + val left = (position[0] - size[0] / 2) + val top = (position[1] - size[1] / 2) + val bottom = top + size[1] + val right = left + size[0] + + + val rect = Rect( + top = top, + left = left, + bottom = bottom, + right = right, + ) + + if (radius != null) { + path.addRoundRect( + RoundRect( + rect = rect, + radiusX = radius, + radiusY = radius + ) + ) + } else { + path.addRect(rect) + } + + trimPaths.apply(path, time) + + return path + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt new file mode 100644 index 00000000..1a577efb --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt @@ -0,0 +1,33 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PathEffect +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("rd") +internal class Round( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("r") + val radius : Value, +) : DrawShape { + + override fun applyTo(paint: Paint, time: Int) { + + val radius = radius.interpolated(time) + + paint.pathEffect = PathEffect.cornerPathEffect(radius) + } + +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt new file mode 100644 index 00000000..995f4a7f --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt @@ -0,0 +1,89 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle +import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.schema.Content +import io.github.alexzhirkevich.compottie.internal.schema.DrawableContent +import io.github.alexzhirkevich.compottie.internal.schema.PathContent +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("ty") +sealed interface Shape : Content { + val matchName : String? + + + val hidden : Boolean +} + + +@Serializable +internal sealed class SolidDrawShape : Shape, DrawableContent { + + abstract val withAlpha : BooleanInt + abstract val opacity : Value + abstract val color : Vector + abstract val paintingStyle: PaintingStyle + + private val cachedColor by lazy { + if (opacity is Value.Default && color is Vector.Default) { + interpolatedColor(0) + } else null + } + + private val paths = mutableListOf() + + private val paint = Paint() + + override fun setContents(contentsBefore: List, contentsAfter: List) { + contentsAfter.forEach { + if (it is PathContent){ + paths += it + } + } + } + + open fun setupPaint(paint: Paint, time: Int) { + paint.isAntiAlias = true + paint.style = paintingStyle + paint.alpha = interpolatedAlpha(time) + paint.color = cachedColor ?: interpolatedColor(time) + } + + override fun drawIntoCanvas(canvas: Canvas, parentMatrix: Matrix, time: Int) { + if (hidden) { + return + } + setupPaint(paint, time) + + paths.fastForEach { + canvas.drawPath(it.getPath(time), paint) + } + } + + private fun interpolatedAlpha(time : Int)= + (opacity.interpolated(time) / 100f).coerceIn(0f,1f) + + private fun interpolatedColor(time: Int): Color { + return color.interpolated(0).let { + Color( + red = it[0], + green = it[1], + blue = it[2], + alpha = if (withAlpha.toBoolean()) { + it[3] * interpolatedAlpha(time) + } else interpolatedAlpha(time) + ) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt new file mode 100644 index 00000000..8ec88c9a --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt @@ -0,0 +1,166 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.layout.ScaleFactor +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlin.jvm.JvmInline +import kotlin.math.PI +import kotlin.math.cos +import kotlin.math.sin + +@Serializable +@SerialName("sr") +internal class Star( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("p") + val position : Vector, + + @SerialName("d") + val direction : Int = 1, + + @SerialName("is") + val innerRoundness : Value, + + @SerialName("ir") + val innerRadius : Value, + + @SerialName("or") + val outerRadius : Value, + + @SerialName("os") + val outerRoundness : Value, + + @SerialName("r") + val rotation : Value, + + @SerialName("pt") + val points : Value, + + @SerialName("s") + val size : Vector, + + @SerialName("sy") + val starType : StarType, + +) : LayoutShape { + + @Transient + private val path = Path() + + override fun getPath(time: Int): Path { + + path.rewind() + + val position = position.interpolated(time) + val size = size.interpolated(time) + + val top = (position[0] - size[0] / 2) + val left = (position[1] - size[0] / 2) + + path.addOval( + Rect( + top = top, + left = left, + bottom = top + size[0], + right = left + size[1], + ) + ) + return path + } + + private fun applyStarTo(path: Path, scale: ScaleFactor, time: Int) { + + val points = points.interpolated(time) + val rotation = rotation.interpolated(time) + val outer_roundness = outerRoundness.interpolated(time) + val inner_roundness = innerRoundness.interpolated(time) + val outer_radius = outerRadius.interpolated(time) + val inner_radius = innerRadius.interpolated(time) + + val half_angle = PI / points + val angle_radians = rotation / 180 * PI + + // Tangents for rounded courners + val tangent_len_outer = + (outer_roundness * outer_radius * 2 * PI / (points * 4 * 100)).toFloat() + val tangent_len_inner = + (inner_roundness * inner_radius * 2 * PI / (points * 4 * 100)).toFloat() + + repeat(points.toInt()) { i -> + val main_angle = -PI / 2 + angle_radians + i * half_angle * 2; + + val outer_vertex = Offset( + outer_radius * cos(main_angle).toFloat(), + outer_radius * sin(main_angle).toFloat() + ); + + val outer_tangent = if (outer_radius == 0f) { + Offset.Zero + } else { + Offset( + outer_vertex.y / outer_radius * tangent_len_outer, + -outer_vertex.x / outer_radius * tangent_len_outer + ) + } + + path.cubicTo( + outer_vertex.x, + outer_vertex.y, + outer_tangent.x, + outer_tangent.y, + -outer_tangent.x, + -outer_tangent.y + ) + + // Star inner radius + if (starType == StarType.Star) { + val inner_vertex = Offset( + inner_radius * cos(main_angle + half_angle).toFloat(), + inner_radius * sin(main_angle + half_angle).toFloat() + ) + + val inner_tangent = if (inner_radius.toInt() != 0) { + Offset( + inner_vertex.y / inner_radius * tangent_len_inner, + -inner_vertex.x / inner_radius * tangent_len_inner + ) + } else { + Offset.Zero + } + + path.cubicTo( + inner_vertex.x, + inner_vertex.y, + inner_tangent.x, + inner_tangent.y, + -inner_tangent.x, + -inner_tangent.y + ) + } + } + } +} + +@Serializable +@JvmInline +value class StarType(val type : Byte) { + companion object { + val Star = StarType(1) + val Polygon = StarType(2) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Stroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Stroke.kt new file mode 100644 index 00000000..20a6243c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Stroke.kt @@ -0,0 +1,94 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.graphics.StrokeJoin +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@SerialName("st") +internal class Stroke( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("a") + val withAlpha : BooleanInt = BooleanInt.No, + + @SerialName("lc") + val lineCap : LineCap, + + @SerialName("lj") + val lineJoin : LineJoin, + + @SerialName("ml") + val miterLimit : Float? = null, + + @SerialName("o") + override val opacity : Value, + + @SerialName("w") + override val strokeWidth : Value, + + @SerialName("c") + val color : Vector, +) : BaseStroke(), Shape { + + override fun setupPaint(paint: Paint, time: Int) { + super.setupPaint(paint, time) + paint.strokeCap = lineCap.asStrokeCap() + paint.strokeJoin = lineJoin.asStrokeJoin() + miterLimit?.let { + paint.strokeMiterLimit = it + } + } +} + +@Serializable +@JvmInline +internal value class LineCap(val type : Byte) { + companion object { + val Butt = LineCap(1) + val Round = LineCap(2) + val Square = LineCap(3) + } +} + +@Serializable +@JvmInline +internal value class LineJoin(val type : Byte) { + companion object { + val Miter = LineJoin(1) + val Round = LineJoin(2) + val Bevel = LineJoin(3) + } +} + +internal fun LineJoin.asStrokeJoin() : StrokeJoin { + return when(this){ + LineJoin.Miter -> StrokeJoin.Miter + LineJoin.Round -> StrokeJoin.Round + LineJoin.Bevel -> StrokeJoin.Bevel + else -> error("Unknown line join: $this") + } +} + +internal fun LineCap.asStrokeCap() : StrokeCap { + return when(this){ + LineCap.Butt -> StrokeCap.Butt + LineCap.Round -> StrokeCap.Round + LineCap.Square -> StrokeCap.Square + else -> error("Unknown line cap: $this") + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt new file mode 100644 index 00000000..c56ae550 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt @@ -0,0 +1,50 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieTransform +import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("tr") +internal class TransformShape( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("a") + override val anchorPoint : Vector = Vector.Default(value = floatArrayOf(0f, 0f, 0f)), + + @SerialName("p") + override val position : Vector? = null, + + @SerialName("s") + override val scale : Vector? = null, + + @SerialName("r") + override val rotation : Value ? = null, + + @SerialName("o") + override val opacity : Value = Value.Default(value = 100f), + + @SerialName("sk") + override val skew: Value? = null, + + @SerialName("sa") + override val skewAxis: Value? = null, +) : LottieTransform(), ModifierShape { + + override fun applyTo(path: Path, paint: Paint, time: Int) { + path.transform(matrix(time)) + paint.alpha *= opacity.interpolated(time) / 100f + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt new file mode 100644 index 00000000..058d3363 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt @@ -0,0 +1,31 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("tm") +internal class Trim( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("d") + val direction : Int = 1, + + @SerialName("s") + val start : Value, + + @SerialName("e") + val end : Value, + + @SerialName("o") + val offset : Value, +) : Shape \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt new file mode 100644 index 00000000..c70146bb --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt @@ -0,0 +1,33 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType +import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("tr") +internal class TrimPath( + + @SerialName("n") + override val name: String? = null, + + @SerialName("mn") + override val matchName: String?, + + @SerialName("hd") + override val hidden: Boolean = false, + + @SerialName("s") + val start : Value, + + @SerialName("e") + val end : Value, + + @SerialName("o") + val offset : Value, + + @SerialName("m") + val type : TrimPathType = TrimPathType.Simultaneously +) : Shape { +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt new file mode 100644 index 00000000..23cf9134 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt @@ -0,0 +1,18 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath + +internal class CompoundTrimPath { + private val contents: MutableList = mutableListOf() + + fun addTrimPath(trimPath: TrimPath) { + contents.add(trimPath) + } + + fun apply(path: Path, time : Int) { + for (i in contents.indices.reversed()) { + Utils.applyTrimPathIfNeeded(path = path, trimPath = contents[i], time = time) + } + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt new file mode 100644 index 00000000..849ba97c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt @@ -0,0 +1,64 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * CornerRounding defines the amount and quality around a given vertex of a shape. + * [radius] defines the radius of the circle which forms the basis of the rounding for the + * vertex. [smoothing] defines the amount by which the curve is extended from the circular + * arc around the corner to the edge between vertices. + * + * Each corner of a shape can be thought of as either: + * + *

  • unrounded (with a corner radius of 0 and no smoothing)
  • + *
  • rounded with only a circular arc (with smoothing of 0). In this case, the rounding + * around the corner follows an approximated circular arc between the edges to adjacent + * vertices.
  • + *
  • rounded with three curves: There is an inner circular arc and two symmetric flanking + * curves. The flanking curves determine the curvature from the inner curve to the edges, + * with a value of 0 (no smoothing) meaning that it is purely a circular curve and a value of 1 + * meaning that the flanking curves are maximized between the inner curve and the edges. + * + * + * @param radius a value of 0 or greater, representing the radius of the circle which defines + * the inner rounding arc of the + * corner. A value of 0 indicates that the corner is sharp, or completely unrounded. A positive + * value is the requested size of the radius. Note that this radius is an absolute size that + * should relate to the overall size of its shape. Thus if the shape is in screen coordinate + * size, the radius should be sized appropriately. If the shape is in some canonical form + * (bounds of (-1,-1) to (1,1), for example, which is the default when creating a [RoundedPolygon] + * from a number of vertices), then the radius should be relative to that size. The radius will be + * scaled if the shape itself is transformed, since it will produce curves which round the corner + * and thus get transformed along with the overall shape. + * @param smoothing the amount by which the arc is "smoothed" by extending the curve from + * the inner circular arc to the edge between vertices. A value of 0 (no smoothing) indicates + * that the corner is rounded by only a circular arc; there are no flanking curves. A value + * of 1 indicates that there is no circular arc in the center; the flanking curves on either side + * meet at the middle. + */ +class CornerRounding( + /*@FloatRange(from = 0.0) */val radius: Float = 0f, + /*@FloatRange(from = 0.0, to = 1.0) */val smoothing: Float = 0f +) { + + companion object { + /** + * [Unrounded] has a rounding radius of zero, producing a sharp corner at a vertex. + */ + val Unrounded = CornerRounding() + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt new file mode 100644 index 00000000..c74868cc --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt @@ -0,0 +1,437 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import androidx.compose.ui.geometry.Offset +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min +import kotlin.math.sqrt + +/** + * This class holds the anchor and control point data for a single cubic Bézier curve, + * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end + * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining + * the slope of the curve between the anchor points. + */ +open class Cubic internal constructor(internal val points: FloatArray = FloatArray(8)) { + init { + require(points.size == 8) { "Points array size should be 8" } + } + + /** + * The first anchor point x coordinate + */ + val anchor0X get() = points[0] + + /** + * The first anchor point y coordinate + */ + val anchor0Y get() = points[1] + + /** + * The first control point x coordinate + */ + val control0X get() = points[2] + + /** + * The first control point y coordinate + */ + val control0Y get() = points[3] + + /** + * The second control point x coordinate + */ + val control1X get() = points[4] + + /** + * The second control point y coordinate + */ + val control1Y get() = points[5] + + /** + * The second anchor point x coordinate + */ + val anchor1X get() = points[6] + + /** + * The second anchor point y coordinate + */ + val anchor1Y get() = points[7] + + internal constructor(anchor0: Offset, control0: Offset, control1: Offset, anchor1: Offset) : + this(floatArrayOf(anchor0.x, anchor0.y, control0.x, control0.y, + control1.x, control1.y, anchor1.x, anchor1.y)) + + /** + * Returns a point on the curve for parameter t, representing the proportional distance + * along the curve between its starting point at anchor0 and ending point at anchor1. + * + * @param t The distance along the curve between the anchor points, where 0 is at anchor0 and + * 1 is at anchor1 + */ + internal fun pointOnCurve(t: Float): Offset { + val u = 1 - t + return Offset(anchor0X * (u * u * u) + control0X * (3 * t * u * u) + + control1X * (3 * t * t * u) + anchor1X * (t * t * t), + anchor0Y * (u * u * u) + control0Y * (3 * t * u * u) + + control1Y * (3 * t * t * u) + anchor1Y * (t * t * t) + ) + } + + internal fun zeroLength() = abs(anchor0X - anchor1X) < DistanceEpsilon && + abs(anchor0Y - anchor1Y) < DistanceEpsilon + + private fun zeroIsh(value: Float) = abs(value) < DistanceEpsilon + + /** + * This function returns the true bounds of this curve, filling [bounds] with the + * axis-aligned bounding box values for left, top, right, and bottom, in that order. + */ + internal fun calculateBounds( + bounds: FloatArray = FloatArray(4), + approximate: Boolean = false + ) { + + // A curve might be of zero-length, with both anchors co-lated. + // Just return the point itself. + if (zeroLength()) { + bounds[0] = anchor0X + bounds[1] = anchor0Y + bounds[2] = anchor0X + bounds[3] = anchor0Y + return + } + + var minX = min(anchor0X, anchor1X) + var minY = min(anchor0Y, anchor1Y) + var maxX = max(anchor0X, anchor1X) + var maxY = max(anchor0Y, anchor1Y) + + if (approximate) { + // Approximate bounds use the bounding box of all anchors and controls + bounds[0] = min(minX, min(control0X, control1X)) + bounds[1] = min(minY, min(control0Y, control1Y)) + bounds[2] = max(maxX, max(control0X, control1X)) + bounds[3] = max(maxY, max(control0Y, control1Y)) + return + } + + // Find the derivative, which is a quadratic Bezier. Then we can solve for t using + // the quadratic formula + val xa = -anchor0X + 3 * control0X - 3 * control1X + anchor1X + val xb = 2 * anchor0X - 4 * control0X + 2 * control1X + val xc = -anchor0X + control0X + + if (zeroIsh(xa)) { + // Try Muller's method instead; it can find a single root when a is 0 + if (xb != 0f) { + val t = 2 * xc / (-2 * xb) + if (t in 0f..1f) { + pointOnCurve(t).x.let { + if (it < minX) minX = it + if (it > maxX) maxX = it + } + } + } + } else { + val xs = xb * xb - 4 * xa * xc + if (xs >= 0) { + val t1 = (-xb + sqrt(xs)) / (2 * xa) + if (t1 in 0f..1f) { + pointOnCurve(t1).x.let { + if (it < minX) minX = it + if (it > maxX) maxX = it + } + } + + val t2 = (-xb - sqrt(xs)) / (2 * xa) + if (t2 in 0f..1f) { + pointOnCurve(t2).x.let { + if (it < minX) minX = it + if (it > maxX) maxX = it + } + } + } + } + + // Repeat the above for y coordinate + val ya = -anchor0Y + 3 * control0Y - 3 * control1Y + anchor1Y + val yb = 2 * anchor0Y - 4 * control0Y + 2 * control1Y + val yc = -anchor0Y + control0Y + + if (zeroIsh(ya)) { + if (yb != 0f) { + val t = 2 * yc / (-2 * yb) + if (t in 0f..1f) { + pointOnCurve(t).y.let { + if (it < minY) minY = it + if (it > maxY) maxY = it + } + } + } + } else { + val ys = yb * yb - 4 * ya * yc + if (ys >= 0) { + val t1 = (-yb + sqrt(ys)) / (2 * ya) + if (t1 in 0f..1f) { + pointOnCurve(t1).y.let { + if (it < minY) minY = it + if (it > maxY) maxY = it + } + } + + val t2 = (-yb - sqrt(ys)) / (2 * ya) + if (t2 in 0f..1f) { + pointOnCurve(t2).y.let { + if (it < minY) minY = it + if (it > maxY) maxY = it + } + } + } + } + bounds[0] = minX + bounds[1] = minY + bounds[2] = maxX + bounds[3] = maxY + } + + /** + * Returns two Cubics, created by splitting this curve at the given + * distance of [t] between the original starting and ending anchor points. + */ + // TODO: cartesian optimization? + fun split(t: Float): Pair { + val u = 1 - t + val pointOnCurve = pointOnCurve(t) + return Cubic( + anchor0X, anchor0Y, + anchor0X * u + control0X * t, anchor0Y * u + control0Y * t, + anchor0X * (u * u) + control0X * (2 * u * t) + control1X * (t * t), + anchor0Y * (u * u) + control0Y * (2 * u * t) + control1Y * (t * t), + pointOnCurve.x, pointOnCurve.y + ) to Cubic( + // TODO: should calculate once and share the result + pointOnCurve.x, pointOnCurve.y, + control0X * (u * u) + control1X * (2 * u * t) + anchor1X * (t * t), + control0Y * (u * u) + control1Y * (2 * u * t) + anchor1Y * (t * t), + control1X * u + anchor1X * t, control1Y * u + anchor1Y * t, + anchor1X, anchor1Y + ) + } + + /** + * Utility function to reverse the control/anchor points for this curve. + */ + fun reverse() = Cubic(anchor1X, anchor1Y, control1X, control1Y, control0X, control0Y, + anchor0X, anchor0Y) + + /** + * Operator overload to enable adding Cubic objects together, like "c0 + c1" + */ + operator fun plus(o: Cubic) = Cubic(FloatArray(8) { points[it] + o.points[it] }) + + /** + * Operator overload to enable multiplying Cubics by a scalar value x, like "c0 * x" + */ + operator fun times(x: Float) = Cubic(FloatArray(8) { points[it] * x }) + + /** + * Operator overload to enable multiplying Cubics by an Int scalar value x, like "c0 * x" + */ + operator fun times(x: Int) = times(x.toFloat()) + + /** + * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" + */ + operator fun div(x: Float) = times(1f / x) + + /** + * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" + */ + operator fun div(x: Int) = div(x.toFloat()) + + override fun toString(): String { + return "anchor0: ($anchor0X, $anchor0Y) control0: ($control0X, $control0Y), " + + "control1: ($control1X, $control1Y), anchor1: ($anchor1X, $anchor1Y)" + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + + if (other !is Cubic) { + return false + } + + return points.contentEquals(other.points) + } + + /** + * Transforms the points in this [Cubic] with the given [PointTransformer] and returns a new + * [Cubic] + * + * @param f The [PointTransformer] used to transform this [Cubic] + */ + fun transformed(f: PointTransformer): Cubic { + val newCubic = MutableCubic() + points.copyInto(newCubic.points) + newCubic.transform(f) + return newCubic + } + + override fun hashCode() = points.contentHashCode() + + companion object { + /** + * Generates a bezier curve that is a straight line between the given anchor points. + * The control points lie 1/3 of the distance from their respective anchor points. + */ + fun straightLine(x0: Float, y0: Float, x1: Float, y1: Float): Cubic { + return Cubic( + x0, y0, + interpolate(x0, x1, 1f / 3f), + interpolate(y0, y1, 1f / 3f), + interpolate(x0, x1, 2f / 3f), + interpolate(y0, y1, 2f / 3f), + x1, y1 + ) + } + + // TODO: consider a more general function (maybe in addition to this) that allows + // caller to get a list of curves surpassing 180 degrees + /** + * Generates a bezier curve that approximates a circular arc, with p0 and p1 as + * the starting and ending anchor points. The curve generated is the smallest of + * the two possible arcs around the entire 360-degree circle. Arcs of greater than 180 + * degrees should use more than one arc together. Note that p0 and p1 should be + * equidistant from the center. + */ + fun circularArc( + centerX: Float, + centerY: Float, + x0: Float, + y0: Float, + x1: Float, + y1: Float + ): Cubic { + val p0d = directionVector(x0 - centerX, y0 - centerY) + val p1d = directionVector(x1 - centerX, y1 - centerY) + val rotatedP0 = p0d.rotate90() + val rotatedP1 = p1d.rotate90() + val clockwise = rotatedP0.dotProduct(x1 - centerX, y1 - centerY) >= 0 + val cosa = p0d.dotProduct(p1d) + if (cosa > 0.999f) /* p0 ~= p1 */ return straightLine(x0, y0, x1, y1) + val k = distance(x0 - centerX, y0 - centerY) * 4f / 3f * + (sqrt(2 * (1 - cosa)) - sqrt(1 - cosa * cosa)) / (1 - cosa) * + if (clockwise) 1f else -1f + return Cubic( + x0, y0, x0 + rotatedP0.x * k, y0 + rotatedP0.y * k, + x1 - rotatedP1.x * k, y1 - rotatedP1.y * k, x1, y1 + ) + } + } +} + +/** + * Create a Cubic that holds the anchor and control point data for a single Bézier curve, + * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end + * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining + * the slope of the curve between the anchor points. + * + * The returned instance is immutable. + * + * @param anchor0X the first anchor point x coordinate + * @param anchor0Y the first anchor point y coordinate + * @param control0X the first control point x coordinate + * @param control0Y the first control point y coordinate + * @param control1X the second control point x coordinate + * @param control1Y the second control point y coordinate + * @param anchor1X the second anchor point x coordinate + * @param anchor1Y the second anchor point y coordinate + */ +fun Cubic( + anchor0X: Float, + anchor0Y: Float, + control0X: Float, + control0Y: Float, + control1X: Float, + control1Y: Float, + anchor1X: Float, + anchor1Y: Float +) = Cubic(floatArrayOf(anchor0X, anchor0Y, control0X, control0Y, + control1X, control1Y, anchor1X, anchor1Y)) + +/** + * This interface is used refer to Points that can be modified, as a scope to + * [PointTransformer] + */ +interface MutablePoint { + /** + * The x coordinate of the Point + */ + var x: Float + + /** + * The y coordinate of the Point + */ + var y: Float +} + +typealias TransformResult = Pair + +/** + * Interface for a function that can transform (rotate/scale/translate/etc.) points. + */ +fun interface PointTransformer { + /** + * Transform the point given the x and y parameters, returning the transformed point as a + * [TransformResult] + */ + fun transform(x: Float, y: Float): TransformResult +} + +/** + * This is a Mutable version of [Cubic], used mostly for performance critical paths so we can + * avoid creating new [Cubic]s + * + * This is used in Morph.forEachCubic, reusing a [MutableCubic] instance to avoid creating + * new [Cubic]s. + */ +class MutableCubic : Cubic() { + private fun transformOnePoint(f: PointTransformer, ix: Int) { + val result = f.transform(points[ix], points[ix + 1]) + points[ix] = result.first + points[ix + 1] = result.second + } + + fun transform(f: PointTransformer) { + transformOnePoint(f, 0) + transformOnePoint(f, 2) + transformOnePoint(f, 4) + transformOnePoint(f, 6) + } + + fun interpolate(c1: Cubic, c2: Cubic, progress: Float) { + repeat(8) { + points[it] = interpolate( + c1.points[it], + c2.points[it], + progress + ) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt new file mode 100644 index 00000000..43775ac9 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt @@ -0,0 +1,83 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +import androidx.compose.ui.geometry.Offset + +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +/** + * This class holds information about a corner (rounded or not) or an edge of a given + * polygon. The features of a Polygon can be used to manipulate the shape with more context + * of what the shape actually is, rather than simply manipulating the raw curves and lines + * which describe it. + */ +internal abstract class Feature(val cubics: List) { + internal abstract fun transformed(f: PointTransformer): Feature + + /** + * Edges have only a list of the cubic curves which make up the edge. Edges lie between + * corners and have no vertex or concavity; the curves are simply straight lines (represented + * by Cubic curves). + */ + internal class Edge(cubics: List) : Feature(cubics) { + override fun transformed(f: PointTransformer) = + Edge( + buildList { + // Performance: Builds the list by avoiding creating an unnecessary Iterator to + // iterate through the cubics List. + for (i in cubics.indices) { + add(cubics[i].transformed(f)) + } + } + ) + + override fun toString(): String = "Edge" + } + + /** + * Corners contain the list of cubic curves which describe how the corner is rounded (or + * not), plus the vertex at the corner (which the cubics may or may not pass through, depending + * on whether the corner is rounded) and a flag indicating whether the corner is convex. + * A regular polygon has all convex corners, while a star polygon generally (but not + * necessarily) has both convex (outer) and concave (inner) corners. + */ + internal class Corner( + cubics: List, + val vertex: Offset, + val roundedCenter: Offset, + val convex: Boolean = true + ) : Feature(cubics) { + override fun transformed(f: PointTransformer): Feature { + return Corner( + buildList { + // Performance: Builds the list by avoiding creating an unnecessary Iterator to + // iterate through the cubics List. + for (i in cubics.indices) { + add(cubics[i].transformed(f)) + } + }, + vertex.transformed(f), + roundedCenter.transformed(f), + convex + ) + } + + override fun toString(): String { + return "Corner: vertex=$vertex, center=$roundedCenter, convex=$convex" + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/MiscUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/MiscUtil.kt new file mode 100644 index 00000000..608df8ae --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/MiscUtil.kt @@ -0,0 +1,19 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +fun floorMod(x: Float, y: Float): Int { + return floorMod(x.toInt(), y.toInt()) +} + +private fun floorMod(x: Int, y: Int): Int { + return x - y * floorDiv(x, y) +} + +private fun floorDiv(x: Int, y: Int): Int { + var r = x / y + val sameSign = (x xor y) >= 0 + val mod = x % y + if (!sameSign && mod != 0) { + r-- + } + return r +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt new file mode 100644 index 00000000..29c0b3d5 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt @@ -0,0 +1,84 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +import androidx.compose.ui.geometry.Offset +import kotlin.math.sqrt + +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +/** + * The magnitude of the Point, which is the distance of this point from (0, 0). + * + * If you need this value to compare it to another [Point]'s distance, + * consider using [getDistanceSquared] instead, since it is cheaper to compute. + */ +internal fun Offset.getDistance() = sqrt(x * x + y * y) + +/** + * The square of the magnitude (which is the distance of this point from (0, 0)) of the Point. + * + * This is cheaper than computing the [getDistance] itself. + */ +internal fun Offset.getDistanceSquared() = x * x + y * y + +internal fun Offset.dotProduct(other: Offset) = x * other.x + y * other.y + +internal fun Offset.dotProduct(otherX: Float, otherY: Float) = x * otherX + y * otherY + +/** + * Compute the Z coordinate of the cross product of two vectors, to check if the second vector is + * going clockwise ( > 0 ) or counterclockwise (< 0) compared with the first one. + * It could also be 0, if the vectors are co-linear. + */ +internal fun Offset.clockwise(other: Offset) = x * other.y - y * other.x > 0 + +/** + * Returns unit vector representing the direction to this point from (0, 0) + */ +internal fun Offset.getDirection() = run { + val d = this.getDistance() + require(d > 0f) { "Can't get the direction of a 0-length vector" } + this / d +} + +/** + * Linearly interpolate between two Points. + * + * The [fraction] argument represents position on the timeline, with 0.0 meaning + * that the interpolation has not started, returning [start] (or something + * equivalent to [start]), 1.0 meaning that the interpolation has finished, + * returning [stop] (or something equivalent to [stop]), and values in between + * meaning that the interpolation is at the relevant point on the timeline + * between [start] and [stop]. The interpolation can be extrapolated beyond 0.0 and + * 1.0, so negative values and values greater than 1.0 are valid (and can + * easily be generated by curves). + * + * Values for [fraction] are usually obtained from an [Animation], such as + * an `AnimationController`. + */ +internal fun interpolate(start: Offset, stop: Offset, fraction: Float): Offset { + return Offset( + interpolate(start.x, stop.x, fraction), + interpolate(start.y, stop.y, fraction) + ) +} + +internal fun Offset.transformed(f: PointTransformer): Offset { + val result = f.transform(x, y) + return Offset(result.first, result.second) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt new file mode 100644 index 00000000..7c6c9aac --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt @@ -0,0 +1,664 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import androidx.compose.ui.geometry.Offset +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min +import kotlin.math.sqrt + +/** + * The RoundedPolygon class allows simple construction of polygonal shapes with optional rounding + * at the vertices. Polygons can be constructed with either the number of vertices + * desired or an ordered list of vertices. + * + */ +class RoundedPolygon internal constructor( + internal val features: List, + val centerX: Float, + val centerY: Float +) { + /** + * A flattened version of the [Feature]s, as a List. + */ + val cubics = buildList { + // The first/last mechanism here ensures that the final anchor point in the shape + // exactly matches the first anchor point. There can be rendering artifacts introduced + // by those points being slightly off, even by much less than a pixel + var firstCubic: Cubic? = null + var lastCubic: Cubic? = null + var firstFeatureSplitStart: List? = null + var firstFeatureSplitEnd: List? = null + if (features.size > 0 && features[0].cubics.size == 3) { + val centerCubic = features[0].cubics[1] + val (start, end) = centerCubic.split(.5f) + firstFeatureSplitStart = mutableListOf(features[0].cubics[0], start) + firstFeatureSplitEnd = mutableListOf(end, features[0].cubics[2]) + } + // iterating one past the features list size allows us to insert the initial split + // cubic if it exists + for (i in 0..features.size) { + val featureCubics = if (i == 0 && firstFeatureSplitEnd != null) firstFeatureSplitEnd + else if (i == features.size) { + if (firstFeatureSplitStart != null) firstFeatureSplitStart + else break + } else features[i].cubics + for (j in featureCubics.indices) { + // Skip zero-length curves; they add nothing and can trigger rendering artifacts + val cubic = featureCubics[j] + if (!cubic.zeroLength()) { + if (lastCubic != null) add(lastCubic) + lastCubic = cubic + if (firstCubic == null) firstCubic = cubic + } else { + if (lastCubic != null) { + // Dropping several zero-ish length curves in a row can lead to + // enough discontinuity to throw an exception later, even though the + // distances are quite small. Account for that by making the last + // cubic use the latest anchor point, always. + lastCubic.points[6] = cubic.anchor1X + lastCubic.points[7] = cubic.anchor1Y + } + } + } + } + if (lastCubic != null && firstCubic != null) add(Cubic( + lastCubic.anchor0X, lastCubic.anchor0Y, lastCubic.control0X, lastCubic.control0Y, + lastCubic.control1X, lastCubic.control1Y, firstCubic.anchor0X, firstCubic.anchor0Y)) + } + + init { + var prevCubic = cubics[cubics.size - 1] + debugLog("RoundedPolygon") { "Cubic-1 = $prevCubic" } + for (index in cubics.indices) { + val cubic = cubics[index] + debugLog("RoundedPolygon") { "Cubic = $cubic" } + if (abs(cubic.anchor0X - prevCubic.anchor1X) > DistanceEpsilon || + abs(cubic.anchor0Y - prevCubic.anchor1Y) > DistanceEpsilon + ) { + debugLog("RoundedPolygon") { + "Ix: $index | (${cubic.anchor0X},${cubic.anchor0Y}) vs " + + "$prevCubic" + } + throw IllegalArgumentException( + "RoundedPolygon must be contiguous, with the " + + "anchor points of all curves matching the anchor points of the preceding " + + "and succeeding cubics" + ) + } + prevCubic = cubic + } + } + + /** + * Transforms (scales/translates/etc.) this [RoundedPolygon] with the given [PointTransformer] + * and returns a new [RoundedPolygon]. + * This is a low level API and there should be more platform idiomatic ways to transform + * a [RoundedPolygon] provided by the platform specific wrapper. + * + * @param f The [PointTransformer] used to transform this [RoundedPolygon] + */ + fun transformed(f: PointTransformer): RoundedPolygon { + val center = Offset(centerX, centerY).transformed(f) + return RoundedPolygon( + buildList { + for (i in features.indices) { + add(features[i].transformed(f)) + } + }, + center.x, + center.y + ) + } + + /** + * Creates a new RoundedPolygon, moving and resizing this one, so it's completely inside the + * (0, 0) -> (1, 1) square, centered if there extra space in one direction + */ + fun normalized(): RoundedPolygon { + val bounds = calculateBounds() + val width = bounds[2] - bounds[0] + val height = bounds[3] - bounds[1] + val side = max(width, height) + // Center the shape if bounds are not a square + val offsetX = (side - width) / 2 - bounds[0] /* left */ + val offsetY = (side - height) / 2 - bounds[1] /* top */ + return transformed { x, y -> TransformResult((x + offsetX) / side, (y + offsetY) / side) } + } + + override fun toString(): String = "[RoundedPolygon." + + " Cubics = " + cubics.joinToString() + + " || Features = " + features.joinToString() + + " || Center = ($centerX, $centerY)]" + + /** + * Like [calculateBounds], this function calculates the axis-aligned bounds of the + * object and returns that rectangle. But this function determines the max dimension of + * the shape (by calculating the distance from its center to the start and midpoint of + * each curve) and returns a square which can be used to hold the object in any rotation. + * This function can be used, for example, to calculate the max size of a UI element meant + * to hold this shape in any rotation. + * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be + * created. + * @return The axis-aligned max bounding box for this object, where the rectangles left, + * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. + */ + fun calculateMaxBounds(bounds: FloatArray = FloatArray(4)): FloatArray { + require(bounds.size >= 4) { "Required bounds size of 4" } + var maxDistSquared = 0f + for (i in cubics.indices) { + val cubic = cubics[i] + val anchorDistance = distanceSquared(cubic.anchor0X - centerX, + cubic.anchor0Y - centerY) + val middlePoint = cubic.pointOnCurve(.5f) + val middleDistance = distanceSquared(middlePoint.x - centerX, + middlePoint.y - centerY) + maxDistSquared = max(maxDistSquared, max(anchorDistance, middleDistance)) + } + val distance = sqrt(maxDistSquared) + bounds[0] = centerX - distance + bounds[1] = centerY - distance + bounds[2] = centerX + distance + bounds[3] = centerY + distance + return bounds + } + + /** + * Calculates the axis-aligned bounds of the object. + * @param approximate when true, uses a faster calculation to create the bounding + * box based on the min/max values of all anchor and control points that make up the shape. + * Default value is true. + * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be + * created. + * @return The axis-aligned bounding box for this object, where the rectangles left, + * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. + */ + fun calculateBounds( + bounds: FloatArray = FloatArray(4), + approximate: Boolean = true + ): FloatArray { + require(bounds.size >= 4) { "Required bounds size of 4" } + var minX = Float.MAX_VALUE + var minY = Float.MAX_VALUE + var maxX = Float.MIN_VALUE + var maxY = Float.MIN_VALUE + for (i in cubics.indices) { + val cubic = cubics[i] + cubic.calculateBounds(bounds, approximate = approximate) + minX = min(minX, bounds[0]) + minY = min(minY, bounds[1]) + maxX = max(maxX, bounds[2]) + maxY = max(maxY, bounds[3]) + } + bounds[0] = minX + bounds[1] = minY + bounds[2] = maxX + bounds[3] = maxY + return bounds + } + + companion object {} + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is RoundedPolygon) return false + + return features == other.features + } + + override fun hashCode(): Int { + return features.hashCode() + } +} + +/** + * This constructor takes the number of vertices in the resulting polygon. These vertices are + * positioned on a virtual circle around a given center with each vertex positioned [radius] + * distance from that center, equally spaced (with equal angles between them). If no radius + * is supplied, the shape will be created with a default radius of 1, resulting in a shape + * whose vertices lie on a unit circle, with width/height of 2. That default polygon will + * probably need to be rescaled using [transformed] into the appropriate size for the UI in + * which it will be drawn. + * + * The [rounding] and [perVertexRounding] parameters are optional. If not supplied, the result + * will be a regular polygon with straight edges and unrounded corners. + * + * @param numVertices The number of vertices in this polygon. + * @param radius The radius of the polygon, in pixels. This radius determines the + * initial size of the object, but it can be transformed later by using the [transformed] function. + * @param centerX The X coordinate of the center of the polygon, around which all vertices + * will be placed. The default center is at (0,0). + * @param centerY The Y coordinate of the center of the polygon, around which all vertices + * will be placed. The default center is at (0,0). + * @param rounding The [CornerRounding] properties of all vertices. If some vertices should + * have different rounding properties, then use [perVertexRounding] instead. The default + * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices + * themselves in the final shape and not curves rounded around the vertices. + * @param perVertexRounding The [CornerRounding] properties of every vertex. If this + * parameter is not null, then it must have [numVertices] elements. If this parameter + * is null, then the polygon will use the [rounding] parameter for every vertex instead. The + * default value is null. + * + * @throws IllegalArgumentException If [perVertexRounding] is not null and its size is not + * equal to [numVertices]. + * @throws IllegalArgumentException [numVertices] must be at least 3. + */ +fun RoundedPolygon( + numVertices: Int, + radius: Float = 1f, + centerX: Float = 0f, + centerY: Float = 0f, + rounding: CornerRounding = CornerRounding.Unrounded, + perVertexRounding: List? = null +) = RoundedPolygon( + verticesFromNumVerts(numVertices, radius, centerX, centerY), + rounding = rounding, + perVertexRounding = perVertexRounding, + centerX = centerX, + centerY = centerY +) + +/** + * Creates a copy of the given [RoundedPolygon] + */ +fun RoundedPolygon(source: RoundedPolygon) = + RoundedPolygon(source.features, source.centerX, source.centerY) + +/** + * This function takes the vertices (either supplied or calculated, depending on the + * constructor called), plus [CornerRounding] parameters, and creates the actual + * [RoundedPolygon] shape, rounding around the vertices (or not) as specified. The result + * is a list of [Cubic] curves which represent the geometry of the final shape. + * + * @param vertices The list of vertices in this polygon specified as pairs of x/y coordinates in + * this FloatArray. This should be an ordered list (with the outline of the shape going from each + * vertex to the next in order of this list), otherwise the results will be undefined. + * @param rounding The [CornerRounding] properties of all vertices. If some vertices should + * have different rounding properties, then use [perVertexRounding] instead. The default + * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices + * themselves in the final shape and not curves rounded around the vertices. + * @param perVertexRounding The [CornerRounding] properties of all vertices. If this + * parameter is not null, then it must have the same size as [vertices]. If this parameter + * is null, then the polygon will use the [rounding] parameter for every vertex instead. The + * default value is null. + * @param centerX The X coordinate of the center of the polygon, around which all vertices + * will be placed. The default center is at (0,0). + * @param centerY The Y coordinate of the center of the polygon, around which all vertices + * will be placed. The default center is at (0,0). + * @throws IllegalArgumentException if the number of vertices is less than 3 (the [vertices] + * parameter has less than 6 Floats). Or if the [perVertexRounding] parameter is not null and the + * size doesn't match the number vertices. + */ +// TODO(performance): Update the map calls to more efficient code that doesn't allocate Iterators +// unnecessarily. +fun RoundedPolygon( + vertices: FloatArray, + rounding: CornerRounding = CornerRounding.Unrounded, + perVertexRounding: List? = null, + centerX: Float = Float.MIN_VALUE, + centerY: Float = Float.MIN_VALUE +): RoundedPolygon { + if (vertices.size < 6) { + throw IllegalArgumentException("Polygons must have at least 3 vertices") + } + if (vertices.size % 2 == 1) { + throw IllegalArgumentException("The vertices array should have even size") + } + if (perVertexRounding != null && perVertexRounding.size * 2 != vertices.size) { + throw IllegalArgumentException( + "perVertexRounding list should be either null or " + + "the same size as the number of vertices (vertices.size / 2)" + ) + } + val corners = mutableListOf>() + val n = vertices.size / 2 + val roundedCorners = mutableListOf() + for (i in 0 until n) { + val vtxRounding = perVertexRounding?.get(i) ?: rounding + val prevIndex = ((i + n - 1) % n) * 2 + val nextIndex = ((i + 1) % n) * 2 + roundedCorners.add( + RoundedCorner( + Offset(vertices[prevIndex], vertices[prevIndex + 1]), + Offset(vertices[i * 2], vertices[i * 2 + 1]), + Offset(vertices[nextIndex], vertices[nextIndex + 1]), + vtxRounding + ) + ) + } + + // For each side, check if we have enough space to do the cuts needed, and if not split + // the available space, first for round cuts, then for smoothing if there is space left. + // Each element in this list is a pair, that represent how much we can do of the cut for + // the given side (side i goes from corner i to corner i+1), the elements of the pair are: + // first is how much we can use of expectedRoundCut, second how much of expectedCut + val cutAdjusts = (0 until n).map { ix -> + val expectedRoundCut = roundedCorners[ix].expectedRoundCut + + roundedCorners[(ix + 1) % n].expectedRoundCut + val expectedCut = roundedCorners[ix].expectedCut + + roundedCorners[(ix + 1) % n].expectedCut + val vtxX = vertices[ix * 2] + val vtxY = vertices[ix * 2 + 1] + val nextVtxX = vertices[((ix + 1) % n) * 2] + val nextVtxY = vertices[((ix + 1) % n) * 2 + 1] + val sideSize = distance(vtxX - nextVtxX, vtxY - nextVtxY) + + // Check expectedRoundCut first, and ensure we fulfill rounding needs first for + // both corners before using space for smoothing + if (expectedRoundCut > sideSize) { + // Not enough room for fully rounding, see how much we can actually do. + sideSize / expectedRoundCut to 0f + } else if (expectedCut > sideSize) { + // We can do full rounding, but not full smoothing. + 1f to (sideSize - expectedRoundCut) / (expectedCut - expectedRoundCut) + } else { + // There is enough room for rounding & smoothing. + 1f to 1f + } + } + // Create and store list of beziers for each [potentially] rounded corner + for (i in 0 until n) { + // allowedCuts[0] is for the side from the previous corner to this one, + // allowedCuts[1] is for the side from this corner to the next one. + val allowedCuts = mutableListOf() + for (delta in 0..1) { + val (roundCutRatio, cutRatio) = cutAdjusts[(i + n - 1 + delta) % n] + allowedCuts.add( + roundedCorners[i].expectedRoundCut * roundCutRatio + + (roundedCorners[i].expectedCut - roundedCorners[i].expectedRoundCut) * cutRatio + ) + } + corners.add( + roundedCorners[i].getCubics( + allowedCut0 = allowedCuts[0], + allowedCut1 = allowedCuts[1] + ) + ) + } + // Finally, store the calculated cubics. This includes all of the rounded corners + // from above, along with new cubics representing the edges between those corners. + val tempFeatures = mutableListOf() + for (i in 0 until n) { + // Determine whether corner at this vertex is concave or convex, based on the + // relationship of the prev->curr/curr->next vectors + // Note that these indices are for pairs of values (points), they need to be + // doubled to access the xy values in the vertices float array + val prevVtxIndex = (i + n - 1) % n + val nextVtxIndex = (i + 1) % n + val currVertex = Offset(vertices[i * 2], vertices[i * 2 + 1]) + val prevVertex = Offset(vertices[prevVtxIndex * 2], vertices[prevVtxIndex * 2 + 1]) + val nextVertex = Offset(vertices[nextVtxIndex * 2], vertices[nextVtxIndex * 2 + 1]) + val convex = (currVertex - prevVertex).clockwise(nextVertex - currVertex) + tempFeatures.add( + Feature.Corner( + corners[i], currVertex, roundedCorners[i].center, + convex + ) + ) + tempFeatures.add( + Feature.Edge( + listOf( + Cubic.straightLine( + corners[i].last().anchor1X, corners[i].last().anchor1Y, + corners[(i + 1) % n].first().anchor0X, corners[(i + 1) % n].first().anchor0Y + ) + ) + ) + ) + } + + val (cx, cy) = if (centerX == Float.MIN_VALUE || centerY == Float.MIN_VALUE) { + calculateCenter(vertices) + } else { + Offset(centerX, centerY) + } + return RoundedPolygon(tempFeatures, cx, cy) +} + +/** + * Calculates an estimated center position for the polygon, returning it. + * This function should only be called if the center is not already calculated or provided. + * The Polygon constructor which takes `numVertices` calculates its own center, since it + * knows exactly where it is centered, at (0, 0). + * + * Note that this center will be transformed whenever the shape itself is transformed. + * Any transforms that occur before the center is calculated will be taken into account + * automatically since the center calculation is an average of the current location of + * all cubic anchor points. + */ +private fun calculateCenter(vertices: FloatArray): Offset { + var cumulativeX = 0f + var cumulativeY = 0f + var index = 0 + while (index < vertices.size) { + cumulativeX += vertices[index++] + cumulativeY += vertices[index++] + } + return Offset(cumulativeX / vertices.size / 2, cumulativeY / vertices.size / 2) +} + +/** + * Private utility class that holds the information about each corner in a polygon. The shape + * of the corner can be returned by calling the [getCubics] function, which will return a list + * of curves representing the corner geometry. The shape of the corner depends on the [rounding] + * constructor parameter. + * + * If rounding is null, there is no rounding; the corner will simply be a single point at [p1]. + * This point will be represented by a [Cubic] of length 0 at that point. + * + * If rounding is not null, the corner will be rounded either with a curve approximating a circular + * arc of the radius specified in [rounding], or with three curves if [rounding] has a nonzero + * smoothing parameter. These three curves are a circular arc in the middle and two symmetrical + * flanking curves on either side. The smoothing parameter determines the curvature of the + * flanking curves. + * + * This is a class because we usually need to do the work in 2 steps, and prefer to keep state + * between: first we determine how much we want to cut to comply with the parameters, then we are + * given how much we can actually cut (because of space restrictions outside this corner) + * + * @param p0 the vertex before the one being rounded + * @param p1 the vertex of this rounded corner + * @param p2 the vertex after the one being rounded + * @param rounding the optional parameters specifying how this corner should be rounded + */ +private class RoundedCorner( + val p0: Offset, + val p1: Offset, + val p2: Offset, + val rounding: CornerRounding? = null +) { + val d1 = (p0 - p1).getDirection() + val d2 = (p2 - p1).getDirection() + val cornerRadius = rounding?.radius ?: 0f + val smoothing = rounding?.smoothing ?: 0f + + // cosine of angle at p1 is dot product of unit vectors to the other two vertices + val cosAngle = d1.dotProduct(d2) + + // identity: sin^2 + cos^2 = 1 + // sinAngle gives us the intersection + val sinAngle = sqrt(1 - square(cosAngle)) + + // How much we need to cut, as measured on a side, to get the required radius + // calculating where the rounding circle hits the edge + // This uses the identity of tan(A/2) = sinA/(1 + cosA), where tan(A/2) = radius/cut + val expectedRoundCut = + if (sinAngle > 1e-3) { + cornerRadius * (cosAngle + 1) / sinAngle + } else { + 0f + } + + // smoothing changes the actual cut. 0 is same as expectedRoundCut, 1 doubles it + val expectedCut: Float + get() = ((1 + smoothing) * expectedRoundCut) + + // the center of the circle approximated by the rounding curve (or the middle of the three + // curves if smoothing is requested). The center is the same as p0 if there is no rounding. + var center: Offset = Offset(0f, 0f) + + fun getCubics(allowedCut0: Float, allowedCut1: Float = allowedCut0): + List { + // We use the minimum of both cuts to determine the radius, but if there is more space + // in one side we can use it for smoothing. + val allowedCut = min(allowedCut0, allowedCut1) + // Nothing to do, just use lines, or a point + if (expectedRoundCut < DistanceEpsilon || + allowedCut < DistanceEpsilon || + cornerRadius < DistanceEpsilon + ) { + center = p1 + return listOf(Cubic.straightLine(p1.x, p1.y, p1.x, p1.y)) + } + // How much of the cut is required for the rounding part. + val actualRoundCut = min(allowedCut, expectedRoundCut) + // We have two smoothing values, one for each side of the vertex + // Space is used for rounding values first. If there is space left over, then we + // apply smoothing, if it was requested + val actualSmoothing0 = calculateActualSmoothingValue(allowedCut0) + val actualSmoothing1 = calculateActualSmoothingValue(allowedCut1) + // Scale the radius if needed + val actualR = cornerRadius * actualRoundCut / expectedRoundCut + // Distance from the corner (p1) to the center + val centerDistance = sqrt(square(actualR) + square(actualRoundCut)) + // Center of the arc we will use for rounding + center = p1 + ((d1 + d2) / 2f).getDirection() * centerDistance + val circleIntersection0 = p1 + d1 * actualRoundCut + val circleIntersection2 = p1 + d2 * actualRoundCut + val flanking0 = computeFlankingCurve( + actualRoundCut, actualSmoothing0, p1, p0, + circleIntersection0, circleIntersection2, center, actualR + ) + val flanking2 = computeFlankingCurve( + actualRoundCut, actualSmoothing1, p1, p2, + circleIntersection2, circleIntersection0, center, actualR + ).reverse() + return listOf( + flanking0, + Cubic.circularArc( + center.x, center.y, flanking0.anchor1X, flanking0.anchor1Y, + flanking2.anchor0X, flanking2.anchor0Y + ), + flanking2 + ) + } + + /** + * If allowedCut (the amount we are able to cut) is greater than the expected cut + * (without smoothing applied yet), then there is room to apply smoothing and we + * calculate the actual smoothing value here. + */ + private fun calculateActualSmoothingValue(allowedCut: Float): Float { + return if (allowedCut > expectedCut) { + smoothing + } else if (allowedCut > expectedRoundCut) { + smoothing * (allowedCut - expectedRoundCut) / (expectedCut - expectedRoundCut) + } else { + 0f + } + } + + /** + * Compute a Bezier to connect the linear segment defined by corner and sideStart + * with the circular segment defined by circleCenter, circleSegmentIntersection, + * otherCircleSegmentIntersection and actualR. + * The bezier will start at the linear segment and end on the circular segment. + * + * @param actualRoundCut How much we are cutting of the corner to add the circular segment + * (this is before smoothing, that will cut some more). + * @param actualSmoothingValues How much we want to smooth (this is the smooth parameter, + * adjusted down if there is not enough room). + * @param corner The point at which the linear side ends + * @param sideStart The point at which the linear side starts + * @param circleSegmentIntersection The point at which the linear side and the circle intersect. + * @param otherCircleSegmentIntersection The point at which the opposing linear side and the + * circle intersect. + * @param circleCenter The center of the circle. + * @param actualR The radius of the circle. + * + * @return a Bezier cubic curve that connects from the (cut) linear side and the (cut) circular + * segment in a smooth way. + */ + private fun computeFlankingCurve( + actualRoundCut: Float, + actualSmoothingValues: Float, + corner: Offset, + sideStart: Offset, + circleSegmentIntersection: Offset, + otherCircleSegmentIntersection: Offset, + circleCenter: Offset, + actualR: Float + ): Cubic { + // sideStart is the anchor, 'anchor' is actual control point + val sideDirection = (sideStart - corner).getDirection() + val curveStart = corner + sideDirection * actualRoundCut * (1 + actualSmoothingValues) + // We use an approximation to cut a part of the circle section proportional to 1 - smooth, + // When smooth = 0, we take the full section, when smooth = 1, we take nothing. + // TODO: revisit this, it can be problematic as it approaches 180 degrees + val p = interpolate( + circleSegmentIntersection, + (circleSegmentIntersection + otherCircleSegmentIntersection) / 2f, + actualSmoothingValues + ) + // The flanking curve ends on the circle + val curveEnd = circleCenter + + directionVector(p.x - circleCenter.x, p.y - circleCenter.y) * actualR + // The anchor on the circle segment side is in the intersection between the tangent to the + // circle in the circle/flanking curve boundary and the linear segment. + val circleTangent = (curveEnd - circleCenter).rotate90() + val anchorEnd = lineIntersection(sideStart, sideDirection, curveEnd, circleTangent) + ?: circleSegmentIntersection + // From what remains, we pick a point for the start anchor. + // 2/3 seems to come from design tools? + val anchorStart = (curveStart + anchorEnd * 2f) / 3f + return Cubic(curveStart, anchorStart, anchorEnd, curveEnd) + } + + /** + * Returns the intersection point of the two lines d0->d1 and p0->p1, or null if the + * lines do not intersect + */ + private fun lineIntersection(p0: Offset, d0: Offset, p1: Offset, d1: Offset): Offset? { + val rotatedD1 = d1.rotate90() + val den = d0.dotProduct(rotatedD1) + if (abs(den) < DistanceEpsilon) return null + val num = (p1 - p0).dotProduct(rotatedD1) + // Also check the relative value. This is equivalent to abs(den/num) < DistanceEpsilon, + // but avoid doing a division + if (abs(den) < DistanceEpsilon * abs(num)) return null + val k = num / den + return p0 + d0 * k + } +} + +private fun verticesFromNumVerts( + numVertices: Int, + radius: Float, + centerX: Float, + centerY: Float +): FloatArray { + val result = FloatArray(numVertices * 2) + var arrayIndex = 0 + for (i in 0 until numVertices) { + val vertex = radialToCartesian(radius, (FloatPi / numVertices * 2 * i)) + + Offset(centerX, centerY) + result[arrayIndex++] = vertex.x + result[arrayIndex++] = vertex.y + } + return result +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt new file mode 100644 index 00000000..65f884e4 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt @@ -0,0 +1,119 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +import androidx.compose.ui.geometry.Offset +import kotlin.math.PI +import kotlin.math.atan2 +import kotlin.math.cos +import kotlin.math.sin +import kotlin.math.sqrt + +/** + * This class has all internal methods, used by Polygon, Morph, etc. + */ + +internal fun distance(x: Float, y: Float) = sqrt(x * x + y * y) + +internal fun distanceSquared(x: Float, y: Float) = x * x + y * y + +/** + * Returns unit vector representing the direction to this point from (0, 0) + */ +internal fun directionVector(x: Float, y: Float): Offset { + val d = distance(x, y) + require(d > 0f) { "Required distance greater than zero" } + return Offset(x / d, y / d) +} + +internal fun directionVector(angleRadians: Float) = Offset(cos(angleRadians), sin(angleRadians)) + +internal fun angle(x: Float, y: Float) = ((atan2(y, x) + TwoPi) % TwoPi) + +internal fun radialToCartesian(radius: Float, angleRadians: Float, center: Offset = Zero) = + directionVector(angleRadians) * radius + center + +/** + * These epsilon values are used internally to determine when two points are the same, within + * some reasonable roundoff error. The distance epsilon is smaller, with the intention that the + * roundoff should not be larger than a pixel on any reasonable sized display. + */ +internal const val DistanceEpsilon = 1e-4f +internal const val AngleEpsilon = 1e-6f + +internal fun Offset.rotate90() = Offset(-y, x) + +internal val Zero = Offset(0f, 0f) + +internal val FloatPi = PI.toFloat() + +internal val TwoPi: Float = 2 * PI.toFloat() + +internal fun square(x: Float) = x * x + +/** + * Linearly interpolate between [start] and [stop] with [fraction] fraction between them. + */ +internal fun interpolate(start: Float, stop: Float, fraction: Float): Float { + return (1 - fraction) * start + fraction * stop +} + +internal fun positiveModulo(num: Float, mod: Float) = (num % mod + mod) % mod + +/* + * Does a ternary search in [v0..v1] to find the parameter that minimizes the given function. + * Stops when the search space size is reduced below the given tolerance. + * + * NTS: Does it make sense to split the function f in 2, one to generate a candidate, of a custom + * type T (i.e. (Float) -> T), and one to evaluate it ( (T) -> Float )? + */ +internal fun findMinimum( + v0: Float, + v1: Float, + tolerance: Float = 1e-3f, + f: FindMinimumFunction +): Float { + var a = v0 + var b = v1 + while (b - a > tolerance) { + val c1 = (2 * a + b) / 3 + val c2 = (2 * b + a) / 3 + if (f.invoke(c1) < f.invoke(c2)) { + b = c2 + } else { + a = c1 + } + } + return (a + b) / 2 +} + +/** + * A functional interface for computing a Float value when finding the minimum at [findMinimum]. + */ +internal fun interface FindMinimumFunction { + fun invoke(value: Float): Float +} + +internal const val DEBUG = false + +internal inline fun debugLog(tag: String, messageFactory: () -> String) { + // TODO: Re-implement properly when the library goes KMP using expect/actual + if (DEBUG) { + println("$tag: ${messageFactory()}") + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt new file mode 100644 index 00000000..287259de --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt @@ -0,0 +1,115 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathMeasure +import androidx.compose.ui.graphics.PathOperation +import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min + +internal object Utils { + + fun applyTrimPathIfNeeded( + path: Path, + trimPath: TrimPath, + time : Int + ) { + if (trimPath.hidden) { + return + } + val start: Float = trimPath.start.interpolated(time) + val end: Float = trimPath.end.interpolated(time) + val offset: Float = trimPath.offset.interpolated(time) + applyTrimPathIfNeeded( + path, + start / 100f, + end / 100f, + offset / 360f + ) + } + + private val pathMeasure = PathMeasure() + private val tempPath = Path() + private val tempPath2 = Path() + + fun applyTrimPathIfNeeded( + path: Path, startValue: Float, endValue: Float, offsetValue: Float + ) { + + pathMeasure.setPath(path, false) + + val length: Float = pathMeasure.length + + if (startValue == 1f && endValue == 0f) { + return + } + if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { + return + } + + val start = length * startValue + val end = length * endValue + var newStart = min(start.toDouble(), end.toDouble()).toFloat() + var newEnd = max(start.toDouble(), end.toDouble()).toFloat() + + val offset = offsetValue * length + newStart += offset + newEnd += offset + + // If the trim path has rotated around the path, we need to shift it back. + if (newStart >= length && newEnd >= length) { + newStart = floorMod(newStart, length).toFloat() + newEnd = floorMod(newEnd, length).toFloat() + } + + if (newStart < 0) { + newStart = floorMod(newStart, length).toFloat() + } + if (newEnd < 0) { + newEnd = floorMod(newEnd, length).toFloat() + } + + // If the start and end are equals, return an empty path. + if (newStart == newEnd) { + path.reset() + return + } + + if (newStart >= newEnd) { + newStart -= length + } + + tempPath.reset() + pathMeasure.getSegment( + newStart, + newEnd, + tempPath, + true + ) + + if (newEnd > length) { + tempPath2.reset() + pathMeasure.getSegment( + 0f, + newEnd % length, + tempPath2, + true + ) + tempPath.addPath(tempPath2) + } else if (newStart < 0) { + tempPath2.reset() + pathMeasure.getSegment( + length + newStart, + length, + tempPath2, + true + ) + tempPath.addPath(tempPath2) + } + + path.reset() + path.set(tempPath) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/util/VectorUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/util/VectorUtil.kt new file mode 100644 index 00000000..5d1f66e1 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/util/VectorUtil.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.internal.schema.util + +import androidx.compose.ui.geometry.Offset + +internal fun FloatArray.toOffset() = Offset(this[0], this[1]) \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.skiko.kt deleted file mode 100644 index 78a9b202..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.skiko.kt +++ /dev/null @@ -1,84 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.foundation.Canvas -import androidx.compose.foundation.layout.size -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.nativeCanvas -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.unit.DpSize -import androidx.compose.ui.unit.IntSize -import androidx.compose.ui.unit.toOffset -import org.jetbrains.skia.Rect -import org.jetbrains.skia.skottie.RenderFlag -import kotlin.math.roundToInt - - -@Composable -actual fun LottieAnimation( - composition : LottieComposition?, - progress : () -> Float, - modifier: Modifier, - alignment: Alignment, - contentScale: ContentScale, - clipToCompositionBounds : Boolean, -) { - val density = LocalDensity.current - - val defaultSize = remember(density, composition?.animation) { - density.run { - if (composition == null) { - DpSize.Zero - } else { - DpSize( - width = composition.animation.width.toDp(), - height = composition.animation.height.toDp(), - ) - } - } - } - - val flags = remember(clipToCompositionBounds) { - buildList { - add(RenderFlag.SKIP_TOP_LEVEL_ISOLATION) - if (!clipToCompositionBounds) { - add(RenderFlag.DISABLE_TOP_LEVEL_CLIPPING) - } - }.toTypedArray() - } - - - Canvas(modifier.size(defaultSize)) { - if (composition == null || composition.animation.isClosed || composition.invalidationController.isClosed) - return@Canvas - - val compositionSize = composition.animation.size.let { Size(it.x, it.y) } - - val scale = contentScale.computeScaleFactor(compositionSize, size) - val intSize = size.round() - val translation = alignment.align(compositionSize * scale, intSize, layoutDirection).toOffset() - - drawIntoCanvas { - if (clipToCompositionBounds) - it.clipRect(0f, 0f, size.width, size.height) - - it.translate(translation.x, translation.y) - it.scale(scale.scaleX, scale.scaleY) - - composition.animation - .seek(progress(), composition.invalidationController) - .render( - canvas = it.nativeCanvas, - dst = Rect.makeWH(compositionSize.width, compositionSize.height), - *flags - ) - } - } -} - -internal fun Size.round() = IntSize(width.roundToInt(), height.roundToInt()) diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt deleted file mode 100644 index 348a26bf..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCancellationBehavior.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.alexzhirkevich.compottie - -/** - * Determines how the animation should behave if the calling CoroutineScope is cancelled. - * - * @see rememberLottieAnimatable - */ -actual enum class LottieCancellationBehavior { - /** - * Stop animation immediately and return early. - */ - Immediately, - - /** - * Delay cancellations until the current iteration has fully completed. - * This can be useful in state based transitions where you want one animation to finish its - * animation before continuing to the next. - */ - OnIterationFinish, -} \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt deleted file mode 100644 index 5e215271..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt +++ /dev/null @@ -1,197 +0,0 @@ -package io.github.alexzhirkevich.compottie - -/** - * Use subclasses of [LottieClipSpec] to set min/max bounds on the animation playback. - * - * @see LottieAnimation - * @see rememberLottieAnimatable - * @see animateLottieCompositionAsState - */ -actual sealed class LottieClipSpec { - - internal actual abstract fun getMinProgress(composition: LottieComposition): Float - - internal actual abstract fun getMaxProgress(composition: LottieComposition): Float - - /** - * Play the animation between these two frames. [maxInclusive] determines whether the animation - * should play the max frame or stop one frame before it. - */ - actual class Frame actual constructor( - val min: Int?, - val max: Int?, - val maxInclusive: Boolean, - ) : LottieClipSpec() { - - private val actualMaxFrame = when { - max == null -> null - maxInclusive -> max - else -> max - 1 - } - - override fun getMinProgress(composition: LottieComposition): Float { - return when (min) { - null -> 0f - else -> (min / composition.lastFrame).coerceIn(0f, 1f) - } - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return when (actualMaxFrame) { - null -> 1f - else -> (actualMaxFrame / composition.lastFrame).coerceIn(0f, 1f) - } - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false - - other as Frame - - if (min != other.min) return false - if (max != other.max) return false - if (maxInclusive != other.maxInclusive) return false - if (actualMaxFrame != other.actualMaxFrame) return false - - return true - } - - override fun hashCode(): Int { - var result = min ?: 0 - result = 31 * result + (max ?: 0) - result = 31 * result + maxInclusive.hashCode() - result = 31 * result + (actualMaxFrame ?: 0) - return result - } - - override fun toString(): String { - return "Frame(min=$min, max=$max, maxInclusive=$maxInclusive, actualMaxFrame=$actualMaxFrame)" - } - } - - /** - * Play the animation between these two progress values. - */ - actual class Progress actual constructor( - val min: Float, - val max: Float, - ) : LottieClipSpec() { - override fun getMinProgress(composition: LottieComposition): Float { - return min - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return max - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false - - other as Progress - - if (min != other.min) return false - if (max != other.max) return false - - return true - } - - override fun hashCode(): Int { - var result = min.hashCode() - result = 31 * result + max.hashCode() - return result - } - - override fun toString(): String { - return "Progress(min=$min, max=$max)" - } - - } - - /** - * Play the animation from minMarker until maxMarker. If maxMarker represents the end of your animation, - * set [maxInclusive] to true. If the marker represents the beginning of the next section, set - * it to false to stop the animation at the frame before maxMarker. - */ - actual class Markers actual constructor( - val min: String?, - val max: String?, - val maxInclusive: Boolean - ) : LottieClipSpec() { - override fun getMinProgress(composition: LottieComposition): Float { - return when (min) { - null -> 0f - else -> ((composition.marker(min)?.startFrame ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) - } - } - - override fun getMaxProgress(composition: LottieComposition): Float { - return when (max) { - null -> 1f - else -> { - val offset = if (maxInclusive) 0 else -1 - return ((composition.marker(max)?.startFrame?.plus(offset) ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) - } - } - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false - - other as Markers - - if (min != other.min) return false - if (max != other.max) return false - if (maxInclusive != other.maxInclusive) return false - - return true - } - - override fun hashCode(): Int { - var result = min?.hashCode() ?: 0 - result = 31 * result + (max?.hashCode() ?: 0) - result = 31 * result + maxInclusive.hashCode() - return result - } - - override fun toString(): String { - return "Markers(min=$min, max=$max, maxInclusive=$maxInclusive)" - } - } - - /** - * Play the animation from the beginning of the marker for the duration of the marker itself. - * The duration can be set in After Effects. - */ - actual class Marker actual constructor(val marker: String) : LottieClipSpec() { - override fun getMinProgress(composition: LottieComposition): Float { - return ((composition.marker(marker)?.startFrame ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) - } - - override fun getMaxProgress(composition: LottieComposition): Float { - val marker = composition.marker(marker) ?: return 1f - return ((marker.startFrame + marker.durationFrames) / composition.lastFrame).coerceIn(0f, 1f) - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false - - other as Marker - - if (marker != other.marker) return false - - return true - } - - override fun hashCode(): Int { - return marker.hashCode() - } - - override fun toString(): String { - return "Marker(marker='$marker')" - } - } -} diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.skiko.kt deleted file mode 100644 index 43979925..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.skiko.kt +++ /dev/null @@ -1,73 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.Stable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import org.jetbrains.skia.skottie.Animation -import org.jetbrains.skia.sksg.InvalidationController - - -@Stable -actual class LottieComposition internal constructor( - internal val animation: Animation, - internal val invalidationController: InvalidationController = InvalidationController(), - internal val lottieData: LottieData -) - -internal actual val LottieComposition.fps: Float - get() = animation.fPS - -internal actual val LottieComposition.durationMillis: Float - get() = animation.duration * 1000 - -internal actual val LottieComposition.lastFrame : Float - get() = animation.outPoint - -internal actual fun LottieComposition.marker(markerName : String) : Marker? = - lottieData.markersMap?.get(markerName) - - - -@Composable -@Stable -actual fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionResult { - - val result = remember(spec) { - LottieCompositionResultImpl() - } - - - LaunchedEffect(spec){ - when (spec){ - is LottieCompositionSpec.JsonString -> { - withContext(Dispatchers.Default) { - try { - val composition = parseFromJsonString(spec.jsonString) - result.complete(composition) - } catch (c: CancellationException) { - throw c - } catch (t: Throwable) { - result.completeExceptionally(t) - } - } - } - else -> error("Invalid LottieCompositionSpec: $spec") - } - } - - return result -} - -private fun parseFromJsonString(jsonString: String) : LottieComposition { - return LottieComposition( - animation = Animation.makeFromString(jsonString), - lottieData = LottieCompositionParser.parse(jsonString) - ) -} diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionParser.skiko.kt.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionParser.skiko.kt.kt deleted file mode 100644 index 462e53c4..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionParser.skiko.kt.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient -import kotlinx.serialization.json.Json - -@Serializable -internal class LottieData( - private val markers : List? = null -) { - @Transient - val markersMap : Map? = markers?.associateBy { it.name } -} - -private val json = Json { - ignoreUnknownKeys = true -} - -internal object LottieCompositionParser { - fun parse(jsonString: String): LottieData = - json.decodeFromString(jsonString) -} diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.skiko.kt deleted file mode 100644 index 07cf83f2..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.skiko.kt +++ /dev/null @@ -1,122 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Stable -import androidx.compose.runtime.State -import androidx.compose.runtime.derivedStateOf -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.setValue -import kotlinx.coroutines.CompletableDeferred -import kotlinx.coroutines.sync.Mutex -import kotlinx.coroutines.sync.withLock - -/** - * A [LottieCompositionResult] subclass is returned from [rememberLottieComposition]. - * It can be completed with a result or exception only one time. - * - * This class implements State so you either use it like: - * ``` - * val compositionResult = rememberLottieComposition(...) - * // Or - * val composition by rememberLottieComposition(...) - * ``` - * - * Use the former if you need to explicitly differentiate between loading and error states - * or if you need to call [await] or [awaitOrNull] in a coroutine such as [androidx.compose.runtime.LaunchedEffect]. - * - * @see rememberLottieComposition - * @see LottieAnimation - */ -@Stable -actual interface LottieCompositionResult : State { - /** - * The composition or null if it hasn't yet loaded or failed to load. - */ - actual override val value: LottieComposition? - - /** - * The exception that was thrown while trying to load and parse the composition. - */ - actual val error: Throwable? - - /** - * Whether or not the composition is still being loaded and parsed. - */ - actual val isLoading: Boolean - - /** - * Whether or not the composition is in the process of being loaded or parsed. - */ - actual val isComplete: Boolean - - /** - * Whether or not the composition failed to load. This is terminal. It only occurs after - * returning false from [rememberLottieComposition]'s onRetry lambda. - */ - actual val isFailure: Boolean - - /** - * Whether or not the composition has succeeded yet. - */ - actual val isSuccess: Boolean - - /** - * Suspend until the composition has finished parsing. - * - * This can throw if the [LottieComposition] fails to load. - * - * These animations should never fail given a valid input: - * * [LottieCompositionSpec.RawRes] - * * [LottieCompositionSpec.Asset] - * * [LottieCompositionSpec.JsonString] - * - * These animations may fail: - * * [LottieCompositionSpec.Url] - * * [LottieCompositionSpec.File] - */ - actual suspend fun await(): LottieComposition -} - - -@Stable -internal class LottieCompositionResultImpl : LottieCompositionResult { - private val compositionDeferred = CompletableDeferred() - - override var value: LottieComposition? by mutableStateOf(null) - private set - - override var error by mutableStateOf(null) - private set - - override val isLoading by derivedStateOf { value == null && error == null } - - override val isComplete by derivedStateOf { value != null || error != null } - - override val isFailure by derivedStateOf { error != null } - - override val isSuccess by derivedStateOf { value != null } - - override suspend fun await(): LottieComposition { - return compositionDeferred.await() - } - - private val mutex = Mutex() - - internal suspend fun complete(composition: LottieComposition) { - mutex.withLock { - if (isComplete) return - - this.value = composition - compositionDeferred.complete(composition) - } - } - - internal suspend fun completeExceptionally(error: Throwable) { - mutex.withLock { - if (isComplete) return - - this.error = error - compositionDeferred.completeExceptionally(error) - } - } -} diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.skiko.kt deleted file mode 100644 index 18b537a0..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.skiko.kt +++ /dev/null @@ -1,35 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Immutable - -@Immutable -actual sealed class LottieCompositionSpec { - - @Immutable - actual class JsonString actual constructor( - internal val jsonString: String - ) : LottieCompositionSpec() { - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false - - other as JsonString - - if (jsonString != other.jsonString) return false - - return true - } - - override fun hashCode(): Int { - return jsonString.hashCode() - } - - override fun toString(): String { - return "JsonString(jsonString='$jsonString')" - } - - } - - actual companion object -} - diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.skiko.kt deleted file mode 100644 index 4191bccc..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.skiko.kt +++ /dev/null @@ -1,80 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableFloatStateOf -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.nativeCanvas -import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.unit.toOffset -import org.jetbrains.skia.Rect -import org.jetbrains.skia.skottie.RenderFlag - -/** - * A composable that makes it easy to create a [LottiePainter] and update its properties. - */ -@Composable -actual fun rememberLottiePainter( - composition: LottieComposition?, - progress: Float, - clipToCompositionBounds: Boolean, -): LottiePainter { - val painter = remember { LottiePainter() } - painter.composition = composition - painter.progress = progress - painter.clipToCompositionBounds = clipToCompositionBounds - return painter -} - -actual class LottiePainter internal constructor( - composition: LottieComposition? = null, - progress: Float = 0f, - clipToCompositionBounds: Boolean = true, -) : Painter() { - internal var composition by mutableStateOf(composition) - internal var progress by mutableFloatStateOf(progress) - internal var clipToCompositionBounds by mutableStateOf(clipToCompositionBounds) - - override val intrinsicSize: Size - get() { - val composition = composition ?: return Size.Unspecified - return Size(composition.animation.width, composition.animation.height) - } - - private val defaultFlags = listOf( - RenderFlag.SKIP_TOP_LEVEL_ISOLATION - ).toTypedArray() - - private val noClipFlags = (defaultFlags + RenderFlag.DISABLE_TOP_LEVEL_CLIPPING) - - override fun DrawScope.onDraw() { - val composition = composition ?: return - - if (composition.animation.isClosed || composition.invalidationController.isClosed) - return - - drawIntoCanvas { - val flags = if (clipToCompositionBounds) { - it.clipRect(0f, 0f, size.width, size.height) - defaultFlags - } else { - noClipFlags - } - - - composition.animation - .seek(progress, composition.invalidationController) - .render( - canvas = it.nativeCanvas, - dst = Rect.makeWH(size.width, size.height), - *flags - ) - } - } -} - diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.skiko.kt deleted file mode 100644 index b5ea97af..00000000 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.skiko.kt +++ /dev/null @@ -1,93 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.Stable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue - -/** - * Returns a [LottieAnimationState] representing the progress of an animation. - * - * This is the declarative version of [rememberLottieAnimatable] and [LottieAnimation]. - * - * @param composition The composition to render. This should be retrieved with [rememberLottieComposition]. - * @param isPlaying Whether or not the animation is currently playing. Note that the internal - * animation may end due to reaching the target iterations count. If that happens, - * the animation may stop even if this is still true. You can observe the returned - * [LottieAnimationState.isPlaying] to determine whether the underlying animation - * is still playing. - * @param restartOnPlay If isPlaying switches from false to true, restartOnPlay determines whether - * the progress and iteration gets reset. - * @param reverseOnRepeat Defines what this animation should do when it reaches the end. This setting - * is applied only when [iterations] is either greater than 0 or [LottieConstants.IterateForever]. - * Defaults to `false`. - * @param clipSpec A [LottieClipSpec] that specifies the bound the animation playback - * should be clipped to. - * @param speed The speed the animation should play at. Numbers larger than one will speed it up. - * Numbers between 0 and 1 will slow it down. Numbers less than 0 will play it backwards. - * @param iterations The number of times the animation should repeat before stopping. It must be - * a positive number. [LottieConstants.IterateForever] can be used to repeat forever. - * @param cancellationBehavior The behavior that this animation should have when cancelled. In most cases, - * you will want it to cancel immediately. However, if you have a state based - * transition and you want an animation to finish playing before moving on to - * the next one then you may want to set this to [LottieCancellationBehavior.OnIterationFinish]. - * @param ignoreSystemAnimatorScale By default, Lottie will respect the system animator scale set in developer options or set to 0 - * by things like battery saver mode. When set to 0, the speed will effectively become [Integer.MAX_VALUE]. - * Set this to false if you want to ignore the system animator scale and always default to normal speed. - */ -@Composable -@Stable -actual fun animateLottieCompositionAsState( - composition: LottieComposition?, - isPlaying: Boolean, - restartOnPlay: Boolean, - reverseOnRepeat: Boolean, - clipSpec: LottieClipSpec?, - speed: Float, - iterations: Int, - cancellationBehavior: LottieCancellationBehavior, - ignoreSystemAnimatorScale: Boolean, - useCompositionFrameRate: Boolean, -): LottieAnimationState { - require(iterations > 0) { "Iterations must be a positive number ($iterations)." } - require(speed.isFinite()) { "Speed must be a finite number. It is $speed." } - - val animatable = rememberLottieAnimatable() - var wasPlaying by remember { mutableStateOf(isPlaying) } - - // Dividing by 0 correctly yields Float.POSITIVE_INFINITY here. - val actualSpeed = if (ignoreSystemAnimatorScale) speed else (speed / systemAnimationScale()) - - LaunchedEffect( - composition, - isPlaying, - clipSpec, - actualSpeed, - iterations, - ) { - if (isPlaying && !wasPlaying && restartOnPlay) { - animatable.resetToBeginning() - } - wasPlaying = isPlaying - if (!isPlaying) return@LaunchedEffect - - animatable.animate( - composition, - iterations = iterations, - reverseOnRepeat = reverseOnRepeat, - speed = actualSpeed, - clipSpec = clipSpec, - initialProgress = animatable.progress, - continueFromPreviousAnimate = false, - cancellationBehavior = cancellationBehavior, - useCompositionFrameRate = useCompositionFrameRate, - ) - } - - return animatable -} - -fun systemAnimationScale() = 1f diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt new file mode 100644 index 00000000..d37c910c --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt @@ -0,0 +1,16 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.graphics.PathMeasure +import androidx.compose.ui.graphics.asSkiaPathMeasure + + +actual fun ExtendedPathMeasure() : ExtendedPathMeasure = SkikoExtendedPathMeasure() + +private class SkikoExtendedPathMeasure( + private val delegate: PathMeasure = PathMeasure() +) : ExtendedPathMeasure, PathMeasure by delegate { + + override fun nextContour(): Boolean { + return delegate.asSkiaPathMeasure().nextContour() + } +} diff --git a/example/desktopApp/build.gradle.kts b/example/desktopApp/build.gradle.kts index d7276a94..8d1cc15f 100644 --- a/example/desktopApp/build.gradle.kts +++ b/example/desktopApp/build.gradle.kts @@ -2,6 +2,7 @@ plugins { kotlin("multiplatform") id("org.jetbrains.compose") + alias(libs.plugins.composeCompiler) } @@ -17,7 +18,9 @@ kotlin { kotlin.srcDirs("src/main/kotlin") dependencies { implementation(project(":example:shared")) + implementation(project(":compottie")) + implementation(libs.serialization) implementation(compose.desktop.currentOs) api(compose.runtime) api(compose.foundation) diff --git a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt index cbe2b47d..c25e61af 100644 --- a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt +++ b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt @@ -1,18 +1,32 @@ -import androidx.compose.ui.window.Window -import androidx.compose.ui.window.application -import androidx.compose.ui.window.rememberWindowState +@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") + +import androidx.compose.ui.window.singleWindowApplication fun main() { + singleWindowApplication { + App() + } +} - application { - val windowState = rememberWindowState() - Window( - onCloseRequest = ::exitApplication, - title = "Compottie example", - state = windowState, - ) { - App() - } +private val testLottie = """ +{ + "nm": "Comp 1", + "ddd": 0, + "h": 800, + "w": 800, + "meta": { + "g": "@lottiefiles/toolkit-js 0.33.2" + }, + "v": "5.5.9", + "fr": 24, + "op": 84, + "ip": 0, + "layers" : [ + { + "ty" : 4, + "nm" : "shape layer" } -} \ No newline at end of file + ] +} +""".trimIndent() \ No newline at end of file diff --git a/example/shared/build.gradle.kts b/example/shared/build.gradle.kts index f73ff574..9b5c3252 100644 --- a/example/shared/build.gradle.kts +++ b/example/shared/build.gradle.kts @@ -2,6 +2,8 @@ plugins { kotlin("multiplatform") id("com.android.library") id("org.jetbrains.compose") + alias(libs.plugins.composeCompiler) + } val _jvmTarget = findProperty("jvmTarget") as String diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index e18344b3..b746ef59 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,18 +1,8 @@ import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.ExperimentalLayoutApi -import androidx.compose.foundation.layout.FlowRow -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import io.github.alexzhirkevich.compottie.LottieAnimation import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState @@ -23,43 +13,581 @@ private const val lottieData = """ {"v":"4.10.1","fr":60,"ip":0,"op":120,"w":800,"h":800,"nm":"loading_animation","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":23,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":34,"s":[100],"e":[20]},{"t":69}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":23,"s":[400,400],"e":[440,440]},{"i":{"x":[0.009,0.009],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p009_1_0p333_0","0p009_1_0p333_0"],"t":34,"s":[440,440],"e":[400,400]},{"t":59}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[10],"e":[5]},{"t":59}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":27,"s":[100],"e":[20]},{"t":62}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":16,"s":[320,320],"e":[360,360]},{"i":{"x":[0.025,0.025],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p025_1_0p333_0","0p025_1_0p333_0"],"t":27,"s":[360,360],"e":[320,320]},{"t":52}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":27,"s":[10],"e":[5]},{"t":52}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":9,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":20,"s":[100],"e":[20]},{"t":55}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":9,"s":[240,240],"e":[280,280]},{"i":{"x":[0.051,0.051],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p051_1_0p333_0","0p051_1_0p333_0"],"t":20,"s":[280,280],"e":[240,240]},{"t":45}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[10],"e":[5]},{"t":45}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[100],"e":[20]},{"t":48}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":2,"s":[160,160],"e":[200,200]},{"i":{"x":[0.034,0.034],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p034_1_0p333_0","0p034_1_0p333_0"],"t":13,"s":[200,200],"e":[160,160]},{"t":38}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[10],"e":[5]},{"t":38}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":11,"s":[100],"e":[20]},{"t":46}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":0,"s":[80,80],"e":[120,120]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":11,"s":[120,120],"e":[80,80]},{"t":36}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[10],"e":[5]},{"t":35}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0}]} """ -@OptIn(ExperimentalLayoutApi::class) @Composable fun App() { - Box( - modifier = Modifier.fillMaxSize(), - contentAlignment = Alignment.Center - ) { + val composition = rememberLottieComposition( + LottieCompositionSpec.JsonString(bounsingBall) + ) - val composition by rememberLottieComposition(LottieCompositionSpec.JsonString(lottieData)) + val progress by animateLottieCompositionAsState( + composition = composition.value, + iterations = LottieConstants.IterateForever, + ) - val progress = animateLottieCompositionAsState( + Image( + modifier = Modifier.fillMaxSize(), + painter = rememberLottiePainter( composition = composition, - iterations = LottieConstants.IterateForever, - ) + progress = { + progress + } + ), + contentDescription = null + ) +} - val painter = rememberLottiePainter(composition, progress.value) - FlowRow { - Column( - horizontalAlignment = Alignment.CenterHorizontally - ) { - Image( - painter = painter, - contentDescription = null, - ) - Text("Image with LottiePainter") - } - Column( - horizontalAlignment = Alignment.CenterHorizontally - ) { - LottieAnimation( - composition = composition, - progress = { progress.value }, - ) - Text("LottieAnimation") + +private val roundRect = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"rc\",\"nm\":\"Rectangle\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]},\"r\":{\"a\":0,\"k\":50}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" + +private val rect = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"rc\",\"nm\":\"Rectangle\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]},\"r\":{\"a\":0,\"k\":0}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" + +private val oval = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"el\",\"nm\":\"Ellipse\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" + +private val bounsingBall = """ + { + "nm": "Bouncy Ball", + "v": "5.5.2", + "ip": 0, + "op": 120, + "fr": 60, + "w": 512, + "h": 512, + "layers": [ + { + "ddd": 0, + "ty": 4, + "ind": 0, + "st": 0, + "ip": 0, + "op": 120, + "nm": "Layer", + "ks": { + "a": { + "a": 0, + "k": [ + 0, + 0 + ] + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + }, + "shapes": [ + { + "ty": "gr", + "nm": "Ellipse Group", + "it": [ + { + "ty": "el", + "nm": "Ellipse", + "p": { + "a": 0, + "k": [ + 204, + 169 + ] + }, + "s": { + "a": 0, + "k": [ + 153, + 153 + ] + } + }, + { + "ty": "fl", + "nm": "Fill", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 0.710, + 0.192, + 0.278 + ] + }, + "r": 1 + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 204, + 169 + ] + }, + "p": { + "a": 1, + "k": [ + { + "t": 0, + "s": [ + 235, + 106 + ], + "h": 0, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + } + }, + { + "t": 60, + "s": [ + 265, + 441 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + } + }, + { + "t": 120, + "s": [ + 235, + 106 + ] + } + ] + }, + "s": { + "a": 1, + "k": [ + { + "t": 55, + "s": [ + 100, + 100 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + } + }, + { + "t": 60, + "s": [ + 136, + 59 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + } + }, + { + "t": 65, + "s": [ + 100, + 100 + ] + } + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + } + ] + } + ] } + ] + } +""".trimIndent() + +private val shapesLottie = """ + { + "v": "5.5.7", + "ip": 0, + "op": 180, + "nm": "Animation", + "mn": "{7c55df9e-4c06-4afe-bcb7-a2b4b9d5f7c9}", + "fr": 60, + "w": 512, + "h": 512, + "assets": [ + ], + "layers": [ + { + "ddd": 0, + "ty": 4, + "ind": 1, + "st": 0, + "ip": 0, + "op": 180, + "nm": "Ellipse", + "mn": "{0a36d01c-18e1-48d3-8e8f-cc093b3f24ba}", + "ks": { + "a": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "p": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + }, + "shapes": [ + { + "ty": "gr", + "nm": "Ellipse", + "mn": "{f1becc2a-49f0-4f0c-918f-bdffe4c6870f}", + "it": [ + { + "ty": "el", + "nm": "Ellipse", + "mn": "{2aabac6e-1dd8-41b0-b60b-baf75ccb6318}", + "p": { + "a": 0, + "k": [ + 303.9044776119403, + 324.9671641791045 + ] + }, + "s": { + "a": 0, + "k": [ + 205.46865671641788, + 204.6089552238806 + ] + } + }, + { + "ty": "st", + "hd": true, + "nm": "Stroke", + "mn": "{be0ec062-125f-46e3-bb2b-c9abfd75d49f}", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 0, + 0.5019607843137255, + 1 + ] + }, + "lc": 2, + "lj": 2, + "ml": 0, + "w": { + "a": 0, + "k": 1 + } + }, + { + "ty": "fl", + "nm": "Fill", + "mn": "{b1921647-2329-42c2-af2d-5379557b5b54}", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 0.9411764705882353, + 0.11372549019607843, + 0.0392156862745098 + ] + }, + "r": 1 + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 303.9044776119403, + 324.9671641791045 + ] + }, + "p": { + "a": 0, + "k": [ + 330.55522388059705, + 308.63283582089554 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + } + ] + } + ] + }, + { + "ddd": 0, + "ty": 4, + "ind": 0, + "st": 0, + "ip": 0, + "op": 180, + "nm": "Rectangle", + "mn": "{50b511ea-ca42-416e-b630-58eca8fb41d9}", + "ks": { + "a": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "p": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + }, + "shapes": [ + { + "ty": "gr", + "nm": "Rectangle", + "mn": "{c338119b-6435-437a-a855-0f36a8264c22}", + "it": [ + { + "ty": "rc", + "nm": "Rectangle", + "mn": "{9e7f37be-ac4b-411e-8e47-3e2a2cad9102}", + "p": { + "a": 0, + "k": [ + 185.69552238805971, + 256.1910447761194 + ] + }, + "s": { + "a": 0, + "k": [ + 268.2268656716418, + 225.24179104477614 + ] + }, + "r": { + "a": 0, + "k": 0 + } + }, + { + "ty": "st", + "hd": true, + "nm": "Stroke", + "mn": "{9781440d-fa0d-45e1-b224-8c96fefc1f09}", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 0, + 0.5019607843137255, + 1 + ] + }, + "lc": 2, + "lj": 2, + "ml": 0, + "w": { + "a": 0, + "k": 1 + } + }, + { + "ty": "fl", + "nm": "Fill", + "mn": "{dc302cc0-3912-40b0-81da-03b5c172432c}", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 0.19607843137254902, + 0.3137254901960784, + 0.6901960784313725 + ] + }, + "r": 1 + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 185.69552238805971, + 256.1910447761194 + ] + }, + "p": { + "a": 0, + "k": [ + 212.34626865671646, + 239.85671641791043 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + } + ] + } + ] } + ], + "meta": { + "g": "Glaxnimate 0.4.6-26-g7b05e75c" } -} + } +""".trimIndent() \ No newline at end of file diff --git a/example/webApp/build.gradle.kts b/example/webApp/build.gradle.kts index 98eee4a9..50f6f50e 100644 --- a/example/webApp/build.gradle.kts +++ b/example/webApp/build.gradle.kts @@ -1,6 +1,8 @@ plugins { id("org.jetbrains.compose") kotlin("multiplatform") + alias(libs.plugins.composeCompiler) + } kotlin { @@ -22,4 +24,3 @@ kotlin { } } -compose.experimental.web.application{} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index be3e2baa..8c37039e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] compottie = "1.1.1" -kotlin="1.9.22" +kotlin="2.0.0" dokka="1.9.0" -compose="1.6.0" +compose="1.6.10" androidGradlePlugin = "8.1.1" lottie-android="6.3.0" serialization="1.6.2" @@ -18,3 +18,4 @@ android-application = { id = "com.android.application", version.ref = "androidGr android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } From 69f34b0f0f075144554a81963f45b611900e0965 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 28 May 2024 17:31:18 +0300 Subject: [PATCH 002/100] wip --- .../kotlin/com/airbnb/lottie/Cancellable.java | 6 - .../com/airbnb/lottie/FontAssetDelegate.java | 40 - .../com/airbnb/lottie/ImageAssetDelegate.java | 14 - .../com/airbnb/lottie/LottieComposition.java | 395 ---- .../lottie/LottieCompositionFactory.java | 758 ------- .../com/airbnb/lottie/LottieConfig.java | 150 -- .../com/airbnb/lottie/LottieDrawable.java | 1827 ----------------- .../com/airbnb/lottie/LottieImageAsset.java | 92 - .../com/airbnb/lottie/LottieListener.java | 8 - .../com/airbnb/lottie/LottieLogger.java | 17 - .../LottieOnCompositionLoadedListener.java | 5 - .../com/airbnb/lottie/LottieProperty.java | 235 --- .../com/airbnb/lottie/LottieResult.java | 55 - .../kotlin/com/airbnb/lottie/LottieTask.java | 225 -- .../airbnb/lottie/LottieTaskIdleListener.java | 11 - .../lottie/OnCompositionLoadedListener.java | 15 - .../com/airbnb/lottie/SimpleColorFilter.java | 20 - .../kotlin/com/airbnb/lottie/TextDelegate.kt | 86 - .../animation/content/BaseStrokeContent.kt | 418 ---- .../content/CompoundTrimPathContent.kt | 18 - .../lottie/animation/content/Content.kt | 7 - .../lottie/animation/content/ContentGroup.kt | 255 --- .../animation/content/DrawingContent.kt | 11 - .../animation/content/EllipseContent.kt | 125 -- .../lottie/animation/content/FillContent.java | 202 -- .../content/GradientFillContent.java | 319 --- .../content/GradientStrokeContent.java | 181 -- .../lottie/animation/content/GreedyContent.kt | 18 - .../content/KeyPathElementContent.java | 6 - .../animation/content/MergePathsContent.java | 123 -- .../animation/content/ModifierContent.java | 4 - .../lottie/animation/content/PathContent.kt | 8 - .../animation/content/PolystarContent.kt | 363 ---- .../animation/content/RectangleContent.java | 180 -- .../animation/content/RepeaterContent.java | 155 -- .../content/RoundedCornersContent.java | 225 -- .../animation/content/ShapeContent.java | 114 - .../animation/content/ShapeModifierContent.kt | 8 - .../animation/content/StrokeContent.java | 76 - .../animation/content/TrimPathContent.java | 74 - .../animation/content/package-info.java | 6 - .../keyframe/BaseKeyframeAnimation.kt | 318 --- .../keyframe/ColorKeyframeAnimation.kt | 50 - .../keyframe/DropShadowKeyframeAnimation.kt | 102 - .../keyframe/FloatKeyframeAnimation.java | 45 - .../GradientColorKeyframeAnimation.java | 32 - .../keyframe/IntegerKeyframeAnimation.java | 48 - .../animation/keyframe/KeyframeAnimation.java | 11 - .../keyframe/MaskKeyframeAnimation.java | 39 - .../animation/keyframe/PathKeyframe.java | 40 - .../keyframe/PathKeyframeAnimation.java | 59 - .../keyframe/PointKeyframeAnimation.java | 41 - .../keyframe/ScaleKeyframeAnimation.java | 40 - .../keyframe/ShapeKeyframeAnimation.java | 58 - .../SplitDimensionPathKeyframeAnimation.java | 105 - .../keyframe/TextKeyframeAnimation.java | 45 - .../keyframe/TransformKeyframeAnimation.java | 361 ---- .../ValueCallbackKeyframeAnimation.java | 49 - .../animation/keyframe/package-info.java | 6 - .../airbnb/lottie/animation/package-info.java | 6 - .../lottie/manager/FontAssetManager.java | 129 -- .../lottie/manager/ImageAssetManager.java | 151 -- .../airbnb/lottie/manager/package-info.java | 6 - .../airbnb/lottie/model/CubicCurveData.java | 91 - .../com/airbnb/lottie/model/DocumentData.java | 76 - .../kotlin/com/airbnb/lottie/model/Font.java | 52 - .../airbnb/lottie/model/FontCharacter.java | 49 - .../com/airbnb/lottie/model/KeyPath.java | 243 --- .../airbnb/lottie/model/KeyPathElement.java | 41 - .../lottie/model/LottieCompositionCache.java | 50 - .../com/airbnb/lottie/model/Marker.java | 37 - .../com/airbnb/lottie/model/MutablePair.java | 57 - .../animatable/AnimatableColorValue.java | 17 - .../animatable/AnimatableFloatValue.java | 18 - .../AnimatableGradientColorValue.java | 56 - .../animatable/AnimatableIntegerValue.java | 18 - .../model/animatable/AnimatablePathValue.java | 36 - .../animatable/AnimatablePointValue.java | 19 - .../animatable/AnimatableScaleValue.java | 23 - .../animatable/AnimatableShapeValue.java | 20 - .../AnimatableSplitDimensionPathValue.java | 36 - .../model/animatable/AnimatableTextFrame.java | 18 - .../animatable/AnimatableTextProperties.java | 20 - .../model/animatable/AnimatableTransform.java | 124 -- .../model/animatable/AnimatableValue.java | 14 - .../model/animatable/BaseAnimatableValue.java | 39 - .../lottie/model/animatable/package-info.java | 6 - .../lottie/model/content/BlurEffect.java | 16 - .../lottie/model/content/CircleShape.java | 52 - .../lottie/model/content/ContentModel.java | 13 - .../lottie/model/content/GradientColor.java | 118 -- .../lottie/model/content/GradientFill.java | 83 - .../lottie/model/content/GradientStroke.java | 110 - .../lottie/model/content/GradientType.java | 6 - .../lottie/model/content/LBlendMode.java | 68 - .../com/airbnb/lottie/model/content/Mask.java | 41 - .../lottie/model/content/MergePaths.java | 74 - .../lottie/model/content/PolystarShape.java | 111 - .../lottie/model/content/RectangleShape.java | 58 - .../airbnb/lottie/model/content/Repeater.java | 52 - .../lottie/model/content/RoundedCorners.java | 32 - .../lottie/model/content/ShapeData.java | 111 - .../lottie/model/content/ShapeFill.java | 63 - .../lottie/model/content/ShapeGroup.java | 42 - .../lottie/model/content/ShapePath.java | 44 - .../lottie/model/content/ShapeStroke.java | 125 -- .../lottie/model/content/ShapeTrimPath.java | 76 - .../lottie/model/content/package-info.java | 6 - .../airbnb/lottie/model/layer/BaseLayer.java | 761 ------- .../lottie/model/layer/CompositionLayer.java | 246 --- .../airbnb/lottie/model/layer/ImageLayer.java | 112 - .../com/airbnb/lottie/model/layer/Layer.java | 236 --- .../airbnb/lottie/model/layer/NullLayer.java | 22 - .../airbnb/lottie/model/layer/ShapeLayer.java | 66 - .../airbnb/lottie/model/layer/SolidLayer.java | 110 - .../airbnb/lottie/model/layer/TextLayer.java | 627 ------ .../lottie/model/layer/package-info.java | 6 - .../airbnb/lottie/utils/BaseLottieAnimator.kt | 115 -- .../com/airbnb/lottie/utils/GammaEvaluator.kt | 74 - .../lottie/utils/LottieValueAnimator.kt | 320 --- .../com/airbnb/lottie/utils/MiscUtils.kt | 120 -- .../kotlin/com/airbnb/lottie/utils/Utils.kt | 247 --- .../com/airbnb/lottie/utils/package-info.java | 6 - .../com/airbnb/lottie/value/Interpolator.kt | 9 - .../com/airbnb/lottie/value/Keyframe.kt | 199 -- .../airbnb/lottie/value/LottieFrameInfo.kt | 17 - .../value/LottieInterpolatedFloatValue.kt | 19 - .../value/LottieInterpolatedIntegerValue.kt | 13 - .../value/LottieInterpolatedPointValue.kt | 22 - .../lottie/value/LottieInterpolatedValue.kt | 15 - .../kotlin/com/airbnb/lottie/value/ScaleXY.kt | 16 - ...ure.android.kt => PlatformPath.android.kt} | 3 +- .../internal/{schema => content}/Content.kt | 2 +- .../internal/content/ContentGroup.kt | 136 ++ .../internal/content/DrawingContent.kt | 11 + .../compottie/internal/content/PathContent.kt | 8 + ...PlatformPathMeasure.kt => PlatformPath.kt} | 5 +- .../internal/schema/DrawableContent.kt | 8 - .../compottie/internal/schema/Json.kt | 20 +- .../compottie/internal/schema/PathContent.kt | 7 - .../schema/helpers/LottieTransform.kt | 122 +- .../internal/schema/helpers/Transform.kt | 18 +- .../internal/schema/layers/BaseLayer.kt | 149 +- .../internal/schema/layers/ShapeLayer.kt | 76 +- .../internal/schema/layers/VisualLayer.kt | 2 +- .../internal/schema/properties/Animated.kt | 6 + .../{Vector.kt => AnimatedColor.kt} | 26 +- .../properties/{Value.kt => AnimatedValue.kt} | 13 +- .../schema/properties/AnimatedVector2.kt | 72 + .../schema/properties/GradientColors.kt | 2 +- .../internal/schema/shapes/BaseStroke.kt | 106 +- .../internal/schema/shapes/Ellipse.kt | 10 +- .../compottie/internal/schema/shapes/Fill.kt | 9 +- .../internal/schema/shapes/GradientFill.kt | 14 +- .../internal/schema/shapes/GradientStroke.kt | 73 +- .../compottie/internal/schema/shapes/Rect.kt | 14 +- .../compottie/internal/schema/shapes/Round.kt | 4 +- .../compottie/internal/schema/shapes/Shape.kt | 75 +- .../shapes/{Stroke.kt => SolidStroke.kt} | 28 +- .../compottie/internal/schema/shapes/Star.kt | 22 +- .../internal/schema/shapes/TransformShape.kt | 18 +- .../compottie/internal/schema/shapes/Trim.kt | 8 +- .../internal/schema/shapes/TrimPath.kt | 8 +- .../schema/shapes/util/CompoundTrimPath.kt | 36 +- .../schema/shapes/util/CornerRounding.kt | 128 +- .../internal/schema/shapes/util/Cubic.kt | 874 ++++---- .../internal/schema/shapes/util/Feature.kt | 166 +- .../internal/schema/shapes/util/Point.kt | 168 +- .../schema/shapes/util/RoundedPolygon.kt | 1328 ++++++------ .../internal/schema/shapes/util/Urils.kt | 119 -- .../internal/schema/shapes/util/Utils.kt | 230 +-- .../compottie/internal/utils/Math.kt | 9 + .../compottie/internal/utils/Matrix.kt | 23 + .../{schema/shapes/util => utils}/MiscUtil.kt | 2 +- .../compottie/internal/utils/MutableRect.kt | 29 + .../compottie/internal/utils/Utils.kt | 101 + .../androidapp/src/main/java/MainActivity.kt | 15 - .../src/main/kotlin/MainActivity.kt | 36 + 178 files changed, 2373 insertions(+), 16401 deletions(-) delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt delete mode 100644 compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt rename compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/{PlatformPathMeasure.android.kt => PlatformPath.android.kt} (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => content}/Content.kt (71%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/{PlatformPathMeasure.kt => PlatformPath.kt} (75%) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/{Vector.kt => AnimatedColor.kt} (68%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/{Value.kt => AnimatedValue.kt} (80%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{Stroke.kt => SolidStroke.kt} (79%) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema/shapes/util => utils}/MiscUtil.kt (83%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt delete mode 100644 example/androidapp/src/main/java/MainActivity.kt create mode 100644 example/androidapp/src/main/kotlin/MainActivity.kt diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java deleted file mode 100644 index a192dadd..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/Cancellable.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.airbnb.lottie; - -@Deprecated -public interface Cancellable { - void cancel(); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java deleted file mode 100644 index bea7afd2..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/FontAssetDelegate.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.airbnb.lottie; - -import android.graphics.Typeface; - -/** - * Delegate to handle the loading of fonts that are not packaged in the assets of your app or don't - * have the same file name. - * - * @see LottieDrawable#setFontAssetDelegate(FontAssetDelegate) - */ -@SuppressWarnings({"unused", "WeakerAccess"}) public class FontAssetDelegate { - - /** - * Override this if you want to return a Typeface from a font family. - */ - public Typeface fetchFont(String fontFamily) { - return null; - } - - /** - * Override this if you want to return a Typeface from a font family and style. - */ - public Typeface fetchFont(String fontFamily, String fontStyle, String fontName) { - return null; - } - - /** - * Override this if you want to specify the asset path for a given font family. - */ - public String getFontPath(String fontFamily) { - return null; - } - - /** - * Override this if you want to specify the asset path for a given font family and style. - */ - public String getFontPath(String fontFamily, String fontStyle, String fontName) { - return null; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java deleted file mode 100644 index 659a0144..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/ImageAssetDelegate.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.airbnb.lottie; - -import android.graphics.Bitmap; - -import androidx.annotation.Nullable; - -/** - * Delegate to handle the loading of bitmaps that are not packaged in the assets of your app. - * - * @see LottieDrawable#setImageAssetDelegate(ImageAssetDelegate) - */ -public interface ImageAssetDelegate { - @Nullable Bitmap fetchBitmap(LottieImageAsset asset); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java deleted file mode 100644 index 057e4298..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieComposition.java +++ /dev/null @@ -1,395 +0,0 @@ -package com.airbnb.lottie; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Rect; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.RawRes; -import androidx.annotation.RestrictTo; -import androidx.annotation.WorkerThread; -import androidx.collection.LongSparseArray; -import androidx.collection.SparseArrayCompat; - -import com.airbnb.lottie.model.Font; -import com.airbnb.lottie.model.FontCharacter; -import com.airbnb.lottie.model.Marker; -import com.airbnb.lottie.model.layer.Layer; -import com.airbnb.lottie.parser.moshi.JsonReader; -import com.airbnb.lottie.utils.Logger; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.utils.Utils; - -import org.json.JSONObject; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * After Effects/Bodymovin composition model. This is the serialized model from which the - * animation will be created. It is designed to be stateless, cacheable, and shareable. - *

    - * To create one, use {@link LottieCompositionFactory}. - *

    - * It can be used with a {@link com.airbnb.lottie.LottieAnimationView} or - * {@link com.airbnb.lottie.LottieDrawable}. - */ -public class LottieComposition { - - private final HashSet warnings = new HashSet<>(); - private Map> precomps; - private Map images; - private float imagesDpScale; - /** - * Map of font names to fonts - */ - private Map fonts; - private List markers; - private SparseArrayCompat characters; - private LongSparseArray layerMap; - private List layers; - // This is stored as a set to avoid duplicates. - private Rect bounds; - private float startFrame; - private float endFrame; - private float frameRate; - /** - * Used to determine if an animation can be drawn with hardware acceleration. - */ - private boolean hasDashPattern; - /** - * Counts the number of mattes and masks. Before Android switched to SKIA - * for drawing in Oreo (API 28), using hardware acceleration with mattes and masks - * was only faster until you had ~4 masks after which it would actually become slower. - */ - private int maskAndMatteCount = 0; - - @RestrictTo(RestrictTo.Scope.LIBRARY) - public void init(Rect bounds, float startFrame, float endFrame, float frameRate, - List layers, LongSparseArray layerMap, Map> precomps, Map images, float imagesDpScale, - SparseArrayCompat characters, Map fonts, - List markers) { - this.bounds = bounds; - this.startFrame = startFrame; - this.endFrame = endFrame; - this.frameRate = frameRate; - this.layers = layers; - this.layerMap = layerMap; - this.precomps = precomps; - this.images = images; - this.imagesDpScale = imagesDpScale; - this.characters = characters; - this.fonts = fonts; - this.markers = markers; - } - - @RestrictTo(RestrictTo.Scope.LIBRARY) - public void addWarning(String warning) { - Logger.warning(warning); - warnings.add(warning); - } - - @RestrictTo(RestrictTo.Scope.LIBRARY) - public void setHasDashPattern(boolean hasDashPattern) { - this.hasDashPattern = hasDashPattern; - } - - @RestrictTo(RestrictTo.Scope.LIBRARY) - public void incrementMatteOrMaskCount(int amount) { - maskAndMatteCount += amount; - } - - /** - * Used to determine if an animation can be drawn with hardware acceleration. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY) - public boolean hasDashPattern() { - return hasDashPattern; - } - - /** - * Used to determine if an animation can be drawn with hardware acceleration. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY) - public int getMaskAndMatteCount() { - return maskAndMatteCount; - } - - public ArrayList getWarnings() { - return new ArrayList<>(Arrays.asList(warnings.toArray(new String[warnings.size()]))); - } - - - @RestrictTo(RestrictTo.Scope.LIBRARY) - public Layer layerModelForId(long id) { - return layerMap.get(id); - } - - @SuppressWarnings("WeakerAccess") public Rect getBounds() { - return bounds; - } - - @SuppressWarnings("WeakerAccess") public float getDuration() { - return (long) (getDurationFrames() / frameRate * 1000); - } - - public float getStartFrame() { - return startFrame; - } - - public float getEndFrame() { - return endFrame; - } - - public float getFrameForProgress(float progress) { - return MiscUtils.lerp(startFrame, endFrame, progress); - } - - public float getProgressForFrame(float frame) { - float framesSinceStart = frame - startFrame; - float frameRange = endFrame - startFrame; - return framesSinceStart / frameRange; - } - - public float getFrameRate() { - return frameRate; - } - - public List getLayers() { - return layers; - } - - @RestrictTo(RestrictTo.Scope.LIBRARY) - @Nullable - public List getPrecomps(String id) { - return precomps.get(id); - } - - public SparseArrayCompat getCharacters() { - return characters; - } - - public Map getFonts() { - return fonts; - } - - public List getMarkers() { - return markers; - } - - @Nullable - public Marker getMarker(String markerName) { - int size = markers.size(); - for (int i = 0; i < size; i++) { - Marker marker = markers.get(i); - if (marker.matchesName(markerName)) { - return marker; - } - } - return null; - } - - public boolean hasImages() { - return !images.isEmpty(); - } - - /** - * Returns a map of image asset id to {@link LottieImageAsset}. These assets contain image metadata exported - * from After Effects or other design tool. The resulting Bitmaps can be set directly on the image asset so - * they can be loaded once and reused across compositions. - * - * If the context dp scale has changed since the last time images were retrieved, images will be rescaled. - */ - public Map getImages() { - float dpScale = Utils.dpScale(); - if (dpScale != imagesDpScale) { - Set> entries = images.entrySet(); - - for (Map.Entry entry : entries) { - images.put(entry.getKey(), entry.getValue().copyWithScale(imagesDpScale / dpScale)); - } - } - imagesDpScale = dpScale; - return images; - } - - public float getDurationFrames() { - return endFrame - startFrame; - } - - - @NonNull - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("LottieComposition:\n"); - for (Layer layer : layers) { - sb.append(layer.toString("\t")); - } - return sb.toString(); - } - - /** - * This will be removed in the next version of Lottie. {@link LottieCompositionFactory} has improved - * API names, failure handlers, and will return in-progress tasks so you will never parse the same - * animation twice in parallel. - * - * @see LottieCompositionFactory - */ - @Deprecated - public static class Factory { - - private Factory() { - } - - /** - * @see LottieCompositionFactory#fromAsset(Context, String) - */ - @SuppressWarnings("deprecation") - @Deprecated - public static Cancellable fromAssetFileName(Context context, String fileName, OnCompositionLoadedListener l) { - ListenerAdapter listener = new ListenerAdapter(l); - LottieCompositionFactory.fromAsset(context, fileName).addListener(listener); - return listener; - } - - /** - * @see LottieCompositionFactory#fromRawRes(Context, int) - */ - @SuppressWarnings("deprecation") - @Deprecated - public static Cancellable fromRawFile(Context context, @RawRes int resId, OnCompositionLoadedListener l) { - ListenerAdapter listener = new ListenerAdapter(l); - LottieCompositionFactory.fromRawRes(context, resId).addListener(listener); - return listener; - } - - /** - * @see LottieCompositionFactory#fromJsonInputStream(InputStream, String) - */ - @SuppressWarnings("deprecation") - @Deprecated - public static Cancellable fromInputStream(InputStream stream, OnCompositionLoadedListener l) { - ListenerAdapter listener = new ListenerAdapter(l); - LottieCompositionFactory.fromJsonInputStream(stream, null).addListener(listener); - return listener; - } - - /** - * @see LottieCompositionFactory#fromJsonString(String, String) - */ - @SuppressWarnings("deprecation") - @Deprecated - public static Cancellable fromJsonString(String jsonString, OnCompositionLoadedListener l) { - ListenerAdapter listener = new ListenerAdapter(l); - LottieCompositionFactory.fromJsonString(jsonString, null).addListener(listener); - return listener; - } - - /** - * @see LottieCompositionFactory#fromJsonReader(JsonReader, String) - */ - @SuppressWarnings("deprecation") - @Deprecated - public static Cancellable fromJsonReader(JsonReader reader, OnCompositionLoadedListener l) { - ListenerAdapter listener = new ListenerAdapter(l); - LottieCompositionFactory.fromJsonReader(reader, null).addListener(listener); - return listener; - } - - /** - * @see LottieCompositionFactory#fromAssetSync(Context, String) - */ - @Nullable - @WorkerThread - @Deprecated - public static LottieComposition fromFileSync(Context context, String fileName) { - return LottieCompositionFactory.fromAssetSync(context, fileName).getValue(); - } - - /** - * @see LottieCompositionFactory#fromJsonInputStreamSync(InputStream, String) - */ - @Nullable - @WorkerThread - @Deprecated - public static LottieComposition fromInputStreamSync(InputStream stream) { - return LottieCompositionFactory.fromJsonInputStreamSync(stream, null).getValue(); - } - - /** - * This will now auto-close the input stream! - * - * @see LottieCompositionFactory#fromJsonInputStreamSync(InputStream, String) - */ - @Nullable - @WorkerThread - @Deprecated - public static LottieComposition fromInputStreamSync(InputStream stream, boolean close) { - if (close) { - Logger.warning("Lottie now auto-closes input stream!"); - } - return LottieCompositionFactory.fromJsonInputStreamSync(stream, null).getValue(); - } - - /** - * @see LottieCompositionFactory#fromJsonSync(JSONObject, String) - */ - @Nullable - @WorkerThread - @Deprecated - public static LottieComposition fromJsonSync(@SuppressWarnings("unused") Resources res, JSONObject json) { - //noinspection deprecation - return LottieCompositionFactory.fromJsonSync(json, null).getValue(); - } - - /** - * @see LottieCompositionFactory#fromJsonStringSync(String, String) - */ - @Nullable - @WorkerThread - @Deprecated - public static LottieComposition fromJsonSync(String json) { - return LottieCompositionFactory.fromJsonStringSync(json, null).getValue(); - } - - /** - * @see LottieCompositionFactory#fromJsonReaderSync(JsonReader, String) - */ - @Nullable - @WorkerThread - @Deprecated - public static LottieComposition fromJsonSync(JsonReader reader) { - return LottieCompositionFactory.fromJsonReaderSync(reader, null).getValue(); - } - - @SuppressWarnings("deprecation") - private static final class ListenerAdapter implements LottieListener, Cancellable { - - private final OnCompositionLoadedListener listener; - private boolean cancelled = false; - - private ListenerAdapter(OnCompositionLoadedListener listener) { - this.listener = listener; - } - - @Override public void onResult(LottieComposition composition) { - if (cancelled) { - return; - } - listener.onCompositionLoaded(composition); - } - - @Override public void cancel() { - cancelled = true; - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java deleted file mode 100644 index d2eaa3bb..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieCompositionFactory.java +++ /dev/null @@ -1,758 +0,0 @@ -package com.airbnb.lottie; - -import static com.airbnb.lottie.utils.Utils.closeQuietly; -import static okio.Okio.buffer; -import static okio.Okio.source; - -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Typeface; -import android.util.Base64; -import android.util.Log; - -import androidx.annotation.Nullable; -import androidx.annotation.RawRes; -import androidx.annotation.WorkerThread; - -import com.airbnb.lottie.model.Font; -import com.airbnb.lottie.model.LottieCompositionCache; -import com.airbnb.lottie.network.NetworkCache; -import com.airbnb.lottie.parser.LottieCompositionMoshiParser; -import com.airbnb.lottie.parser.moshi.JsonReader; -import com.airbnb.lottie.utils.Logger; -import com.airbnb.lottie.utils.Utils; - -import org.json.JSONObject; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.zip.GZIPInputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import okio.BufferedSource; -import okio.Okio; - -/** - * Helpers to create or cache a LottieComposition. - *

    - * All factory methods take a cache key. The animation will be stored in an LRU cache for future use. - * In-progress tasks will also be held so they can be returned for subsequent requests for the same - * animation prior to the cache being populated. - */ -@SuppressWarnings({"WeakerAccess", "unused", "NullAway"}) -public class LottieCompositionFactory { - - /** - * Keep a map of cache keys to in-progress tasks and return them for new requests. - * Without this, simultaneous requests to parse a composition will trigger multiple parallel - * parse tasks prior to the cache getting populated. - */ - private static final Map> taskCache = new HashMap<>(); - private static final Set taskIdleListeners = new HashSet<>(); - - /** - * reference magic bytes for zip compressed files. - * useful to determine if an InputStream is a zip file or not - */ - private static final byte[] ZIP_MAGIC = new byte[]{0x50, 0x4b, 0x03, 0x04}; - private static final byte[] GZIP_MAGIC = new byte[]{0x1f, (byte) 0x8b, 0x08}; - - - private LottieCompositionFactory() { - } - - /** - * Set the maximum number of compositions to keep cached in memory. - * This must be {@literal >} 0. - */ - public static void setMaxCacheSize(int size) { - LottieCompositionCache.getInstance().resize(size); - } - - public static void clearCache(Context context) { - taskCache.clear(); - LottieCompositionCache.getInstance().clear(); - final NetworkCache networkCache = L.networkCache(context); - if (networkCache != null) { - networkCache.clear(); - } - } - - /** - * Use this to register a callback for when the composition factory is idle or not. - * This can be used to provide data to an espresso idling resource. - * Refer to FragmentVisibilityTests and its LottieIdlingResource in the Lottie repo for - * an example. - */ - public static void registerLottieTaskIdleListener(LottieTaskIdleListener listener) { - taskIdleListeners.add(listener); - listener.onIdleChanged(taskCache.size() == 0); - } - - public static void unregisterLottieTaskIdleListener(LottieTaskIdleListener listener) { - taskIdleListeners.remove(listener); - } - - /** - * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for - * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you - * might need an animation in the future. - *

    - * To skip the cache, add null as a third parameter. - */ - public static LottieTask fromUrl(final Context context, final String url) { - return fromUrl(context, url, "url_" + url); - } - - /** - * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for - * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you - * might need an animation in the future. - */ - public static LottieTask fromUrl(final Context context, final String url, @Nullable final String cacheKey) { - return cache(cacheKey, () -> { - LottieResult result = L.networkFetcher(context).fetchSync(context, url, cacheKey); - if (cacheKey != null && result.getValue() != null) { - LottieCompositionCache.getInstance().put(cacheKey, result.getValue()); - } - return result; - }, null); - } - - /** - * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for - * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you - * might need an animation in the future. - */ - @WorkerThread - public static LottieResult fromUrlSync(Context context, String url) { - return fromUrlSync(context, url, url); - } - - - /** - * Fetch an animation from an http url. Once it is downloaded once, Lottie will cache the file to disk for - * future use. Because of this, you may call `fromUrl` ahead of time to warm the cache if you think you - * might need an animation in the future. - */ - @WorkerThread - public static LottieResult fromUrlSync(Context context, String url, @Nullable String cacheKey) { - final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); - if (cachedComposition != null) { - return new LottieResult<>(cachedComposition); - } - LottieResult result = L.networkFetcher(context).fetchSync(context, url, cacheKey); - if (cacheKey != null && result.getValue() != null) { - LottieCompositionCache.getInstance().put(cacheKey, result.getValue()); - } - return result; - } - - /** - * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. - * The asset file name will be used as a cache key so future usages won't have to parse the json again. - * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. - *

    - * To skip the cache, add null as a third parameter. - * - * @see #fromZipStream(ZipInputStream, String) - */ - public static LottieTask fromAsset(Context context, final String fileName) { - String cacheKey = "asset_" + fileName; - return fromAsset(context, fileName, cacheKey); - } - - /** - * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. - * The asset file name will be used as a cache key so future usages won't have to parse the json again. - * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. - *

    - * Pass null as the cache key to skip the cache. - * - * @see #fromZipStream(ZipInputStream, String) - */ - public static LottieTask fromAsset(Context context, final String fileName, @Nullable final String cacheKey) { - // Prevent accidentally leaking an Activity. - final Context appContext = context.getApplicationContext(); - return cache(cacheKey, () -> fromAssetSync(appContext, fileName, cacheKey), null); - } - - /** - * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. - * The asset file name will be used as a cache key so future usages won't have to parse the json again. - * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. - *

    - * To skip the cache, add null as a third parameter. - * - * @see #fromZipStreamSync(Context, ZipInputStream, String) - */ - @WorkerThread - public static LottieResult fromAssetSync(Context context, String fileName) { - String cacheKey = "asset_" + fileName; - return fromAssetSync(context, fileName, cacheKey); - } - - /** - * Parse an animation from src/main/assets. It is recommended to use {@link #fromRawRes(Context, int)} instead. - * The asset file name will be used as a cache key so future usages won't have to parse the json again. - * However, if your animation has images, you may package the json and images as a single flattened zip file in assets. - *

    - * Pass null as the cache key to skip the cache. - * - * @see #fromZipStreamSync(Context, ZipInputStream, String) - */ - @WorkerThread - public static LottieResult fromAssetSync(Context context, String fileName, @Nullable String cacheKey) { - final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); - if (cachedComposition != null) { - return new LottieResult<>(cachedComposition); - } - try { - BufferedSource source = Okio.buffer(source(context.getAssets().open(fileName))); - if (isZipCompressed(source)) { - return fromZipStreamSync(context, new ZipInputStream(source.inputStream()), cacheKey); - } else if (isGzipCompressed(source)) { - return fromJsonInputStreamSync(new GZIPInputStream(source.inputStream()), cacheKey); - } - return fromJsonInputStreamSync(source.inputStream(), cacheKey); - } catch (IOException e) { - return new LottieResult<>(e); - } - } - - - /** - * Parse an animation from raw/res. This is recommended over putting your animation in assets because - * it uses a hard reference to R. - * The resource id will be used as a cache key so future usages won't parse the json again. - * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). - * The Activity won't be leaked. - *

    - * To skip the cache, add null as a third parameter. - */ - public static LottieTask fromRawRes(Context context, @RawRes final int rawRes) { - return fromRawRes(context, rawRes, rawResCacheKey(context, rawRes)); - } - - /** - * Parse an animation from raw/res. This is recommended over putting your animation in assets because - * it uses a hard reference to R. - * The resource id will be used as a cache key so future usages won't parse the json again. - * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). - * The Activity won't be leaked. - *

    - * Pass null as the cache key to skip caching. - */ - public static LottieTask fromRawRes(Context context, @RawRes final int rawRes, @Nullable final String cacheKey) { - // Prevent accidentally leaking an Activity. - final WeakReference contextRef = new WeakReference<>(context); - final Context appContext = context.getApplicationContext(); - return cache(cacheKey, () -> { - @Nullable Context originalContext = contextRef.get(); - Context context1 = originalContext != null ? originalContext : appContext; - return fromRawResSync(context1, rawRes, cacheKey); - }, null); - } - - /** - * Parse an animation from raw/res. This is recommended over putting your animation in assets because - * it uses a hard reference to R. - * The resource id will be used as a cache key so future usages won't parse the json again. - * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). - * The Activity won't be leaked. - *

    - * To skip the cache, add null as a third parameter. - */ - @WorkerThread - public static LottieResult fromRawResSync(Context context, @RawRes int rawRes) { - return fromRawResSync(context, rawRes, rawResCacheKey(context, rawRes)); - } - - /** - * Parse an animation from raw/res. This is recommended over putting your animation in assets because - * it uses a hard reference to R. - * The resource id will be used as a cache key so future usages won't parse the json again. - * Note: to correctly load dark mode (-night) resources, make sure you pass Activity as a context (instead of e.g. the application context). - * The Activity won't be leaked. - *

    - * Pass null as the cache key to skip caching. - */ - @WorkerThread - public static LottieResult fromRawResSync(Context context, @RawRes int rawRes, @Nullable String cacheKey) { - final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); - if (cachedComposition != null) { - return new LottieResult<>(cachedComposition); - } - try { - BufferedSource source = Okio.buffer(source(context.getResources().openRawResource(rawRes))); - if (isZipCompressed(source)) { - return fromZipStreamSync(context, new ZipInputStream(source.inputStream()), cacheKey); - } else if (isGzipCompressed(source)) { - try { - return fromJsonInputStreamSync(new GZIPInputStream(source.inputStream()), cacheKey); - } catch (IOException e) { - // This shouldn't happen because we check the header for magic bytes. - return new LottieResult<>(e); - } - } - return fromJsonInputStreamSync(source.inputStream(), cacheKey); - } catch (Resources.NotFoundException e) { - return new LottieResult<>(e); - } - } - - private static String rawResCacheKey(Context context, @RawRes int resId) { - return "rawRes" + (isNightMode(context) ? "_night_" : "_day_") + resId; - } - - /** - * It is important to include day/night in the cache key so that if it changes, the cache won't return an animation from the wrong bucket. - */ - private static boolean isNightMode(Context context) { - int nightModeMasked = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; - return nightModeMasked == Configuration.UI_MODE_NIGHT_YES; - } - - /** - * Auto-closes the stream. - * - * @see #fromJsonInputStreamSync(InputStream, String, boolean) - */ - public static LottieTask fromJsonInputStream(final InputStream stream, @Nullable final String cacheKey) { - return cache(cacheKey, () -> fromJsonInputStreamSync(stream, cacheKey), () -> closeQuietly(stream)); - } - - /** - * @see #fromJsonInputStreamSync(InputStream, String, boolean) - */ - public static LottieTask fromJsonInputStream(final InputStream stream, @Nullable final String cacheKey, boolean close) { - return cache(cacheKey, () -> fromJsonInputStreamSync(stream, cacheKey, close), () -> { - if (close) { - closeQuietly(stream); - } - }); - } - - /** - * Return a LottieComposition for the given InputStream to json. - */ - @WorkerThread - public static LottieResult fromJsonInputStreamSync(InputStream stream, @Nullable String cacheKey) { - return fromJsonInputStreamSync(stream, cacheKey, true); - } - - /** - * Return a LottieComposition for the given InputStream to json. - */ - @WorkerThread - public static LottieResult fromJsonInputStreamSync(InputStream stream, @Nullable String cacheKey, boolean close) { - return fromJsonReaderSync(JsonReader.of(buffer(source(stream))), cacheKey, close); - } - - /** - * @see #fromJsonSync(JSONObject, String) - */ - @Deprecated - public static LottieTask fromJson(final JSONObject json, @Nullable final String cacheKey) { - return cache(cacheKey, () -> { - //noinspection deprecation - return fromJsonSync(json, cacheKey); - }, null); - } - - /** - * Prefer passing in the json string directly. This method just calls `toString()` on your JSONObject. - * If you are loading this animation from the network, just use the response body string instead of - * parsing it first for improved performance. - */ - @Deprecated - @WorkerThread - public static LottieResult fromJsonSync(JSONObject json, @Nullable String cacheKey) { - return fromJsonStringSync(json.toString(), cacheKey); - } - - /** - * @see #fromJsonStringSync(String, String) - */ - public static LottieTask fromJsonString(final String json, @Nullable final String cacheKey) { - return cache(cacheKey, () -> fromJsonStringSync(json, cacheKey), null); - } - - /** - * Return a LottieComposition for the specified raw json string. - * If loading from a file, it is preferable to use the InputStream or rawRes version. - */ - @WorkerThread - public static LottieResult fromJsonStringSync(String json, @Nullable String cacheKey) { - ByteArrayInputStream stream = new ByteArrayInputStream(json.getBytes()); - return fromJsonReaderSync(JsonReader.of(buffer(source(stream))), cacheKey); - } - - public static LottieTask fromJsonReader(final JsonReader reader, @Nullable final String cacheKey) { - return cache(cacheKey, () -> fromJsonReaderSync(reader, cacheKey), () -> Utils.closeQuietly(reader)); - } - - @WorkerThread - public static LottieResult fromJsonReaderSync(com.airbnb.lottie.parser.moshi.JsonReader reader, @Nullable String cacheKey) { - return fromJsonReaderSync(reader, cacheKey, true); - } - - @WorkerThread - public static LottieResult fromJsonReaderSync(com.airbnb.lottie.parser.moshi.JsonReader reader, @Nullable String cacheKey, - boolean close) { - return fromJsonReaderSyncInternal(reader, cacheKey, close); - } - - private static LottieResult fromJsonReaderSyncInternal( - com.airbnb.lottie.parser.moshi.JsonReader reader, @Nullable String cacheKey, boolean close) { - try { - final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); - if (cachedComposition != null) { - return new LottieResult<>(cachedComposition); - } - LottieComposition composition = LottieCompositionMoshiParser.parse(reader); - if (cacheKey != null) { - LottieCompositionCache.getInstance().put(cacheKey, composition); - } - return new LottieResult<>(composition); - } catch (Exception e) { - return new LottieResult<>(e); - } finally { - if (close) { - closeQuietly(reader); - } - } - } - - /** - * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload - * that takes Context as the first parameter. - */ - public static LottieTask fromZipStream(final ZipInputStream inputStream, @Nullable final String cacheKey) { - return fromZipStream(null, inputStream, cacheKey); - } - - /** - * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload - * that takes Context as the first parameter. - */ - public static LottieTask fromZipStream(final ZipInputStream inputStream, @Nullable final String cacheKey, boolean close) { - return fromZipStream(null, inputStream, cacheKey, close); - } - - /** - * @see #fromZipStreamSync(Context, ZipInputStream, String) - */ - public static LottieTask fromZipStream(Context context, final ZipInputStream inputStream, @Nullable final String cacheKey) { - return cache(cacheKey, () -> fromZipStreamSync(context, inputStream, cacheKey), () -> closeQuietly(inputStream)); - } - - /** - * @see #fromZipStreamSync(Context, ZipInputStream, String) - */ - public static LottieTask fromZipStream(Context context, final ZipInputStream inputStream, - @Nullable final String cacheKey, boolean close) { - return cache(cacheKey, () -> fromZipStreamSync(context, inputStream, cacheKey), close ? () -> closeQuietly(inputStream) : null); - } - - /** - * Parses a zip input stream into a Lottie composition. - * Your zip file should just be a folder with your json file and images zipped together. - * It will automatically store and configure any images inside the animation if they exist. - *

    - * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload - * that takes Context as the first parameter. - *

    - * The ZipInputStream will be automatically closed at the end. If you would like to keep it open, use the overload - * with a close parameter and pass in false. - */ - public static LottieResult fromZipStreamSync(ZipInputStream inputStream, @Nullable String cacheKey) { - return fromZipStreamSync(inputStream, cacheKey, true); - } - - /** - * Parses a zip input stream into a Lottie composition. - * Your zip file should just be a folder with your json file and images zipped together. - * It will automatically store and configure any images inside the animation if they exist. - *

    - * In this overload, embedded fonts will NOT be parsed. If your zip file has custom fonts, use the overload - * that takes Context as the first parameter. - */ - public static LottieResult fromZipStreamSync(ZipInputStream inputStream, @Nullable String cacheKey, boolean close) { - return fromZipStreamSync(null, inputStream, cacheKey, close); - } - - /** - * Parses a zip input stream into a Lottie composition. - * Your zip file should just be a folder with your json file and images zipped together. - * It will automatically store and configure any images inside the animation if they exist. - *

    - * The ZipInputStream will be automatically closed at the end. If you would like to keep it open, use the overload - * with a close parameter and pass in false. - * - * @param context is optional and only needed if your zip file contains ttf or otf fonts. If yours doesn't, you may pass null. - * Embedded fonts may be .ttf or .otf files, can be in subdirectories, but must have the same name as the - * font family (fFamily) in your animation file. - */ - @WorkerThread - public static LottieResult fromZipStreamSync(@Nullable Context context, ZipInputStream inputStream, @Nullable String cacheKey) { - return fromZipStreamSync(context, inputStream, cacheKey, true); - } - - /** - * Parses a zip input stream into a Lottie composition. - * Your zip file should just be a folder with your json file and images zipped together. - * It will automatically store and configure any images inside the animation if they exist. - * - * @param context is optional and only needed if your zip file contains ttf or otf fonts. If yours doesn't, you may pass null. - * Embedded fonts may be .ttf or .otf files, can be in subdirectories, but must have the same name as the - * font family (fFamily) in your animation file. - */ - @WorkerThread - public static LottieResult fromZipStreamSync(@Nullable Context context, ZipInputStream inputStream, - @Nullable String cacheKey, boolean close) { - try { - return fromZipStreamSyncInternal(context, inputStream, cacheKey); - } finally { - if (close) { - closeQuietly(inputStream); - } - } - } - - @WorkerThread - private static LottieResult fromZipStreamSyncInternal(Context context, ZipInputStream inputStream, @Nullable String cacheKey) { - LottieComposition composition = null; - Map images = new HashMap<>(); - Map fonts = new HashMap<>(); - - try { - final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); - if (cachedComposition != null) { - return new LottieResult<>(cachedComposition); - } - ZipEntry entry = inputStream.getNextEntry(); - while (entry != null) { - final String entryName = entry.getName(); - if (entryName.contains("__MACOSX")) { - inputStream.closeEntry(); - } else if (entry.getName().equalsIgnoreCase("manifest.json")) { //ignore .lottie manifest - inputStream.closeEntry(); - } else if (entry.getName().contains(".json")) { - com.airbnb.lottie.parser.moshi.JsonReader reader = JsonReader.of(buffer(source(inputStream))); - composition = LottieCompositionFactory.fromJsonReaderSyncInternal(reader, null, false).getValue(); - } else if (entryName.contains(".png") || entryName.contains(".webp") || entryName.contains(".jpg") || entryName.contains(".jpeg")) { - String[] splitName = entryName.split("/"); - String name = splitName[splitName.length - 1]; - images.put(name, BitmapFactory.decodeStream(inputStream)); - } else if (entryName.contains(".ttf") || entryName.contains(".otf")) { - String[] splitName = entryName.split("/"); - String fileName = splitName[splitName.length - 1]; - String fontFamily = fileName.split("\\.")[0]; - File tempFile = new File(context.getCacheDir(), fileName); - FileOutputStream fos = new FileOutputStream(tempFile); - try { - try (OutputStream output = new FileOutputStream(tempFile)) { - byte[] buffer = new byte[4 * 1024]; - int read; - while ((read = inputStream.read(buffer)) != -1) { - output.write(buffer, 0, read); - } - output.flush(); - } - } catch (Throwable e) { - Logger.warning("Unable to save font " + fontFamily + " to the temporary file: " + fileName + ". ", e); - } - Typeface typeface = Typeface.createFromFile(tempFile); - if (!tempFile.delete()) { - Logger.warning("Failed to delete temp font file " + tempFile.getAbsolutePath() + "."); - } - fonts.put(fontFamily, typeface); - } else { - inputStream.closeEntry(); - } - - entry = inputStream.getNextEntry(); - } - } catch (IOException e) { - return new LottieResult<>(e); - } - - - if (composition == null) { - return new LottieResult<>(new IllegalArgumentException("Unable to parse composition")); - } - - for (Map.Entry e : images.entrySet()) { - LottieImageAsset imageAsset = findImageAssetForFileName(composition, e.getKey()); - if (imageAsset != null) { - imageAsset.setBitmap(Utils.resizeBitmapIfNeeded(e.getValue(), imageAsset.getWidth(), imageAsset.getHeight())); - } - } - - for (Map.Entry e : fonts.entrySet()) { - boolean found = false; - for (Font font : composition.getFonts().values()) { - if (font.getFamily().equals(e.getKey())) { - found = true; - font.setTypeface(e.getValue()); - } - } - if (!found) { - Logger.warning("Parsed font for " + e.getKey() + " however it was not found in the animation."); - } - } - - if (images.isEmpty()) { - for (Map.Entry entry : composition.getImages().entrySet()) { - LottieImageAsset asset = entry.getValue(); - if (asset == null) { - return null; - } - String filename = asset.getFileName(); - BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inScaled = true; - opts.inDensity = 160; - - if (filename.startsWith("data:") && filename.indexOf("base64,") > 0) { - // Contents look like a base64 data URI, with the format data:image/png;base64,. - byte[] data; - try { - data = Base64.decode(filename.substring(filename.indexOf(',') + 1), Base64.DEFAULT); - } catch (IllegalArgumentException e) { - Logger.warning("data URL did not have correct base64 format.", e); - return null; - } - Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opts); - bitmap = Utils.resizeBitmapIfNeeded(bitmap, asset.getWidth(), asset.getHeight()); - asset.setBitmap(bitmap); - } - } - } - - if (cacheKey != null) { - LottieCompositionCache.getInstance().put(cacheKey, composition); - } - return new LottieResult<>(composition); - } - - /** - * Check if a given InputStream points to a .zip compressed file - */ - private static Boolean isZipCompressed(BufferedSource inputSource) { - return matchesMagicBytes(inputSource, ZIP_MAGIC); - } - - /** - * Check if a given InputStream points to a .gzip compressed file - */ - private static Boolean isGzipCompressed(BufferedSource inputSource) { - return matchesMagicBytes(inputSource, GZIP_MAGIC); - } - - private static Boolean matchesMagicBytes(BufferedSource inputSource, byte[] magic) { - try { - BufferedSource peek = inputSource.peek(); - for (byte b : magic) { - if (peek.readByte() != b) { - return false; - } - } - peek.close(); - return true; - } catch (NoSuchMethodError e) { - // This happens in the Android Studio layout preview. - return false; - } catch (Exception e) { - Logger.error("Failed to check zip file header", e); - return false; - } - } - - @Nullable - private static LottieImageAsset findImageAssetForFileName(LottieComposition composition, String fileName) { - for (LottieImageAsset asset : composition.getImages().values()) { - if (asset.getFileName().equals(fileName)) { - return asset; - } - } - return null; - } - - /** - * First, check to see if there are any in-progress tasks associated with the cache key and return it if there is. - * If not, create a new task for the callable. - * Then, add the new task to the task cache and set up listeners so it gets cleared when done. - */ - private static LottieTask cache(@Nullable final String cacheKey, Callable> callable, - @Nullable Runnable onCached) { - LottieTask task = null; - final LottieComposition cachedComposition = cacheKey == null ? null : LottieCompositionCache.getInstance().get(cacheKey); - if (cachedComposition != null) { - task = new LottieTask<>(cachedComposition); - } - if (cacheKey != null && taskCache.containsKey(cacheKey)) { - task = taskCache.get(cacheKey); - } - if (task != null) { - if (onCached != null) { - onCached.run(); - } - return task; - } - - task = new LottieTask<>(callable); - if (cacheKey != null) { - AtomicBoolean resultAlreadyCalled = new AtomicBoolean(false); - task.addListener(result -> { - taskCache.remove(cacheKey); - resultAlreadyCalled.set(true); - if (taskCache.size() == 0) { - notifyTaskCacheIdleListeners(true); - } - }); - task.addFailureListener(result -> { - taskCache.remove(cacheKey); - resultAlreadyCalled.set(true); - if (taskCache.size() == 0) { - notifyTaskCacheIdleListeners(true); - } - }); - // It is technically possible for the task to finish and for the listeners to get called - // before this code runs. If this happens, the task will be put in taskCache but never removed. - // This would require this thread to be sleeping at exactly this point in the code - // for long enough for the task to finish and call the listeners. Unlikely but not impossible. - if (!resultAlreadyCalled.get()) { - taskCache.put(cacheKey, task); - if (taskCache.size() == 1) { - notifyTaskCacheIdleListeners(false); - } - } - } - return task; - } - - private static void notifyTaskCacheIdleListeners(boolean idle) { - List listeners = new ArrayList<>(taskIdleListeners); - for (int i = 0; i < listeners.size(); i++) { - listeners.get(i).onIdleChanged(idle); - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java deleted file mode 100644 index 09f5e57b..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieConfig.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.airbnb.lottie; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.airbnb.lottie.network.LottieNetworkCacheProvider; -import com.airbnb.lottie.network.LottieNetworkFetcher; - -import java.io.File; - -/** - * Class for custom library configuration. - *

    - * This should be constructed with {@link LottieConfig.Builder} - */ -public class LottieConfig { - - @Nullable final LottieNetworkFetcher networkFetcher; - @Nullable final LottieNetworkCacheProvider cacheProvider; - final boolean enableSystraceMarkers; - final boolean enableNetworkCache; - final boolean disablePathInterpolatorCache; - final AsyncUpdates defaultAsyncUpdates; - - private LottieConfig(@Nullable LottieNetworkFetcher networkFetcher, @Nullable LottieNetworkCacheProvider cacheProvider, - boolean enableSystraceMarkers, boolean enableNetworkCache, boolean disablePathInterpolatorCache, - AsyncUpdates defaultAsyncUpdates) { - this.networkFetcher = networkFetcher; - this.cacheProvider = cacheProvider; - this.enableSystraceMarkers = enableSystraceMarkers; - this.enableNetworkCache = enableNetworkCache; - this.disablePathInterpolatorCache = disablePathInterpolatorCache; - this.defaultAsyncUpdates = defaultAsyncUpdates; - } - - public static final class Builder { - - @Nullable - private LottieNetworkFetcher networkFetcher; - @Nullable - private LottieNetworkCacheProvider cacheProvider; - private boolean enableSystraceMarkers = false; - private boolean enableNetworkCache = true; - private boolean disablePathInterpolatorCache = true; - private AsyncUpdates defaultAsyncUpdates = AsyncUpdates.AUTOMATIC; - - /** - * Lottie has a default network fetching stack built on {@link java.net.HttpURLConnection}. However, if you would like to hook into your own - * network stack for performance, caching, or analytics, you may replace the internal stack with your own. - */ - @NonNull - public Builder setNetworkFetcher(@NonNull LottieNetworkFetcher fetcher) { - this.networkFetcher = fetcher; - return this; - } - - /** - * Provide your own network cache directory. By default, animations will be saved in your application's cacheDir/lottie_network_cache. - * - * @see #setNetworkCacheProvider(LottieNetworkCacheProvider) - */ - @NonNull - public Builder setNetworkCacheDir(@NonNull final File file) { - if (cacheProvider != null) { - throw new IllegalStateException("There is already a cache provider!"); - } - cacheProvider = new LottieNetworkCacheProvider() { - @Override @NonNull public File getCacheDir() { - if (!file.isDirectory()) { - throw new IllegalArgumentException("cache file must be a directory"); - } - return file; - } - }; - return this; - } - - /** - * Provide your own network cache provider. By default, animations will be saved in your application's cacheDir/lottie_network_cache. - */ - @NonNull - public Builder setNetworkCacheProvider(@NonNull final LottieNetworkCacheProvider fileCacheProvider) { - if (cacheProvider != null) { - throw new IllegalStateException("There is already a cache provider!"); - } - cacheProvider = new LottieNetworkCacheProvider() { - @NonNull @Override public File getCacheDir() { - File file = fileCacheProvider.getCacheDir(); - if (!file.isDirectory()) { - throw new IllegalArgumentException("cache file must be a directory"); - } - return file; - } - }; - return this; - } - - /** - * Enable this if you want to run systrace to debug the performance of animations. - *

    - * DO NOT leave this enabled in production. The overhead is low but non-zero. - * - * @see Systrace Docs - */ - @NonNull - public Builder setEnableSystraceMarkers(boolean enable) { - enableSystraceMarkers = enable; - return this; - } - - /** - * Disable this if you want to completely disable internal Lottie cache for retrieving network animations. - * Internal network cache is enabled by default. - */ - @NonNull - public Builder setEnableNetworkCache(boolean enable) { - enableNetworkCache = enable; - return this; - } - - /** - * When parsing animations, Lottie has a path interpolator cache. This cache allows Lottie to reuse PathInterpolators - * across an animation. This is desirable in most cases. However, when shared across screenshot tests, it can cause slight - * deviations in the rendering due to underlying approximations in the PathInterpolator. - * - * The cache is enabled by default and should probably only be disabled for screenshot tests. - */ - @NonNull - public Builder setDisablePathInterpolatorCache(boolean disable) { - disablePathInterpolatorCache = disable; - return this; - } - - /** - * Sets the default value for async updates. - * @see LottieDrawable#setAsyncUpdates(AsyncUpdates) - */ - @NonNull - public Builder setDefaultAsyncUpdates(AsyncUpdates asyncUpdates) { - defaultAsyncUpdates = asyncUpdates; - return this; - } - - @NonNull - public LottieConfig build() { - return new LottieConfig(networkFetcher, cacheProvider, enableSystraceMarkers, enableNetworkCache, disablePathInterpolatorCache, - defaultAsyncUpdates); - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java deleted file mode 100644 index 4aedd1f5..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieDrawable.java +++ /dev/null @@ -1,1827 +0,0 @@ -package com.airbnb.lottie; - -import android.animation.Animator; -import android.animation.ValueAnimator; -import android.annotation.SuppressLint; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.PixelFormat; -import android.graphics.Rect; -import android.graphics.RectF; -import android.graphics.Typeface; -import android.graphics.drawable.Animatable; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.os.Handler; -import android.os.Looper; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.widget.ImageView; - -import androidx.annotation.FloatRange; -import androidx.annotation.IntDef; -import androidx.annotation.IntRange; -import androidx.annotation.MainThread; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; -import androidx.annotation.RestrictTo; - -import com.airbnb.lottie.animation.LPaint; -import com.airbnb.lottie.manager.FontAssetManager; -import com.airbnb.lottie.manager.ImageAssetManager; -import com.airbnb.lottie.model.Font; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.Marker; -import com.airbnb.lottie.model.layer.CompositionLayer; -import com.airbnb.lottie.parser.LayerParser; -import com.airbnb.lottie.utils.Logger; -import com.airbnb.lottie.utils.LottieThreadFactory; -import com.airbnb.lottie.utils.LottieValueAnimator; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.LottieFrameInfo; -import com.airbnb.lottie.value.LottieValueCallback; -import com.airbnb.lottie.value.SimpleLottieValueCallback; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Executor; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.Semaphore; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -/** - * This can be used to show an lottie animation in any place that would normally take a drawable. - * - * @see Full Documentation - */ -@SuppressWarnings({"WeakerAccess"}) -public class LottieDrawable extends Drawable implements Drawable.Callback, Animatable { - private interface LazyCompositionTask { - void run(LottieComposition composition); - } - - /** - * Internal record keeping of the desired play state when {@link #isVisible()} transitions to or is false. - *

    - * If the animation was playing when it becomes invisible or play/pause is called on it while it is invisible, it will - * store the state and then take the appropriate action when the drawable becomes visible again. - */ - private enum OnVisibleAction { - NONE, - PLAY, - RESUME, - } - - /** - * Prior to Oreo, you could only call invalidateDrawable() from the main thread. - * This means that when async updates are enabled, we must post the invalidate call to the main thread. - * Newer devices can call invalidate directly from whatever thread asyncUpdates runs on. - */ - private static final boolean invalidateSelfOnMainThread = Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1; - - /** - * The marker to use if "reduced motion" is enabled. - * Supported marker names are case insensitive, and include: - * - reduced motion - * - reducedMotion - * - reduced_motion - * - reduced-motion - */ - private static final List ALLOWED_REDUCED_MOTION_MARKERS = Arrays.asList( - "reduced motion", - "reduced_motion", - "reduced-motion", - "reducedmotion" - ); - - private LottieComposition composition; - private final LottieValueAnimator animator = new LottieValueAnimator(); - - // Call animationsEnabled() instead of using these fields directly. - private boolean systemAnimationsEnabled = true; - private boolean ignoreSystemAnimationsDisabled = false; - - private boolean safeMode = false; - private OnVisibleAction onVisibleAction = OnVisibleAction.NONE; - - private final ArrayList lazyCompositionTasks = new ArrayList<>(); - - /** - * ImageAssetManager created automatically by Lottie for views. - */ - @Nullable - private ImageAssetManager imageAssetManager; - @Nullable - private String imageAssetsFolder; - @Nullable - private ImageAssetDelegate imageAssetDelegate; - @Nullable - private FontAssetManager fontAssetManager; - @Nullable - private Map fontMap; - /** - * Will be set if manually overridden by {@link #setDefaultFontFileExtension(String)}. - * This must be stored as a field in case it is set before the font asset delegate - * has been created. - */ - @Nullable String defaultFontFileExtension; - @Nullable - FontAssetDelegate fontAssetDelegate; - @Nullable - TextDelegate textDelegate; - private boolean enableMergePaths; - private boolean maintainOriginalImageBounds = false; - private boolean clipToCompositionBounds = true; - @Nullable - private CompositionLayer compositionLayer; - private int alpha = 255; - private boolean outlineMasksAndMattes; - private boolean isApplyingOpacityToLayersEnabled; - private boolean clipTextToBoundingBox = false; - - private RenderMode renderMode = RenderMode.AUTOMATIC; - /** - * The actual render mode derived from {@link #renderMode}. - */ - private boolean useSoftwareRendering = false; - private final Matrix renderingMatrix = new Matrix(); - private Bitmap softwareRenderingBitmap; - private Canvas softwareRenderingCanvas; - private Rect canvasClipBounds; - private RectF canvasClipBoundsRectF; - private Paint softwareRenderingPaint; - private Rect softwareRenderingSrcBoundsRect; - private Rect softwareRenderingDstBoundsRect; - private RectF softwareRenderingDstBoundsRectF; - private RectF softwareRenderingTransformedBounds; - private Matrix softwareRenderingOriginalCanvasMatrix; - private Matrix softwareRenderingOriginalCanvasMatrixInverse; - - /** - * True if the drawable has not been drawn since the last invalidateSelf. - * We can do this to prevent things like bounds from getting recalculated - * many times. - */ - private boolean isDirty = false; - - /** Use the getter so that it can fall back to {@link L#getDefaultAsyncUpdates()}. */ - @Nullable private AsyncUpdates asyncUpdates; - private final ValueAnimator.AnimatorUpdateListener progressUpdateListener = animation -> { - if (getAsyncUpdatesEnabled()) { - // Render a new frame. - // If draw is called while lastDrawnProgress is still recent enough, it will - // draw straight away and then enqueue a background setProgress immediately after draw - // finishes. - invalidateSelf(); - } else if (compositionLayer != null) { - compositionLayer.setProgress(animator.getAnimatedValueAbsolute()); - } - }; - - /** - * Ensures that setProgress and draw will never happen at the same time on different threads. - * If that were to happen, parts of the animation may be on one frame while other parts would - * be on another. - */ - private final Semaphore setProgressDrawLock = new Semaphore(1); - /** - * The executor that {@link AsyncUpdates} will be run on. - *

    - * Defaults to a core size of 0 so that when no animations are playing, there will be no - * idle cores consuming resources. - *

    - * Allows up to two active threads so that if there are many animations, they can all work in parallel. - * Two was arbitrarily chosen but should be sufficient for most uses cases. In the case of a single - * animation, this should never exceed one. - *

    - * Each thread will timeout after 35ms which gives it enough time to persist for one frame, one dropped frame - * and a few extra ms just in case. - */ - private static final Executor setProgressExecutor = new ThreadPoolExecutor(0, 2, 35, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue<>(), new LottieThreadFactory()); - private Handler mainThreadHandler; - private Runnable invalidateSelfRunnable; - - private final Runnable updateProgressRunnable = () -> { - CompositionLayer compositionLayer = this.compositionLayer; - if (compositionLayer == null) { - return; - } - try { - setProgressDrawLock.acquire(); - compositionLayer.setProgress(animator.getAnimatedValueAbsolute()); - // Refer to invalidateSelfOnMainThread for more info. - if (invalidateSelfOnMainThread && isDirty) { - if (mainThreadHandler == null) { - mainThreadHandler = new Handler(Looper.getMainLooper()); - invalidateSelfRunnable = () -> { - final Callback callback = getCallback(); - if (callback != null) { - callback.invalidateDrawable(this); - } - }; - } - mainThreadHandler.post(invalidateSelfRunnable); - } - } catch (InterruptedException e) { - // Do nothing. - } finally { - setProgressDrawLock.release(); - } - }; - private float lastDrawnProgress = -Float.MAX_VALUE; - private static final float MAX_DELTA_MS_ASYNC_SET_PROGRESS = 3 / 60f * 1000; - - @IntDef({RESTART, REVERSE}) - @Retention(RetentionPolicy.SOURCE) - public @interface RepeatMode { - } - - /** - * When the animation reaches the end and repeatCount is INFINITE - * or a positive value, the animation restarts from the beginning. - */ - public static final int RESTART = ValueAnimator.RESTART; - /** - * When the animation reaches the end and repeatCount is INFINITE - * or a positive value, the animation reverses direction on every iteration. - */ - public static final int REVERSE = ValueAnimator.REVERSE; - /** - * This value used used with the {@link #setRepeatCount(int)} property to repeat - * the animation indefinitely. - */ - public static final int INFINITE = ValueAnimator.INFINITE; - - public LottieDrawable() { - animator.addUpdateListener(progressUpdateListener); - } - - /** - * Returns whether or not any layers in this composition has masks. - */ - public boolean hasMasks() { - return compositionLayer != null && compositionLayer.hasMasks(); - } - - /** - * Returns whether or not any layers in this composition has a matte layer. - */ - public boolean hasMatte() { - return compositionLayer != null && compositionLayer.hasMatte(); - } - - public boolean enableMergePathsForKitKatAndAbove() { - return enableMergePaths; - } - - /** - * Enable this to get merge path support for devices running KitKat (19) and above. - *

    - * Merge paths currently don't work if the the operand shape is entirely contained within the - * first shape. If you need to cut out one shape from another shape, use an even-odd fill type - * instead of using merge paths. - */ - public void enableMergePathsForKitKatAndAbove(boolean enable) { - if (enableMergePaths == enable) { - return; - } - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { - Logger.warning("Merge paths are not supported pre-Kit Kat."); - return; - } - enableMergePaths = enable; - if (composition != null) { - buildCompositionLayer(); - } - } - - public boolean isMergePathsEnabledForKitKatAndAbove() { - return enableMergePaths; - } - - /** - * Sets whether or not Lottie should clip to the original animation composition bounds. - *

    - * Defaults to true. - */ - public void setClipToCompositionBounds(boolean clipToCompositionBounds) { - if (clipToCompositionBounds != this.clipToCompositionBounds) { - this.clipToCompositionBounds = clipToCompositionBounds; - CompositionLayer compositionLayer = this.compositionLayer; - if (compositionLayer != null) { - compositionLayer.setClipToCompositionBounds(clipToCompositionBounds); - } - invalidateSelf(); - } - } - - /** - * Gets whether or not Lottie should clip to the original animation composition bounds. - *

    - * Defaults to true. - */ - public boolean getClipToCompositionBounds() { - return clipToCompositionBounds; - } - - /** - * If you use image assets, you must explicitly specify the folder in assets/ in which they are - * located because bodymovin uses the name filenames across all compositions (img_#). - * Do NOT rename the images themselves. - *

    - * If your images are located in src/main/assets/airbnb_loader/ then call - * `setImageAssetsFolder("airbnb_loader/");`. - *

    - *

    - * Be wary if you are using many images, however. Lottie is designed to work with vector shapes - * from After Effects. If your images look like they could be represented with vector shapes, - * see if it is possible to convert them to shape layers and re-export your animation. Check - * the documentation at airbnb.io/lottie for more information about importing shapes from - * Sketch or Illustrator to avoid this. - */ - public void setImagesAssetsFolder(@Nullable String imageAssetsFolder) { - this.imageAssetsFolder = imageAssetsFolder; - } - - @Nullable - public String getImageAssetsFolder() { - return imageAssetsFolder; - } - - /** - * When true, dynamically set bitmaps will be drawn with the exact bounds of the original animation, regardless of the bitmap size. - * When false, dynamically set bitmaps will be drawn at the top left of the original image but with its own bounds. - *

    - * Defaults to false. - */ - public void setMaintainOriginalImageBounds(boolean maintainOriginalImageBounds) { - this.maintainOriginalImageBounds = maintainOriginalImageBounds; - } - - /** - * When true, dynamically set bitmaps will be drawn with the exact bounds of the original animation, regardless of the bitmap size. - * When false, dynamically set bitmaps will be drawn at the top left of the original image but with its own bounds. - *

    - * Defaults to false. - */ - public boolean getMaintainOriginalImageBounds() { - return maintainOriginalImageBounds; - } - - /** - * Create a composition with {@link LottieCompositionFactory} - * - * @return True if the composition is different from the previously set composition, false otherwise. - */ - public boolean setComposition(LottieComposition composition) { - if (this.composition == composition) { - return false; - } - - isDirty = true; - clearComposition(); - this.composition = composition; - buildCompositionLayer(); - animator.setComposition(composition); - setProgress(animator.getAnimatedFraction()); - - // We copy the tasks to a new ArrayList so that if this method is called from multiple threads, - // then there won't be two iterators iterating and removing at the same time. - Iterator it = new ArrayList<>(lazyCompositionTasks).iterator(); - while (it.hasNext()) { - LazyCompositionTask t = it.next(); - // The task should never be null but it appears to happen in rare cases. Maybe it's an oem-specific or ART bug. - // https://github.com/airbnb/lottie-android/issues/1702 - if (t != null) { - t.run(composition); - } - it.remove(); - } - lazyCompositionTasks.clear(); - - computeRenderMode(); - - // Ensure that ImageView updates the drawable width/height so it can - // properly calculate its drawable matrix. - Callback callback = getCallback(); - if (callback instanceof ImageView) { - ((ImageView) callback).setImageDrawable(null); - ((ImageView) callback).setImageDrawable(this); - } - - return true; - } - - /** - * Call this to set whether or not to render with hardware or software acceleration. - * Lottie defaults to Automatic which will use hardware acceleration unless: - * 1) There are dash paths and the device is pre-Pie. - * 2) There are more than 4 masks and mattes and the device is pre-Pie. - * Hardware acceleration is generally faster for those devices unless - * there are many large mattes and masks in which case there is a lot - * of GPU uploadTexture thrashing which makes it much slower. - *

    - * In most cases, hardware rendering will be faster, even if you have mattes and masks. - * However, if you have multiple mattes and masks (especially large ones), you - * should test both render modes. You should also test on pre-Pie and Pie+ devices - * because the underlying rendering engine changed significantly. - * - * @see Android Hardware Acceleration - */ - public void setRenderMode(RenderMode renderMode) { - this.renderMode = renderMode; - computeRenderMode(); - } - - /** - * Returns the current value of {@link AsyncUpdates}. Refer to the docs for {@link AsyncUpdates} for more info. - */ - public AsyncUpdates getAsyncUpdates() { - AsyncUpdates asyncUpdates = this.asyncUpdates; - if (asyncUpdates != null) { - return asyncUpdates; - } - return L.getDefaultAsyncUpdates(); - } - - /** - * Similar to {@link #getAsyncUpdates()} except it returns the actual - * boolean value for whether async updates are enabled or not. - * This is useful when the mode is automatic and you want to know - * whether automatic is defaulting to enabled or not. - */ - public boolean getAsyncUpdatesEnabled() { - return getAsyncUpdates() == AsyncUpdates.ENABLED; - } - - /** - * **Note: this API is experimental and may changed.** - *

    - * Sets the current value for {@link AsyncUpdates}. Refer to the docs for {@link AsyncUpdates} for more info. - */ - public void setAsyncUpdates(@Nullable AsyncUpdates asyncUpdates) { - this.asyncUpdates = asyncUpdates; - } - - /** - * Returns the actual render mode being used. It will always be {@link RenderMode#HARDWARE} or {@link RenderMode#SOFTWARE}. - * When the render mode is set to AUTOMATIC, the value will be derived from {@link RenderMode#useSoftwareRendering(int, boolean, int)}. - */ - public RenderMode getRenderMode() { - return useSoftwareRendering ? RenderMode.SOFTWARE : RenderMode.HARDWARE; - } - - private void computeRenderMode() { - LottieComposition composition = this.composition; - if (composition == null) { - return; - } - useSoftwareRendering = renderMode.useSoftwareRendering( - Build.VERSION.SDK_INT, composition.hasDashPattern(), composition.getMaskAndMatteCount()); - } - - /** - * Enable this to debug slow animations by outlining masks and mattes. The performance overhead of the masks and mattes will - * be proportional to the surface area of all of the masks/mattes combined. - *

    - * DO NOT leave this enabled in production. - */ - public void setOutlineMasksAndMattes(boolean outline) { - if (outlineMasksAndMattes == outline) { - return; - } - outlineMasksAndMattes = outline; - if (compositionLayer != null) { - compositionLayer.setOutlineMasksAndMattes(outline); - } - } - - /** - * Sets whether to apply opacity to the each layer instead of shape. - *

    - * Opacity is normally applied directly to a shape. In cases where translucent shapes overlap, applying opacity to a layer will be more accurate - * at the expense of performance. - *

    - * The default value is false. - *

    - * Note: This process is very expensive. The performance impact will be reduced when hardware acceleration is enabled. - * - * @see android.view.View#setLayerType(int, android.graphics.Paint) - * @see LottieAnimationView#setRenderMode(RenderMode) - */ - public void setApplyingOpacityToLayersEnabled(boolean isApplyingOpacityToLayersEnabled) { - this.isApplyingOpacityToLayersEnabled = isApplyingOpacityToLayersEnabled; - } - - /** - * This API no longer has any effect. - */ - @Deprecated - public void disableExtraScaleModeInFitXY() { - } - - public boolean isApplyingOpacityToLayersEnabled() { - return isApplyingOpacityToLayersEnabled; - } - - /** - * @see #setClipTextToBoundingBox(boolean) - */ - public boolean getClipTextToBoundingBox() { - return clipTextToBoundingBox; - } - - /** - * When true, if there is a bounding box set on a text layer (paragraph text), any text - * that overflows past its height will not be drawn. - */ - public void setClipTextToBoundingBox(boolean clipTextToBoundingBox) { - if (clipTextToBoundingBox != this.clipTextToBoundingBox) { - this.clipTextToBoundingBox = clipTextToBoundingBox; - invalidateSelf(); - } - } - - private void buildCompositionLayer() { - LottieComposition composition = this.composition; - if (composition == null) { - return; - } - compositionLayer = new CompositionLayer( - this, LayerParser.parse(composition), composition.getLayers(), composition); - if (outlineMasksAndMattes) { - compositionLayer.setOutlineMasksAndMattes(true); - } - compositionLayer.setClipToCompositionBounds(clipToCompositionBounds); - } - - public void clearComposition() { - if (animator.isRunning()) { - animator.cancel(); - if (!isVisible()) { - onVisibleAction = OnVisibleAction.NONE; - } - } - composition = null; - compositionLayer = null; - imageAssetManager = null; - lastDrawnProgress = -Float.MAX_VALUE; - animator.clearComposition(); - invalidateSelf(); - } - - /** - * If you are experiencing a device specific crash that happens during drawing, you can set this to true - * for those devices. If set to true, draw will be wrapped with a try/catch which will cause Lottie to - * render an empty frame rather than crash your app. - *

    - * Ideally, you will never need this and the vast majority of apps and animations won't. However, you may use - * this for very specific cases if absolutely necessary. - */ - public void setSafeMode(boolean safeMode) { - this.safeMode = safeMode; - } - - @Override - public void invalidateSelf() { - if (isDirty) { - return; - } - isDirty = true; - - // Refer to invalidateSelfOnMainThread for more info. - if (invalidateSelfOnMainThread && Looper.getMainLooper() != Looper.myLooper()) { - return; - } - final Callback callback = getCallback(); - if (callback != null) { - callback.invalidateDrawable(this); - } - } - - @Override - public void setAlpha(@IntRange(from = 0, to = 255) int alpha) { - this.alpha = alpha; - invalidateSelf(); - } - - @Override - public int getAlpha() { - return alpha; - } - - @Override - public void setColorFilter(@Nullable ColorFilter colorFilter) { - Logger.warning("Use addColorFilter instead."); - } - - @Override - public int getOpacity() { - return PixelFormat.TRANSLUCENT; - } - - /** - * Helper for the async execution path to potentially call setProgress - * before drawing if the current progress has drifted sufficiently far - * from the last set progress. - * - * @see AsyncUpdates - * @see #setAsyncUpdates(AsyncUpdates) - */ - private boolean shouldSetProgressBeforeDrawing() { - LottieComposition composition = this.composition; - if (composition == null) { - return false; - } - float lastDrawnProgress = this.lastDrawnProgress; - float currentProgress = animator.getAnimatedValueAbsolute(); - this.lastDrawnProgress = currentProgress; - - float duration = composition.getDuration(); - - float deltaProgress = Math.abs(currentProgress - lastDrawnProgress); - float deltaMs = deltaProgress * duration; - return deltaMs >= MAX_DELTA_MS_ASYNC_SET_PROGRESS; - } - - @Override - public void draw(@NonNull Canvas canvas) { - CompositionLayer compositionLayer = this.compositionLayer; - if (compositionLayer == null) { - return; - } - boolean asyncUpdatesEnabled = getAsyncUpdatesEnabled(); - try { - if (asyncUpdatesEnabled) { - setProgressDrawLock.acquire(); - } - if (L.isTraceEnabled()) { - L.beginSection("Drawable#draw"); - } - - if (asyncUpdatesEnabled && shouldSetProgressBeforeDrawing()) { - setProgress(animator.getAnimatedValueAbsolute()); - } - - if (safeMode) { - try { - if (useSoftwareRendering) { - renderAndDrawAsBitmap(canvas, compositionLayer); - } else { - drawDirectlyToCanvas(canvas); - } - } catch (Throwable e) { - Logger.error("Lottie crashed in draw!", e); - } - } else { - if (useSoftwareRendering) { - renderAndDrawAsBitmap(canvas, compositionLayer); - } else { - drawDirectlyToCanvas(canvas); - } - } - - isDirty = false; - } catch (InterruptedException e) { - // Do nothing. - } finally { - if (L.isTraceEnabled()) { - L.endSection("Drawable#draw"); - } - if (asyncUpdatesEnabled) { - setProgressDrawLock.release(); - if (compositionLayer.getProgress() != animator.getAnimatedValueAbsolute()) { - setProgressExecutor.execute(updateProgressRunnable); - } - } - } - } - - /** - * To be used by lottie-compose only. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) - public void draw(Canvas canvas, Matrix matrix) { - CompositionLayer compositionLayer = this.compositionLayer; - LottieComposition composition = this.composition; - if (compositionLayer == null || composition == null) { - return; - } - boolean asyncUpdatesEnabled = getAsyncUpdatesEnabled(); - try { - if (asyncUpdatesEnabled) { - setProgressDrawLock.acquire(); - if (shouldSetProgressBeforeDrawing()) { - setProgress(animator.getAnimatedValueAbsolute()); - } - } - - if (useSoftwareRendering) { - canvas.save(); - canvas.concat(matrix); - renderAndDrawAsBitmap(canvas, compositionLayer); - canvas.restore(); - } else { - compositionLayer.draw(canvas, matrix, alpha); - } - isDirty = false; - } catch (InterruptedException e) { - // Do nothing. - } finally { - if (asyncUpdatesEnabled) { - setProgressDrawLock.release(); - if (compositionLayer.getProgress() != animator.getAnimatedValueAbsolute()) { - setProgressExecutor.execute(updateProgressRunnable); - } - } - } - } - - // - - @MainThread - @Override - public void start() { - Callback callback = getCallback(); - if (callback instanceof View && ((View) callback).isInEditMode()) { - // Don't auto play when in edit mode. - return; - } - playAnimation(); - } - - @MainThread - @Override - public void stop() { - endAnimation(); - } - - @Override - public boolean isRunning() { - return isAnimating(); - } - - /** - * Plays the animation from the beginning. If speed is {@literal <} 0, it will start at the end - * and play towards the beginning - */ - @MainThread - public void playAnimation() { - if (compositionLayer == null) { - lazyCompositionTasks.add(c -> playAnimation()); - return; - } - - computeRenderMode(); - if (animationsEnabled() || getRepeatCount() == 0) { - if (isVisible()) { - animator.playAnimation(); - onVisibleAction = OnVisibleAction.NONE; - } else { - onVisibleAction = OnVisibleAction.PLAY; - } - } - if (!animationsEnabled()) { - Marker markerForAnimationsDisabled = getMarkerForAnimationsDisabled(); - if (markerForAnimationsDisabled != null) { - setFrame((int) markerForAnimationsDisabled.startFrame); - } else { - setFrame((int) (getSpeed() < 0 ? getMinFrame() : getMaxFrame())); - } - animator.endAnimation(); - if (!isVisible()) { - onVisibleAction = OnVisibleAction.NONE; - } - } - } - - - /** - * This method is used to get the marker for animations when system animations are disabled. - * It iterates over the list of allowed reduced motion markers and returns the first non-null marker it finds. - * If no non-null marker is found, it returns null. - * - * @return The first non-null marker from the list of allowed reduced motion markers, or null if no such marker is found. - */ - private Marker getMarkerForAnimationsDisabled() { - Marker marker = null; - for (String markerName : ALLOWED_REDUCED_MOTION_MARKERS) { - marker = composition.getMarker(markerName); - if (marker != null) { - break; - } - } - return marker; - } - - @MainThread - public void endAnimation() { - lazyCompositionTasks.clear(); - animator.endAnimation(); - if (!isVisible()) { - onVisibleAction = OnVisibleAction.NONE; - } - } - - /** - * Continues playing the animation from its current position. If speed {@literal <} 0, it will play backwards - * from the current position. - */ - @MainThread - public void resumeAnimation() { - if (compositionLayer == null) { - lazyCompositionTasks.add(c -> resumeAnimation()); - return; - } - - computeRenderMode(); - if (animationsEnabled() || getRepeatCount() == 0) { - if (isVisible()) { - animator.resumeAnimation(); - onVisibleAction = OnVisibleAction.NONE; - } else { - onVisibleAction = OnVisibleAction.RESUME; - } - } - if (!animationsEnabled()) { - setFrame((int) (getSpeed() < 0 ? getMinFrame() : getMaxFrame())); - animator.endAnimation(); - if (!isVisible()) { - onVisibleAction = OnVisibleAction.NONE; - } - } - } - - /** - * Sets the minimum frame that the animation will start from when playing or looping. - */ - public void setMinFrame(final int minFrame) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMinFrame(minFrame)); - return; - } - animator.setMinFrame(minFrame); - } - - /** - * Returns the minimum frame set by {@link #setMinFrame(int)} or {@link #setMinProgress(float)} - */ - public float getMinFrame() { - return animator.getMinFrame(); - } - - /** - * Sets the minimum progress that the animation will start from when playing or looping. - */ - public void setMinProgress(final float minProgress) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMinProgress(minProgress)); - return; - } - setMinFrame((int) MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), minProgress)); - } - - /** - * Sets the maximum frame that the animation will end at when playing or looping. - *

    - * The value will be clamped to the composition bounds. For example, setting Integer.MAX_VALUE would result in the same - * thing as composition.endFrame. - */ - public void setMaxFrame(final int maxFrame) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMaxFrame(maxFrame)); - return; - } - animator.setMaxFrame(maxFrame + 0.99f); - } - - /** - * Returns the maximum frame set by {@link #setMaxFrame(int)} or {@link #setMaxProgress(float)} - */ - public float getMaxFrame() { - return animator.getMaxFrame(); - } - - /** - * Sets the maximum progress that the animation will end at when playing or looping. - */ - public void setMaxProgress(@FloatRange(from = 0f, to = 1f) final float maxProgress) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMaxProgress(maxProgress)); - return; - } - animator.setMaxFrame(MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), maxProgress)); - } - - /** - * Sets the minimum frame to the start time of the specified marker. - * - * @throws IllegalArgumentException if the marker is not found. - */ - public void setMinFrame(final String markerName) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMinFrame(markerName)); - return; - } - Marker marker = composition.getMarker(markerName); - if (marker == null) { - throw new IllegalArgumentException("Cannot find marker with name " + markerName + "."); - } - setMinFrame((int) marker.startFrame); - } - - /** - * Sets the maximum frame to the start time + duration of the specified marker. - * - * @throws IllegalArgumentException if the marker is not found. - */ - public void setMaxFrame(final String markerName) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMaxFrame(markerName)); - return; - } - Marker marker = composition.getMarker(markerName); - if (marker == null) { - throw new IllegalArgumentException("Cannot find marker with name " + markerName + "."); - } - setMaxFrame((int) (marker.startFrame + marker.durationFrames)); - } - - /** - * Sets the minimum and maximum frame to the start time and start time + duration - * of the specified marker. - * - * @throws IllegalArgumentException if the marker is not found. - */ - public void setMinAndMaxFrame(final String markerName) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMinAndMaxFrame(markerName)); - return; - } - Marker marker = composition.getMarker(markerName); - if (marker == null) { - throw new IllegalArgumentException("Cannot find marker with name " + markerName + "."); - } - int startFrame = (int) marker.startFrame; - setMinAndMaxFrame(startFrame, startFrame + (int) marker.durationFrames); - } - - /** - * Sets the minimum and maximum frame to the start marker start and the maximum frame to the end marker start. - * playEndMarkerStartFrame determines whether or not to play the frame that the end marker is on. If the end marker - * represents the end of the section that you want, it should be true. If the marker represents the beginning of the - * next section, it should be false. - * - * @throws IllegalArgumentException if either marker is not found. - */ - public void setMinAndMaxFrame(final String startMarkerName, final String endMarkerName, final boolean playEndMarkerStartFrame) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMinAndMaxFrame(startMarkerName, endMarkerName, playEndMarkerStartFrame)); - return; - } - Marker startMarker = composition.getMarker(startMarkerName); - if (startMarker == null) { - throw new IllegalArgumentException("Cannot find marker with name " + startMarkerName + "."); - } - int startFrame = (int) startMarker.startFrame; - - final Marker endMarker = composition.getMarker(endMarkerName); - if (endMarker == null) { - throw new IllegalArgumentException("Cannot find marker with name " + endMarkerName + "."); - } - int endFrame = (int) (endMarker.startFrame + (playEndMarkerStartFrame ? 1f : 0f)); - - setMinAndMaxFrame(startFrame, endFrame); - } - - /** - * @see #setMinFrame(int) - * @see #setMaxFrame(int) - */ - public void setMinAndMaxFrame(final int minFrame, final int maxFrame) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMinAndMaxFrame(minFrame, maxFrame)); - return; - } - // Adding 0.99 ensures that the maxFrame itself gets played. - animator.setMinAndMaxFrames(minFrame, maxFrame + 0.99f); - } - - /** - * @see #setMinProgress(float) - * @see #setMaxProgress(float) - */ - public void setMinAndMaxProgress( - @FloatRange(from = 0f, to = 1f) final float minProgress, - @FloatRange(from = 0f, to = 1f) final float maxProgress) { - if (composition == null) { - lazyCompositionTasks.add(c -> setMinAndMaxProgress(minProgress, maxProgress)); - return; - } - - setMinAndMaxFrame((int) MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), minProgress), - (int) MiscUtils.lerp(composition.getStartFrame(), composition.getEndFrame(), maxProgress)); - } - - /** - * Reverses the current animation speed. This does NOT play the animation. - * - * @see #setSpeed(float) - * @see #playAnimation() - * @see #resumeAnimation() - */ - public void reverseAnimationSpeed() { - animator.reverseAnimationSpeed(); - } - - /** - * Sets the playback speed. If speed {@literal <} 0, the animation will play backwards. - */ - public void setSpeed(float speed) { - animator.speed = speed; - } - - /** - * Returns the current playback speed. This will be {@literal <} 0 if the animation is playing backwards. - */ - public float getSpeed() { - return animator.speed; - } - - public void addAnimatorUpdateListener(ValueAnimator.AnimatorUpdateListener updateListener) { - animator.addUpdateListener(updateListener); - } - - public void removeAnimatorUpdateListener(ValueAnimator.AnimatorUpdateListener updateListener) { - animator.removeUpdateListener(updateListener); - } - - public void removeAllUpdateListeners() { - animator.removeAllUpdateListeners(); - animator.addUpdateListener(progressUpdateListener); - } - - public void addAnimatorListener(Animator.AnimatorListener listener) { - animator.addListener(listener); - } - - public void removeAnimatorListener(Animator.AnimatorListener listener) { - animator.removeListener(listener); - } - - public void removeAllAnimatorListeners() { - animator.removeAllListeners(); - } - - @RequiresApi(api = Build.VERSION_CODES.KITKAT) - public void addAnimatorPauseListener(Animator.AnimatorPauseListener listener) { - animator.addPauseListener(listener); - } - - @RequiresApi(api = Build.VERSION_CODES.KITKAT) - public void removeAnimatorPauseListener(Animator.AnimatorPauseListener listener) { - animator.removePauseListener(listener); - } - - /** - * Sets the progress to the specified frame. - * If the composition isn't set yet, the progress will be set to the frame when - * it is. - */ - public void setFrame(final int frame) { - if (composition == null) { - lazyCompositionTasks.add(c -> setFrame(frame)); - return; - } - - animator.setFrame(frame); - } - - /** - * Get the currently rendered frame. - */ - public int getFrame() { - return (int) animator.getFrame(); - } - - public void setProgress(@FloatRange(from = 0f, to = 1f) final float progress) { - if (composition == null) { - lazyCompositionTasks.add(c -> setProgress(progress)); - return; - } - if (L.isTraceEnabled()) { - L.beginSection("Drawable#setProgress"); - } - animator.setFrame(composition.getFrameForProgress(progress)); - if (L.isTraceEnabled()) { - L.endSection("Drawable#setProgress"); - } - } - - /** - * @see #setRepeatCount(int) - */ - @Deprecated - public void loop(boolean loop) { - animator.setRepeatCount(loop ? ValueAnimator.INFINITE : 0); - } - - /** - * Defines what this animation should do when it reaches the end. This - * setting is applied only when the repeat count is either greater than - * 0 or {@link #INFINITE}. Defaults to {@link #RESTART}. - * - * @param mode {@link #RESTART} or {@link #REVERSE} - */ - public void setRepeatMode(@RepeatMode int mode) { - animator.setRepeatMode(mode); - } - - /** - * Defines what this animation should do when it reaches the end. - * - * @return either one of {@link #REVERSE} or {@link #RESTART} - */ - @SuppressLint("WrongConstant") - @RepeatMode - public int getRepeatMode() { - return animator.getRepeatMode(); - } - - /** - * Sets how many times the animation should be repeated. If the repeat - * count is 0, the animation is never repeated. If the repeat count is - * greater than 0 or {@link #INFINITE}, the repeat mode will be taken - * into account. The repeat count is 0 by default. - * - * @param count the number of times the animation should be repeated - */ - public void setRepeatCount(int count) { - animator.setRepeatCount(count); - } - - /** - * Defines how many times the animation should repeat. The default value - * is 0. - * - * @return the number of times the animation should repeat, or {@link #INFINITE} - */ - public int getRepeatCount() { - return animator.getRepeatCount(); - } - - - @SuppressWarnings("unused") - public boolean isLooping() { - return animator.getRepeatCount() == ValueAnimator.INFINITE; - } - - public boolean isAnimating() { - // On some versions of Android, this is called from the LottieAnimationView constructor, before animator was created. - // https://github.com/airbnb/lottie-android/issues/1430 - //noinspection ConstantConditions - if (animator == null) { - return false; - } - return animator.isRunning(); - } - - boolean isAnimatingOrWillAnimateOnVisible() { - if (isVisible()) { - return animator.isRunning(); - } else { - return onVisibleAction == OnVisibleAction.PLAY || onVisibleAction == OnVisibleAction.RESUME; - } - } - - private boolean animationsEnabled() { - return systemAnimationsEnabled || ignoreSystemAnimationsDisabled; - } - - /** - * Tell Lottie that system animations are disabled. When using {@link LottieAnimationView} or Compose {@code LottieAnimation}, this is done - * automatically. However, if you are using LottieDrawable on its own, you should set this to false when - * {@link com.airbnb.lottie.utils.Utils#getAnimationScale(Context)} is 0. If the animation is provided a "reduced motion" - * marker name, they will be shown instead of the first or last frame. Supported marker names are case insensitive, and include: - * - reduced motion - * - reducedMotion - * - reduced_motion - * - reduced-motion - */ - public void setSystemAnimationsAreEnabled(Boolean areEnabled) { - systemAnimationsEnabled = areEnabled; - } - -// - - /** - * Allows ignoring system animations settings, therefore allowing animations to run even if they are disabled. - *

    - * Defaults to false. - * - * @param ignore if true animations will run even when they are disabled in the system settings. - */ - public void setIgnoreDisabledSystemAnimations(boolean ignore) { - ignoreSystemAnimationsDisabled = ignore; - } - - /** - * Lottie files can specify a target frame rate. By default, Lottie ignores it and re-renders - * on every frame. If that behavior is undesirable, you can set this to true to use the composition - * frame rate instead. - *

    - * Note: composition frame rates are usually lower than display frame rates - * so this will likely make your animation feel janky. However, it may be desirable - * for specific situations such as pixel art that are intended to have low frame rates. - */ - public void setUseCompositionFrameRate(boolean useCompositionFrameRate) { - animator.setUseCompositionFrameRate(useCompositionFrameRate); - } - - /** - * Use this if you can't bundle images with your app. This may be useful if you download the - * animations from the network or have the images saved to an SD Card. In that case, Lottie - * will defer the loading of the bitmap to this delegate. - *

    - * Be wary if you are using many images, however. Lottie is designed to work with vector shapes - * from After Effects. If your images look like they could be represented with vector shapes, - * see if it is possible to convert them to shape layers and re-export your animation. Check - * the documentation at http://airbnb.io/lottie for more information about importing shapes from - * Sketch or Illustrator to avoid this. - */ - public void setImageAssetDelegate(ImageAssetDelegate assetDelegate) { - this.imageAssetDelegate = assetDelegate; - if (imageAssetManager != null) { - imageAssetManager.setDelegate(assetDelegate); - } - } - - /** - * Use this to manually set fonts. - */ - public void setFontAssetDelegate(FontAssetDelegate assetDelegate) { - this.fontAssetDelegate = assetDelegate; - if (fontAssetManager != null) { - fontAssetManager.setDelegate(assetDelegate); - } - } - - /** - * Set a map from font name keys to Typefaces. - * The keys can be in the form: - * * fontFamily - * * fontFamily-fontStyle - * * fontName - * All 3 are defined as fName, fFamily, and fStyle in the Lottie file. - *

    - * If you change a value in fontMap, create a new map or call - * {@link #invalidateSelf()}. Setting the same map again will noop. - */ - public void setFontMap(@Nullable Map fontMap) { - if (fontMap == this.fontMap) { - return; - } - this.fontMap = fontMap; - invalidateSelf(); - } - - public void setTextDelegate(@SuppressWarnings("NullableProblems") TextDelegate textDelegate) { - this.textDelegate = textDelegate; - } - - @Nullable - public TextDelegate getTextDelegate() { - return textDelegate; - } - - public boolean useTextGlyphs() { - return fontMap == null && textDelegate == null && composition.getCharacters().size() > 0; - } - - public LottieComposition getComposition() { - return composition; - } - - public void cancelAnimation() { - lazyCompositionTasks.clear(); - animator.cancel(); - if (!isVisible()) { - onVisibleAction = OnVisibleAction.NONE; - } - } - - public void pauseAnimation() { - lazyCompositionTasks.clear(); - animator.pauseAnimation(); - if (!isVisible()) { - onVisibleAction = OnVisibleAction.NONE; - } - } - - @FloatRange(from = 0f, to = 1f) - public float getProgress() { - return animator.getAnimatedValueAbsolute(); - } - - @Override - public int getIntrinsicWidth() { - return composition == null ? -1 : composition.getBounds().width(); - } - - @Override - public int getIntrinsicHeight() { - return composition == null ? -1 : composition.getBounds().height(); - } - - /** - * Takes a {@link KeyPath}, potentially with wildcards or globstars and resolve it to a list of - * zero or more actual {@link KeyPath Keypaths} that exist in the current animation. - *

    - * If you want to set value callbacks for any of these values, it is recommend to use the - * returned {@link KeyPath} objects because they will be internally resolved to their content - * and won't trigger a tree walk of the animation contents when applied. - */ - public List resolveKeyPath(KeyPath keyPath) { - if (compositionLayer == null) { - Logger.warning("Cannot resolve KeyPath. Composition is not set yet."); - return Collections.emptyList(); - } - List keyPaths = new ArrayList<>(); - compositionLayer.resolveKeyPath(keyPath, 0, keyPaths, new KeyPath()); - return keyPaths; - } - - /** - * Add an property callback for the specified {@link KeyPath}. This {@link KeyPath} can resolve - * to multiple contents. In that case, the callback's value will apply to all of them. - *

    - * Internally, this will check if the {@link KeyPath} has already been resolved with - * {@link #resolveKeyPath(KeyPath)} and will resolve it if it hasn't. - *

    - * Set the callback to null to clear it. - */ - public void addValueCallback( - final KeyPath keyPath, final T property, @Nullable final LottieValueCallback callback) { - if (compositionLayer == null) { - lazyCompositionTasks.add(c -> addValueCallback(keyPath, property, callback)); - return; - } - boolean invalidate; - if (keyPath == KeyPath.COMPOSITION) { - compositionLayer.addValueCallback(property, callback); - invalidate = true; - } else if (keyPath.getResolvedElement() != null) { - keyPath.getResolvedElement().addValueCallback(property, callback); - invalidate = true; - } else { - List elements = resolveKeyPath(keyPath); - - for (int i = 0; i < elements.size(); i++) { - //noinspection ConstantConditions - elements.get(i).getResolvedElement().addValueCallback(property, callback); - } - invalidate = !elements.isEmpty(); - } - if (invalidate) { - invalidateSelf(); - if (property == LottieProperty.TIME_REMAP) { - // Time remapping values are read in setProgress. In order for the new value - // to apply, we have to re-set the progress with the current progress so that the - // time remapping can be reapplied. - setProgress(getProgress()); - } - } - } - - /** - * Overload of {@link #addValueCallback(KeyPath, Object, LottieValueCallback)} that takes an interface. This allows you to use a single abstract - * method code block in Kotlin such as: - * drawable.addValueCallback(yourKeyPath, LottieProperty.COLOR) { yourColor } - */ - public void addValueCallback(KeyPath keyPath, T property, - final SimpleLottieValueCallback callback) { - addValueCallback(keyPath, property, new LottieValueCallback() { - @Override - public T getValue(LottieFrameInfo frameInfo) { - return callback.getValue(frameInfo); - } - }); - } - - - /** - * Allows you to modify or clear a bitmap that was loaded for an image either automatically - * through {@link #setImagesAssetsFolder(String)} or with an {@link ImageAssetDelegate}. - * - * @return the previous Bitmap or null. - */ - @Nullable - public Bitmap updateBitmap(String id, @Nullable Bitmap bitmap) { - ImageAssetManager bm = getImageAssetManager(); - if (bm == null) { - Logger.warning("Cannot update bitmap. Most likely the drawable is not added to a View " + - "which prevents Lottie from getting a Context."); - return null; - } - Bitmap ret = bm.updateBitmap(id, bitmap); - invalidateSelf(); - return ret; - } - - /** - * @deprecated use {@link #getBitmapForId(String)}. - */ - @Nullable - @Deprecated - public Bitmap getImageAsset(String id) { - ImageAssetManager bm = getImageAssetManager(); - if (bm != null) { - return bm.bitmapForId(id); - } - LottieImageAsset imageAsset = composition == null ? null : composition.getImages().get(id); - if (imageAsset != null) { - return imageAsset.getBitmap(); - } - return null; - } - - /** - * Returns the bitmap that will be rendered for the given id in the Lottie animation file. - * The id is the asset reference id stored in the "id" property of each object in the "assets" array. - *

    - * The returned bitmap could be from: - * * Embedded in the animation file as a base64 string. - * * In the same directory as the animation file. - * * In the same zip file as the animation file. - * * Returned from an {@link ImageAssetDelegate}. - * or null if the image doesn't exist from any of those places. - */ - @Nullable - public Bitmap getBitmapForId(String id) { - ImageAssetManager assetManager = getImageAssetManager(); - if (assetManager != null) { - return assetManager.bitmapForId(id); - } - return null; - } - - /** - * Returns the {@link LottieImageAsset} that will be rendered for the given id in the Lottie animation file. - * The id is the asset reference id stored in the "id" property of each object in the "assets" array. - *

    - * The returned bitmap could be from: - * * Embedded in the animation file as a base64 string. - * * In the same directory as the animation file. - * * In the same zip file as the animation file. - * * Returned from an {@link ImageAssetDelegate}. - * or null if the image doesn't exist from any of those places. - */ - @Nullable - public LottieImageAsset getLottieImageAssetForId(String id) { - LottieComposition composition = this.composition; - if (composition == null) { - return null; - } - return composition.getImages().get(id); - } - - private ImageAssetManager getImageAssetManager() { - if (imageAssetManager != null && !imageAssetManager.hasSameContext(getContext())) { - imageAssetManager = null; - } - - if (imageAssetManager == null) { - imageAssetManager = new ImageAssetManager(getCallback(), - imageAssetsFolder, imageAssetDelegate, composition.getImages()); - } - - return imageAssetManager; - } - - @Nullable - @RestrictTo(RestrictTo.Scope.LIBRARY) - public Typeface getTypeface(Font font) { - Map fontMap = this.fontMap; - if (fontMap != null) { - String key = font.getFamily(); - if (fontMap.containsKey(key)) { - return fontMap.get(key); - } - key = font.getName(); - if (fontMap.containsKey(key)) { - return fontMap.get(key); - } - key = font.getFamily() + "-" + font.getStyle(); - if (fontMap.containsKey(key)) { - return fontMap.get(key); - } - } - - FontAssetManager assetManager = getFontAssetManager(); - if (assetManager != null) { - return assetManager.getTypeface(font); - } - return null; - } - - private FontAssetManager getFontAssetManager() { - if (getCallback() == null) { - // We can't get a bitmap since we can't get a Context from the callback. - return null; - } - - if (fontAssetManager == null) { - fontAssetManager = new FontAssetManager(getCallback(), fontAssetDelegate); - String defaultExtension = this.defaultFontFileExtension; - if (defaultExtension != null) { - fontAssetManager.setDefaultFontFileExtension(defaultFontFileExtension); - } - } - - return fontAssetManager; - } - - /** - * By default, Lottie will look in src/assets/fonts/FONT_NAME.ttf - * where FONT_NAME is the fFamily specified in your Lottie file. - * If your fonts have a different extension, you can override the - * default here. - *

    - * Alternatively, you can use {@link #setFontAssetDelegate(FontAssetDelegate)} - * for more control. - * - * @see #setFontAssetDelegate(FontAssetDelegate) - */ - public void setDefaultFontFileExtension(String extension) { - defaultFontFileExtension = extension; - FontAssetManager fam = getFontAssetManager(); - if (fam != null) { - fam.setDefaultFontFileExtension(extension); - } - } - - @Nullable - private Context getContext() { - Callback callback = getCallback(); - if (callback == null) { - return null; - } - - if (callback instanceof View) { - return ((View) callback).getContext(); - } - return null; - } - - @Override public boolean setVisible(boolean visible, boolean restart) { - // Sometimes, setVisible(false) gets called twice in a row. If we don't check wasNotVisibleAlready, we could - // wind up clearing the onVisibleAction value for the second call. - boolean wasNotVisibleAlready = !isVisible(); - boolean ret = super.setVisible(visible, restart); - - if (visible) { - if (onVisibleAction == OnVisibleAction.PLAY) { - playAnimation(); - } else if (onVisibleAction == OnVisibleAction.RESUME) { - resumeAnimation(); - } - } else { - if (animator.isRunning()) { - pauseAnimation(); - onVisibleAction = OnVisibleAction.RESUME; - } else if (!wasNotVisibleAlready) { - onVisibleAction = OnVisibleAction.NONE; - } - } - return ret; - } - - /** - * These Drawable.Callback methods proxy the calls so that this is the drawable that is - * actually invalidated, not a child one which will not pass the view's validateDrawable check. - */ - @Override - public void invalidateDrawable(@NonNull Drawable who) { - Callback callback = getCallback(); - if (callback == null) { - return; - } - callback.invalidateDrawable(this); - } - - @Override - public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) { - Callback callback = getCallback(); - if (callback == null) { - return; - } - callback.scheduleDrawable(this, what, when); - } - - @Override - public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) { - Callback callback = getCallback(); - if (callback == null) { - return; - } - callback.unscheduleDrawable(this, what); - } - - /** - * Hardware accelerated render path. - */ - private void drawDirectlyToCanvas(Canvas canvas) { - CompositionLayer compositionLayer = this.compositionLayer; - LottieComposition composition = this.composition; - if (compositionLayer == null || composition == null) { - return; - } - - renderingMatrix.reset(); - Rect bounds = getBounds(); - if (!bounds.isEmpty()) { - // In fitXY mode, the scale doesn't take effect. - float scaleX = bounds.width() / (float) composition.getBounds().width(); - float scaleY = bounds.height() / (float) composition.getBounds().height(); - - renderingMatrix.preScale(scaleX, scaleY); - renderingMatrix.preTranslate(bounds.left, bounds.top); - } - compositionLayer.draw(canvas, renderingMatrix, alpha); - } - - /** - * Software accelerated render path. - *

    - * This draws the animation to an internally managed bitmap and then draws the bitmap to the original canvas. - * - * @see LottieAnimationView#setRenderMode(RenderMode) - */ - private void renderAndDrawAsBitmap(Canvas originalCanvas, CompositionLayer compositionLayer) { - if (composition == null || compositionLayer == null) { - return; - } - ensureSoftwareRenderingObjectsInitialized(); - - //noinspection deprecation - originalCanvas.getMatrix(softwareRenderingOriginalCanvasMatrix); - - // Get the canvas clip bounds and map it to the coordinate space of canvas with it's current transform. - originalCanvas.getClipBounds(canvasClipBounds); - convertRect(canvasClipBounds, canvasClipBoundsRectF); - softwareRenderingOriginalCanvasMatrix.mapRect(canvasClipBoundsRectF); - convertRect(canvasClipBoundsRectF, canvasClipBounds); - - if (clipToCompositionBounds) { - // Start with the intrinsic bounds. This will later be unioned with the clip bounds to find the - // smallest possible render area. - softwareRenderingTransformedBounds.set(0f, 0f, getIntrinsicWidth(), getIntrinsicHeight()); - } else { - // Calculate the full bounds of the animation. - compositionLayer.getBounds(softwareRenderingTransformedBounds, null, false); - } - // Transform the animation bounds to the bounds that they will render to on the canvas. - softwareRenderingOriginalCanvasMatrix.mapRect(softwareRenderingTransformedBounds); - - // The bounds are usually intrinsicWidth x intrinsicHeight. If they are different, an external source is scaling this drawable. - // This is how ImageView.ScaleType.FIT_XY works. - Rect bounds = getBounds(); - float scaleX = bounds.width() / (float) getIntrinsicWidth(); - float scaleY = bounds.height() / (float) getIntrinsicHeight(); - scaleRect(softwareRenderingTransformedBounds, scaleX, scaleY); - - if (!ignoreCanvasClipBounds()) { - softwareRenderingTransformedBounds.intersect(canvasClipBounds.left, canvasClipBounds.top, canvasClipBounds.right, canvasClipBounds.bottom); - } - - int renderWidth = (int) Math.ceil(softwareRenderingTransformedBounds.width()); - int renderHeight = (int) Math.ceil(softwareRenderingTransformedBounds.height()); - - if (renderWidth <= 0 || renderHeight <= 0) { - return; - } - - ensureSoftwareRenderingBitmap(renderWidth, renderHeight); - - if (isDirty) { - renderingMatrix.set(softwareRenderingOriginalCanvasMatrix); - renderingMatrix.preScale(scaleX, scaleY); - // We want to render the smallest bitmap possible. If the animation doesn't start at the top left, we translate the canvas and shrink the - // bitmap to avoid allocating and copying the empty space on the left and top. renderWidth and renderHeight take this into account. - renderingMatrix.postTranslate(-softwareRenderingTransformedBounds.left, -softwareRenderingTransformedBounds.top); - - softwareRenderingBitmap.eraseColor(0); - compositionLayer.draw(softwareRenderingCanvas, renderingMatrix, alpha); - - // Calculate the dst bounds. - // We need to map the rendered coordinates back to the canvas's coordinates. To do so, we need to invert the transform - // of the original canvas. - // Take the bounds of the rendered animation and map them to the canvas's coordinates. - // This is similar to the src rect above but the src bound may have a left and top offset. - softwareRenderingOriginalCanvasMatrix.invert(softwareRenderingOriginalCanvasMatrixInverse); - softwareRenderingOriginalCanvasMatrixInverse.mapRect(softwareRenderingDstBoundsRectF, softwareRenderingTransformedBounds); - convertRect(softwareRenderingDstBoundsRectF, softwareRenderingDstBoundsRect); - } - - softwareRenderingSrcBoundsRect.set(0, 0, renderWidth, renderHeight); - originalCanvas.drawBitmap(softwareRenderingBitmap, softwareRenderingSrcBoundsRect, softwareRenderingDstBoundsRect, softwareRenderingPaint); - } - - private void ensureSoftwareRenderingObjectsInitialized() { - if (softwareRenderingCanvas != null) { - return; - } - softwareRenderingCanvas = new Canvas(); - softwareRenderingTransformedBounds = new RectF(); - softwareRenderingOriginalCanvasMatrix = new Matrix(); - softwareRenderingOriginalCanvasMatrixInverse = new Matrix(); - canvasClipBounds = new Rect(); - canvasClipBoundsRectF = new RectF(); - softwareRenderingPaint = new LPaint(); - softwareRenderingSrcBoundsRect = new Rect(); - softwareRenderingDstBoundsRect = new Rect(); - softwareRenderingDstBoundsRectF = new RectF(); - } - - private void ensureSoftwareRenderingBitmap(int renderWidth, int renderHeight) { - if (softwareRenderingBitmap == null || - softwareRenderingBitmap.getWidth() < renderWidth || - softwareRenderingBitmap.getHeight() < renderHeight) { - // The bitmap is larger. We need to create a new one. - softwareRenderingBitmap = Bitmap.createBitmap(renderWidth, renderHeight, Bitmap.Config.ARGB_8888); - softwareRenderingCanvas.setBitmap(softwareRenderingBitmap); - isDirty = true; - } else if (softwareRenderingBitmap.getWidth() > renderWidth || softwareRenderingBitmap.getHeight() > renderHeight) { - // The bitmap is smaller. Take subset of the original. - softwareRenderingBitmap = Bitmap.createBitmap(softwareRenderingBitmap, 0, 0, renderWidth, renderHeight); - softwareRenderingCanvas.setBitmap(softwareRenderingBitmap); - isDirty = true; - } - } - - /** - * Convert a RectF to a Rect - */ - private void convertRect(RectF src, Rect dst) { - dst.set( - (int) Math.floor(src.left), - (int) Math.floor(src.top), - (int) Math.ceil(src.right), - (int) Math.ceil(src.bottom) - ); - } - - /** - * Convert a Rect to a RectF - */ - private void convertRect(Rect src, RectF dst) { - dst.set( - src.left, - src.top, - src.right, - src.bottom); - } - - private void scaleRect(RectF rect, float scaleX, float scaleY) { - rect.set( - rect.left * scaleX, - rect.top * scaleY, - rect.right * scaleX, - rect.bottom * scaleY - ); - } - - /** - * When a View's parent has clipChildren set to false, it doesn't affect the clipBound - * of its child canvases so we should explicitly check for it and draw the full animation - * bounds instead. - */ - private boolean ignoreCanvasClipBounds() { - Callback callback = getCallback(); - if (!(callback instanceof View)) { - // If the callback isn't a view then respect the canvas's clip bounds. - return false; - } - ViewParent parent = ((View) callback).getParent(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && parent instanceof ViewGroup) { - return !((ViewGroup) parent).getClipChildren(); - } - // Unlikely to ever happen. If the callback is a View, its parent should be a ViewGroup. - return false; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java deleted file mode 100644 index 0184f416..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieImageAsset.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.airbnb.lottie; - -import android.graphics.Bitmap; - -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; - -/** - * Data class describing an image asset embedded in a Lottie json file. - */ -public class LottieImageAsset { - private final int width; - private final int height; - private final String id; - private final String fileName; - private final String dirName; - /** - * Pre-set a bitmap for this asset - */ - @Nullable private Bitmap bitmap; - - @RestrictTo(RestrictTo.Scope.LIBRARY) - public LottieImageAsset(int width, int height, String id, String fileName, String dirName) { - this.width = width; - this.height = height; - this.id = id; - this.fileName = fileName; - this.dirName = dirName; - } - - public int getWidth() { - return width; - } - - public int getHeight() { - return height; - } - - /** - * The reference id in the json file. - */ - public String getId() { - return id; - } - - public String getFileName() { - return fileName; - } - - @SuppressWarnings("unused") public String getDirName() { - return dirName; - } - - /** - * Returns the bitmap that has been stored for this image asset if one was explicitly set. - */ - @Nullable public Bitmap getBitmap() { - return bitmap; - } - - /** - * Permanently sets the bitmap on this LottieImageAsset. This will: - * 1) Overwrite any existing Bitmaps. - * 2) Apply to *all* animations that use this LottieComposition. - * - * If you only want to replace the bitmap for this animation, use dynamic properties - * with {@link LottieProperty#IMAGE}. - */ - public void setBitmap(@Nullable Bitmap bitmap) { - this.bitmap = bitmap; - } - - /** - * Returns a new {@link LottieImageAsset} with the same properties as this one but with the - * dimensions and bitmap scaled. - */ - public LottieImageAsset copyWithScale(float scale) { - LottieImageAsset newAsset = new LottieImageAsset((int) (width * scale), (int) (height * scale), id, fileName, dirName); - if (bitmap != null) { - Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, newAsset.width, newAsset.height, true); - newAsset.setBitmap(scaledBitmap); - } - return newAsset; - } - - /** - * Returns whether this asset has an embedded Bitmap or whether the fileName is a base64 encoded bitmap. - */ - public boolean hasBitmap() { - return bitmap != null || (fileName.startsWith("data:") && fileName.indexOf("base64,") > 0); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java deleted file mode 100644 index b43c35a6..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieListener.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.airbnb.lottie; - -/** - * Receive a result with either the value or exception for a {@link LottieTask} - */ -public interface LottieListener { - void onResult(T result); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java deleted file mode 100644 index 7b36ed44..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieLogger.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.airbnb.lottie; - -/** - * Give ability to integrators to provide another logging mechanism. - */ -public interface LottieLogger { - - void debug(String message); - - void debug(String message, Throwable exception); - - void warning(String message); - - void warning(String message, Throwable exception); - - void error(String message, Throwable exception); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java deleted file mode 100644 index 5cf1f886..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieOnCompositionLoadedListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.airbnb.lottie; - -public interface LottieOnCompositionLoadedListener { - void onCompositionLoaded(LottieComposition composition); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java deleted file mode 100644 index 5f75e9e8..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieProperty.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.airbnb.lottie; - -import android.graphics.Bitmap; -import android.graphics.ColorFilter; -import android.graphics.Path; -import android.graphics.PointF; -import android.graphics.Typeface; - -import com.airbnb.lottie.value.LottieValueCallback; -import com.airbnb.lottie.value.ScaleXY; - -/** - * Property values are the same type as the generic type of their corresponding - * {@link LottieValueCallback}. With this, we can use generics to maintain type safety - * of the callbacks. - *

    - * Supported properties: - * Transform: - * {@link #TRANSFORM_ANCHOR_POINT} - * {@link #TRANSFORM_POSITION} - * {@link #TRANSFORM_OPACITY} - * {@link #TRANSFORM_SCALE} - * {@link #TRANSFORM_ROTATION} - * {@link #TRANSFORM_SKEW} - * {@link #TRANSFORM_SKEW_ANGLE} - *

    - * Fill: - * {@link #COLOR} (non-gradient) - * {@link #OPACITY} - * {@link #COLOR_FILTER} - *

    - * Stroke: - * {@link #COLOR} (non-gradient) - * {@link #STROKE_WIDTH} - * {@link #OPACITY} - * {@link #COLOR_FILTER} - *

    - * Ellipse: - * {@link #POSITION} - * {@link #ELLIPSE_SIZE} - *

    - * Polystar: - * {@link #POLYSTAR_POINTS} - * {@link #POLYSTAR_ROTATION} - * {@link #POSITION} - * {@link #POLYSTAR_INNER_RADIUS} (star) - * {@link #POLYSTAR_OUTER_RADIUS} - * {@link #POLYSTAR_INNER_ROUNDEDNESS} (star) - * {@link #POLYSTAR_OUTER_ROUNDEDNESS} - *

    - * Repeater: - * All transform properties - * {@link #REPEATER_COPIES} - * {@link #REPEATER_OFFSET} - * {@link #TRANSFORM_ROTATION} - * {@link #TRANSFORM_START_OPACITY} - * {@link #TRANSFORM_END_OPACITY} - *

    - * Layers: - * All transform properties - * {@link #TIME_REMAP} (composition layers only) - */ -public interface LottieProperty { - /** - * ColorInt - **/ - Integer COLOR = 1; - Integer STROKE_COLOR = 2; - /** - * Opacity value are 0-100 to match after effects - **/ - Integer TRANSFORM_OPACITY = 3; - /** - * [0,100] - */ - Integer OPACITY = 4; - Integer DROP_SHADOW_COLOR = 5; - /** - * In Px - */ - PointF TRANSFORM_ANCHOR_POINT = new PointF(); - /** - * In Px - */ - PointF TRANSFORM_POSITION = new PointF(); - /** - * When split dimensions is enabled. In Px - */ - Float TRANSFORM_POSITION_X = 15f; - /** - * When split dimensions is enabled. In Px - */ - Float TRANSFORM_POSITION_Y = 16f; - /** - * In Px - */ - Float BLUR_RADIUS = 17f; - /** - * In Px - */ - PointF ELLIPSE_SIZE = new PointF(); - /** - * In Px - */ - PointF RECTANGLE_SIZE = new PointF(); - /** - * In degrees - */ - Float CORNER_RADIUS = 0f; - /** - * In Px - */ - PointF POSITION = new PointF(); - ScaleXY TRANSFORM_SCALE = new ScaleXY(); - /** - * In degrees - */ - Float TRANSFORM_ROTATION = 1f; - /** - * 0-85 - */ - Float TRANSFORM_SKEW = 0f; - /** - * In degrees - */ - Float TRANSFORM_SKEW_ANGLE = 0f; - /** - * In Px - */ - Float STROKE_WIDTH = 2f; - Float TEXT_TRACKING = 3f; - Float REPEATER_COPIES = 4f; - Float REPEATER_OFFSET = 5f; - Float POLYSTAR_POINTS = 6f; - /** - * In degrees - */ - Float POLYSTAR_ROTATION = 7f; - /** - * In Px - */ - Float POLYSTAR_INNER_RADIUS = 8f; - /** - * In Px - */ - Float POLYSTAR_OUTER_RADIUS = 9f; - /** - * [0,100] - */ - Float POLYSTAR_INNER_ROUNDEDNESS = 10f; - /** - * [0,100] - */ - Float POLYSTAR_OUTER_ROUNDEDNESS = 11f; - /** - * [0,100] - */ - Float TRANSFORM_START_OPACITY = 12f; - /** - * [0,100] - */ - Float TRANSFORM_END_OPACITY = 12.1f; - /** - * The time value in seconds - */ - Float TIME_REMAP = 13f; - /** - * In Dp - */ - Float TEXT_SIZE = 14f; - /** - * [0,100] - * Lottie Android resolved drop shadows on drawing content such as fills and strokes. - * If a drop shadow is applied to a layer, the dynamic properties must be set on all - * of its child elements that draw. The easiest way to do this is to append "**" to your - * Keypath after the layer name. - */ - Float DROP_SHADOW_OPACITY = 15f; - /** - * Degrees from 12 o'clock. - * Lottie Android resolved drop shadows on drawing content such as fills and strokes. - * If a drop shadow is applied to a layer, the dynamic properties must be set on all - * of its child elements that draw. The easiest way to do this is to append "**" to your - * Keypath after the layer name. - */ - Float DROP_SHADOW_DIRECTION = 16f; - /** - * In Px - * Lottie Android resolved drop shadows on drawing content such as fills and strokes. - * If a drop shadow is applied to a layer, the dynamic properties must be set on all - * of its child elements that draw. The easiest way to do this is to append "**" to your - * Keypath after the layer name. - */ - Float DROP_SHADOW_DISTANCE = 17f; - /** - * In Px - * Lottie Android resolved drop shadows on drawing content such as fills and strokes. - * If a drop shadow is applied to a layer, the dynamic properties must be set on all - * of its child elements that draw. The easiest way to do this is to append "**" to your - * Keypath after the layer name. - */ - Float DROP_SHADOW_RADIUS = 18f; - /** - * Set the color filter for an entire drawable content. Can be applied to fills, strokes, images, and solids. - */ - ColorFilter COLOR_FILTER = new ColorFilter(); - /** - * Array of ARGB colors that map to position stops in the original gradient. - * For example, a gradient from red to blue could be remapped with [0xFF00FF00, 0xFFFF00FF] (green to purple). - */ - Integer[] GRADIENT_COLOR = new Integer[0]; - /** - * Set on text layers. - */ - Typeface TYPEFACE = Typeface.DEFAULT; - /** - * Set on image layers. - */ - Bitmap IMAGE = Bitmap.createBitmap(1, 1, Bitmap.Config.ALPHA_8); - /** - * Replace the text for a text layer. - */ - CharSequence TEXT = "dynamic_text"; - - /** - * Replace a path. This can only be used on path contents. For other shapes such as rectangles and polystars, - * use LottieProperties corresponding to their specific properties. - *

    - * If you need to do any operations on the path such as morphing, use the Jetpack androidx.graphics.path library. - *

    - * In After Effects, any of those other shapes can be converted to a bezier path by right clicking it and - * selecting "Convert To Bezier Path". - */ - Path PATH = new Path(); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java deleted file mode 100644 index b0f2f5ce..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieResult.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.airbnb.lottie; - -import androidx.annotation.Nullable; - -import java.util.Arrays; - -/** - * Contains class to hold the resulting value of an async task or an exception if it failed. - *

    - * Either value or exception will be non-null. - */ -public final class LottieResult { - - @Nullable private final V value; - @Nullable private final Throwable exception; - - public LottieResult(V value) { - this.value = value; - exception = null; - } - - public LottieResult(Throwable exception) { - this.exception = exception; - value = null; - } - - @Nullable public V getValue() { - return value; - } - - @Nullable public Throwable getException() { - return exception; - } - - @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof LottieResult)) { - return false; - } - LottieResult that = (LottieResult) o; - if (getValue() != null && getValue().equals(that.getValue())) { - return true; - } - if (getException() != null && that.getException() != null) { - return getException().toString().equals(getException().toString()); - } - return false; - } - - @Override public int hashCode() { - return Arrays.hashCode(new Object[]{getValue(), getException()}); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java deleted file mode 100644 index 8a62b3b5..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTask.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.airbnb.lottie; - -import android.os.Handler; -import android.os.Looper; - -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; - -import com.airbnb.lottie.utils.Logger; -import com.airbnb.lottie.utils.LottieThreadFactory; - -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; -import java.util.concurrent.FutureTask; - -/** - * Helper to run asynchronous tasks with a result. - * Results can be obtained with {@link #addListener(LottieListener)}. - * Failures can be obtained with {@link #addFailureListener(LottieListener)}. - *

    - * A task will produce a single result or a single failure. - */ -@SuppressWarnings("UnusedReturnValue") -public class LottieTask { - - /** - * Set this to change the executor that LottieTasks are run on. This will be the executor that composition parsing and url - * fetching happens on. - *

    - * You may change this to run deserialization synchronously for testing. - */ - @SuppressWarnings("WeakerAccess") - public static Executor EXECUTOR = Executors.newCachedThreadPool(new LottieThreadFactory()); - - /* Preserve add order. */ - private final Set> successListeners = new LinkedHashSet<>(1); - private final Set> failureListeners = new LinkedHashSet<>(1); - private final Handler handler = new Handler(Looper.getMainLooper()); - - @Nullable private volatile LottieResult result = null; - - @RestrictTo(RestrictTo.Scope.LIBRARY) - public LottieTask(Callable> runnable) { - this(runnable, false); - } - - public LottieTask(T result) { - setResult(new LottieResult<>(result)); - } - - /** - * runNow is only used for testing. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY) LottieTask(Callable> runnable, boolean runNow) { - if (runNow) { - try { - setResult(runnable.call()); - } catch (Throwable e) { - setResult(new LottieResult<>(e)); - } - } else { - EXECUTOR.execute(new LottieFutureTask(this, runnable)); - } - } - - private void setResult(@Nullable LottieResult result) { - if (this.result != null) { - throw new IllegalStateException("A task may only be set once."); - } - this.result = result; - notifyListeners(); - } - - /** - * Add a task listener. If the task has completed, the listener will be called synchronously. - * - * @return the task for call chaining. - */ - public synchronized LottieTask addListener(LottieListener listener) { - LottieResult result = this.result; - if (result != null && result.getValue() != null) { - listener.onResult(result.getValue()); - } - - successListeners.add(listener); - return this; - } - - /** - * Remove a given task listener. The task will continue to execute so you can re-add - * a listener if necessary. - * - * @return the task for call chaining. - */ - public synchronized LottieTask removeListener(LottieListener listener) { - successListeners.remove(listener); - return this; - } - - /** - * Add a task failure listener. This will only be called in the even that an exception - * occurs. If an exception has already occurred, the listener will be called immediately. - * - * @return the task for call chaining. - */ - public synchronized LottieTask addFailureListener(LottieListener listener) { - LottieResult result = this.result; - if (result != null && result.getException() != null) { - listener.onResult(result.getException()); - } - - failureListeners.add(listener); - return this; - } - - /** - * Remove a given task failure listener. The task will continue to execute so you can re-add - * a listener if necessary. - * - * @return the task for call chaining. - */ - public synchronized LottieTask removeFailureListener(LottieListener listener) { - failureListeners.remove(listener); - return this; - } - - @Nullable - public LottieResult getResult() { - return result; - } - - private void notifyListeners() { - // Listeners should be called on the main thread. - if (Looper.myLooper() == Looper.getMainLooper()) { - notifyListenersInternal(); - } else { - handler.post(this::notifyListenersInternal); - } - } - - private void notifyListenersInternal() { - // Local reference in case it gets set on a background thread. - LottieResult result = LottieTask.this.result; - if (result == null) { - return; - } - if (result.getValue() != null) { - notifySuccessListeners(result.getValue()); - } else { - notifyFailureListeners(result.getException()); - } - } - - private synchronized void notifySuccessListeners(T value) { - // Allows listeners to remove themselves in onResult. - // Otherwise we risk ConcurrentModificationException. - List> listenersCopy = new ArrayList<>(successListeners); - for (LottieListener l : listenersCopy) { - l.onResult(value); - } - } - - private synchronized void notifyFailureListeners(Throwable e) { - // Allows listeners to remove themselves in onResult. - // Otherwise we risk ConcurrentModificationException. - List> listenersCopy = new ArrayList<>(failureListeners); - if (listenersCopy.isEmpty()) { - Logger.warning("Lottie encountered an error but no failure listener was added:", e); - return; - } - - for (LottieListener l : listenersCopy) { - l.onResult(e); - } - } - - private static class LottieFutureTask extends FutureTask> { - - private LottieTask lottieTask; - - LottieFutureTask(LottieTask task, Callable> callable) { - super(callable); - lottieTask = task; - } - - @Override - protected void done() { - try { - if (isCancelled()) { - // We don't need to notify and listeners if the task is cancelled. - return; - } - - try { - lottieTask.setResult(get()); - } catch (InterruptedException | ExecutionException e) { - lottieTask.setResult(new LottieResult<>(e)); - } - } finally { - // LottieFutureTask can be held in memory for up to 60 seconds after the task is done, which would - // result in holding on to the associated LottieTask instance and leaking its listeners. To avoid - // that, we clear our the reference to the LottieTask instance. - // - // How is LottieFutureTask held for up to 60 seconds? It's a bug in how the VM cleans up stack - // local variables. When you have a loop that polls a blocking queue and assigns the result - // to a local variable, after looping the local variable will still reference the previous value - // until the queue returns the next result. - // - // Executors.newCachedThreadPool() relies on a SynchronousQueue and creates a cached thread pool - // with a default keep alice of 60 seconds. After a given worker thread runs a task, that thread - // will wait for up to 60 seconds for a new task to come, and while waiting it's also accidentally - // keeping a reference to the previous task. - // - // See commit d577e728e9bccbafc707af3060ea914caa73c14f in AOSP for how that was fixed for Looper. - lottieTask = null; - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java deleted file mode 100644 index b57e44e9..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/LottieTaskIdleListener.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.airbnb.lottie; - -/** - * Register this listener via {@link LottieCompositionFactory#registerLottieTaskIdleListener(LottieTaskIdleListener)}. - * - * Can be used to create an espresso idle resource. Refer to {@link LottieCompositionFactory#registerLottieTaskIdleListener(LottieTaskIdleListener)} - * for more information. - */ -public interface LottieTaskIdleListener { - void onIdleChanged(boolean idle); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java deleted file mode 100644 index e42956a0..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/OnCompositionLoadedListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.airbnb.lottie; - -import androidx.annotation.Nullable; - -/** - * @see LottieCompositionFactory - * @see LottieResult - */ -@Deprecated -public interface OnCompositionLoadedListener { - /** - * Composition will be null if there was an error loading it. Check logcat for more details. - */ - void onCompositionLoaded(@Nullable LottieComposition composition); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java deleted file mode 100644 index bce3a199..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/SimpleColorFilter.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.airbnb.lottie; - -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; - -import androidx.annotation.ColorInt; - -/** - * A color filter with a predefined transfer mode that applies the specified color on top of the - * original color. As there are many other transfer modes, please take a look at the definition - * of PorterDuff.Mode.SRC_ATOP to find one that suits your needs. - * This site has a great explanation of Porter/Duff compositing algebra as well as a visual - * representation of many of the transfer modes: - * http://ssp.impulsetrain.com/porterduff.html - */ -@SuppressWarnings("WeakerAccess") public class SimpleColorFilter extends PorterDuffColorFilter { - public SimpleColorFilter(@ColorInt int color) { - super(color, PorterDuff.Mode.SRC_ATOP); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt deleted file mode 100644 index 07ab731b..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/TextDelegate.kt +++ /dev/null @@ -1,86 +0,0 @@ -package com.airbnb.lottie - -import androidx.annotation.RestrictTo - -/** - * To replace static text in an animation at runtime, create an instance of this class and call [.setText] to - * replace the hard coded animation text (input) with the text of your choosing (output). - * - * - * Alternatively, extend this class and override [.getText] and if the text hasn't already been set - * by [.setText] then it will call [.getText]. - */ -class TextDelegate( - private val drawable: LottieDrawable? -) { - private val stringMap: MutableMap = HashMap() - - private var cacheText = true - - /** - * Override this to replace the animation text with something dynamic. This can be used for - * translations or custom data. - * @param layerName the name of the layer with text - * @param input the string at the layer with text - * @return a String to use for the specific data, by default this is the same as getText(input) - */ - fun getText(layerName: String?, input: String): String { - return getText(input) - } - - /** - * Override this to replace the animation text with something dynamic. This can be used for - * translations or custom data. - */ - fun getText(input: String): String { - return input - } - - /** - * Update the text that will be rendered for the given input text. - */ - fun setText(input: String, output: String) { - stringMap[input] = output - invalidate() - } - - /** - * Sets whether or not [TextDelegate] will cache (memoize) the results of getText. - * If this isn't necessary then set it to false. - */ - fun setCacheText(cacheText: Boolean) { - this.cacheText = cacheText - } - - /** - * Invalidates a cached string with the given input. - */ - fun invalidateText(input: String) { - stringMap.remove(input) - invalidate() - } - - /** - * Invalidates all cached strings. - */ - fun invalidateAllText() { - stringMap.clear() - invalidate() - } - - @RestrictTo(RestrictTo.Scope.LIBRARY) - fun getTextInternal(layerName: String?, input: String): String? { - if (cacheText && stringMap.containsKey(input)) { - return stringMap[input] - } - val text = getText(layerName, input) - if (cacheText) { - stringMap[input] = text - } - return text - } - - private fun invalidate() { - drawable?.invalidateSelf() - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt deleted file mode 100644 index 4b5a89b1..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/BaseStrokeContent.kt +++ /dev/null @@ -1,418 +0,0 @@ -package com.airbnb.lottie.animation.content - -import android.annotation.SuppressLint -import android.graphics.DashPathEffect -import android.graphics.PathMeasure -import androidx.annotation.CallSuper -import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.PaintingStyle -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.StrokeCap -import androidx.compose.ui.graphics.StrokeJoin -import com.airbnb.lottie.L -import com.airbnb.lottie.LottieDrawable -import com.airbnb.lottie.LottieProperty -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation -import com.airbnb.lottie.animation.keyframe.DropShadowKeyframeAnimation -import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation -import com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation -import com.airbnb.lottie.model.KeyPath -import com.airbnb.lottie.model.animatable.AnimatableFloatValue -import com.airbnb.lottie.model.animatable.AnimatableIntegerValue -import com.airbnb.lottie.model.content.ShapeTrimPath -import com.airbnb.lottie.model.layer.BaseLayer -import com.airbnb.lottie.utils.MiscUtils -import com.airbnb.lottie.utils.Utils -import com.airbnb.lottie.value.LottieValueCallback -import kotlin.math.min - -@SuppressLint("RestrictedApi") -abstract class BaseStrokeContent internal constructor( - private val lottieDrawable: LottieDrawable, - protected val layer: BaseLayer, - cap: StrokeCap, - join: StrokeJoin, - miterLimit: Float, - opacity: AnimatableIntegerValue, - width: AnimatableFloatValue, - dashPattern: List, - offset: AnimatableFloatValue? -) : BaseKeyframeAnimation.AnimationListener, KeyPathElementContent, DrawingContent { - private val pm = PathMeasure() - private val path = Path() - private val trimPathPath = Path() - private val pathGroups: MutableList = ArrayList() - private val dashPatternValues: FloatArray - val paint: Paint = Paint().apply { - isAntiAlias = true - } - - private val widthAnimation: BaseKeyframeAnimation<*, Float> - private val opacityAnimation: BaseKeyframeAnimation<*, Int> - private val dashPatternAnimations: MutableList> - private var dashPatternOffsetAnimation: BaseKeyframeAnimation<*, Float> ? - private var colorFilterAnimation: BaseKeyframeAnimation? = null - private var blurAnimation: BaseKeyframeAnimation? = null - var blurMaskFilterRadius: Float = 0f - - private var dropShadowAnimation: DropShadowKeyframeAnimation? = null - - init { - paint.style = PaintingStyle.Stroke - paint.strokeCap = cap - paint.strokeJoin = join - paint.strokeMiterLimit = miterLimit - - opacityAnimation = opacity.createAnimation() - widthAnimation = width.createAnimation() - - dashPatternOffsetAnimation = offset?.createAnimation() - dashPatternAnimations = ArrayList(dashPattern.size) - dashPatternValues = FloatArray(dashPattern.size) - - for (i in dashPattern.indices) { - dashPatternAnimations.add(dashPattern[i].createAnimation()) - } - - layer.addAnimation(opacityAnimation) - layer.addAnimation(widthAnimation) - for (i in dashPatternAnimations.indices) { - layer.addAnimation(dashPatternAnimations[i]) - } - if (dashPatternOffsetAnimation != null) { - layer.addAnimation(dashPatternOffsetAnimation) - } - - opacityAnimation.addUpdateListener(this) - widthAnimation.addUpdateListener(this) - - for (i in dashPattern.indices) { - dashPatternAnimations[i].addUpdateListener(this) - } - dashPatternOffsetAnimation?.addUpdateListener(this) - - if (layer.blurEffect != null) { - blurAnimation = layer.blurEffect!!.blurriness.createAnimation() - blurAnimation.addUpdateListener(this) - layer.addAnimation(blurAnimation) - } - if (layer.dropShadowEffect != null) { - dropShadowAnimation = DropShadowKeyframeAnimation( - this, layer, layer.dropShadowEffect - ) - } - } - - override fun onValueChanged() { - lottieDrawable.invalidateSelf() - } - - override fun setContents(contentsBefore: List?, contentsAfter: List?) { - var trimPathContentBefore: TrimPathContent? = null - for (i in contentsBefore!!.indices.reversed()) { - val content = contentsBefore[i] - if (content is TrimPathContent && - content.type == ShapeTrimPath.Type.INDIVIDUALLY - ) { - trimPathContentBefore = content - } - } - trimPathContentBefore?.addListener(this) - - var currentPathGroup: PathGroup? = null - for (i in contentsAfter!!.indices.reversed()) { - val content = contentsAfter[i] - if (content is TrimPathContent && - content.type == ShapeTrimPath.Type.INDIVIDUALLY - ) { - if (currentPathGroup != null) { - pathGroups.add(currentPathGroup) - } - currentPathGroup = PathGroup(content as TrimPathContent?) - content.addListener(this) - } else if (content is PathContent) { - if (currentPathGroup == null) { - currentPathGroup = PathGroup(trimPathContentBefore) - } - currentPathGroup.paths.add(content) - } - } - if (currentPathGroup != null) { - pathGroups.add(currentPathGroup) - } - } - - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Int) { - if (L.isTraceEnabled()) { - L.beginSection("StrokeContent#draw") - } - if (Utils.hasZeroScaleAxis(parentMatrix)) { - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#draw") - } - return - } - val alpha = - ((parentAlpha / 255f * (opacityAnimation as IntegerKeyframeAnimation).intValue / 100f) * 255).toInt() - paint.alpha = MiscUtils.clamp(alpha, 0, 255) - paint.strokeWidth = - (widthAnimation as FloatKeyframeAnimation).floatValue * Utils.getScale( - parentMatrix - ) - if (paint.strokeWidth <= 0) { - // Android draws a hairline stroke for 0, After Effects doesn't. - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#draw") - } - return - } - applyDashPatternIfNeeded(parentMatrix) - - if (colorFilterAnimation != null) { - paint.setColorFilter(colorFilterAnimation.getValue()) - } - - if (blurAnimation != null) { - val blurRadius: Float = blurAnimation.getValue() - if (blurRadius == 0f) { - paint.setMaskFilter(null) - } else if (blurRadius != blurMaskFilterRadius) { - val blur = layer.getBlurMaskFilter(blurRadius) - paint.setMaskFilter(blur) - } - blurMaskFilterRadius = blurRadius - } - if (dropShadowAnimation != null) { - dropShadowAnimation.applyTo(paint) - } - - for (i in pathGroups.indices) { - val pathGroup = pathGroups[i] - - - if (pathGroup.trimPath != null) { - applyTrimPath(canvas, pathGroup, parentMatrix) - } else { - if (L.isTraceEnabled()) { - L.beginSection("StrokeContent#buildPath") - } - path.reset() - for (j in pathGroup.paths.indices.reversed()) { - path.addPath(pathGroup.paths[j].getPath(), parentMatrix) - } - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#buildPath") - L.beginSection("StrokeContent#drawPath") - } - canvas.drawPath(path, paint) - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#drawPath") - } - } - } - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#draw") - } - } - - private fun applyTrimPath(canvas: Canvas, pathGroup: PathGroup, parentMatrix: Matrix) { - if (L.isTraceEnabled()) { - L.beginSection("StrokeContent#applyTrimPath") - } - if (pathGroup.trimPath == null) { - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#applyTrimPath") - } - return - } - path.reset() - for (j in pathGroup.paths.indices.reversed()) { - path.addPath(pathGroup.paths[j].getPath(), parentMatrix) - } - val animStartValue = pathGroup.trimPath.start.value / 100f - val animEndValue = pathGroup.trimPath.end.value / 100f - val animOffsetValue = pathGroup.trimPath.offset.value / 360f - - // If the start-end is ~100, consider it to be the full path. - if (animStartValue < 0.01f && animEndValue > 0.99f) { - canvas.drawPath(path, paint) - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#applyTrimPath") - } - return - } - - pm.setPath(path, false) - var totalLength = pm.length - while (pm.nextContour()) { - totalLength += pm.length - } - val offsetLength = totalLength * animOffsetValue - val startLength = totalLength * animStartValue + offsetLength - val endLength = min( - (totalLength * animEndValue + offsetLength).toDouble(), - (startLength + totalLength - 1f).toDouble() - ).toFloat() - - var currentLength = 0f - for (j in pathGroup.paths.indices.reversed()) { - trimPathPath.set(pathGroup.paths[j].getPath()) - trimPathPath.transform(parentMatrix) - pm.setPath(trimPathPath, false) - val length = pm.length - if (endLength > totalLength && endLength - totalLength < currentLength + length && currentLength < endLength - totalLength) { - // Draw the segment when the end is greater than the length which wraps around to the - // beginning. - var startValue = if (startLength > totalLength) { - (startLength - totalLength) / length - } else { - 0f - } - val endValue = min(((endLength - totalLength) / length).toDouble(), 1.0) - .toFloat() - Utils.applyTrimPathIfNeeded(trimPathPath, startValue, endValue, 0f) - canvas.drawPath(trimPathPath, paint) - } else - if (currentLength + length < startLength || currentLength > endLength) { - // Do nothing - } else if (currentLength + length <= endLength && startLength < currentLength) { - canvas.drawPath(trimPathPath, paint) - } else { - var startValue = if (startLength < currentLength) { - 0f - } else { - (startLength - currentLength) / length - } - var endValue = if (endLength > currentLength + length) { - 1f - } else { - (endLength - currentLength) / length - } - Utils.applyTrimPathIfNeeded(trimPathPath, startValue, endValue, 0f) - canvas.drawPath(trimPathPath, paint) - } - currentLength += length - } - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#applyTrimPath") - } - } - - override fun getBounds(outBounds: RectF, parentMatrix: Matrix?, applyParents: Boolean) { - if (L.isTraceEnabled()) { - L.beginSection("StrokeContent#getBounds") - } - path.reset() - for (i in pathGroups.indices) { - val pathGroup = pathGroups[i] - for (j in pathGroup.paths.indices) { - path.addPath(pathGroup.paths[j].getPath(), parentMatrix!!) - } - } - path.computeBounds(rect, false) - - val width = (widthAnimation as FloatKeyframeAnimation).floatValue - rect[rect.left - width / 2f, rect.top - width / 2f, rect.right + width / 2f] = - rect.bottom + width / 2f - outBounds.set(rect) - // Add padding to account for rounding errors. - outBounds[outBounds.left - 1, outBounds.top - 1, outBounds.right + 1] = outBounds.bottom + 1 - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#getBounds") - } - } - - private fun applyDashPatternIfNeeded(parentMatrix: Matrix) { - if (L.isTraceEnabled()) { - L.beginSection("StrokeContent#applyDashPattern") - } - if (dashPatternAnimations.isEmpty()) { - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#applyDashPattern") - } - return - } - - val scale = Utils.getScale(parentMatrix) - for (i in dashPatternAnimations.indices) { - dashPatternValues[i] = dashPatternAnimations[i].getValue() - // If the value of the dash pattern or gap is too small, the number of individual sections - // approaches infinity as the value approaches 0. - // To mitigate this, we essentially put a minimum value on the dash pattern size of 1px - // and a minimum gap size of 0.01. - if (i % 2 == 0) { - if (dashPatternValues[i] < 1f) { - dashPatternValues[i] = 1f - } - } else { - if (dashPatternValues[i] < 0.1f) { - dashPatternValues[i] = 0.1f - } - } - dashPatternValues[i] *= scale - } - val offset = - if (dashPatternOffsetAnimation == null) 0f else dashPatternOffsetAnimation.getValue() * scale - paint.setPathEffect(DashPathEffect(dashPatternValues, offset)) - if (L.isTraceEnabled()) { - L.endSection("StrokeContent#applyDashPattern") - } - } - - override fun resolveKeyPath( - keyPath: KeyPath, depth: Int, accumulator: List, currentPartialKeyPath: KeyPath - ) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this) - } - - @CallSuper - override fun addValueCallback(property: T, callback: LottieValueCallback?) { - if (property === LottieProperty.OPACITY) { - opacityAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.STROKE_WIDTH) { - widthAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.COLOR_FILTER) { - if (colorFilterAnimation != null) { - layer.removeAnimation(colorFilterAnimation) - } - - if (callback == null) { - colorFilterAnimation = null - } else { - colorFilterAnimation = - ValueCallbackKeyframeAnimation(callback as LottieValueCallback?) - colorFilterAnimation.addUpdateListener(this) - layer.addAnimation(colorFilterAnimation) - } - } else if (property === LottieProperty.BLUR_RADIUS) { - if (blurAnimation != null) { - blurAnimation!!.setValueCallback(callback as LottieValueCallback?) - } else { - blurAnimation = - ValueCallbackKeyframeAnimation(callback as LottieValueCallback?) - blurAnimation.addUpdateListener(this) - layer.addAnimation(blurAnimation) - } - } else if (property === LottieProperty.DROP_SHADOW_COLOR && dropShadowAnimation != null) { - dropShadowAnimation.setColorCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.DROP_SHADOW_OPACITY && dropShadowAnimation != null) { - dropShadowAnimation.setOpacityCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.DROP_SHADOW_DIRECTION && dropShadowAnimation != null) { - dropShadowAnimation.setDirectionCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.DROP_SHADOW_DISTANCE && dropShadowAnimation != null) { - dropShadowAnimation.setDistanceCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.DROP_SHADOW_RADIUS && dropShadowAnimation != null) { - dropShadowAnimation.setRadiusCallback(callback as LottieValueCallback?) - } - } - - /** - * Data class to help drawing trim paths individually. - */ - private class PathGroup(val trimPath: TrimPathContent?) { - val paths: MutableList = ArrayList() - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt deleted file mode 100644 index 8a132b29..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/CompoundTrimPathContent.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.airbnb.lottie.animation.content - -import androidx.compose.ui.graphics.Path -import com.airbnb.lottie.utils.Utils.applyTrimPathIfNeeded - -class CompoundTrimPathContent { - private val contents: MutableList = ArrayList() - - fun addTrimPath(trimPath: TrimPathContent) { - contents.add(trimPath) - } - - fun apply(path: Path) { - for (i in contents.indices.reversed()) { - applyTrimPathIfNeeded(path, contents[i]) - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt deleted file mode 100644 index 8a42aecf..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/Content.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.airbnb.lottie.animation.content - -interface Content { - val name: String? - - fun setContents(contentsBefore: List?, contentsAfter: List?) -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt deleted file mode 100644 index 199ae478..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ContentGroup.kt +++ /dev/null @@ -1,255 +0,0 @@ -package com.airbnb.lottie.animation.content - -import android.graphics.Canvas -import android.graphics.Matrix -import android.graphics.Paint -import android.graphics.Path -import androidx.compose.ui.geometry.Rect -import com.airbnb.lottie.LottieComposition -import com.airbnb.lottie.animation.LPaint -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation -import com.airbnb.lottie.model.content.ContentModel -import com.airbnb.lottie.utils.Utils - -class ContentGroup internal constructor( - lottieDrawable: LottieDrawable, - layer: BaseLayer?, - override val name: String, - private val hidden: Boolean, - @JvmField val contents: List, - transform: AnimatableTransform? -) : DrawingContent, PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElement { - private val offScreenPaint: Paint = LPaint() - private val offScreenRectF: RectF = RectF() - - private val matrix = Matrix() - private val path = Path() - private val rect: Rect = Rect() - - private val lottieDrawable: LottieDrawable = lottieDrawable - private var pathContents: MutableList? = null - private var transformAnimation: TransformKeyframeAnimation? = null - - constructor( - lottieDrawable: LottieDrawable, - layer: BaseLayer, - shapeGroup: ShapeGroup, - composition: LottieComposition - ) : this( - lottieDrawable, - layer, - shapeGroup.getName(), - shapeGroup.isHidden(), - contentsFromModels(lottieDrawable, composition, layer, shapeGroup.getItems()), - findTransform(shapeGroup.getItems()) - ) - - init { - if (transform != null) { - transformAnimation = transform.createAnimation() - transformAnimation.addAnimationsToLayer(layer) - transformAnimation.addListener(this) - } - - val greedyContents: MutableList = ArrayList() - for (i in contents.indices.reversed()) { - val content = contents[i] - if (content is GreedyContent) { - greedyContents.add(content as GreedyContent) - } - } - - for (i in greedyContents.indices.reversed()) { - greedyContents[i].absorbContent(contents.listIterator(contents.size)) - } - } - - override fun onValueChanged() { - lottieDrawable.invalidateSelf() - } - - override fun setContents(contentsBefore: List?, contentsAfter: List?) { - // Do nothing with contents after. - val myContentsBefore: MutableList = ArrayList( - contentsBefore!!.size + contents.size - ) - myContentsBefore.addAll(contentsBefore) - - for (i in contents.indices.reversed()) { - val content = contents[i] - content!!.setContents(myContentsBefore, contents.subList(0, i)) - myContentsBefore.add(content) - } - } - - val pathList: List - get() { - if (pathContents == null) { - pathContents = ArrayList() - for (i in contents.indices) { - val content = contents[i] - if (content is PathContent) { - pathContents.add(content) - } - } - } - return pathContents!! - } - - val transformationMatrix: Matrix - get() { - if (transformAnimation != null) { - return transformAnimation.getMatrix() - } - matrix.reset() - return matrix - } - - override fun getPath(): Path { - // TODO: cache this somehow. - matrix.reset() - if (transformAnimation != null) { - matrix.set(transformAnimation.getMatrix()) - } - path.reset() - if (hidden) { - return path - } - for (i in contents.indices.reversed()) { - val content = contents[i] - if (content is PathContent) { - path.addPath(content.path, matrix) - } - } - return path - } - - fun draw(canvas: Canvas, parentMatrix: Matrix?, parentAlpha: Int) { - if (hidden) { - return - } - matrix.set(parentMatrix) - val layerAlpha: Int - if (transformAnimation != null) { - matrix.preConcat(transformAnimation.getMatrix()) - val opacity = - if (transformAnimation.getOpacity() == null) 100 else transformAnimation.getOpacity().value - layerAlpha = ((opacity / 100f * parentAlpha / 255f) * 255).toInt() - } else { - layerAlpha = parentAlpha - } - - // Apply off-screen rendering only when needed in order to improve rendering performance. - val isRenderingWithOffScreen = - lottieDrawable.isApplyingOpacityToLayersEnabled() && hasTwoOrMoreDrawableContent() && layerAlpha != 255 - if (isRenderingWithOffScreen) { - offScreenRectF.set(0f, 0f, 0f, 0f) - getBounds(offScreenRectF, matrix, true) - offScreenPaint.alpha = layerAlpha - Utils.saveLayerCompat(canvas, offScreenRectF, offScreenPaint) - } - - val childAlpha = if (isRenderingWithOffScreen) 255 else layerAlpha - for (i in contents.indices.reversed()) { - val content: Any? = contents[i] - if (content is DrawingContent) { - content.draw(canvas, matrix, childAlpha) - } - } - - if (isRenderingWithOffScreen) { - canvas.restore() - } - } - - private fun hasTwoOrMoreDrawableContent(): Boolean { - var drawableContentCount = 0 - for (i in contents.indices) { - if (contents[i] is DrawingContent) { - drawableContentCount += 1 - if (drawableContentCount >= 2) { - return true - } - } - } - return false - } - - fun getBounds(outBounds: RectF, parentMatrix: Matrix?, applyParents: Boolean) { - matrix.set(parentMatrix) - if (transformAnimation != null) { - matrix.preConcat(transformAnimation.getMatrix()) - } - rect.set(0f, 0f, 0f, 0f) - for (i in contents.indices.reversed()) { - val content = contents[i] - if (content is DrawingContent) { - content.getBounds(rect, matrix, applyParents) - outBounds.union(rect) - } - } - } - - override fun resolveKeyPath( - keyPath: KeyPath, - depth: Int, - accumulator: MutableList, - currentPartialKeyPath: KeyPath - ) { - var currentPartialKeyPath: KeyPath = currentPartialKeyPath - if (!keyPath.matches(name, depth) && "__container" != name) { - return - } - - if ("__container" != name) { - currentPartialKeyPath = currentPartialKeyPath.addKey(name) - - if (keyPath.fullyResolvesTo(name, depth)) { - accumulator.add(currentPartialKeyPath.resolve(this)) - } - } - - if (keyPath.propagateToChildren(name, depth)) { - val newDepth: Int = depth + keyPath.incrementDepthBy(name, depth) - for (i in contents.indices) { - val content = contents[i] - if (content is KeyPathElement) { - val element: KeyPathElement? = content as KeyPathElement? - element.resolveKeyPath(keyPath, newDepth, accumulator, currentPartialKeyPath) - } - } - } - } - - override fun addValueCallback(property: T, callback: LottieValueCallback?) { - if (transformAnimation != null) { - transformAnimation.applyValueCallback(property, callback) - } - } - - companion object { - private fun contentsFromModels( - drawable: LottieDrawable, composition: LottieComposition, layer: BaseLayer, - contentModels: List - ): List { - val contents: MutableList = ArrayList(contentModels.size) - for (i in contentModels.indices) { - val content = contentModels[i].toContent(drawable, composition, layer) - if (content != null) { - contents.add(content) - } - } - return contents - } - - fun findTransform(contentModels: List): AnimatableTransform? { - for (i in contentModels.indices) { - val contentModel = contentModels[i] - if (contentModel is AnimatableTransform) { - return contentModel as AnimatableTransform? - } - } - return null - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt deleted file mode 100644 index 18d58548..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/DrawingContent.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.airbnb.lottie.animation.content - -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.Matrix - -interface DrawingContent : Content { - fun draw(canvas: Canvas?, parentMatrix: Matrix?, alpha: Int) - - fun getBounds(outBounds: Rect?, parentMatrix: Matrix?, applyParents: Boolean) -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt deleted file mode 100644 index 5ff6af95..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/EllipseContent.kt +++ /dev/null @@ -1,125 +0,0 @@ -package com.airbnb.lottie.animation.content - -import android.annotation.SuppressLint -import android.graphics.PointF -import androidx.compose.ui.graphics.Path -import com.airbnb.lottie.LottieDrawable -import com.airbnb.lottie.LottieProperty -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation -import com.airbnb.lottie.model.KeyPath -import com.airbnb.lottie.model.content.CircleShape -import com.airbnb.lottie.model.content.ShapeTrimPath -import com.airbnb.lottie.model.layer.BaseLayer -import com.airbnb.lottie.utils.MiscUtils -import com.airbnb.lottie.value.LottieValueCallback - -@SuppressLint("RestrictedApi") -class EllipseContent - ( - private val lottieDrawable: LottieDrawable, - layer: BaseLayer, - private val circleShape: CircleShape -) : PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { - private val path = Path() - - override val name: String = circleShape.name - private val sizeAnimation: BaseKeyframeAnimation<*, PointF> = - circleShape.size.createAnimation() - private val positionAnimation: BaseKeyframeAnimation<*, PointF> = - circleShape.position.createAnimation() - - private val trimPaths = CompoundTrimPathContent() - private var isPathValid = false - - init { - layer.addAnimation(sizeAnimation) - layer.addAnimation(positionAnimation) - - sizeAnimation.addUpdateListener(this) - positionAnimation.addUpdateListener(this) - } - - override fun onValueChanged() { - invalidate() - } - - private fun invalidate() { - isPathValid = false - lottieDrawable.invalidateSelf() - } - - override fun setContents(contentsBefore: List?, contentsAfter: List?) { - for (i in contentsBefore!!.indices) { - val content = contentsBefore[i] - if (content is TrimPathContent && content.type == ShapeTrimPath.Type.SIMULTANEOUSLY) { - val trimPath = content - trimPaths.addTrimPath(trimPath) - trimPath.addListener(this) - } - } - } - - override fun getPath(): Path { - if (isPathValid) { - return path - } - - path.reset() - - if (circleShape.isHidden) { - isPathValid = true - return path - } - - val size = sizeAnimation.value - val halfWidth = size.x / 2f - val halfHeight = size.y / 2f - - // TODO: handle bounds - val cpW = halfWidth * ELLIPSE_CONTROL_POINT_PERCENTAGE - val cpH = halfHeight * ELLIPSE_CONTROL_POINT_PERCENTAGE - - path.reset() - if (circleShape.isReversed) { - path.moveTo(0f, -halfHeight) - path.cubicTo(0 - cpW, -halfHeight, -halfWidth, 0 - cpH, -halfWidth, 0f) - path.cubicTo(-halfWidth, 0 + cpH, 0 - cpW, halfHeight, 0f, halfHeight) - path.cubicTo(0 + cpW, halfHeight, halfWidth, 0 + cpH, halfWidth, 0f) - path.cubicTo(halfWidth, 0 - cpH, 0 + cpW, -halfHeight, 0f, -halfHeight) - } else { - path.moveTo(0f, -halfHeight) - path.cubicTo(0 + cpW, -halfHeight, halfWidth, 0 - cpH, halfWidth, 0f) - path.cubicTo(halfWidth, 0 + cpH, 0 + cpW, halfHeight, 0f, halfHeight) - path.cubicTo(0 - cpW, halfHeight, -halfWidth, 0 + cpH, -halfWidth, 0f) - path.cubicTo(-halfWidth, 0 - cpH, 0 - cpW, -halfHeight, 0f, -halfHeight) - } - - val position = positionAnimation.value - path.translate(position.x, position.y) - - path.close() - - trimPaths.apply(path) - - isPathValid = true - return path - } - - override fun resolveKeyPath( - keyPath: KeyPath, depth: Int, accumulator: List, currentPartialKeyPath: KeyPath - ) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this) - } - - override fun addValueCallback(property: T, callback: LottieValueCallback?) { - if (property === LottieProperty.ELLIPSE_SIZE) { - sizeAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.POSITION) { - positionAnimation.setValueCallback(callback as LottieValueCallback?) - } - } - - companion object { - private const val ELLIPSE_CONTROL_POINT_PERCENTAGE = 0.55228f - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java deleted file mode 100644 index 89bccbb8..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/FillContent.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import static com.airbnb.lottie.utils.MiscUtils.clamp; - -import android.graphics.BlurMaskFilter; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.RectF; - -import androidx.annotation.Nullable; -import androidx.core.graphics.PaintCompat; - -import com.airbnb.lottie.L; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.LPaint; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.DropShadowKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.content.ShapeFill; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.ArrayList; -import java.util.List; - -public class FillContent - implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { - - private final Path path = new Path(); - private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG); - private final BaseLayer layer; - private final String name; - private final boolean hidden; - private final List paths = new ArrayList<>(); - private final BaseKeyframeAnimation colorAnimation; - private final BaseKeyframeAnimation opacityAnimation; - @Nullable private BaseKeyframeAnimation colorFilterAnimation; - private final LottieDrawable lottieDrawable; - @Nullable private BaseKeyframeAnimation blurAnimation; - float blurMaskFilterRadius; - - @Nullable private DropShadowKeyframeAnimation dropShadowAnimation; - - public FillContent(final LottieDrawable lottieDrawable, BaseLayer layer, ShapeFill fill) { - this.layer = layer; - name = fill.getName(); - hidden = fill.isHidden(); - this.lottieDrawable = lottieDrawable; - if (layer.getBlurEffect() != null) { - blurAnimation = layer.getBlurEffect().getBlurriness().createAnimation(); - blurAnimation.addUpdateListener(this); - layer.addAnimation(blurAnimation); - } - if (layer.getDropShadowEffect() != null) { - dropShadowAnimation = new DropShadowKeyframeAnimation(this, layer, layer.getDropShadowEffect()); - } - - if (fill.getColor() == null || fill.getOpacity() == null) { - colorAnimation = null; - opacityAnimation = null; - return; - } - - PaintCompat.setBlendMode(paint, layer.getBlendMode().toNativeBlendMode()); - - path.setFillType(fill.getFillType()); - - colorAnimation = fill.getColor().createAnimation(); - colorAnimation.addUpdateListener(this); - layer.addAnimation(colorAnimation); - opacityAnimation = fill.getOpacity().createAnimation(); - opacityAnimation.addUpdateListener(this); - layer.addAnimation(opacityAnimation); - } - - @Override public void onValueChanged() { - lottieDrawable.invalidateSelf(); - } - - @Override public void setContents(List contentsBefore, List contentsAfter) { - for (int i = 0; i < contentsAfter.size(); i++) { - Content content = contentsAfter.get(i); - if (content instanceof PathContent) { - paths.add((PathContent) content); - } - } - } - - @Override public String getName() { - return name; - } - - @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - if (hidden) { - return; - } - if (L.isTraceEnabled()) { - L.beginSection("FillContent#draw"); - } - int color = ((ColorKeyframeAnimation) this.colorAnimation).getIntValue(); - int alpha = (int) ((parentAlpha / 255f * opacityAnimation.getValue() / 100f) * 255); - paint.setColor((clamp(alpha, 0, 255) << 24) | (color & 0xFFFFFF)); - - if (colorFilterAnimation != null) { - paint.setColorFilter(colorFilterAnimation.getValue()); - } - - if (blurAnimation != null) { - float blurRadius = blurAnimation.getValue(); - if (blurRadius == 0f) { - paint.setMaskFilter(null); - } else if (blurRadius != blurMaskFilterRadius) { - BlurMaskFilter blur = layer.getBlurMaskFilter(blurRadius); - paint.setMaskFilter(blur); - } - blurMaskFilterRadius = blurRadius; - } - if (dropShadowAnimation != null) { - dropShadowAnimation.applyTo(paint); - } - - path.reset(); - for (int i = 0; i < paths.size(); i++) { - path.addPath(paths.get(i).path, parentMatrix); - } - - canvas.drawPath(path, paint); - - if (L.isTraceEnabled()) { - L.endSection("FillContent#draw"); - } - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - path.reset(); - for (int i = 0; i < paths.size(); i++) { - this.path.addPath(paths.get(i).path, parentMatrix); - } - path.computeBounds(outBounds, false); - // Add padding to account for rounding errors. - outBounds.set( - outBounds.left - 1, - outBounds.top - 1, - outBounds.right + 1, - outBounds.bottom + 1 - ); - } - - @Override public void resolveKeyPath( - KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - if (property == LottieProperty.COLOR) { - colorAnimation.setValueCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.OPACITY) { - opacityAnimation.setValueCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.COLOR_FILTER) { - if (colorFilterAnimation != null) { - layer.removeAnimation(colorFilterAnimation); - } - - if (callback == null) { - colorFilterAnimation = null; - } else { - colorFilterAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - colorFilterAnimation.addUpdateListener(this); - layer.addAnimation(colorFilterAnimation); - } - } else if (property == LottieProperty.BLUR_RADIUS) { - if (blurAnimation != null) { - blurAnimation.setValueCallback((LottieValueCallback) callback); - } else { - blurAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - blurAnimation.addUpdateListener(this); - layer.addAnimation(blurAnimation); - } - } else if (property == LottieProperty.DROP_SHADOW_COLOR && dropShadowAnimation != null) { - dropShadowAnimation.setColorCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_OPACITY && dropShadowAnimation != null) { - dropShadowAnimation.setOpacityCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_DIRECTION && dropShadowAnimation != null) { - dropShadowAnimation.setDirectionCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_DISTANCE && dropShadowAnimation != null) { - dropShadowAnimation.setDistanceCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_RADIUS && dropShadowAnimation != null) { - dropShadowAnimation.setRadiusCallback((LottieValueCallback) callback); - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java deleted file mode 100644 index 4d851864..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientFillContent.java +++ /dev/null @@ -1,319 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import static com.airbnb.lottie.utils.MiscUtils.clamp; - -import android.graphics.BlurMaskFilter; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.LinearGradient; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.PointF; -import android.graphics.RadialGradient; -import android.graphics.RectF; -import android.graphics.Shader; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.collection.LongSparseArray; - -import com.airbnb.lottie.L; -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.LPaint; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.DropShadowKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.content.GradientColor; -import com.airbnb.lottie.model.content.GradientFill; -import com.airbnb.lottie.model.content.GradientType; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.ArrayList; -import java.util.List; - -public class GradientFillContent - implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { - /** - * Cache the gradients such that it runs at 30fps. - */ - private static final int CACHE_STEPS_MS = 32; - @NonNull private final String name; - private final boolean hidden; - private final BaseLayer layer; - private final LongSparseArray linearGradientCache = new LongSparseArray<>(); - private final LongSparseArray radialGradientCache = new LongSparseArray<>(); - private final Path path = new Path(); - private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG); - private final RectF boundsRect = new RectF(); - private final List paths = new ArrayList<>(); - private final GradientType type; - private final BaseKeyframeAnimation colorAnimation; - private final BaseKeyframeAnimation opacityAnimation; - private final BaseKeyframeAnimation startPointAnimation; - private final BaseKeyframeAnimation endPointAnimation; - @Nullable private BaseKeyframeAnimation colorFilterAnimation; - @Nullable private ValueCallbackKeyframeAnimation colorCallbackAnimation; - private final LottieDrawable lottieDrawable; - private final int cacheSteps; - @Nullable private BaseKeyframeAnimation blurAnimation; - float blurMaskFilterRadius = 0f; - @Nullable private DropShadowKeyframeAnimation dropShadowAnimation; - - public GradientFillContent(final LottieDrawable lottieDrawable, LottieComposition composition, BaseLayer layer, GradientFill fill) { - this.layer = layer; - name = fill.getName(); - hidden = fill.isHidden(); - this.lottieDrawable = lottieDrawable; - type = fill.getGradientType(); - path.setFillType(fill.getFillType()); - cacheSteps = (int) (composition.getDuration() / CACHE_STEPS_MS); - - colorAnimation = fill.getGradientColor().createAnimation(); - colorAnimation.addUpdateListener(this); - layer.addAnimation(colorAnimation); - - opacityAnimation = fill.getOpacity().createAnimation(); - opacityAnimation.addUpdateListener(this); - layer.addAnimation(opacityAnimation); - - startPointAnimation = fill.getStartPoint().createAnimation(); - startPointAnimation.addUpdateListener(this); - layer.addAnimation(startPointAnimation); - - endPointAnimation = fill.getEndPoint().createAnimation(); - endPointAnimation.addUpdateListener(this); - layer.addAnimation(endPointAnimation); - - if (layer.getBlurEffect() != null) { - blurAnimation = layer.getBlurEffect().getBlurriness().createAnimation(); - blurAnimation.addUpdateListener(this); - layer.addAnimation(blurAnimation); - } - if (layer.getDropShadowEffect() != null) { - dropShadowAnimation = new DropShadowKeyframeAnimation(this, layer, layer.getDropShadowEffect()); - } - } - - @Override public void onValueChanged() { - lottieDrawable.invalidateSelf(); - } - - @Override public void setContents(List contentsBefore, List contentsAfter) { - for (int i = 0; i < contentsAfter.size(); i++) { - Content content = contentsAfter.get(i); - if (content instanceof PathContent) { - paths.add((PathContent) content); - } - } - } - - @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - if (hidden) { - return; - } - if (L.isTraceEnabled()) { - L.beginSection("GradientFillContent#draw"); - } - path.reset(); - for (int i = 0; i < paths.size(); i++) { - path.addPath(paths.get(i).path, parentMatrix); - } - - path.computeBounds(boundsRect, false); - - Shader shader; - if (type == GradientType.LINEAR) { - shader = getLinearGradient(); - } else { - shader = getRadialGradient(); - } - shader.setLocalMatrix(parentMatrix); - paint.setShader(shader); - - if (colorFilterAnimation != null) { - paint.setColorFilter(colorFilterAnimation.getValue()); - } - - if (blurAnimation != null) { - float blurRadius = blurAnimation.getValue(); - if (blurRadius == 0f) { - paint.setMaskFilter(null); - } else if (blurRadius != blurMaskFilterRadius){ - BlurMaskFilter blur = new BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL); - paint.setMaskFilter(blur); - } - blurMaskFilterRadius = blurRadius; - } - if (dropShadowAnimation != null) { - dropShadowAnimation.applyTo(paint); - } - - int alpha = (int) ((parentAlpha / 255f * opacityAnimation.getValue() / 100f) * 255); - paint.setAlpha(clamp(alpha, 0, 255)); - - canvas.drawPath(path, paint); - if (L.isTraceEnabled()) { - L.endSection("GradientFillContent#draw"); - } - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - path.reset(); - for (int i = 0; i < paths.size(); i++) { - path.addPath(paths.get(i).path, parentMatrix); - } - - path.computeBounds(outBounds, false); - // Add padding to account for rounding errors. - outBounds.set( - outBounds.left - 1, - outBounds.top - 1, - outBounds.right + 1, - outBounds.bottom + 1 - ); - } - - @Override public String getName() { - return name; - } - - private LinearGradient getLinearGradient() { - int gradientHash = getGradientHash(); - LinearGradient gradient = linearGradientCache.get(gradientHash); - if (gradient != null) { - return gradient; - } - PointF startPoint = startPointAnimation.getValue(); - PointF endPoint = endPointAnimation.getValue(); - GradientColor gradientColor = colorAnimation.getValue(); - int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); - float[] positions = gradientColor.getPositions(); - gradient = new LinearGradient(startPoint.x, startPoint.y, endPoint.x, endPoint.y, colors, - positions, Shader.TileMode.CLAMP); - linearGradientCache.put(gradientHash, gradient); - return gradient; - } - - private RadialGradient getRadialGradient() { - int gradientHash = getGradientHash(); - RadialGradient gradient = radialGradientCache.get(gradientHash); - if (gradient != null) { - return gradient; - } - PointF startPoint = startPointAnimation.getValue(); - PointF endPoint = endPointAnimation.getValue(); - GradientColor gradientColor = colorAnimation.getValue(); - int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); - float[] positions = gradientColor.getPositions(); - float x0 = startPoint.x; - float y0 = startPoint.y; - float x1 = endPoint.x; - float y1 = endPoint.y; - float r = (float) Math.hypot(x1 - x0, y1 - y0); - if (r <= 0) { - r = 0.001f; - } - gradient = new RadialGradient(x0, y0, r, colors, positions, Shader.TileMode.CLAMP); - radialGradientCache.put(gradientHash, gradient); - return gradient; - } - - private int getGradientHash() { - int startPointProgress = Math.round(startPointAnimation.getProgress() * cacheSteps); - int endPointProgress = Math.round(endPointAnimation.getProgress() * cacheSteps); - int colorProgress = Math.round(colorAnimation.getProgress() * cacheSteps); - int hash = 17; - if (startPointProgress != 0) { - hash = hash * 31 * startPointProgress; - } - if (endPointProgress != 0) { - hash = hash * 31 * endPointProgress; - } - if (colorProgress != 0) { - hash = hash * 31 * colorProgress; - } - return hash; - } - - private int[] applyDynamicColorsIfNeeded(int[] colors) { - if (colorCallbackAnimation != null) { - Integer[] dynamicColors = (Integer[]) colorCallbackAnimation.getValue(); - if (colors.length == dynamicColors.length) { - for (int i = 0; i < colors.length; i++) { - colors[i] = dynamicColors[i]; - } - } else { - colors = new int[dynamicColors.length]; - for (int i = 0; i < dynamicColors.length; i++) { - colors[i] = dynamicColors[i]; - } - } - } - return colors; - } - - @Override public void resolveKeyPath( - KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - if (property == LottieProperty.OPACITY) { - opacityAnimation.setValueCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.COLOR_FILTER) { - if (colorFilterAnimation != null) { - layer.removeAnimation(colorFilterAnimation); - } - - if (callback == null) { - colorFilterAnimation = null; - } else { - colorFilterAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - colorFilterAnimation.addUpdateListener(this); - layer.addAnimation(colorFilterAnimation); - } - } else if (property == LottieProperty.GRADIENT_COLOR) { - if (colorCallbackAnimation != null) { - layer.removeAnimation(colorCallbackAnimation); - } - - if (callback == null) { - colorCallbackAnimation = null; - } else { - linearGradientCache.clear(); - radialGradientCache.clear(); - colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>(callback); - colorCallbackAnimation.addUpdateListener(this); - layer.addAnimation(colorCallbackAnimation); - } - } else if (property == LottieProperty.BLUR_RADIUS) { - if (blurAnimation != null) { - blurAnimation.setValueCallback((LottieValueCallback) callback); - } else { - blurAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - blurAnimation.addUpdateListener(this); - layer.addAnimation(blurAnimation); - } - } else if (property == LottieProperty.DROP_SHADOW_COLOR && dropShadowAnimation != null) { - dropShadowAnimation.setColorCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_OPACITY && dropShadowAnimation != null) { - dropShadowAnimation.setOpacityCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_DIRECTION && dropShadowAnimation != null) { - dropShadowAnimation.setDirectionCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_DISTANCE && dropShadowAnimation != null) { - dropShadowAnimation.setDistanceCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.DROP_SHADOW_RADIUS && dropShadowAnimation != null) { - dropShadowAnimation.setRadiusCallback((LottieValueCallback) callback); - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java deleted file mode 100644 index b8f05553..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GradientStrokeContent.java +++ /dev/null @@ -1,181 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import android.graphics.Canvas; -import android.graphics.LinearGradient; -import android.graphics.Matrix; -import android.graphics.PointF; -import android.graphics.RadialGradient; -import android.graphics.RectF; -import android.graphics.Shader; - -import androidx.annotation.Nullable; -import androidx.collection.LongSparseArray; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.model.content.GradientColor; -import com.airbnb.lottie.model.content.GradientStroke; -import com.airbnb.lottie.model.content.GradientType; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.value.LottieValueCallback; - -public class GradientStrokeContent extends BaseStrokeContent { - /** - * Cache the gradients such that it runs at 30fps. - */ - private static final int CACHE_STEPS_MS = 32; - - private final String name; - private final boolean hidden; - private final LongSparseArray linearGradientCache = new LongSparseArray<>(); - private final LongSparseArray radialGradientCache = new LongSparseArray<>(); - private final RectF boundsRect = new RectF(); - - private final GradientType type; - private final int cacheSteps; - private final BaseKeyframeAnimation colorAnimation; - private final BaseKeyframeAnimation startPointAnimation; - private final BaseKeyframeAnimation endPointAnimation; - @Nullable private ValueCallbackKeyframeAnimation colorCallbackAnimation; - - public GradientStrokeContent( - final LottieDrawable lottieDrawable, BaseLayer layer, GradientStroke stroke) { - super(lottieDrawable, layer, stroke.getCapType().toPaintCap(), - stroke.getJoinType().toPaintJoin(), stroke.getMiterLimit(), stroke.getOpacity(), - stroke.getWidth(), stroke.getLineDashPattern(), stroke.getDashOffset()); - - name = stroke.getName(); - type = stroke.getGradientType(); - hidden = stroke.isHidden(); - cacheSteps = (int) (lottieDrawable.getComposition().getDuration() / CACHE_STEPS_MS); - - colorAnimation = stroke.getGradientColor().createAnimation(); - colorAnimation.addUpdateListener(this); - layer.addAnimation(colorAnimation); - - startPointAnimation = stroke.getStartPoint().createAnimation(); - startPointAnimation.addUpdateListener(this); - layer.addAnimation(startPointAnimation); - - endPointAnimation = stroke.getEndPoint().createAnimation(); - endPointAnimation.addUpdateListener(this); - layer.addAnimation(endPointAnimation); - } - - @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - if (hidden) { - return; - } - getBounds(boundsRect, parentMatrix, false); - - Shader shader; - if (type == GradientType.LINEAR) { - shader = getLinearGradient(); - } else { - shader = getRadialGradient(); - } - shader.setLocalMatrix(parentMatrix); - paint.setShader(shader); - - super.draw(canvas, parentMatrix, parentAlpha); - } - - @Override public String getName() { - return name; - } - - private LinearGradient getLinearGradient() { - int gradientHash = getGradientHash(); - LinearGradient gradient = linearGradientCache.get(gradientHash); - if (gradient != null) { - return gradient; - } - PointF startPoint = startPointAnimation.getValue(); - PointF endPoint = endPointAnimation.getValue(); - GradientColor gradientColor = colorAnimation.getValue(); - int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); - float[] positions = gradientColor.getPositions(); - float x0 = startPoint.x; - float y0 = startPoint.y; - float x1 = endPoint.x; - float y1 = endPoint.y; - gradient = new LinearGradient(x0, y0, x1, y1, colors, positions, Shader.TileMode.CLAMP); - linearGradientCache.put(gradientHash, gradient); - return gradient; - } - - private RadialGradient getRadialGradient() { - int gradientHash = getGradientHash(); - RadialGradient gradient = radialGradientCache.get(gradientHash); - if (gradient != null) { - return gradient; - } - PointF startPoint = startPointAnimation.getValue(); - PointF endPoint = endPointAnimation.getValue(); - GradientColor gradientColor = colorAnimation.getValue(); - int[] colors = applyDynamicColorsIfNeeded(gradientColor.getColors()); - float[] positions = gradientColor.getPositions(); - float x0 = startPoint.x; - float y0 = startPoint.y; - float x1 = endPoint.x; - float y1 = endPoint.y; - float r = (float) Math.hypot(x1 - x0, y1 - y0); - gradient = new RadialGradient(x0, y0, r, colors, positions, Shader.TileMode.CLAMP); - radialGradientCache.put(gradientHash, gradient); - return gradient; - } - - private int getGradientHash() { - int startPointProgress = Math.round(startPointAnimation.getProgress() * cacheSteps); - int endPointProgress = Math.round(endPointAnimation.getProgress() * cacheSteps); - int colorProgress = Math.round(colorAnimation.getProgress() * cacheSteps); - int hash = 17; - if (startPointProgress != 0) { - hash = hash * 31 * startPointProgress; - } - if (endPointProgress != 0) { - hash = hash * 31 * endPointProgress; - } - if (colorProgress != 0) { - hash = hash * 31 * colorProgress; - } - return hash; - } - - private int[] applyDynamicColorsIfNeeded(int[] colors) { - if (colorCallbackAnimation != null) { - Integer[] dynamicColors = (Integer[]) colorCallbackAnimation.getValue(); - if (colors.length == dynamicColors.length) { - for (int i = 0; i < colors.length; i++) { - colors[i] = dynamicColors[i]; - } - } else { - colors = new int[dynamicColors.length]; - for (int i = 0; i < dynamicColors.length; i++) { - colors[i] = dynamicColors[i]; - } - } - } - return colors; - } - - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - super.addValueCallback(property, callback); - if (property == LottieProperty.GRADIENT_COLOR) { - if (colorCallbackAnimation != null) { - layer.removeAnimation(colorCallbackAnimation); - } - - if (callback == null) { - colorCallbackAnimation = null; - } else { - colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>(callback); - colorCallbackAnimation.addUpdateListener(this); - layer.addAnimation(colorCallbackAnimation); - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt deleted file mode 100644 index fcbf6007..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/GreedyContent.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.airbnb.lottie.animation.content - -/** - * Content that may want to absorb and take ownership of the content around it. - * For example, merge paths will absorb the shapes above it and repeaters will absorb the content - * above it. - */ -internal interface GreedyContent { - /** - * An iterator of contents that can be used to take ownership of contents. If ownership is taken, - * the content should be removed from the iterator. - * - * - * The contents should be iterated by calling hasPrevious() and previous() so that the list of - * contents is traversed from bottom to top which is the correct order for handling AE logic. - */ - fun absorbContent(contents: ListIterator?) -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java deleted file mode 100644 index c11d4f65..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/KeyPathElementContent.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import com.airbnb.lottie.model.KeyPathElement; - -public interface KeyPathElementContent extends KeyPathElement, Content { -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java deleted file mode 100644 index b600e179..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/MergePathsContent.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import android.annotation.TargetApi; -import android.graphics.Path; -import android.os.Build; - -import com.airbnb.lottie.model.content.MergePaths; - -import java.util.ArrayList; -import java.util.List; -import java.util.ListIterator; - -@TargetApi(Build.VERSION_CODES.KITKAT) -public class MergePathsContent implements PathContent, GreedyContent { - private final Path firstPath = new Path(); - private final Path remainderPath = new Path(); - private final Path path = new Path(); - - private final String name; - private final List pathContents = new ArrayList<>(); - private final MergePaths mergePaths; - - public MergePathsContent(MergePaths mergePaths) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { - throw new IllegalStateException("Merge paths are not supported pre-KitKat."); - } - name = mergePaths.getName(); - this.mergePaths = mergePaths; - } - - @Override public void absorbContent(ListIterator contents) { - // Fast forward the iterator until after this content. - //noinspection StatementWithEmptyBody - while (contents.hasPrevious() && contents.previous() != this) { - } - while (contents.hasPrevious()) { - Content content = contents.previous(); - if (content instanceof PathContent) { - pathContents.add((PathContent) content); - contents.remove(); - } - } - } - - @Override public void setContents(List contentsBefore, List contentsAfter) { - for (int i = 0; i < pathContents.size(); i++) { - pathContents.get(i).setContents(contentsBefore, contentsAfter); - } - } - - @Override public Path getPath() { - path.reset(); - - if (mergePaths.isHidden()) { - return path; - } - - switch (mergePaths.getMode()) { - case MERGE: - addPaths(); - break; - case ADD: - opFirstPathWithRest(Path.Op.UNION); - break; - case SUBTRACT: - opFirstPathWithRest(Path.Op.REVERSE_DIFFERENCE); - break; - case INTERSECT: - opFirstPathWithRest(Path.Op.INTERSECT); - break; - case EXCLUDE_INTERSECTIONS: - opFirstPathWithRest(Path.Op.XOR); - break; - } - - return path; - } - - @Override public String getName() { - return name; - } - - private void addPaths() { - for (int i = 0; i < pathContents.size(); i++) { - path.addPath(pathContents.get(i).path); - } - } - - @TargetApi(Build.VERSION_CODES.KITKAT) - private void opFirstPathWithRest(Path.Op op) { - remainderPath.reset(); - firstPath.reset(); - - for (int i = pathContents.size() - 1; i >= 1; i--) { - PathContent content = pathContents.get(i); - - if (content instanceof ContentGroup) { - List pathList = ((ContentGroup) content).getPathList(); - for (int j = pathList.size() - 1; j >= 0; j--) { - Path path = pathList.get(j).path; - path.transform(((ContentGroup) content).getTransformationMatrix()); - this.remainderPath.addPath(path); - } - } else { - remainderPath.addPath(content.path); - } - } - - PathContent lastContent = pathContents.get(0); - if (lastContent instanceof ContentGroup) { - List pathList = ((ContentGroup) lastContent).getPathList(); - for (int j = 0; j < pathList.size(); j++) { - Path path = pathList.get(j).path; - path.transform(((ContentGroup) lastContent).getTransformationMatrix()); - this.firstPath.addPath(path); - } - } else { - firstPath.set(lastContent.path); - } - - path.op(firstPath, remainderPath, op); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java deleted file mode 100644 index 4f56c435..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ModifierContent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.airbnb.lottie.animation.content; - -public interface ModifierContent { -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt deleted file mode 100644 index ce0e638d..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PathContent.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.airbnb.lottie.animation.content - -import androidx.compose.ui.graphics.Path - - -interface PathContent : Content { - fun getPath() : Path -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt deleted file mode 100644 index 8862d5c0..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/PolystarContent.kt +++ /dev/null @@ -1,363 +0,0 @@ -package com.airbnb.lottie.animation.content - -import android.graphics.Path -import android.graphics.PathMeasure -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation -import com.airbnb.lottie.value.LottieValueCallback -import kotlin.math.atan2 -import kotlin.math.ceil -import kotlin.math.cos -import kotlin.math.floor -import kotlin.math.sin - -class PolystarContent - ( - lottieDrawable: LottieDrawable, layer: BaseLayer, - polystarShape: PolystarShape -) : PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { - private val path = Path() - private val lastSegmentPath = Path() - private val lastSegmentPathMeasure = PathMeasure() - private val lastSegmentPosition = FloatArray(2) - - override val name: String = polystarShape.getName() - private val lottieDrawable: LottieDrawable = lottieDrawable - private val type: PolystarShape.Type = polystarShape.getType() - private val hidden: Boolean = polystarShape.isHidden() - private val isReversed: Boolean = polystarShape.isReversed() - private val pointsAnimation: BaseKeyframeAnimation<*, Float> = - polystarShape.getPoints().createAnimation() - private val positionAnimation: BaseKeyframeAnimation<*, PointF> = - polystarShape.getPosition().createAnimation() - private val rotationAnimation: BaseKeyframeAnimation<*, Float>? = - polystarShape.getRotation().createAnimation() - private var innerRadiusAnimation: BaseKeyframeAnimation<*, Float>? = null - private val outerRadiusAnimation: BaseKeyframeAnimation<*, Float> = - polystarShape.getOuterRadius().createAnimation() - private var innerRoundednessAnimation: BaseKeyframeAnimation<*, Float>? = null - private val outerRoundednessAnimation: BaseKeyframeAnimation<*, Float>? = - polystarShape.getOuterRoundedness().createAnimation() - - private val trimPaths = CompoundTrimPathContent() - private var isPathValid = false - - init { - if (type == PolystarShape.Type.STAR) { - innerRadiusAnimation = polystarShape.getInnerRadius().createAnimation() - innerRoundednessAnimation = polystarShape.getInnerRoundedness().createAnimation() - } else { - innerRadiusAnimation = null - innerRoundednessAnimation = null - } - - layer.addAnimation(pointsAnimation) - layer.addAnimation(positionAnimation) - layer.addAnimation(rotationAnimation) - layer.addAnimation(outerRadiusAnimation) - layer.addAnimation(outerRoundednessAnimation) - if (type == PolystarShape.Type.STAR) { - layer.addAnimation(innerRadiusAnimation) - layer.addAnimation(innerRoundednessAnimation) - } - - pointsAnimation.addUpdateListener(this) - positionAnimation.addUpdateListener(this) - rotationAnimation.addUpdateListener(this) - outerRadiusAnimation.addUpdateListener(this) - outerRoundednessAnimation.addUpdateListener(this) - if (type == PolystarShape.Type.STAR) { - innerRadiusAnimation.addUpdateListener(this) - innerRoundednessAnimation.addUpdateListener(this) - } - } - - override fun onValueChanged() { - invalidate() - } - - private fun invalidate() { - isPathValid = false - lottieDrawable.invalidateSelf() - } - - override fun setContents(contentsBefore: List?, contentsAfter: List?) { - for (i in contentsBefore!!.indices) { - val content = contentsBefore[i] - if (content is TrimPathContent && - content.type == ShapeTrimPath.Type.SIMULTANEOUSLY - ) { - val trimPath = content - trimPaths.addTrimPath(trimPath) - trimPath.addListener(this) - } - } - } - - override fun getPath(): Path { - if (isPathValid) { - return path - } - - path.reset() - - if (hidden) { - isPathValid = true - return path - } - - when (type) { - PolystarShape.Type.STAR -> createStarPath() - PolystarShape.Type.POLYGON -> createPolygonPath() - } - path.close() - - trimPaths.apply(path) - - isPathValid = true - return path - } - - private fun createStarPath() { - val points: Float = pointsAnimation.value - var currentAngle = - (if (rotationAnimation == null) 0f else rotationAnimation.value).toDouble() - // Start at +y instead of +x - currentAngle -= 90.0 - // convert to radians - currentAngle = Math.toRadians(currentAngle) - // adjust current angle for partial points - var anglePerPoint = (2 * Math.PI / points).toFloat() - if (isReversed) { - anglePerPoint *= -1f - } - val halfAnglePerPoint = anglePerPoint / 2.0f - val partialPointAmount = points - points.toInt() - if (partialPointAmount != 0f) { - currentAngle += (halfAnglePerPoint * (1f - partialPointAmount)).toDouble() - } - - val outerRadius: Float = outerRadiusAnimation.value - val innerRadius: Float = innerRadiusAnimation.value - - var innerRoundedness = 0f - if (innerRoundednessAnimation != null) { - innerRoundedness = innerRoundednessAnimation.value / 100f - } - var outerRoundedness = 0f - if (outerRoundednessAnimation != null) { - outerRoundedness = outerRoundednessAnimation.value / 100f - } - - var x: Float - var y: Float - var previousX: Float - var previousY: Float - var partialPointRadius = 0f - if (partialPointAmount != 0f) { - partialPointRadius = innerRadius + partialPointAmount * (outerRadius - innerRadius) - x = (partialPointRadius * cos(currentAngle)).toFloat() - y = (partialPointRadius * sin(currentAngle)).toFloat() - path.moveTo(x, y) - currentAngle += (anglePerPoint * partialPointAmount / 2f).toDouble() - } else { - x = (outerRadius * cos(currentAngle)).toFloat() - y = (outerRadius * sin(currentAngle)).toFloat() - path.moveTo(x, y) - currentAngle += halfAnglePerPoint.toDouble() - } - - // True means the line will go to outer radius. False means inner radius. - var longSegment = false - val numPoints = ceil(points.toDouble()) * 2 - var i = 0 - while (i < numPoints) { - var radius = if (longSegment) outerRadius else innerRadius - var dTheta = halfAnglePerPoint - if (partialPointRadius != 0f && i.toDouble() == numPoints - 2) { - dTheta = anglePerPoint * partialPointAmount / 2f - } - if (partialPointRadius != 0f && i.toDouble() == numPoints - 1) { - radius = partialPointRadius - } - previousX = x - previousY = y - x = (radius * cos(currentAngle)).toFloat() - y = (radius * sin(currentAngle)).toFloat() - - if (innerRoundedness == 0f && outerRoundedness == 0f) { - path.lineTo(x, y) - } else { - val cp1Theta = - (atan2(previousY.toDouble(), previousX.toDouble()) - Math.PI / 2f).toFloat() - val cp1Dx = cos(cp1Theta.toDouble()).toFloat() - val cp1Dy = sin(cp1Theta.toDouble()).toFloat() - - val cp2Theta = (atan2(y.toDouble(), x.toDouble()) - Math.PI / 2f).toFloat() - val cp2Dx = cos(cp2Theta.toDouble()).toFloat() - val cp2Dy = sin(cp2Theta.toDouble()).toFloat() - - val cp1Roundedness = if (longSegment) innerRoundedness else outerRoundedness - val cp2Roundedness = if (longSegment) outerRoundedness else innerRoundedness - val cp1Radius = if (longSegment) innerRadius else outerRadius - val cp2Radius = if (longSegment) outerRadius else innerRadius - - var cp1x = cp1Radius * cp1Roundedness * POLYSTAR_MAGIC_NUMBER * cp1Dx - var cp1y = cp1Radius * cp1Roundedness * POLYSTAR_MAGIC_NUMBER * cp1Dy - var cp2x = cp2Radius * cp2Roundedness * POLYSTAR_MAGIC_NUMBER * cp2Dx - var cp2y = cp2Radius * cp2Roundedness * POLYSTAR_MAGIC_NUMBER * cp2Dy - if (partialPointAmount != 0f) { - if (i == 0) { - cp1x *= partialPointAmount - cp1y *= partialPointAmount - } else if (i.toDouble() == numPoints - 1) { - cp2x *= partialPointAmount - cp2y *= partialPointAmount - } - } - - path.cubicTo(previousX - cp1x, previousY - cp1y, x + cp2x, y + cp2y, x, y) - } - - currentAngle += dTheta.toDouble() - longSegment = !longSegment - i++ - } - - - val position: PointF = positionAnimation.value - path.offset(position.x, position.y) - path.close() - } - - private fun createPolygonPath() { - val points = floor(pointsAnimation.value.toDouble()).toInt() - var currentAngle = - (if (rotationAnimation == null) 0f else rotationAnimation.value).toDouble() - // Start at +y instead of +x - currentAngle -= 90.0 - // convert to radians - currentAngle = Math.toRadians(currentAngle) - // adjust current angle for partial points - val anglePerPoint = (2 * Math.PI / points).toFloat() - - val roundedness: Float = outerRoundednessAnimation.value / 100f - val radius: Float = outerRadiusAnimation.value - var x: Float - var y: Float - var previousX: Float - var previousY: Float - x = (radius * cos(currentAngle)).toFloat() - y = (radius * sin(currentAngle)).toFloat() - path.moveTo(x, y) - currentAngle += anglePerPoint.toDouble() - - val numPoints = ceil(points.toDouble()) - var i = 0 - while (i < numPoints) { - previousX = x - previousY = y - x = (radius * cos(currentAngle)).toFloat() - y = (radius * sin(currentAngle)).toFloat() - - if (roundedness != 0f) { - val cp1Theta = - (atan2(previousY.toDouble(), previousX.toDouble()) - Math.PI / 2f).toFloat() - val cp1Dx = cos(cp1Theta.toDouble()).toFloat() - val cp1Dy = sin(cp1Theta.toDouble()).toFloat() - - val cp2Theta = (atan2(y.toDouble(), x.toDouble()) - Math.PI / 2f).toFloat() - val cp2Dx = cos(cp2Theta.toDouble()).toFloat() - val cp2Dy = sin(cp2Theta.toDouble()).toFloat() - - val cp1x = radius * roundedness * POLYGON_MAGIC_NUMBER * cp1Dx - val cp1y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp1Dy - val cp2x = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dx - val cp2y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dy - - if (i.toDouble() == numPoints - 1) { - // When there is a huge stroke, it will flash if the path ends where it starts. - // We want the final bezier curve to end *slightly* before the start. - // The close() call at the end will complete the polystar. - // https://github.com/airbnb/lottie-android/issues/2329 - lastSegmentPath.reset() - lastSegmentPath.moveTo(previousX, previousY) - lastSegmentPath.cubicTo( - previousX - cp1x, - previousY - cp1y, - x + cp2x, - y + cp2y, - x, - y - ) - lastSegmentPathMeasure.setPath(lastSegmentPath, false) - lastSegmentPathMeasure.getPosTan( - lastSegmentPathMeasure.length * 0.9999f, - lastSegmentPosition, - null - ) - path.cubicTo( - previousX - cp1x, - previousY - cp1y, - x + cp2x, - y + cp2y, - lastSegmentPosition[0], - lastSegmentPosition[1] - ) - } else { - path.cubicTo(previousX - cp1x, previousY - cp1y, x + cp2x, y + cp2y, x, y) - } - } else { - if (i.toDouble() == numPoints - 1) { - // When there is a huge stroke, it will flash if the path ends where it starts. - // The close() call should make the path effectively equivalent. - // https://github.com/airbnb/lottie-android/issues/2329 - i++ - continue - } - path.lineTo(x, y) - } - - currentAngle += anglePerPoint.toDouble() - i++ - } - - val position: PointF = positionAnimation.value - path.offset(position.x, position.y) - path.close() - } - - override fun resolveKeyPath( - keyPath: KeyPath, depth: Int, accumulator: List, currentPartialKeyPath: KeyPath - ) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this) - } - - override fun addValueCallback(property: T, callback: LottieValueCallback?) { - if (property === LottieProperty.POLYSTAR_POINTS) { - pointsAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.POLYSTAR_ROTATION) { - rotationAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.POSITION) { - positionAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.POLYSTAR_INNER_RADIUS && innerRadiusAnimation != null) { - innerRadiusAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.POLYSTAR_OUTER_RADIUS) { - outerRadiusAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.POLYSTAR_INNER_ROUNDEDNESS && innerRoundednessAnimation != null) { - innerRoundednessAnimation.setValueCallback(callback as LottieValueCallback?) - } else if (property === LottieProperty.POLYSTAR_OUTER_ROUNDEDNESS) { - outerRoundednessAnimation.setValueCallback(callback as LottieValueCallback?) - } - } - - companion object { - /** - * This was empirically derived by creating polystars, converting them to - * curves, and calculating a scale factor. - * It works best for polygons and stars with 3 points and needs more - * work otherwise. - */ - private const val POLYSTAR_MAGIC_NUMBER = .47829f - private const val POLYGON_MAGIC_NUMBER = .25f - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java deleted file mode 100644 index 89a966ff..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RectangleContent.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import android.graphics.Path; -import android.graphics.PointF; -import android.graphics.RectF; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.content.RectangleShape; -import com.airbnb.lottie.model.content.ShapeTrimPath; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.List; - -public class RectangleContent - implements BaseKeyframeAnimation.AnimationListener, KeyPathElementContent, PathContent { - private final Path path = new Path(); - private final RectF rect = new RectF(); - - private final String name; - private final boolean hidden; - private final LottieDrawable lottieDrawable; - private final BaseKeyframeAnimation positionAnimation; - private final BaseKeyframeAnimation sizeAnimation; - private final BaseKeyframeAnimation cornerRadiusAnimation; - - private final CompoundTrimPathContent trimPaths = new CompoundTrimPathContent(); - /** This corner radius is from a layer item. The first one is from the roundedness on this specific rect. */ - @Nullable private BaseKeyframeAnimation roundedCornersAnimation = null; - private boolean isPathValid; - - public RectangleContent(LottieDrawable lottieDrawable, BaseLayer layer, RectangleShape rectShape) { - name = rectShape.getName(); - hidden = rectShape.isHidden(); - this.lottieDrawable = lottieDrawable; - positionAnimation = rectShape.getPosition().createAnimation(); - sizeAnimation = rectShape.getSize().createAnimation(); - cornerRadiusAnimation = rectShape.getCornerRadius().createAnimation(); - - layer.addAnimation(positionAnimation); - layer.addAnimation(sizeAnimation); - layer.addAnimation(cornerRadiusAnimation); - - positionAnimation.addUpdateListener(this); - sizeAnimation.addUpdateListener(this); - cornerRadiusAnimation.addUpdateListener(this); - } - - @Override - public String getName() { - return name; - } - - @Override - public void onValueChanged() { - invalidate(); - } - - private void invalidate() { - isPathValid = false; - lottieDrawable.invalidateSelf(); - } - - @Override - public void setContents(List contentsBefore, List contentsAfter) { - for (int i = 0; i < contentsBefore.size(); i++) { - Content content = contentsBefore.get(i); - if (content instanceof TrimPathContent && - ((TrimPathContent) content).getType() == ShapeTrimPath.Type.SIMULTANEOUSLY) { - TrimPathContent trimPath = (TrimPathContent) content; - trimPaths.addTrimPath(trimPath); - trimPath.addListener(this); - } else if (content instanceof RoundedCornersContent) { - roundedCornersAnimation = ((RoundedCornersContent) content).getRoundedCorners(); - } - } - } - - @Override - public Path getPath() { - if (isPathValid) { - return path; - } - - path.reset(); - - if (hidden) { - isPathValid = true; - return path; - } - - PointF size = sizeAnimation.getValue(); - float halfWidth = size.x / 2f; - float halfHeight = size.y / 2f; - float radius = cornerRadiusAnimation == null ? - 0f : ((FloatKeyframeAnimation) cornerRadiusAnimation).getFloatValue(); - if (radius == 0f && this.roundedCornersAnimation != null) { - radius = Math.min(roundedCornersAnimation.getValue(), Math.min(halfWidth, halfHeight)); - } - float maxRadius = Math.min(halfWidth, halfHeight); - if (radius > maxRadius) { - radius = maxRadius; - } - - // Draw the rectangle top right to bottom left. - PointF position = positionAnimation.getValue(); - - path.moveTo(position.x + halfWidth, position.y - halfHeight + radius); - - path.lineTo(position.x + halfWidth, position.y + halfHeight - radius); - - if (radius > 0) { - rect.set(position.x + halfWidth - 2 * radius, - position.y + halfHeight - 2 * radius, - position.x + halfWidth, - position.y + halfHeight); - path.arcTo(rect, 0, 90, false); - } - - path.lineTo(position.x - halfWidth + radius, position.y + halfHeight); - - if (radius > 0) { - rect.set(position.x - halfWidth, - position.y + halfHeight - 2 * radius, - position.x - halfWidth + 2 * radius, - position.y + halfHeight); - path.arcTo(rect, 90, 90, false); - } - - path.lineTo(position.x - halfWidth, position.y - halfHeight + radius); - - if (radius > 0) { - rect.set(position.x - halfWidth, - position.y - halfHeight, - position.x - halfWidth + 2 * radius, - position.y - halfHeight + 2 * radius); - path.arcTo(rect, 180, 90, false); - } - - path.lineTo(position.x + halfWidth - radius, position.y - halfHeight); - - if (radius > 0) { - rect.set(position.x + halfWidth - 2 * radius, - position.y - halfHeight, - position.x + halfWidth, - position.y - halfHeight + 2 * radius); - path.arcTo(rect, 270, 90, false); - } - path.close(); - - trimPaths.apply(path); - - isPathValid = true; - return path; - } - - @Override - public void resolveKeyPath(KeyPath keyPath, int depth, List accumulator, - KeyPath currentPartialKeyPath) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); - } - - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - if (property == LottieProperty.RECTANGLE_SIZE) { - sizeAnimation.setValueCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.POSITION) { - positionAnimation.setValueCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.CORNER_RADIUS) { - cornerRadiusAnimation.setValueCallback((LottieValueCallback) callback); - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java deleted file mode 100644 index 693ac727..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RepeaterContent.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.Path; -import android.graphics.RectF; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.TransformKeyframeAnimation; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.content.Repeater; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.ListIterator; - -public class RepeaterContent implements DrawingContent, PathContent, GreedyContent, - BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { - private final Matrix matrix = new Matrix(); - private final Path path = new Path(); - - private final LottieDrawable lottieDrawable; - private final BaseLayer layer; - private final String name; - private final boolean hidden; - private final BaseKeyframeAnimation copies; - private final BaseKeyframeAnimation offset; - private final TransformKeyframeAnimation transform; - private ContentGroup contentGroup; - - - public RepeaterContent(LottieDrawable lottieDrawable, BaseLayer layer, Repeater repeater) { - this.lottieDrawable = lottieDrawable; - this.layer = layer; - name = repeater.getName(); - this.hidden = repeater.isHidden(); - copies = repeater.getCopies().createAnimation(); - layer.addAnimation(copies); - copies.addUpdateListener(this); - - offset = repeater.getOffset().createAnimation(); - layer.addAnimation(offset); - offset.addUpdateListener(this); - - transform = repeater.getTransform().createAnimation(); - transform.addAnimationsToLayer(layer); - transform.addListener(this); - } - - @Override public void absorbContent(ListIterator contentsIter) { - // This check prevents a repeater from getting added twice. - // This can happen in the following situation: - // RECTANGLE - // REPEATER 1 - // FILL - // REPEATER 2 - // In this case, the expected structure would be: - // REPEATER 2 - // REPEATER 1 - // RECTANGLE - // FILL - // Without this check, REPEATER 1 will try and absorb contents once it is already inside of - // REPEATER 2. - if (contentGroup != null) { - return; - } - // Fast forward the iterator until after this content. - //noinspection StatementWithEmptyBody - while (contentsIter.hasPrevious() && contentsIter.previous() != this) { - } - List contents = new ArrayList<>(); - while (contentsIter.hasPrevious()) { - contents.add(contentsIter.previous()); - contentsIter.remove(); - } - Collections.reverse(contents); - contentGroup = new ContentGroup(lottieDrawable, layer, "Repeater", hidden, contents, null); - } - - @Override public String getName() { - return name; - } - - @Override public void setContents(List contentsBefore, List contentsAfter) { - contentGroup.setContents(contentsBefore, contentsAfter); - } - - @Override public Path getPath() { - Path contentPath = contentGroup.getPath(); - path.reset(); - float copies = this.copies.getValue(); - float offset = this.offset.getValue(); - for (int i = (int) copies - 1; i >= 0; i--) { - matrix.set(transform.getMatrixForRepeater(i + offset)); - path.addPath(contentPath, matrix); - } - return path; - } - - @Override public void draw(Canvas canvas, Matrix parentMatrix, int alpha) { - float copies = this.copies.getValue(); - float offset = this.offset.getValue(); - //noinspection ConstantConditions - float startOpacity = this.transform.getStartOpacity().getValue() / 100f; - //noinspection ConstantConditions - float endOpacity = this.transform.getEndOpacity().getValue() / 100f; - for (int i = (int) copies - 1; i >= 0; i--) { - matrix.set(parentMatrix); - matrix.preConcat(transform.getMatrixForRepeater(i + offset)); - float newAlpha = alpha * MiscUtils.lerp(startOpacity, endOpacity, i / copies); - contentGroup.draw(canvas, matrix, (int) newAlpha); - } - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - contentGroup.getBounds(outBounds, parentMatrix, applyParents); - } - - @Override public void onValueChanged() { - lottieDrawable.invalidateSelf(); - } - - @Override public void resolveKeyPath( - KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); - for (int i = 0; i < contentGroup.contents.size(); i++) { - Content content = contentGroup.contents.get(i); - if (content instanceof KeyPathElementContent) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, (KeyPathElementContent) content); - } - } - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - if (transform.applyValueCallback(property, callback)) { - return; - } - - if (property == LottieProperty.REPEATER_COPIES) { - copies.setValueCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.REPEATER_OFFSET) { - offset.setValueCallback((LottieValueCallback) callback); - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java deleted file mode 100644 index d4453be0..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/RoundedCornersContent.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import android.graphics.PointF; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.model.CubicCurveData; -import com.airbnb.lottie.model.content.RoundedCorners; -import com.airbnb.lottie.model.content.ShapeData; -import com.airbnb.lottie.model.layer.BaseLayer; - -import java.util.ArrayList; -import java.util.List; - -public class RoundedCornersContent implements ShapeModifierContent, BaseKeyframeAnimation.AnimationListener { - /** - * Copied from: - * https://github.com/airbnb/lottie-web/blob/bb71072a26e03f1ca993da60915860f39aae890b/player/js/utils/common.js#L47 - */ - private static final float ROUNDED_CORNER_MAGIC_NUMBER = 0.5519f; - - private final LottieDrawable lottieDrawable; - private final String name; - private final BaseKeyframeAnimation roundedCorners; - @Nullable private ShapeData shapeData; - - public RoundedCornersContent(LottieDrawable lottieDrawable, BaseLayer layer, RoundedCorners roundedCorners) { - this.lottieDrawable = lottieDrawable; - this.name = roundedCorners.getName(); - this.roundedCorners = roundedCorners.getCornerRadius().createAnimation(); - layer.addAnimation(this.roundedCorners); - this.roundedCorners.addUpdateListener(this); - } - - @Override public String getName() { - return name; - } - - @Override public void onValueChanged() { - lottieDrawable.invalidateSelf(); - } - - @Override public void setContents(List contentsBefore, List contentsAfter) { - // Do nothing. - } - - public BaseKeyframeAnimation getRoundedCorners() { - return roundedCorners; - } - - /** - * Rounded corner algorithm: - * Iterate through each vertex. - * If a vertex is a sharp corner, it rounds it. - * If a vertex has control points, it is already rounded, so it does nothing. - *

    - * To round a vertex: - * Split the vertex into two. - * Move vertex 1 directly towards the previous vertex. - * Set vertex 1's in control point to itself so it is not rounded on that side. - * Extend vertex 1's out control point towards the original vertex. - *

    - * Repeat for vertex 2: - * Move vertex 2 directly towards the next vertex. - * Set vertex 2's out point to itself so it is not rounded on that side. - * Extend vertex 2's in control point towards the original vertex. - *

    - * The distance that the vertices and control points are moved are relative to the - * shape's vertex distances and the roundedness set in the animation. - */ - @Override public ShapeData modifyShape(ShapeData startingShapeData) { - List startingCurves = startingShapeData.getCurves(); - if (startingCurves.size() <= 2) { - return startingShapeData; - } - float roundedness = roundedCorners.getValue(); - if (roundedness == 0f) { - return startingShapeData; - } - - ShapeData modifiedShapeData = getShapeData(startingShapeData); - modifiedShapeData.setInitialPoint(startingShapeData.getInitialPoint().x, startingShapeData.getInitialPoint().y); - List modifiedCurves = modifiedShapeData.getCurves(); - int modifiedCurvesIndex = 0; - boolean isClosed = startingShapeData.isClosed(); - - // i represents which vertex we are currently on. Refer to the docs of CubicCurveData prior to working with - // this code. - // When i == 0 - // vertex=ShapeData.initialPoint - // inCp=if closed vertex else curves[size - 1].cp2 - // outCp=curves[0].cp1 - // When i == 1 - // vertex=curves[0].vertex - // inCp=curves[0].cp2 - // outCp=curves[1].cp1. - // When i == size - 1 - // vertex=curves[size - 1].vertex - // inCp=curves[size - 1].cp2 - // outCp=if closed vertex else curves[0].cp1 - for (int i = 0; i < startingCurves.size(); i++) { - CubicCurveData startingCurve = startingCurves.get(i); - CubicCurveData previousCurve = startingCurves.get(floorMod(i - 1, startingCurves.size())); - CubicCurveData previousPreviousCurve = startingCurves.get(floorMod(i - 2, startingCurves.size())); - PointF vertex = (i == 0 && !isClosed) ? startingShapeData.getInitialPoint() : previousCurve.getVertex(); - PointF inPoint = (i == 0 && !isClosed) ? vertex : previousCurve.getControlPoint2(); - PointF outPoint = startingCurve.getControlPoint1(); - PointF previousVertex = previousPreviousCurve.getVertex(); - PointF nextVertex = startingCurve.getVertex(); - - // We can't round the corner of the end of a non-closed curve. - boolean isEndOfCurve = !startingShapeData.isClosed() && (i == 0 || i == startingCurves.size() - 1); - if (inPoint.equals(vertex) && outPoint.equals(vertex) && !isEndOfCurve) { - // This vertex is a point. Round its corners - float dxToPreviousVertex = vertex.x - previousVertex.x; - float dyToPreviousVertex = vertex.y - previousVertex.y; - float dxToNextVertex = nextVertex.x - vertex.x; - float dyToNextVertex = nextVertex.y - vertex.y; - - float dToPreviousVertex = (float) Math.hypot(dxToPreviousVertex, dyToPreviousVertex); - float dToNextVertex = (float) Math.hypot(dxToNextVertex, dyToNextVertex); - - float previousVertexPercent = Math.min(roundedness / dToPreviousVertex, 0.5f); - float nextVertexPercent = Math.min(roundedness / dToNextVertex, 0.5f); - - // Split the vertex into two and move each vertex towards the previous/next vertex. - float newVertex1X = vertex.x + (previousVertex.x - vertex.x) * previousVertexPercent; - float newVertex1Y = vertex.y + (previousVertex.y - vertex.y) * previousVertexPercent; - float newVertex2X = vertex.x + (nextVertex.x - vertex.x) * nextVertexPercent; - float newVertex2Y = vertex.y + (nextVertex.y - vertex.y) * nextVertexPercent; - - // Extend the new vertex control point towards the original vertex. - float newVertex1OutPointX = newVertex1X - (newVertex1X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER; - float newVertex1OutPointY = newVertex1Y - (newVertex1Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER; - float newVertex2InPointX = newVertex2X - (newVertex2X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER; - float newVertex2InPointY = newVertex2Y - (newVertex2Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER; - - // Remap vertex/in/out point to CubicCurveData. - // Refer to the docs for CubicCurveData for more info on the difference. - CubicCurveData previousCurveData = modifiedCurves.get(floorMod(modifiedCurvesIndex - 1, modifiedCurves.size())); - CubicCurveData currentCurveData = modifiedCurves.get(modifiedCurvesIndex); - previousCurveData.setControlPoint2(newVertex1X, newVertex1Y); - previousCurveData.setVertex(newVertex1X, newVertex1Y); - if (i == 0) { - modifiedShapeData.setInitialPoint(newVertex1X, newVertex1Y); - } - currentCurveData.setControlPoint1(newVertex1OutPointX, newVertex1OutPointY); - modifiedCurvesIndex++; - - previousCurveData = currentCurveData; - currentCurveData = modifiedCurves.get(modifiedCurvesIndex); - previousCurveData.setControlPoint2(newVertex2InPointX, newVertex2InPointY); - previousCurveData.setVertex(newVertex2X, newVertex2Y); - currentCurveData.setControlPoint1(newVertex2X, newVertex2Y); - modifiedCurvesIndex++; - } else { - // This vertex is not a point. Don't modify it. Refer to the documentation above and for CubicCurveData for mapping a vertex - // oriented point to CubicCurveData (path segments). - CubicCurveData previousCurveData = modifiedCurves.get(floorMod(modifiedCurvesIndex - 1, modifiedCurves.size())); - CubicCurveData currentCurveData = modifiedCurves.get(modifiedCurvesIndex); - previousCurveData.setControlPoint2(previousCurve.getControlPoint2().x, previousCurve.getControlPoint2().y); - previousCurveData.setVertex(previousCurve.getVertex().x, previousCurve.getVertex().y); - currentCurveData.setControlPoint1(startingCurve.getControlPoint1().x, startingCurve.getControlPoint1().y); - modifiedCurvesIndex++; - } - } - return modifiedShapeData; - } - - /** - * Returns a shape data with the correct number of vertices for the rounded corners shape. - * This just returns the object. It does not update any values within the shape. - */ - @NonNull - private ShapeData getShapeData(ShapeData startingShapeData) { - List startingCurves = startingShapeData.getCurves(); - boolean isClosed = startingShapeData.isClosed(); - int vertices = 0; - for (int i = startingCurves.size() - 1; i >= 0; i--) { - CubicCurveData startingCurve = startingCurves.get(i); - CubicCurveData previousCurve = startingCurves.get(floorMod(i - 1, startingCurves.size())); - PointF vertex = (i == 0 && !isClosed) ? startingShapeData.getInitialPoint() : previousCurve.getVertex(); - PointF inPoint = (i == 0 && !isClosed) ? vertex : previousCurve.getControlPoint2(); - PointF outPoint = startingCurve.getControlPoint1(); - - boolean isEndOfCurve = !startingShapeData.isClosed() && (i == 0 || i == startingCurves.size() - 1); - if (inPoint.equals(vertex) && outPoint.equals(vertex) && !isEndOfCurve) { - vertices += 2; - } else { - vertices += 1; - } - } - if (shapeData == null || shapeData.getCurves().size() != vertices) { - List newCurves = new ArrayList<>(vertices); - for (int i = 0; i < vertices; i++) { - newCurves.add(new CubicCurveData()); - } - shapeData = new ShapeData(new PointF(0f, 0f), false, newCurves); - } - shapeData.setClosed(isClosed); - return shapeData; - } - - /** - * Copied from the API 24+ AOSP source. - */ - private static int floorMod(int x, int y) { - return x - floorDiv(x, y) * y; - } - - /** - * Copied from the API 24+ AOSP source. - */ - private static int floorDiv(int x, int y) { - int r = x / y; - // if the signs are different and modulo not zero, round down - if ((x ^ y) < 0 && (r * y != x)) { - r--; - } - return r; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java deleted file mode 100644 index 03869458..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeContent.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import android.graphics.Path; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ShapeKeyframeAnimation; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.content.ShapePath; -import com.airbnb.lottie.model.content.ShapeTrimPath; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.ArrayList; -import java.util.List; - -public class ShapeContent implements PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent { - private final Path path = new Path(); - - private final String name; - private final boolean hidden; - private final LottieDrawable lottieDrawable; - private final ShapeKeyframeAnimation shapeAnimation; - @Nullable private List shapeModifierContents; - - private boolean isPathValid; - private final CompoundTrimPathContent trimPaths = new CompoundTrimPathContent(); - - public ShapeContent(LottieDrawable lottieDrawable, BaseLayer layer, ShapePath shape) { - name = shape.getName(); - hidden = shape.isHidden(); - this.lottieDrawable = lottieDrawable; - shapeAnimation = shape.getShapePath().createAnimation(); - layer.addAnimation(shapeAnimation); - shapeAnimation.addUpdateListener(this); - } - - @Override public void onValueChanged() { - invalidate(); - } - - private void invalidate() { - isPathValid = false; - lottieDrawable.invalidateSelf(); - } - - @Override public void setContents(List contentsBefore, List contentsAfter) { - @Nullable List shapeModifierContents = null; - for (int i = 0; i < contentsBefore.size(); i++) { - Content content = contentsBefore.get(i); - if (content instanceof TrimPathContent && - ((TrimPathContent) content).getType() == ShapeTrimPath.Type.SIMULTANEOUSLY) { - // Trim path individually will be handled by the stroke where paths are combined. - TrimPathContent trimPath = (TrimPathContent) content; - trimPaths.addTrimPath(trimPath); - trimPath.addListener(this); - } else if (content instanceof ShapeModifierContent) { - if (shapeModifierContents == null) { - shapeModifierContents = new ArrayList<>(); - } - shapeModifierContents.add((ShapeModifierContent) content); - } - } - shapeAnimation.setShapeModifiers(shapeModifierContents); - } - - @Override public Path getPath() { - if (isPathValid && !shapeAnimation.hasValueCallback()) { - return path; - } - - path.reset(); - - if (hidden) { - isPathValid = true; - return path; - } - - Path shapeAnimationPath = shapeAnimation.getValue(); - if (shapeAnimationPath == null) { - // It is unclear why this ever returns null but it seems to in rare cases. - // https://github.com/airbnb/lottie-android/issues/1632 - return path; - } - path.set(shapeAnimationPath); - path.setFillType(Path.FillType.EVEN_ODD); - - trimPaths.apply(path); - - isPathValid = true; - return path; - } - - @Override public String getName() { - return name; - } - - @Override public void resolveKeyPath( - KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { - MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - if (property == LottieProperty.PATH) { - shapeAnimation.setValueCallback((LottieValueCallback) callback); - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt deleted file mode 100644 index 2a9bfb41..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/ShapeModifierContent.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.airbnb.lottie.animation.content - -import com.airbnb.lottie.model.content.ShapeData - -interface ShapeModifierContent : Content { - - fun modifyShape(shapeData: ShapeData?): ShapeData? -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java deleted file mode 100644 index 212aa55f..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/StrokeContent.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import static com.airbnb.lottie.LottieProperty.STROKE_COLOR; - -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.Matrix; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.model.content.ShapeStroke; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.value.LottieValueCallback; - -public class StrokeContent extends BaseStrokeContent { - - private final BaseLayer layer; - private final String name; - private final boolean hidden; - private final BaseKeyframeAnimation colorAnimation; - @Nullable private BaseKeyframeAnimation colorFilterAnimation; - - public StrokeContent(final LottieDrawable lottieDrawable, BaseLayer layer, ShapeStroke stroke) { - super(lottieDrawable, layer, stroke.getCapType().toPaintCap(), - stroke.getJoinType().toPaintJoin(), stroke.getMiterLimit(), stroke.getOpacity(), - stroke.getWidth(), stroke.getLineDashPattern(), stroke.getDashOffset()); - this.layer = layer; - name = stroke.getName(); - hidden = stroke.isHidden(); - colorAnimation = stroke.getColor().createAnimation(); - colorAnimation.addUpdateListener(this); - layer.addAnimation(colorAnimation); - } - - @Override public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - if (hidden) { - return; - } - paint.setColor(((ColorKeyframeAnimation) colorAnimation).getIntValue()); - if (colorFilterAnimation != null) { - paint.setColorFilter(colorFilterAnimation.getValue()); - } - super.draw(canvas, parentMatrix, parentAlpha); - } - - @Override public String getName() { - return name; - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - super.addValueCallback(property, callback); - if (property == STROKE_COLOR) { - colorAnimation.setValueCallback((LottieValueCallback) callback); - } else if (property == LottieProperty.COLOR_FILTER) { - if (colorFilterAnimation != null) { - layer.removeAnimation(colorFilterAnimation); - } - - if (callback == null) { - colorFilterAnimation = null; - } else { - colorFilterAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - colorFilterAnimation.addUpdateListener(this); - layer.addAnimation(colorAnimation); - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java deleted file mode 100644 index 9dd77b20..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/TrimPathContent.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.airbnb.lottie.animation.content; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.model.content.ShapeTrimPath; -import com.airbnb.lottie.model.layer.BaseLayer; - -import java.util.ArrayList; -import java.util.List; - -public class TrimPathContent implements Content, BaseKeyframeAnimation.AnimationListener { - - private final String name; - private final boolean hidden; - private final List listeners = new ArrayList<>(); - private final ShapeTrimPath.Type type; - private final BaseKeyframeAnimation startAnimation; - private final BaseKeyframeAnimation endAnimation; - private final BaseKeyframeAnimation offsetAnimation; - - public TrimPathContent(BaseLayer layer, ShapeTrimPath trimPath) { - name = trimPath.getName(); - hidden = trimPath.isHidden(); - type = trimPath.getType(); - startAnimation = trimPath.getStart().createAnimation(); - endAnimation = trimPath.getEnd().createAnimation(); - offsetAnimation = trimPath.getOffset().createAnimation(); - - layer.addAnimation(startAnimation); - layer.addAnimation(endAnimation); - layer.addAnimation(offsetAnimation); - - startAnimation.addUpdateListener(this); - endAnimation.addUpdateListener(this); - offsetAnimation.addUpdateListener(this); - } - - @Override public void onValueChanged() { - for (int i = 0; i < listeners.size(); i++) { - listeners.get(i).onValueChanged(); - } - } - - @Override public void setContents(List contentsBefore, List contentsAfter) { - // Do nothing. - } - - @Override public String getName() { - return name; - } - - void addListener(BaseKeyframeAnimation.AnimationListener listener) { - listeners.add(listener); - } - - ShapeTrimPath.Type getType() { - return type; - } - - public BaseKeyframeAnimation getStart() { - return startAnimation; - } - - public BaseKeyframeAnimation getEnd() { - return endAnimation; - } - - public BaseKeyframeAnimation getOffset() { - return offsetAnimation; - } - - public boolean isHidden() { - return hidden; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java deleted file mode 100644 index 24cec408..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/content/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.animation.content; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt deleted file mode 100644 index d39739dd..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.kt +++ /dev/null @@ -1,318 +0,0 @@ -package com.airbnb.lottie.animation.keyframe - -import android.annotation.SuppressLint -import androidx.annotation.FloatRange -import com.airbnb.lottie.L -import com.airbnb.lottie.value.Keyframe -import com.airbnb.lottie.value.LottieValueCallback - -/** - * @param Keyframe type - * @param Animation type - */ -@SuppressLint("RestrictedApi") -abstract class BaseKeyframeAnimation internal constructor(keyframes: List>) { - interface AnimationListener { - fun onValueChanged() - } - - // This is not a Set because we don't want to create an iterator object on every setProgress. - val listeners: MutableList = ArrayList(1) - private var isDiscrete = false - - private val keyframesWrapper: KeyframesWrapper = wrap(keyframes) - protected var progress: Float = 0f - protected var valueCallback: LottieValueCallback? = null - - private var cachedGetValue: A? = null - - private var cachedStartDelayProgress = -1f - private var cachedEndProgress = -1f - - fun setIsDiscrete() { - isDiscrete = true - } - - fun addUpdateListener(listener: AnimationListener) { - listeners.add(listener) - } - - open fun setProgress(/*@FloatRange(from = 0f, to = 1f)*/ progress: Float) { - var progress = progress - if (keyframesWrapper.isEmpty) { - return - } - if (progress < startDelayProgress) { - progress = startDelayProgress - } else if (progress > endProgress) { - progress = endProgress - } - - if (progress == this.progress) { - return - } - this.progress = progress - if (keyframesWrapper.isValueChanged(progress)) { - notifyListeners() - } - } - - open fun notifyListeners() { - for (i in listeners.indices) { - listeners[i].onValueChanged() - } - } - - val currentKeyframe: Keyframe - get() { - val keyframe: Keyframe = keyframesWrapper.currentKeyframe - return keyframe - } - - val linearCurrentKeyframeProgress: Float - /** - * Returns the progress into the current keyframe between 0 and 1. This does not take into account - * any interpolation that the keyframe may have. - */ - get() { - if (isDiscrete) { - return 0f - } - - val keyframe = currentKeyframe - if (keyframe.isStatic) { - return 0f - } - val progressIntoFrame = progress - keyframe.startProgress - val keyframeProgress = keyframe.endProgress - keyframe.startProgress - return progressIntoFrame / keyframeProgress - } - - val interpolatedCurrentKeyframeProgress: Float - /** - * Takes the value of [.getLinearCurrentKeyframeProgress] and interpolates it with - * the current keyframe's interpolator. - */ - get() { - val keyframe = currentKeyframe - // Keyframe should not be null here but there seems to be a Xiaomi Android 10 specific crash. - // https://github.com/airbnb/lottie-android/issues/2050 - // https://github.com/airbnb/lottie-android/issues/2483 - if (keyframe == null || keyframe.isStatic || keyframe.interpolator == null) { - return 0f - } - return keyframe.interpolator.getInterpolation(linearCurrentKeyframeProgress) - } - -// @get:FloatRange(from = 0f, to = 1f) - @get:SuppressLint("Range") - private val startDelayProgress: Float - get() { - if (cachedStartDelayProgress == -1f) { - cachedStartDelayProgress = keyframesWrapper.startDelayProgress - } - return cachedStartDelayProgress - } - -// @get:FloatRange(from = 0f, to = 1f) - @get:SuppressLint("Range") - open val endProgress: Float - get() { - if (cachedEndProgress == -1f) { - cachedEndProgress = keyframesWrapper.endProgress - } - return cachedEndProgress - } - - open val value: A? - get() { - val value: A - - val linearProgress = linearCurrentKeyframeProgress - if (valueCallback == null && keyframesWrapper.isCachedValueEnabled(linearProgress)) { - return cachedGetValue - } - val keyframe = currentKeyframe - - if (keyframe.xInterpolator != null && keyframe.yInterpolator != null) { - val xProgress = keyframe.xInterpolator.getInterpolation(linearProgress) - val yProgress = keyframe.yInterpolator.getInterpolation(linearProgress) - value = getValue(keyframe, linearProgress, xProgress, yProgress) - } else { - val progress = interpolatedCurrentKeyframeProgress - value = getValue(keyframe, progress) - } - - cachedGetValue = value - return value - } - - fun getProgress(): Float { - return progress - } - - fun setValueCallback(valueCallback: LottieValueCallback?) { - if (this.valueCallback != null) { - this.valueCallback!!.setAnimation(null) - } - this.valueCallback = valueCallback - valueCallback?.setAnimation(this) - } - - fun hasValueCallback(): Boolean { - return valueCallback != null - } - - /** - * keyframeProgress will be [0, 1] unless the interpolator has overshoot in which case, this - * should be able to handle values outside of that range. - */ - abstract fun getValue(keyframe: Keyframe?, keyframeProgress: Float): A - - /** - * Similar to [.getValue] but used when an animation has separate interpolators for the X and Y axis. - */ - protected open fun getValue( - keyframe: Keyframe?, - linearKeyframeProgress: Float, - xKeyframeProgress: Float, - yKeyframeProgress: Float - ): A { - throw UnsupportedOperationException("This animation does not support split dimensions!") - } - - private interface KeyframesWrapper { - val isEmpty: Boolean - - fun isValueChanged(progress: Float): Boolean - - val currentKeyframe: Keyframe - -// @get:FloatRange(from = 0f, to = 1f) - val startDelayProgress: Float - -// @get:FloatRange(from = 0f, to = 1f) - val endProgress: Float - - fun isCachedValueEnabled(progress: Float): Boolean - } - - private class EmptyKeyframeWrapper : KeyframesWrapper { - override val isEmpty: Boolean - get() = true - - override fun isValueChanged(progress: Float): Boolean { - return false - } - - override val currentKeyframe: Keyframe - get() { - throw IllegalStateException("not implemented") - } - - override val startDelayProgress: Float - get() = 0f - - override val endProgress: Float - get() = 1f - - override fun isCachedValueEnabled(progress: Float): Boolean { - throw IllegalStateException("not implemented") - } - } - - private class SingleKeyframeWrapper(keyframes: List>) : KeyframesWrapper { - override val currentKeyframe: Keyframe = keyframes[0] - private var cachedInterpolatedProgress = -1f - - override val isEmpty: Boolean - get() = false - - override fun isValueChanged(progress: Float): Boolean { - return !currentKeyframe.isStatic - } - - override val startDelayProgress: Float - get() = currentKeyframe.startProgress - - override val endProgress: Float - get() = currentKeyframe.endProgress - - override fun isCachedValueEnabled(progress: Float): Boolean { - if (cachedInterpolatedProgress == progress) { - return true - } - cachedInterpolatedProgress = progress - return false - } - } - - private class KeyframesWrapperImpl(private val keyframes: List>) : - KeyframesWrapper { - override var currentKeyframe: Keyframe - private set - private var cachedCurrentKeyframe: Keyframe? = null - private var cachedInterpolatedProgress = -1f - - init { - currentKeyframe = findKeyframe(0f) - } - - override val isEmpty: Boolean - get() = false - - override fun isValueChanged(progress: Float): Boolean { - if (currentKeyframe.containsProgress(progress)) { - return !currentKeyframe.isStatic - } - currentKeyframe = findKeyframe(progress) - return true - } - - private fun findKeyframe(progress: Float): Keyframe { - var keyframe = keyframes[keyframes.size - 1] - if (progress >= keyframe.startProgress) { - return keyframe - } - for (i in keyframes.size - 2 downTo 1) { - keyframe = keyframes[i] - if (currentKeyframe === keyframe) { - continue - } - if (keyframe.containsProgress(progress)) { - return keyframe - } - } - return keyframes[0] - } - - override val startDelayProgress: Float - get() = keyframes[0].startProgress - - override val endProgress: Float - get() = keyframes[keyframes.size - 1].endProgress - - override fun isCachedValueEnabled(progress: Float): Boolean { - if (cachedCurrentKeyframe === currentKeyframe - && cachedInterpolatedProgress == progress - ) { - return true - } - cachedCurrentKeyframe = currentKeyframe - cachedInterpolatedProgress = progress - return false - } - } - - companion object { - private fun wrap(keyframes: List>): KeyframesWrapper { - if (keyframes.isEmpty()) { - return EmptyKeyframeWrapper() - } - if (keyframes.size == 1) { - return SingleKeyframeWrapper(keyframes) - } - return KeyframesWrapperImpl(keyframes) - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt deleted file mode 100644 index a4c4e422..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation.kt +++ /dev/null @@ -1,50 +0,0 @@ -package com.airbnb.lottie.animation.keyframe - -import android.annotation.SuppressLint -import com.airbnb.lottie.utils.GammaEvaluator -import com.airbnb.lottie.utils.MiscUtils -import com.airbnb.lottie.value.Keyframe - -@SuppressLint("RestrictedApi") -internal class ColorKeyframeAnimation(keyframes: List>) : KeyframeAnimation(keyframes) { - override fun getValue(keyframe: Keyframe?, keyframeProgress: Float): Int { - return getIntValue(keyframe, keyframeProgress) - } - - /** - * Optimization to avoid autoboxing. - */ - fun getIntValue(keyframe: Keyframe?, keyframeProgress: Float): Int { - check(!(keyframe!!.startValue == null || keyframe.endValue == null)) { "Missing values for keyframe." } - - // keyframe.endFrame should not be null under normal operation. - // It is not clear why this would be null and when it does, it seems to be extremely rare. - // https://github.com/airbnb/lottie-android/issues/2361 - if (valueCallback != null && keyframe.endFrame != null) { - val value = valueCallback!!.getValueInternal( - keyframe.startFrame, - keyframe.endFrame!!, - keyframe.startValue, - keyframe.endValue, - keyframeProgress, - linearCurrentKeyframeProgress, - getProgress() - ) - if (value != null) { - return value - } - } - - return GammaEvaluator.evaluate( - MiscUtils.clamp(keyframeProgress, 0f, 1f), - keyframe.startValue, - keyframe.endValue!! - ) - } - - val intValue: Int - /** - * Optimization to avoid autoboxing. - */ - get() = getIntValue(getCurrentKeyframe(), getInterpolatedCurrentKeyframeProgress()) -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt deleted file mode 100644 index a2904305..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation.kt +++ /dev/null @@ -1,102 +0,0 @@ -package com.airbnb.lottie.animation.keyframe - -import android.annotation.SuppressLint -import android.graphics.Color -import android.graphics.Paint -import com.airbnb.lottie.model.layer.BaseLayer -import com.airbnb.lottie.parser.DropShadowEffect -import com.airbnb.lottie.value.LottieFrameInfo -import com.airbnb.lottie.value.LottieValueCallback -import kotlin.math.cos -import kotlin.math.sin - -@SuppressLint("RestrictedApi") -class DropShadowKeyframeAnimation( - private val listener: BaseKeyframeAnimation.AnimationListener, - layer: BaseLayer, - dropShadowEffect: DropShadowEffect -) : BaseKeyframeAnimation.AnimationListener { - private val color: BaseKeyframeAnimation = - dropShadowEffect.color.createAnimation() - private val opacity: BaseKeyframeAnimation - private val direction: BaseKeyframeAnimation - private val distance: BaseKeyframeAnimation - private val radius: BaseKeyframeAnimation - - private var isDirty = true - - init { - color.addUpdateListener(this) - layer.addAnimation(color) - opacity = dropShadowEffect.opacity.createAnimation() - opacity.addUpdateListener(this) - layer.addAnimation(opacity) - direction = dropShadowEffect.direction.createAnimation() - direction.addUpdateListener(this) - layer.addAnimation(direction) - distance = dropShadowEffect.distance.createAnimation() - distance.addUpdateListener(this) - layer.addAnimation(distance) - radius = dropShadowEffect.radius.createAnimation() - radius.addUpdateListener(this) - layer.addAnimation(radius) - } - - override fun onValueChanged() { - isDirty = true - listener.onValueChanged() - } - - fun applyTo(paint: Paint) { - if (!isDirty) { - return - } - isDirty = false - - val directionRad: Double = (direction.getValue().toDouble()) * DEG_TO_RAD - val distance: Float = distance.getValue() - val x = (sin(directionRad).toFloat()) * distance - val y = (cos(directionRad + Math.PI) - .toFloat()) * distance - val baseColor: Int = color.getValue() - val opacity = Math.round(opacity.getValue()).toInt() - val color = - Color.argb(opacity, Color.red(baseColor), Color.green(baseColor), Color.blue(baseColor)) - val radius: Float = radius.getValue() - paint.setShadowLayer(radius, x, y, color) - } - - fun setColorCallback(callback: LottieValueCallback?) { - color.setValueCallback(callback) - } - - fun setOpacityCallback(callback: LottieValueCallback?) { - if (callback == null) { - opacity.setValueCallback(null) - return - } - opacity.setValueCallback(object : LottieValueCallback() { - override fun getValue(frameInfo: LottieFrameInfo): Float? { - val value = callback.getValue(frameInfo) ?: return null - // Convert [0,100] to [0,255] because other dynamic properties use [0,100]. - return value * 2.55f - } - }) - } - - fun setDirectionCallback(callback: LottieValueCallback?) { - direction.setValueCallback(callback) - } - - fun setDistanceCallback(callback: LottieValueCallback?) { - distance.setValueCallback(callback) - } - - fun setRadiusCallback(callback: LottieValueCallback?) { - radius.setValueCallback(callback) - } - - companion object { - private const val DEG_TO_RAD = Math.PI / 180.0 - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java deleted file mode 100644 index 1a8908f2..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class FloatKeyframeAnimation extends KeyframeAnimation { - - public FloatKeyframeAnimation(List> keyframes) { - super(keyframes); - } - - @Override Float getValue(Keyframe keyframe, float keyframeProgress) { - return getFloatValue(keyframe, keyframeProgress); - } - - /** - * Optimization to avoid autoboxing. - */ - float getFloatValue(Keyframe keyframe, float keyframeProgress) { - if (keyframe.startValue == null || keyframe.endValue == null) { - throw new IllegalStateException("Missing values for keyframe."); - } - - if (valueCallback != null) { - //noinspection ConstantConditions - Float value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, - keyframe.startValue, keyframe.endValue, - keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); - if (value != null) { - return value; - } - } - - return MiscUtils.lerp(keyframe.getStartValueFloat(), keyframe.getEndValueFloat(), keyframeProgress); - } - - /** - * Optimization to avoid autoboxing. - */ - public float getFloatValue() { - return getFloatValue(getCurrentKeyframe(), getInterpolatedCurrentKeyframeProgress()); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java deleted file mode 100644 index 2ce54d8d..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import com.airbnb.lottie.model.content.GradientColor; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class GradientColorKeyframeAnimation extends KeyframeAnimation { - private final GradientColor gradientColor; - - public GradientColorKeyframeAnimation(List> keyframes) { - super(keyframes); - // Not all keyframes that this GradientColor are used for will have the same length. - // AnimatableGradientColorValue.ensureInterpolatableKeyframes may add extra positions - // for some keyframes but not others to ensure that it is interpolatable. - // Ensure that there is enough space for the largest keyframe. - int size = 0; - for (int i = 0; i < keyframes.size(); i++) { - GradientColor startValue = keyframes.get(i).startValue; - if (startValue != null) { - size = Math.max(size, startValue.getSize()); - } - } - gradientColor = new GradientColor(new float[size], new int[size]); - } - - @Override GradientColor getValue(Keyframe keyframe, float keyframeProgress) { - //noinspection DataFlowIssue - gradientColor.lerp(keyframe.startValue, keyframe.endValue, keyframeProgress); - return gradientColor; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java deleted file mode 100644 index 3398f3cc..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class IntegerKeyframeAnimation extends KeyframeAnimation { - - public IntegerKeyframeAnimation(List> keyframes) { - super(keyframes); - } - - @Override - Integer getValue(Keyframe keyframe, float keyframeProgress) { - return getIntValue(keyframe, keyframeProgress); - } - - /** - * Optimization to avoid autoboxing. - */ - int getIntValue(Keyframe keyframe, float keyframeProgress) { - if (keyframe.startValue == null) { - throw new IllegalStateException("Missing values for keyframe."); - } - - int endValue = keyframe.endValue == null ? keyframe.getStartValueInt() : keyframe.getEndValueInt(); - - if (valueCallback != null) { - //noinspection ConstantConditions - Integer value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, - keyframe.startValue, endValue, - keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); - if (value != null) { - return value; - } - } - - return MiscUtils.lerp(keyframe.getStartValueInt(), endValue, keyframeProgress); - } - - /** - * Optimization to avoid autoboxing. - */ - public int getIntValue() { - return getIntValue(getCurrentKeyframe(), getInterpolatedCurrentKeyframeProgress()); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java deleted file mode 100644 index c37c7a4c..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/KeyframeAnimation.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -abstract class KeyframeAnimation extends BaseKeyframeAnimation { - KeyframeAnimation(List> keyframes) { - super(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java deleted file mode 100644 index c27a3556..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import android.graphics.Path; - -import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; -import com.airbnb.lottie.model.content.Mask; -import com.airbnb.lottie.model.content.ShapeData; - -import java.util.ArrayList; -import java.util.List; - -public class MaskKeyframeAnimation { - private final List> maskAnimations; - private final List> opacityAnimations; - private final List masks; - - public MaskKeyframeAnimation(List masks) { - this.masks = masks; - this.maskAnimations = new ArrayList<>(masks.size()); - this.opacityAnimations = new ArrayList<>(masks.size()); - for (int i = 0; i < masks.size(); i++) { - this.maskAnimations.add(masks.get(i).getMaskPath().createAnimation()); - AnimatableIntegerValue opacity = masks.get(i).getOpacity(); - opacityAnimations.add(opacity.createAnimation()); - } - } - - public List getMasks() { - return masks; - } - - public List> getMaskAnimations() { - return maskAnimations; - } - - public List> getOpacityAnimations() { - return opacityAnimations; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java deleted file mode 100644 index aea15298..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframe.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import android.graphics.Path; -import android.graphics.PointF; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.utils.Utils; -import com.airbnb.lottie.value.Keyframe; - -public class PathKeyframe extends Keyframe { - @Nullable private Path path; - - private final Keyframe pointKeyFrame; - - public PathKeyframe(LottieComposition composition, Keyframe keyframe) { - super(composition, keyframe.startValue, keyframe.endValue, keyframe.interpolator, keyframe.xInterpolator, keyframe.yInterpolator, - keyframe.startFrame, keyframe.endFrame); - this.pointKeyFrame = keyframe; - createPath(); - } - - public void createPath() { - // This must use equals(float, float) because PointF didn't have an equals(PathF) method - // until KitKat... - boolean equals = endValue != null && startValue != null && - startValue.equals(endValue.x, endValue.y); - if (startValue != null && endValue != null && !equals) { - path = Utils.createPath(startValue, endValue, pointKeyFrame.pathCp1, pointKeyFrame.pathCp2); - } - } - - /** - * This will be null if the startValue and endValue are the same. - */ - @Nullable Path getPath() { - return path; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java deleted file mode 100644 index 7418405d..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PathKeyframeAnimation.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import android.graphics.Path; -import android.graphics.PathMeasure; -import android.graphics.PointF; - -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class PathKeyframeAnimation extends KeyframeAnimation { - private final PointF point = new PointF(); - private final float[] pos = new float[2]; - private final float[] tangent = new float[2]; - private final PathMeasure pathMeasure = new PathMeasure(); - private PathKeyframe pathMeasureKeyframe; - - public PathKeyframeAnimation(List> keyframes) { - super(keyframes); - } - - @Override public PointF getValue(Keyframe keyframe, float keyframeProgress) { - PathKeyframe pathKeyframe = (PathKeyframe) keyframe; - Path path = pathKeyframe.getPath(); - if (path == null) { - return keyframe.startValue; - } - - if (valueCallback != null) { - PointF value = valueCallback.getValueInternal(pathKeyframe.startFrame, pathKeyframe.endFrame, - pathKeyframe.startValue, pathKeyframe.endValue, getLinearCurrentKeyframeProgress(), - keyframeProgress, getProgress()); - if (value != null) { - return value; - } - } - - if (pathMeasureKeyframe != pathKeyframe) { - pathMeasure.setPath(path, false); - pathMeasureKeyframe = pathKeyframe; - } - - // allow bounce easings to calculate positions outside the path - // by using the tangent at the extremities - - float length = pathMeasure.getLength(); - - float distance = keyframeProgress * length; - pathMeasure.getPosTan(distance, pos, tangent); - point.set(pos[0], pos[1]); - - if (distance < 0) { - point.offset(tangent[0] * distance, tangent[1] * distance); - } else if (distance > length) { - point.offset(tangent[0] * (distance - length), tangent[1] * (distance - length)); - } - return point; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java deleted file mode 100644 index 7d4d6065..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/PointKeyframeAnimation.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import android.graphics.PointF; - -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class PointKeyframeAnimation extends KeyframeAnimation { - private final PointF point = new PointF(); - - public PointKeyframeAnimation(List> keyframes) { - super(keyframes); - } - - @Override public PointF getValue(Keyframe keyframe, float keyframeProgress) { - return getValue(keyframe, keyframeProgress, keyframeProgress, keyframeProgress); - } - - @Override protected PointF getValue(Keyframe keyframe, float linearKeyframeProgress, float xKeyframeProgress, float yKeyframeProgress) { - if (keyframe.startValue == null || keyframe.endValue == null) { - throw new IllegalStateException("Missing values for keyframe."); - } - - PointF startPoint = keyframe.startValue; - PointF endPoint = keyframe.endValue; - - if (valueCallback != null) { - //noinspection ConstantConditions - PointF value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, startPoint, - endPoint, linearKeyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); - if (value != null) { - return value; - } - } - - point.set(startPoint.x + xKeyframeProgress * (endPoint.x - startPoint.x), - startPoint.y + yKeyframeProgress * (endPoint.y - startPoint.y)); - return point; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java deleted file mode 100644 index 724e433d..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.Keyframe; -import com.airbnb.lottie.value.ScaleXY; - -import java.util.List; - -public class ScaleKeyframeAnimation extends KeyframeAnimation { - - private final ScaleXY scaleXY = new ScaleXY(); - - public ScaleKeyframeAnimation(List> keyframes) { - super(keyframes); - } - - @Override public ScaleXY getValue(Keyframe keyframe, float keyframeProgress) { - if (keyframe.startValue == null || keyframe.endValue == null) { - throw new IllegalStateException("Missing values for keyframe."); - } - ScaleXY startTransform = keyframe.startValue; - ScaleXY endTransform = keyframe.endValue; - - if (valueCallback != null) { - //noinspection ConstantConditions - ScaleXY value = valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, - startTransform, endTransform, - keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); - if (value != null) { - return value; - } - } - - scaleXY.set( - MiscUtils.lerp(startTransform.getScaleX(), endTransform.getScaleX(), keyframeProgress), - MiscUtils.lerp(startTransform.getScaleY(), endTransform.getScaleY(), keyframeProgress) - ); - return scaleXY; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java deleted file mode 100644 index 43cc1857..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import android.graphics.Path; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.animation.content.ShapeModifierContent; -import com.airbnb.lottie.model.content.ShapeData; -import com.airbnb.lottie.utils.MiscUtils; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class ShapeKeyframeAnimation extends BaseKeyframeAnimation { - private final ShapeData tempShapeData = new ShapeData(); - private final Path tempPath = new Path(); - private Path valueCallbackStartPath; - private Path valueCallbackEndPath; - - private List shapeModifiers; - - public ShapeKeyframeAnimation(List> keyframes) { - super(keyframes); - } - - @Override public Path getValue(Keyframe keyframe, float keyframeProgress) { - ShapeData startShapeData = keyframe.startValue; - ShapeData endShapeData = keyframe.endValue; - - tempShapeData.interpolateBetween(startShapeData, endShapeData == null ? startShapeData : endShapeData, keyframeProgress); - ShapeData modifiedShapeData = tempShapeData; - if (shapeModifiers != null) { - for (int i = shapeModifiers.size() - 1; i >= 0; i--) { - modifiedShapeData = shapeModifiers.get(i).modifyShape(modifiedShapeData); - } - } - MiscUtils.getPathFromData(modifiedShapeData, tempPath); - if (valueCallback != null) { - if (valueCallbackStartPath == null) { - valueCallbackStartPath = new Path(); - valueCallbackEndPath = new Path(); - } - MiscUtils.getPathFromData(startShapeData, valueCallbackStartPath); - if (endShapeData != null) { - MiscUtils.getPathFromData(endShapeData, valueCallbackEndPath); - } - - return valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame, - valueCallbackStartPath, endShapeData == null ? valueCallbackStartPath : valueCallbackEndPath, - keyframeProgress, getLinearCurrentKeyframeProgress(), getProgress()); - } - return tempPath; - } - - public void setShapeModifiers(@Nullable List shapeModifiers) { - this.shapeModifiers = shapeModifiers; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java deleted file mode 100644 index 6d3cf46e..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import android.graphics.PointF; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.value.Keyframe; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.Collections; - -public class SplitDimensionPathKeyframeAnimation extends BaseKeyframeAnimation { - private final PointF point = new PointF(); - private final PointF pointWithCallbackValues = new PointF(); - private final BaseKeyframeAnimation xAnimation; - private final BaseKeyframeAnimation yAnimation; - - @Nullable protected LottieValueCallback xValueCallback; - @Nullable protected LottieValueCallback yValueCallback; - - - public SplitDimensionPathKeyframeAnimation( - BaseKeyframeAnimation xAnimation, - BaseKeyframeAnimation yAnimation) { - super(Collections.>emptyList()); - - this.xAnimation = xAnimation; - this.yAnimation = yAnimation; - // We need to call an initial setProgress so point gets set with the initial value. - setProgress(getProgress()); - } - - public void setXValueCallback(@Nullable LottieValueCallback xValueCallback) { - if (this.xValueCallback != null) { - this.xValueCallback.setAnimation(null); - } - this.xValueCallback = xValueCallback; - if (xValueCallback != null) { - xValueCallback.setAnimation(this); - } - } - - public void setYValueCallback(@Nullable LottieValueCallback yValueCallback) { - if (this.yValueCallback != null) { - this.yValueCallback.setAnimation(null); - } - this.yValueCallback = yValueCallback; - if (yValueCallback != null) { - yValueCallback.setAnimation(this); - } - } - - @Override public void setProgress(float progress) { - xAnimation.setProgress(progress); - yAnimation.setProgress(progress); - point.set(xAnimation.getValue(), yAnimation.getValue()); - for (int i = 0; i < listeners.size(); i++) { - listeners.get(i).onValueChanged(); - } - } - - @Override public PointF getValue() { - return getValue(null, 0); - } - - @Override PointF getValue(Keyframe keyframe, float keyframeProgress) { - Float xCallbackValue = null; - Float yCallbackValue = null; - - if (xValueCallback != null) { - Keyframe xKeyframe = xAnimation.getCurrentKeyframe(); - if (xKeyframe != null) { - float progress = xAnimation.getInterpolatedCurrentKeyframeProgress(); - Float endFrame = xKeyframe.endFrame; - xCallbackValue = - xValueCallback.getValueInternal(xKeyframe.startFrame, endFrame == null ? xKeyframe.startFrame : endFrame, xKeyframe.startValue, - xKeyframe.endValue, keyframeProgress, keyframeProgress, progress); - } - } - if (yValueCallback != null) { - Keyframe yKeyframe = yAnimation.getCurrentKeyframe(); - if (yKeyframe != null) { - float progress = yAnimation.getInterpolatedCurrentKeyframeProgress(); - Float endFrame = yKeyframe.endFrame; - yCallbackValue = - yValueCallback.getValueInternal(yKeyframe.startFrame, endFrame == null ? yKeyframe.startFrame : endFrame, yKeyframe.startValue, - yKeyframe.endValue, keyframeProgress, keyframeProgress, progress); - } - } - - if (xCallbackValue == null) { - pointWithCallbackValues.set(point.x, 0f); - } else { - pointWithCallbackValues.set(xCallbackValue, 0f); - } - - if (yCallbackValue == null) { - pointWithCallbackValues.set(pointWithCallbackValues.x, point.y); - } else { - pointWithCallbackValues.set(pointWithCallbackValues.x, yCallbackValue); - } - - return pointWithCallbackValues; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java deleted file mode 100644 index e271585c..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TextKeyframeAnimation.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import com.airbnb.lottie.model.DocumentData; -import com.airbnb.lottie.value.Keyframe; -import com.airbnb.lottie.value.LottieFrameInfo; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.List; - -public class TextKeyframeAnimation extends KeyframeAnimation { - public TextKeyframeAnimation(List> keyframes) { - super(keyframes); - } - - @Override DocumentData getValue(Keyframe keyframe, float keyframeProgress) { - if (valueCallback != null) { - return valueCallback.getValueInternal(keyframe.startFrame, keyframe.endFrame == null ? Float.MAX_VALUE : keyframe.endFrame, - keyframe.startValue, keyframe.endValue == null ? keyframe.startValue : keyframe.endValue, keyframeProgress, - getInterpolatedCurrentKeyframeProgress(), getProgress()); - } else if (keyframeProgress != 1.0f || keyframe.endValue == null) { - return keyframe.startValue; - } else { - return keyframe.endValue; - } - } - - public void setStringValueCallback(LottieValueCallback valueCallback) { - final LottieFrameInfo stringFrameInfo = new LottieFrameInfo<>(); - final DocumentData documentData = new DocumentData(); - super.setValueCallback(new LottieValueCallback() { - @Override - public DocumentData getValue(LottieFrameInfo frameInfo) { - stringFrameInfo.set(frameInfo.getStartFrame(), frameInfo.getEndFrame(), frameInfo.getStartValue().text, - frameInfo.getEndValue().text, frameInfo.getLinearKeyframeProgress(), frameInfo.getInterpolatedKeyframeProgress(), - frameInfo.getOverallProgress()); - String text = valueCallback.getValue(stringFrameInfo); - DocumentData baseDocumentData = frameInfo.getInterpolatedKeyframeProgress() == 1f ? frameInfo.getEndValue() : frameInfo.getStartValue(); - documentData.set(text, baseDocumentData.fontName, baseDocumentData.size, baseDocumentData.justification, baseDocumentData.tracking, - baseDocumentData.lineHeight, baseDocumentData.baselineShift, baseDocumentData.color, baseDocumentData.strokeColor, - baseDocumentData.strokeWidth, baseDocumentData.strokeOverFill, baseDocumentData.boxPosition, baseDocumentData.boxSize); - return documentData; - } - }); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java deleted file mode 100644 index 13a63ee6..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java +++ /dev/null @@ -1,361 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import static com.airbnb.lottie.LottieProperty.TRANSFORM_ANCHOR_POINT; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_END_OPACITY; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_OPACITY; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_POSITION; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_POSITION_X; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_POSITION_Y; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_ROTATION; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_SCALE; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_SKEW; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_SKEW_ANGLE; -import static com.airbnb.lottie.LottieProperty.TRANSFORM_START_OPACITY; - -import android.graphics.Matrix; -import android.graphics.PointF; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.model.animatable.AnimatableTransform; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.value.Keyframe; -import com.airbnb.lottie.value.LottieValueCallback; -import com.airbnb.lottie.value.ScaleXY; - -import java.util.Collections; - -public class TransformKeyframeAnimation { - private final Matrix matrix = new Matrix(); - private final Matrix skewMatrix1; - private final Matrix skewMatrix2; - private final Matrix skewMatrix3; - private final float[] skewValues; - - @Nullable private BaseKeyframeAnimation anchorPoint; - @Nullable private BaseKeyframeAnimation position; - @Nullable private BaseKeyframeAnimation scale; - @Nullable private BaseKeyframeAnimation rotation; - @Nullable private BaseKeyframeAnimation opacity; - @Nullable private FloatKeyframeAnimation skew; - @Nullable private FloatKeyframeAnimation skewAngle; - - // Used for repeaters - @Nullable private BaseKeyframeAnimation startOpacity; - @Nullable private BaseKeyframeAnimation endOpacity; - - private final boolean autoOrient; - - - public TransformKeyframeAnimation(AnimatableTransform animatableTransform) { - anchorPoint = animatableTransform.getAnchorPoint() == null ? null : animatableTransform.getAnchorPoint().createAnimation(); - position = animatableTransform.getPosition() == null ? null : animatableTransform.getPosition().createAnimation(); - scale = animatableTransform.getScale() == null ? null : animatableTransform.getScale().createAnimation(); - rotation = animatableTransform.getRotation() == null ? null : animatableTransform.getRotation().createAnimation(); - skew = animatableTransform.getSkew() == null ? null : (FloatKeyframeAnimation) animatableTransform.getSkew().createAnimation(); - autoOrient = animatableTransform.isAutoOrient(); - if (skew != null) { - skewMatrix1 = new Matrix(); - skewMatrix2 = new Matrix(); - skewMatrix3 = new Matrix(); - skewValues = new float[9]; - } else { - skewMatrix1 = null; - skewMatrix2 = null; - skewMatrix3 = null; - skewValues = null; - } - skewAngle = animatableTransform.getSkewAngle() == null ? null : (FloatKeyframeAnimation) animatableTransform.getSkewAngle().createAnimation(); - if (animatableTransform.getOpacity() != null) { - opacity = animatableTransform.getOpacity().createAnimation(); - } - if (animatableTransform.getStartOpacity() != null) { - startOpacity = animatableTransform.getStartOpacity().createAnimation(); - } else { - startOpacity = null; - } - if (animatableTransform.getEndOpacity() != null) { - endOpacity = animatableTransform.getEndOpacity().createAnimation(); - } else { - endOpacity = null; - } - } - - public void addAnimationsToLayer(BaseLayer layer) { - layer.addAnimation(opacity); - layer.addAnimation(startOpacity); - layer.addAnimation(endOpacity); - - layer.addAnimation(anchorPoint); - layer.addAnimation(position); - layer.addAnimation(scale); - layer.addAnimation(rotation); - layer.addAnimation(skew); - layer.addAnimation(skewAngle); - } - - public void addListener(final BaseKeyframeAnimation.AnimationListener listener) { - if (opacity != null) { - opacity.addUpdateListener(listener); - } - if (startOpacity != null) { - startOpacity.addUpdateListener(listener); - } - if (endOpacity != null) { - endOpacity.addUpdateListener(listener); - } - - if (anchorPoint != null) { - anchorPoint.addUpdateListener(listener); - } - if (position != null) { - position.addUpdateListener(listener); - } - if (scale != null) { - scale.addUpdateListener(listener); - } - if (rotation != null) { - rotation.addUpdateListener(listener); - } - if (skew != null) { - skew.addUpdateListener(listener); - } - if (skewAngle != null) { - skewAngle.addUpdateListener(listener); - } - } - - public void setProgress(float progress) { - if (opacity != null) { - opacity.setProgress(progress); - } - if (startOpacity != null) { - startOpacity.setProgress(progress); - } - if (endOpacity != null) { - endOpacity.setProgress(progress); - } - - if (anchorPoint != null) { - anchorPoint.setProgress(progress); - } - if (position != null) { - position.setProgress(progress); - } - if (scale != null) { - scale.setProgress(progress); - } - if (rotation != null) { - rotation.setProgress(progress); - } - if (skew != null) { - skew.setProgress(progress); - } - if (skewAngle != null) { - skewAngle.setProgress(progress); - } - } - - @Nullable public BaseKeyframeAnimation getOpacity() { - return opacity; - } - - @Nullable public BaseKeyframeAnimation getStartOpacity() { - return startOpacity; - } - - @Nullable public BaseKeyframeAnimation getEndOpacity() { - return endOpacity; - } - - public Matrix getMatrix() { - matrix.reset(); - BaseKeyframeAnimation position = this.position; - if (position != null) { - PointF positionValue = position.getValue(); - if (positionValue != null && (positionValue.x != 0 || positionValue.y != 0)) { - matrix.preTranslate(positionValue.x, positionValue.y); - } - } - - // If autoOrient is true, the rotation should follow the derivative of the position rather - // than the rotation property. - if (autoOrient) { - if (position != null) { - float currentProgress = position.getProgress(); - PointF startPosition = position.getValue(); - // Store the start X and Y values because the pointF will be overwritten by the next getValue call. - float startX = startPosition.x; - float startY = startPosition.y; - // 1) Find the next position value. - // 2) Create a vector from the current position to the next position. - // 3) Find the angle of that vector to the X axis (0 degrees). - position.setProgress(currentProgress + 0.0001f); - PointF nextPosition = position.getValue(); - position.setProgress(currentProgress); - double rotationValue = Math.toDegrees(Math.atan2(nextPosition.y - startY, nextPosition.x - startX)); - matrix.preRotate((float) rotationValue); - } - } else { - BaseKeyframeAnimation rotation = this.rotation; - if (rotation != null) { - float rotationValue; - if (rotation instanceof ValueCallbackKeyframeAnimation) { - rotationValue = rotation.getValue(); - } else { - rotationValue = ((FloatKeyframeAnimation) rotation).getFloatValue(); - } - if (rotationValue != 0f) { - matrix.preRotate(rotationValue); - } - } - } - - FloatKeyframeAnimation skew = this.skew; - if (skew != null) { - float mCos = skewAngle == null ? 0f : (float) Math.cos(Math.toRadians(-skewAngle.getFloatValue() + 90)); - float mSin = skewAngle == null ? 1f : (float) Math.sin(Math.toRadians(-skewAngle.getFloatValue() + 90)); - float aTan = (float) Math.tan(Math.toRadians(skew.getFloatValue())); - clearSkewValues(); - skewValues[0] = mCos; - skewValues[1] = mSin; - skewValues[3] = -mSin; - skewValues[4] = mCos; - skewValues[8] = 1f; - skewMatrix1.setValues(skewValues); - clearSkewValues(); - skewValues[0] = 1f; - skewValues[3] = aTan; - skewValues[4] = 1f; - skewValues[8] = 1f; - skewMatrix2.setValues(skewValues); - clearSkewValues(); - skewValues[0] = mCos; - skewValues[1] = -mSin; - skewValues[3] = mSin; - skewValues[4] = mCos; - skewValues[8] = 1; - skewMatrix3.setValues(skewValues); - skewMatrix2.preConcat(skewMatrix1); - skewMatrix3.preConcat(skewMatrix2); - - matrix.preConcat(skewMatrix3); - } - - BaseKeyframeAnimation scale = this.scale; - if (scale != null) { - ScaleXY scaleTransform = scale.getValue(); - if (scaleTransform != null && (scaleTransform.getScaleX() != 1f || scaleTransform.getScaleY() != 1f)) { - matrix.preScale(scaleTransform.getScaleX(), scaleTransform.getScaleY()); - } - } - - BaseKeyframeAnimation anchorPoint = this.anchorPoint; - if (anchorPoint != null) { - PointF anchorPointValue = anchorPoint.getValue(); - if (anchorPointValue != null && (anchorPointValue.x != 0 || anchorPointValue.y != 0)) { - matrix.preTranslate(-anchorPointValue.x, -anchorPointValue.y); - } - } - - return matrix; - } - - private void clearSkewValues() { - for (int i = 0; i < 9; i++) { - skewValues[i] = 0f; - } - } - - /** - * TODO: see if we can use this for the main {@link #getMatrix()} method. - */ - public Matrix getMatrixForRepeater(float amount) { - PointF position = this.position == null ? null : this.position.getValue(); - ScaleXY scale = this.scale == null ? null : this.scale.getValue(); - - matrix.reset(); - if (position != null) { - matrix.preTranslate(position.x * amount, position.y * amount); - } - if (scale != null) { - matrix.preScale( - (float) Math.pow(scale.getScaleX(), amount), - (float) Math.pow(scale.getScaleY(), amount)); - } - if (this.rotation != null) { - float rotation = this.rotation.getValue(); - PointF anchorPoint = this.anchorPoint == null ? null : this.anchorPoint.getValue(); - matrix.preRotate(rotation * amount, anchorPoint == null ? 0f : anchorPoint.x, anchorPoint == null ? 0f : anchorPoint.y); - } - - return matrix; - } - - /** - * Returns whether the callback was applied. - */ - @SuppressWarnings("unchecked") - public boolean applyValueCallback(T property, @Nullable LottieValueCallback callback) { - if (property == TRANSFORM_ANCHOR_POINT) { - if (anchorPoint == null) { - anchorPoint = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, new PointF()); - } else { - anchorPoint.setValueCallback((LottieValueCallback) callback); - } - } else if (property == TRANSFORM_POSITION) { - if (position == null) { - position = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, new PointF()); - } else { - position.setValueCallback((LottieValueCallback) callback); - } - } else if (property == TRANSFORM_POSITION_X && position instanceof SplitDimensionPathKeyframeAnimation) { - ((SplitDimensionPathKeyframeAnimation) position).setXValueCallback((LottieValueCallback) callback); - } else if (property == TRANSFORM_POSITION_Y && position instanceof SplitDimensionPathKeyframeAnimation) { - ((SplitDimensionPathKeyframeAnimation) position).setYValueCallback((LottieValueCallback) callback); - } else if (property == TRANSFORM_SCALE) { - if (scale == null) { - scale = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, new ScaleXY()); - } else { - scale.setValueCallback((LottieValueCallback) callback); - } - } else if (property == TRANSFORM_ROTATION) { - if (rotation == null) { - rotation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 0f); - } else { - rotation.setValueCallback((LottieValueCallback) callback); - } - } else if (property == TRANSFORM_OPACITY) { - if (opacity == null) { - opacity = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 100); - } else { - opacity.setValueCallback((LottieValueCallback) callback); - } - } else if (property == TRANSFORM_START_OPACITY) { - if (startOpacity == null) { - startOpacity = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 100f); - } else { - startOpacity.setValueCallback((LottieValueCallback) callback); - } - } else if (property == TRANSFORM_END_OPACITY) { - if (endOpacity == null) { - endOpacity = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback, 100f); - } else { - endOpacity.setValueCallback((LottieValueCallback) callback); - } - } else if (property == TRANSFORM_SKEW) { - if (skew == null) { - skew = new FloatKeyframeAnimation(Collections.singletonList(new Keyframe<>(0f))); - } - skew.setValueCallback((LottieValueCallback) callback); - } else if (property == TRANSFORM_SKEW_ANGLE) { - if (skewAngle == null) { - skewAngle = new FloatKeyframeAnimation(Collections.singletonList(new Keyframe<>(0f))); - } - skewAngle.setValueCallback((LottieValueCallback) callback); - } else { - return false; - } - return true; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java deleted file mode 100644 index f9ddd059..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.airbnb.lottie.animation.keyframe; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.value.Keyframe; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.Collections; - -public class ValueCallbackKeyframeAnimation extends BaseKeyframeAnimation { - private final A valueCallbackValue; - - public ValueCallbackKeyframeAnimation(LottieValueCallback valueCallback) { - this(valueCallback, null); - } - - public ValueCallbackKeyframeAnimation(LottieValueCallback valueCallback, @Nullable A valueCallbackValue) { - super(Collections.emptyList()); - setValueCallback(valueCallback); - this.valueCallbackValue = valueCallbackValue; - } - - @Override public void setProgress(float progress) { - this.progress = progress; - } - - /** - * If this doesn't return 1, then {@link #setProgress(float)} will always clamp the progress - * to 0. - */ - @Override float getEndProgress() { - return 1f; - } - - @Override public void notifyListeners() { - if (this.valueCallback != null) { - super.notifyListeners(); - } - } - - @Override public A getValue() { - //noinspection ConstantConditions - return valueCallback.getValueInternal(0f, 0f, valueCallbackValue, valueCallbackValue, getProgress(), getProgress(), getProgress()); - } - - @Override A getValue(Keyframe keyframe, float keyframeProgress) { - return getValue(); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java deleted file mode 100644 index 7b7e10af..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/keyframe/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.animation.keyframe; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java deleted file mode 100644 index fb0fff4c..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/animation/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.animation; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java deleted file mode 100644 index d2b80e8a..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/FontAssetManager.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.airbnb.lottie.manager; - -import android.content.res.AssetManager; -import android.graphics.Typeface; -import android.graphics.drawable.Drawable; -import android.view.View; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.FontAssetDelegate; -import com.airbnb.lottie.model.Font; -import com.airbnb.lottie.model.MutablePair; -import com.airbnb.lottie.utils.Logger; - -import java.util.HashMap; -import java.util.Map; - -public class FontAssetManager { - private final MutablePair tempPair = new MutablePair<>(); - - /** - * Pair is (fontName, fontStyle) - */ - private final Map, Typeface> fontMap = new HashMap<>(); - /** - * Map of font families to their fonts. Necessary to create a font with a different style - */ - private final Map fontFamilies = new HashMap<>(); - private final AssetManager assetManager; - @Nullable private FontAssetDelegate delegate; - private String defaultFontFileExtension = ".ttf"; - - public FontAssetManager(Drawable.Callback callback, @Nullable FontAssetDelegate delegate) { - this.delegate = delegate; - if (!(callback instanceof View)) { - Logger.warning("LottieDrawable must be inside of a view for images to work."); - assetManager = null; - return; - } - - assetManager = ((View) callback).getContext().getAssets(); - } - - public void setDelegate(@Nullable FontAssetDelegate assetDelegate) { - this.delegate = assetDelegate; - } - - /** - * Sets the default file extension (include the `.`). - *

    - * e.g. `.ttf` `.otf` - *

    - * Defaults to `.ttf` - */ - @SuppressWarnings("unused") public void setDefaultFontFileExtension(String defaultFontFileExtension) { - this.defaultFontFileExtension = defaultFontFileExtension; - } - - public Typeface getTypeface(Font font) { - tempPair.set(font.getFamily(), font.getStyle()); - Typeface typeface = fontMap.get(tempPair); - if (typeface != null) { - return typeface; - } - Typeface typefaceWithDefaultStyle = getFontFamily(font); - typeface = typefaceForStyle(typefaceWithDefaultStyle, font.getStyle()); - fontMap.put(tempPair, typeface); - return typeface; - } - - private Typeface getFontFamily(Font font) { - String fontFamily = font.getFamily(); - Typeface defaultTypeface = fontFamilies.get(fontFamily); - if (defaultTypeface != null) { - return defaultTypeface; - } - - Typeface typeface = null; - String fontStyle = font.getStyle(); - String fontName = font.getName(); - if (delegate != null) { - typeface = delegate.fetchFont(fontFamily, fontStyle, fontName); - if (typeface == null) { - typeface = delegate.fetchFont(fontFamily); - } - } - - if (delegate != null && typeface == null) { - String path = delegate.getFontPath(fontFamily, fontStyle, fontName); - if (path == null) { - path = delegate.getFontPath(fontFamily); - } - if (path != null) { - typeface = Typeface.createFromAsset(assetManager, path); - } - } - - if (font.getTypeface() != null) { - return font.getTypeface(); - } - - if (typeface == null) { - String path = "fonts/" + fontFamily + defaultFontFileExtension; - typeface = Typeface.createFromAsset(assetManager, path); - } - - fontFamilies.put(fontFamily, typeface); - return typeface; - } - - private Typeface typefaceForStyle(Typeface typeface, String style) { - int styleInt = Typeface.NORMAL; - boolean containsItalic = style.contains("Italic"); - boolean containsBold = style.contains("Bold"); - if (containsItalic && containsBold) { - styleInt = Typeface.BOLD_ITALIC; - } else if (containsItalic) { - styleInt = Typeface.ITALIC; - } else if (containsBold) { - styleInt = Typeface.BOLD; - } - - if (typeface.getStyle() == styleInt) { - return typeface; - } - - return Typeface.create(typeface, styleInt); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java deleted file mode 100644 index fb491ca5..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/ImageAssetManager.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.airbnb.lottie.manager; - -import android.app.Application; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.Drawable; -import android.text.TextUtils; -import android.util.Base64; -import android.view.View; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.ImageAssetDelegate; -import com.airbnb.lottie.LottieImageAsset; -import com.airbnb.lottie.utils.Logger; -import com.airbnb.lottie.utils.Utils; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -public class ImageAssetManager { - private static final Object bitmapHashLock = new Object(); - @Nullable private final Context context; - private final String imagesFolder; - @Nullable private ImageAssetDelegate delegate; - private final Map imageAssets; - - public ImageAssetManager(Drawable.Callback callback, String imagesFolder, - ImageAssetDelegate delegate, Map imageAssets) { - if (!TextUtils.isEmpty(imagesFolder) && imagesFolder.charAt(imagesFolder.length() - 1) != '/') { - this.imagesFolder = imagesFolder + '/'; - } else { - this.imagesFolder = imagesFolder; - } - this.imageAssets = imageAssets; - setDelegate(delegate); - if (!(callback instanceof View)) { - context = null; - return; - } - - context = ((View) callback).getContext().getApplicationContext(); - } - - public void setDelegate(@Nullable ImageAssetDelegate assetDelegate) { - this.delegate = assetDelegate; - } - - /** - * Returns the previously set bitmap or null. - */ - @Nullable public Bitmap updateBitmap(String id, @Nullable Bitmap bitmap) { - if (bitmap == null) { - LottieImageAsset asset = imageAssets.get(id); - Bitmap ret = asset.getBitmap(); - asset.setBitmap(null); - return ret; - } - Bitmap prevBitmap = imageAssets.get(id).getBitmap(); - putBitmap(id, bitmap); - return prevBitmap; - } - - @Nullable public LottieImageAsset getImageAssetById(String id) { - return imageAssets.get(id); - } - - @Nullable public Bitmap bitmapForId(String id) { - LottieImageAsset asset = imageAssets.get(id); - if (asset == null) { - return null; - } - - Bitmap bitmap = asset.getBitmap(); - if (bitmap != null) { - return bitmap; - } - - if (delegate != null) { - bitmap = delegate.fetchBitmap(asset); - if (bitmap != null) { - putBitmap(id, bitmap); - } - return bitmap; - } - Context context = this.context; - if (context == null) { - // If there is no context, the image has to be embedded or provided via - // a delegate. - return null; - } - - String filename = asset.getFileName(); - BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inScaled = true; - opts.inDensity = 160; - - if (filename.startsWith("data:") && filename.indexOf("base64,") > 0) { - // Contents look like a base64 data URI, with the format data:image/png;base64,. - byte[] data; - try { - data = Base64.decode(filename.substring(filename.indexOf(',') + 1), Base64.DEFAULT); - } catch (IllegalArgumentException e) { - Logger.warning("data URL did not have correct base64 format.", e); - return null; - } - bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opts); - Bitmap resizedBitmap = Utils.resizeBitmapIfNeeded(bitmap, asset.getWidth(), asset.getHeight()); - return putBitmap(id, resizedBitmap); - } - - InputStream is; - try { - if (TextUtils.isEmpty(imagesFolder)) { - throw new IllegalStateException("You must set an images folder before loading an image." + - " Set it with LottieComposition#setImagesFolder or LottieDrawable#setImagesFolder"); - } - is = context.getAssets().open(imagesFolder + filename); - } catch (IOException e) { - Logger.warning("Unable to open asset.", e); - return null; - } - - try { - bitmap = BitmapFactory.decodeStream(is, null, opts); - } catch (IllegalArgumentException e) { - Logger.warning("Unable to decode image `" + id + "`.", e); - return null; - } - if (bitmap == null) { - Logger.warning("Decoded image `" + id + "` is null."); - return null; - } - bitmap = Utils.resizeBitmapIfNeeded(bitmap, asset.getWidth(), asset.getHeight()); - return putBitmap(id, bitmap); - } - - public boolean hasSameContext(Context context) { - Context contextToCompare = this.context instanceof Application ? context.getApplicationContext() : context; - return contextToCompare == this.context; - } - - private Bitmap putBitmap(String key, @Nullable Bitmap bitmap) { - synchronized (bitmapHashLock) { - imageAssets.get(key).setBitmap(bitmap); - return bitmap; - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java deleted file mode 100644 index 23aa8c70..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/manager/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.manager; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java deleted file mode 100644 index ba4fa024..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/CubicCurveData.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.airbnb.lottie.model; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import android.annotation.SuppressLint; -import android.graphics.PointF; - -import androidx.annotation.NonNull; -import androidx.annotation.RestrictTo; - -/** - * One cubic path operation. CubicCurveData is structured such that it is easy to iterate through - * it and build a path. However, it is modeled differently than most path operations. - * - * CubicCurveData - * | - vertex - * | / - * | cp1 cp2 - * | / - * | | - * | / - * -------------------------- - * - * When incrementally building a path, it will already have a "current point" so that is - * not captured in this data structure. - * The control points here represent {@link android.graphics.Path#cubicTo(float, float, float, float, float, float)}. - * - * Most path operations are centered around a vertex and its in control point and out control point like this: - * | outCp - * | / - * | | - * | v - * | / - * | inCp - * -------------------------- - */ -@RestrictTo(LIBRARY) -public class CubicCurveData { - private final PointF controlPoint1; - private final PointF controlPoint2; - private final PointF vertex; - - public CubicCurveData() { - controlPoint1 = new PointF(); - controlPoint2 = new PointF(); - vertex = new PointF(); - } - - public CubicCurveData(PointF controlPoint1, PointF controlPoint2, PointF vertex) { - this.controlPoint1 = controlPoint1; - this.controlPoint2 = controlPoint2; - this.vertex = vertex; - } - - public void setControlPoint1(float x, float y) { - controlPoint1.set(x, y); - } - - public PointF getControlPoint1() { - return controlPoint1; - } - - public void setControlPoint2(float x, float y) { - controlPoint2.set(x, y); - } - - public PointF getControlPoint2() { - return controlPoint2; - } - - public void setVertex(float x, float y) { - vertex.set(x, y); - } - - public void setFrom(CubicCurveData curveData) { - setVertex(curveData.vertex.x, curveData.vertex.y); - setControlPoint1(curveData.controlPoint1.x, curveData.controlPoint1.y); - setControlPoint2(curveData.controlPoint2.x, curveData.controlPoint2.y); - } - - public PointF getVertex() { - return vertex; - } - - @SuppressLint("DefaultLocale") - @NonNull - @Override public String toString() { - return String.format("v=%.2f,%.2f cp1=%.2f,%.2f cp2=%.2f,%.2f", - vertex.x, vertex.y, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java deleted file mode 100644 index 3b6cda15..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/DocumentData.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.airbnb.lottie.model; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import android.graphics.PointF; - -import androidx.annotation.ColorInt; -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; - -@RestrictTo(LIBRARY) -public class DocumentData { - - public enum Justification { - LEFT_ALIGN, - RIGHT_ALIGN, - CENTER - } - - public String text; - public String fontName; - public float size; - public Justification justification; - public int tracking; - /** Extra space in between lines. */ - public float lineHeight; - public float baselineShift; - @ColorInt public int color; - @ColorInt public int strokeColor; - public float strokeWidth; - public boolean strokeOverFill; - @Nullable public PointF boxPosition; - @Nullable public PointF boxSize; - - - public DocumentData(String text, String fontName, float size, Justification justification, int tracking, - float lineHeight, float baselineShift, @ColorInt int color, @ColorInt int strokeColor, - float strokeWidth, boolean strokeOverFill, PointF boxPosition, PointF boxSize) { - set(text, fontName, size, justification, tracking, lineHeight, baselineShift, color, strokeColor, strokeWidth, strokeOverFill, boxPosition, boxSize); - } - - public DocumentData() { - } - - public void set(String text, String fontName, float size, Justification justification, int tracking, - float lineHeight, float baselineShift, @ColorInt int color, @ColorInt int strokeColor, - float strokeWidth, boolean strokeOverFill, PointF boxPosition, PointF boxSize) { - this.text = text; - this.fontName = fontName; - this.size = size; - this.justification = justification; - this.tracking = tracking; - this.lineHeight = lineHeight; - this.baselineShift = baselineShift; - this.color = color; - this.strokeColor = strokeColor; - this.strokeWidth = strokeWidth; - this.strokeOverFill = strokeOverFill; - this.boxPosition = boxPosition; - this.boxSize = boxSize; - } - - @Override public int hashCode() { - int result; - long temp; - result = text.hashCode(); - result = 31 * result + fontName.hashCode(); - result = (int) (31 * result + size); - result = 31 * result + justification.ordinal(); - result = 31 * result + tracking; - temp = Float.floatToRawIntBits(lineHeight); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + color; - return result; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java deleted file mode 100644 index 5aa3d459..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Font.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.airbnb.lottie.model; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import android.graphics.Typeface; - -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; - -@RestrictTo(LIBRARY) -public class Font { - - private final String family; - private final String name; - private final String style; - private final float ascent; - - @Nullable - private Typeface typeface; - - public Font(String family, String name, String style, float ascent) { - this.family = family; - this.name = name; - this.style = style; - this.ascent = ascent; - } - - @SuppressWarnings("unused") public String getFamily() { - return family; - } - - public String getName() { - return name; - } - - public String getStyle() { - return style; - } - - @SuppressWarnings("unused") float getAscent() { - return ascent; - } - - @Nullable - public Typeface getTypeface() { - return typeface; - } - - public void setTypeface(@Nullable Typeface typeface) { - this.typeface = typeface; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java deleted file mode 100644 index 12c60eb6..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/FontCharacter.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.airbnb.lottie.model; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; - -import com.airbnb.lottie.model.content.ShapeGroup; - -import java.util.List; - -@RestrictTo(LIBRARY) -public class FontCharacter { - - public static int hashFor(char character, String fontFamily, String style) { - int result = (int) character; - result = 31 * result + fontFamily.hashCode(); - result = 31 * result + style.hashCode(); - return result; - } - - private final List shapes; - private final char character; - private final double size; - private final double width; - private final String style; - private final String fontFamily; - - public FontCharacter(List shapes, char character, double size, - double width, String style, String fontFamily) { - this.shapes = shapes; - this.character = character; - this.size = size; - this.width = width; - this.style = style; - this.fontFamily = fontFamily; - } - - public List getShapes() { - return shapes; - } - - public double getWidth() { - return width; - } - - @Override public int hashCode() { - return hashFor(character, fontFamily, style); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java deleted file mode 100644 index 8c110faa..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPath.java +++ /dev/null @@ -1,243 +0,0 @@ -package com.airbnb.lottie.model; - -import androidx.annotation.CheckResult; -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Defines which content to target. - * The keypath can contain wildcards ('*') with match exactly 1 item. - * or globstars ('**') which match 0 or more items. or KeyPath.COMPOSITION - * to represent the root composition layer. - *

    - * For example, if your content were arranged like this: - * Gabriel (Shape Layer) - * Body (Shape Group) - * Left Hand (Shape) - * Fill (Fill) - * Transform (Transform) - * ... - * Brandon (Shape Layer) - * Body (Shape Group) - * Left Hand (Shape) - * Fill (Fill) - * Transform (Transform) - * ... - *

    - *

    - * You could: - * Match Gabriel left hand fill: - * new KeyPath("Gabriel", "Body", "Left Hand", "Fill"); - * Match Gabriel and Brandon's left hand fill: - * new KeyPath("*", "Body", Left Hand", "Fill"); - * Match anything with the name Fill: - * new KeyPath("**", "Fill"); - * Target the the root composition layer: - * KeyPath.COMPOSITION - *

    - *

    - * NOTE: Content that are part of merge paths or repeaters cannot currently be resolved with - * a {@link KeyPath}. This may be fixed in the future. - */ -public class KeyPath { - /** - * A singleton KeyPath that targets on the root composition layer. - * This is useful if you want to apply transformer to the animation as a whole. - */ - public final static KeyPath COMPOSITION = new KeyPath("COMPOSITION"); - - private final List keys; - @Nullable private KeyPathElement resolvedElement; - - public KeyPath(String... keys) { - this.keys = Arrays.asList(keys); - } - - /** - * Copy constructor. Copies keys as well. - */ - private KeyPath(KeyPath keyPath) { - keys = new ArrayList<>(keyPath.keys); - resolvedElement = keyPath.resolvedElement; - } - - /** - * Returns a new KeyPath with the key added. - * This is used during keypath resolution. Children normally don't know about all of their parent - * elements so this is used to keep track of the fully qualified keypath. - * This returns a key keypath because during resolution, the full keypath element tree is walked - * and if this modified the original copy, it would remain after popping back up the element tree. - */ - @CheckResult - @RestrictTo(RestrictTo.Scope.LIBRARY) - public KeyPath addKey(String key) { - KeyPath newKeyPath = new KeyPath(this); - newKeyPath.keys.add(key); - return newKeyPath; - } - - /** - * Return a new KeyPath with the element resolved to the specified {@link KeyPathElement}. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY) - public KeyPath resolve(KeyPathElement element) { - KeyPath keyPath = new KeyPath(this); - keyPath.resolvedElement = element; - return keyPath; - } - - /** - * Returns a {@link KeyPathElement} that this has been resolved to. KeyPaths get resolved with - * resolveKeyPath on LottieDrawable or LottieAnimationView. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY) - @Nullable - public KeyPathElement getResolvedElement() { - return resolvedElement; - } - - /** - * Returns whether they key matches at the specified depth. - */ - @SuppressWarnings("RedundantIfStatement") - @RestrictTo(RestrictTo.Scope.LIBRARY) - public boolean matches(String key, int depth) { - if (isContainer(key)) { - // This is an artificial layer we programatically create. - return true; - } - if (depth >= keys.size()) { - return false; - } - if (keys.get(depth).equals(key) || - keys.get(depth).equals("**") || - keys.get(depth).equals("*")) { - return true; - } - return false; - } - - /** - * For a given key and depth, returns how much the depth should be incremented by when - * resolving a keypath to children. - *

    - * This can be 0 or 2 when there is a globstar and the next key either matches or doesn't match - * the current key. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY) - public int incrementDepthBy(String key, int depth) { - if (isContainer(key)) { - // If it's a container then we added programatically and it isn't a part of the keypath. - return 0; - } - if (!keys.get(depth).equals("**")) { - // If it's not a globstar then it is part of the keypath. - return 1; - } - if (depth == keys.size() - 1) { - // The last key is a globstar. - return 0; - } - if (keys.get(depth + 1).equals(key)) { - // We are a globstar and the next key is our current key so consume both. - return 2; - } - return 0; - } - - /** - * Returns whether the key at specified depth is fully specific enough to match the full set of - * keys in this keypath. - */ - @RestrictTo(RestrictTo.Scope.LIBRARY) - public boolean fullyResolvesTo(String key, int depth) { - if (depth >= keys.size()) { - return false; - } - boolean isLastDepth = depth == keys.size() - 1; - String keyAtDepth = keys.get(depth); - boolean isGlobstar = keyAtDepth.equals("**"); - - if (!isGlobstar) { - boolean matches = keyAtDepth.equals(key) || keyAtDepth.equals("*"); - return (isLastDepth || (depth == keys.size() - 2 && endsWithGlobstar())) && matches; - } - - boolean isGlobstarButNextKeyMatches = !isLastDepth && keys.get(depth + 1).equals(key); - if (isGlobstarButNextKeyMatches) { - return depth == keys.size() - 2 || - (depth == keys.size() - 3 && endsWithGlobstar()); - } - - if (isLastDepth) { - return true; - } - if (depth + 1 < keys.size() - 1) { - // We are a globstar but there is more than 1 key after the globstar we we can't fully match. - return false; - } - // Return whether the next key (which we now know is the last one) is the same as the current - // key. - return keys.get(depth + 1).equals(key); - } - - /** - * Returns whether the keypath resolution should propagate to children. Some keypaths resolve - * to content other than leaf contents (such as a layer or content group transform) so sometimes - * this will return false. - */ - @SuppressWarnings("SimplifiableIfStatement") - @RestrictTo(RestrictTo.Scope.LIBRARY) - public boolean propagateToChildren(String key, int depth) { - if ("__container".equals(key)) { - return true; - } - return depth < keys.size() - 1 || keys.get(depth).equals("**"); - } - - /** - * We artificially create some container groups (like a root ContentGroup for the entire animation - * and for the contents of a ShapeLayer). - */ - private boolean isContainer(String key) { - return "__container".equals(key); - } - - private boolean endsWithGlobstar() { - return keys.get(keys.size() - 1).equals("**"); - } - - public String keysToString() { - return keys.toString(); - } - - @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - KeyPath keyPath = (KeyPath) o; - - if (!keys.equals(keyPath.keys)) { - return false; - } - return resolvedElement != null ? resolvedElement.equals(keyPath.resolvedElement) : keyPath.resolvedElement == null; - } - - @Override public int hashCode() { - int result = keys.hashCode(); - result = 31 * result + (resolvedElement != null ? resolvedElement.hashCode() : 0); - return result; - } - - @Override public String toString() { - return "KeyPath{" + "keys=" + keys + ",resolved=" + (resolvedElement != null) + '}'; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java deleted file mode 100644 index e43f600f..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/KeyPathElement.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.airbnb.lottie.model; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; - -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.List; - -/** - * Any item that can be a part of a {@link KeyPath} should implement this. - */ -@RestrictTo(LIBRARY) -public interface KeyPathElement { - - /** - * Called recursively during keypath resolution. - *

    - * The overridden method should just call: - * MiscUtils.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath, this); - * - * @param keyPath The full keypath being resolved. - * @param depth The current depth that this element should be checked at in the keypath. - * @param accumulator A list of fully resolved keypaths. If this element fully matches the - * keypath then it should add itself to this list. - * @param currentPartialKeyPath A keypath that contains all parent element of this one. - * This element should create a copy of this and append itself - * with KeyPath#addKey when it adds itself to the accumulator - * or propagates resolution to its children. - */ - void resolveKeyPath( - KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath); - - /** - * The overridden method should handle appropriate properties and set value callbacks on their - * animations. - */ - void addValueCallback(T property, @Nullable LottieValueCallback callback); -} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java deleted file mode 100644 index cfa897b1..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/LottieCompositionCache.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.airbnb.lottie.model; - -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; -import androidx.annotation.VisibleForTesting; -import androidx.collection.LruCache; - -import com.airbnb.lottie.LottieComposition; - -@RestrictTo(RestrictTo.Scope.LIBRARY) -public class LottieCompositionCache { - - private static final LottieCompositionCache INSTANCE = new LottieCompositionCache(); - - public static LottieCompositionCache getInstance() { - return INSTANCE; - } - - private final LruCache cache = new LruCache<>(20); - - @VisibleForTesting LottieCompositionCache() { - } - - @Nullable - public LottieComposition get(@Nullable String cacheKey) { - if (cacheKey == null) { - return null; - } - return cache.get(cacheKey); - } - - public void put(@Nullable String cacheKey, LottieComposition composition) { - if (cacheKey == null) { - return; - } - cache.put(cacheKey, composition); - } - - public void clear() { - cache.evictAll(); - } - - /** - * Set the maximum number of compositions to keep cached in memory. - * This must be {@literal >} 0. - */ - public void resize(int size) { - cache.resize(size); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java deleted file mode 100644 index a8ec9035..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/Marker.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.airbnb.lottie.model; - -public class Marker { - private static final String CARRIAGE_RETURN = "\r"; - - private final String name; - public final float startFrame; - public final float durationFrames; - - public Marker(String name, float startFrame, float durationFrames) { - this.name = name; - this.durationFrames = durationFrames; - this.startFrame = startFrame; - } - - public String getName() { - return name; - } - - public float getStartFrame() { - return startFrame; - } - - public float getDurationFrames() { - return durationFrames; - } - - public boolean matchesName(String name) { - if (this.name.equalsIgnoreCase(name)) { - return true; - } - - // It is easy for a designer to accidentally include an extra newline which will cause the name to not match what they would - // expect. This is a convenience to precent unneccesary confusion. - return this.name.endsWith(CARRIAGE_RETURN) && this.name.substring(0, this.name.length() - 1).equalsIgnoreCase(name); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java deleted file mode 100644 index ea7e473c..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/MutablePair.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.airbnb.lottie.model; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.Nullable; -import androidx.annotation.RestrictTo; -import androidx.core.util.Pair; - -/** - * Non final version of {@link Pair}. - */ -@RestrictTo(LIBRARY) -public class MutablePair { - @Nullable T first; - @Nullable T second; - - public void set(T first, T second) { - this.first = first; - this.second = second; - } - - /** - * Checks the two objects for equality by delegating to their respective - * {@link Object#equals(Object)} methods. - * - * @param o the {@link Pair} to which this one is to be checked for equality - * @return true if the underlying objects of the Pair are both considered - * equal - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof Pair)) { - return false; - } - Pair p = (Pair) o; - return objectsEqual(p.first, first) && objectsEqual(p.second, second); - } - - private static boolean objectsEqual(Object a, Object b) { - return a == b || (a != null && a.equals(b)); - } - - /** - * Compute a hash code using the hash codes of the underlying objects - * - * @return a hashcode of the Pair - */ - @Override - public int hashCode() { - return (first == null ? 0 : first.hashCode()) ^ (second == null ? 0 : second.hashCode()); - } - - @Override - public String toString() { - return "Pair{" + first + " " + second + "}"; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java deleted file mode 100644 index fee7b662..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableColorValue.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatableColorValue extends BaseAnimatableValue { - public AnimatableColorValue(List> keyframes) { - super(keyframes); - } - - @Override public BaseKeyframeAnimation createAnimation() { - return new ColorKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java deleted file mode 100644 index c2975da7..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableFloatValue.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatableFloatValue extends BaseAnimatableValue { - - public AnimatableFloatValue(List> keyframes) { - super(keyframes); - } - - @Override public BaseKeyframeAnimation createAnimation() { - return new FloatKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java deleted file mode 100644 index 963b7ff1..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableGradientColorValue.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.GradientColorKeyframeAnimation; -import com.airbnb.lottie.model.content.GradientColor; -import com.airbnb.lottie.value.Keyframe; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public class AnimatableGradientColorValue extends BaseAnimatableValue { - public AnimatableGradientColorValue(List> keyframes) { - super(ensureInterpolatableKeyframes(keyframes)); - } - - private static List> ensureInterpolatableKeyframes(List> keyframes) { - for (int i = 0; i < keyframes.size(); i++) { - keyframes.set(i, ensureInterpolatableKeyframe(keyframes.get(i))); - } - return keyframes; - } - - private static Keyframe ensureInterpolatableKeyframe(Keyframe keyframe) { - GradientColor startValue = keyframe.startValue; - GradientColor endValue = keyframe.endValue; - if (startValue == null || endValue == null || startValue.getPositions().length == endValue.getPositions().length) { - return keyframe; - } - float[] mergedPositions = mergePositions(startValue.getPositions(), endValue.getPositions()); - // The start/end has opacity stops which required adding extra positions in between the existing colors. - return keyframe.copyWith(startValue.copyWithPositions(mergedPositions), endValue.copyWithPositions(mergedPositions)); - } - - static float[] mergePositions(float[] startPositions, float[] endPositions) { - float[] mergedArray = new float[startPositions.length + endPositions.length]; - System.arraycopy(startPositions, 0, mergedArray, 0, startPositions.length); - System.arraycopy(endPositions, 0, mergedArray, startPositions.length, endPositions.length); - Arrays.sort(mergedArray); - int uniqueValues = 0; - float lastValue = Float.NaN; - for (int i = 0; i < mergedArray.length; i++) { - if (mergedArray[i] != lastValue) { - mergedArray[uniqueValues] = mergedArray[i]; - uniqueValues++; - lastValue = mergedArray[i]; - } - } - return Arrays.copyOfRange(mergedArray, 0, uniqueValues); - } - - @Override public BaseKeyframeAnimation createAnimation() { - return new GradientColorKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java deleted file mode 100644 index 54fb03b8..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableIntegerValue.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatableIntegerValue extends BaseAnimatableValue { - - public AnimatableIntegerValue(List> keyframes) { - super(keyframes); - } - - @Override public BaseKeyframeAnimation createAnimation() { - return new IntegerKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java deleted file mode 100644 index 67a01320..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePathValue.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import android.graphics.PointF; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.PathKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.PointKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatablePathValue implements AnimatableValue { - private final List> keyframes; - - public AnimatablePathValue(List> keyframes) { - this.keyframes = keyframes; - } - - @Override - public List> getKeyframes() { - return keyframes; - } - - @Override - public boolean isStatic() { - return keyframes.size() == 1 && keyframes.get(0).isStatic(); - } - - @Override - public BaseKeyframeAnimation createAnimation() { - if (keyframes.get(0).isStatic()) { - return new PointKeyframeAnimation(keyframes); - } - return new PathKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java deleted file mode 100644 index 867040a1..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatablePointValue.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import android.graphics.PointF; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.PointKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatablePointValue extends BaseAnimatableValue { - public AnimatablePointValue(List> keyframes) { - super(keyframes); - } - - @Override public BaseKeyframeAnimation createAnimation() { - return new PointKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java deleted file mode 100644 index 5bd57b0c..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableScaleValue.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ScaleKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; -import com.airbnb.lottie.value.ScaleXY; - -import java.util.List; - -public class AnimatableScaleValue extends BaseAnimatableValue { - - public AnimatableScaleValue(ScaleXY value) { - super(value); - } - - public AnimatableScaleValue(List> keyframes) { - super(keyframes); - } - - @Override public BaseKeyframeAnimation createAnimation() { - return new ScaleKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java deleted file mode 100644 index 8db80d6c..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableShapeValue.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import android.graphics.Path; - -import com.airbnb.lottie.animation.keyframe.ShapeKeyframeAnimation; -import com.airbnb.lottie.model.content.ShapeData; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatableShapeValue extends BaseAnimatableValue { - - public AnimatableShapeValue(List> keyframes) { - super(keyframes); - } - - @Override public ShapeKeyframeAnimation createAnimation() { - return new ShapeKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java deleted file mode 100644 index f046b53c..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import android.graphics.PointF; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.SplitDimensionPathKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatableSplitDimensionPathValue implements AnimatableValue { - private final AnimatableFloatValue animatableXDimension; - private final AnimatableFloatValue animatableYDimension; - - public AnimatableSplitDimensionPathValue( - AnimatableFloatValue animatableXDimension, - AnimatableFloatValue animatableYDimension) { - this.animatableXDimension = animatableXDimension; - this.animatableYDimension = animatableYDimension; - } - - @Override - public List> getKeyframes() { - throw new UnsupportedOperationException("Cannot call getKeyframes on AnimatableSplitDimensionPathValue."); - } - - @Override - public boolean isStatic() { - return animatableXDimension.isStatic() && animatableYDimension.isStatic(); - } - - @Override public BaseKeyframeAnimation createAnimation() { - return new SplitDimensionPathKeyframeAnimation( - animatableXDimension.createAnimation(), animatableYDimension.createAnimation()); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java deleted file mode 100644 index 231a2962..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextFrame.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.animation.keyframe.TextKeyframeAnimation; -import com.airbnb.lottie.model.DocumentData; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public class AnimatableTextFrame extends BaseAnimatableValue { - - public AnimatableTextFrame(List> keyframes) { - super(keyframes); - } - - @Override public TextKeyframeAnimation createAnimation() { - return new TextKeyframeAnimation(keyframes); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java deleted file mode 100644 index 1b72bb30..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import androidx.annotation.Nullable; - -public class AnimatableTextProperties { - - @Nullable public final AnimatableColorValue color; - @Nullable public final AnimatableColorValue stroke; - @Nullable public final AnimatableFloatValue strokeWidth; - @Nullable public final AnimatableFloatValue tracking; - - public AnimatableTextProperties(@Nullable AnimatableColorValue color, - @Nullable AnimatableColorValue stroke, @Nullable AnimatableFloatValue strokeWidth, - @Nullable AnimatableFloatValue tracking) { - this.color = color; - this.stroke = stroke; - this.strokeWidth = strokeWidth; - this.tracking = tracking; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java deleted file mode 100644 index d88e11f4..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableTransform.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import android.graphics.PointF; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.ModifierContent; -import com.airbnb.lottie.animation.keyframe.TransformKeyframeAnimation; -import com.airbnb.lottie.model.content.ContentModel; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class AnimatableTransform implements ModifierContent, ContentModel { - @Nullable - private final AnimatablePathValue anchorPoint; - @Nullable - private final AnimatableValue position; - @Nullable - private final AnimatableScaleValue scale; - @Nullable - private final AnimatableFloatValue rotation; - @Nullable - private final AnimatableIntegerValue opacity; - @Nullable - private final AnimatableFloatValue skew; - @Nullable - private final AnimatableFloatValue skewAngle; - - // Used for repeaters - @Nullable - private final AnimatableFloatValue startOpacity; - @Nullable - private final AnimatableFloatValue endOpacity; - - private boolean autoOrient = false; - - public AnimatableTransform() { - this(null, null, null, null, null, null, null, null, null); - } - - public AnimatableTransform(@Nullable AnimatablePathValue anchorPoint, - @Nullable AnimatableValue position, @Nullable AnimatableScaleValue scale, - @Nullable AnimatableFloatValue rotation, @Nullable AnimatableIntegerValue opacity, - @Nullable AnimatableFloatValue startOpacity, @Nullable AnimatableFloatValue endOpacity, - @Nullable AnimatableFloatValue skew, @Nullable AnimatableFloatValue skewAngle) { - this.anchorPoint = anchorPoint; - this.position = position; - this.scale = scale; - this.rotation = rotation; - this.opacity = opacity; - this.startOpacity = startOpacity; - this.endOpacity = endOpacity; - this.skew = skew; - this.skewAngle = skewAngle; - } - - /** - * This is set as a property of the layer so it is parsed and set separately. - */ - public void setAutoOrient(boolean autoOrient) { - this.autoOrient = autoOrient; - } - - @Nullable - public AnimatablePathValue getAnchorPoint() { - return anchorPoint; - } - - @Nullable - public AnimatableValue getPosition() { - return position; - } - - @Nullable - public AnimatableScaleValue getScale() { - return scale; - } - - @Nullable - public AnimatableFloatValue getRotation() { - return rotation; - } - - @Nullable - public AnimatableIntegerValue getOpacity() { - return opacity; - } - - @Nullable - public AnimatableFloatValue getStartOpacity() { - return startOpacity; - } - - @Nullable - public AnimatableFloatValue getEndOpacity() { - return endOpacity; - } - - @Nullable - public AnimatableFloatValue getSkew() { - return skew; - } - - @Nullable - public AnimatableFloatValue getSkewAngle() { - return skewAngle; - } - - public boolean isAutoOrient() { - return autoOrient; - } - - public TransformKeyframeAnimation createAnimation() { - return new TransformKeyframeAnimation(this); - } - - @Nullable - @Override - public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return null; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java deleted file mode 100644 index 9dcf176a..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/AnimatableValue.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; - -public interface AnimatableValue { - List> getKeyframes(); - - boolean isStatic(); - - BaseKeyframeAnimation createAnimation(); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java deleted file mode 100644 index 6a5f6a74..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/BaseAnimatableValue.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.airbnb.lottie.model.animatable; - -import com.airbnb.lottie.value.Keyframe; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -abstract class BaseAnimatableValue implements AnimatableValue { - final List> keyframes; - - /** - * Create a default static animatable path. - */ - BaseAnimatableValue(V value) { - this(Collections.singletonList(new Keyframe<>(value))); - } - - BaseAnimatableValue(List> keyframes) { - this.keyframes = keyframes; - } - - public List> getKeyframes() { - return keyframes; - } - - @Override - public boolean isStatic() { - return keyframes.isEmpty() || (keyframes.size() == 1 && keyframes.get(0).isStatic()); - } - - @Override public String toString() { - final StringBuilder sb = new StringBuilder(); - if (!keyframes.isEmpty()) { - sb.append("values=").append(Arrays.toString(keyframes.toArray())); - } - return sb.toString(); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java deleted file mode 100644 index 407730c1..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/animatable/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.model.animatable; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java deleted file mode 100644 index 82829c0b..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/BlurEffect.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.airbnb.lottie.model.content; - -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; - -public class BlurEffect { - - final AnimatableFloatValue blurriness; - - public BlurEffect(AnimatableFloatValue blurriness) { - this.blurriness = blurriness; - } - - public AnimatableFloatValue getBlurriness() { - return blurriness; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java deleted file mode 100644 index fd7cd23b..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/CircleShape.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.airbnb.lottie.model.content; - -import android.graphics.PointF; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.EllipseContent; -import com.airbnb.lottie.model.animatable.AnimatablePointValue; -import com.airbnb.lottie.model.animatable.AnimatableValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class CircleShape implements ContentModel { - private final String name; - private final AnimatableValue position; - private final AnimatablePointValue size; - private final boolean isReversed; - private final boolean hidden; - - public CircleShape(String name, AnimatableValue position, - AnimatablePointValue size, boolean isReversed, boolean hidden) { - this.name = name; - this.position = position; - this.size = size; - this.isReversed = isReversed; - this.hidden = hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new EllipseContent(drawable, layer, this); - } - - public String getName() { - return name; - } - - public AnimatableValue getPosition() { - return position; - } - - public AnimatablePointValue getSize() { - return size; - } - - public boolean isReversed() { - return isReversed; - } - - public boolean isHidden() { - return hidden; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java deleted file mode 100644 index a5060471..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ContentModel.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.airbnb.lottie.model.content; - - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.model.layer.BaseLayer; - -public interface ContentModel { - @Nullable Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer); -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java deleted file mode 100644 index 41e1e29e..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientColor.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.airbnb.lottie.model.content; - -import com.airbnb.lottie.utils.GammaEvaluator; -import com.airbnb.lottie.utils.MiscUtils; - -import java.util.Arrays; - - -public class GradientColor { - private final float[] positions; - private final int[] colors; - - public GradientColor(float[] positions, int[] colors) { - this.positions = positions; - this.colors = colors; - } - - public float[] getPositions() { - return positions; - } - - public int[] getColors() { - return colors; - } - - public int getSize() { - return colors.length; - } - - public void lerp(GradientColor gc1, GradientColor gc2, float progress) { - // Fast return in case start and end is the same - // or if progress is at start/end or out of [0,1] bounds - if (gc1.equals(gc2)) { - copyFrom(gc1); - return; - } else if (progress <= 0f) { - copyFrom(gc1); - return; - } else if (progress >= 1f) { - copyFrom(gc2); - return; - } - - if (gc1.colors.length != gc2.colors.length) { - throw new IllegalArgumentException("Cannot interpolate between gradients. Lengths vary (" + - gc1.colors.length + " vs " + gc2.colors.length + ")"); - } - - for (int i = 0; i < gc1.colors.length; i++) { - positions[i] = MiscUtils.lerp(gc1.positions[i], gc2.positions[i], progress); - colors[i] = GammaEvaluator.evaluate(progress, gc1.colors[i], gc2.colors[i]); - } - - // Not all keyframes that this GradientColor are used for will have the same length. - // AnimatableGradientColorValue.ensureInterpolatableKeyframes may add extra positions - // for some keyframes but not others to ensure that it is interpolatable. - // If there are extra positions here, just duplicate the last value in the gradient. - for (int i = gc1.colors.length; i < positions.length; i++) { - positions[i] = positions[gc1.colors.length - 1]; - colors[i] = colors[gc1.colors.length - 1]; - } - } - - public GradientColor copyWithPositions(float[] positions) { - int[] colors = new int[positions.length]; - for (int i = 0; i < positions.length; i++) { - colors[i] = getColorForPosition(positions[i]); - } - return new GradientColor(positions, colors); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GradientColor that = (GradientColor) o; - return Arrays.equals(positions, that.positions) && Arrays.equals(colors, that.colors); - } - - @Override - public int hashCode() { - int result = Arrays.hashCode(positions); - result = 31 * result + Arrays.hashCode(colors); - return result; - } - - private int getColorForPosition(float position) { - int existingIndex = Arrays.binarySearch(positions, position); - if (existingIndex >= 0) { - return colors[existingIndex]; - } - // binarySearch returns -insertionPoint - 1 if it is not found. - int insertionPoint = -(existingIndex + 1); - if (insertionPoint == 0) { - return colors[0]; - } else if (insertionPoint == colors.length - 1) { - return colors[colors.length - 1]; - } - float startPosition = positions[insertionPoint - 1]; - float endPosition = positions[insertionPoint]; - int startColor = colors[insertionPoint - 1]; - int endColor = colors[insertionPoint]; - - float fraction = (position - startPosition) / (endPosition - startPosition); - return GammaEvaluator.evaluate(fraction, startColor, endColor); - } - - private void copyFrom(GradientColor other) { - for (int i = 0; i < other.colors.length; i++) { - positions[i] = other.positions[i]; - colors[i] = other.colors[i]; - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java deleted file mode 100644 index 9a082809..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientFill.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.airbnb.lottie.model.content; - -import android.graphics.Path; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.GradientFillContent; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.animatable.AnimatableGradientColorValue; -import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; -import com.airbnb.lottie.model.animatable.AnimatablePointValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class GradientFill implements ContentModel { - - private final GradientType gradientType; - private final Path.FillType fillType; - private final AnimatableGradientColorValue gradientColor; - private final AnimatableIntegerValue opacity; - private final AnimatablePointValue startPoint; - private final AnimatablePointValue endPoint; - private final String name; - @Nullable private final AnimatableFloatValue highlightLength; - @Nullable private final AnimatableFloatValue highlightAngle; - private final boolean hidden; - - public GradientFill(String name, GradientType gradientType, Path.FillType fillType, - AnimatableGradientColorValue gradientColor, - AnimatableIntegerValue opacity, AnimatablePointValue startPoint, - AnimatablePointValue endPoint, AnimatableFloatValue highlightLength, - AnimatableFloatValue highlightAngle, boolean hidden) { - this.gradientType = gradientType; - this.fillType = fillType; - this.gradientColor = gradientColor; - this.opacity = opacity; - this.startPoint = startPoint; - this.endPoint = endPoint; - this.name = name; - this.highlightLength = highlightLength; - this.highlightAngle = highlightAngle; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public GradientType getGradientType() { - return gradientType; - } - - public Path.FillType getFillType() { - return fillType; - } - - public AnimatableGradientColorValue getGradientColor() { - return gradientColor; - } - - public AnimatableIntegerValue getOpacity() { - return opacity; - } - - public AnimatablePointValue getStartPoint() { - return startPoint; - } - - public AnimatablePointValue getEndPoint() { - return endPoint; - } - - public boolean isHidden() { - return hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new GradientFillContent(drawable, composition, layer, this); - } - -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java deleted file mode 100644 index 6e4b2029..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientStroke.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.airbnb.lottie.model.content; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.GradientStrokeContent; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.animatable.AnimatableGradientColorValue; -import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; -import com.airbnb.lottie.model.animatable.AnimatablePointValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -import java.util.List; - -public class GradientStroke implements ContentModel { - - private final String name; - private final GradientType gradientType; - private final AnimatableGradientColorValue gradientColor; - private final AnimatableIntegerValue opacity; - private final AnimatablePointValue startPoint; - private final AnimatablePointValue endPoint; - private final AnimatableFloatValue width; - private final ShapeStroke.LineCapType capType; - private final ShapeStroke.LineJoinType joinType; - private final float miterLimit; - private final List lineDashPattern; - @Nullable private final AnimatableFloatValue dashOffset; - private final boolean hidden; - - public GradientStroke(String name, GradientType gradientType, - AnimatableGradientColorValue gradientColor, - AnimatableIntegerValue opacity, AnimatablePointValue startPoint, - AnimatablePointValue endPoint, AnimatableFloatValue width, ShapeStroke.LineCapType capType, - ShapeStroke.LineJoinType joinType, float miterLimit, - List lineDashPattern, - @Nullable AnimatableFloatValue dashOffset, boolean hidden) { - this.name = name; - this.gradientType = gradientType; - this.gradientColor = gradientColor; - this.opacity = opacity; - this.startPoint = startPoint; - this.endPoint = endPoint; - this.width = width; - this.capType = capType; - this.joinType = joinType; - this.miterLimit = miterLimit; - this.lineDashPattern = lineDashPattern; - this.dashOffset = dashOffset; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public GradientType getGradientType() { - return gradientType; - } - - public AnimatableGradientColorValue getGradientColor() { - return gradientColor; - } - - public AnimatableIntegerValue getOpacity() { - return opacity; - } - - public AnimatablePointValue getStartPoint() { - return startPoint; - } - - public AnimatablePointValue getEndPoint() { - return endPoint; - } - - public AnimatableFloatValue getWidth() { - return width; - } - - public ShapeStroke.LineCapType getCapType() { - return capType; - } - - public ShapeStroke.LineJoinType getJoinType() { - return joinType; - } - - public List getLineDashPattern() { - return lineDashPattern; - } - - @Nullable public AnimatableFloatValue getDashOffset() { - return dashOffset; - } - - public float getMiterLimit() { - return miterLimit; - } - - public boolean isHidden() { - return hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new GradientStrokeContent(drawable, layer, this); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java deleted file mode 100644 index bd75fa10..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/GradientType.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.airbnb.lottie.model.content; - -public enum GradientType { - LINEAR, - RADIAL -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java deleted file mode 100644 index e1c91a0a..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/LBlendMode.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.airbnb.lottie.model.content; - -import androidx.annotation.Nullable; -import androidx.core.graphics.BlendModeCompat; - -/** - * Lottie BlendMode, - * not to be confused with Paint.BlendMode in android graphics core, - * which we will rely on for rendering. - */ -public enum LBlendMode { - NORMAL, - MULTIPLY, - SCREEN, - OVERLAY, - DARKEN, - LIGHTEN, - COLOR_DODGE, - COLOR_BURN, - HARD_LIGHT, - SOFT_LIGHT, - DIFFERENCE, - EXCLUSION, - HUE, - SATURATION, - COLOR, - LUMINOSITY, - ADD, - HARD_MIX; - - @Nullable - public BlendModeCompat toNativeBlendMode() { - switch (this) { - case NORMAL: - return null; - case SCREEN: - return BlendModeCompat.SCREEN; - case OVERLAY: - return BlendModeCompat.OVERLAY; - case DARKEN: - return BlendModeCompat.DARKEN; - case LIGHTEN: - return BlendModeCompat.LIGHTEN; - case ADD: - return BlendModeCompat.PLUS; - - // Blend modes below were not added to the platform until Q. - // To prevent unexpected issues where animations look correct - // during development but silently break for users with older devices - // we won't support any of these until Q is widely used. - case MULTIPLY: - case COLOR_DODGE: - case COLOR_BURN: - case HARD_LIGHT: - case SOFT_LIGHT: - case DIFFERENCE: - case EXCLUSION: - case HUE: - case SATURATION: - case COLOR: - case LUMINOSITY: - case HARD_MIX: - default: - return null; - } - } - -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java deleted file mode 100644 index f7094854..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Mask.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.airbnb.lottie.model.content; - -import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; -import com.airbnb.lottie.model.animatable.AnimatableShapeValue; - -public class Mask { - public enum MaskMode { - MASK_MODE_ADD, - MASK_MODE_SUBTRACT, - MASK_MODE_INTERSECT, - MASK_MODE_NONE - } - - private final MaskMode maskMode; - private final AnimatableShapeValue maskPath; - private final AnimatableIntegerValue opacity; - private final boolean inverted; - - public Mask(MaskMode maskMode, AnimatableShapeValue maskPath, AnimatableIntegerValue opacity, boolean inverted) { - this.maskMode = maskMode; - this.maskPath = maskPath; - this.opacity = opacity; - this.inverted = inverted; - } - - public MaskMode getMaskMode() { - return maskMode; - } - - public AnimatableShapeValue getMaskPath() { - return maskPath; - } - - public AnimatableIntegerValue getOpacity() { - return opacity; - } - - public boolean isInverted() { - return inverted; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java deleted file mode 100644 index 315add2d..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/MergePaths.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.airbnb.lottie.model.content; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.MergePathsContent; -import com.airbnb.lottie.model.layer.BaseLayer; -import com.airbnb.lottie.utils.Logger; - - -public class MergePaths implements ContentModel { - - public enum MergePathsMode { - MERGE, - ADD, - SUBTRACT, - INTERSECT, - EXCLUDE_INTERSECTIONS; - - public static MergePathsMode forId(int id) { - switch (id) { - case 1: - return MERGE; - case 2: - return ADD; - case 3: - return SUBTRACT; - case 4: - return INTERSECT; - case 5: - return EXCLUDE_INTERSECTIONS; - default: - return MERGE; - } - } - } - - private final String name; - private final MergePathsMode mode; - private final boolean hidden; - - public MergePaths(String name, MergePathsMode mode, boolean hidden) { - this.name = name; - this.mode = mode; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public MergePathsMode getMode() { - return mode; - } - - public boolean isHidden() { - return hidden; - } - - @Override @Nullable public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - if (!drawable.enableMergePathsForKitKatAndAbove()) { - Logger.warning("Animation contains merge paths but they are disabled."); - return null; - } - return new MergePathsContent(this); - } - - @Override - public String toString() { - return "MergePaths{" + "mode=" + mode + '}'; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java deleted file mode 100644 index 45144221..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/PolystarShape.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.airbnb.lottie.model.content; - -import android.graphics.PointF; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.PolystarContent; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.animatable.AnimatableValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class PolystarShape implements ContentModel { - public enum Type { - STAR(1), - POLYGON(2); - - private final int value; - - Type(int value) { - this.value = value; - } - - public static Type forValue(int value) { - for (Type type : Type.values()) { - if (type.value == value) { - return type; - } - } - return null; - } - } - - private final String name; - private final Type type; - private final AnimatableFloatValue points; - private final AnimatableValue position; - private final AnimatableFloatValue rotation; - private final AnimatableFloatValue innerRadius; - private final AnimatableFloatValue outerRadius; - private final AnimatableFloatValue innerRoundedness; - private final AnimatableFloatValue outerRoundedness; - private final boolean hidden; - private final boolean isReversed; - - public PolystarShape(String name, Type type, AnimatableFloatValue points, - AnimatableValue position, - AnimatableFloatValue rotation, AnimatableFloatValue innerRadius, - AnimatableFloatValue outerRadius, AnimatableFloatValue innerRoundedness, - AnimatableFloatValue outerRoundedness, boolean hidden, boolean isReversed) { - this.name = name; - this.type = type; - this.points = points; - this.position = position; - this.rotation = rotation; - this.innerRadius = innerRadius; - this.outerRadius = outerRadius; - this.innerRoundedness = innerRoundedness; - this.outerRoundedness = outerRoundedness; - this.hidden = hidden; - this.isReversed = isReversed; - } - - public String getName() { - return name; - } - - public Type getType() { - return type; - } - - public AnimatableFloatValue getPoints() { - return points; - } - - public AnimatableValue getPosition() { - return position; - } - - public AnimatableFloatValue getRotation() { - return rotation; - } - - public AnimatableFloatValue getInnerRadius() { - return innerRadius; - } - - public AnimatableFloatValue getOuterRadius() { - return outerRadius; - } - - public AnimatableFloatValue getInnerRoundedness() { - return innerRoundedness; - } - - public AnimatableFloatValue getOuterRoundedness() { - return outerRoundedness; - } - - public boolean isHidden() { - return hidden; - } - - public boolean isReversed() { - return isReversed; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new PolystarContent(drawable, layer, this); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java deleted file mode 100644 index 13b1f4d4..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RectangleShape.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.airbnb.lottie.model.content; - -import android.graphics.PointF; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.RectangleContent; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.animatable.AnimatableValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class RectangleShape implements ContentModel { - private final String name; - private final AnimatableValue position; - private final AnimatableValue size; - private final AnimatableFloatValue cornerRadius; - private final boolean hidden; - - public RectangleShape(String name, AnimatableValue position, - AnimatableValue size, AnimatableFloatValue cornerRadius, boolean hidden) { - this.name = name; - this.position = position; - this.size = size; - this.cornerRadius = cornerRadius; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public AnimatableFloatValue getCornerRadius() { - return cornerRadius; - } - - public AnimatableValue getSize() { - return size; - } - - public AnimatableValue getPosition() { - return position; - } - - public boolean isHidden() { - return hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new RectangleContent(drawable, layer, this); - } - - @Override public String toString() { - return "RectangleShape{position=" + position + - ", size=" + size + - '}'; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java deleted file mode 100644 index f336391e..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/Repeater.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.airbnb.lottie.model.content; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.RepeaterContent; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.animatable.AnimatableTransform; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class Repeater implements ContentModel { - private final String name; - private final AnimatableFloatValue copies; - private final AnimatableFloatValue offset; - private final AnimatableTransform transform; - private final boolean hidden; - - public Repeater(String name, AnimatableFloatValue copies, AnimatableFloatValue offset, - AnimatableTransform transform, boolean hidden) { - this.name = name; - this.copies = copies; - this.offset = offset; - this.transform = transform; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public AnimatableFloatValue getCopies() { - return copies; - } - - public AnimatableFloatValue getOffset() { - return offset; - } - - public AnimatableTransform getTransform() { - return transform; - } - - public boolean isHidden() { - return hidden; - } - - @Nullable @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new RepeaterContent(drawable, layer, this); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java deleted file mode 100644 index 8daa5378..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/RoundedCorners.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.airbnb.lottie.model.content; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.RoundedCornersContent; -import com.airbnb.lottie.model.animatable.AnimatableValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class RoundedCorners implements ContentModel { - private final String name; - private final AnimatableValue cornerRadius; - - public RoundedCorners(String name, AnimatableValue cornerRadius) { - this.name = name; - this.cornerRadius = cornerRadius; - } - - public String getName() { - return name; - } - - public AnimatableValue getCornerRadius() { - return cornerRadius; - } - - @Nullable @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new RoundedCornersContent(drawable, layer, this); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java deleted file mode 100644 index a49ce9b8..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeData.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.airbnb.lottie.model.content; - -import android.graphics.PointF; - -import androidx.annotation.FloatRange; - -import com.airbnb.lottie.model.CubicCurveData; -import com.airbnb.lottie.utils.Logger; -import com.airbnb.lottie.utils.MiscUtils; - -import java.util.ArrayList; -import java.util.List; - -public class ShapeData { - private final List curves; - private PointF initialPoint; - private boolean closed; - - public ShapeData(PointF initialPoint, boolean closed, List curves) { - this.initialPoint = initialPoint; - this.closed = closed; - this.curves = new ArrayList<>(curves); - } - - public ShapeData() { - curves = new ArrayList<>(); - } - - public void setInitialPoint(float x, float y) { - if (initialPoint == null) { - initialPoint = new PointF(); - } - initialPoint.set(x, y); - } - - public PointF getInitialPoint() { - return initialPoint; - } - - public void setClosed(boolean closed) { - this.closed = closed; - } - - public boolean isClosed() { - return closed; - } - - public List getCurves() { - return curves; - } - - public void interpolateBetween(ShapeData shapeData1, ShapeData shapeData2, - @FloatRange(from = 0f, to = 1f) float percentage) { - if (initialPoint == null) { - initialPoint = new PointF(); - } - closed = shapeData1.isClosed() || shapeData2.isClosed(); - - - if (shapeData1.getCurves().size() != shapeData2.getCurves().size()) { - Logger.warning("Curves must have the same number of control points. Shape 1: " + - shapeData1.getCurves().size() + "\tShape 2: " + shapeData2.getCurves().size()); - } - - int points = Math.min(shapeData1.getCurves().size(), shapeData2.getCurves().size()); - if (curves.size() < points) { - for (int i = curves.size(); i < points; i++) { - curves.add(new CubicCurveData()); - } - } else if (curves.size() > points) { - for (int i = curves.size() - 1; i >= points; i--) { - curves.remove(curves.size() - 1); - } - } - - PointF initialPoint1 = shapeData1.getInitialPoint(); - PointF initialPoint2 = shapeData2.getInitialPoint(); - - setInitialPoint(MiscUtils.lerp(initialPoint1.x, initialPoint2.x, percentage), - MiscUtils.lerp(initialPoint1.y, initialPoint2.y, percentage)); - - for (int i = curves.size() - 1; i >= 0; i--) { - CubicCurveData curve1 = shapeData1.getCurves().get(i); - CubicCurveData curve2 = shapeData2.getCurves().get(i); - - PointF cp11 = curve1.getControlPoint1(); - PointF cp21 = curve1.getControlPoint2(); - PointF vertex1 = curve1.getVertex(); - - PointF cp12 = curve2.getControlPoint1(); - PointF cp22 = curve2.getControlPoint2(); - PointF vertex2 = curve2.getVertex(); - - curves.get(i).setControlPoint1( - MiscUtils.lerp(cp11.x, cp12.x, percentage), MiscUtils.lerp(cp11.y, cp12.y, - percentage)); - curves.get(i).setControlPoint2( - MiscUtils.lerp(cp21.x, cp22.x, percentage), MiscUtils.lerp(cp21.y, cp22.y, - percentage)); - curves.get(i).setVertex( - MiscUtils.lerp(vertex1.x, vertex2.x, percentage), MiscUtils.lerp(vertex1.y, vertex2.y, - percentage)); - } - } - - @Override public String toString() { - return "ShapeData{" + "numCurves=" + curves.size() + - "closed=" + closed + - '}'; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java deleted file mode 100644 index a3364ac2..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeFill.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.airbnb.lottie.model.content; - -import android.graphics.Path; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.FillContent; -import com.airbnb.lottie.model.animatable.AnimatableColorValue; -import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class ShapeFill implements ContentModel { - private final boolean fillEnabled; - private final Path.FillType fillType; - private final String name; - @Nullable private final AnimatableColorValue color; - @Nullable private final AnimatableIntegerValue opacity; - private final boolean hidden; - - public ShapeFill(String name, boolean fillEnabled, Path.FillType fillType, - @Nullable AnimatableColorValue color, @Nullable AnimatableIntegerValue opacity, boolean hidden) { - this.name = name; - this.fillEnabled = fillEnabled; - this.fillType = fillType; - this.color = color; - this.opacity = opacity; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - @Nullable public AnimatableColorValue getColor() { - return color; - } - - @Nullable public AnimatableIntegerValue getOpacity() { - return opacity; - } - - public Path.FillType getFillType() { - return fillType; - } - - public boolean isHidden() { - return hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new FillContent(drawable, layer, this); - } - - @Override - public String toString() { - return "ShapeFill{" + "color=" + - ", fillEnabled=" + fillEnabled + - '}'; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java deleted file mode 100644 index 5865d6ed..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeGroup.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.airbnb.lottie.model.content; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.ContentGroup; -import com.airbnb.lottie.model.layer.BaseLayer; - -import java.util.Arrays; -import java.util.List; - -public class ShapeGroup implements ContentModel { - private final String name; - private final List items; - private final boolean hidden; - - public ShapeGroup(String name, List items, boolean hidden) { - this.name = name; - this.items = items; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public List getItems() { - return items; - } - - public boolean isHidden() { - return hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new ContentGroup(drawable, layer, this, composition); - } - - @Override public String toString() { - return "ShapeGroup{" + "name='" + name + "\' Shapes: " + Arrays.toString(items.toArray()) + '}'; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java deleted file mode 100644 index 9ae952b2..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapePath.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.airbnb.lottie.model.content; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.ShapeContent; -import com.airbnb.lottie.model.animatable.AnimatableShapeValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class ShapePath implements ContentModel { - private final String name; - private final int index; - private final AnimatableShapeValue shapePath; - private final boolean hidden; - - public ShapePath(String name, int index, AnimatableShapeValue shapePath, boolean hidden) { - this.name = name; - this.index = index; - this.shapePath = shapePath; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public AnimatableShapeValue getShapePath() { - return shapePath; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new ShapeContent(drawable, layer, this); - } - - public boolean isHidden() { - return hidden; - } - - @Override public String toString() { - return "ShapePath{" + "name=" + name + - ", index=" + index + - '}'; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java deleted file mode 100644 index 4c900585..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeStroke.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.airbnb.lottie.model.content; - -import android.graphics.Paint; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.StrokeContent; -import com.airbnb.lottie.model.animatable.AnimatableColorValue; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.animatable.AnimatableIntegerValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -import java.util.List; - -public class ShapeStroke implements ContentModel { - public enum LineCapType { - BUTT, - ROUND, - UNKNOWN; - - public Paint.Cap toPaintCap() { - switch (this) { - case BUTT: - return Paint.Cap.BUTT; - case ROUND: - return Paint.Cap.ROUND; - case UNKNOWN: - default: - return Paint.Cap.SQUARE; - } - } - } - - public enum LineJoinType { - MITER, - ROUND, - BEVEL; - - public Paint.Join toPaintJoin() { - switch (this) { - case BEVEL: - return Paint.Join.BEVEL; - case MITER: - return Paint.Join.MITER; - case ROUND: - return Paint.Join.ROUND; - } - return null; - } - } - - private final String name; - @Nullable private final AnimatableFloatValue offset; - private final List lineDashPattern; - private final AnimatableColorValue color; - private final AnimatableIntegerValue opacity; - private final AnimatableFloatValue width; - private final LineCapType capType; - private final LineJoinType joinType; - private final float miterLimit; - private final boolean hidden; - - public ShapeStroke(String name, @Nullable AnimatableFloatValue offset, - List lineDashPattern, AnimatableColorValue color, - AnimatableIntegerValue opacity, AnimatableFloatValue width, LineCapType capType, - LineJoinType joinType, float miterLimit, boolean hidden) { - this.name = name; - this.offset = offset; - this.lineDashPattern = lineDashPattern; - this.color = color; - this.opacity = opacity; - this.width = width; - this.capType = capType; - this.joinType = joinType; - this.miterLimit = miterLimit; - this.hidden = hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new StrokeContent(drawable, layer, this); - } - - public String getName() { - return name; - } - - public AnimatableColorValue getColor() { - return color; - } - - public AnimatableIntegerValue getOpacity() { - return opacity; - } - - public AnimatableFloatValue getWidth() { - return width; - } - - public List getLineDashPattern() { - return lineDashPattern; - } - - public AnimatableFloatValue getDashOffset() { - return offset; - } - - public LineCapType getCapType() { - return capType; - } - - public LineJoinType getJoinType() { - return joinType; - } - - public float getMiterLimit() { - return miterLimit; - } - - public boolean isHidden() { - return hidden; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java deleted file mode 100644 index b86e5ed2..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/ShapeTrimPath.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.airbnb.lottie.model.content; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.TrimPathContent; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.layer.BaseLayer; - -public class ShapeTrimPath implements ContentModel { - - public enum Type { - SIMULTANEOUSLY, - INDIVIDUALLY; - - public static Type forId(int id) { - switch (id) { - case 1: - return SIMULTANEOUSLY; - case 2: - return INDIVIDUALLY; - default: - throw new IllegalArgumentException("Unknown trim path type " + id); - } - } - } - - private final String name; - private final Type type; - private final AnimatableFloatValue start; - private final AnimatableFloatValue end; - private final AnimatableFloatValue offset; - private final boolean hidden; - - public ShapeTrimPath(String name, Type type, AnimatableFloatValue start, - AnimatableFloatValue end, AnimatableFloatValue offset, boolean hidden) { - this.name = name; - this.type = type; - this.start = start; - this.end = end; - this.offset = offset; - this.hidden = hidden; - } - - public String getName() { - return name; - } - - public Type getType() { - return type; - } - - public AnimatableFloatValue getEnd() { - return end; - } - - public AnimatableFloatValue getStart() { - return start; - } - - public AnimatableFloatValue getOffset() { - return offset; - } - - public boolean isHidden() { - return hidden; - } - - @Override public Content toContent(LottieDrawable drawable, LottieComposition composition, BaseLayer layer) { - return new TrimPathContent(layer, this); - } - - @Override public String toString() { - return "Trim Path: {start: " + start + ", end: " + end + ", offset: " + offset + "}"; - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java deleted file mode 100644 index 3278a495..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/content/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.model.content; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java deleted file mode 100644 index 5a4afc01..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/BaseLayer.java +++ /dev/null @@ -1,761 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import android.graphics.BlurMaskFilter; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.RectF; -import android.os.Build; - -import androidx.annotation.CallSuper; -import androidx.annotation.FloatRange; -import androidx.annotation.Nullable; - -import com.airbnb.lottie.L; -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.LPaint; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.DrawingContent; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.MaskKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.TransformKeyframeAnimation; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.KeyPathElement; -import com.airbnb.lottie.model.content.BlurEffect; -import com.airbnb.lottie.model.content.LBlendMode; -import com.airbnb.lottie.model.content.Mask; -import com.airbnb.lottie.model.content.ShapeData; -import com.airbnb.lottie.parser.DropShadowEffect; -import com.airbnb.lottie.utils.Logger; -import com.airbnb.lottie.utils.Utils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public abstract class BaseLayer - implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElement { - /** - * These flags were in Canvas but they were deprecated and removed. - * TODO: test removing these on older versions of Android. - */ - private static final int CLIP_SAVE_FLAG = 0x02; - private static final int CLIP_TO_LAYER_SAVE_FLAG = 0x10; - private static final int MATRIX_SAVE_FLAG = 0x01; - private static final int SAVE_FLAGS = CLIP_SAVE_FLAG | CLIP_TO_LAYER_SAVE_FLAG | MATRIX_SAVE_FLAG; - - @Nullable - static BaseLayer forModel( - CompositionLayer compositionLayer, Layer layerModel, LottieDrawable drawable, LottieComposition composition) { - switch (layerModel.getLayerType()) { - case SHAPE: - return new ShapeLayer(drawable, layerModel, compositionLayer, composition); - case PRE_COMP: - return new CompositionLayer(drawable, layerModel, - composition.getPrecomps(layerModel.getRefId()), composition); - case SOLID: - return new SolidLayer(drawable, layerModel); - case IMAGE: - return new ImageLayer(drawable, layerModel); - case NULL: - return new NullLayer(drawable, layerModel); - case TEXT: - return new TextLayer(drawable, layerModel); - case UNKNOWN: - default: - // Do nothing - Logger.warning("Unknown layer type " + layerModel.getLayerType()); - return null; - } - } - - private final Path path = new Path(); - private final Matrix matrix = new Matrix(); - private final Matrix canvasMatrix = new Matrix(); - private final Paint contentPaint = new LPaint(Paint.ANTI_ALIAS_FLAG); - private final Paint dstInPaint = new LPaint(Paint.ANTI_ALIAS_FLAG, PorterDuff.Mode.DST_IN); - private final Paint dstOutPaint = new LPaint(Paint.ANTI_ALIAS_FLAG, PorterDuff.Mode.DST_OUT); - private final Paint mattePaint = new LPaint(Paint.ANTI_ALIAS_FLAG); - private final Paint clearPaint = new LPaint(PorterDuff.Mode.CLEAR); - private final RectF rect = new RectF(); - private final RectF canvasBounds = new RectF(); - private final RectF maskBoundsRect = new RectF(); - private final RectF matteBoundsRect = new RectF(); - private final RectF tempMaskBoundsRect = new RectF(); - private final String drawTraceName; - final Matrix boundsMatrix = new Matrix(); - final LottieDrawable lottieDrawable; - final Layer layerModel; - @Nullable - private MaskKeyframeAnimation mask; - @Nullable - private FloatKeyframeAnimation inOutAnimation; - @Nullable - private BaseLayer matteLayer; - /** - * This should only be used by {@link #buildParentLayerListIfNeeded()} - * to construct the list of parent layers. - */ - @Nullable - private BaseLayer parentLayer; - private List parentLayers; - - private final List> animations = new ArrayList<>(); - final TransformKeyframeAnimation transform; - private boolean visible = true; - - private boolean outlineMasksAndMattes; - @Nullable private Paint outlineMasksAndMattesPaint; - - float blurMaskFilterRadius = 0f; - @Nullable BlurMaskFilter blurMaskFilter; - - BaseLayer(LottieDrawable lottieDrawable, Layer layerModel) { - this.lottieDrawable = lottieDrawable; - this.layerModel = layerModel; - drawTraceName = layerModel.getName() + "#draw"; - if (layerModel.getMatteType() == Layer.MatteType.INVERT) { - mattePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); - } else { - mattePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); - } - - this.transform = layerModel.getTransform().createAnimation(); - transform.addListener(this); - - if (layerModel.getMasks() != null && !layerModel.getMasks().isEmpty()) { - this.mask = new MaskKeyframeAnimation(layerModel.getMasks()); - for (BaseKeyframeAnimation animation : mask.getMaskAnimations()) { - // Don't call addAnimation() because progress gets set manually in setProgress to - // properly handle time scale. - animation.addUpdateListener(this); - } - for (BaseKeyframeAnimation animation : mask.getOpacityAnimations()) { - addAnimation(animation); - animation.addUpdateListener(this); - } - } - setupInOutAnimations(); - } - - /** - * Enable this to debug slow animations by outlining masks and mattes. The performance overhead of the masks and mattes will - * be proportional to the surface area of all of the masks/mattes combined. - *

    - * DO NOT leave this enabled in production. - */ - void setOutlineMasksAndMattes(boolean outline) { - if (outline && outlineMasksAndMattesPaint == null) { - outlineMasksAndMattesPaint = new LPaint(); - } - outlineMasksAndMattes = outline; - } - - @Override - public void onValueChanged() { - invalidateSelf(); - } - - Layer getLayerModel() { - return layerModel; - } - - void setMatteLayer(@Nullable BaseLayer matteLayer) { - this.matteLayer = matteLayer; - } - - boolean hasMatteOnThisLayer() { - return matteLayer != null; - } - - void setParentLayer(@Nullable BaseLayer parentLayer) { - this.parentLayer = parentLayer; - } - - private void setupInOutAnimations() { - if (!layerModel.getInOutKeyframes().isEmpty()) { - inOutAnimation = new FloatKeyframeAnimation(layerModel.getInOutKeyframes()); - inOutAnimation.setIsDiscrete(); - inOutAnimation.addUpdateListener(() -> setVisible(inOutAnimation.getFloatValue() == 1f)); - setVisible(inOutAnimation.getValue() == 1f); - addAnimation(inOutAnimation); - } else { - setVisible(true); - } - } - - private void invalidateSelf() { - lottieDrawable.invalidateSelf(); - } - - public void addAnimation(@Nullable BaseKeyframeAnimation newAnimation) { - if (newAnimation == null) { - return; - } - animations.add(newAnimation); - } - - public void removeAnimation(BaseKeyframeAnimation animation) { - animations.remove(animation); - } - - @CallSuper - @Override - public void getBounds( - RectF outBounds, Matrix parentMatrix, boolean applyParents) { - rect.set(0, 0, 0, 0); - buildParentLayerListIfNeeded(); - boundsMatrix.set(parentMatrix); - - if (applyParents) { - if (parentLayers != null) { - for (int i = parentLayers.size() - 1; i >= 0; i--) { - boundsMatrix.preConcat(parentLayers.get(i).transform.getMatrix()); - } - } else if (parentLayer != null) { - boundsMatrix.preConcat(parentLayer.transform.getMatrix()); - } - } - - boundsMatrix.preConcat(transform.getMatrix()); - } - - @Override - public void draw(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - L.beginSection(drawTraceName); - if (!visible || layerModel.isHidden()) { - L.endSection(drawTraceName); - return; - } - buildParentLayerListIfNeeded(); - if (L.isTraceEnabled()) { - L.beginSection("Layer#parentMatrix"); - } - matrix.reset(); - matrix.set(parentMatrix); - for (int i = parentLayers.size() - 1; i >= 0; i--) { - matrix.preConcat(parentLayers.get(i).transform.getMatrix()); - } - if (L.isTraceEnabled()) { - L.endSection("Layer#parentMatrix"); - } - // It is unclear why but getting the opacity here would sometimes NPE. - // The extra code here is designed to avoid this. - // https://github.com/airbnb/lottie-android/issues/2083 - int opacity = 100; - BaseKeyframeAnimation opacityAnimation = transform.getOpacity(); - if (opacityAnimation != null) { - Integer opacityValue = opacityAnimation.getValue(); - if (opacityValue != null) { - opacity = opacityValue; - } - } - int alpha = (int) ((parentAlpha / 255f * (float) opacity / 100f) * 255); - if (!hasMatteOnThisLayer() && !hasMasksOnThisLayer()) { - matrix.preConcat(transform.getMatrix()); - if (L.isTraceEnabled()) { - L.beginSection("Layer#drawLayer"); - } - drawLayer(canvas, matrix, alpha); - if (L.isTraceEnabled()) { - L.endSection("Layer#drawLayer"); - } - recordRenderTime(L.endSection(drawTraceName)); - return; - } - - if (L.isTraceEnabled()) { - L.beginSection("Layer#computeBounds"); - } - getBounds(rect, matrix, false); - - intersectBoundsWithMatte(rect, parentMatrix); - - matrix.preConcat(transform.getMatrix()); - intersectBoundsWithMask(rect, matrix); - - // Intersect the mask and matte rect with the canvas bounds. - // If the canvas has a transform, then we need to transform its bounds by its matrix - // so that we know the coordinate space that the canvas is showing. - canvasBounds.set(0f, 0f, canvas.getWidth(), canvas.getHeight()); - //noinspection deprecation - canvas.getMatrix(canvasMatrix); - if (!canvasMatrix.isIdentity()) { - canvasMatrix.invert(canvasMatrix); - canvasMatrix.mapRect(canvasBounds); - } - if (!rect.intersect(canvasBounds)) { - rect.set(0, 0, 0, 0); - } - - if (L.isTraceEnabled()) { - L.endSection("Layer#computeBounds"); - } - - // Ensure that what we are drawing is >=1px of width and height. - // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. - // https://github.com/airbnb/lottie-android/issues/1625 - if (rect.width() >= 1f && rect.height() >= 1f) { - if (L.isTraceEnabled()) { - L.beginSection("Layer#saveLayer"); - } - contentPaint.setAlpha(255); - Utils.saveLayerCompat(canvas, rect, contentPaint); - if (L.isTraceEnabled()) { - L.endSection("Layer#saveLayer"); - } - - // Clear the off screen buffer. This is necessary for some phones. - clearCanvas(canvas); - if (L.isTraceEnabled()) { - L.beginSection("Layer#drawLayer"); - } - drawLayer(canvas, matrix, alpha); - if (L.isTraceEnabled()) { - L.endSection("Layer#drawLayer"); - } - - if (hasMasksOnThisLayer()) { - applyMasks(canvas, matrix); - } - - if (hasMatteOnThisLayer()) { - if (L.isTraceEnabled()) { - L.beginSection("Layer#drawMatte"); - L.beginSection("Layer#saveLayer"); - } - Utils.saveLayerCompat(canvas, rect, mattePaint, SAVE_FLAGS); - if (L.isTraceEnabled()) { - L.endSection("Layer#saveLayer"); - } - clearCanvas(canvas); - //noinspection ConstantConditions - matteLayer.draw(canvas, parentMatrix, alpha); - if (L.isTraceEnabled()) { - L.beginSection("Layer#restoreLayer"); - } - canvas.restore(); - if (L.isTraceEnabled()) { - L.endSection("Layer#restoreLayer"); - L.endSection("Layer#drawMatte"); - } - } - - if (L.isTraceEnabled()) { - L.beginSection("Layer#restoreLayer"); - } - canvas.restore(); - if (L.isTraceEnabled()) { - L.endSection("Layer#restoreLayer"); - } - } - - if (outlineMasksAndMattes && outlineMasksAndMattesPaint != null) { - outlineMasksAndMattesPaint.setStyle(Paint.Style.STROKE); - outlineMasksAndMattesPaint.setColor(0xFFFC2803); - outlineMasksAndMattesPaint.setStrokeWidth(4); - canvas.drawRect(rect, outlineMasksAndMattesPaint); - outlineMasksAndMattesPaint.setStyle(Paint.Style.FILL); - outlineMasksAndMattesPaint.setColor(0x50EBEBEB); - canvas.drawRect(rect, outlineMasksAndMattesPaint); - } - - recordRenderTime(L.endSection(drawTraceName)); - } - - private void recordRenderTime(float ms) { - lottieDrawable.getComposition() - .getPerformanceTracker().recordRenderTime(layerModel.getName(), ms); - - } - - private void clearCanvas(Canvas canvas) { - if (L.isTraceEnabled()) { - L.beginSection("Layer#clearLayer"); - } - // If we don't pad the clear draw, some phones leave a 1px border of the graphics buffer. - canvas.drawRect(rect.left - 1, rect.top - 1, rect.right + 1, rect.bottom + 1, clearPaint); - if (L.isTraceEnabled()) { - L.endSection("Layer#clearLayer"); - } - } - - private void intersectBoundsWithMask(RectF rect, Matrix matrix) { - maskBoundsRect.set(0, 0, 0, 0); - if (!hasMasksOnThisLayer()) { - return; - } - //noinspection ConstantConditions - int size = mask.getMasks().size(); - for (int i = 0; i < size; i++) { - Mask mask = this.mask.getMasks().get(i); - BaseKeyframeAnimation maskAnimation = this.mask.getMaskAnimations().get(i); - Path maskPath = maskAnimation.getValue(); - if (maskPath == null) { - // This should never happen but seems to happen occasionally. - // There is no known repro for this but is is probably best to just skip this mask if that is the case. - // https://github.com/airbnb/lottie-android/issues/1879 - continue; - } - path.set(maskPath); - path.transform(matrix); - - switch (mask.getMaskMode()) { - case MASK_MODE_NONE: - // Mask mode none will just render the original content so it is the whole bounds. - return; - case MASK_MODE_SUBTRACT: - // If there is a subtract mask, the mask could potentially be the size of the entire - // canvas so we can't use the mask bounds. - return; - case MASK_MODE_INTERSECT: - case MASK_MODE_ADD: - if (mask.isInverted()) { - return; - } - default: - path.computeBounds(tempMaskBoundsRect, false); - // As we iterate through the masks, we want to calculate the union region of the masks. - // We initialize the rect with the first mask. If we don't call set() on the first call, - // the rect will always extend to (0,0). - if (i == 0) { - maskBoundsRect.set(tempMaskBoundsRect); - } else { - maskBoundsRect.set( - Math.min(maskBoundsRect.left, tempMaskBoundsRect.left), - Math.min(maskBoundsRect.top, tempMaskBoundsRect.top), - Math.max(maskBoundsRect.right, tempMaskBoundsRect.right), - Math.max(maskBoundsRect.bottom, tempMaskBoundsRect.bottom) - ); - } - } - } - - boolean intersects = rect.intersect(maskBoundsRect); - if (!intersects) { - rect.set(0f, 0f, 0f, 0f); - } - } - - private void intersectBoundsWithMatte(RectF rect, Matrix matrix) { - if (!hasMatteOnThisLayer()) { - return; - } - - if (layerModel.getMatteType() == Layer.MatteType.INVERT) { - // We can't trim the bounds if the mask is inverted since it extends all the way to the - // composition bounds. - return; - } - matteBoundsRect.set(0f, 0f, 0f, 0f); - matteLayer.getBounds(matteBoundsRect, matrix, true); - boolean intersects = rect.intersect(matteBoundsRect); - if (!intersects) { - rect.set(0f, 0f, 0f, 0f); - } - } - - abstract void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha); - - private void applyMasks(Canvas canvas, Matrix matrix) { - if (L.isTraceEnabled()) { - L.beginSection("Layer#saveLayer"); - } - Utils.saveLayerCompat(canvas, rect, dstInPaint, SAVE_FLAGS); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { - // Pre-Pie, offscreen buffers were opaque which meant that outer border of a mask - // might get drawn depending on the result of float rounding. - clearCanvas(canvas); - } - if (L.isTraceEnabled()) { - L.endSection("Layer#saveLayer"); - } - for (int i = 0; i < mask.getMasks().size(); i++) { - Mask mask = this.mask.getMasks().get(i); - BaseKeyframeAnimation maskAnimation = this.mask.getMaskAnimations().get(i); - BaseKeyframeAnimation opacityAnimation = this.mask.getOpacityAnimations().get(i); - switch (mask.getMaskMode()) { - case MASK_MODE_NONE: - // None mask should have no effect. If all masks are NONE, fill the - // mask canvas with a rectangle so it fully covers the original layer content. - // However, if there are other masks, they should be the only ones that have an effect so - // this should noop. - if (areAllMasksNone()) { - contentPaint.setAlpha(255); - canvas.drawRect(rect, contentPaint); - } - break; - case MASK_MODE_ADD: - if (mask.isInverted()) { - applyInvertedAddMask(canvas, matrix, maskAnimation, opacityAnimation); - } else { - applyAddMask(canvas, matrix, maskAnimation, opacityAnimation); - } - break; - case MASK_MODE_SUBTRACT: - if (i == 0) { - contentPaint.setColor(Color.BLACK); - contentPaint.setAlpha(255); - canvas.drawRect(rect, contentPaint); - } - if (mask.isInverted()) { - applyInvertedSubtractMask(canvas, matrix, maskAnimation, opacityAnimation); - } else { - applySubtractMask(canvas, matrix, maskAnimation); - } - break; - case MASK_MODE_INTERSECT: - if (mask.isInverted()) { - applyInvertedIntersectMask(canvas, matrix, maskAnimation, opacityAnimation); - } else { - applyIntersectMask(canvas, matrix, maskAnimation, opacityAnimation); - } - break; - } - } - if (L.isTraceEnabled()) { - L.beginSection("Layer#restoreLayer"); - } - canvas.restore(); - if (L.isTraceEnabled()) { - L.endSection("Layer#restoreLayer"); - } - } - - private boolean areAllMasksNone() { - if (mask.getMaskAnimations().isEmpty()) { - return false; - } - for (int i = 0; i < mask.getMasks().size(); i++) { - if (mask.getMasks().get(i).getMaskMode() != Mask.MaskMode.MASK_MODE_NONE) { - return false; - } - } - return true; - } - - private void applyAddMask(Canvas canvas, Matrix matrix, - BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { - Path maskPath = maskAnimation.getValue(); - path.set(maskPath); - path.transform(matrix); - contentPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); - canvas.drawPath(path, contentPaint); - } - - private void applyInvertedAddMask(Canvas canvas, Matrix matrix, - BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { - Utils.saveLayerCompat(canvas, rect, contentPaint); - canvas.drawRect(rect, contentPaint); - Path maskPath = maskAnimation.getValue(); - path.set(maskPath); - path.transform(matrix); - contentPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); - canvas.drawPath(path, dstOutPaint); - canvas.restore(); - } - - private void applySubtractMask(Canvas canvas, Matrix matrix, BaseKeyframeAnimation maskAnimation) { - Path maskPath = maskAnimation.getValue(); - path.set(maskPath); - path.transform(matrix); - canvas.drawPath(path, dstOutPaint); - } - - private void applyInvertedSubtractMask(Canvas canvas, Matrix matrix, - BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { - Utils.saveLayerCompat(canvas, rect, dstOutPaint); - canvas.drawRect(rect, contentPaint); - dstOutPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); - Path maskPath = maskAnimation.getValue(); - path.set(maskPath); - path.transform(matrix); - canvas.drawPath(path, dstOutPaint); - canvas.restore(); - } - - private void applyIntersectMask(Canvas canvas, Matrix matrix, - BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { - Utils.saveLayerCompat(canvas, rect, dstInPaint); - Path maskPath = maskAnimation.getValue(); - path.set(maskPath); - path.transform(matrix); - contentPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); - canvas.drawPath(path, contentPaint); - canvas.restore(); - } - - private void applyInvertedIntersectMask(Canvas canvas, Matrix matrix, - BaseKeyframeAnimation maskAnimation, BaseKeyframeAnimation opacityAnimation) { - Utils.saveLayerCompat(canvas, rect, dstInPaint); - canvas.drawRect(rect, contentPaint); - dstOutPaint.setAlpha((int) (opacityAnimation.getValue() * 2.55f)); - Path maskPath = maskAnimation.getValue(); - path.set(maskPath); - path.transform(matrix); - canvas.drawPath(path, dstOutPaint); - canvas.restore(); - } - - boolean hasMasksOnThisLayer() { - return mask != null && !mask.getMaskAnimations().isEmpty(); - } - - private void setVisible(boolean visible) { - if (visible != this.visible) { - this.visible = visible; - invalidateSelf(); - } - } - - void setProgress(@FloatRange(from = 0f, to = 1f) float progress) { - if (L.isTraceEnabled()) { - L.beginSection("BaseLayer#setProgress"); - // Time stretch should not be applied to the layer transform. - L.beginSection("BaseLayer#setProgress.transform"); - } - transform.setProgress(progress); - if (L.isTraceEnabled()) { - L.endSection("BaseLayer#setProgress.transform"); - } - if (mask != null) { - if (L.isTraceEnabled()) { - L.beginSection("BaseLayer#setProgress.mask"); - } - for (int i = 0; i < mask.getMaskAnimations().size(); i++) { - mask.getMaskAnimations().get(i).setProgress(progress); - } - if (L.isTraceEnabled()) { - L.endSection("BaseLayer#setProgress.mask"); - } - } - if (inOutAnimation != null) { - if (L.isTraceEnabled()) { - L.beginSection("BaseLayer#setProgress.inout"); - } - inOutAnimation.setProgress(progress); - if (L.isTraceEnabled()) { - L.endSection("BaseLayer#setProgress.inout"); - } - } - if (matteLayer != null) { - if (L.isTraceEnabled()) { - L.beginSection("BaseLayer#setProgress.matte"); - } - matteLayer.setProgress(progress); - if (L.isTraceEnabled()) { - L.endSection("BaseLayer#setProgress.matte"); - } - } - if (L.isTraceEnabled()) { - L.beginSection("BaseLayer#setProgress.animations." + animations.size()); - } - for (int i = 0; i < animations.size(); i++) { - animations.get(i).setProgress(progress); - } - if (L.isTraceEnabled()) { - L.endSection("BaseLayer#setProgress.animations." + animations.size()); - L.endSection("BaseLayer#setProgress"); - } - } - - private void buildParentLayerListIfNeeded() { - if (parentLayers != null) { - return; - } - if (parentLayer == null) { - parentLayers = Collections.emptyList(); - return; - } - - parentLayers = new ArrayList<>(); - BaseLayer layer = parentLayer; - while (layer != null) { - parentLayers.add(layer); - layer = layer.parentLayer; - } - } - - @Override - public String getName() { - return layerModel.getName(); - } - - @Nullable - public BlurEffect getBlurEffect() { - return layerModel.getBlurEffect(); - } - - public LBlendMode getBlendMode() { - return layerModel.getBlendMode(); - } - - public BlurMaskFilter getBlurMaskFilter(float radius) { - if (blurMaskFilterRadius == radius) { - return blurMaskFilter; - } - blurMaskFilter = new BlurMaskFilter(radius / 2f, BlurMaskFilter.Blur.NORMAL); - blurMaskFilterRadius = radius; - return blurMaskFilter; - } - - @Nullable - public DropShadowEffect getDropShadowEffect() { - return layerModel.getDropShadowEffect(); - } - - @Override - public void setContents(List contentsBefore, List contentsAfter) { - // Do nothing - } - - @Override - public void resolveKeyPath( - KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { - if (matteLayer != null) { - KeyPath matteCurrentPartialKeyPath = currentPartialKeyPath.addKey(matteLayer.getName()); - if (keyPath.fullyResolvesTo(matteLayer.getName(), depth)) { - accumulator.add(matteCurrentPartialKeyPath.resolve(matteLayer)); - } - - if (keyPath.propagateToChildren(getName(), depth)) { - int newDepth = depth + keyPath.incrementDepthBy(matteLayer.getName(), depth); - matteLayer.resolveChildKeyPath(keyPath, newDepth, accumulator, matteCurrentPartialKeyPath); - } - } - - if (!keyPath.matches(getName(), depth)) { - return; - } - - if (!"__container".equals(getName())) { - currentPartialKeyPath = currentPartialKeyPath.addKey(getName()); - - if (keyPath.fullyResolvesTo(getName(), depth)) { - accumulator.add(currentPartialKeyPath.resolve(this)); - } - } - - if (keyPath.propagateToChildren(getName(), depth)) { - int newDepth = depth + keyPath.incrementDepthBy(getName(), depth); - resolveChildKeyPath(keyPath, newDepth, accumulator, currentPartialKeyPath); - } - } - - void resolveChildKeyPath( - KeyPath keyPath, int depth, List accumulator, KeyPath currentPartialKeyPath) { - } - - @CallSuper - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - transform.applyValueCallback(property, callback); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java deleted file mode 100644 index 92745ab7..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/CompositionLayer.java +++ /dev/null @@ -1,246 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.RectF; -import android.util.Log; - -import androidx.annotation.FloatRange; -import androidx.annotation.Nullable; -import androidx.collection.LongSparseArray; - -import com.airbnb.lottie.L; -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.utils.Utils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.ArrayList; -import java.util.List; - -public class CompositionLayer extends BaseLayer { - @Nullable private BaseKeyframeAnimation timeRemapping; - private final List layers = new ArrayList<>(); - private final RectF rect = new RectF(); - private final RectF newClipRect = new RectF(); - private final Paint layerPaint = new Paint(); - - @Nullable private Boolean hasMatte; - @Nullable private Boolean hasMasks; - private float progress; - - private boolean clipToCompositionBounds = true; - - public CompositionLayer(LottieDrawable lottieDrawable, Layer layerModel, List layerModels, - LottieComposition composition) { - super(lottieDrawable, layerModel); - - AnimatableFloatValue timeRemapping = layerModel.getTimeRemapping(); - if (timeRemapping != null) { - this.timeRemapping = timeRemapping.createAnimation(); - addAnimation(this.timeRemapping); - //noinspection ConstantConditions - this.timeRemapping.addUpdateListener(this); - } else { - this.timeRemapping = null; - } - - LongSparseArray layerMap = - new LongSparseArray<>(composition.getLayers().size()); - - BaseLayer mattedLayer = null; - for (int i = layerModels.size() - 1; i >= 0; i--) { - Layer lm = layerModels.get(i); - BaseLayer layer = BaseLayer.forModel(this, lm, lottieDrawable, composition); - if (layer == null) { - continue; - } - layerMap.put(layer.getLayerModel().getId(), layer); - if (mattedLayer != null) { - mattedLayer.setMatteLayer(layer); - mattedLayer = null; - } else { - layers.add(0, layer); - switch (lm.getMatteType()) { - case ADD: - case INVERT: - mattedLayer = layer; - break; - } - } - } - - for (int i = 0; i < layerMap.size(); i++) { - long key = layerMap.keyAt(i); - BaseLayer layerView = layerMap.get(key); - // This shouldn't happen but it appears as if sometimes on pre-lollipop devices when - // compiled with d8, layerView is null sometimes. - // https://github.com/airbnb/lottie-android/issues/524 - if (layerView == null) { - continue; - } - BaseLayer parentLayer = layerMap.get(layerView.getLayerModel().getParentId()); - if (parentLayer != null) { - layerView.setParentLayer(parentLayer); - } - } - } - - public void setClipToCompositionBounds(boolean clipToCompositionBounds) { - this.clipToCompositionBounds = clipToCompositionBounds; - } - - @Override public void setOutlineMasksAndMattes(boolean outline) { - super.setOutlineMasksAndMattes(outline); - for (BaseLayer layer : layers) { - layer.setOutlineMasksAndMattes(outline); - } - } - - @Override void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - if (L.isTraceEnabled()) { - L.beginSection("CompositionLayer#draw"); - } - newClipRect.set(0, 0, layerModel.getPreCompWidth(), layerModel.getPreCompHeight()); - parentMatrix.mapRect(newClipRect); - - // Apply off-screen rendering only when needed in order to improve rendering performance. - boolean isDrawingWithOffScreen = lottieDrawable.isApplyingOpacityToLayersEnabled() && layers.size() > 1 && parentAlpha != 255; - if (isDrawingWithOffScreen) { - layerPaint.setAlpha(parentAlpha); - Utils.saveLayerCompat(canvas, newClipRect, layerPaint); - } else { - canvas.save(); - } - - int childAlpha = isDrawingWithOffScreen ? 255 : parentAlpha; - for (int i = layers.size() - 1; i >= 0; i--) { - boolean nonEmptyClip = true; - // Only clip precomps. This mimics the way After Effects renders animations. - boolean ignoreClipOnThisLayer = !clipToCompositionBounds && "__container".equals(layerModel.getName()); - if (!ignoreClipOnThisLayer && !newClipRect.isEmpty()) { - nonEmptyClip = canvas.clipRect(newClipRect); - } - if (nonEmptyClip) { - BaseLayer layer = layers.get(i); - layer.draw(canvas, parentMatrix, childAlpha); - } - } - canvas.restore(); - if (L.isTraceEnabled()) { - L.endSection("CompositionLayer#draw"); - } - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - super.getBounds(outBounds, parentMatrix, applyParents); - for (int i = layers.size() - 1; i >= 0; i--) { - rect.set(0, 0, 0, 0); - layers.get(i).getBounds(rect, boundsMatrix, true); - outBounds.union(rect); - } - } - - @Override public void setProgress(@FloatRange(from = 0f, to = 1f) float progress) { - if (L.isTraceEnabled()) { - L.beginSection("CompositionLayer#setProgress"); - } - this.progress = progress; - super.setProgress(progress); - if (timeRemapping != null) { - // The duration has 0.01 frame offset to show end of animation properly. - // https://github.com/airbnb/lottie-android/pull/766 - // Ignore this offset for calculating time-remapping because time-remapping value is based on original duration. - float durationFrames = lottieDrawable.getComposition().getDurationFrames() + 0.01f; - float compositionDelayFrames = layerModel.getComposition().getStartFrame(); - float remappedFrames = timeRemapping.getValue() * layerModel.getComposition().getFrameRate() - compositionDelayFrames; - progress = remappedFrames / durationFrames; - } - if (timeRemapping == null) { - progress -= layerModel.getStartProgress(); - } - //Time stretch needs to be divided if is not "__container" - if (layerModel.getTimeStretch() != 0 && !"__container".equals(layerModel.getName())) { - progress /= layerModel.getTimeStretch(); - } - for (int i = layers.size() - 1; i >= 0; i--) { - layers.get(i).setProgress(progress); - } - if (L.isTraceEnabled()) { - L.endSection("CompositionLayer#setProgress"); - } - } - - public float getProgress() { - return progress; - } - - public boolean hasMasks() { - if (hasMasks == null) { - for (int i = layers.size() - 1; i >= 0; i--) { - BaseLayer layer = layers.get(i); - if (layer instanceof ShapeLayer) { - if (layer.hasMasksOnThisLayer()) { - hasMasks = true; - return true; - } - } else if (layer instanceof CompositionLayer && ((CompositionLayer) layer).hasMasks()) { - hasMasks = true; - return true; - } - } - hasMasks = false; - } - return hasMasks; - } - - public boolean hasMatte() { - if (hasMatte == null) { - if (hasMatteOnThisLayer()) { - hasMatte = true; - return true; - } - - for (int i = layers.size() - 1; i >= 0; i--) { - if (layers.get(i).hasMatteOnThisLayer()) { - hasMatte = true; - return true; - } - } - hasMatte = false; - } - return hasMatte; - } - - @Override - protected void resolveChildKeyPath(KeyPath keyPath, int depth, List accumulator, - KeyPath currentPartialKeyPath) { - for (int i = 0; i < layers.size(); i++) { - layers.get(i).resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath); - } - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - super.addValueCallback(property, callback); - - if (property == LottieProperty.TIME_REMAP) { - if (callback == null) { - if (timeRemapping != null) { - timeRemapping.setValueCallback(null); - } - } else { - timeRemapping = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - timeRemapping.addUpdateListener(this); - addAnimation(timeRemapping); - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java deleted file mode 100644 index 6cd60b64..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ImageLayer.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Rect; -import android.graphics.RectF; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieImageAsset; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.LPaint; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.utils.Utils; -import com.airbnb.lottie.value.LottieValueCallback; - -public class ImageLayer extends BaseLayer { - - private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); - private final Rect src = new Rect(); - private final Rect dst = new Rect(); - @Nullable private final LottieImageAsset lottieImageAsset; - @Nullable private BaseKeyframeAnimation colorFilterAnimation; - @Nullable private BaseKeyframeAnimation imageAnimation; - - ImageLayer(LottieDrawable lottieDrawable, Layer layerModel) { - super(lottieDrawable, layerModel); - lottieImageAsset = lottieDrawable.getLottieImageAssetForId(layerModel.getRefId()); - } - - @Override public void drawLayer(@NonNull Canvas canvas, Matrix parentMatrix, int parentAlpha) { - Bitmap bitmap = getBitmap(); - if (bitmap == null || bitmap.isRecycled() || lottieImageAsset == null) { - return; - } - float density = Utils.dpScale(); - - paint.setAlpha(parentAlpha); - if (colorFilterAnimation != null) { - paint.setColorFilter(colorFilterAnimation.getValue()); - } - canvas.save(); - canvas.concat(parentMatrix); - src.set(0, 0, bitmap.getWidth(), bitmap.getHeight()); - if (lottieDrawable.getMaintainOriginalImageBounds()) { - dst.set(0, 0, (int) (lottieImageAsset.getWidth() * density), (int) (lottieImageAsset.getHeight() * density)); - } else { - dst.set(0, 0, (int) (bitmap.getWidth() * density), (int) (bitmap.getHeight() * density)); - } - - canvas.drawBitmap(bitmap, src, dst, paint); - canvas.restore(); - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - super.getBounds(outBounds, parentMatrix, applyParents); - if (lottieImageAsset != null) { - float scale = Utils.dpScale(); - outBounds.set(0, 0, lottieImageAsset.getWidth() * scale, lottieImageAsset.getHeight() * scale); - boundsMatrix.mapRect(outBounds); - } - } - - @Nullable - private Bitmap getBitmap() { - if (imageAnimation != null) { - Bitmap callbackBitmap = imageAnimation.getValue(); - if (callbackBitmap != null) { - return callbackBitmap; - } - } - String refId = layerModel.getRefId(); - Bitmap bitmapFromDrawable = lottieDrawable.getBitmapForId(refId); - if (bitmapFromDrawable != null) { - return bitmapFromDrawable; - } - LottieImageAsset asset = this.lottieImageAsset; - if (asset != null) { - return asset.getBitmap(); - } - return null; - } - - @SuppressWarnings("SingleStatementInBlock") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - super.addValueCallback(property, callback); - if (property == LottieProperty.COLOR_FILTER) { - if (callback == null) { - colorFilterAnimation = null; - } else { - //noinspection unchecked - colorFilterAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - } - } else if (property == LottieProperty.IMAGE) { - if (callback == null) { - imageAnimation = null; - } else { - //noinspection unchecked - imageAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java deleted file mode 100644 index edea4fa2..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/Layer.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.model.animatable.AnimatableFloatValue; -import com.airbnb.lottie.model.animatable.AnimatableTextFrame; -import com.airbnb.lottie.model.animatable.AnimatableTextProperties; -import com.airbnb.lottie.model.animatable.AnimatableTransform; -import com.airbnb.lottie.model.content.BlurEffect; -import com.airbnb.lottie.model.content.ContentModel; -import com.airbnb.lottie.model.content.LBlendMode; -import com.airbnb.lottie.model.content.Mask; -import com.airbnb.lottie.parser.DropShadowEffect; -import com.airbnb.lottie.value.Keyframe; - -import java.util.List; -import java.util.Locale; - -public class Layer { - - public enum LayerType { - PRE_COMP, - SOLID, - IMAGE, - NULL, - SHAPE, - TEXT, - UNKNOWN - } - - public enum MatteType { - NONE, - ADD, - INVERT, - LUMA, - LUMA_INVERTED, - UNKNOWN - } - - private final List shapes; - private final LottieComposition composition; - private final String layerName; - private final long layerId; - private final LayerType layerType; - private final long parentId; - @Nullable private final String refId; - private final List masks; - private final AnimatableTransform transform; - private final int solidWidth; - private final int solidHeight; - private final int solidColor; - private final float timeStretch; - private final float startFrame; - private final float preCompWidth; - private final float preCompHeight; - @Nullable private final AnimatableTextFrame text; - @Nullable private final AnimatableTextProperties textProperties; - @Nullable private final AnimatableFloatValue timeRemapping; - private final List> inOutKeyframes; - private final MatteType matteType; - private final boolean hidden; - @Nullable private final BlurEffect blurEffect; - @Nullable private final DropShadowEffect dropShadowEffect; - private final LBlendMode blendMode; - - - public Layer(List shapes, LottieComposition composition, String layerName, long layerId, - LayerType layerType, long parentId, @Nullable String refId, List masks, - AnimatableTransform transform, int solidWidth, int solidHeight, int solidColor, - float timeStretch, float startFrame, float preCompWidth, float preCompHeight, - @Nullable AnimatableTextFrame text, @Nullable AnimatableTextProperties textProperties, - List> inOutKeyframes, MatteType matteType, - @Nullable AnimatableFloatValue timeRemapping, boolean hidden, @Nullable BlurEffect blurEffect, - @Nullable DropShadowEffect dropShadowEffect, LBlendMode blendMode) { - this.shapes = shapes; - this.composition = composition; - this.layerName = layerName; - this.layerId = layerId; - this.layerType = layerType; - this.parentId = parentId; - this.refId = refId; - this.masks = masks; - this.transform = transform; - this.solidWidth = solidWidth; - this.solidHeight = solidHeight; - this.solidColor = solidColor; - this.timeStretch = timeStretch; - this.startFrame = startFrame; - this.preCompWidth = preCompWidth; - this.preCompHeight = preCompHeight; - this.text = text; - this.textProperties = textProperties; - this.inOutKeyframes = inOutKeyframes; - this.matteType = matteType; - this.timeRemapping = timeRemapping; - this.hidden = hidden; - this.blurEffect = blurEffect; - this.dropShadowEffect = dropShadowEffect; - this.blendMode = blendMode; - } - - LottieComposition getComposition() { - return composition; - } - - float getTimeStretch() { - return timeStretch; - } - - float getStartProgress() { - return startFrame / composition.getDurationFrames(); - } - - List> getInOutKeyframes() { - return inOutKeyframes; - } - - public long getId() { - return layerId; - } - - public String getName() { - return layerName; - } - - public @Nullable String getRefId() { - return refId; - } - - float getPreCompWidth() { - return preCompWidth; - } - - float getPreCompHeight() { - return preCompHeight; - } - - List getMasks() { - return masks; - } - - public LayerType getLayerType() { - return layerType; - } - - MatteType getMatteType() { - return matteType; - } - - long getParentId() { - return parentId; - } - - List getShapes() { - return shapes; - } - - AnimatableTransform getTransform() { - return transform; - } - - int getSolidColor() { - return solidColor; - } - - int getSolidHeight() { - return solidHeight; - } - - int getSolidWidth() { - return solidWidth; - } - - @Nullable AnimatableTextFrame getText() { - return text; - } - - @Nullable AnimatableTextProperties getTextProperties() { - return textProperties; - } - - @Nullable AnimatableFloatValue getTimeRemapping() { - return timeRemapping; - } - - @Override public String toString() { - return toString(""); - } - - public boolean isHidden() { - return hidden; - } - - @Nullable - public LBlendMode getBlendMode() { - return blendMode; - } - - @Nullable public BlurEffect getBlurEffect() { - return blurEffect; - } - - @Nullable public DropShadowEffect getDropShadowEffect() { - return dropShadowEffect; - } - - public String toString(String prefix) { - StringBuilder sb = new StringBuilder(); - sb.append(prefix).append(getName()).append("\n"); - Layer parent = composition.layerModelForId(getParentId()); - if (parent != null) { - sb.append("\t\tParents: ").append(parent.getName()); - parent = composition.layerModelForId(parent.getParentId()); - while (parent != null) { - sb.append("->").append(parent.getName()); - parent = composition.layerModelForId(parent.getParentId()); - } - sb.append(prefix).append("\n"); - } - if (!getMasks().isEmpty()) { - sb.append(prefix).append("\tMasks: ").append(getMasks().size()).append("\n"); - } - if (getSolidWidth() != 0 && getSolidHeight() != 0) { - sb.append(prefix).append("\tBackground: ").append(String - .format(Locale.US, "%dx%d %X\n", getSolidWidth(), getSolidHeight(), getSolidColor())); - } - if (!shapes.isEmpty()) { - sb.append(prefix).append("\tShapes:\n"); - for (Object shape : shapes) { - sb.append(prefix).append("\t\t").append(shape).append("\n"); - } - } - return sb.toString(); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java deleted file mode 100644 index 045cabfe..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/NullLayer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.RectF; - -import com.airbnb.lottie.LottieDrawable; - -public class NullLayer extends BaseLayer { - NullLayer(LottieDrawable lottieDrawable, Layer layerModel) { - super(lottieDrawable, layerModel); - } - - @Override void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - // Do nothing. - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - super.getBounds(outBounds, parentMatrix, applyParents); - outBounds.set(0, 0, 0, 0); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java deleted file mode 100644 index 3a82138f..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/ShapeLayer.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.RectF; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.animation.content.Content; -import com.airbnb.lottie.animation.content.ContentGroup; -import com.airbnb.lottie.model.KeyPath; -import com.airbnb.lottie.model.content.BlurEffect; -import com.airbnb.lottie.model.content.ShapeGroup; -import com.airbnb.lottie.parser.DropShadowEffect; - -import java.util.Collections; -import java.util.List; - -public class ShapeLayer extends BaseLayer { - private final ContentGroup contentGroup; - private final CompositionLayer compositionLayer; - - ShapeLayer(LottieDrawable lottieDrawable, Layer layerModel, CompositionLayer compositionLayer, LottieComposition composition) { - super(lottieDrawable, layerModel); - this.compositionLayer = compositionLayer; - - // Naming this __container allows it to be ignored in KeyPath matching. - ShapeGroup shapeGroup = new ShapeGroup("__container", layerModel.getShapes(), false); - contentGroup = new ContentGroup(lottieDrawable, this, shapeGroup, composition); - contentGroup.setContents(Collections.emptyList(), Collections.emptyList()); - } - - @Override void drawLayer(@NonNull Canvas canvas, Matrix parentMatrix, int parentAlpha) { - contentGroup.draw(canvas, parentMatrix, parentAlpha); - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - super.getBounds(outBounds, parentMatrix, applyParents); - contentGroup.getBounds(outBounds, boundsMatrix, applyParents); - } - - @Nullable @Override public BlurEffect getBlurEffect() { - BlurEffect layerBlur = super.getBlurEffect(); - if (layerBlur != null) { - return layerBlur; - } - return compositionLayer.getBlurEffect(); - } - - @Nullable @Override public DropShadowEffect getDropShadowEffect() { - DropShadowEffect layerDropShadow = super.getDropShadowEffect(); - if (layerDropShadow != null) { - return layerDropShadow; - } - return compositionLayer.getDropShadowEffect(); - } - - @Override - protected void resolveChildKeyPath(KeyPath keyPath, int depth, List accumulator, - KeyPath currentPartialKeyPath) { - contentGroup.resolveKeyPath(keyPath, depth, accumulator, currentPartialKeyPath); - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java deleted file mode 100644 index 19e7d53b..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/SolidLayer.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.ColorFilter; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.RectF; - -import androidx.annotation.Nullable; - -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.animation.LPaint; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.value.LottieValueCallback; - -public class SolidLayer extends BaseLayer { - - private final RectF rect = new RectF(); - private final Paint paint = new LPaint(); - private final float[] points = new float[8]; - private final Path path = new Path(); - private final Layer layerModel; - @Nullable private BaseKeyframeAnimation colorFilterAnimation; - @Nullable private BaseKeyframeAnimation colorAnimation; - - SolidLayer(LottieDrawable lottieDrawable, Layer layerModel) { - super(lottieDrawable, layerModel); - this.layerModel = layerModel; - - paint.setAlpha(0); - paint.setStyle(Paint.Style.FILL); - paint.setColor(layerModel.getSolidColor()); - } - - @Override public void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - int backgroundAlpha = Color.alpha(layerModel.getSolidColor()); - if (backgroundAlpha == 0) { - return; - } - - Integer color = colorAnimation == null ? null : colorAnimation.getValue(); - if (color != null) { - paint.setColor(color); - } else { - paint.setColor(layerModel.getSolidColor()); - } - - int opacity = transform.getOpacity() == null ? 100 : transform.getOpacity().getValue(); - int alpha = (int) (parentAlpha / 255f * (backgroundAlpha / 255f * opacity / 100f) * 255); - paint.setAlpha(alpha); - - if (colorFilterAnimation != null) { - paint.setColorFilter(colorFilterAnimation.getValue()); - } - if (alpha > 0) { - points[0] = 0; - points[1] = 0; - points[2] = layerModel.getSolidWidth(); - points[3] = 0; - points[4] = layerModel.getSolidWidth(); - points[5] = layerModel.getSolidHeight(); - points[6] = 0; - points[7] = layerModel.getSolidHeight(); - - // We can't map rect here because if there is rotation on the transform then we aren't - // actually drawing a rect. - parentMatrix.mapPoints(points); - path.reset(); - path.moveTo(points[0], points[1]); - path.lineTo(points[2], points[3]); - path.lineTo(points[4], points[5]); - path.lineTo(points[6], points[7]); - path.lineTo(points[0], points[1]); - path.close(); - canvas.drawPath(path, paint); - } - } - - @Override public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - super.getBounds(outBounds, parentMatrix, applyParents); - rect.set(0, 0, layerModel.getSolidWidth(), layerModel.getSolidHeight()); - boundsMatrix.mapRect(rect); - outBounds.set(rect); - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - super.addValueCallback(property, callback); - if (property == LottieProperty.COLOR_FILTER) { - if (callback == null) { - colorFilterAnimation = null; - } else { - colorFilterAnimation = - new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - } - } else if (property == LottieProperty.COLOR) { - if (callback == null) { - colorAnimation = null; - paint.setColor(layerModel.getSolidColor()); - } else { - colorAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java deleted file mode 100644 index 211f1d6a..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/TextLayer.java +++ /dev/null @@ -1,627 +0,0 @@ -package com.airbnb.lottie.model.layer; - -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.PointF; -import android.graphics.RectF; -import android.graphics.Typeface; - -import androidx.annotation.Nullable; -import androidx.collection.LongSparseArray; - -import com.airbnb.lottie.LottieComposition; -import com.airbnb.lottie.LottieDrawable; -import com.airbnb.lottie.LottieProperty; -import com.airbnb.lottie.TextDelegate; -import com.airbnb.lottie.animation.content.ContentGroup; -import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.TextKeyframeAnimation; -import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation; -import com.airbnb.lottie.model.DocumentData; -import com.airbnb.lottie.model.Font; -import com.airbnb.lottie.model.FontCharacter; -import com.airbnb.lottie.model.animatable.AnimatableTextProperties; -import com.airbnb.lottie.model.content.ShapeGroup; -import com.airbnb.lottie.utils.Utils; -import com.airbnb.lottie.value.LottieValueCallback; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class TextLayer extends BaseLayer { - - // Capacity is 2 because emojis are 2 characters. Some are longer in which case, the capacity will - // be expanded but that should be pretty rare. - private final StringBuilder stringBuilder = new StringBuilder(2); - private final RectF rectF = new RectF(); - private final Matrix matrix = new Matrix(); - private final Paint fillPaint = new Paint(Paint.ANTI_ALIAS_FLAG) {{ - setStyle(Style.FILL); - }}; - private final Paint strokePaint = new Paint(Paint.ANTI_ALIAS_FLAG) {{ - setStyle(Style.STROKE); - }}; - private final Map> contentsForCharacter = new HashMap<>(); - private final LongSparseArray codePointCache = new LongSparseArray<>(); - /** - * If this is paragraph text, one line may wrap depending on the size of the document data box. - */ - private final List textSubLines = new ArrayList<>(); - private final TextKeyframeAnimation textAnimation; - private final LottieDrawable lottieDrawable; - private final LottieComposition composition; - @Nullable - private BaseKeyframeAnimation colorAnimation; - @Nullable - private BaseKeyframeAnimation colorCallbackAnimation; - @Nullable - private BaseKeyframeAnimation strokeColorAnimation; - @Nullable - private BaseKeyframeAnimation strokeColorCallbackAnimation; - @Nullable - private BaseKeyframeAnimation strokeWidthAnimation; - @Nullable - private BaseKeyframeAnimation strokeWidthCallbackAnimation; - @Nullable - private BaseKeyframeAnimation trackingAnimation; - @Nullable - private BaseKeyframeAnimation trackingCallbackAnimation; - @Nullable - private BaseKeyframeAnimation textSizeCallbackAnimation; - @Nullable - private BaseKeyframeAnimation typefaceCallbackAnimation; - - TextLayer(LottieDrawable lottieDrawable, Layer layerModel) { - super(lottieDrawable, layerModel); - this.lottieDrawable = lottieDrawable; - composition = layerModel.getComposition(); - //noinspection ConstantConditions - textAnimation = layerModel.getText().createAnimation(); - textAnimation.addUpdateListener(this); - addAnimation(textAnimation); - - AnimatableTextProperties textProperties = layerModel.getTextProperties(); - if (textProperties != null && textProperties.color != null) { - colorAnimation = textProperties.color.createAnimation(); - colorAnimation.addUpdateListener(this); - addAnimation(colorAnimation); - } - - if (textProperties != null && textProperties.stroke != null) { - strokeColorAnimation = textProperties.stroke.createAnimation(); - strokeColorAnimation.addUpdateListener(this); - addAnimation(strokeColorAnimation); - } - - if (textProperties != null && textProperties.strokeWidth != null) { - strokeWidthAnimation = textProperties.strokeWidth.createAnimation(); - strokeWidthAnimation.addUpdateListener(this); - addAnimation(strokeWidthAnimation); - } - - if (textProperties != null && textProperties.tracking != null) { - trackingAnimation = textProperties.tracking.createAnimation(); - trackingAnimation.addUpdateListener(this); - addAnimation(trackingAnimation); - } - } - - @Override - public void getBounds(RectF outBounds, Matrix parentMatrix, boolean applyParents) { - super.getBounds(outBounds, parentMatrix, applyParents); - // TODO: use the correct text bounds. - outBounds.set(0, 0, composition.getBounds().width(), composition.getBounds().height()); - } - - @Override - void drawLayer(Canvas canvas, Matrix parentMatrix, int parentAlpha) { - DocumentData documentData = textAnimation.getValue(); - Font font = composition.getFonts().get(documentData.fontName); - if (font == null) { - return; - } - canvas.save(); - canvas.concat(parentMatrix); - - configurePaint(documentData, parentAlpha); - - if (lottieDrawable.useTextGlyphs()) { - drawTextWithGlyphs(documentData, parentMatrix, font, canvas); - } else { - drawTextWithFont(documentData, font, canvas); - } - - canvas.restore(); - } - - private void configurePaint(DocumentData documentData, int parentAlpha) { - if (colorCallbackAnimation != null) { - fillPaint.setColor(colorCallbackAnimation.getValue()); - } else if (colorAnimation != null) { - fillPaint.setColor(colorAnimation.getValue()); - } else { - fillPaint.setColor(documentData.color); - } - - if (strokeColorCallbackAnimation != null) { - strokePaint.setColor(strokeColorCallbackAnimation.getValue()); - } else if (strokeColorAnimation != null) { - strokePaint.setColor(strokeColorAnimation.getValue()); - } else { - strokePaint.setColor(documentData.strokeColor); - } - int opacity = transform.getOpacity() == null ? 100 : transform.getOpacity().getValue(); - int alpha = opacity * 255 / 100 * parentAlpha / 255; - fillPaint.setAlpha(alpha); - strokePaint.setAlpha(alpha); - - if (strokeWidthCallbackAnimation != null) { - strokePaint.setStrokeWidth(strokeWidthCallbackAnimation.getValue()); - } else if (strokeWidthAnimation != null) { - strokePaint.setStrokeWidth(strokeWidthAnimation.getValue()); - } else { - strokePaint.setStrokeWidth(documentData.strokeWidth * Utils.dpScale()); - } - } - - private void drawTextWithGlyphs( - DocumentData documentData, Matrix parentMatrix, Font font, Canvas canvas) { - float textSize; - if (textSizeCallbackAnimation != null) { - textSize = textSizeCallbackAnimation.getValue(); - } else { - textSize = documentData.size; - } - float fontScale = textSize / 100f; - float parentScale = Utils.getScale(parentMatrix); - - String text = documentData.text; - - // Split full text in multiple lines - List textLines = getTextLines(text); - int textLineCount = textLines.size(); - // Add tracking - float tracking = documentData.tracking / 10f; - if (trackingCallbackAnimation != null) { - tracking += trackingCallbackAnimation.getValue(); - } else if (trackingAnimation != null) { - tracking += trackingAnimation.getValue(); - } - int lineIndex = -1; - for (int i = 0; i < textLineCount; i++) { - String textLine = textLines.get(i); - float boxWidth = documentData.boxSize == null ? 0f : documentData.boxSize.x; - List lines = splitGlyphTextIntoLines(textLine, boxWidth, font, fontScale, tracking, true); - for (int j = 0; j < lines.size(); j++) { - TextSubLine line = lines.get(j); - lineIndex++; - - canvas.save(); - - if (offsetCanvas(canvas, documentData, lineIndex, line.width)) { - drawGlyphTextLine(line.text, documentData, font, canvas, parentScale, fontScale, tracking); - } - - canvas.restore(); - } - } - } - - private void drawGlyphTextLine(String text, DocumentData documentData, - Font font, Canvas canvas, float parentScale, float fontScale, float tracking) { - for (int i = 0; i < text.length(); i++) { - char c = text.charAt(i); - int characterHash = FontCharacter.hashFor(c, font.getFamily(), font.getStyle()); - FontCharacter character = composition.getCharacters().get(characterHash); - if (character == null) { - // Something is wrong. Potentially, they didn't export the text as a glyph. - continue; - } - drawCharacterAsGlyph(character, fontScale, documentData, canvas); - float tx = (float) character.getWidth() * fontScale * Utils.dpScale() + tracking; - canvas.translate(tx, 0); - } - } - - private void drawTextWithFont(DocumentData documentData, Font font, Canvas canvas) { - Typeface typeface = getTypeface(font); - if (typeface == null) { - return; - } - String text = documentData.text; - TextDelegate textDelegate = lottieDrawable.getTextDelegate(); - if (textDelegate != null) { - text = textDelegate.getTextInternal(getName(), text); - } - fillPaint.setTypeface(typeface); - float textSize; - if (textSizeCallbackAnimation != null) { - textSize = textSizeCallbackAnimation.getValue(); - } else { - textSize = documentData.size; - } - fillPaint.setTextSize(textSize * Utils.dpScale()); - strokePaint.setTypeface(fillPaint.getTypeface()); - strokePaint.setTextSize(fillPaint.getTextSize()); - - // Calculate tracking - float tracking = documentData.tracking / 10f; - if (trackingCallbackAnimation != null) { - tracking += trackingCallbackAnimation.getValue(); - } else if (trackingAnimation != null) { - tracking += trackingAnimation.getValue(); - } - tracking = tracking * Utils.dpScale() * textSize / 100.0f; - - // Split full text in multiple lines - List textLines = getTextLines(text); - int textLineCount = textLines.size(); - int lineIndex = -1; - for (int i = 0; i < textLineCount; i++) { - String textLine = textLines.get(i); - float boxWidth = documentData.boxSize == null ? 0f : documentData.boxSize.x; - List lines = splitGlyphTextIntoLines(textLine, boxWidth, font, 0f, tracking, false); - for (int j = 0; j < lines.size(); j++) { - TextSubLine line = lines.get(j); - lineIndex++; - - canvas.save(); - - if (offsetCanvas(canvas, documentData, lineIndex, line.width)) { - drawFontTextLine(line.text, documentData, canvas, tracking); - } - - canvas.restore(); - } - } - } - - private boolean offsetCanvas(Canvas canvas, DocumentData documentData, int lineIndex, float lineWidth) { - PointF position = documentData.boxPosition; - PointF size = documentData.boxSize; - float dpScale = Utils.dpScale(); - float lineStartY = position == null ? 0f : documentData.lineHeight * dpScale + position.y; - float lineOffset = (lineIndex * documentData.lineHeight * dpScale) + lineStartY; - if (lottieDrawable.getClipTextToBoundingBox() && size != null && position != null && lineOffset >= position.y + size.y + documentData.size) { - return false; - } - float lineStart = position == null ? 0f : position.x; - float boxWidth = size == null ? 0f : size.x; - switch (documentData.justification) { - case LEFT_ALIGN: - canvas.translate(lineStart, lineOffset); - break; - case RIGHT_ALIGN: - canvas.translate(lineStart + boxWidth - lineWidth, lineOffset); - break; - case CENTER: - canvas.translate(lineStart + boxWidth / 2f - lineWidth / 2f, lineOffset); - break; - } - return true; - } - - @Nullable - private Typeface getTypeface(Font font) { - if (typefaceCallbackAnimation != null) { - Typeface callbackTypeface = typefaceCallbackAnimation.getValue(); - if (callbackTypeface != null) { - return callbackTypeface; - } - } - Typeface drawableTypeface = lottieDrawable.getTypeface(font); - if (drawableTypeface != null) { - return drawableTypeface; - } - return font.getTypeface(); - } - - private List getTextLines(String text) { - // Split full text by carriage return character - String formattedText = text.replaceAll("\r\n", "\r") - .replaceAll("\u0003", "\r") - .replaceAll("\n", "\r"); - String[] textLinesArray = formattedText.split("\r"); - return Arrays.asList(textLinesArray); - } - - private void drawFontTextLine(String text, DocumentData documentData, Canvas canvas, float tracking) { - for (int i = 0; i < text.length(); ) { - String charString = codePointToString(text, i); - i += charString.length(); - drawCharacterFromFont(charString, documentData, canvas); - float charWidth = fillPaint.measureText(charString); - float tx = charWidth + tracking; - canvas.translate(tx, 0); - } - } - - private List splitGlyphTextIntoLines(String textLine, float boxWidth, Font font, float fontScale, float tracking, - boolean usingGlyphs) { - int lineCount = 0; - - float currentLineWidth = 0; - int currentLineStartIndex = 0; - - int currentWordStartIndex = 0; - float currentWordWidth = 0f; - boolean nextCharacterStartsWord = false; - - // The measured size of a space. - float spaceWidth = 0f; - - for (int i = 0; i < textLine.length(); i++) { - char c = textLine.charAt(i); - float currentCharWidth; - if (usingGlyphs) { - int characterHash = FontCharacter.hashFor(c, font.getFamily(), font.getStyle()); - FontCharacter character = composition.getCharacters().get(characterHash); - if (character == null) { - continue; - } - currentCharWidth = (float) character.getWidth() * fontScale * Utils.dpScale() + tracking; - } else { - currentCharWidth = fillPaint.measureText(textLine.substring(i, i + 1)) + tracking; - } - - if (c == ' ') { - spaceWidth = currentCharWidth; - nextCharacterStartsWord = true; - } else if (nextCharacterStartsWord) { - nextCharacterStartsWord = false; - currentWordStartIndex = i; - currentWordWidth = currentCharWidth; - } else { - currentWordWidth += currentCharWidth; - } - currentLineWidth += currentCharWidth; - - if (boxWidth > 0f && currentLineWidth >= boxWidth) { - if (c == ' ') { - // Spaces at the end of a line don't do anything. Ignore it. - // The next non-space character will hit the conditions below. - continue; - } - TextSubLine subLine = ensureEnoughSubLines(++lineCount); - if (currentWordStartIndex == currentLineStartIndex) { - // Only word on line is wider than box, start wrapping mid-word. - String substr = textLine.substring(currentLineStartIndex, i); - String trimmed = substr.trim(); - float trimmedSpace = (trimmed.length() - substr.length()) * spaceWidth; - subLine.set(trimmed, currentLineWidth - currentCharWidth - trimmedSpace); - currentLineStartIndex = i; - currentLineWidth = currentCharWidth; - currentWordStartIndex = currentLineStartIndex; - currentWordWidth = currentCharWidth; - } else { - String substr = textLine.substring(currentLineStartIndex, currentWordStartIndex - 1); - String trimmed = substr.trim(); - float trimmedSpace = (substr.length() - trimmed.length()) * spaceWidth; - subLine.set(trimmed, currentLineWidth - currentWordWidth - trimmedSpace - spaceWidth); - currentLineStartIndex = currentWordStartIndex; - currentLineWidth = currentWordWidth; - } - } - } - if (currentLineWidth > 0f) { - TextSubLine line = ensureEnoughSubLines(++lineCount); - line.set(textLine.substring(currentLineStartIndex), currentLineWidth); - } - return textSubLines.subList(0, lineCount); - } - - /** - * Elements are reused and not deleted to save allocations. - */ - private TextSubLine ensureEnoughSubLines(int numLines) { - for (int i = textSubLines.size(); i < numLines; i++) { - textSubLines.add(new TextSubLine()); - } - return textSubLines.get(numLines - 1); - } - - private void drawCharacterAsGlyph( - FontCharacter character, - float fontScale, - DocumentData documentData, - Canvas canvas) { - List contentGroups = getContentsForCharacter(character); - for (int j = 0; j < contentGroups.size(); j++) { - Path path = contentGroups.get(j).getPath(); - path.computeBounds(rectF, false); - matrix.reset(); - matrix.preTranslate(0, -documentData.baselineShift * Utils.dpScale()); - matrix.preScale(fontScale, fontScale); - path.transform(matrix); - if (documentData.strokeOverFill) { - drawGlyph(path, fillPaint, canvas); - drawGlyph(path, strokePaint, canvas); - } else { - drawGlyph(path, strokePaint, canvas); - drawGlyph(path, fillPaint, canvas); - } - } - } - - private void drawGlyph(Path path, Paint paint, Canvas canvas) { - if (paint.getColor() == Color.TRANSPARENT) { - return; - } - if (paint.getStyle() == Paint.Style.STROKE && paint.getStrokeWidth() == 0) { - return; - } - canvas.drawPath(path, paint); - } - - private void drawCharacterFromFont(String character, DocumentData documentData, Canvas canvas) { - if (documentData.strokeOverFill) { - drawCharacter(character, fillPaint, canvas); - drawCharacter(character, strokePaint, canvas); - } else { - drawCharacter(character, strokePaint, canvas); - drawCharacter(character, fillPaint, canvas); - } - } - - private void drawCharacter(String character, Paint paint, Canvas canvas) { - if (paint.getColor() == Color.TRANSPARENT) { - return; - } - if (paint.getStyle() == Paint.Style.STROKE && paint.getStrokeWidth() == 0) { - return; - } - canvas.drawText(character, 0, character.length(), 0, 0, paint); - } - - private List getContentsForCharacter(FontCharacter character) { - if (contentsForCharacter.containsKey(character)) { - return contentsForCharacter.get(character); - } - List shapes = character.getShapes(); - int size = shapes.size(); - List contents = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - ShapeGroup sg = shapes.get(i); - contents.add(new ContentGroup(lottieDrawable, this, sg, composition)); - } - contentsForCharacter.put(character, contents); - return contents; - } - - private String codePointToString(String text, int startIndex) { - int firstCodePoint = text.codePointAt(startIndex); - int firstCodePointLength = Character.charCount(firstCodePoint); - int key = firstCodePoint; - int index = startIndex + firstCodePointLength; - while (index < text.length()) { - int nextCodePoint = text.codePointAt(index); - if (!isModifier(nextCodePoint)) { - break; - } - int nextCodePointLength = Character.charCount(nextCodePoint); - index += nextCodePointLength; - key = key * 31 + nextCodePoint; - } - - if (codePointCache.containsKey(key)) { - return codePointCache.get(key); - } - - stringBuilder.setLength(0); - for (int i = startIndex; i < index; ) { - int codePoint = text.codePointAt(i); - stringBuilder.appendCodePoint(codePoint); - i += Character.charCount(codePoint); - } - String str = stringBuilder.toString(); - codePointCache.put(key, str); - return str; - } - - private boolean isModifier(int codePoint) { - return Character.getType(codePoint) == Character.FORMAT || - Character.getType(codePoint) == Character.MODIFIER_SYMBOL || - Character.getType(codePoint) == Character.NON_SPACING_MARK || - Character.getType(codePoint) == Character.OTHER_SYMBOL || - Character.getType(codePoint) == Character.DIRECTIONALITY_NONSPACING_MARK || - Character.getType(codePoint) == Character.SURROGATE; - } - - @SuppressWarnings("unchecked") - @Override - public void addValueCallback(T property, @Nullable LottieValueCallback callback) { - super.addValueCallback(property, callback); - if (property == LottieProperty.COLOR) { - if (colorCallbackAnimation != null) { - removeAnimation(colorCallbackAnimation); - } - - if (callback == null) { - colorCallbackAnimation = null; - } else { - colorCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - colorCallbackAnimation.addUpdateListener(this); - addAnimation(colorCallbackAnimation); - } - } else if (property == LottieProperty.STROKE_COLOR) { - if (strokeColorCallbackAnimation != null) { - removeAnimation(strokeColorCallbackAnimation); - } - - if (callback == null) { - strokeColorCallbackAnimation = null; - } else { - strokeColorCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - strokeColorCallbackAnimation.addUpdateListener(this); - addAnimation(strokeColorCallbackAnimation); - } - } else if (property == LottieProperty.STROKE_WIDTH) { - if (strokeWidthCallbackAnimation != null) { - removeAnimation(strokeWidthCallbackAnimation); - } - - if (callback == null) { - strokeWidthCallbackAnimation = null; - } else { - strokeWidthCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - strokeWidthCallbackAnimation.addUpdateListener(this); - addAnimation(strokeWidthCallbackAnimation); - } - } else if (property == LottieProperty.TEXT_TRACKING) { - if (trackingCallbackAnimation != null) { - removeAnimation(trackingCallbackAnimation); - } - - if (callback == null) { - trackingCallbackAnimation = null; - } else { - trackingCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - trackingCallbackAnimation.addUpdateListener(this); - addAnimation(trackingCallbackAnimation); - } - } else if (property == LottieProperty.TEXT_SIZE) { - if (textSizeCallbackAnimation != null) { - removeAnimation(textSizeCallbackAnimation); - } - - if (callback == null) { - textSizeCallbackAnimation = null; - } else { - textSizeCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - textSizeCallbackAnimation.addUpdateListener(this); - addAnimation(textSizeCallbackAnimation); - } - } else if (property == LottieProperty.TYPEFACE) { - if (typefaceCallbackAnimation != null) { - removeAnimation(typefaceCallbackAnimation); - } - - if (callback == null) { - typefaceCallbackAnimation = null; - } else { - typefaceCallbackAnimation = new ValueCallbackKeyframeAnimation<>((LottieValueCallback) callback); - typefaceCallbackAnimation.addUpdateListener(this); - addAnimation(typefaceCallbackAnimation); - } - } else if (property == LottieProperty.TEXT) { - textAnimation.setStringValueCallback((LottieValueCallback) callback); - } - } - - private static class TextSubLine { - - private String text = ""; - private float width = 0f; - - void set(String text, float width) { - this.text = text; - this.width = width; - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java deleted file mode 100644 index 761ae4b3..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/model/layer/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.model.layer; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt deleted file mode 100644 index 75a9431a..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/BaseLottieAnimator.kt +++ /dev/null @@ -1,115 +0,0 @@ -package com.airbnb.lottie.utils - -import android.animation.TimeInterpolator -import android.animation.ValueAnimator -import android.os.Build -import java.util.concurrent.CopyOnWriteArraySet - -abstract class BaseLottieAnimator : ValueAnimator() { - private val updateListeners: MutableSet = CopyOnWriteArraySet() - private val listeners: MutableSet = CopyOnWriteArraySet() - private val pauseListeners: MutableSet = CopyOnWriteArraySet() - - - override fun getStartDelay(): Long { - throw UnsupportedOperationException("LottieAnimator does not support getStartDelay.") - } - - override fun setStartDelay(startDelay: Long) { - throw UnsupportedOperationException("LottieAnimator does not support setStartDelay.") - } - - override fun setDuration(duration: Long): ValueAnimator { - throw UnsupportedOperationException("LottieAnimator does not support setDuration.") - } - - override fun setInterpolator(value: TimeInterpolator) { - throw UnsupportedOperationException("LottieAnimator does not support setInterpolator.") - } - - override fun addUpdateListener(listener: AnimatorUpdateListener) { - updateListeners.add(listener) - } - - override fun removeUpdateListener(listener: AnimatorUpdateListener) { - updateListeners.remove(listener) - } - - override fun removeAllUpdateListeners() { - updateListeners.clear() - } - - override fun addListener(listener: AnimatorListener) { - listeners.add(listener) - } - - override fun removeListener(listener: AnimatorListener) { - listeners.remove(listener) - } - - override fun removeAllListeners() { - listeners.clear() - } - - fun notifyStart(isReverse: Boolean) { - for (listener in listeners) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - listener.onAnimationStart(this, isReverse) - } else { - listener.onAnimationStart(this) - } - } - } - - override fun addPauseListener(listener: AnimatorPauseListener) { - pauseListeners.add(listener) - } - - override fun removePauseListener(listener: AnimatorPauseListener) { - pauseListeners.remove(listener) - } - - fun notifyRepeat() { - for (listener in listeners) { - listener.onAnimationRepeat(this) - } - } - - fun notifyEnd(isReverse: Boolean) { - for (listener in listeners) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - listener.onAnimationEnd(this, isReverse) - } else { - listener.onAnimationEnd(this) - } - } - } - - open fun notifyCancel() { - for (listener in listeners) { - listener.onAnimationCancel(this) - } - } - - fun notifyUpdate() { - for (listener in updateListeners) { - listener.onAnimationUpdate(this) - } - } - - fun notifyPause() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - for (pauseListener in pauseListeners) { - pauseListener.onAnimationPause(this) - } - } - } - - fun notifyResume() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - for (pauseListener in pauseListeners) { - pauseListener.onAnimationResume(this) - } - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt deleted file mode 100644 index 1566e008..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/GammaEvaluator.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.airbnb.lottie.utils - -import kotlin.math.pow - -/** - * Use this instead of [android.animation.ArgbEvaluator] because it interpolates through the gamma color - * space which looks better to us humans. - * - * - * Written by Romain Guy and Francois Blavoet. - * https://androidstudygroup.slack.com/archives/animation/p1476461064000335 - */ -object GammaEvaluator { - // Opto-electronic conversion function for the sRGB color space - // Takes a gamma-encoded sRGB value and converts it to a linear sRGB value - private fun OECF_sRGB(linear: Float): Float { - // IEC 61966-2-1:1999 - return if (linear <= 0.0031308f) linear * 12.92f else ((linear.pow((1.0f / 2.4f)) * 1.055f) - 0.055f).toFloat() - } - - // Electro-optical conversion function for the sRGB color space - // Takes a linear sRGB value and converts it to a gamma-encoded sRGB value - private fun EOCF_sRGB(srgb: Float): Float { - // IEC 61966-2-1:1999 - return if (srgb <= 0.04045f) srgb / 12.92f else ((srgb + 0.055f) / 1.055f).pow(2.4f) as Float - } - - fun evaluate(fraction: Float, startInt: Int, endInt: Int): Int { - // Fast return in case start and end is the same - // or if fraction is at start/end or out of [0,1] bounds - if (startInt == endInt) { - return startInt - } else if (fraction <= 0f) { - return startInt - } else if (fraction >= 1f) { - return endInt - } - - val startA = ((startInt shr 24) and 0xff) / 255.0f - var startR = ((startInt shr 16) and 0xff) / 255.0f - var startG = ((startInt shr 8) and 0xff) / 255.0f - var startB = (startInt and 0xff) / 255.0f - - val endA = ((endInt shr 24) and 0xff) / 255.0f - var endR = ((endInt shr 16) and 0xff) / 255.0f - var endG = ((endInt shr 8) and 0xff) / 255.0f - var endB = (endInt and 0xff) / 255.0f - - // convert from sRGB to linear - startR = EOCF_sRGB(startR) - startG = EOCF_sRGB(startG) - startB = EOCF_sRGB(startB) - - endR = EOCF_sRGB(endR) - endG = EOCF_sRGB(endG) - endB = EOCF_sRGB(endB) - - // compute the interpolated color in linear space - var a = startA + fraction * (endA - startA) - var r = startR + fraction * (endR - startR) - var g = startG + fraction * (endG - startG) - var b = startB + fraction * (endB - startB) - - // convert back to sRGB in the [0..255] range - a = a * 255.0f - r = OECF_sRGB(r) * 255.0f - g = OECF_sRGB(g) * 255.0f - b = OECF_sRGB(b) * 255.0f - - return Math.round(a) shl 24 or (Math.round(r) shl 16) or (Math.round(g) shl 8) or Math.round( - b - ) - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt deleted file mode 100644 index 5c13c2e9..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/LottieValueAnimator.kt +++ /dev/null @@ -1,320 +0,0 @@ -package com.airbnb.lottie.utils - -import android.animation.ValueAnimator -import android.view.Choreographer -import androidx.annotation.FloatRange -import androidx.annotation.MainThread -import androidx.annotation.VisibleForTesting -import com.airbnb.lottie.LottieComposition -import kotlin.math.abs -import kotlin.math.floor -import kotlin.math.max -import kotlin.math.min - -/** - * This is a slightly modified [ValueAnimator] that allows us to update start and end values - * easily optimizing for the fact that we know that it's a value animator with 2 floats. - */ -class LottieValueAnimator : BaseLottieAnimator(), Choreographer.FrameCallback { - /** - * Returns the current speed. This will be affected by repeat mode REVERSE. - */ - @JvmField - var speed: Float = 1f - private var speedReversedForRepeatMode = false - private var lastFrameTimeNs: Long = 0 - private var frameRaw = 0f - private var frame = 0f - private var repeatCount = 0 - private var minFrame = Int.MIN_VALUE.toFloat() - private var maxFrame = Int.MAX_VALUE.toFloat() - private var composition: LottieComposition? = null - - @VisibleForTesting - protected var running: Boolean = false - private var useCompositionFrameRate = false - - /** - * Returns a float representing the current value of the animation from 0 to 1 - * regardless of the animation speed, direction, or min and max frames. - */ - override fun getAnimatedValue(): Any { - return animatedValueAbsolute - } - - val animatedValueAbsolute: Float - /** - * Returns the current value of the animation from 0 to 1 regardless - * of the animation speed, direction, or min and max frames. - */ - get() { - if (composition == null) { - return 0f - } - return (frame - composition!!.startFrame) / (composition!!.endFrame - composition!!.startFrame) - } - - /** - * Returns the current value of the currently playing animation taking into - * account direction, min and max frames. - */ - override fun getAnimatedFraction(): Float { - if (composition == null) { - return 0f - } - return if (isReversed) { - (getMaxFrame() - frame) / (getMaxFrame() - getMinFrame()) - } else { - (frame - getMinFrame()) / (getMaxFrame() - getMinFrame()) - } - } - - override fun getDuration(): Long { - return if (composition == null) 0 else composition!!.duration.toLong() - } - - fun getFrame(): Float { - return frame - } - - override fun isRunning(): Boolean { - return running - } - - fun setUseCompositionFrameRate(useCompositionFrameRate: Boolean) { - this.useCompositionFrameRate = useCompositionFrameRate - } - - override fun doFrame(frameTimeNanos: Long) { - postFrameCallback() - if (composition == null || !isRunning) { - return - } - - val timeSinceFrame = if (lastFrameTimeNs == 0L) 0 else frameTimeNanos - lastFrameTimeNs - val frameDuration = frameDurationNs - val dFrames = timeSinceFrame / frameDuration - - val newFrameRaw = frameRaw + (if (isReversed) -dFrames else dFrames) - val ended = !MiscUtils.contains(newFrameRaw, getMinFrame(), getMaxFrame()) - val previousFrameRaw = frameRaw - frameRaw = MiscUtils.clamp(newFrameRaw, getMinFrame(), getMaxFrame()) - frame = if (useCompositionFrameRate) floor(frameRaw.toDouble()).toFloat() else frameRaw - - lastFrameTimeNs = frameTimeNanos - - if (!useCompositionFrameRate || frameRaw != previousFrameRaw) { - notifyUpdate() - } - if (ended) { - if (getRepeatCount() != ValueAnimator.INFINITE && repeatCount >= getRepeatCount()) { - frameRaw = if (speed < 0) getMinFrame() else getMaxFrame() - frame = frameRaw - removeFrameCallback() - notifyEnd(isReversed) - } else { - notifyRepeat() - repeatCount++ - if (repeatMode == ValueAnimator.REVERSE) { - speedReversedForRepeatMode = !speedReversedForRepeatMode - reverseAnimationSpeed() - } else { - frameRaw = if (isReversed) getMaxFrame() else getMinFrame() - frame = frameRaw - } - lastFrameTimeNs = frameTimeNanos - } - } - - verifyFrame() - } - - private val frameDurationNs: Float - get() { - if (composition == null) { - return Float.MAX_VALUE - } - return (Utils.SECOND_IN_NANOS / composition!!.frameRate / abs( - speed.toDouble() - )).toFloat() - } - - fun clearComposition() { - this.composition = null - minFrame = Int.MIN_VALUE.toFloat() - maxFrame = Int.MAX_VALUE.toFloat() - } - - fun setComposition(composition: LottieComposition) { - // Because the initial composition is loaded async, the first min/max frame may be set - val keepMinAndMaxFrames = this.composition == null - this.composition = composition - - if (keepMinAndMaxFrames) { - setMinAndMaxFrames( - max(minFrame.toDouble(), composition.startFrame.toDouble()) - .toFloat(), - min(maxFrame.toDouble(), composition.endFrame.toDouble()) - .toFloat() - ) - } else { - setMinAndMaxFrames( - composition.startFrame.toInt().toFloat(), composition.endFrame.toInt().toFloat() - ) - } - val frame = this.frame - this.frame = 0f - this.frameRaw = 0f - setFrame(frame.toInt().toFloat()) - notifyUpdate() - } - - fun setFrame(frame: Float) { - if (this.frameRaw == frame) { - return - } - this.frameRaw = MiscUtils.clamp(frame, getMinFrame(), getMaxFrame()) - this.frame = if (useCompositionFrameRate) (floor(frameRaw.toDouble()) - .toFloat()) else frameRaw - lastFrameTimeNs = 0 - notifyUpdate() - } - - fun setMinFrame(minFrame: Int) { - setMinAndMaxFrames(minFrame.toFloat(), maxFrame.toInt().toFloat()) - } - - fun setMaxFrame(maxFrame: Float) { - setMinAndMaxFrames(minFrame, maxFrame) - } - - fun setMinAndMaxFrames(minFrame: Float, maxFrame: Float) { - require(!(minFrame > maxFrame)) { - String.format( - "minFrame (%s) must be <= maxFrame (%s)", - minFrame, - maxFrame - ) - } - val compositionMinFrame = - if (composition == null) -Float.MAX_VALUE else composition!!.startFrame - val compositionMaxFrame = - if (composition == null) Float.MAX_VALUE else composition!!.endFrame - val newMinFrame = MiscUtils.clamp(minFrame, compositionMinFrame, compositionMaxFrame) - val newMaxFrame = MiscUtils.clamp(maxFrame, compositionMinFrame, compositionMaxFrame) - if (newMinFrame != this.minFrame || newMaxFrame != this.maxFrame) { - this.minFrame = newMinFrame - this.maxFrame = newMaxFrame - setFrame(MiscUtils.clamp(frame, newMinFrame, newMaxFrame).toInt().toFloat()) - } - } - - fun reverseAnimationSpeed() { - speed = -speed - } - - override fun setRepeatMode(value: Int) { - super.setRepeatMode(value) - if (value != ValueAnimator.REVERSE && speedReversedForRepeatMode) { - speedReversedForRepeatMode = false - reverseAnimationSpeed() - } - } - - @MainThread - fun playAnimation() { - running = true - notifyStart(isReversed) - setFrame((if (isReversed) getMaxFrame() else getMinFrame()).toInt().toFloat()) - lastFrameTimeNs = 0 - repeatCount = 0 - postFrameCallback() - } - - @MainThread - fun endAnimation() { - removeFrameCallback() - notifyEnd(isReversed) - } - - @MainThread - fun pauseAnimation() { - removeFrameCallback() - notifyPause() - } - - @MainThread - fun resumeAnimation() { - running = true - postFrameCallback() - lastFrameTimeNs = 0 - if (isReversed && getFrame() == getMinFrame()) { - setFrame(getMaxFrame()) - } else if (!isReversed && getFrame() == getMaxFrame()) { - setFrame(getMinFrame()) - } - notifyResume() - } - - @MainThread - override fun cancel() { - notifyCancel() - removeFrameCallback() - } - - private val isReversed: Boolean - get() = speed < 0 - - fun getMinFrame(): Float { - if (composition == null) { - return 0f - } - return if (minFrame.toInt() == Int.MIN_VALUE) composition!!.startFrame else minFrame - } - - fun getMaxFrame(): Float { - if (composition == null) { - return 0f - } - return if (maxFrame.toInt() == Int.MAX_VALUE) composition!!.endFrame else maxFrame - } - - override fun notifyCancel() { - super.notifyCancel() - notifyEnd(isReversed) - } - - protected fun postFrameCallback() { - if (isRunning) { - removeFrameCallback(false) - Choreographer.getInstance().postFrameCallback(this) - } - } - - @MainThread - protected fun removeFrameCallback() { - this.removeFrameCallback(true) - } - - @MainThread - protected fun removeFrameCallback(stopRunning: Boolean) { - Choreographer.getInstance().removeFrameCallback(this) - if (stopRunning) { - running = false - } - } - - private fun verifyFrame() { - if (composition == null) { - return - } - check(!(frame < minFrame || frame > maxFrame)) { - String.format( - "Frame must be [%f,%f]. It is %f", - minFrame, - maxFrame, - frame - ) - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt deleted file mode 100644 index 6b30e7fd..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/MiscUtils.kt +++ /dev/null @@ -1,120 +0,0 @@ -package com.airbnb.lottie.utils - -import android.graphics.Path -import android.graphics.PointF -import androidx.annotation.FloatRange -import com.airbnb.lottie.animation.content.KeyPathElementContent -import com.airbnb.lottie.model.KeyPath -import com.airbnb.lottie.model.content.ShapeData -import kotlin.math.max -import kotlin.math.min - -object MiscUtils { - private val pathFromDataCurrentPoint = PointF() - - fun addPoints(p1: PointF, p2: PointF): PointF { - return PointF(p1.x + p2.x, p1.y + p2.y) - } - - @JvmStatic - fun getPathFromData(shapeData: ShapeData, outPath: Path) { - outPath.reset() - val initialPoint = shapeData.initialPoint - outPath.moveTo(initialPoint.x, initialPoint.y) - pathFromDataCurrentPoint[initialPoint.x] = initialPoint.y - for (i in shapeData.curves.indices) { - val curveData = shapeData.curves[i] - val cp1 = curveData.controlPoint1 - val cp2 = curveData.controlPoint2 - val vertex = curveData.vertex - - if (cp1 == pathFromDataCurrentPoint && cp2 == vertex) { - // On some phones like Samsung phones, zero valued control points can cause artifacting. - // https://github.com/airbnb/lottie-android/issues/275 - // - // This does its best to add a tiny value to the vertex without affecting the final - // animation as much as possible. - // outPath.rMoveTo(0.01f, 0.01f); - outPath.lineTo(vertex.x, vertex.y) - } else { - outPath.cubicTo(cp1.x, cp1.y, cp2.x, cp2.y, vertex.x, vertex.y) - } - pathFromDataCurrentPoint[vertex.x] = vertex.y - } - if (shapeData.isClosed) { - outPath.close() - } - } - - @JvmStatic - fun lerp(a: Float, b: Float, percentage: Float): Float { - return a + percentage * (b - a) - } - - fun lerp(a: Double, b: Double, percentage: Double): Double { - return a + percentage * (b - a) - } - - @JvmStatic - fun lerp(a: Int, b: Int, percentage: Float): Int { - return (a + percentage * (b - a)).toInt() - } - - fun floorMod(x: Float, y: Float): Int { - return floorMod(x.toInt(), y.toInt()) - } - - private fun floorMod(x: Int, y: Int): Int { - return x - y * floorDiv(x, y) - } - - private fun floorDiv(x: Int, y: Int): Int { - var r = x / y - val sameSign = (x xor y) >= 0 - val mod = x % y - if (!sameSign && mod != 0) { - r-- - } - return r - } - - @JvmStatic - fun clamp(number: Int, min: Int, max: Int): Int { - return max(min.toDouble(), min(max.toDouble(), number.toDouble())).toInt() - } - - @JvmStatic - fun clamp(number: Float, min: Float, max: Float): Float { - return max(min.toDouble(), min(max.toDouble(), number.toDouble())).toFloat() - } - - @JvmStatic - fun clamp(number: Double, min: Double, max: Double): Double { - return max(min, min(max, number)) - } - - fun contains(number: Float, rangeMin: Float, rangeMax: Float): Boolean { - return number >= rangeMin && number <= rangeMax - } - - /** - * Helper method for any [KeyPathElementContent] that will check if the content - * fully matches the keypath then will add itself as the final key, resolve it, and add - * it to the accumulator list. - * - * - * Any [KeyPathElementContent] should call through to this as its implementation of - * [KeyPathElementContent.resolveKeyPath]. - */ - @JvmStatic - fun resolveKeyPath( - keyPath: KeyPath, depth: Int, accumulator: MutableList, - currentPartialKeyPath: KeyPath, content: KeyPathElementContent - ) { - var currentPartialKeyPath = currentPartialKeyPath - if (keyPath.fullyResolvesTo(content.name, depth)) { - currentPartialKeyPath = currentPartialKeyPath.addKey(content.name) - accumulator.add(currentPartialKeyPath.resolve(content)) - } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt deleted file mode 100644 index cf0bbd19..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/Utils.kt +++ /dev/null @@ -1,247 +0,0 @@ -package com.airbnb.lottie.utils - -import android.content.Context -import android.content.res.Resources -import android.graphics.Bitmap -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.PathMeasure -import com.airbnb.lottie.L -import com.airbnb.lottie.animation.content.TrimPathContent -import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation -import kotlin.math.abs -import kotlin.math.hypot -import kotlin.math.max -import kotlin.math.min -import kotlin.math.sqrt - -object Utils { - const val SECOND_IN_NANOS: Int = 1000000000 - - private val INV_SQRT_2 = (sqrt(2.0) / 2.0).toFloat() - -// fun createPath(startPoint: Offset, endPoint: Offset, cp1: Offset?, cp2: Offset?): Path { -// val path = Path() -// path.moveTo(startPoint.x, startPoint.y) -// -// if (cp1 != null && cp2 != null && (cp1.length() != 0f || cp2.length() != 0f)) { -// path.cubicTo( -// startPoint.x + cp1.x, startPoint.y + cp1.y, -// endPoint.x + cp2.x, endPoint.y + cp2.y, -// endPoint.x, endPoint.y -// ) -// } else { -// path.lineTo(endPoint.x, endPoint.y) -// } -// return path -// } - - - fun getScale(matrix: Matrix): Float { - - val rect = Rect(0f,0f,INV_SQRT_2,INV_SQRT_2) - val points = FloatArray(4) - - points[0] = 0f - points[1] = 0f - // Use 1/sqrt(2) so that the hypotenuse is of length 1. - points[2] = INV_SQRT_2 - points[3] = INV_SQRT_2 - - matrix.mapPoints(points) - val dx = points[2] - points[0] - val dy = points[3] - points[1] - - return hypot(dx.toDouble(), dy.toDouble()).toFloat() - } - - fun hasZeroScaleAxis(matrix: Matrix): Boolean { - val points = FloatArray(4) - - points[0] = 0f - points[1] = 0f - // Random numbers. The only way these should map to the same thing as 0,0 is if the scale is 0. - points[2] = 37394.729378f - points[3] = 39575.2343807f - matrix.mapPoints(points) - return points[0] == points[2] || points[1] == points[3] - } - - fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathContent?) { - if (trimPath == null || trimPath.isHidden) { - return - } - val start = (trimPath.start as FloatKeyframeAnimation).floatValue - val end = (trimPath.end as FloatKeyframeAnimation).floatValue - val offset = (trimPath.offset as FloatKeyframeAnimation).floatValue - applyTrimPathIfNeeded(path, start / 100f, end / 100f, offset / 360f) - } - - fun applyTrimPathIfNeeded( - path: Path, startValue: Float, endValue: Float, offsetValue: Float - ) { - if (L.isTraceEnabled()) { - L.beginSection("applyTrimPathIfNeeded") - } - val pathMeasure = PathMeasure() - val tempPath = Path() - - pathMeasure.setPath(path, false) - - val length = pathMeasure.length - if (startValue == 1f && endValue == 0f) { - if (L.isTraceEnabled()) { - L.endSection("applyTrimPathIfNeeded") - } - return - } - if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { - if (L.isTraceEnabled()) { - L.endSection("applyTrimPathIfNeeded") - } - return - } - val start = length * startValue - val end = length * endValue - var newStart = min(start.toDouble(), end.toDouble()).toFloat() - var newEnd = max(start.toDouble(), end.toDouble()).toFloat() - - val offset = offsetValue * length - newStart += offset - newEnd += offset - - // If the trim path has rotated around the path, we need to shift it back. - if (newStart >= length && newEnd >= length) { - newStart = MiscUtils.floorMod(newStart, length).toFloat() - newEnd = MiscUtils.floorMod(newEnd, length).toFloat() - } - - if (newStart < 0) { - newStart = MiscUtils.floorMod(newStart, length).toFloat() - } - if (newEnd < 0) { - newEnd = MiscUtils.floorMod(newEnd, length).toFloat() - } - - // If the start and end are equals, return an empty path. - if (newStart == newEnd) { - path.reset() - if (L.isTraceEnabled()) { - L.endSection("applyTrimPathIfNeeded") - } - return - } - - if (newStart >= newEnd) { - newStart -= length - } - - path.reset() - pathMeasure.getSegment( - newStart, - newEnd, - path, - true - ) - - if (newEnd > length) { - tempPath.reset() - pathMeasure.getSegment( - 0f, - newEnd % length, - tempPath, - true - ) - path.addPath(tempPath) - } else if (newStart < 0) { - tempPath.reset() - pathMeasure.getSegment( - length + newStart, - length, - tempPath, - true - ) - path.addPath(tempPath) - } - if (L.isTraceEnabled()) { - L.endSection("applyTrimPathIfNeeded") - } - } - - fun isAtLeastVersion( - major: Int, - minor: Int, - patch: Int, - minMajor: Int, - minMinor: Int, - minPatch: Int - ): Boolean { - if (major < minMajor) { - return false - } else if (major > minMajor) { - return true - } - - if (minor < minMinor) { - return false - } else if (minor > minMinor) { - return true - } - - return patch >= minPatch - } - - fun hashFor(a: Float, b: Float, c: Float, d: Float): Int { - var result = 17 - if (a != 0f) { - result = (31 * result * a).toInt() - } - if (b != 0f) { - result = (31 * result * b).toInt() - } - if (c != 0f) { - result = (31 * result * c).toInt() - } - if (d != 0f) { - result = (31 * result * d).toInt() - } - return result - } - - fun dpScale(): Float { - return Resources.getSystem().displayMetrics.density - } - - fun getAnimationScale(context: Context): Float { - return 1f -// return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { -// Settings.Global.getFloat( -// context.contentResolver, -// Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f -// ) -// } else { -// Settings.System.getFloat( -// context.contentResolver, -// Settings.System.ANIMATOR_DURATION_SCALE, 1.0f -// ) -// } - } - - /** - * Resize the bitmap to exactly the same size as the specified dimension, changing the aspect ratio if needed. - * Returns the original bitmap if the dimensions already match. - */ - fun resizeBitmapIfNeeded(bitmap: Bitmap, width: Int, height: Int): Bitmap { - if (bitmap.width == width && bitmap.height == height) { - return bitmap - } - val resizedBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true) - bitmap.recycle() - return resizedBitmap - } -} - -fun Matrix.mapPoints(floatArray: FloatArray) { - TODO("mapPoints") -} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java b/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java deleted file mode 100644 index f0a42a22..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/utils/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -@RestrictTo(LIBRARY) -package com.airbnb.lottie.utils; - -import static androidx.annotation.RestrictTo.Scope.LIBRARY; - -import androidx.annotation.RestrictTo; \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt deleted file mode 100644 index 9da3cc13..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Interpolator.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.airbnb.lottie.value - -fun interface Interpolator { - fun getInterpolation(var1: Float): Float - - companion object { - val Linear = Interpolator { it } - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt deleted file mode 100644 index eb8d0502..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/Keyframe.kt +++ /dev/null @@ -1,199 +0,0 @@ -package com.airbnb.lottie.value - -import android.graphics.PointF -import android.view.animation.Interpolator -import androidx.annotation.FloatRange -import com.airbnb.lottie.LottieComposition - -open class Keyframe { - private val composition: LottieComposition? - val startValue: T? - var endValue: T? - val interpolator: Interpolator? - val xInterpolator: Interpolator? - val yInterpolator: Interpolator? - val startFrame: Float - var endFrame: Float? - - var startValueFloat: Float = UNSET_FLOAT - /** - * Optimization to avoid autoboxing. - */ - get() { - if (field == UNSET_FLOAT) { - field = startValue as Float? as Float - } - return field - } - private set - var endValueFloat: Float = UNSET_FLOAT - /** - * Optimization to avoid autoboxing. - */ - get() { - if (field == UNSET_FLOAT) { - field = endValue as Float? as Float - } - return field - } - private set - - var startValueInt: Int = UNSET_INT - /** - * Optimization to avoid autoboxing. - */ - get() { - if (field == UNSET_INT) { - field = startValue as Int? as Int - } - return field - } - private set - var endValueInt: Int = UNSET_INT - /** - * Optimization to avoid autoboxing. - */ - get() { - if (field == UNSET_INT) { - field = endValue as Int? as Int - } - return field - } - private set - - var startProgress: Float = Float.MIN_VALUE - get() { - if (composition == null) { - return 0f - } - if (field == Float.MIN_VALUE) { - field = (startFrame - composition.startFrame) / composition.durationFrames - } - return field - } - private set - var endProgress: Float = Float.MIN_VALUE - get() { - if (composition == null) { - return 1f - } - if (field == Float.MIN_VALUE) { - if (endFrame == null) { - field = 1f - } else { - val startProgress = startProgress - val durationFrames = endFrame!! - startFrame - val durationProgress = durationFrames / composition.durationFrames - field = startProgress + durationProgress - } - } - return field - } - private set - - // Used by PathKeyframe but it has to be parsed by KeyFrame because we use a JsonReader to - // deserialzie the data so we have to parse everything in order - var pathCp1: PointF? = null - var pathCp2: PointF? = null - - - constructor( - composition: LottieComposition?, - startValue: T?, endValue: T?, - interpolator: Interpolator?, startFrame: Float, endFrame: Float? - ) { - this.composition = composition - this.startValue = startValue - this.endValue = endValue - this.interpolator = interpolator - xInterpolator = null - yInterpolator = null - this.startFrame = startFrame - this.endFrame = endFrame - } - - constructor( - composition: LottieComposition?, - startValue: T?, - endValue: T?, - xInterpolator: Interpolator?, - yInterpolator: Interpolator?, - startFrame: Float, - endFrame: Float? - ) { - this.composition = composition - this.startValue = startValue - this.endValue = endValue - interpolator = null - this.xInterpolator = xInterpolator - this.yInterpolator = yInterpolator - this.startFrame = startFrame - this.endFrame = endFrame - } - - protected constructor( - composition: LottieComposition?, - startValue: T?, endValue: T?, - interpolator: Interpolator?, xInterpolator: Interpolator?, yInterpolator: Interpolator?, - startFrame: Float, endFrame: Float? - ) { - this.composition = composition - this.startValue = startValue - this.endValue = endValue - this.interpolator = interpolator - this.xInterpolator = xInterpolator - this.yInterpolator = yInterpolator - this.startFrame = startFrame - this.endFrame = endFrame - } - - /** - * Non-animated value. - */ - constructor(value: T) { - composition = null - startValue = value - endValue = value - interpolator = null - xInterpolator = null - yInterpolator = null - startFrame = Float.MIN_VALUE - endFrame = Float.MAX_VALUE - } - - private constructor(startValue: T, endValue: T) { - composition = null - this.startValue = startValue - this.endValue = endValue - interpolator = null - xInterpolator = null - yInterpolator = null - startFrame = Float.MIN_VALUE - endFrame = Float.MAX_VALUE - } - - fun copyWith(startValue: T, endValue: T): Keyframe { - return Keyframe(startValue, endValue) - } - - val isStatic: Boolean - get() = interpolator == null && xInterpolator == null && yInterpolator == null - - fun containsProgress(/*@FloatRange(from = 0f, to = 1f)*/ progress: Float): Boolean { - return progress >= startProgress && progress < endProgress - } - - override fun toString(): String { - return "Keyframe{" + "startValue=" + startValue + - ", endValue=" + endValue + - ", startFrame=" + startFrame + - ", endFrame=" + endFrame + - ", interpolator=" + interpolator + - '}' - } - - companion object { - private const val UNSET_FLOAT = -3987645.78543923f - private const val UNSET_INT = 784923401 - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt deleted file mode 100644 index f8656aa0..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieFrameInfo.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.airbnb.lottie.value - -import androidx.annotation.RestrictTo - -/** - * Data class for use with [LottieValueCallback]. - * You should *not* hold a reference to the frame info parameter passed to your callback. It will be reused. - */ -class LottieFrameInfo( - var startFrame: Float = 0f, - var endFrame: Float = 0f, - var startValue: T, - var endValue: T, - var linearKeyframeProgress: Float = 0f, - var interpolatedKeyframeProgress: Float = 0f, - var overallProgress: Float = 0f -) \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt deleted file mode 100644 index c2c74946..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedFloatValue.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.airbnb.lottie.value - -import androidx.compose.ui.util.lerp - -@Suppress("unused") -class LottieInterpolatedFloatValue( - startValue: Float, - endValue: Float, - interpolator: Interpolator = Interpolator.Linear -) : LottieInterpolatedValue(startValue, endValue, interpolator) { - - override fun interpolateValue( - startValue: Float, - endValue: Float, - progress: Float - ): Float { - return lerp(startValue, endValue, progress) - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt deleted file mode 100644 index 9af254c3..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedIntegerValue.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.airbnb.lottie.value - -import androidx.compose.ui.util.lerp - -@Suppress("unused") -class LottieInterpolatedIntegerValue( - startValue: Int, endValue: Int, interpolator: Interpolator -) : LottieInterpolatedValue(startValue, endValue, interpolator) { - - public override fun interpolateValue(startValue: Int, endValue: Int, progress: Float): Int { - return lerp(startValue, endValue, progress) - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt deleted file mode 100644 index 04a9fbfa..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedPointValue.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.airbnb.lottie.value - -import android.graphics.PointF -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.geometry.lerp - - -@Suppress("unused") -class LottieInterpolatedPointValue( - startValue: Offset, - endValue: Offset, - interpolator: Interpolator = Interpolator.Linear -) : LottieInterpolatedValue(startValue, endValue, interpolator) { - - public override fun interpolateValue( - startValue: Offset, - endValue: Offset, - progress: Float - ): Offset { - return lerp(startValue, endValue, progress) - } -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt deleted file mode 100644 index 38b60622..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/LottieInterpolatedValue.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.airbnb.lottie.value - -abstract class LottieInterpolatedValue @JvmOverloads constructor( - private val startValue: T, - private val endValue: T, - private val interpolator: Interpolator = Interpolator.Linear -) : LottieValueCallback() { - - override fun getValue(frameInfo: LottieFrameInfo): T { - val progress = interpolator.getInterpolation(frameInfo.overallProgress) - return interpolateValue(this.startValue, this.endValue, progress) - } - - abstract fun interpolateValue(startValue: T, endValue: T, progress: Float): T -} diff --git a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt b/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt deleted file mode 100644 index b3f060f3..00000000 --- a/compottie/src/androidMain/kotlin/com/airbnb/lottie/value/ScaleXY.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.airbnb.lottie.value - -class ScaleXY @JvmOverloads constructor(var scaleX: Float = 1f, var scaleY: Float = 1f) { - fun set(scaleX: Float, scaleY: Float) { - this.scaleX = scaleX - this.scaleY = scaleY - } - - fun equals(scaleX: Float, scaleY: Float): Boolean { - return this.scaleX == scaleX && this.scaleY == scaleY - } - - override fun toString(): String { - return scaleX.toString() + "x" + scaleY - } -} diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt similarity index 96% rename from compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt rename to compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt index e39e2497..5d85c20a 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.asAndroidPath @@ -9,7 +10,7 @@ actual fun ExtendedPathMeasure() : ExtendedPathMeasure = AndroidExtendedPathMeas android.graphics.PathMeasure() ) - +private val matrix = android.graphics.Matrix() private class AndroidExtendedPathMeasure( private val internalPathMeasure: android.graphics.PathMeasure diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Content.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt similarity index 71% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Content.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt index 1a6c21b1..d81fdec1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Content.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema +package io.github.alexzhirkevich.compottie.internal.content interface Content { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt new file mode 100644 index 00000000..637a37b7 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -0,0 +1,136 @@ +package io.github.alexzhirkevich.compottie.internal.content + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.toRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.utils.union + +internal class ContentGroup( + override val name: String?, + val hidden: Boolean, + val contents: List, + val transform: Transform?, +) : DrawingContent, PathContent { + + private val rect = MutableRect(0f,0f,0f,0f) + private val offscreenRect = MutableRect(0f,0f,0f,0f) + private val offscreenPaint = Paint() + private val matrix = Matrix() + private val path = Path() + private var pathContents: MutableList? = null + + + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + if (hidden) { + return + } + + var layerAlpha = parentAlpha + + matrix.setFrom(parentMatrix) + + + if (transform != null) { + matrix *= transform.matrix(frame) + transform.opacity?.interpolated(frame)?.let { + layerAlpha *= it + } + } + + val isRenderingWithOffScreen = hasTwoOrMoreDrawableContent() + + if (isRenderingWithOffScreen) { + offscreenRect.set(0f, 0f, 0f, 0f) + getBounds(offscreenRect, matrix, true, frame) + offscreenPaint.alpha = layerAlpha + Utils.saveLayerCompat(canvas, offscreenRect.toRect(), offscreenPaint) + } + + val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha + + for (i in contents.indices.reversed()) { + val content: Any = contents[i] + if (content is DrawingContent) { + content.draw(canvas, matrix, childAlpha, frame) + } + } + + if (isRenderingWithOffScreen) { + canvas.restore() + } + } + + override fun getPath(time: Int): Path { + + // TODO: cache this somehow. + matrix.reset() + + if (transform != null) { + matrix.setFrom(transform.matrix(time)) + } + path.reset() + if (hidden) { + return path + } + for (i in contents.indices.reversed()) { + val content = contents[i] + if (content is PathContent) { + path.addPath(content.getPath(time), matrix) + } + } + return path + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + // Do nothing with contents after. + val myContentsBefore: MutableList = ArrayList(contentsBefore.size + contents.size) + myContentsBefore.addAll(contentsBefore) + + for (i in contents.indices.reversed()) { + val content = contents[i] + content.setContents(myContentsBefore, contents.subList(0, i)) + myContentsBefore.add(content) + } + } + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int, + ) { + matrix.setFrom(parentMatrix) + if (transform != null) { + matrix *= transform.matrix(frame) + } + + rect.set(0f,0f,0f,0f) + for (i in contents.indices.reversed()) { + val content = contents[i] + if (content is DrawingContent) { + content.getBounds(rect, matrix, applyParents, frame) + outBounds.union(rect) + } + } + } + + + private fun hasTwoOrMoreDrawableContent(): Boolean { + var drawableContentCount = 0 + for (i in contents.indices) { + if (contents[i] is DrawingContent) { + drawableContentCount += 1 + if (drawableContentCount >= 2) { + return true + } + } + } + return false + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt new file mode 100644 index 00000000..ce70ffbf --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt @@ -0,0 +1,11 @@ +package io.github.alexzhirkevich.compottie.internal.content + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix + +internal interface DrawingContent : Content { + fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) + + fun getBounds(outBounds : MutableRect, parentMatrix: Matrix, applyParents: Boolean, frame: Int) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt new file mode 100644 index 00000000..7050be46 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie.internal.content + +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.content.Content + +interface PathContent : Content { + fun getPath(time: Int) : Path +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt similarity index 75% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index aa684db2..13b3c26a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.platform +import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.graphics.PathOperation @@ -12,4 +13,6 @@ interface ExtendedPathMeasure : PathMeasure { fun Path.set(other : Path){ op(this, other, PathOperation.Union) -} \ No newline at end of file +} + +fun Path.addPath(path: Path, matrix: Matrix) = addPath(path.apply { transform(matrix) }) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt deleted file mode 100644 index 13a3143e..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/DrawableContent.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema - -import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.Matrix - -interface DrawableContent : Content { - fun drawIntoCanvas(canvas: Canvas, parentMatrix: Matrix, time: Int) -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt index cb8e3980..f38769de 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt @@ -2,8 +2,8 @@ package io.github.alexzhirkevich.compottie.internal.schema import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.shapes.Ellipse import io.github.alexzhirkevich.compottie.internal.schema.shapes.Fill import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFill @@ -13,7 +13,7 @@ import io.github.alexzhirkevich.compottie.internal.schema.shapes.Path import io.github.alexzhirkevich.compottie.internal.schema.shapes.Rect import io.github.alexzhirkevich.compottie.internal.schema.shapes.Round import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Stroke +import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStroke import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.Trim import kotlinx.serialization.json.Json @@ -30,13 +30,13 @@ val LottieJson = Json { subclass(ShapeLayer::class) } - polymorphic(Value::class){ - subclass(Value.Default::class) - subclass(Value.Keyframed::class) + polymorphic(AnimatedValue::class){ + subclass(AnimatedValue.Default::class) + subclass(AnimatedValue.Keyframed::class) } - polymorphic(Vector::class){ - subclass(Vector.Keyframed::class) - subclass(Vector.Default::class) + polymorphic(AnimatedVector2::class){ + subclass(AnimatedVector2.Keyframed::class) + subclass(AnimatedVector2.Default::class) } polymorphic(Shape::class){ subclass(Path::class) @@ -46,7 +46,7 @@ val LottieJson = Json { subclass(Group::class) subclass(Rect::class) subclass(Round::class) - subclass(Stroke::class) + subclass(SolidStroke::class) subclass(GradientStroke::class) subclass(Trim::class) subclass(TransformShape::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt deleted file mode 100644 index 6069c34e..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/PathContent.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema - -import androidx.compose.ui.graphics.Path - -interface PathContent : Content { - fun getPath(time: Int) : Path -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt index 0d2b6fb1..d81f7910 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt @@ -1,59 +1,107 @@ package io.github.alexzhirkevich.compottie.internal.schema.helpers import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.x +import io.github.alexzhirkevich.compottie.internal.schema.properties.y +import io.github.alexzhirkevich.compottie.internal.utils.Math +import io.github.alexzhirkevich.compottie.internal.utils.preConcat +import io.github.alexzhirkevich.compottie.internal.utils.preRotate +import io.github.alexzhirkevich.compottie.internal.utils.preTranslate +import io.github.alexzhirkevich.compottie.internal.utils.setValues +import kotlin.math.cos +import kotlin.math.sin +import kotlin.math.tan internal abstract class LottieTransform { - abstract val anchorPoint : Vector - abstract val position : Vector? - abstract val scale : Vector? - abstract val rotation : Value? - abstract val opacity : Value - abstract val skew: Value? - abstract val skewAxis: Value? + abstract val anchorPoint: AnimatedVector2? + abstract val position: AnimatedVector2? + abstract val scale: AnimatedVector2? + abstract val rotation: AnimatedValue? + abstract val opacity: AnimatedValue? + abstract val skew: AnimatedValue? + abstract val skewAxis: AnimatedValue? - private val matrix : Matrix = Matrix() + private val matrix: Matrix = Matrix() - private var lastFrame : Int = -1 + private val skewMatrix1: Matrix by lazy { + Matrix() + } - fun matrix(time : Int) : Matrix { - if (lastFrame == time) { - return matrix - } - lastFrame = time + private val skewMatrix2: Matrix by lazy { + Matrix() + } - matrix.reset() + private val skewMatrix3: Matrix by lazy { + Matrix() + } - val (anchorX, anchorY) = anchorPoint.interpolated(time) + private val skewValues: FloatArray by lazy { + FloatArray(9) + } - val position = position?.interpolated(time) + fun matrix(frame: Int): Matrix { + matrix.reset() - if (position != null && (position[0] != 0f || position[1] != 0f)) { - matrix.translate( - position[0] - anchorX, - position[1] - anchorY, - ) + position?.interpolated(frame)?.let { + if (it.x != 0f || it.y != 0f) { + matrix.preTranslate(it.x, it.y,) + } } - if (scale != null || rotation != null) { - val (scaleX, scaleY) = scale?.interpolated(time) ?: defaultScale - val rotation= rotation?.interpolated(time) ?: 0f + rotation?.interpolated(frame)?.takeIf { it != 0f }?.let(matrix::preRotate) + + skew?.interpolated(frame)?.let { sk -> + val skewAngle = skewAxis?.interpolated(frame) + + val mCos = if (skewAngle == null) 0f else cos(Math.toRadians(-skewAngle + 90)) + + val mSin = if (skewAngle == null) 1f else sin(Math.toRadians(-skewAngle + 90)) + + val aTan = tan(Math.toRadians(sk)) + clearSkewValues() + skewValues[0] = mCos + skewValues[1] = mSin + skewValues[3] = -mSin + skewValues[4] = mCos + skewValues[8] = 1f + skewMatrix1.setValues(skewValues) + clearSkewValues() + skewValues[0] = 1f + skewValues[3] = aTan + skewValues[4] = 1f + skewValues[8] = 1f + skewMatrix2.setValues(skewValues) + clearSkewValues() + skewValues[0] = mCos + skewValues[1] = -mSin + skewValues[3] = mSin + skewValues[4] = mCos + skewValues[8] = 1f + skewMatrix3.setValues(skewValues) + skewMatrix2.preConcat(skewMatrix1) + skewMatrix3.preConcat(skewMatrix2) + matrix.preConcat(skewMatrix3) + } - matrix.translate(anchorX, anchorY) + scale?.interpolated(frame)?.takeIf { it.x != 0f || it.y != 0f }?.let { + matrix + } - matrix.scale( - x = scaleX / 100f, - y = scaleY / 100f, - ) + anchorPoint?.interpolated(frame)?.let { + if (it.x != 0f || it.y != 0f) { + matrix.preTranslate(-it.x, -it.y) + } + } - matrix.rotateZ(rotation) + return matrix + } - matrix.translate(-anchorX, -anchorY) + private fun clearSkewValues() { + for (i in 0..8) { + skewValues[i] = 0f } - return matrix } } - -private val defaultScale = floatArrayOf(100f,100f) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt index b6511ffc..34c5918e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.helpers -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -9,25 +9,25 @@ import kotlinx.serialization.Serializable internal class Transform( @SerialName("a") - override val anchorPoint : Vector = Vector.Default(value = floatArrayOf(0f, 0f, 0f)), + override val anchorPoint : AnimatedVector2 = AnimatedVector2.Default(value = floatArrayOf(0f, 0f, 0f)), @SerialName("p") - override val position : Vector? = null, + override val position : AnimatedVector2? = null, @SerialName("s") - override val scale : Vector? = null, + override val scale : AnimatedVector2? = null, @SerialName("r") - override val rotation : Value? = null, + override val rotation : AnimatedValue? = null, @SerialName("o") - override val opacity : Value = Value.Default(value = 100f), + override val opacity : AnimatedValue? = null, @SerialName("sk") - override val skew: Value = Value.Default(value = 0f), + override val skew: AnimatedValue = AnimatedValue.Default(value = 0f), @SerialName("sa") - override val skewAxis: Value = Value.Default(value = 0f), + override val skewAxis: AnimatedValue = AnimatedValue.Default(value = 0f), ) : LottieTransform() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt index 5150b33b..03f88769 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt @@ -1,49 +1,100 @@ -//package io.github.alexzhirkevich.compottie.standalone.schema.layers -// -//import androidx.compose.ui.geometry.Rect -//import androidx.compose.ui.graphics.Matrix -//import androidx.compose.ui.util.fastForEachReversed -//import io.github.alexzhirkevich.compottie.standalone.schema.DrawableContent -// -//abstract class BaseLayer : VisualLayer, DrawableContent { -// -// private val boundsMatrix = Matrix() -// -// private var parentLayers: List = emptyList() -// -// private var parentLayer: BaseLayer? = null -// -// override fun getBounds(outBounds: Rect, parentMatrix: Matrix, applyParents: Boolean) { -// val rect = Rect(0f, 0f, 0f, 0f) -// -// buildParentLayerListIfNeeded() -// -// boundsMatrix.setFrom(parentMatrix) -// -// if (applyParents) { -// if (parentLayers.isNotEmpty()) { -// parentLayers.fastForEachReversed { -// boundsMatrix *= it.transform.getMatrix() -// } -// for (i in parentLayers.indices.reversed()) { -// boundsMatrix.preConcat(parentLayers[i].transform.getMatrix()) -// } -// } else if (parentLayer != null) { -// boundsMatrix.preConcat(parentLayer.transform.getMatrix()) -// } -// } -// -// boundsMatrix.preConcat(transform.getMatrix()) -// } -// -// private fun buildParentLayerListIfNeeded() { -// val list = mutableListOf() -// -// parentLayers = mutableListOf() -// val layer = parentLayer -// while (layer != null) { -// list.add(layer) -// parentLayers = list -// } -// } -//} \ No newline at end of file +package io.github.alexzhirkevich.compottie.internal.schema.layers + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.utils.preConcat + +internal abstract class BaseLayer() : DrawingContent { + + abstract val transform: Transform + + private val matrix = Matrix() + private val boundsMatrix = Matrix() + + private val rect = MutableRect(0f,0f,0f,0f) + + private var parentLayers : MutableList? = null + + private var parentLayer: BaseLayer? = null + + abstract fun drawLayer( + canvas: Canvas, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Int, + ) + + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) { + + buildParentLayerListIfNeeded() + matrix.reset() + + matrix.setFrom(parentMatrix) + parentLayers?.fastForEachReversed { + matrix *= it.transform.matrix(frame) + } + + var alpha = parentAlpha + + transform.opacity?.interpolated(frame)?.let { + alpha *= it / 100f + } + + matrix *= transform.matrix(frame) + drawLayer(canvas, parentMatrix, alpha, frame) + } + + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int, + ) { + rect.set(0f, 0f, 0f, 0f) + buildParentLayerListIfNeeded() + boundsMatrix.setFrom(parentMatrix) + + if (applyParents) { + parentLayers?.fastForEachReversed { + boundsMatrix.preConcat(it.transform.matrix(frame)) + } ?: run { + parentLayer?.transform?.matrix(frame)?.let { + boundsMatrix.preConcat(it) + } + } + } + + boundsMatrix.preConcat(transform.matrix(frame)) + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + //do nothing + } + + fun setParentLayer(layer: BaseLayer){ + this.parentLayer = layer + } + + private fun buildParentLayerListIfNeeded() { + if (parentLayers != null) { + return + } + if (parentLayer == null) { + parentLayers = mutableListOf() + return + } + + parentLayers = mutableListOf() + var layer: BaseLayer? = parentLayer + while (layer != null) { + parentLayers?.add(layer) + layer = layer.parentLayer + } + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt index 01aa7790..ab1de294 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt @@ -1,13 +1,15 @@ package io.github.alexzhirkevich.compottie.internal.schema.layers +import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.schema.effects.Effect import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode -import io.github.alexzhirkevich.compottie.internal.schema.shapes.BaseCanvasShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.CanvasShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -18,63 +20,93 @@ import kotlinx.serialization.Transient internal class ShapeLayer( @SerialName("ks") - override val transform : Transform = Transform(), + override val transform: Transform = Transform(), @SerialName("ao") - override val autoOrient : BooleanInt = BooleanInt.No, + override val autoOrient: BooleanInt = BooleanInt.No, @SerialName("ddd") override val is3d: BooleanInt = BooleanInt.No, @SerialName("ind") - override val index : Int? = null, + override val index: Int? = null, @SerialName("bm") override val blendMode: LottieBlendMode = LottieBlendMode.Normal, @SerialName("cl") - override val clazz : String? = null, + override val clazz: String? = null, @SerialName("ln") - override val htmlId : String? = null, + override val htmlId: String? = null, @SerialName("ip") - override val inPoint : Float? = null, + override val inPoint: Float? = null, @SerialName("op") - override val outPoint : Float? = null, + override val outPoint: Float? = null, @SerialName("st") - override val startTime : Int? = null, + override val startTime: Int? = null, @SerialName("nm") - override val name : String? = null, + override val name: String? = null, @SerialName("ef") - val effect : List = emptyList(), + val effect: List = emptyList(), @SerialName("sr") - override val stretch : Float = 1f, + override val stretch: Float = 1f, @SerialName("parent") - override val parent : Int? = null, + override val parent: Int? = null, @SerialName("shapes") - override val shapes : List = emptyList(), + val shapes: List = emptyList(), @SerialName("tt") - override val matteMode : MatteMode? = null, + override val matteMode: MatteMode? = null, @SerialName("tp") - override val matteParent : Int? = null, + override val matteParent: Int? = null, @SerialName("td") - override val matteTarget : BooleanInt? = null, + override val matteTarget: BooleanInt? = null, @SerialName("hd") override val hidden: Boolean = false, - override val collapseTransform: BooleanInt = BooleanInt.No -) : VisualLayer, CanvasShape by BaseCanvasShape( - root = true, hidden = hidden, shapes = shapes, matchName = name -) + override val collapseTransform: BooleanInt = BooleanInt.No, +) : BaseLayer(), VisualLayer { + + @Transient + private val boundMatrix = Matrix() + + @Transient + private val contentGroup = ContentGroup( + name = name, + hidden = hidden, + contents = shapes, + transform = transform + ).apply { + setContents(emptyList(), emptyList()) + } + + override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame : Int) { + contentGroup.draw(canvas, parentMatrix, parentAlpha, frame) + } + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int, + ) { + super.getBounds(outBounds, parentMatrix, applyParents, frame) + contentGroup.getBounds(outBounds, boundMatrix, applyParents, frame) + } + override fun setContents(contentsBefore: List, contentsAfter: List) { + super.setContents(contentsBefore, contentsAfter) + } + +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt index d93947af..339e4973 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt @@ -11,7 +11,7 @@ import kotlinx.serialization.json.JsonClassDiscriminator @JsonClassDiscriminator("ty") internal sealed interface VisualLayer : Layer { - val transform : Transform + val transform : Transform? val autoOrient : BooleanInt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt new file mode 100644 index 00000000..34f96c78 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +interface Animated { + + fun interpolated(frame : Int) : T +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Vector.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt similarity index 68% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Vector.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt index 0403a6a6..ab9ebc42 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Vector.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt @@ -1,5 +1,8 @@ + package io.github.alexzhirkevich.compottie.internal.schema.properties +import androidx.compose.animation.core.AnimationVector2D +import androidx.compose.ui.graphics.Color import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -10,9 +13,7 @@ import kotlin.time.Duration.Companion.milliseconds @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") -internal sealed interface Vector : Indexable { - - fun interpolated(time: Int): FloatArray +internal sealed interface AnimatedColor : Animated, Indexable { @Serializable @SerialName("0") @@ -25,9 +26,16 @@ internal sealed interface Vector : Indexable { @SerialName("ix") override val index: String? = null - ) : Vector { + ) : AnimatedColor { - override fun interpolated(time: Int): FloatArray = value + @Transient + private val color : Color = if (value.size == 4){ + Color(red = value[0], green = value[1], blue = value[2], alpha = value[3]) + } else { + Color(red = value[0], green = value[1], blue = value[2]) + } + + override fun interpolated(frame: Int) = color } @Serializable @@ -48,16 +56,18 @@ internal sealed interface Vector : Indexable { @SerialName("to") val outTangent: FloatArray? = null, - ) : Vector { + ) : AnimatedColor { @Transient private val animation = value.to2DAnimation() - override fun interpolated(time: Int): FloatArray { + override fun interpolated(time: Int): AnimationVector2D { return animation.getValueFromNanos( playTimeNanos = time.milliseconds.inWholeNanoseconds, - ).let { floatArrayOf(it.v1, it.v2) } + ) } } } + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Value.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedValue.kt similarity index 80% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Value.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedValue.kt index e952f045..f41b0ced 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Value.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedValue.kt @@ -11,9 +11,8 @@ import kotlin.time.Duration.Companion.milliseconds @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") -internal sealed interface Value : Indexable { +internal sealed interface AnimatedValue : Animated, Indexable { - fun interpolated(time : Int) : Float @Serializable @SerialName("0") @@ -26,9 +25,9 @@ internal sealed interface Value : Indexable { @SerialName("ix") override val index : String? = null - ) : Value { + ) : AnimatedValue { - override fun interpolated(time: Int): Float = value + override fun interpolated(frame: Int): Float = value } @Serializable @@ -42,14 +41,14 @@ internal sealed interface Value : Indexable { @SerialName("ix") override val index : String? = null - ) : Value { + ) : AnimatedValue { @Transient private val keyframes = value.toAnimation() - override fun interpolated(time: Int): Float { + override fun interpolated(frame: Int): Float { return keyframes.getValueFromNanos( - playTimeNanos = time.milliseconds.inWholeNanoseconds, + playTimeNanos = frame.milliseconds.inWholeNanoseconds, ).value } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt new file mode 100644 index 00000000..9f756e93 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt @@ -0,0 +1,72 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import androidx.compose.animation.core.AnimationVector +import androidx.compose.animation.core.AnimationVector2D +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonClassDiscriminator +import kotlin.time.Duration.Companion.milliseconds + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("a") +internal sealed interface AnimatedVector2 : Animated, Indexable { + + @Serializable + @SerialName("0") + class Default( + @SerialName("k") + val value: FloatArray, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null + ) : AnimatedVector2 { + + @Transient + private val animationVector = AnimationVector(value[0], value[1]) + + override fun interpolated(frame: Int): AnimationVector2D = animationVector + } + + @Serializable + @SerialName("1") + class Keyframed( + + @SerialName("k") + val value: List, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null, + + @SerialName("ti") + val inTangent: FloatArray? = null, + + @SerialName("to") + val outTangent: FloatArray? = null, + ) : AnimatedVector2 { + + @Transient + private val animation = value.to2DAnimation() + + override fun interpolated(frame: Int): AnimationVector2D { + return animation.getValueFromNanos( + playTimeNanos = frame.milliseconds.inWholeNanoseconds, + ) + } + } +} + +val AnimationVector2D.x : Float get() = v1 +val AnimationVector2D.y : Float get() = v2 + + + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt index a8f5211c..ed1694e9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Serializable internal class GradientColors( @SerialName("k") - val colors : Vector, + val colors : AnimatedVector2, @SerialName("p") val numberOfColors : Int = 0 diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt index b03812ce..1b8143c9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes +import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint @@ -7,74 +8,63 @@ import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure +import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.Content -import io.github.alexzhirkevich.compottie.internal.schema.DrawableContent -import io.github.alexzhirkevich.compottie.internal.schema.PathContent +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value -import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.Utils +import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.utils.set import kotlin.math.min -internal abstract class BaseStroke() : DrawableContent { +internal abstract class BaseStroke() : DrawingContent { + + abstract val opacity: AnimatedValue + abstract val strokeWidth: AnimatedValue + abstract val lineCap : LineCap + abstract val lineJoin : LineJoin + abstract val strokeMiter : Float private val pathGroups = mutableListOf() private val trimPathPath = Path() private val path = Path() - private val paint = Paint() + private val rect = MutableRect(0f,0f,0f,0f) + private val paint = Paint().apply { + strokeMiterLimit = strokeMiter + strokeCap = lineCap.asStrokeCap() + strokeJoin = lineJoin.asStrokeJoin() + } private val pm = ExtendedPathMeasure() - abstract val opacity: Value - abstract val strokeWidth: Value - open fun setupPaint(paint: Paint, time: Int){ + + open fun setupPaint(paint: Paint, frame: Int){ paint.style = PaintingStyle.Stroke - paint.alpha = opacity.interpolated(time) - paint.strokeWidth = strokeWidth.interpolated(time) - } + paint.alpha = opacity.interpolated(frame) + paint.strokeWidth = strokeWidth.interpolated(frame) - final override fun drawIntoCanvas(canvas: Canvas, parentMatrix: Matrix, time: Int) { + } - //TODO: -// if (com.airbnb.lottie.utils.Utils.hasZeroScaleAxis(parentMatrix)) { -// return -// } + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) { - setupPaint(paint, time) + setupPaint(paint, frame) if (paint.strokeWidth <= 0) { return } -// applyDashPatternIfNeeded(parentMatrix) - -// if (colorFilterAnimation != null) { -// paint.setColorFilter(colorFilterAnimation.getValue()) -// } -// -// if (blurAnimation != null) { -// val blurRadius: Float = blurAnimation.getValue() -// if (blurRadius == 0f) { -// paint.setMaskFilter(null) -// } else if (blurRadius != blurMaskFilterRadius) { -// val blur: BlurMaskFilter = layer.getBlurMaskFilter(blurRadius) -// paint.setMaskFilter(blur) -// } -// blurMaskFilterRadius = blurRadius -// } -// if (dropShadowAnimation != null) { -// dropShadowAnimation.applyTo(paint) -// } pathGroups.fastForEach { pathGroup -> if (pathGroup.trimPath != null) { - applyTrimPath(canvas, time, pathGroup, parentMatrix) + applyTrimPath(canvas, frame, pathGroup, parentMatrix) } else { path.reset() pathGroup.paths.fastForEachReversed { - path.addPath(it.getPath(time).apply { transform(parentMatrix) }) + path.addPath(it.getPath(frame), parentMatrix) } canvas.drawPath(path, paint) } @@ -121,11 +111,43 @@ internal abstract class BaseStroke() : DrawableContent { currentPathGroup?.let(pathGroups::add) } + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int, + ) { + path.reset() + for (i in pathGroups.indices) { + val pathGroup = pathGroups[i] + for (j in pathGroup.paths.indices) { + path.addPath(pathGroup.paths[j].getPath(frame), parentMatrix) + } + } + rect.set(path.getBounds()) + + val width = strokeWidth.interpolated(frame) + + rect.set( + rect.left - width / 2f, rect.top - width / 2f, + rect.right + width / 2f, rect.bottom + width / 2f + ) + outBounds.set(rect) + + // Add padding to account for rounding errors. + outBounds.set( + outBounds.left - 1, + outBounds.top - 1, + outBounds.right + 1, + outBounds.bottom + 1 + ) + } + private fun applyTrimPath( canvas: Canvas, time: Int, pathGroup: PathGroup, - parentMatrix: Matrix + parentMatrix: Matrix, ) { if (pathGroup.trimPath == null) { return @@ -213,7 +235,7 @@ internal abstract class BaseStroke() : DrawableContent { } private class PathGroup( - val trimPath: TrimPath? + val trimPath: TrimPath?, ) { val paths: MutableList = mutableListOf() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt index 1858f026..fa1532d2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt @@ -2,10 +2,10 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.schema.Content -import io.github.alexzhirkevich.compottie.internal.schema.PathContent +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -28,10 +28,10 @@ internal class Ellipse( val direction : Int = 1, @SerialName("p") - val position : Vector, + val position : AnimatedVector2, @SerialName("s") - val size : Vector, + val size : AnimatedVector2, ) : Shape, PathContent { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt index ecfae218..90990c77 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt @@ -1,10 +1,9 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.graphics.PaintingStyle -import io.github.alexzhirkevich.compottie.internal.schema.Content import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -28,10 +27,10 @@ internal class Fill( val direction : Int = 1, @SerialName("o") - override val opacity : Value, + override val opacity : AnimatedValue, @SerialName("c") - override val color : Vector, + override val color : AnimatedVector2, ) : SolidDrawShape() { override val paintingStyle: PaintingStyle diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt index 6b3ec34c..2052bb4b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt @@ -6,8 +6,8 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.RadialGradientShader import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -27,13 +27,13 @@ internal class GradientFill( override val hidden : Boolean = false, @SerialName("o") - val opacity : Value, + val opacity : AnimatedValue, @SerialName("s") - val startPoint : Vector, + val startPoint : AnimatedVector2, @SerialName("e") - val endPoint : Vector, + val endPoint : AnimatedVector2, @SerialName("t") val type : GradientType, @@ -42,13 +42,13 @@ internal class GradientFill( * Gradient Highlight Length. Only if type is Radial * */ @SerialName("h") - val highlightLength : Value? = null, + val highlightLength : AnimatedValue? = null, /** * Highlight Angle. Only if type is Radial * */ @SerialName("a") - val highlightAngle : Value? = null, + val highlightAngle : AnimatedValue? = null, @SerialName("g") val colors : GradientColors, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt index 8a8ad9f9..406dd18b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt @@ -1,12 +1,16 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable @SerialName("gs") @@ -22,37 +26,37 @@ internal class GradientStroke( override val hidden : Boolean = false, @SerialName("lc") - val lineCap : LineCap, + override val lineCap : LineCap, @SerialName("lj") - val lineJoin : LineJoin, + override val lineJoin : LineJoin, @SerialName("ml") val miterLimit : Float? = null, @SerialName("o") - val opacity : Value, + override val opacity : AnimatedValue, @SerialName("w") - val width : Value, + val width : AnimatedValue, @SerialName("s") - val startPoint : Vector, + val startPoint : AnimatedVector2, @SerialName("e") - val endPoint : Vector, + val endPoint : AnimatedVector2, /** * Gradient Highlight Length. Only if type is Radial * */ @SerialName("h") - val highlightLength : Value? = null, + val highlightLength : AnimatedValue? = null, /** * Highlight Angle. Only if type is Radial * */ @SerialName("a") - val highlightAngle : Value? = null, + val highlightAngle : AnimatedValue? = null, @SerialName("g") val colors : GradientColors, @@ -61,24 +65,57 @@ internal class GradientStroke( val type : GradientType, ) : BaseStroke(), Shape { - override fun setupPaint(paint: Paint, time: Int) { - super.setupPaint(paint, time) + @Transient + private val boundsRect = MutableRect(0f,0f,0f,0f) + + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + + if (hidden) { + return + } + getBounds(boundsRect, parentMatrix, false, frame) + + val shader = if (type == GradientType.LINEAR) { + linearGradient + } else { + radialGradient + } + shader.setLocalMatrix(parentMatrix) + paint.setShader(shader) + + super.draw(canvas, parentMatrix, parentAlpha) + + super.draw(canvas, parentMatrix, parentAlpha, frame) + } + + override fun setupPaint(paint: Paint, frame: Int) { + super.setupPaint(paint, frame) paint.shader = when (type){ - GradientType.Linear -> getLinearGradient(time) - GradientType.Radial -> getRadialGradient(time) + GradientType.Linear -> getLinearGradient(frame) + GradientType.Radial -> getRadialGradient(frame) else -> error("Unknown gradient type: $type") } } private fun getLinearGradient(time: Int) : Shader { - val startPoint = startPoint.interpolated(time) - val endPoint = endPoint.interpolated(time) - val color = colors. + + } private fun getRadialGradient(time: Int) : Shader { - TODO() + val startPoint = startPoint.interpolated(time) + val endPoint = endPoint.interpolated(time) + val gradientColor = colors + val colors = applyDynamicColorsIfNeeded(gradientColor!!.colors) + val positions = gradientColor.positions + val x0 = startPoint!!.x + val y0 = startPoint.y + val x1 = endPoint!!.x + val y1 = endPoint.y + gradient = LinearGradient(x0, y0, x1, y1, colors, positions, Shader.TileMode.CLAMP) + linearGradientCache.put(gradientHash.toLong(), gradient) + return gradient } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt index 67f2ec6f..bccef22d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt @@ -3,11 +3,11 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.RoundRect import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.schema.Content -import io.github.alexzhirkevich.compottie.internal.schema.PathContent +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -30,13 +30,13 @@ internal class Rect( val direction : Int = 1, @SerialName("p") - val position : Vector, + val position : AnimatedVector2, @SerialName("s") - val size : Vector, + val size : AnimatedVector2, @SerialName("r") - val roundedCorners : Value? = null, + val roundedCorners : AnimatedValue? = null, ) : Shape, PathContent { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt index 1a577efb..36191923 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt @@ -2,7 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PathEffect -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -20,7 +20,7 @@ internal class Round( override val hidden : Boolean = false, @SerialName("r") - val radius : Value, + val radius : AnimatedValue, ) : DrawShape { override fun applyTo(paint: Paint, time: Int) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt index 995f4a7f..28889a57 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt @@ -1,17 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes -import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.PaintingStyle -import androidx.compose.ui.util.fastForEach -import io.github.alexzhirkevich.compottie.internal.schema.Content -import io.github.alexzhirkevich.compottie.internal.schema.DrawableContent -import io.github.alexzhirkevich.compottie.internal.schema.PathContent -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.content.Content import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonClassDiscriminator @@ -22,68 +11,6 @@ import kotlinx.serialization.json.JsonClassDiscriminator sealed interface Shape : Content { val matchName : String? - val hidden : Boolean } - -@Serializable -internal sealed class SolidDrawShape : Shape, DrawableContent { - - abstract val withAlpha : BooleanInt - abstract val opacity : Value - abstract val color : Vector - abstract val paintingStyle: PaintingStyle - - private val cachedColor by lazy { - if (opacity is Value.Default && color is Vector.Default) { - interpolatedColor(0) - } else null - } - - private val paths = mutableListOf() - - private val paint = Paint() - - override fun setContents(contentsBefore: List, contentsAfter: List) { - contentsAfter.forEach { - if (it is PathContent){ - paths += it - } - } - } - - open fun setupPaint(paint: Paint, time: Int) { - paint.isAntiAlias = true - paint.style = paintingStyle - paint.alpha = interpolatedAlpha(time) - paint.color = cachedColor ?: interpolatedColor(time) - } - - override fun drawIntoCanvas(canvas: Canvas, parentMatrix: Matrix, time: Int) { - if (hidden) { - return - } - setupPaint(paint, time) - - paths.fastForEach { - canvas.drawPath(it.getPath(time), paint) - } - } - - private fun interpolatedAlpha(time : Int)= - (opacity.interpolated(time) / 100f).coerceIn(0f,1f) - - private fun interpolatedColor(time: Int): Color { - return color.interpolated(0).let { - Color( - red = it[0], - green = it[1], - blue = it[2], - alpha = if (withAlpha.toBoolean()) { - it[3] * interpolatedAlpha(time) - } else interpolatedAlpha(time) - ) - } - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Stroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt similarity index 79% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Stroke.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt index 20a6243c..45dec65e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Stroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt @@ -3,16 +3,16 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.StrokeJoin +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedColor import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline @Serializable @SerialName("st") -internal class Stroke( +internal class SolidStroke( @SerialName("mn") override val matchName : String? = null, @@ -27,31 +27,27 @@ internal class Stroke( val withAlpha : BooleanInt = BooleanInt.No, @SerialName("lc") - val lineCap : LineCap, + override val lineCap : LineCap, @SerialName("lj") - val lineJoin : LineJoin, + override val lineJoin : LineJoin, @SerialName("ml") - val miterLimit : Float? = null, + override val strokeMiter : Float = 0f, @SerialName("o") - override val opacity : Value, + override val opacity : AnimatedValue, @SerialName("w") - override val strokeWidth : Value, + override val strokeWidth : AnimatedValue, @SerialName("c") - val color : Vector, + val color : AnimatedColor, ) : BaseStroke(), Shape { - override fun setupPaint(paint: Paint, time: Int) { - super.setupPaint(paint, time) - paint.strokeCap = lineCap.asStrokeCap() - paint.strokeJoin = lineJoin.asStrokeJoin() - miterLimit?.let { - paint.strokeMiterLimit = it - } + override fun setupPaint(paint: Paint, frame: Int) { + super.setupPaint(paint, frame) + paint.color = color.interpolated(frame) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt index 8ec88c9a..2c51d4a6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt @@ -4,8 +4,8 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path import androidx.compose.ui.layout.ScaleFactor -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -28,36 +28,36 @@ internal class Star( override val hidden : Boolean = false, @SerialName("p") - val position : Vector, + val position : AnimatedVector2, @SerialName("d") val direction : Int = 1, @SerialName("is") - val innerRoundness : Value, + val innerRoundness : AnimatedValue, @SerialName("ir") - val innerRadius : Value, + val innerRadius : AnimatedValue, @SerialName("or") - val outerRadius : Value, + val outerRadius : AnimatedValue, @SerialName("os") - val outerRoundness : Value, + val outerRoundness : AnimatedValue, @SerialName("r") - val rotation : Value, + val rotation : AnimatedValue, @SerialName("pt") - val points : Value, + val points : AnimatedValue, @SerialName("s") - val size : Vector, + val size : AnimatedVector2, @SerialName("sy") val starType : StarType, -) : LayoutShape { + ) : LayoutShape { @Transient private val path = Path() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt index c56ae550..a21dd9ce 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt @@ -3,8 +3,8 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieTransform -import io.github.alexzhirkevich.compottie.internal.schema.properties.Vector -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -22,25 +22,25 @@ internal class TransformShape( override val hidden : Boolean = false, @SerialName("a") - override val anchorPoint : Vector = Vector.Default(value = floatArrayOf(0f, 0f, 0f)), + override val anchorPoint : AnimatedVector2 = AnimatedVector2.Default(value = floatArrayOf(0f, 0f, 0f)), @SerialName("p") - override val position : Vector? = null, + override val position : AnimatedVector2? = null, @SerialName("s") - override val scale : Vector? = null, + override val scale : AnimatedVector2? = null, @SerialName("r") - override val rotation : Value ? = null, + override val rotation : AnimatedValue ? = null, @SerialName("o") - override val opacity : Value = Value.Default(value = 100f), + override val opacity : AnimatedValue = AnimatedValue.Default(value = 100f), @SerialName("sk") - override val skew: Value? = null, + override val skew: AnimatedValue? = null, @SerialName("sa") - override val skewAxis: Value? = null, + override val skewAxis: AnimatedValue? = null, ) : LottieTransform(), ModifierShape { override fun applyTo(path: Path, paint: Paint, time: Int) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt index 058d3363..89466888 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -21,11 +21,11 @@ internal class Trim( val direction : Int = 1, @SerialName("s") - val start : Value, + val start : AnimatedValue, @SerialName("e") - val end : Value, + val end : AnimatedValue, @SerialName("o") - val offset : Value, + val offset : AnimatedValue, ) : Shape \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt index c70146bb..6f93cc42 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.properties.Value +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -19,13 +19,13 @@ internal class TrimPath( override val hidden: Boolean = false, @SerialName("s") - val start : Value, + val start : AnimatedValue, @SerialName("e") - val end : Value, + val end : AnimatedValue, @SerialName("o") - val offset : Value, + val offset : AnimatedValue, @SerialName("m") val type : TrimPathType = TrimPathType.Simultaneously diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt index 23cf9134..9dca11c1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt @@ -1,18 +1,18 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath - -internal class CompoundTrimPath { - private val contents: MutableList = mutableListOf() - - fun addTrimPath(trimPath: TrimPath) { - contents.add(trimPath) - } - - fun apply(path: Path, time : Int) { - for (i in contents.indices.reversed()) { - Utils.applyTrimPathIfNeeded(path = path, trimPath = contents[i], time = time) - } - } -} +//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +// +//import androidx.compose.ui.graphics.Path +//import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +// +//internal class CompoundTrimPath { +// private val contents: MutableList = mutableListOf() +// +// fun addTrimPath(trimPath: TrimPath) { +// contents.add(trimPath) +// } +// +// fun apply(path: Path, time : Int) { +// for (i in contents.indices.reversed()) { +// Utils.applyTrimPathIfNeeded(path = path, trimPath = contents[i], time = time) +// } +// } +//} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt index 849ba97c..a45505c6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt @@ -1,64 +1,64 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * CornerRounding defines the amount and quality around a given vertex of a shape. - * [radius] defines the radius of the circle which forms the basis of the rounding for the - * vertex. [smoothing] defines the amount by which the curve is extended from the circular - * arc around the corner to the edge between vertices. - * - * Each corner of a shape can be thought of as either: - * - *

  • unrounded (with a corner radius of 0 and no smoothing)
  • - *
  • rounded with only a circular arc (with smoothing of 0). In this case, the rounding - * around the corner follows an approximated circular arc between the edges to adjacent - * vertices.
  • - *
  • rounded with three curves: There is an inner circular arc and two symmetric flanking - * curves. The flanking curves determine the curvature from the inner curve to the edges, - * with a value of 0 (no smoothing) meaning that it is purely a circular curve and a value of 1 - * meaning that the flanking curves are maximized between the inner curve and the edges. - * - * - * @param radius a value of 0 or greater, representing the radius of the circle which defines - * the inner rounding arc of the - * corner. A value of 0 indicates that the corner is sharp, or completely unrounded. A positive - * value is the requested size of the radius. Note that this radius is an absolute size that - * should relate to the overall size of its shape. Thus if the shape is in screen coordinate - * size, the radius should be sized appropriately. If the shape is in some canonical form - * (bounds of (-1,-1) to (1,1), for example, which is the default when creating a [RoundedPolygon] - * from a number of vertices), then the radius should be relative to that size. The radius will be - * scaled if the shape itself is transformed, since it will produce curves which round the corner - * and thus get transformed along with the overall shape. - * @param smoothing the amount by which the arc is "smoothed" by extending the curve from - * the inner circular arc to the edge between vertices. A value of 0 (no smoothing) indicates - * that the corner is rounded by only a circular arc; there are no flanking curves. A value - * of 1 indicates that there is no circular arc in the center; the flanking curves on either side - * meet at the middle. - */ -class CornerRounding( - /*@FloatRange(from = 0.0) */val radius: Float = 0f, - /*@FloatRange(from = 0.0, to = 1.0) */val smoothing: Float = 0f -) { - - companion object { - /** - * [Unrounded] has a rounding radius of zero, producing a sharp corner at a vertex. - */ - val Unrounded = CornerRounding() - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +// +///* +// * Copyright 2022 The Android Open Source Project +// * +// * Licensed under the Apache License, Version 2.0 (the "License"); +// * you may not use this file except in compliance with the License. +// * You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, software +// * distributed under the License is distributed on an "AS IS" BASIS, +// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// * See the License for the specific language governing permissions and +// * limitations under the License. +// */ +// +///** +// * CornerRounding defines the amount and quality around a given vertex of a shape. +// * [radius] defines the radius of the circle which forms the basis of the rounding for the +// * vertex. [smoothing] defines the amount by which the curve is extended from the circular +// * arc around the corner to the edge between vertices. +// * +// * Each corner of a shape can be thought of as either: +// * +// *
  • unrounded (with a corner radius of 0 and no smoothing)
  • +// *
  • rounded with only a circular arc (with smoothing of 0). In this case, the rounding +// * around the corner follows an approximated circular arc between the edges to adjacent +// * vertices.
  • +// *
  • rounded with three curves: There is an inner circular arc and two symmetric flanking +// * curves. The flanking curves determine the curvature from the inner curve to the edges, +// * with a value of 0 (no smoothing) meaning that it is purely a circular curve and a value of 1 +// * meaning that the flanking curves are maximized between the inner curve and the edges. +// * +// * +// * @param radius a value of 0 or greater, representing the radius of the circle which defines +// * the inner rounding arc of the +// * corner. A value of 0 indicates that the corner is sharp, or completely unrounded. A positive +// * value is the requested size of the radius. Note that this radius is an absolute size that +// * should relate to the overall size of its shape. Thus if the shape is in screen coordinate +// * size, the radius should be sized appropriately. If the shape is in some canonical form +// * (bounds of (-1,-1) to (1,1), for example, which is the default when creating a [RoundedPolygon] +// * from a number of vertices), then the radius should be relative to that size. The radius will be +// * scaled if the shape itself is transformed, since it will produce curves which round the corner +// * and thus get transformed along with the overall shape. +// * @param smoothing the amount by which the arc is "smoothed" by extending the curve from +// * the inner circular arc to the edge between vertices. A value of 0 (no smoothing) indicates +// * that the corner is rounded by only a circular arc; there are no flanking curves. A value +// * of 1 indicates that there is no circular arc in the center; the flanking curves on either side +// * meet at the middle. +// */ +//class CornerRounding( +// /*@FloatRange(from = 0.0) */val radius: Float = 0f, +// /*@FloatRange(from = 0.0, to = 1.0) */val smoothing: Float = 0f +//) { +// +// companion object { +// /** +// * [Unrounded] has a rounding radius of zero, producing a sharp corner at a vertex. +// */ +// val Unrounded = CornerRounding() +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt index c74868cc..3a6fe330 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt @@ -1,437 +1,437 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import androidx.compose.ui.geometry.Offset -import kotlin.math.abs -import kotlin.math.max -import kotlin.math.min -import kotlin.math.sqrt - -/** - * This class holds the anchor and control point data for a single cubic Bézier curve, - * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end - * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining - * the slope of the curve between the anchor points. - */ -open class Cubic internal constructor(internal val points: FloatArray = FloatArray(8)) { - init { - require(points.size == 8) { "Points array size should be 8" } - } - - /** - * The first anchor point x coordinate - */ - val anchor0X get() = points[0] - - /** - * The first anchor point y coordinate - */ - val anchor0Y get() = points[1] - - /** - * The first control point x coordinate - */ - val control0X get() = points[2] - - /** - * The first control point y coordinate - */ - val control0Y get() = points[3] - - /** - * The second control point x coordinate - */ - val control1X get() = points[4] - - /** - * The second control point y coordinate - */ - val control1Y get() = points[5] - - /** - * The second anchor point x coordinate - */ - val anchor1X get() = points[6] - - /** - * The second anchor point y coordinate - */ - val anchor1Y get() = points[7] - - internal constructor(anchor0: Offset, control0: Offset, control1: Offset, anchor1: Offset) : - this(floatArrayOf(anchor0.x, anchor0.y, control0.x, control0.y, - control1.x, control1.y, anchor1.x, anchor1.y)) - - /** - * Returns a point on the curve for parameter t, representing the proportional distance - * along the curve between its starting point at anchor0 and ending point at anchor1. - * - * @param t The distance along the curve between the anchor points, where 0 is at anchor0 and - * 1 is at anchor1 - */ - internal fun pointOnCurve(t: Float): Offset { - val u = 1 - t - return Offset(anchor0X * (u * u * u) + control0X * (3 * t * u * u) + - control1X * (3 * t * t * u) + anchor1X * (t * t * t), - anchor0Y * (u * u * u) + control0Y * (3 * t * u * u) + - control1Y * (3 * t * t * u) + anchor1Y * (t * t * t) - ) - } - - internal fun zeroLength() = abs(anchor0X - anchor1X) < DistanceEpsilon && - abs(anchor0Y - anchor1Y) < DistanceEpsilon - - private fun zeroIsh(value: Float) = abs(value) < DistanceEpsilon - - /** - * This function returns the true bounds of this curve, filling [bounds] with the - * axis-aligned bounding box values for left, top, right, and bottom, in that order. - */ - internal fun calculateBounds( - bounds: FloatArray = FloatArray(4), - approximate: Boolean = false - ) { - - // A curve might be of zero-length, with both anchors co-lated. - // Just return the point itself. - if (zeroLength()) { - bounds[0] = anchor0X - bounds[1] = anchor0Y - bounds[2] = anchor0X - bounds[3] = anchor0Y - return - } - - var minX = min(anchor0X, anchor1X) - var minY = min(anchor0Y, anchor1Y) - var maxX = max(anchor0X, anchor1X) - var maxY = max(anchor0Y, anchor1Y) - - if (approximate) { - // Approximate bounds use the bounding box of all anchors and controls - bounds[0] = min(minX, min(control0X, control1X)) - bounds[1] = min(minY, min(control0Y, control1Y)) - bounds[2] = max(maxX, max(control0X, control1X)) - bounds[3] = max(maxY, max(control0Y, control1Y)) - return - } - - // Find the derivative, which is a quadratic Bezier. Then we can solve for t using - // the quadratic formula - val xa = -anchor0X + 3 * control0X - 3 * control1X + anchor1X - val xb = 2 * anchor0X - 4 * control0X + 2 * control1X - val xc = -anchor0X + control0X - - if (zeroIsh(xa)) { - // Try Muller's method instead; it can find a single root when a is 0 - if (xb != 0f) { - val t = 2 * xc / (-2 * xb) - if (t in 0f..1f) { - pointOnCurve(t).x.let { - if (it < minX) minX = it - if (it > maxX) maxX = it - } - } - } - } else { - val xs = xb * xb - 4 * xa * xc - if (xs >= 0) { - val t1 = (-xb + sqrt(xs)) / (2 * xa) - if (t1 in 0f..1f) { - pointOnCurve(t1).x.let { - if (it < minX) minX = it - if (it > maxX) maxX = it - } - } - - val t2 = (-xb - sqrt(xs)) / (2 * xa) - if (t2 in 0f..1f) { - pointOnCurve(t2).x.let { - if (it < minX) minX = it - if (it > maxX) maxX = it - } - } - } - } - - // Repeat the above for y coordinate - val ya = -anchor0Y + 3 * control0Y - 3 * control1Y + anchor1Y - val yb = 2 * anchor0Y - 4 * control0Y + 2 * control1Y - val yc = -anchor0Y + control0Y - - if (zeroIsh(ya)) { - if (yb != 0f) { - val t = 2 * yc / (-2 * yb) - if (t in 0f..1f) { - pointOnCurve(t).y.let { - if (it < minY) minY = it - if (it > maxY) maxY = it - } - } - } - } else { - val ys = yb * yb - 4 * ya * yc - if (ys >= 0) { - val t1 = (-yb + sqrt(ys)) / (2 * ya) - if (t1 in 0f..1f) { - pointOnCurve(t1).y.let { - if (it < minY) minY = it - if (it > maxY) maxY = it - } - } - - val t2 = (-yb - sqrt(ys)) / (2 * ya) - if (t2 in 0f..1f) { - pointOnCurve(t2).y.let { - if (it < minY) minY = it - if (it > maxY) maxY = it - } - } - } - } - bounds[0] = minX - bounds[1] = minY - bounds[2] = maxX - bounds[3] = maxY - } - - /** - * Returns two Cubics, created by splitting this curve at the given - * distance of [t] between the original starting and ending anchor points. - */ - // TODO: cartesian optimization? - fun split(t: Float): Pair { - val u = 1 - t - val pointOnCurve = pointOnCurve(t) - return Cubic( - anchor0X, anchor0Y, - anchor0X * u + control0X * t, anchor0Y * u + control0Y * t, - anchor0X * (u * u) + control0X * (2 * u * t) + control1X * (t * t), - anchor0Y * (u * u) + control0Y * (2 * u * t) + control1Y * (t * t), - pointOnCurve.x, pointOnCurve.y - ) to Cubic( - // TODO: should calculate once and share the result - pointOnCurve.x, pointOnCurve.y, - control0X * (u * u) + control1X * (2 * u * t) + anchor1X * (t * t), - control0Y * (u * u) + control1Y * (2 * u * t) + anchor1Y * (t * t), - control1X * u + anchor1X * t, control1Y * u + anchor1Y * t, - anchor1X, anchor1Y - ) - } - - /** - * Utility function to reverse the control/anchor points for this curve. - */ - fun reverse() = Cubic(anchor1X, anchor1Y, control1X, control1Y, control0X, control0Y, - anchor0X, anchor0Y) - - /** - * Operator overload to enable adding Cubic objects together, like "c0 + c1" - */ - operator fun plus(o: Cubic) = Cubic(FloatArray(8) { points[it] + o.points[it] }) - - /** - * Operator overload to enable multiplying Cubics by a scalar value x, like "c0 * x" - */ - operator fun times(x: Float) = Cubic(FloatArray(8) { points[it] * x }) - - /** - * Operator overload to enable multiplying Cubics by an Int scalar value x, like "c0 * x" - */ - operator fun times(x: Int) = times(x.toFloat()) - - /** - * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" - */ - operator fun div(x: Float) = times(1f / x) - - /** - * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" - */ - operator fun div(x: Int) = div(x.toFloat()) - - override fun toString(): String { - return "anchor0: ($anchor0X, $anchor0Y) control0: ($control0X, $control0Y), " + - "control1: ($control1X, $control1Y), anchor1: ($anchor1X, $anchor1Y)" - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - - if (other !is Cubic) { - return false - } - - return points.contentEquals(other.points) - } - - /** - * Transforms the points in this [Cubic] with the given [PointTransformer] and returns a new - * [Cubic] - * - * @param f The [PointTransformer] used to transform this [Cubic] - */ - fun transformed(f: PointTransformer): Cubic { - val newCubic = MutableCubic() - points.copyInto(newCubic.points) - newCubic.transform(f) - return newCubic - } - - override fun hashCode() = points.contentHashCode() - - companion object { - /** - * Generates a bezier curve that is a straight line between the given anchor points. - * The control points lie 1/3 of the distance from their respective anchor points. - */ - fun straightLine(x0: Float, y0: Float, x1: Float, y1: Float): Cubic { - return Cubic( - x0, y0, - interpolate(x0, x1, 1f / 3f), - interpolate(y0, y1, 1f / 3f), - interpolate(x0, x1, 2f / 3f), - interpolate(y0, y1, 2f / 3f), - x1, y1 - ) - } - - // TODO: consider a more general function (maybe in addition to this) that allows - // caller to get a list of curves surpassing 180 degrees - /** - * Generates a bezier curve that approximates a circular arc, with p0 and p1 as - * the starting and ending anchor points. The curve generated is the smallest of - * the two possible arcs around the entire 360-degree circle. Arcs of greater than 180 - * degrees should use more than one arc together. Note that p0 and p1 should be - * equidistant from the center. - */ - fun circularArc( - centerX: Float, - centerY: Float, - x0: Float, - y0: Float, - x1: Float, - y1: Float - ): Cubic { - val p0d = directionVector(x0 - centerX, y0 - centerY) - val p1d = directionVector(x1 - centerX, y1 - centerY) - val rotatedP0 = p0d.rotate90() - val rotatedP1 = p1d.rotate90() - val clockwise = rotatedP0.dotProduct(x1 - centerX, y1 - centerY) >= 0 - val cosa = p0d.dotProduct(p1d) - if (cosa > 0.999f) /* p0 ~= p1 */ return straightLine(x0, y0, x1, y1) - val k = distance(x0 - centerX, y0 - centerY) * 4f / 3f * - (sqrt(2 * (1 - cosa)) - sqrt(1 - cosa * cosa)) / (1 - cosa) * - if (clockwise) 1f else -1f - return Cubic( - x0, y0, x0 + rotatedP0.x * k, y0 + rotatedP0.y * k, - x1 - rotatedP1.x * k, y1 - rotatedP1.y * k, x1, y1 - ) - } - } -} - -/** - * Create a Cubic that holds the anchor and control point data for a single Bézier curve, - * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end - * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining - * the slope of the curve between the anchor points. - * - * The returned instance is immutable. - * - * @param anchor0X the first anchor point x coordinate - * @param anchor0Y the first anchor point y coordinate - * @param control0X the first control point x coordinate - * @param control0Y the first control point y coordinate - * @param control1X the second control point x coordinate - * @param control1Y the second control point y coordinate - * @param anchor1X the second anchor point x coordinate - * @param anchor1Y the second anchor point y coordinate - */ -fun Cubic( - anchor0X: Float, - anchor0Y: Float, - control0X: Float, - control0Y: Float, - control1X: Float, - control1Y: Float, - anchor1X: Float, - anchor1Y: Float -) = Cubic(floatArrayOf(anchor0X, anchor0Y, control0X, control0Y, - control1X, control1Y, anchor1X, anchor1Y)) - -/** - * This interface is used refer to Points that can be modified, as a scope to - * [PointTransformer] - */ -interface MutablePoint { - /** - * The x coordinate of the Point - */ - var x: Float - - /** - * The y coordinate of the Point - */ - var y: Float -} - -typealias TransformResult = Pair - -/** - * Interface for a function that can transform (rotate/scale/translate/etc.) points. - */ -fun interface PointTransformer { - /** - * Transform the point given the x and y parameters, returning the transformed point as a - * [TransformResult] - */ - fun transform(x: Float, y: Float): TransformResult -} - -/** - * This is a Mutable version of [Cubic], used mostly for performance critical paths so we can - * avoid creating new [Cubic]s - * - * This is used in Morph.forEachCubic, reusing a [MutableCubic] instance to avoid creating - * new [Cubic]s. - */ -class MutableCubic : Cubic() { - private fun transformOnePoint(f: PointTransformer, ix: Int) { - val result = f.transform(points[ix], points[ix + 1]) - points[ix] = result.first - points[ix + 1] = result.second - } - - fun transform(f: PointTransformer) { - transformOnePoint(f, 0) - transformOnePoint(f, 2) - transformOnePoint(f, 4) - transformOnePoint(f, 6) - } - - fun interpolate(c1: Cubic, c2: Cubic, progress: Float) { - repeat(8) { - points[it] = interpolate( - c1.points[it], - c2.points[it], - progress - ) - } - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +// +///* +// * Copyright 2022 The Android Open Source Project +// * +// * Licensed under the Apache License, Version 2.0 (the "License"); +// * you may not use this file except in compliance with the License. +// * You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, software +// * distributed under the License is distributed on an "AS IS" BASIS, +// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// * See the License for the specific language governing permissions and +// * limitations under the License. +// */ +// +//import androidx.compose.ui.geometry.Offset +//import kotlin.math.abs +//import kotlin.math.max +//import kotlin.math.min +//import kotlin.math.sqrt +// +///** +// * This class holds the anchor and control point data for a single cubic Bézier curve, +// * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end +// * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining +// * the slope of the curve between the anchor points. +// */ +//open class Cubic internal constructor(internal val points: FloatArray = FloatArray(8)) { +// init { +// require(points.size == 8) { "Points array size should be 8" } +// } +// +// /** +// * The first anchor point x coordinate +// */ +// val anchor0X get() = points[0] +// +// /** +// * The first anchor point y coordinate +// */ +// val anchor0Y get() = points[1] +// +// /** +// * The first control point x coordinate +// */ +// val control0X get() = points[2] +// +// /** +// * The first control point y coordinate +// */ +// val control0Y get() = points[3] +// +// /** +// * The second control point x coordinate +// */ +// val control1X get() = points[4] +// +// /** +// * The second control point y coordinate +// */ +// val control1Y get() = points[5] +// +// /** +// * The second anchor point x coordinate +// */ +// val anchor1X get() = points[6] +// +// /** +// * The second anchor point y coordinate +// */ +// val anchor1Y get() = points[7] +// +// internal constructor(anchor0: Offset, control0: Offset, control1: Offset, anchor1: Offset) : +// this(floatArrayOf(anchor0.x, anchor0.y, control0.x, control0.y, +// control1.x, control1.y, anchor1.x, anchor1.y)) +// +// /** +// * Returns a point on the curve for parameter t, representing the proportional distance +// * along the curve between its starting point at anchor0 and ending point at anchor1. +// * +// * @param t The distance along the curve between the anchor points, where 0 is at anchor0 and +// * 1 is at anchor1 +// */ +// internal fun pointOnCurve(t: Float): Offset { +// val u = 1 - t +// return Offset(anchor0X * (u * u * u) + control0X * (3 * t * u * u) + +// control1X * (3 * t * t * u) + anchor1X * (t * t * t), +// anchor0Y * (u * u * u) + control0Y * (3 * t * u * u) + +// control1Y * (3 * t * t * u) + anchor1Y * (t * t * t) +// ) +// } +// +// internal fun zeroLength() = abs(anchor0X - anchor1X) < DistanceEpsilon && +// abs(anchor0Y - anchor1Y) < DistanceEpsilon +// +// private fun zeroIsh(value: Float) = abs(value) < DistanceEpsilon +// +// /** +// * This function returns the true bounds of this curve, filling [bounds] with the +// * axis-aligned bounding box values for left, top, right, and bottom, in that order. +// */ +// internal fun calculateBounds( +// bounds: FloatArray = FloatArray(4), +// approximate: Boolean = false +// ) { +// +// // A curve might be of zero-length, with both anchors co-lated. +// // Just return the point itself. +// if (zeroLength()) { +// bounds[0] = anchor0X +// bounds[1] = anchor0Y +// bounds[2] = anchor0X +// bounds[3] = anchor0Y +// return +// } +// +// var minX = min(anchor0X, anchor1X) +// var minY = min(anchor0Y, anchor1Y) +// var maxX = max(anchor0X, anchor1X) +// var maxY = max(anchor0Y, anchor1Y) +// +// if (approximate) { +// // Approximate bounds use the bounding box of all anchors and controls +// bounds[0] = min(minX, min(control0X, control1X)) +// bounds[1] = min(minY, min(control0Y, control1Y)) +// bounds[2] = max(maxX, max(control0X, control1X)) +// bounds[3] = max(maxY, max(control0Y, control1Y)) +// return +// } +// +// // Find the derivative, which is a quadratic Bezier. Then we can solve for t using +// // the quadratic formula +// val xa = -anchor0X + 3 * control0X - 3 * control1X + anchor1X +// val xb = 2 * anchor0X - 4 * control0X + 2 * control1X +// val xc = -anchor0X + control0X +// +// if (zeroIsh(xa)) { +// // Try Muller's method instead; it can find a single root when a is 0 +// if (xb != 0f) { +// val t = 2 * xc / (-2 * xb) +// if (t in 0f..1f) { +// pointOnCurve(t).x.let { +// if (it < minX) minX = it +// if (it > maxX) maxX = it +// } +// } +// } +// } else { +// val xs = xb * xb - 4 * xa * xc +// if (xs >= 0) { +// val t1 = (-xb + sqrt(xs)) / (2 * xa) +// if (t1 in 0f..1f) { +// pointOnCurve(t1).x.let { +// if (it < minX) minX = it +// if (it > maxX) maxX = it +// } +// } +// +// val t2 = (-xb - sqrt(xs)) / (2 * xa) +// if (t2 in 0f..1f) { +// pointOnCurve(t2).x.let { +// if (it < minX) minX = it +// if (it > maxX) maxX = it +// } +// } +// } +// } +// +// // Repeat the above for y coordinate +// val ya = -anchor0Y + 3 * control0Y - 3 * control1Y + anchor1Y +// val yb = 2 * anchor0Y - 4 * control0Y + 2 * control1Y +// val yc = -anchor0Y + control0Y +// +// if (zeroIsh(ya)) { +// if (yb != 0f) { +// val t = 2 * yc / (-2 * yb) +// if (t in 0f..1f) { +// pointOnCurve(t).y.let { +// if (it < minY) minY = it +// if (it > maxY) maxY = it +// } +// } +// } +// } else { +// val ys = yb * yb - 4 * ya * yc +// if (ys >= 0) { +// val t1 = (-yb + sqrt(ys)) / (2 * ya) +// if (t1 in 0f..1f) { +// pointOnCurve(t1).y.let { +// if (it < minY) minY = it +// if (it > maxY) maxY = it +// } +// } +// +// val t2 = (-yb - sqrt(ys)) / (2 * ya) +// if (t2 in 0f..1f) { +// pointOnCurve(t2).y.let { +// if (it < minY) minY = it +// if (it > maxY) maxY = it +// } +// } +// } +// } +// bounds[0] = minX +// bounds[1] = minY +// bounds[2] = maxX +// bounds[3] = maxY +// } +// +// /** +// * Returns two Cubics, created by splitting this curve at the given +// * distance of [t] between the original starting and ending anchor points. +// */ +// // TODO: cartesian optimization? +// fun split(t: Float): Pair { +// val u = 1 - t +// val pointOnCurve = pointOnCurve(t) +// return Cubic( +// anchor0X, anchor0Y, +// anchor0X * u + control0X * t, anchor0Y * u + control0Y * t, +// anchor0X * (u * u) + control0X * (2 * u * t) + control1X * (t * t), +// anchor0Y * (u * u) + control0Y * (2 * u * t) + control1Y * (t * t), +// pointOnCurve.x, pointOnCurve.y +// ) to Cubic( +// // TODO: should calculate once and share the result +// pointOnCurve.x, pointOnCurve.y, +// control0X * (u * u) + control1X * (2 * u * t) + anchor1X * (t * t), +// control0Y * (u * u) + control1Y * (2 * u * t) + anchor1Y * (t * t), +// control1X * u + anchor1X * t, control1Y * u + anchor1Y * t, +// anchor1X, anchor1Y +// ) +// } +// +// /** +// * Utility function to reverse the control/anchor points for this curve. +// */ +// fun reverse() = Cubic(anchor1X, anchor1Y, control1X, control1Y, control0X, control0Y, +// anchor0X, anchor0Y) +// +// /** +// * Operator overload to enable adding Cubic objects together, like "c0 + c1" +// */ +// operator fun plus(o: Cubic) = Cubic(FloatArray(8) { points[it] + o.points[it] }) +// +// /** +// * Operator overload to enable multiplying Cubics by a scalar value x, like "c0 * x" +// */ +// operator fun times(x: Float) = Cubic(FloatArray(8) { points[it] * x }) +// +// /** +// * Operator overload to enable multiplying Cubics by an Int scalar value x, like "c0 * x" +// */ +// operator fun times(x: Int) = times(x.toFloat()) +// +// /** +// * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" +// */ +// operator fun div(x: Float) = times(1f / x) +// +// /** +// * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" +// */ +// operator fun div(x: Int) = div(x.toFloat()) +// +// override fun toString(): String { +// return "anchor0: ($anchor0X, $anchor0Y) control0: ($control0X, $control0Y), " + +// "control1: ($control1X, $control1Y), anchor1: ($anchor1X, $anchor1Y)" +// } +// +// override fun equals(other: Any?): Boolean { +// if (this === other) return true +// +// if (other !is Cubic) { +// return false +// } +// +// return points.contentEquals(other.points) +// } +// +// /** +// * Transforms the points in this [Cubic] with the given [PointTransformer] and returns a new +// * [Cubic] +// * +// * @param f The [PointTransformer] used to transform this [Cubic] +// */ +// fun transformed(f: PointTransformer): Cubic { +// val newCubic = MutableCubic() +// points.copyInto(newCubic.points) +// newCubic.transform(f) +// return newCubic +// } +// +// override fun hashCode() = points.contentHashCode() +// +// companion object { +// /** +// * Generates a bezier curve that is a straight line between the given anchor points. +// * The control points lie 1/3 of the distance from their respective anchor points. +// */ +// fun straightLine(x0: Float, y0: Float, x1: Float, y1: Float): Cubic { +// return Cubic( +// x0, y0, +// interpolate(x0, x1, 1f / 3f), +// interpolate(y0, y1, 1f / 3f), +// interpolate(x0, x1, 2f / 3f), +// interpolate(y0, y1, 2f / 3f), +// x1, y1 +// ) +// } +// +// // TODO: consider a more general function (maybe in addition to this) that allows +// // caller to get a list of curves surpassing 180 degrees +// /** +// * Generates a bezier curve that approximates a circular arc, with p0 and p1 as +// * the starting and ending anchor points. The curve generated is the smallest of +// * the two possible arcs around the entire 360-degree circle. Arcs of greater than 180 +// * degrees should use more than one arc together. Note that p0 and p1 should be +// * equidistant from the center. +// */ +// fun circularArc( +// centerX: Float, +// centerY: Float, +// x0: Float, +// y0: Float, +// x1: Float, +// y1: Float +// ): Cubic { +// val p0d = directionVector(x0 - centerX, y0 - centerY) +// val p1d = directionVector(x1 - centerX, y1 - centerY) +// val rotatedP0 = p0d.rotate90() +// val rotatedP1 = p1d.rotate90() +// val clockwise = rotatedP0.dotProduct(x1 - centerX, y1 - centerY) >= 0 +// val cosa = p0d.dotProduct(p1d) +// if (cosa > 0.999f) /* p0 ~= p1 */ return straightLine(x0, y0, x1, y1) +// val k = distance(x0 - centerX, y0 - centerY) * 4f / 3f * +// (sqrt(2 * (1 - cosa)) - sqrt(1 - cosa * cosa)) / (1 - cosa) * +// if (clockwise) 1f else -1f +// return Cubic( +// x0, y0, x0 + rotatedP0.x * k, y0 + rotatedP0.y * k, +// x1 - rotatedP1.x * k, y1 - rotatedP1.y * k, x1, y1 +// ) +// } +// } +//} +// +///** +// * Create a Cubic that holds the anchor and control point data for a single Bézier curve, +// * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end +// * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining +// * the slope of the curve between the anchor points. +// * +// * The returned instance is immutable. +// * +// * @param anchor0X the first anchor point x coordinate +// * @param anchor0Y the first anchor point y coordinate +// * @param control0X the first control point x coordinate +// * @param control0Y the first control point y coordinate +// * @param control1X the second control point x coordinate +// * @param control1Y the second control point y coordinate +// * @param anchor1X the second anchor point x coordinate +// * @param anchor1Y the second anchor point y coordinate +// */ +//fun Cubic( +// anchor0X: Float, +// anchor0Y: Float, +// control0X: Float, +// control0Y: Float, +// control1X: Float, +// control1Y: Float, +// anchor1X: Float, +// anchor1Y: Float +//) = Cubic(floatArrayOf(anchor0X, anchor0Y, control0X, control0Y, +// control1X, control1Y, anchor1X, anchor1Y)) +// +///** +// * This interface is used refer to Points that can be modified, as a scope to +// * [PointTransformer] +// */ +//interface MutablePoint { +// /** +// * The x coordinate of the Point +// */ +// var x: Float +// +// /** +// * The y coordinate of the Point +// */ +// var y: Float +//} +// +//typealias TransformResult = Pair +// +///** +// * Interface for a function that can transform (rotate/scale/translate/etc.) points. +// */ +//fun interface PointTransformer { +// /** +// * Transform the point given the x and y parameters, returning the transformed point as a +// * [TransformResult] +// */ +// fun transform(x: Float, y: Float): TransformResult +//} +// +///** +// * This is a Mutable version of [Cubic], used mostly for performance critical paths so we can +// * avoid creating new [Cubic]s +// * +// * This is used in Morph.forEachCubic, reusing a [MutableCubic] instance to avoid creating +// * new [Cubic]s. +// */ +//class MutableCubic : Cubic() { +// private fun transformOnePoint(f: PointTransformer, ix: Int) { +// val result = f.transform(points[ix], points[ix + 1]) +// points[ix] = result.first +// points[ix + 1] = result.second +// } +// +// fun transform(f: PointTransformer) { +// transformOnePoint(f, 0) +// transformOnePoint(f, 2) +// transformOnePoint(f, 4) +// transformOnePoint(f, 6) +// } +// +// fun interpolate(c1: Cubic, c2: Cubic, progress: Float) { +// repeat(8) { +// points[it] = interpolate( +// c1.points[it], +// c2.points[it], +// progress +// ) +// } +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt index 43775ac9..78d22069 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt @@ -1,83 +1,83 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -import androidx.compose.ui.geometry.Offset - -/* - * Copyright 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/** - * This class holds information about a corner (rounded or not) or an edge of a given - * polygon. The features of a Polygon can be used to manipulate the shape with more context - * of what the shape actually is, rather than simply manipulating the raw curves and lines - * which describe it. - */ -internal abstract class Feature(val cubics: List) { - internal abstract fun transformed(f: PointTransformer): Feature - - /** - * Edges have only a list of the cubic curves which make up the edge. Edges lie between - * corners and have no vertex or concavity; the curves are simply straight lines (represented - * by Cubic curves). - */ - internal class Edge(cubics: List) : Feature(cubics) { - override fun transformed(f: PointTransformer) = - Edge( - buildList { - // Performance: Builds the list by avoiding creating an unnecessary Iterator to - // iterate through the cubics List. - for (i in cubics.indices) { - add(cubics[i].transformed(f)) - } - } - ) - - override fun toString(): String = "Edge" - } - - /** - * Corners contain the list of cubic curves which describe how the corner is rounded (or - * not), plus the vertex at the corner (which the cubics may or may not pass through, depending - * on whether the corner is rounded) and a flag indicating whether the corner is convex. - * A regular polygon has all convex corners, while a star polygon generally (but not - * necessarily) has both convex (outer) and concave (inner) corners. - */ - internal class Corner( - cubics: List, - val vertex: Offset, - val roundedCenter: Offset, - val convex: Boolean = true - ) : Feature(cubics) { - override fun transformed(f: PointTransformer): Feature { - return Corner( - buildList { - // Performance: Builds the list by avoiding creating an unnecessary Iterator to - // iterate through the cubics List. - for (i in cubics.indices) { - add(cubics[i].transformed(f)) - } - }, - vertex.transformed(f), - roundedCenter.transformed(f), - convex - ) - } - - override fun toString(): String { - return "Corner: vertex=$vertex, center=$roundedCenter, convex=$convex" - } - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +// +//import androidx.compose.ui.geometry.Offset +// +///* +// * Copyright 2023 The Android Open Source Project +// * +// * Licensed under the Apache License, Version 2.0 (the "License"); +// * you may not use this file except in compliance with the License. +// * You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, software +// * distributed under the License is distributed on an "AS IS" BASIS, +// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// * See the License for the specific language governing permissions and +// * limitations under the License. +// */ +// +// +///** +// * This class holds information about a corner (rounded or not) or an edge of a given +// * polygon. The features of a Polygon can be used to manipulate the shape with more context +// * of what the shape actually is, rather than simply manipulating the raw curves and lines +// * which describe it. +// */ +//internal abstract class Feature(val cubics: List) { +// internal abstract fun transformed(f: PointTransformer): Feature +// +// /** +// * Edges have only a list of the cubic curves which make up the edge. Edges lie between +// * corners and have no vertex or concavity; the curves are simply straight lines (represented +// * by Cubic curves). +// */ +// internal class Edge(cubics: List) : Feature(cubics) { +// override fun transformed(f: PointTransformer) = +// Edge( +// buildList { +// // Performance: Builds the list by avoiding creating an unnecessary Iterator to +// // iterate through the cubics List. +// for (i in cubics.indices) { +// add(cubics[i].transformed(f)) +// } +// } +// ) +// +// override fun toString(): String = "Edge" +// } +// +// /** +// * Corners contain the list of cubic curves which describe how the corner is rounded (or +// * not), plus the vertex at the corner (which the cubics may or may not pass through, depending +// * on whether the corner is rounded) and a flag indicating whether the corner is convex. +// * A regular polygon has all convex corners, while a star polygon generally (but not +// * necessarily) has both convex (outer) and concave (inner) corners. +// */ +// internal class Corner( +// cubics: List, +// val vertex: Offset, +// val roundedCenter: Offset, +// val convex: Boolean = true +// ) : Feature(cubics) { +// override fun transformed(f: PointTransformer): Feature { +// return Corner( +// buildList { +// // Performance: Builds the list by avoiding creating an unnecessary Iterator to +// // iterate through the cubics List. +// for (i in cubics.indices) { +// add(cubics[i].transformed(f)) +// } +// }, +// vertex.transformed(f), +// roundedCenter.transformed(f), +// convex +// ) +// } +// +// override fun toString(): String { +// return "Corner: vertex=$vertex, center=$roundedCenter, convex=$convex" +// } +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt index 29c0b3d5..7c53e87d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt @@ -1,84 +1,84 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -import androidx.compose.ui.geometry.Offset -import kotlin.math.sqrt - -/* - * Copyright 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - -/** - * The magnitude of the Point, which is the distance of this point from (0, 0). - * - * If you need this value to compare it to another [Point]'s distance, - * consider using [getDistanceSquared] instead, since it is cheaper to compute. - */ -internal fun Offset.getDistance() = sqrt(x * x + y * y) - -/** - * The square of the magnitude (which is the distance of this point from (0, 0)) of the Point. - * - * This is cheaper than computing the [getDistance] itself. - */ -internal fun Offset.getDistanceSquared() = x * x + y * y - -internal fun Offset.dotProduct(other: Offset) = x * other.x + y * other.y - -internal fun Offset.dotProduct(otherX: Float, otherY: Float) = x * otherX + y * otherY - -/** - * Compute the Z coordinate of the cross product of two vectors, to check if the second vector is - * going clockwise ( > 0 ) or counterclockwise (< 0) compared with the first one. - * It could also be 0, if the vectors are co-linear. - */ -internal fun Offset.clockwise(other: Offset) = x * other.y - y * other.x > 0 - -/** - * Returns unit vector representing the direction to this point from (0, 0) - */ -internal fun Offset.getDirection() = run { - val d = this.getDistance() - require(d > 0f) { "Can't get the direction of a 0-length vector" } - this / d -} - -/** - * Linearly interpolate between two Points. - * - * The [fraction] argument represents position on the timeline, with 0.0 meaning - * that the interpolation has not started, returning [start] (or something - * equivalent to [start]), 1.0 meaning that the interpolation has finished, - * returning [stop] (or something equivalent to [stop]), and values in between - * meaning that the interpolation is at the relevant point on the timeline - * between [start] and [stop]. The interpolation can be extrapolated beyond 0.0 and - * 1.0, so negative values and values greater than 1.0 are valid (and can - * easily be generated by curves). - * - * Values for [fraction] are usually obtained from an [Animation], such as - * an `AnimationController`. - */ -internal fun interpolate(start: Offset, stop: Offset, fraction: Float): Offset { - return Offset( - interpolate(start.x, stop.x, fraction), - interpolate(start.y, stop.y, fraction) - ) -} - -internal fun Offset.transformed(f: PointTransformer): Offset { - val result = f.transform(x, y) - return Offset(result.first, result.second) -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +// +//import androidx.compose.ui.geometry.Offset +//import kotlin.math.sqrt +// +///* +// * Copyright 2023 The Android Open Source Project +// * +// * Licensed under the Apache License, Version 2.0 (the "License"); +// * you may not use this file except in compliance with the License. +// * You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, software +// * distributed under the License is distributed on an "AS IS" BASIS, +// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// * See the License for the specific language governing permissions and +// * limitations under the License. +// */ +// +// +// +///** +// * The magnitude of the Point, which is the distance of this point from (0, 0). +// * +// * If you need this value to compare it to another [Point]'s distance, +// * consider using [getDistanceSquared] instead, since it is cheaper to compute. +// */ +//internal fun Offset.getDistance() = sqrt(x * x + y * y) +// +///** +// * The square of the magnitude (which is the distance of this point from (0, 0)) of the Point. +// * +// * This is cheaper than computing the [getDistance] itself. +// */ +//internal fun Offset.getDistanceSquared() = x * x + y * y +// +//internal fun Offset.dotProduct(other: Offset) = x * other.x + y * other.y +// +//internal fun Offset.dotProduct(otherX: Float, otherY: Float) = x * otherX + y * otherY +// +///** +// * Compute the Z coordinate of the cross product of two vectors, to check if the second vector is +// * going clockwise ( > 0 ) or counterclockwise (< 0) compared with the first one. +// * It could also be 0, if the vectors are co-linear. +// */ +//internal fun Offset.clockwise(other: Offset) = x * other.y - y * other.x > 0 +// +///** +// * Returns unit vector representing the direction to this point from (0, 0) +// */ +//internal fun Offset.getDirection() = run { +// val d = this.getDistance() +// require(d > 0f) { "Can't get the direction of a 0-length vector" } +// this / d +//} +// +///** +// * Linearly interpolate between two Points. +// * +// * The [fraction] argument represents position on the timeline, with 0.0 meaning +// * that the interpolation has not started, returning [start] (or something +// * equivalent to [start]), 1.0 meaning that the interpolation has finished, +// * returning [stop] (or something equivalent to [stop]), and values in between +// * meaning that the interpolation is at the relevant point on the timeline +// * between [start] and [stop]. The interpolation can be extrapolated beyond 0.0 and +// * 1.0, so negative values and values greater than 1.0 are valid (and can +// * easily be generated by curves). +// * +// * Values for [fraction] are usually obtained from an [Animation], such as +// * an `AnimationController`. +// */ +//internal fun interpolate(start: Offset, stop: Offset, fraction: Float): Offset { +// return Offset( +// interpolate(start.x, stop.x, fraction), +// interpolate(start.y, stop.y, fraction) +// ) +//} +// +//internal fun Offset.transformed(f: PointTransformer): Offset { +// val result = f.transform(x, y) +// return Offset(result.first, result.second) +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt index 7c6c9aac..05a67506 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt @@ -1,664 +1,664 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import androidx.compose.ui.geometry.Offset -import kotlin.math.abs -import kotlin.math.max -import kotlin.math.min -import kotlin.math.sqrt - -/** - * The RoundedPolygon class allows simple construction of polygonal shapes with optional rounding - * at the vertices. Polygons can be constructed with either the number of vertices - * desired or an ordered list of vertices. - * - */ -class RoundedPolygon internal constructor( - internal val features: List, - val centerX: Float, - val centerY: Float -) { - /** - * A flattened version of the [Feature]s, as a List. - */ - val cubics = buildList { - // The first/last mechanism here ensures that the final anchor point in the shape - // exactly matches the first anchor point. There can be rendering artifacts introduced - // by those points being slightly off, even by much less than a pixel - var firstCubic: Cubic? = null - var lastCubic: Cubic? = null - var firstFeatureSplitStart: List? = null - var firstFeatureSplitEnd: List? = null - if (features.size > 0 && features[0].cubics.size == 3) { - val centerCubic = features[0].cubics[1] - val (start, end) = centerCubic.split(.5f) - firstFeatureSplitStart = mutableListOf(features[0].cubics[0], start) - firstFeatureSplitEnd = mutableListOf(end, features[0].cubics[2]) - } - // iterating one past the features list size allows us to insert the initial split - // cubic if it exists - for (i in 0..features.size) { - val featureCubics = if (i == 0 && firstFeatureSplitEnd != null) firstFeatureSplitEnd - else if (i == features.size) { - if (firstFeatureSplitStart != null) firstFeatureSplitStart - else break - } else features[i].cubics - for (j in featureCubics.indices) { - // Skip zero-length curves; they add nothing and can trigger rendering artifacts - val cubic = featureCubics[j] - if (!cubic.zeroLength()) { - if (lastCubic != null) add(lastCubic) - lastCubic = cubic - if (firstCubic == null) firstCubic = cubic - } else { - if (lastCubic != null) { - // Dropping several zero-ish length curves in a row can lead to - // enough discontinuity to throw an exception later, even though the - // distances are quite small. Account for that by making the last - // cubic use the latest anchor point, always. - lastCubic.points[6] = cubic.anchor1X - lastCubic.points[7] = cubic.anchor1Y - } - } - } - } - if (lastCubic != null && firstCubic != null) add(Cubic( - lastCubic.anchor0X, lastCubic.anchor0Y, lastCubic.control0X, lastCubic.control0Y, - lastCubic.control1X, lastCubic.control1Y, firstCubic.anchor0X, firstCubic.anchor0Y)) - } - - init { - var prevCubic = cubics[cubics.size - 1] - debugLog("RoundedPolygon") { "Cubic-1 = $prevCubic" } - for (index in cubics.indices) { - val cubic = cubics[index] - debugLog("RoundedPolygon") { "Cubic = $cubic" } - if (abs(cubic.anchor0X - prevCubic.anchor1X) > DistanceEpsilon || - abs(cubic.anchor0Y - prevCubic.anchor1Y) > DistanceEpsilon - ) { - debugLog("RoundedPolygon") { - "Ix: $index | (${cubic.anchor0X},${cubic.anchor0Y}) vs " + - "$prevCubic" - } - throw IllegalArgumentException( - "RoundedPolygon must be contiguous, with the " + - "anchor points of all curves matching the anchor points of the preceding " + - "and succeeding cubics" - ) - } - prevCubic = cubic - } - } - - /** - * Transforms (scales/translates/etc.) this [RoundedPolygon] with the given [PointTransformer] - * and returns a new [RoundedPolygon]. - * This is a low level API and there should be more platform idiomatic ways to transform - * a [RoundedPolygon] provided by the platform specific wrapper. - * - * @param f The [PointTransformer] used to transform this [RoundedPolygon] - */ - fun transformed(f: PointTransformer): RoundedPolygon { - val center = Offset(centerX, centerY).transformed(f) - return RoundedPolygon( - buildList { - for (i in features.indices) { - add(features[i].transformed(f)) - } - }, - center.x, - center.y - ) - } - - /** - * Creates a new RoundedPolygon, moving and resizing this one, so it's completely inside the - * (0, 0) -> (1, 1) square, centered if there extra space in one direction - */ - fun normalized(): RoundedPolygon { - val bounds = calculateBounds() - val width = bounds[2] - bounds[0] - val height = bounds[3] - bounds[1] - val side = max(width, height) - // Center the shape if bounds are not a square - val offsetX = (side - width) / 2 - bounds[0] /* left */ - val offsetY = (side - height) / 2 - bounds[1] /* top */ - return transformed { x, y -> TransformResult((x + offsetX) / side, (y + offsetY) / side) } - } - - override fun toString(): String = "[RoundedPolygon." + - " Cubics = " + cubics.joinToString() + - " || Features = " + features.joinToString() + - " || Center = ($centerX, $centerY)]" - - /** - * Like [calculateBounds], this function calculates the axis-aligned bounds of the - * object and returns that rectangle. But this function determines the max dimension of - * the shape (by calculating the distance from its center to the start and midpoint of - * each curve) and returns a square which can be used to hold the object in any rotation. - * This function can be used, for example, to calculate the max size of a UI element meant - * to hold this shape in any rotation. - * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be - * created. - * @return The axis-aligned max bounding box for this object, where the rectangles left, - * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. - */ - fun calculateMaxBounds(bounds: FloatArray = FloatArray(4)): FloatArray { - require(bounds.size >= 4) { "Required bounds size of 4" } - var maxDistSquared = 0f - for (i in cubics.indices) { - val cubic = cubics[i] - val anchorDistance = distanceSquared(cubic.anchor0X - centerX, - cubic.anchor0Y - centerY) - val middlePoint = cubic.pointOnCurve(.5f) - val middleDistance = distanceSquared(middlePoint.x - centerX, - middlePoint.y - centerY) - maxDistSquared = max(maxDistSquared, max(anchorDistance, middleDistance)) - } - val distance = sqrt(maxDistSquared) - bounds[0] = centerX - distance - bounds[1] = centerY - distance - bounds[2] = centerX + distance - bounds[3] = centerY + distance - return bounds - } - - /** - * Calculates the axis-aligned bounds of the object. - * @param approximate when true, uses a faster calculation to create the bounding - * box based on the min/max values of all anchor and control points that make up the shape. - * Default value is true. - * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be - * created. - * @return The axis-aligned bounding box for this object, where the rectangles left, - * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. - */ - fun calculateBounds( - bounds: FloatArray = FloatArray(4), - approximate: Boolean = true - ): FloatArray { - require(bounds.size >= 4) { "Required bounds size of 4" } - var minX = Float.MAX_VALUE - var minY = Float.MAX_VALUE - var maxX = Float.MIN_VALUE - var maxY = Float.MIN_VALUE - for (i in cubics.indices) { - val cubic = cubics[i] - cubic.calculateBounds(bounds, approximate = approximate) - minX = min(minX, bounds[0]) - minY = min(minY, bounds[1]) - maxX = max(maxX, bounds[2]) - maxY = max(maxY, bounds[3]) - } - bounds[0] = minX - bounds[1] = minY - bounds[2] = maxX - bounds[3] = maxY - return bounds - } - - companion object {} - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other !is RoundedPolygon) return false - - return features == other.features - } - - override fun hashCode(): Int { - return features.hashCode() - } -} - -/** - * This constructor takes the number of vertices in the resulting polygon. These vertices are - * positioned on a virtual circle around a given center with each vertex positioned [radius] - * distance from that center, equally spaced (with equal angles between them). If no radius - * is supplied, the shape will be created with a default radius of 1, resulting in a shape - * whose vertices lie on a unit circle, with width/height of 2. That default polygon will - * probably need to be rescaled using [transformed] into the appropriate size for the UI in - * which it will be drawn. - * - * The [rounding] and [perVertexRounding] parameters are optional. If not supplied, the result - * will be a regular polygon with straight edges and unrounded corners. - * - * @param numVertices The number of vertices in this polygon. - * @param radius The radius of the polygon, in pixels. This radius determines the - * initial size of the object, but it can be transformed later by using the [transformed] function. - * @param centerX The X coordinate of the center of the polygon, around which all vertices - * will be placed. The default center is at (0,0). - * @param centerY The Y coordinate of the center of the polygon, around which all vertices - * will be placed. The default center is at (0,0). - * @param rounding The [CornerRounding] properties of all vertices. If some vertices should - * have different rounding properties, then use [perVertexRounding] instead. The default - * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices - * themselves in the final shape and not curves rounded around the vertices. - * @param perVertexRounding The [CornerRounding] properties of every vertex. If this - * parameter is not null, then it must have [numVertices] elements. If this parameter - * is null, then the polygon will use the [rounding] parameter for every vertex instead. The - * default value is null. - * - * @throws IllegalArgumentException If [perVertexRounding] is not null and its size is not - * equal to [numVertices]. - * @throws IllegalArgumentException [numVertices] must be at least 3. - */ -fun RoundedPolygon( - numVertices: Int, - radius: Float = 1f, - centerX: Float = 0f, - centerY: Float = 0f, - rounding: CornerRounding = CornerRounding.Unrounded, - perVertexRounding: List? = null -) = RoundedPolygon( - verticesFromNumVerts(numVertices, radius, centerX, centerY), - rounding = rounding, - perVertexRounding = perVertexRounding, - centerX = centerX, - centerY = centerY -) - -/** - * Creates a copy of the given [RoundedPolygon] - */ -fun RoundedPolygon(source: RoundedPolygon) = - RoundedPolygon(source.features, source.centerX, source.centerY) - -/** - * This function takes the vertices (either supplied or calculated, depending on the - * constructor called), plus [CornerRounding] parameters, and creates the actual - * [RoundedPolygon] shape, rounding around the vertices (or not) as specified. The result - * is a list of [Cubic] curves which represent the geometry of the final shape. - * - * @param vertices The list of vertices in this polygon specified as pairs of x/y coordinates in - * this FloatArray. This should be an ordered list (with the outline of the shape going from each - * vertex to the next in order of this list), otherwise the results will be undefined. - * @param rounding The [CornerRounding] properties of all vertices. If some vertices should - * have different rounding properties, then use [perVertexRounding] instead. The default - * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices - * themselves in the final shape and not curves rounded around the vertices. - * @param perVertexRounding The [CornerRounding] properties of all vertices. If this - * parameter is not null, then it must have the same size as [vertices]. If this parameter - * is null, then the polygon will use the [rounding] parameter for every vertex instead. The - * default value is null. - * @param centerX The X coordinate of the center of the polygon, around which all vertices - * will be placed. The default center is at (0,0). - * @param centerY The Y coordinate of the center of the polygon, around which all vertices - * will be placed. The default center is at (0,0). - * @throws IllegalArgumentException if the number of vertices is less than 3 (the [vertices] - * parameter has less than 6 Floats). Or if the [perVertexRounding] parameter is not null and the - * size doesn't match the number vertices. - */ -// TODO(performance): Update the map calls to more efficient code that doesn't allocate Iterators -// unnecessarily. -fun RoundedPolygon( - vertices: FloatArray, - rounding: CornerRounding = CornerRounding.Unrounded, - perVertexRounding: List? = null, - centerX: Float = Float.MIN_VALUE, - centerY: Float = Float.MIN_VALUE -): RoundedPolygon { - if (vertices.size < 6) { - throw IllegalArgumentException("Polygons must have at least 3 vertices") - } - if (vertices.size % 2 == 1) { - throw IllegalArgumentException("The vertices array should have even size") - } - if (perVertexRounding != null && perVertexRounding.size * 2 != vertices.size) { - throw IllegalArgumentException( - "perVertexRounding list should be either null or " + - "the same size as the number of vertices (vertices.size / 2)" - ) - } - val corners = mutableListOf>() - val n = vertices.size / 2 - val roundedCorners = mutableListOf() - for (i in 0 until n) { - val vtxRounding = perVertexRounding?.get(i) ?: rounding - val prevIndex = ((i + n - 1) % n) * 2 - val nextIndex = ((i + 1) % n) * 2 - roundedCorners.add( - RoundedCorner( - Offset(vertices[prevIndex], vertices[prevIndex + 1]), - Offset(vertices[i * 2], vertices[i * 2 + 1]), - Offset(vertices[nextIndex], vertices[nextIndex + 1]), - vtxRounding - ) - ) - } - - // For each side, check if we have enough space to do the cuts needed, and if not split - // the available space, first for round cuts, then for smoothing if there is space left. - // Each element in this list is a pair, that represent how much we can do of the cut for - // the given side (side i goes from corner i to corner i+1), the elements of the pair are: - // first is how much we can use of expectedRoundCut, second how much of expectedCut - val cutAdjusts = (0 until n).map { ix -> - val expectedRoundCut = roundedCorners[ix].expectedRoundCut + - roundedCorners[(ix + 1) % n].expectedRoundCut - val expectedCut = roundedCorners[ix].expectedCut + - roundedCorners[(ix + 1) % n].expectedCut - val vtxX = vertices[ix * 2] - val vtxY = vertices[ix * 2 + 1] - val nextVtxX = vertices[((ix + 1) % n) * 2] - val nextVtxY = vertices[((ix + 1) % n) * 2 + 1] - val sideSize = distance(vtxX - nextVtxX, vtxY - nextVtxY) - - // Check expectedRoundCut first, and ensure we fulfill rounding needs first for - // both corners before using space for smoothing - if (expectedRoundCut > sideSize) { - // Not enough room for fully rounding, see how much we can actually do. - sideSize / expectedRoundCut to 0f - } else if (expectedCut > sideSize) { - // We can do full rounding, but not full smoothing. - 1f to (sideSize - expectedRoundCut) / (expectedCut - expectedRoundCut) - } else { - // There is enough room for rounding & smoothing. - 1f to 1f - } - } - // Create and store list of beziers for each [potentially] rounded corner - for (i in 0 until n) { - // allowedCuts[0] is for the side from the previous corner to this one, - // allowedCuts[1] is for the side from this corner to the next one. - val allowedCuts = mutableListOf() - for (delta in 0..1) { - val (roundCutRatio, cutRatio) = cutAdjusts[(i + n - 1 + delta) % n] - allowedCuts.add( - roundedCorners[i].expectedRoundCut * roundCutRatio + - (roundedCorners[i].expectedCut - roundedCorners[i].expectedRoundCut) * cutRatio - ) - } - corners.add( - roundedCorners[i].getCubics( - allowedCut0 = allowedCuts[0], - allowedCut1 = allowedCuts[1] - ) - ) - } - // Finally, store the calculated cubics. This includes all of the rounded corners - // from above, along with new cubics representing the edges between those corners. - val tempFeatures = mutableListOf() - for (i in 0 until n) { - // Determine whether corner at this vertex is concave or convex, based on the - // relationship of the prev->curr/curr->next vectors - // Note that these indices are for pairs of values (points), they need to be - // doubled to access the xy values in the vertices float array - val prevVtxIndex = (i + n - 1) % n - val nextVtxIndex = (i + 1) % n - val currVertex = Offset(vertices[i * 2], vertices[i * 2 + 1]) - val prevVertex = Offset(vertices[prevVtxIndex * 2], vertices[prevVtxIndex * 2 + 1]) - val nextVertex = Offset(vertices[nextVtxIndex * 2], vertices[nextVtxIndex * 2 + 1]) - val convex = (currVertex - prevVertex).clockwise(nextVertex - currVertex) - tempFeatures.add( - Feature.Corner( - corners[i], currVertex, roundedCorners[i].center, - convex - ) - ) - tempFeatures.add( - Feature.Edge( - listOf( - Cubic.straightLine( - corners[i].last().anchor1X, corners[i].last().anchor1Y, - corners[(i + 1) % n].first().anchor0X, corners[(i + 1) % n].first().anchor0Y - ) - ) - ) - ) - } - - val (cx, cy) = if (centerX == Float.MIN_VALUE || centerY == Float.MIN_VALUE) { - calculateCenter(vertices) - } else { - Offset(centerX, centerY) - } - return RoundedPolygon(tempFeatures, cx, cy) -} - -/** - * Calculates an estimated center position for the polygon, returning it. - * This function should only be called if the center is not already calculated or provided. - * The Polygon constructor which takes `numVertices` calculates its own center, since it - * knows exactly where it is centered, at (0, 0). - * - * Note that this center will be transformed whenever the shape itself is transformed. - * Any transforms that occur before the center is calculated will be taken into account - * automatically since the center calculation is an average of the current location of - * all cubic anchor points. - */ -private fun calculateCenter(vertices: FloatArray): Offset { - var cumulativeX = 0f - var cumulativeY = 0f - var index = 0 - while (index < vertices.size) { - cumulativeX += vertices[index++] - cumulativeY += vertices[index++] - } - return Offset(cumulativeX / vertices.size / 2, cumulativeY / vertices.size / 2) -} - -/** - * Private utility class that holds the information about each corner in a polygon. The shape - * of the corner can be returned by calling the [getCubics] function, which will return a list - * of curves representing the corner geometry. The shape of the corner depends on the [rounding] - * constructor parameter. - * - * If rounding is null, there is no rounding; the corner will simply be a single point at [p1]. - * This point will be represented by a [Cubic] of length 0 at that point. - * - * If rounding is not null, the corner will be rounded either with a curve approximating a circular - * arc of the radius specified in [rounding], or with three curves if [rounding] has a nonzero - * smoothing parameter. These three curves are a circular arc in the middle and two symmetrical - * flanking curves on either side. The smoothing parameter determines the curvature of the - * flanking curves. - * - * This is a class because we usually need to do the work in 2 steps, and prefer to keep state - * between: first we determine how much we want to cut to comply with the parameters, then we are - * given how much we can actually cut (because of space restrictions outside this corner) - * - * @param p0 the vertex before the one being rounded - * @param p1 the vertex of this rounded corner - * @param p2 the vertex after the one being rounded - * @param rounding the optional parameters specifying how this corner should be rounded - */ -private class RoundedCorner( - val p0: Offset, - val p1: Offset, - val p2: Offset, - val rounding: CornerRounding? = null -) { - val d1 = (p0 - p1).getDirection() - val d2 = (p2 - p1).getDirection() - val cornerRadius = rounding?.radius ?: 0f - val smoothing = rounding?.smoothing ?: 0f - - // cosine of angle at p1 is dot product of unit vectors to the other two vertices - val cosAngle = d1.dotProduct(d2) - - // identity: sin^2 + cos^2 = 1 - // sinAngle gives us the intersection - val sinAngle = sqrt(1 - square(cosAngle)) - - // How much we need to cut, as measured on a side, to get the required radius - // calculating where the rounding circle hits the edge - // This uses the identity of tan(A/2) = sinA/(1 + cosA), where tan(A/2) = radius/cut - val expectedRoundCut = - if (sinAngle > 1e-3) { - cornerRadius * (cosAngle + 1) / sinAngle - } else { - 0f - } - - // smoothing changes the actual cut. 0 is same as expectedRoundCut, 1 doubles it - val expectedCut: Float - get() = ((1 + smoothing) * expectedRoundCut) - - // the center of the circle approximated by the rounding curve (or the middle of the three - // curves if smoothing is requested). The center is the same as p0 if there is no rounding. - var center: Offset = Offset(0f, 0f) - - fun getCubics(allowedCut0: Float, allowedCut1: Float = allowedCut0): - List { - // We use the minimum of both cuts to determine the radius, but if there is more space - // in one side we can use it for smoothing. - val allowedCut = min(allowedCut0, allowedCut1) - // Nothing to do, just use lines, or a point - if (expectedRoundCut < DistanceEpsilon || - allowedCut < DistanceEpsilon || - cornerRadius < DistanceEpsilon - ) { - center = p1 - return listOf(Cubic.straightLine(p1.x, p1.y, p1.x, p1.y)) - } - // How much of the cut is required for the rounding part. - val actualRoundCut = min(allowedCut, expectedRoundCut) - // We have two smoothing values, one for each side of the vertex - // Space is used for rounding values first. If there is space left over, then we - // apply smoothing, if it was requested - val actualSmoothing0 = calculateActualSmoothingValue(allowedCut0) - val actualSmoothing1 = calculateActualSmoothingValue(allowedCut1) - // Scale the radius if needed - val actualR = cornerRadius * actualRoundCut / expectedRoundCut - // Distance from the corner (p1) to the center - val centerDistance = sqrt(square(actualR) + square(actualRoundCut)) - // Center of the arc we will use for rounding - center = p1 + ((d1 + d2) / 2f).getDirection() * centerDistance - val circleIntersection0 = p1 + d1 * actualRoundCut - val circleIntersection2 = p1 + d2 * actualRoundCut - val flanking0 = computeFlankingCurve( - actualRoundCut, actualSmoothing0, p1, p0, - circleIntersection0, circleIntersection2, center, actualR - ) - val flanking2 = computeFlankingCurve( - actualRoundCut, actualSmoothing1, p1, p2, - circleIntersection2, circleIntersection0, center, actualR - ).reverse() - return listOf( - flanking0, - Cubic.circularArc( - center.x, center.y, flanking0.anchor1X, flanking0.anchor1Y, - flanking2.anchor0X, flanking2.anchor0Y - ), - flanking2 - ) - } - - /** - * If allowedCut (the amount we are able to cut) is greater than the expected cut - * (without smoothing applied yet), then there is room to apply smoothing and we - * calculate the actual smoothing value here. - */ - private fun calculateActualSmoothingValue(allowedCut: Float): Float { - return if (allowedCut > expectedCut) { - smoothing - } else if (allowedCut > expectedRoundCut) { - smoothing * (allowedCut - expectedRoundCut) / (expectedCut - expectedRoundCut) - } else { - 0f - } - } - - /** - * Compute a Bezier to connect the linear segment defined by corner and sideStart - * with the circular segment defined by circleCenter, circleSegmentIntersection, - * otherCircleSegmentIntersection and actualR. - * The bezier will start at the linear segment and end on the circular segment. - * - * @param actualRoundCut How much we are cutting of the corner to add the circular segment - * (this is before smoothing, that will cut some more). - * @param actualSmoothingValues How much we want to smooth (this is the smooth parameter, - * adjusted down if there is not enough room). - * @param corner The point at which the linear side ends - * @param sideStart The point at which the linear side starts - * @param circleSegmentIntersection The point at which the linear side and the circle intersect. - * @param otherCircleSegmentIntersection The point at which the opposing linear side and the - * circle intersect. - * @param circleCenter The center of the circle. - * @param actualR The radius of the circle. - * - * @return a Bezier cubic curve that connects from the (cut) linear side and the (cut) circular - * segment in a smooth way. - */ - private fun computeFlankingCurve( - actualRoundCut: Float, - actualSmoothingValues: Float, - corner: Offset, - sideStart: Offset, - circleSegmentIntersection: Offset, - otherCircleSegmentIntersection: Offset, - circleCenter: Offset, - actualR: Float - ): Cubic { - // sideStart is the anchor, 'anchor' is actual control point - val sideDirection = (sideStart - corner).getDirection() - val curveStart = corner + sideDirection * actualRoundCut * (1 + actualSmoothingValues) - // We use an approximation to cut a part of the circle section proportional to 1 - smooth, - // When smooth = 0, we take the full section, when smooth = 1, we take nothing. - // TODO: revisit this, it can be problematic as it approaches 180 degrees - val p = interpolate( - circleSegmentIntersection, - (circleSegmentIntersection + otherCircleSegmentIntersection) / 2f, - actualSmoothingValues - ) - // The flanking curve ends on the circle - val curveEnd = circleCenter + - directionVector(p.x - circleCenter.x, p.y - circleCenter.y) * actualR - // The anchor on the circle segment side is in the intersection between the tangent to the - // circle in the circle/flanking curve boundary and the linear segment. - val circleTangent = (curveEnd - circleCenter).rotate90() - val anchorEnd = lineIntersection(sideStart, sideDirection, curveEnd, circleTangent) - ?: circleSegmentIntersection - // From what remains, we pick a point for the start anchor. - // 2/3 seems to come from design tools? - val anchorStart = (curveStart + anchorEnd * 2f) / 3f - return Cubic(curveStart, anchorStart, anchorEnd, curveEnd) - } - - /** - * Returns the intersection point of the two lines d0->d1 and p0->p1, or null if the - * lines do not intersect - */ - private fun lineIntersection(p0: Offset, d0: Offset, p1: Offset, d1: Offset): Offset? { - val rotatedD1 = d1.rotate90() - val den = d0.dotProduct(rotatedD1) - if (abs(den) < DistanceEpsilon) return null - val num = (p1 - p0).dotProduct(rotatedD1) - // Also check the relative value. This is equivalent to abs(den/num) < DistanceEpsilon, - // but avoid doing a division - if (abs(den) < DistanceEpsilon * abs(num)) return null - val k = num / den - return p0 + d0 * k - } -} - -private fun verticesFromNumVerts( - numVertices: Int, - radius: Float, - centerX: Float, - centerY: Float -): FloatArray { - val result = FloatArray(numVertices * 2) - var arrayIndex = 0 - for (i in 0 until numVertices) { - val vertex = radialToCartesian(radius, (FloatPi / numVertices * 2 * i)) + - Offset(centerX, centerY) - result[arrayIndex++] = vertex.x - result[arrayIndex++] = vertex.y - } - return result -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +// +///* +// * Copyright 2022 The Android Open Source Project +// * +// * Licensed under the Apache License, Version 2.0 (the "License"); +// * you may not use this file except in compliance with the License. +// * You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, software +// * distributed under the License is distributed on an "AS IS" BASIS, +// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// * See the License for the specific language governing permissions and +// * limitations under the License. +// */ +// +//import androidx.compose.ui.geometry.Offset +//import kotlin.math.abs +//import kotlin.math.max +//import kotlin.math.min +//import kotlin.math.sqrt +// +///** +// * The RoundedPolygon class allows simple construction of polygonal shapes with optional rounding +// * at the vertices. Polygons can be constructed with either the number of vertices +// * desired or an ordered list of vertices. +// * +// */ +//class RoundedPolygon internal constructor( +// internal val features: List, +// val centerX: Float, +// val centerY: Float +//) { +// /** +// * A flattened version of the [Feature]s, as a List. +// */ +// val cubics = buildList { +// // The first/last mechanism here ensures that the final anchor point in the shape +// // exactly matches the first anchor point. There can be rendering artifacts introduced +// // by those points being slightly off, even by much less than a pixel +// var firstCubic: Cubic? = null +// var lastCubic: Cubic? = null +// var firstFeatureSplitStart: List? = null +// var firstFeatureSplitEnd: List? = null +// if (features.size > 0 && features[0].cubics.size == 3) { +// val centerCubic = features[0].cubics[1] +// val (start, end) = centerCubic.split(.5f) +// firstFeatureSplitStart = mutableListOf(features[0].cubics[0], start) +// firstFeatureSplitEnd = mutableListOf(end, features[0].cubics[2]) +// } +// // iterating one past the features list size allows us to insert the initial split +// // cubic if it exists +// for (i in 0..features.size) { +// val featureCubics = if (i == 0 && firstFeatureSplitEnd != null) firstFeatureSplitEnd +// else if (i == features.size) { +// if (firstFeatureSplitStart != null) firstFeatureSplitStart +// else break +// } else features[i].cubics +// for (j in featureCubics.indices) { +// // Skip zero-length curves; they add nothing and can trigger rendering artifacts +// val cubic = featureCubics[j] +// if (!cubic.zeroLength()) { +// if (lastCubic != null) add(lastCubic) +// lastCubic = cubic +// if (firstCubic == null) firstCubic = cubic +// } else { +// if (lastCubic != null) { +// // Dropping several zero-ish length curves in a row can lead to +// // enough discontinuity to throw an exception later, even though the +// // distances are quite small. Account for that by making the last +// // cubic use the latest anchor point, always. +// lastCubic.points[6] = cubic.anchor1X +// lastCubic.points[7] = cubic.anchor1Y +// } +// } +// } +// } +// if (lastCubic != null && firstCubic != null) add(Cubic( +// lastCubic.anchor0X, lastCubic.anchor0Y, lastCubic.control0X, lastCubic.control0Y, +// lastCubic.control1X, lastCubic.control1Y, firstCubic.anchor0X, firstCubic.anchor0Y)) +// } +// +// init { +// var prevCubic = cubics[cubics.size - 1] +// debugLog("RoundedPolygon") { "Cubic-1 = $prevCubic" } +// for (index in cubics.indices) { +// val cubic = cubics[index] +// debugLog("RoundedPolygon") { "Cubic = $cubic" } +// if (abs(cubic.anchor0X - prevCubic.anchor1X) > DistanceEpsilon || +// abs(cubic.anchor0Y - prevCubic.anchor1Y) > DistanceEpsilon +// ) { +// debugLog("RoundedPolygon") { +// "Ix: $index | (${cubic.anchor0X},${cubic.anchor0Y}) vs " + +// "$prevCubic" +// } +// throw IllegalArgumentException( +// "RoundedPolygon must be contiguous, with the " + +// "anchor points of all curves matching the anchor points of the preceding " + +// "and succeeding cubics" +// ) +// } +// prevCubic = cubic +// } +// } +// +// /** +// * Transforms (scales/translates/etc.) this [RoundedPolygon] with the given [PointTransformer] +// * and returns a new [RoundedPolygon]. +// * This is a low level API and there should be more platform idiomatic ways to transform +// * a [RoundedPolygon] provided by the platform specific wrapper. +// * +// * @param f The [PointTransformer] used to transform this [RoundedPolygon] +// */ +// fun transformed(f: PointTransformer): RoundedPolygon { +// val center = Offset(centerX, centerY).transformed(f) +// return RoundedPolygon( +// buildList { +// for (i in features.indices) { +// add(features[i].transformed(f)) +// } +// }, +// center.x, +// center.y +// ) +// } +// +// /** +// * Creates a new RoundedPolygon, moving and resizing this one, so it's completely inside the +// * (0, 0) -> (1, 1) square, centered if there extra space in one direction +// */ +// fun normalized(): RoundedPolygon { +// val bounds = calculateBounds() +// val width = bounds[2] - bounds[0] +// val height = bounds[3] - bounds[1] +// val side = max(width, height) +// // Center the shape if bounds are not a square +// val offsetX = (side - width) / 2 - bounds[0] /* left */ +// val offsetY = (side - height) / 2 - bounds[1] /* top */ +// return transformed { x, y -> TransformResult((x + offsetX) / side, (y + offsetY) / side) } +// } +// +// override fun toString(): String = "[RoundedPolygon." + +// " Cubics = " + cubics.joinToString() + +// " || Features = " + features.joinToString() + +// " || Center = ($centerX, $centerY)]" +// +// /** +// * Like [calculateBounds], this function calculates the axis-aligned bounds of the +// * object and returns that rectangle. But this function determines the max dimension of +// * the shape (by calculating the distance from its center to the start and midpoint of +// * each curve) and returns a square which can be used to hold the object in any rotation. +// * This function can be used, for example, to calculate the max size of a UI element meant +// * to hold this shape in any rotation. +// * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be +// * created. +// * @return The axis-aligned max bounding box for this object, where the rectangles left, +// * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. +// */ +// fun calculateMaxBounds(bounds: FloatArray = FloatArray(4)): FloatArray { +// require(bounds.size >= 4) { "Required bounds size of 4" } +// var maxDistSquared = 0f +// for (i in cubics.indices) { +// val cubic = cubics[i] +// val anchorDistance = distanceSquared(cubic.anchor0X - centerX, +// cubic.anchor0Y - centerY) +// val middlePoint = cubic.pointOnCurve(.5f) +// val middleDistance = distanceSquared(middlePoint.x - centerX, +// middlePoint.y - centerY) +// maxDistSquared = max(maxDistSquared, max(anchorDistance, middleDistance)) +// } +// val distance = sqrt(maxDistSquared) +// bounds[0] = centerX - distance +// bounds[1] = centerY - distance +// bounds[2] = centerX + distance +// bounds[3] = centerY + distance +// return bounds +// } +// +// /** +// * Calculates the axis-aligned bounds of the object. +// * @param approximate when true, uses a faster calculation to create the bounding +// * box based on the min/max values of all anchor and control points that make up the shape. +// * Default value is true. +// * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be +// * created. +// * @return The axis-aligned bounding box for this object, where the rectangles left, +// * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. +// */ +// fun calculateBounds( +// bounds: FloatArray = FloatArray(4), +// approximate: Boolean = true +// ): FloatArray { +// require(bounds.size >= 4) { "Required bounds size of 4" } +// var minX = Float.MAX_VALUE +// var minY = Float.MAX_VALUE +// var maxX = Float.MIN_VALUE +// var maxY = Float.MIN_VALUE +// for (i in cubics.indices) { +// val cubic = cubics[i] +// cubic.calculateBounds(bounds, approximate = approximate) +// minX = min(minX, bounds[0]) +// minY = min(minY, bounds[1]) +// maxX = max(maxX, bounds[2]) +// maxY = max(maxY, bounds[3]) +// } +// bounds[0] = minX +// bounds[1] = minY +// bounds[2] = maxX +// bounds[3] = maxY +// return bounds +// } +// +// companion object {} +// +// override fun equals(other: Any?): Boolean { +// if (this === other) return true +// if (other !is RoundedPolygon) return false +// +// return features == other.features +// } +// +// override fun hashCode(): Int { +// return features.hashCode() +// } +//} +// +///** +// * This constructor takes the number of vertices in the resulting polygon. These vertices are +// * positioned on a virtual circle around a given center with each vertex positioned [radius] +// * distance from that center, equally spaced (with equal angles between them). If no radius +// * is supplied, the shape will be created with a default radius of 1, resulting in a shape +// * whose vertices lie on a unit circle, with width/height of 2. That default polygon will +// * probably need to be rescaled using [transformed] into the appropriate size for the UI in +// * which it will be drawn. +// * +// * The [rounding] and [perVertexRounding] parameters are optional. If not supplied, the result +// * will be a regular polygon with straight edges and unrounded corners. +// * +// * @param numVertices The number of vertices in this polygon. +// * @param radius The radius of the polygon, in pixels. This radius determines the +// * initial size of the object, but it can be transformed later by using the [transformed] function. +// * @param centerX The X coordinate of the center of the polygon, around which all vertices +// * will be placed. The default center is at (0,0). +// * @param centerY The Y coordinate of the center of the polygon, around which all vertices +// * will be placed. The default center is at (0,0). +// * @param rounding The [CornerRounding] properties of all vertices. If some vertices should +// * have different rounding properties, then use [perVertexRounding] instead. The default +// * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices +// * themselves in the final shape and not curves rounded around the vertices. +// * @param perVertexRounding The [CornerRounding] properties of every vertex. If this +// * parameter is not null, then it must have [numVertices] elements. If this parameter +// * is null, then the polygon will use the [rounding] parameter for every vertex instead. The +// * default value is null. +// * +// * @throws IllegalArgumentException If [perVertexRounding] is not null and its size is not +// * equal to [numVertices]. +// * @throws IllegalArgumentException [numVertices] must be at least 3. +// */ +//fun RoundedPolygon( +// numVertices: Int, +// radius: Float = 1f, +// centerX: Float = 0f, +// centerY: Float = 0f, +// rounding: CornerRounding = CornerRounding.Unrounded, +// perVertexRounding: List? = null +//) = RoundedPolygon( +// verticesFromNumVerts(numVertices, radius, centerX, centerY), +// rounding = rounding, +// perVertexRounding = perVertexRounding, +// centerX = centerX, +// centerY = centerY +//) +// +///** +// * Creates a copy of the given [RoundedPolygon] +// */ +//fun RoundedPolygon(source: RoundedPolygon) = +// RoundedPolygon(source.features, source.centerX, source.centerY) +// +///** +// * This function takes the vertices (either supplied or calculated, depending on the +// * constructor called), plus [CornerRounding] parameters, and creates the actual +// * [RoundedPolygon] shape, rounding around the vertices (or not) as specified. The result +// * is a list of [Cubic] curves which represent the geometry of the final shape. +// * +// * @param vertices The list of vertices in this polygon specified as pairs of x/y coordinates in +// * this FloatArray. This should be an ordered list (with the outline of the shape going from each +// * vertex to the next in order of this list), otherwise the results will be undefined. +// * @param rounding The [CornerRounding] properties of all vertices. If some vertices should +// * have different rounding properties, then use [perVertexRounding] instead. The default +// * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices +// * themselves in the final shape and not curves rounded around the vertices. +// * @param perVertexRounding The [CornerRounding] properties of all vertices. If this +// * parameter is not null, then it must have the same size as [vertices]. If this parameter +// * is null, then the polygon will use the [rounding] parameter for every vertex instead. The +// * default value is null. +// * @param centerX The X coordinate of the center of the polygon, around which all vertices +// * will be placed. The default center is at (0,0). +// * @param centerY The Y coordinate of the center of the polygon, around which all vertices +// * will be placed. The default center is at (0,0). +// * @throws IllegalArgumentException if the number of vertices is less than 3 (the [vertices] +// * parameter has less than 6 Floats). Or if the [perVertexRounding] parameter is not null and the +// * size doesn't match the number vertices. +// */ +//// TODO(performance): Update the map calls to more efficient code that doesn't allocate Iterators +//// unnecessarily. +//fun RoundedPolygon( +// vertices: FloatArray, +// rounding: CornerRounding = CornerRounding.Unrounded, +// perVertexRounding: List? = null, +// centerX: Float = Float.MIN_VALUE, +// centerY: Float = Float.MIN_VALUE +//): RoundedPolygon { +// if (vertices.size < 6) { +// throw IllegalArgumentException("Polygons must have at least 3 vertices") +// } +// if (vertices.size % 2 == 1) { +// throw IllegalArgumentException("The vertices array should have even size") +// } +// if (perVertexRounding != null && perVertexRounding.size * 2 != vertices.size) { +// throw IllegalArgumentException( +// "perVertexRounding list should be either null or " + +// "the same size as the number of vertices (vertices.size / 2)" +// ) +// } +// val corners = mutableListOf>() +// val n = vertices.size / 2 +// val roundedCorners = mutableListOf() +// for (i in 0 until n) { +// val vtxRounding = perVertexRounding?.get(i) ?: rounding +// val prevIndex = ((i + n - 1) % n) * 2 +// val nextIndex = ((i + 1) % n) * 2 +// roundedCorners.add( +// RoundedCorner( +// Offset(vertices[prevIndex], vertices[prevIndex + 1]), +// Offset(vertices[i * 2], vertices[i * 2 + 1]), +// Offset(vertices[nextIndex], vertices[nextIndex + 1]), +// vtxRounding +// ) +// ) +// } +// +// // For each side, check if we have enough space to do the cuts needed, and if not split +// // the available space, first for round cuts, then for smoothing if there is space left. +// // Each element in this list is a pair, that represent how much we can do of the cut for +// // the given side (side i goes from corner i to corner i+1), the elements of the pair are: +// // first is how much we can use of expectedRoundCut, second how much of expectedCut +// val cutAdjusts = (0 until n).map { ix -> +// val expectedRoundCut = roundedCorners[ix].expectedRoundCut + +// roundedCorners[(ix + 1) % n].expectedRoundCut +// val expectedCut = roundedCorners[ix].expectedCut + +// roundedCorners[(ix + 1) % n].expectedCut +// val vtxX = vertices[ix * 2] +// val vtxY = vertices[ix * 2 + 1] +// val nextVtxX = vertices[((ix + 1) % n) * 2] +// val nextVtxY = vertices[((ix + 1) % n) * 2 + 1] +// val sideSize = distance(vtxX - nextVtxX, vtxY - nextVtxY) +// +// // Check expectedRoundCut first, and ensure we fulfill rounding needs first for +// // both corners before using space for smoothing +// if (expectedRoundCut > sideSize) { +// // Not enough room for fully rounding, see how much we can actually do. +// sideSize / expectedRoundCut to 0f +// } else if (expectedCut > sideSize) { +// // We can do full rounding, but not full smoothing. +// 1f to (sideSize - expectedRoundCut) / (expectedCut - expectedRoundCut) +// } else { +// // There is enough room for rounding & smoothing. +// 1f to 1f +// } +// } +// // Create and store list of beziers for each [potentially] rounded corner +// for (i in 0 until n) { +// // allowedCuts[0] is for the side from the previous corner to this one, +// // allowedCuts[1] is for the side from this corner to the next one. +// val allowedCuts = mutableListOf() +// for (delta in 0..1) { +// val (roundCutRatio, cutRatio) = cutAdjusts[(i + n - 1 + delta) % n] +// allowedCuts.add( +// roundedCorners[i].expectedRoundCut * roundCutRatio + +// (roundedCorners[i].expectedCut - roundedCorners[i].expectedRoundCut) * cutRatio +// ) +// } +// corners.add( +// roundedCorners[i].getCubics( +// allowedCut0 = allowedCuts[0], +// allowedCut1 = allowedCuts[1] +// ) +// ) +// } +// // Finally, store the calculated cubics. This includes all of the rounded corners +// // from above, along with new cubics representing the edges between those corners. +// val tempFeatures = mutableListOf() +// for (i in 0 until n) { +// // Determine whether corner at this vertex is concave or convex, based on the +// // relationship of the prev->curr/curr->next vectors +// // Note that these indices are for pairs of values (points), they need to be +// // doubled to access the xy values in the vertices float array +// val prevVtxIndex = (i + n - 1) % n +// val nextVtxIndex = (i + 1) % n +// val currVertex = Offset(vertices[i * 2], vertices[i * 2 + 1]) +// val prevVertex = Offset(vertices[prevVtxIndex * 2], vertices[prevVtxIndex * 2 + 1]) +// val nextVertex = Offset(vertices[nextVtxIndex * 2], vertices[nextVtxIndex * 2 + 1]) +// val convex = (currVertex - prevVertex).clockwise(nextVertex - currVertex) +// tempFeatures.add( +// Feature.Corner( +// corners[i], currVertex, roundedCorners[i].center, +// convex +// ) +// ) +// tempFeatures.add( +// Feature.Edge( +// listOf( +// Cubic.straightLine( +// corners[i].last().anchor1X, corners[i].last().anchor1Y, +// corners[(i + 1) % n].first().anchor0X, corners[(i + 1) % n].first().anchor0Y +// ) +// ) +// ) +// ) +// } +// +// val (cx, cy) = if (centerX == Float.MIN_VALUE || centerY == Float.MIN_VALUE) { +// calculateCenter(vertices) +// } else { +// Offset(centerX, centerY) +// } +// return RoundedPolygon(tempFeatures, cx, cy) +//} +// +///** +// * Calculates an estimated center position for the polygon, returning it. +// * This function should only be called if the center is not already calculated or provided. +// * The Polygon constructor which takes `numVertices` calculates its own center, since it +// * knows exactly where it is centered, at (0, 0). +// * +// * Note that this center will be transformed whenever the shape itself is transformed. +// * Any transforms that occur before the center is calculated will be taken into account +// * automatically since the center calculation is an average of the current location of +// * all cubic anchor points. +// */ +//private fun calculateCenter(vertices: FloatArray): Offset { +// var cumulativeX = 0f +// var cumulativeY = 0f +// var index = 0 +// while (index < vertices.size) { +// cumulativeX += vertices[index++] +// cumulativeY += vertices[index++] +// } +// return Offset(cumulativeX / vertices.size / 2, cumulativeY / vertices.size / 2) +//} +// +///** +// * Private utility class that holds the information about each corner in a polygon. The shape +// * of the corner can be returned by calling the [getCubics] function, which will return a list +// * of curves representing the corner geometry. The shape of the corner depends on the [rounding] +// * constructor parameter. +// * +// * If rounding is null, there is no rounding; the corner will simply be a single point at [p1]. +// * This point will be represented by a [Cubic] of length 0 at that point. +// * +// * If rounding is not null, the corner will be rounded either with a curve approximating a circular +// * arc of the radius specified in [rounding], or with three curves if [rounding] has a nonzero +// * smoothing parameter. These three curves are a circular arc in the middle and two symmetrical +// * flanking curves on either side. The smoothing parameter determines the curvature of the +// * flanking curves. +// * +// * This is a class because we usually need to do the work in 2 steps, and prefer to keep state +// * between: first we determine how much we want to cut to comply with the parameters, then we are +// * given how much we can actually cut (because of space restrictions outside this corner) +// * +// * @param p0 the vertex before the one being rounded +// * @param p1 the vertex of this rounded corner +// * @param p2 the vertex after the one being rounded +// * @param rounding the optional parameters specifying how this corner should be rounded +// */ +//private class RoundedCorner( +// val p0: Offset, +// val p1: Offset, +// val p2: Offset, +// val rounding: CornerRounding? = null +//) { +// val d1 = (p0 - p1).getDirection() +// val d2 = (p2 - p1).getDirection() +// val cornerRadius = rounding?.radius ?: 0f +// val smoothing = rounding?.smoothing ?: 0f +// +// // cosine of angle at p1 is dot product of unit vectors to the other two vertices +// val cosAngle = d1.dotProduct(d2) +// +// // identity: sin^2 + cos^2 = 1 +// // sinAngle gives us the intersection +// val sinAngle = sqrt(1 - square(cosAngle)) +// +// // How much we need to cut, as measured on a side, to get the required radius +// // calculating where the rounding circle hits the edge +// // This uses the identity of tan(A/2) = sinA/(1 + cosA), where tan(A/2) = radius/cut +// val expectedRoundCut = +// if (sinAngle > 1e-3) { +// cornerRadius * (cosAngle + 1) / sinAngle +// } else { +// 0f +// } +// +// // smoothing changes the actual cut. 0 is same as expectedRoundCut, 1 doubles it +// val expectedCut: Float +// get() = ((1 + smoothing) * expectedRoundCut) +// +// // the center of the circle approximated by the rounding curve (or the middle of the three +// // curves if smoothing is requested). The center is the same as p0 if there is no rounding. +// var center: Offset = Offset(0f, 0f) +// +// fun getCubics(allowedCut0: Float, allowedCut1: Float = allowedCut0): +// List { +// // We use the minimum of both cuts to determine the radius, but if there is more space +// // in one side we can use it for smoothing. +// val allowedCut = min(allowedCut0, allowedCut1) +// // Nothing to do, just use lines, or a point +// if (expectedRoundCut < DistanceEpsilon || +// allowedCut < DistanceEpsilon || +// cornerRadius < DistanceEpsilon +// ) { +// center = p1 +// return listOf(Cubic.straightLine(p1.x, p1.y, p1.x, p1.y)) +// } +// // How much of the cut is required for the rounding part. +// val actualRoundCut = min(allowedCut, expectedRoundCut) +// // We have two smoothing values, one for each side of the vertex +// // Space is used for rounding values first. If there is space left over, then we +// // apply smoothing, if it was requested +// val actualSmoothing0 = calculateActualSmoothingValue(allowedCut0) +// val actualSmoothing1 = calculateActualSmoothingValue(allowedCut1) +// // Scale the radius if needed +// val actualR = cornerRadius * actualRoundCut / expectedRoundCut +// // Distance from the corner (p1) to the center +// val centerDistance = sqrt(square(actualR) + square(actualRoundCut)) +// // Center of the arc we will use for rounding +// center = p1 + ((d1 + d2) / 2f).getDirection() * centerDistance +// val circleIntersection0 = p1 + d1 * actualRoundCut +// val circleIntersection2 = p1 + d2 * actualRoundCut +// val flanking0 = computeFlankingCurve( +// actualRoundCut, actualSmoothing0, p1, p0, +// circleIntersection0, circleIntersection2, center, actualR +// ) +// val flanking2 = computeFlankingCurve( +// actualRoundCut, actualSmoothing1, p1, p2, +// circleIntersection2, circleIntersection0, center, actualR +// ).reverse() +// return listOf( +// flanking0, +// Cubic.circularArc( +// center.x, center.y, flanking0.anchor1X, flanking0.anchor1Y, +// flanking2.anchor0X, flanking2.anchor0Y +// ), +// flanking2 +// ) +// } +// +// /** +// * If allowedCut (the amount we are able to cut) is greater than the expected cut +// * (without smoothing applied yet), then there is room to apply smoothing and we +// * calculate the actual smoothing value here. +// */ +// private fun calculateActualSmoothingValue(allowedCut: Float): Float { +// return if (allowedCut > expectedCut) { +// smoothing +// } else if (allowedCut > expectedRoundCut) { +// smoothing * (allowedCut - expectedRoundCut) / (expectedCut - expectedRoundCut) +// } else { +// 0f +// } +// } +// +// /** +// * Compute a Bezier to connect the linear segment defined by corner and sideStart +// * with the circular segment defined by circleCenter, circleSegmentIntersection, +// * otherCircleSegmentIntersection and actualR. +// * The bezier will start at the linear segment and end on the circular segment. +// * +// * @param actualRoundCut How much we are cutting of the corner to add the circular segment +// * (this is before smoothing, that will cut some more). +// * @param actualSmoothingValues How much we want to smooth (this is the smooth parameter, +// * adjusted down if there is not enough room). +// * @param corner The point at which the linear side ends +// * @param sideStart The point at which the linear side starts +// * @param circleSegmentIntersection The point at which the linear side and the circle intersect. +// * @param otherCircleSegmentIntersection The point at which the opposing linear side and the +// * circle intersect. +// * @param circleCenter The center of the circle. +// * @param actualR The radius of the circle. +// * +// * @return a Bezier cubic curve that connects from the (cut) linear side and the (cut) circular +// * segment in a smooth way. +// */ +// private fun computeFlankingCurve( +// actualRoundCut: Float, +// actualSmoothingValues: Float, +// corner: Offset, +// sideStart: Offset, +// circleSegmentIntersection: Offset, +// otherCircleSegmentIntersection: Offset, +// circleCenter: Offset, +// actualR: Float +// ): Cubic { +// // sideStart is the anchor, 'anchor' is actual control point +// val sideDirection = (sideStart - corner).getDirection() +// val curveStart = corner + sideDirection * actualRoundCut * (1 + actualSmoothingValues) +// // We use an approximation to cut a part of the circle section proportional to 1 - smooth, +// // When smooth = 0, we take the full section, when smooth = 1, we take nothing. +// // TODO: revisit this, it can be problematic as it approaches 180 degrees +// val p = interpolate( +// circleSegmentIntersection, +// (circleSegmentIntersection + otherCircleSegmentIntersection) / 2f, +// actualSmoothingValues +// ) +// // The flanking curve ends on the circle +// val curveEnd = circleCenter + +// directionVector(p.x - circleCenter.x, p.y - circleCenter.y) * actualR +// // The anchor on the circle segment side is in the intersection between the tangent to the +// // circle in the circle/flanking curve boundary and the linear segment. +// val circleTangent = (curveEnd - circleCenter).rotate90() +// val anchorEnd = lineIntersection(sideStart, sideDirection, curveEnd, circleTangent) +// ?: circleSegmentIntersection +// // From what remains, we pick a point for the start anchor. +// // 2/3 seems to come from design tools? +// val anchorStart = (curveStart + anchorEnd * 2f) / 3f +// return Cubic(curveStart, anchorStart, anchorEnd, curveEnd) +// } +// +// /** +// * Returns the intersection point of the two lines d0->d1 and p0->p1, or null if the +// * lines do not intersect +// */ +// private fun lineIntersection(p0: Offset, d0: Offset, p1: Offset, d1: Offset): Offset? { +// val rotatedD1 = d1.rotate90() +// val den = d0.dotProduct(rotatedD1) +// if (abs(den) < DistanceEpsilon) return null +// val num = (p1 - p0).dotProduct(rotatedD1) +// // Also check the relative value. This is equivalent to abs(den/num) < DistanceEpsilon, +// // but avoid doing a division +// if (abs(den) < DistanceEpsilon * abs(num)) return null +// val k = num / den +// return p0 + d0 * k +// } +//} +// +//private fun verticesFromNumVerts( +// numVertices: Int, +// radius: Float, +// centerX: Float, +// centerY: Float +//): FloatArray { +// val result = FloatArray(numVertices * 2) +// var arrayIndex = 0 +// for (i in 0 until numVertices) { +// val vertex = radialToCartesian(radius, (FloatPi / numVertices * 2 * i)) + +// Offset(centerX, centerY) +// result[arrayIndex++] = vertex.x +// result[arrayIndex++] = vertex.y +// } +// return result +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt deleted file mode 100644 index 65f884e4..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Urils.kt +++ /dev/null @@ -1,119 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -import androidx.compose.ui.geometry.Offset -import kotlin.math.PI -import kotlin.math.atan2 -import kotlin.math.cos -import kotlin.math.sin -import kotlin.math.sqrt - -/** - * This class has all internal methods, used by Polygon, Morph, etc. - */ - -internal fun distance(x: Float, y: Float) = sqrt(x * x + y * y) - -internal fun distanceSquared(x: Float, y: Float) = x * x + y * y - -/** - * Returns unit vector representing the direction to this point from (0, 0) - */ -internal fun directionVector(x: Float, y: Float): Offset { - val d = distance(x, y) - require(d > 0f) { "Required distance greater than zero" } - return Offset(x / d, y / d) -} - -internal fun directionVector(angleRadians: Float) = Offset(cos(angleRadians), sin(angleRadians)) - -internal fun angle(x: Float, y: Float) = ((atan2(y, x) + TwoPi) % TwoPi) - -internal fun radialToCartesian(radius: Float, angleRadians: Float, center: Offset = Zero) = - directionVector(angleRadians) * radius + center - -/** - * These epsilon values are used internally to determine when two points are the same, within - * some reasonable roundoff error. The distance epsilon is smaller, with the intention that the - * roundoff should not be larger than a pixel on any reasonable sized display. - */ -internal const val DistanceEpsilon = 1e-4f -internal const val AngleEpsilon = 1e-6f - -internal fun Offset.rotate90() = Offset(-y, x) - -internal val Zero = Offset(0f, 0f) - -internal val FloatPi = PI.toFloat() - -internal val TwoPi: Float = 2 * PI.toFloat() - -internal fun square(x: Float) = x * x - -/** - * Linearly interpolate between [start] and [stop] with [fraction] fraction between them. - */ -internal fun interpolate(start: Float, stop: Float, fraction: Float): Float { - return (1 - fraction) * start + fraction * stop -} - -internal fun positiveModulo(num: Float, mod: Float) = (num % mod + mod) % mod - -/* - * Does a ternary search in [v0..v1] to find the parameter that minimizes the given function. - * Stops when the search space size is reduced below the given tolerance. - * - * NTS: Does it make sense to split the function f in 2, one to generate a candidate, of a custom - * type T (i.e. (Float) -> T), and one to evaluate it ( (T) -> Float )? - */ -internal fun findMinimum( - v0: Float, - v1: Float, - tolerance: Float = 1e-3f, - f: FindMinimumFunction -): Float { - var a = v0 - var b = v1 - while (b - a > tolerance) { - val c1 = (2 * a + b) / 3 - val c2 = (2 * b + a) / 3 - if (f.invoke(c1) < f.invoke(c2)) { - b = c2 - } else { - a = c1 - } - } - return (a + b) / 2 -} - -/** - * A functional interface for computing a Float value when finding the minimum at [findMinimum]. - */ -internal fun interface FindMinimumFunction { - fun invoke(value: Float): Float -} - -internal const val DEBUG = false - -internal inline fun debugLog(tag: String, messageFactory: () -> String) { - // TODO: Re-implement properly when the library goes KMP using expect/actual - if (DEBUG) { - println("$tag: ${messageFactory()}") - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt index 287259de..a6d6adca 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt @@ -1,115 +1,115 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util - -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.PathMeasure -import androidx.compose.ui.graphics.PathOperation -import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath -import kotlin.math.abs -import kotlin.math.max -import kotlin.math.min - -internal object Utils { - - fun applyTrimPathIfNeeded( - path: Path, - trimPath: TrimPath, - time : Int - ) { - if (trimPath.hidden) { - return - } - val start: Float = trimPath.start.interpolated(time) - val end: Float = trimPath.end.interpolated(time) - val offset: Float = trimPath.offset.interpolated(time) - applyTrimPathIfNeeded( - path, - start / 100f, - end / 100f, - offset / 360f - ) - } - - private val pathMeasure = PathMeasure() - private val tempPath = Path() - private val tempPath2 = Path() - - fun applyTrimPathIfNeeded( - path: Path, startValue: Float, endValue: Float, offsetValue: Float - ) { - - pathMeasure.setPath(path, false) - - val length: Float = pathMeasure.length - - if (startValue == 1f && endValue == 0f) { - return - } - if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { - return - } - - val start = length * startValue - val end = length * endValue - var newStart = min(start.toDouble(), end.toDouble()).toFloat() - var newEnd = max(start.toDouble(), end.toDouble()).toFloat() - - val offset = offsetValue * length - newStart += offset - newEnd += offset - - // If the trim path has rotated around the path, we need to shift it back. - if (newStart >= length && newEnd >= length) { - newStart = floorMod(newStart, length).toFloat() - newEnd = floorMod(newEnd, length).toFloat() - } - - if (newStart < 0) { - newStart = floorMod(newStart, length).toFloat() - } - if (newEnd < 0) { - newEnd = floorMod(newEnd, length).toFloat() - } - - // If the start and end are equals, return an empty path. - if (newStart == newEnd) { - path.reset() - return - } - - if (newStart >= newEnd) { - newStart -= length - } - - tempPath.reset() - pathMeasure.getSegment( - newStart, - newEnd, - tempPath, - true - ) - - if (newEnd > length) { - tempPath2.reset() - pathMeasure.getSegment( - 0f, - newEnd % length, - tempPath2, - true - ) - tempPath.addPath(tempPath2) - } else if (newStart < 0) { - tempPath2.reset() - pathMeasure.getSegment( - length + newStart, - length, - tempPath2, - true - ) - tempPath.addPath(tempPath2) - } - - path.reset() - path.set(tempPath) - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +// +//import androidx.compose.ui.graphics.Path +//import androidx.compose.ui.graphics.PathMeasure +//import androidx.compose.ui.graphics.PathOperation +//import io.github.alexzhirkevich.compottie.internal.platform.set +//import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +//import kotlin.math.abs +//import kotlin.math.max +//import kotlin.math.min +// +//internal object Utils { +// +// fun applyTrimPathIfNeeded( +// path: Path, +// trimPath: TrimPath, +// time : Int +// ) { +// if (trimPath.hidden) { +// return +// } +// val start: Float = trimPath.start.interpolated(time) +// val end: Float = trimPath.end.interpolated(time) +// val offset: Float = trimPath.offset.interpolated(time) +// applyTrimPathIfNeeded( +// path, +// start / 100f, +// end / 100f, +// offset / 360f +// ) +// } +// +// private val pathMeasure = PathMeasure() +// private val tempPath = Path() +// private val tempPath2 = Path() +// +// fun applyTrimPathIfNeeded( +// path: Path, startValue: Float, endValue: Float, offsetValue: Float +// ) { +// +// pathMeasure.setPath(path, false) +// +// val length: Float = pathMeasure.length +// +// if (startValue == 1f && endValue == 0f) { +// return +// } +// if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { +// return +// } +// +// val start = length * startValue +// val end = length * endValue +// var newStart = min(start.toDouble(), end.toDouble()).toFloat() +// var newEnd = max(start.toDouble(), end.toDouble()).toFloat() +// +// val offset = offsetValue * length +// newStart += offset +// newEnd += offset +// +// // If the trim path has rotated around the path, we need to shift it back. +// if (newStart >= length && newEnd >= length) { +// newStart = floorMod(newStart, length).toFloat() +// newEnd = floorMod(newEnd, length).toFloat() +// } +// +// if (newStart < 0) { +// newStart = floorMod(newStart, length).toFloat() +// } +// if (newEnd < 0) { +// newEnd = floorMod(newEnd, length).toFloat() +// } +// +// // If the start and end are equals, return an empty path. +// if (newStart == newEnd) { +// path.reset() +// return +// } +// +// if (newStart >= newEnd) { +// newStart -= length +// } +// +// tempPath.reset() +// pathMeasure.getSegment( +// newStart, +// newEnd, +// tempPath, +// true +// ) +// +// if (newEnd > length) { +// tempPath2.reset() +// pathMeasure.getSegment( +// 0f, +// newEnd % length, +// tempPath2, +// true +// ) +// tempPath.addPath(tempPath2) +// } else if (newStart < 0) { +// tempPath2.reset() +// pathMeasure.getSegment( +// length + newStart, +// length, +// tempPath2, +// true +// ) +// tempPath.addPath(tempPath2) +// } +// +// path.reset() +// path.set(tempPath) +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt new file mode 100644 index 00000000..c996ed37 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt @@ -0,0 +1,9 @@ +package io.github.alexzhirkevich.compottie.internal.utils + +import kotlin.math.PI + +object Math { + fun toRadians(degree : Float) : Float { + return (degree * PI / 180).toFloat() + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt new file mode 100644 index 00000000..1c1d892c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -0,0 +1,23 @@ +package io.github.alexzhirkevich.compottie.internal.utils + +import androidx.compose.ui.graphics.Matrix + +fun Matrix.preTranslate(x : Float, y : Float) { + return translate(x, y) +} + +fun Matrix.preConcat(other : Matrix) { + return timesAssign(other) +} + +fun Matrix.setValues(values : FloatArray){ + values.copyInto(this.values) +} + +fun Matrix.preRotate(degree : Float) { + return rotateZ(degree) +} + +fun Matrix.preScale(x : Float, y : Float) { + return scale(x,y) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/MiscUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt similarity index 83% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/MiscUtil.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt index 608df8ae..ec402fe2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/MiscUtil.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +package io.github.alexzhirkevich.compottie.internal.utils fun floorMod(x: Float, y: Float): Int { return floorMod(x.toInt(), y.toInt()) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt new file mode 100644 index 00000000..613f8c55 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt @@ -0,0 +1,29 @@ +package io.github.alexzhirkevich.compottie.internal.utils + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Rect + +fun MutableRect.union(other : MutableRect){ + if ((left < right) && (top < bottom)) { + if ((this.left < this.right) && (this.top < this.bottom)) { + if (this.left > left) this.left = left; + if (this.top > top) this.top = top; + if (this.right < right) this.right = right; + if (this.bottom < bottom) this.bottom = bottom; + } else { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + } +} + +fun MutableRect.set(other : MutableRect){ + set(left = other.left, top = other.top, right = other.right, bottom = other.bottom) +} + +fun MutableRect.set(other : Rect){ + set(left = other.left, top = other.top, right = other.right, bottom = other.bottom) +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt new file mode 100644 index 00000000..7d8b1b30 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -0,0 +1,101 @@ +package io.github.alexzhirkevich.compottie.internal.utils + +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure +import io.github.alexzhirkevich.compottie.internal.platform.set +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min + +object Utils { + + private val pathMeasure = ExtendedPathMeasure() + private val tempPath = Path() + private val tempPath2 = Path() + + fun saveLayerCompat( + canvas: Canvas, + rect: Rect, + paint: Paint, + ) { + canvas.saveLayer(rect, paint) + } + + fun applyTrimPathIfNeeded( + path: Path, startValue: Float, endValue: Float, offsetValue: Float, + ) { + + pathMeasure.setPath(path, false) + + val length: Float = pathMeasure.length + if (startValue == 1f && endValue == 0f) { + return + } + if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { + return + } + val start = length * startValue + val end = length * endValue + var newStart = min(start.toDouble(), end.toDouble()).toFloat() + var newEnd = max(start.toDouble(), end.toDouble()).toFloat() + + val offset = offsetValue * length + newStart += offset + newEnd += offset + + // If the trim path has rotated around the path, we need to shift it back. + if (newStart >= length && newEnd >= length) { + newStart = floorMod(newStart, length).toFloat() + newEnd = floorMod(newEnd, length).toFloat() + } + + if (newStart < 0) { + newStart = floorMod(newStart, length).toFloat() + } + if (newEnd < 0) { + newEnd = floorMod(newEnd, length).toFloat() + } + + // If the start and end are equals, return an empty path. + if (newStart == newEnd) { + path.reset() + return + } + + if (newStart >= newEnd) { + newStart -= length + } + + tempPath.reset() + pathMeasure.getSegment( + newStart, + newEnd, + tempPath, + true + ) + + if (newEnd > length) { + tempPath2.reset() + pathMeasure.getSegment( + 0f, + newEnd % length, + tempPath2, + true + ) + tempPath.addPath(tempPath2) + } else if (newStart < 0) { + tempPath2.reset() + pathMeasure.getSegment( + length + newStart, + length, + tempPath2, + true + ) + tempPath.addPath(tempPath2) + } + path.set(tempPath) + } +} \ No newline at end of file diff --git a/example/androidapp/src/main/java/MainActivity.kt b/example/androidapp/src/main/java/MainActivity.kt deleted file mode 100644 index 852eedd3..00000000 --- a/example/androidapp/src/main/java/MainActivity.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.github.alexzhirkevich.compottie.example.android - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import App - -class MainActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContent { - App() - } - } -} \ No newline at end of file diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt new file mode 100644 index 00000000..cd8ea4b3 --- /dev/null +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -0,0 +1,36 @@ +package io.github.alexzhirkevich.compottie.example.android + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import App +import android.app.Application +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.asImageBitmap +import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.launch + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + context = applicationContext as Application + + lifecycleScope.launch { + val bytes = renderComposeScene(256,256){ + Box(Modifier.fillMaxSize().background(Color.Red)) + } + + val bitmap = BitmapFactory.decodeByteArray(bytes,0, bytes.size) + setContent { + Image(bitmap = bitmap.asImageBitmap(), contentDescription = null) + } + } + } +} \ No newline at end of file From b9faa620c1065c5a2331e2a2d85604c6e703164e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 29 May 2024 03:40:11 +0300 Subject: [PATCH 003/100] wip --- .../platform/PlatformShader.android.kt | 50 +++ .../alexzhirkevich/compottie/LottiePainter.kt | 83 +++-- .../internal/content/ContentGroup.kt | 22 +- .../internal/content/PathAndDrawingContext.kt | 4 + .../compottie/internal/content/PathContent.kt | 5 +- .../internal/graphics/ShapeLayerDraw.kt | 20 -- .../internal/platform/PlatformShader.kt | 27 ++ .../compottie/internal/schema/Json.kt | 14 +- .../internal/schema/ModifierContent.kt | 1 - ...ottieTransform.kt => AnimatedTransform.kt} | 75 ++-- .../internal/schema/helpers/Transform.kt | 8 +- .../internal/schema/layers/BaseLayer.kt | 8 +- .../internal/schema/layers/ShapeLayer.kt | 4 - .../schema/properties/AnimatedColor.kt | 23 +- .../schema/properties/AnimatedGradient.kt | 68 ++++ .../schema/properties/GradientColors.kt | 20 -- .../internal/schema/properties/Keyframe.kt | 131 ++++++- .../properties/ShapePropertyKeyframe.kt | 7 +- .../schema/properties/ValueKeyframe.kt | 37 +- .../schema/properties/VectorKeyframe.kt | 67 +--- .../internal/schema/shapes/BaseStroke.kt | 13 +- .../internal/schema/shapes/Ellipse.kt | 54 ++- .../compottie/internal/schema/shapes/Fill.kt | 78 +++- .../internal/schema/shapes/GradientFill.kt | 129 +++++-- .../internal/schema/shapes/GradientStroke.kt | 71 +--- .../compottie/internal/schema/shapes/Group.kt | 84 ----- .../internal/schema/shapes/GroupShape.kt | 33 ++ .../compottie/internal/schema/shapes/Path.kt | 106 +++--- .../compottie/internal/schema/shapes/Rect.kt | 52 +-- .../compottie/internal/schema/shapes/Round.kt | 66 ++-- .../internal/schema/shapes/SolidStroke.kt | 15 +- .../compottie/internal/schema/shapes/Star.kt | 332 +++++++++--------- .../internal/schema/shapes/TransformShape.kt | 12 +- .../compottie/internal/schema/shapes/Trim.kt | 31 -- .../internal/schema/shapes/TrimPath.kt | 6 +- .../schema/shapes/util/CompoundTrimPath.kt | 38 +- .../compottie/internal/utils/Matrix.kt | 24 +- .../compottie/internal/utils/Utils.kt | 19 +- ...asure.android.kt => PlatformPath.skiko.kt} | 0 .../internal/platform/PlatformShader.skiko.kt | 66 ++++ example/androidapp/build.gradle.kts | 8 +- .../src/main/kotlin/MainActivity.kt | 27 +- example/shared/src/commonMain/kotlin/App.kt | 10 +- gradle/libs.versions.toml | 1 + 44 files changed, 1100 insertions(+), 849 deletions(-) create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/{LottieTransform.kt => AnimatedTransform.kt} (58%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt rename compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/{PlatformPathMeasure.android.kt => PlatformPath.skiko.kt} (100%) create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt new file mode 100644 index 00000000..7667c4c4 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt @@ -0,0 +1,50 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.LinearGradientShader +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.RadialGradientShader +import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.graphics.setFrom +import androidx.compose.ui.graphics.toArgb + + +private val tempMatrix = android.graphics.Matrix() + +actual fun MakeLinearGradient( + from : Offset, + to : Offset, + colors : List, + colorStops: List, + tileMode: TileMode, + matrix: Matrix +) = LinearGradientShader( + from = from, + to = to, + colorStops = colorStops, + tileMode = tileMode, + colors = colors +).apply { + tempMatrix.setValues(matrix.values) + setLocalMatrix(tempMatrix) +} + +actual fun MakeRadialGradient( + center : Offset, + radius : Float, + colors : List, + colorStops: List, + tileMode: TileMode, + matrix: Matrix +) = RadialGradientShader( + center = center, + radius = radius, + colorStops = colorStops, + tileMode = tileMode, + colors = colors +).apply { + tempMatrix.setValues(matrix.values) + setLocalMatrix(tempMatrix) +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 98ca3986..1eee9f65 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -8,18 +8,20 @@ import androidx.compose.runtime.produceState import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment +import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.LottieCompositionResult -import io.github.alexzhirkevich.compottie.internal.graphics.draw -import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.utils.preScale +import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import kotlin.math.roundToInt @@ -61,38 +63,61 @@ private object EmptyPainter : ProgressPainter() { } private class LottiePainter( private val composition: LottieComposition, + private val clipToCompositionBounds : Boolean = true ) : ProgressPainter() { - override val intrinsicSize: Size = - Size(composition.lottieData.width.toFloat(), composition.lottieData.height.toFloat()) + override val intrinsicSize: Size = Size( + composition.lottieData.width.toFloat(), + composition.lottieData.height.toFloat() + ) override var progress: Float by mutableStateOf(0f) + private val matrix = Matrix() + + private var alpha by mutableStateOf(1f) + + override fun applyAlpha(alpha: Float): Boolean { + this.alpha = alpha + return true + } + + override fun DrawScope.onDraw() { - val dat = composition.lottieData - - val frame = (dat.outPoint * progress.coerceIn(0f, 1f) - dat.inPoint) - .coerceAtLeast(0f).roundToInt() - - val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) - val offset = Alignment.Center.align( - IntSize( - (intrinsicSize.width).roundToInt(), - (intrinsicSize.height).roundToInt() - ), - IntSize( - size.width.roundToInt(), - size.height.roundToInt() - ), - layoutDirection - ) - - scale(scale.scaleX, scale.scaleY) { - translate(offset.x.toFloat(), offset.y.toFloat()) { - dat.layers.fastForEachReversed { - when (it) { - is ShapeLayer -> it.draw(this, frame) + drawIntoCanvas { canvas -> + + matrix.reset() + + val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) + + val offset = Alignment.Center.align( + IntSize( + (intrinsicSize.width).roundToInt(), + (intrinsicSize.height).roundToInt() + ), + IntSize( + size.width.roundToInt(), + size.height.roundToInt() + ), + layoutDirection + ) + + +// matrix.preScale(scale.scaleX, scale.scaleY) +// matrix.preTranslate(offset.x.toFloat(), offset.y.toFloat()) + + val dat = composition.lottieData + + val frame = (dat.outPoint * progress.coerceIn(0f, 1f) - dat.inPoint) + .coerceAtLeast(0f).roundToInt() + + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + dat.layers.fastForEachReversed { + if (it is DrawingContent) { + it.draw(canvas, matrix, alpha, frame) + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 637a37b7..adac1448 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -7,16 +7,18 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.schema.helpers.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union internal class ContentGroup( override val name: String?, val hidden: Boolean, val contents: List, - val transform: Transform?, -) : DrawingContent, PathContent { + val transform: AnimatedTransform?, +) : PathAndDrawingContext { private val rect = MutableRect(0f,0f,0f,0f) private val offscreenRect = MutableRect(0f,0f,0f,0f) @@ -35,15 +37,14 @@ internal class ContentGroup( matrix.setFrom(parentMatrix) - if (transform != null) { - matrix *= transform.matrix(frame) + matrix.preConcat(transform.matrix(frame)) transform.opacity?.interpolated(frame)?.let { - layerAlpha *= it + layerAlpha = (layerAlpha * it/100f).coerceIn(0f,1f) } } - val isRenderingWithOffScreen = hasTwoOrMoreDrawableContent() + val isRenderingWithOffScreen = false//hasTwoOrMoreDrawableContent() if (isRenderingWithOffScreen) { offscreenRect.set(0f, 0f, 0f, 0f) @@ -66,13 +67,12 @@ internal class ContentGroup( } } - override fun getPath(time: Int): Path { + override fun getPath(frame: Int): Path { - // TODO: cache this somehow. matrix.reset() if (transform != null) { - matrix.setFrom(transform.matrix(time)) + matrix.setFrom(transform.matrix(frame)) } path.reset() if (hidden) { @@ -81,7 +81,7 @@ internal class ContentGroup( for (i in contents.indices.reversed()) { val content = contents[i] if (content is PathContent) { - path.addPath(content.getPath(time), matrix) + path.addPath(content.getPath(frame), matrix) } } return path @@ -107,7 +107,7 @@ internal class ContentGroup( ) { matrix.setFrom(parentMatrix) if (transform != null) { - matrix *= transform.matrix(frame) + matrix.preConcat(transform.matrix(frame)) } rect.set(0f,0f,0f,0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt new file mode 100644 index 00000000..161515c9 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt @@ -0,0 +1,4 @@ +package io.github.alexzhirkevich.compottie.internal.content + +internal interface PathAndDrawingContext : DrawingContent, PathContent { +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt index 7050be46..54d1b96f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt @@ -1,8 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.content.Content -interface PathContent : Content { - fun getPath(time: Int) : Path +internal interface PathContent : Content { + fun getPath(frame: Int) : Path } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt deleted file mode 100644 index e1ce3739..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/graphics/ShapeLayerDraw.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.graphics - -import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.withSave -import androidx.compose.ui.util.fastForEach -import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer - - -internal fun ShapeLayer.draw(scope: DrawScope, time : Int) { - scope.drawIntoCanvas { canvas -> - canvas.withSave { - canvas.concat(transform.matrix(time)) - drawIntoCanvas( - canvas = canvas, - time = time - ) - } - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt new file mode 100644 index 00000000..6820890c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -0,0 +1,27 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Shader +import androidx.compose.ui.graphics.TileMode + + +expect fun MakeLinearGradient( + from : Offset, + to : Offset, + colors : List, + colorStops: List, + tileMode: TileMode = TileMode.Clamp, + matrix: Matrix +) : Shader + + +expect fun MakeRadialGradient( + center : Offset, + radius : Float, + colors : List, + colorStops: List, + tileMode: TileMode = TileMode.Clamp, + matrix: Matrix +) : Shader \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt index f38769de..328172bc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt @@ -8,14 +8,12 @@ import io.github.alexzhirkevich.compottie.internal.schema.shapes.Ellipse import io.github.alexzhirkevich.compottie.internal.schema.shapes.Fill import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFill import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientStroke -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Group -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Path +import io.github.alexzhirkevich.compottie.internal.schema.shapes.GroupShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.Rect -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Round import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStroke import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Trim +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic @@ -39,16 +37,16 @@ val LottieJson = Json { subclass(AnimatedVector2.Default::class) } polymorphic(Shape::class){ - subclass(Path::class) +// subclass(Path::class) subclass(Ellipse::class) subclass(Fill::class) subclass(GradientFill::class) - subclass(Group::class) + subclass(GroupShape::class) subclass(Rect::class) - subclass(Round::class) +// subclass(Round::class) subclass(SolidStroke::class) subclass(GradientStroke::class) - subclass(Trim::class) + subclass(TrimPath::class) subclass(TransformShape::class) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt index cbf5b5f8..f2a52816 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt @@ -4,5 +4,4 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path interface ModifierContent { - fun applyTo(path: Path, paint: Paint, time: Int) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt similarity index 58% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt index d81f7910..f2175018 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt @@ -8,13 +8,14 @@ import io.github.alexzhirkevich.compottie.internal.schema.properties.y import io.github.alexzhirkevich.compottie.internal.utils.Math import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.preRotate +import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import io.github.alexzhirkevich.compottie.internal.utils.setValues import kotlin.math.cos import kotlin.math.sin import kotlin.math.tan -internal abstract class LottieTransform { +internal abstract class AnimatedTransform { abstract val anchorPoint: AnimatedVector2? abstract val position: AnimatedVector2? @@ -47,47 +48,49 @@ internal abstract class LottieTransform { position?.interpolated(frame)?.let { if (it.x != 0f || it.y != 0f) { - matrix.preTranslate(it.x, it.y,) + matrix.preTranslate(it.x, it.y) } } rotation?.interpolated(frame)?.takeIf { it != 0f }?.let(matrix::preRotate) - - skew?.interpolated(frame)?.let { sk -> - val skewAngle = skewAxis?.interpolated(frame) - - val mCos = if (skewAngle == null) 0f else cos(Math.toRadians(-skewAngle + 90)) - - val mSin = if (skewAngle == null) 1f else sin(Math.toRadians(-skewAngle + 90)) - - val aTan = tan(Math.toRadians(sk)) - clearSkewValues() - skewValues[0] = mCos - skewValues[1] = mSin - skewValues[3] = -mSin - skewValues[4] = mCos - skewValues[8] = 1f - skewMatrix1.setValues(skewValues) - clearSkewValues() - skewValues[0] = 1f - skewValues[3] = aTan - skewValues[4] = 1f - skewValues[8] = 1f - skewMatrix2.setValues(skewValues) - clearSkewValues() - skewValues[0] = mCos - skewValues[1] = -mSin - skewValues[3] = mSin - skewValues[4] = mCos - skewValues[8] = 1f - skewMatrix3.setValues(skewValues) - skewMatrix2.preConcat(skewMatrix1) - skewMatrix3.preConcat(skewMatrix2) - matrix.preConcat(skewMatrix3) - } +// +// skew?.interpolated(frame)?.let { sk -> +// val skewAngle = skewAxis?.interpolated(frame) +// +// val mCos = if (skewAngle == null) +// 0f else cos(Math.toRadians(-skewAngle + 90)) +// +// val mSin = if (skewAngle == null) +// 1f else sin(Math.toRadians(-skewAngle + 90)) +// +// val aTan = tan(Math.toRadians(sk)) +// clearSkewValues() +// skewValues[0] = mCos +// skewValues[1] = mSin +// skewValues[3] = -mSin +// skewValues[4] = mCos +// skewValues[8] = 1f +// skewMatrix1.setValues(skewValues) +// clearSkewValues() +// skewValues[0] = 1f +// skewValues[3] = aTan +// skewValues[4] = 1f +// skewValues[8] = 1f +// skewMatrix2.setValues(skewValues) +// clearSkewValues() +// skewValues[0] = mCos +// skewValues[1] = -mSin +// skewValues[3] = mSin +// skewValues[4] = mCos +// skewValues[8] = 1f +// skewMatrix3.setValues(skewValues) +// skewMatrix2.preConcat(skewMatrix1) +// skewMatrix3.preConcat(skewMatrix2) +// matrix.preConcat(skewMatrix3) +// } scale?.interpolated(frame)?.takeIf { it.x != 0f || it.y != 0f }?.let { - matrix + matrix.preScale(it.x/100f, it.y/100f) } anchorPoint?.interpolated(frame)?.let { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt index 34c5918e..25c818d8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable internal class Transform( @SerialName("a") - override val anchorPoint : AnimatedVector2 = AnimatedVector2.Default(value = floatArrayOf(0f, 0f, 0f)), + override val anchorPoint : AnimatedVector2? = null, @SerialName("p") override val position : AnimatedVector2? = null, @@ -24,10 +24,10 @@ internal class Transform( override val opacity : AnimatedValue? = null, @SerialName("sk") - override val skew: AnimatedValue = AnimatedValue.Default(value = 0f), + override val skew: AnimatedValue? = null, @SerialName("sa") - override val skewAxis: AnimatedValue = AnimatedValue.Default(value = 0f), -) : LottieTransform() + override val skewAxis: AnimatedValue? = null, +) : AnimatedTransform() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt index 03f88769..f3e5b77d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt @@ -36,17 +36,17 @@ internal abstract class BaseLayer() : DrawingContent { matrix.setFrom(parentMatrix) parentLayers?.fastForEachReversed { - matrix *= it.transform.matrix(frame) + matrix.preConcat(it.transform.matrix(frame)) } var alpha = parentAlpha transform.opacity?.interpolated(frame)?.let { - alpha *= it / 100f + alpha = (alpha * (it / 100f)).coerceIn(0f,1f) } - matrix *= transform.matrix(frame) - drawLayer(canvas, parentMatrix, alpha, frame) + matrix.preConcat(transform.matrix(frame)) + drawLayer(canvas, matrix, alpha, frame) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt index ab1de294..4327fcb4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt @@ -105,8 +105,4 @@ internal class ShapeLayer( super.getBounds(outBounds, parentMatrix, applyParents, frame) contentGroup.getBounds(outBounds, boundMatrix, applyParents, frame) } - override fun setContents(contentsBefore: List, contentsAfter: List) { - super.setContents(contentsBefore, contentsAfter) - } - } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt index ab9ebc42..90c880f0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt @@ -29,13 +29,14 @@ internal sealed interface AnimatedColor : Animated, Indexable { ) : AnimatedColor { @Transient - private val color : Color = if (value.size == 4){ - Color(red = value[0], green = value[1], blue = value[2], alpha = value[3]) - } else { - Color(red = value[0], green = value[1], blue = value[2]) - } - - override fun interpolated(frame: Int) = color + private val color: Color = Color( + red = value[0], + green = value[1], + blue = value[2], + alpha = value.getOrNull(3) ?: 1f + ) + + override fun interpolated(frame: Int) = color } @Serializable @@ -59,12 +60,14 @@ internal sealed interface AnimatedColor : Animated, Indexable { ) : AnimatedColor { @Transient - private val animation = value.to2DAnimation() + private val animation = value.toColorAnimation() - override fun interpolated(time: Int): AnimationVector2D { + override fun interpolated(time: Int): Color { return animation.getValueFromNanos( playTimeNanos = time.milliseconds.inWholeNanoseconds, - ) + ).let { + Color(it.v1,it.v2,it.v3,it.v4) + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt new file mode 100644 index 00000000..baf0d4c4 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt @@ -0,0 +1,68 @@ +package io.github.alexzhirkevich.compottie.internal.schema.properties + +import androidx.compose.ui.graphics.Color +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonClassDiscriminator + +internal class ColorsWithStops( + val colorStops: List, + val colors : List +) + +@Serializable +internal class GradientColors( + + @SerialName("k") + val colors: AnimatedGradient, + + @SerialName("p") + val numberOfColors: Int = 0 +) + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("a") +internal sealed interface AnimatedGradient : Animated { + + var numberOfColors: Int + + @SerialName("0") + @Serializable + class Default( + @SerialName("k") + val colorsVector: FloatArray, + ) : AnimatedGradient { + + @Transient + override var numberOfColors: Int = 0 + + private val colors by lazy { + ColorsWithStops( + colorStops = (0 until numberOfColors).map { + colorsVector[it * 3] + }, + colors = (0 until numberOfColors).map { + + val alpha = if (colorsVector.size == numberOfColors * 6) { + colorsVector[colorsVector.lastIndex - numberOfColors * 2 + (it + 1) * 2] + } else 1f + + Color( + red = colorsVector[it * 3 + 1], + green = colorsVector[it * 3 + 2], + blue = colorsVector[it * 3 + 3], + alpha = alpha + ).also { println(it) } + + } + ) + } + + override fun interpolated(frame: Int): ColorsWithStops { + return colors + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt deleted file mode 100644 index ed1694e9..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/GradientColors.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import androidx.compose.ui.graphics.Color -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -internal class GradientColors( - - @SerialName("k") - val colors : AnimatedVector2, - - @SerialName("p") - val numberOfColors : Int = 0 -) { - fun interpolated(time : Int) : List> { - - val vector = colors.interpolated(time) - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt index c485c9d6..35eaf6cc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt @@ -1,5 +1,132 @@ package io.github.alexzhirkevich.compottie.internal.schema.properties -internal interface Keyframe { +import androidx.compose.animation.VectorConverter +import androidx.compose.animation.core.Animation +import androidx.compose.animation.core.AnimationVector +import androidx.compose.animation.core.AnimationVector2D +import androidx.compose.animation.core.AnimationVector4D +import androidx.compose.animation.core.Easing +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.TwoWayConverter +import androidx.compose.animation.core.createAnimation +import androidx.compose.animation.core.keyframes +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.colorspace.ColorSpace + +internal interface Keyframe { + val start : T? + val end : T? val time : Int -} \ No newline at end of file + val easing : Easing +} + +internal fun List.toAnimation() = + asComposeKeyframes { it[0] }.vectorize( + converter = TwoWayConverter( + convertToVector = { + AnimationVector(it) + }, + convertFromVector = { it.value } + ) +).createAnimation( + initialValue = AnimationVector(first().start?.getOrNull(0) ?: 0f), + targetValue = AnimationVector( + last().start?.getOrNull(0) ?: getOrNull(lastIndex-1)?.end?.getOrNull(0) ?: 0f + ), + initialVelocity = ZeroVector1d +) + + +internal fun List.to2DAnimation(): Animation { + + val start = first().start + val end = last().start ?: getOrNull(lastIndex-1)?.end + + val initialValue = if (start != null){ + AnimationVector(start[0], start[1]) + } else { + ZeroVector2D + } + + val targetValue = if (end != null){ + AnimationVector(end[0], end[1]) + } else { + ZeroVector2D + } + + return asComposeKeyframes { it } + .vectorize( + converter = TwoWayConverter( + convertToVector = { + AnimationVector(it[0], it[1]) + }, + convertFromVector = { + floatArrayOf(it.v1, it.v2) + } + ) + ).createAnimation( + initialValue = initialValue, + targetValue = targetValue, + initialVelocity = ZeroVector2D + ) +} +internal fun List.toColorAnimation( + colorSpace: ColorSpace = first().start?.toColor()?.colorSpace ?: Color.Black.colorSpace +): Animation { + + val start = first().start + val end = last().end ?: getOrNull(lastIndex-1)?.end + + val initialValue = if (start != null){ + AnimationVector( + start.getOrNull(3) ?: 1f, + start[0], + start[1], + start[2], + ) + } else { + ZeroVector4D + } + + val targetValue = if (end != null){ + AnimationVector( + end.getOrNull(3) ?: 1f, + end[0], + end[1], + end[2], + ) + } else { + ZeroVector4D + } + + return asComposeKeyframes { it.toColor() } + .vectorize( + converter = Color.VectorConverter(colorSpace) + ).createAnimation( + initialValue = initialValue, + targetValue = targetValue, + initialVelocity = ZeroVector4D + ) +} + +private fun List>.asComposeKeyframes( + map : (T) -> R, +) = keyframes { + durationMillis = last().time + + forEachIndexed { idx, it -> + it.start?.let { s-> + map(s) at it.time using (it.easing ?: LinearEasing) + } + + it.end?.takeIf { idx != lastIndex && idx != 0 }?.let{ e -> + map(e) at get(idx-1).time + } + } +} + +private fun FloatArray.toColor() = Color(this[0], this[1], this[2], getOrNull(3) ?: 0f) + +private val ZeroVector1d = AnimationVector(0f) +private val ZeroVector2D = AnimationVector(0f,0f,) +private val ZeroVector4D = AnimationVector(0f,0f, 0f, 0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt index f11af4bc..13d881fc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt @@ -10,12 +10,15 @@ internal class ShapePropertyKeyframe( @SerialName("s") val start : List, + @SerialName("e") + val end : List, + @SerialName("t") - override val time: Int, + val time: Int, @SerialName("i") val inValue : BezierCurveInterpolation, @SerialName("o") val outValue : BezierCurveInterpolation, -) : Keyframe \ No newline at end of file +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt index f8ee616e..c7d5ab33 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.properties import androidx.compose.animation.core.AnimationVector import androidx.compose.animation.core.CubicBezierEasing +import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.TwoWayConverter import androidx.compose.animation.core.createAnimation import androidx.compose.animation.core.keyframes @@ -13,7 +14,10 @@ import kotlinx.serialization.Transient internal class ValueKeyframe( @SerialName("s") - val start: FloatArray = floatArrayOf(0f), + override val start: FloatArray? = null, + + @SerialName("e") + override val end: FloatArray? = null, @SerialName("t") override val time: Int, @@ -23,39 +27,18 @@ internal class ValueKeyframe( @SerialName("o") val outValue : BezierCurveInterpolation? = null, -) : Keyframe { +) : Keyframe { @Transient - internal val easing = if (inValue != null && outValue != null) { + override val easing = if (inValue != null && outValue != null) { CubicBezierEasing( inValue.x[0], inValue.y[0], outValue.x[0], outValue.y[0] ) - } else null + } else LinearEasing } -internal fun Iterable.toAnimation() = keyframes { - durationMillis = last().time - forEach { - if (it.easing != null) { - it.start[0] at it.time using it.easing - } else { - it.start[0] at it.time - } - } -}.vectorize( - converter = TwoWayConverter( - convertToVector = { - AnimationVector(it) - }, - convertFromVector = { it.value } - ) -).createAnimation( - initialValue = AnimationVector(first().start[0]), - targetValue = AnimationVector(last().start[0]), - initialVelocity = ZeroVector1d -) - -private val ZeroVector1d = AnimationVector(0f) \ No newline at end of file + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt index 6501264c..7a58b449 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt @@ -1,14 +1,18 @@ package io.github.alexzhirkevich.compottie.internal.schema.properties -import androidx.compose.animation.core.AnimationSpec +import androidx.compose.animation.VectorConverter +import androidx.compose.animation.core.Animation import androidx.compose.animation.core.AnimationVector +import androidx.compose.animation.core.AnimationVector2D +import androidx.compose.animation.core.AnimationVector4D import androidx.compose.animation.core.CubicBezierEasing -import androidx.compose.animation.core.Easing -import androidx.compose.animation.core.KeyframesSpec +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.TargetBasedAnimation import androidx.compose.animation.core.TwoWayConverter -import androidx.compose.animation.core.VectorizedKeyframesSpec import androidx.compose.animation.core.createAnimation import androidx.compose.animation.core.keyframes +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.colorspace.ColorSpace import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -17,69 +21,30 @@ import kotlinx.serialization.Transient class VectorKeyframe( @SerialName("s") - val start : FloatArray = floatArrayOf(0f,0f), + override val start : FloatArray? = null, + + @SerialName("e") + override val end : FloatArray? = null, @SerialName("t") - val time : Int, + override val time : Int, @SerialName("i") val inValue : BezierCurveInterpolation? = null, @SerialName("o") val outValue : BezierCurveInterpolation? = null -) { +) : Keyframe{ @Transient - val easing = if (inValue != null && outValue != null){ + override val easing = if (inValue != null && outValue != null){ CubicBezierEasing( outValue.x[0], outValue.y[0], inValue.x[0], inValue.y[0], ) - } else null + } else LinearEasing } -internal fun Iterable.to2DAnimation() = keyframes { - durationMillis = last().time - - forEach { - if (it.easing != null) { - it.start at it.time using it.easing - } else { - it.start at it.time - } - } -}.vectorize( - converter = TwoWayConverter( - convertToVector = { - AnimationVector(it[0], it[1]) - }, - convertFromVector = { - floatArrayOf(it.v1, it.v2) - } - ) -).createAnimation( - initialValue = AnimationVector(first().start[0], first().start[1]), - targetValue = AnimationVector(last().start[0], last().start[1]), - initialVelocity = ZeroVector -) - -private val ZeroVector = AnimationVector(0f,0f) - -@Suppress("INVISIBLE_MEMBER","INVISIBLE_REFERENCE") -private fun KeyframesSpec.vectorize( -): VectorizedKeyframesSpec { - - @Suppress("PrimitiveInCollection") // Consumed by stable public API - val vectorizedKeyframes = mutableMapOf>() - config.keyframes.forEach { key, value -> - vectorizedKeyframes[key] = value.toPair(converter.convertToVector) - } - return VectorizedKeyframesSpec( - keyframes = vectorizedKeyframes, - durationMillis = config.durationMillis, - delayMillis = config.delayMillis - ) -} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt index 1b8143c9..bb60ed21 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt @@ -33,26 +33,19 @@ internal abstract class BaseStroke() : DrawingContent { private val trimPathPath = Path() private val path = Path() private val rect = MutableRect(0f,0f,0f,0f) - private val paint = Paint().apply { + protected val paint = Paint().apply { strokeMiterLimit = strokeMiter strokeCap = lineCap.asStrokeCap() strokeJoin = lineJoin.asStrokeJoin() } private val pm = ExtendedPathMeasure() + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) { - - open fun setupPaint(paint: Paint, frame: Int){ paint.style = PaintingStyle.Stroke - paint.alpha = opacity.interpolated(frame) + paint.alpha = parentAlpha * (opacity.interpolated(frame) / 100f).coerceIn(0f,1f) paint.strokeWidth = strokeWidth.interpolated(frame) - } - - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) { - - setupPaint(paint, frame) - if (paint.strokeWidth <= 0) { return } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt index fa1532d2..6cef450a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt @@ -4,8 +4,10 @@ import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType +import io.github.alexzhirkevich.compottie.internal.schema.properties.x +import io.github.alexzhirkevich.compottie.internal.schema.properties.y import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -40,50 +42,34 @@ internal class Ellipse( @Transient private val trimPaths = CompoundTrimPath() - private var lastPosition : FloatArray? = null - private var lastSize : FloatArray? = null - - override fun setContents(contentsBefore: List, contentsAfter: List) { - contentsBefore.forEach { - if (it is TrimPath && it.type == TrimPathType.Simultaneously){ - trimPaths.addTrimPath((it)) - } - } - } - - override fun getPath(time: Int): Path { - + override fun getPath(frame: Int): Path { if (hidden) { - path.rewind() - return path - } - - val position = position.interpolated(time) - val size = size.interpolated(time) - - if (lastPosition.contentEquals(position) && lastSize.contentEquals(size)){ return path } - lastPosition = position - lastSize = size + val pos = position.interpolated(frame) + val size = size.interpolated(frame) - path.rewind() - - val top = (position[0] - size[0] / 2) - val left = (position[1] - size[1] / 2) + path.reset() path.addOval( Rect( - top = top, - left = left, - bottom = top + size[0], - right = left + size[1], + left = pos.x - size.x/2, + top = pos.y - size.y/2, + right = pos.x + size.y/2, + bottom = pos.y + size.y/2 ) ) - trimPaths.apply(path, time) - return path } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + for (i in contentsBefore.indices) { + val content = contentsBefore[i] + if (content is TrimPath && content.type == TrimPathType.Simultaneously) { + trimPaths.addTrimPath(content) + } + } + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt index 90990c77..99417be1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt @@ -1,9 +1,20 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes -import androidx.compose.ui.graphics.PaintingStyle -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedColor import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -21,18 +32,69 @@ internal class Fill( override val hidden : Boolean = false, @SerialName("a") - override val withAlpha : BooleanInt = BooleanInt.No, + val withAlpha : BooleanInt = BooleanInt.No, @SerialName("d") val direction : Int = 1, @SerialName("o") - override val opacity : AnimatedValue, + val opacity : AnimatedValue?, @SerialName("c") - override val color : AnimatedVector2, -) : SolidDrawShape() { + val color : AnimatedColor, +) : Shape, DrawingContent { + + private val path = Path() + + private var paths: List = emptyList() + + private val paint = Paint() + + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + if (hidden) { + return + } + + paint.alpha = if (opacity != null) { + (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) + } + else { + parentAlpha + } + + paint.color = color.interpolated(frame) + + path.reset() + + for (i in paths.indices) { + path.addPath(paths[i].getPath(frame), parentMatrix) + } + + canvas.drawPath(path, paint) + } + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int + ) { + + path.reset() + paths.fastForEach { + this.path.addPath(it.getPath(frame), parentMatrix) + } + + outBounds.set(path.getBounds()) + // Add padding to account for rounding errors. + outBounds.set( + outBounds.left - 1, + outBounds.top - 1, + outBounds.right + 1, + outBounds.bottom + 1 + ) + } - override val paintingStyle: PaintingStyle - get() = PaintingStyle.Fill + override fun setContents(contentsBefore: List, contentsAfter: List) { + paths = contentsAfter.filterIsInstance() + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt index 2052bb4b..ea949d7b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt @@ -1,17 +1,32 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.LinearGradientShader +import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.PaintingStyle +import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.RadialGradientShader -import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors +import androidx.compose.ui.graphics.Shader +import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.platform.MakeLinearGradient +import io.github.alexzhirkevich.compottie.internal.platform.MakeRadialGradient +import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset +import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors +import io.github.alexzhirkevich.compottie.internal.schema.properties.x +import io.github.alexzhirkevich.compottie.internal.schema.properties.y +import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline +import kotlin.math.hypot @Serializable @SerialName("gf") @@ -27,7 +42,7 @@ internal class GradientFill( override val hidden : Boolean = false, @SerialName("o") - val opacity : AnimatedValue, + val opacity : AnimatedValue? = null, @SerialName("s") val startPoint : AnimatedVector2, @@ -52,43 +67,87 @@ internal class GradientFill( @SerialName("g") val colors : GradientColors, -) : DrawShape { +) : Shape, DrawingContent { - override fun applyTo(paint: Paint, time: Int) { - paint.style = PaintingStyle.Fill - paint.alpha = opacity.interpolated(time) + private val path = Path() - val interpolatedColors = colors.colors.interpolated(time) + private var paths: List = emptyList() + + private val paint = Paint() - val colorStops = List(colors.numberOfColors) { - interpolatedColors[it * 4] - } - val colors = List(colors.numberOfColors) { - Color( - interpolatedColors[it * 4 + 1], - interpolatedColors[it * 4 + 2], - interpolatedColors[it * 4 + 3] - ) + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + + paint.alpha = if (opacity != null) { + (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) + } + else { + parentAlpha } - paint.shader = when (type) { - - GradientType.Linear -> LinearGradientShader( - from = startPoint.interpolated(time).toOffset(), - to = endPoint.interpolated(time).toOffset(), - colorStops = colorStops, - colors = colors - ) - - GradientType.Radial -> RadialGradientShader( - colorStops = colorStops, - colors = colors, - center = startPoint.interpolated(time).toOffset(), - radius = highlightLength?.interpolated(time) ?: 0f, - ) - else -> error("Unknown gradient type: $type") + paint.shader = GradientShader(type, startPoint, endPoint, colors, frame,parentMatrix) + } + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int + ) { + path.reset() + paths.fastForEach { + path.addPath(it.getPath(frame), parentMatrix) } + outBounds.set(path.getBounds()) + // Add padding to account for rounding errors. + outBounds.set( + outBounds.left - 1, + outBounds.top - 1, + outBounds.right + 1, + outBounds.bottom + 1 + ) + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + paths = contentsAfter.filterIsInstance() + } +} + +internal fun GradientShader( + type: GradientType, + startPoint: AnimatedVector2, + endPoint: AnimatedVector2, + colors: GradientColors, + frame : Int, + matrix: Matrix +) : Shader { + val start = startPoint.interpolated(frame) + val end = endPoint.interpolated(frame) + + colors.colors.numberOfColors = colors.numberOfColors + + val c = colors.colors.interpolated(frame) + + return if (type == GradientType.Linear){ + MakeLinearGradient( + from = Offset(start.x, start.y), + to = Offset(end.x, end.y), + colors = c.colors, + colorStops = c.colorStops, + tileMode = TileMode.Clamp, + matrix = matrix, + ) + } else { + val r = hypot((end.x - start.x), (end.y - start.y)) + + MakeRadialGradient( + radius = r, + center = Offset(start.x, start.y), + colors = c.colors, + colorStops = c.colorStops, + tileMode = TileMode.Clamp, + matrix = matrix + ) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt index 406dd18b..ba95ea76 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt @@ -3,11 +3,9 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.Shader -import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -26,19 +24,19 @@ internal class GradientStroke( override val hidden : Boolean = false, @SerialName("lc") - override val lineCap : LineCap, + override val lineCap : LineCap = LineCap.Round, @SerialName("lj") - override val lineJoin : LineJoin, + override val lineJoin : LineJoin = LineJoin.Round, @SerialName("ml") - val miterLimit : Float? = null, + override val strokeMiter : Float = 0f, @SerialName("o") override val opacity : AnimatedValue, @SerialName("w") - val width : AnimatedValue, + override val strokeWidth : AnimatedValue, @SerialName("s") val startPoint : AnimatedVector2, @@ -65,57 +63,16 @@ internal class GradientStroke( val type : GradientType, ) : BaseStroke(), Shape { - @Transient - private val boundsRect = MutableRect(0f,0f,0f,0f) - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { - - if (hidden) { - return - } - getBounds(boundsRect, parentMatrix, false, frame) - - val shader = if (type == GradientType.LINEAR) { - linearGradient - } else { - radialGradient - } - shader.setLocalMatrix(parentMatrix) - paint.setShader(shader) - - super.draw(canvas, parentMatrix, parentAlpha) - + paint.shader = GradientShader( + type = type, + startPoint = startPoint, + endPoint = endPoint, + colors = colors, + frame = frame, + matrix = parentMatrix + ) super.draw(canvas, parentMatrix, parentAlpha, frame) } - - override fun setupPaint(paint: Paint, frame: Int) { - super.setupPaint(paint, frame) - - paint.shader = when (type){ - GradientType.Linear -> getLinearGradient(frame) - GradientType.Radial -> getRadialGradient(frame) - else -> error("Unknown gradient type: $type") - } - } - - private fun getLinearGradient(time: Int) : Shader { - - - } - - private fun getRadialGradient(time: Int) : Shader { - val startPoint = startPoint.interpolated(time) - val endPoint = endPoint.interpolated(time) - val gradientColor = colors - val colors = applyDynamicColorsIfNeeded(gradientColor!!.colors) - val positions = gradientColor.positions - val x0 = startPoint!!.x - val y0 = startPoint.y - val x1 = endPoint!!.x - val y1 = endPoint.y - gradient = LinearGradient(x0, y0, x1, y1, colors, positions, Shader.TileMode.CLAMP) - linearGradientCache.put(gradientHash.toLong(), gradient) - return gradient - } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt deleted file mode 100644 index 4c5c6a5b..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Group.kt +++ /dev/null @@ -1,84 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes - -import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.util.fastForEach -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -@SerialName("gr") -internal class Group( - - @SerialName("mn") - override val matchName : String? = null, - - @SerialName("nm") - override val name : String? = null, - - @SerialName("hd") - override val hidden : Boolean = false, - - @SerialName("np") - val numberOfProperties : Int = 0, - - @SerialName("it") - val items : List = emptyList(), -) : CanvasShape by BaseCanvasShape( - root = false, - hidden = hidden, - shapes = items, - matchName = matchName, - name = name -) - -internal class BaseCanvasShape( - val root : Boolean, - override val hidden: Boolean, - override val shapes : List, - override val matchName: String? = null, - override val name: String? = null, -) : CanvasShape { - - private val visibleShapes = shapes.filterNot(Shape::hidden) - - private val drawShapes = visibleShapes - .filterIsInstance().map { - it to Paint() - } - - override var path = Path() - - private val layoutShapes = visibleShapes - .filterIsInstance() - - private val groupShapes = visibleShapes - .filterIsInstance() - .onEach { - it.path = path - } - - override fun drawIntoCanvas(canvas: Canvas, time: Int) { - - if (drawShapes.isEmpty()) { - groupShapes.fastForEach { - it.drawIntoCanvas(canvas, time) - } - } else { - drawShapes.fastForEach { (drawShape, paint) -> - if (root) { - path.rewind() - } - drawShape.applyTo(paint, time) - groupShapes.fastForEach { - it.drawIntoCanvas(canvas, time) - } - layoutShapes.fastForEach { layoutShape -> - layoutShape.applyTo(path, time) - } - canvas.drawPath(path, paint) - } - } - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt new file mode 100644 index 00000000..c31e8054 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt @@ -0,0 +1,33 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import io.github.alexzhirkevich.compottie.internal.content.ContentGroup +import io.github.alexzhirkevich.compottie.internal.content.PathAndDrawingContext +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("gr") +internal class GroupShape( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("np") + val numberOfProperties : Int = 0, + + @SerialName("it") + val items : List = emptyList(), + +) : Shape, PathAndDrawingContext by ContentGroup( + name = name, + hidden = hidden, + contents = items, + transform = items.firstOrNull { it is TransformShape } as? TransformShape? +) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt index e495ac41..013c855a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt @@ -1,53 +1,53 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes - -import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.schema.properties.ShapeProperties -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -@Serializable -@SerialName("sh") -internal class Path( - @SerialName("mn") - override val matchName : String? = null, - - @SerialName("nm") - override val name : String? = null, - - @SerialName("hd") - override val hidden : Boolean = false, - - @SerialName("ks") - val properties : ShapeProperties -) : LayoutShape { - - @Transient - private var path = Path() - - override fun getPath(time: Int): Path { - path.rewind() - - val shape = properties.interpolated(time) - - val first = shape.vertices.first() - - path.moveTo(first[0], first[1]) - - for (i in shape.vertices.indices){ - path.cubicTo( - shape.vertices[i][0], - shape.vertices[i][1], - shape.inPoints[i][0], - shape.inPoints[i][1], - shape.outPoints[i][0], - shape.outPoints[i][1], - ) - } - - if (shape.closed){ - path.close() - } - return path - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes +// +//import androidx.compose.ui.graphics.Path +//import io.github.alexzhirkevich.compottie.internal.schema.properties.ShapeProperties +//import kotlinx.serialization.SerialName +//import kotlinx.serialization.Serializable +//import kotlinx.serialization.Transient +// +//@Serializable +//@SerialName("sh") +//internal class Path( +// @SerialName("mn") +// override val matchName : String? = null, +// +// @SerialName("nm") +// override val name : String? = null, +// +// @SerialName("hd") +// override val hidden : Boolean = false, +// +// @SerialName("ks") +// val properties : ShapeProperties +//) : LayoutShape { +// +// @Transient +// private var path = Path() +// +// override fun getPath(time: Int): Path { +// path.rewind() +// +// val shape = properties.interpolated(time) +// +// val first = shape.vertices.first() +// +// path.moveTo(first[0], first[1]) +// +// for (i in shape.vertices.indices){ +// path.cubicTo( +// shape.vertices[i][0], +// shape.vertices[i][1], +// shape.inPoints[i][0], +// shape.inPoints[i][1], +// shape.outPoints[i][0], +// shape.outPoints[i][1], +// ) +// } +// +// if (shape.closed){ +// path.close() +// } +// return path +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt index bccef22d..ce46b41e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt @@ -8,6 +8,8 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.properties.x +import io.github.alexzhirkevich.compottie.internal.schema.properties.y import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -51,58 +53,26 @@ internal class Rect( trimPaths.addTrimPath(it) } } -// if (content is com.airbnb.lottie.animation.content.RoundedCornersContent) { -// roundedCornersAnimation = -// (content as com.airbnb.lottie.animation.content.RoundedCornersContent).getRoundedCorners() -// } -// } } - @Transient - private var lastPosition: FloatArray? = null - - @Transient - private var lastSize: FloatArray? = null - - @Transient - private var lastCorners: Float? = null - - - override fun getPath(time: Int): Path { + override fun getPath(frame: Int): Path { if (hidden) { path.rewind() return path } - val position = position.interpolated(time) - val size = size.interpolated(time) - val radius = roundedCorners?.interpolated(time) - - if (lastPosition.contentEquals(position) && - lastSize.contentEquals(size) && - lastCorners == radius - ) { - return path - } - - lastPosition = position - lastSize = size - lastCorners = radius + val position = position.interpolated(frame) + val size = size.interpolated(frame) + val radius = roundedCorners?.interpolated(frame) path.rewind() - val left = (position[0] - size[0] / 2) - val top = (position[1] - size[1] / 2) - val bottom = top + size[1] - val right = left + size[0] - - val rect = Rect( - top = top, - left = left, - bottom = bottom, - right = right, + top = position.x - size.x/2, + left = position.y - size.y/2, + bottom = position.x + size.x/2, + right = position.y + size.y/2, ) if (radius != null) { @@ -117,7 +87,7 @@ internal class Rect( path.addRect(rect) } - trimPaths.apply(path, time) + trimPaths.apply(path, frame) return path } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt index 36191923..212b91f8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt @@ -1,33 +1,33 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes - -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.PathEffect -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -@SerialName("rd") -internal class Round( - - @SerialName("mn") - override val matchName : String? = null, - - @SerialName("nm") - override val name : String? = null, - - @SerialName("hd") - override val hidden : Boolean = false, - - @SerialName("r") - val radius : AnimatedValue, -) : DrawShape { - - override fun applyTo(paint: Paint, time: Int) { - - val radius = radius.interpolated(time) - - paint.pathEffect = PathEffect.cornerPathEffect(radius) - } - -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes +// +//import androidx.compose.ui.graphics.Paint +//import androidx.compose.ui.graphics.PathEffect +//import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +//import kotlinx.serialization.SerialName +//import kotlinx.serialization.Serializable +// +//@Serializable +//@SerialName("rd") +//internal class Round( +// +// @SerialName("mn") +// override val matchName : String? = null, +// +// @SerialName("nm") +// override val name : String? = null, +// +// @SerialName("hd") +// override val hidden : Boolean = false, +// +// @SerialName("r") +// val radius : AnimatedValue, +//) : Shape { +// +// override fun applyTo(paint: Paint, time: Int) { +// +// val radius = radius.interpolated(time) +// +// paint.pathEffect = PathEffect.cornerPathEffect(radius) +// } +// +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt index 45dec65e..797ba824 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt @@ -1,5 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.StrokeJoin @@ -27,10 +29,10 @@ internal class SolidStroke( val withAlpha : BooleanInt = BooleanInt.No, @SerialName("lc") - override val lineCap : LineCap, + override val lineCap : LineCap = LineCap.Round, @SerialName("lj") - override val lineJoin : LineJoin, + override val lineJoin : LineJoin = LineJoin.Round, @SerialName("ml") override val strokeMiter : Float = 0f, @@ -45,9 +47,10 @@ internal class SolidStroke( val color : AnimatedColor, ) : BaseStroke(), Shape { - override fun setupPaint(paint: Paint, frame: Int) { - super.setupPaint(paint, frame) + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { paint.color = color.interpolated(frame) + + super.draw(canvas, parentMatrix, parentAlpha, frame) } } @@ -76,7 +79,7 @@ internal fun LineJoin.asStrokeJoin() : StrokeJoin { LineJoin.Miter -> StrokeJoin.Miter LineJoin.Round -> StrokeJoin.Round LineJoin.Bevel -> StrokeJoin.Bevel - else -> error("Unknown line join: $this") + else ->StrokeJoin.Round// error("Unknown line join: $this") } } @@ -85,6 +88,6 @@ internal fun LineCap.asStrokeCap() : StrokeCap { LineCap.Butt -> StrokeCap.Butt LineCap.Round -> StrokeCap.Round LineCap.Square -> StrokeCap.Square - else -> error("Unknown line cap: $this") + else -> StrokeCap.Round //error("Unknown line cap: $this") } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt index 2c51d4a6..1d3be6ca 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt @@ -1,166 +1,166 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes - -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.layout.ScaleFactor -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient -import kotlin.jvm.JvmInline -import kotlin.math.PI -import kotlin.math.cos -import kotlin.math.sin - -@Serializable -@SerialName("sr") -internal class Star( - - @SerialName("mn") - override val matchName : String? = null, - - @SerialName("nm") - override val name : String? = null, - - @SerialName("hd") - override val hidden : Boolean = false, - - @SerialName("p") - val position : AnimatedVector2, - - @SerialName("d") - val direction : Int = 1, - - @SerialName("is") - val innerRoundness : AnimatedValue, - - @SerialName("ir") - val innerRadius : AnimatedValue, - - @SerialName("or") - val outerRadius : AnimatedValue, - - @SerialName("os") - val outerRoundness : AnimatedValue, - - @SerialName("r") - val rotation : AnimatedValue, - - @SerialName("pt") - val points : AnimatedValue, - - @SerialName("s") - val size : AnimatedVector2, - - @SerialName("sy") - val starType : StarType, - - ) : LayoutShape { - - @Transient - private val path = Path() - - override fun getPath(time: Int): Path { - - path.rewind() - - val position = position.interpolated(time) - val size = size.interpolated(time) - - val top = (position[0] - size[0] / 2) - val left = (position[1] - size[0] / 2) - - path.addOval( - Rect( - top = top, - left = left, - bottom = top + size[0], - right = left + size[1], - ) - ) - return path - } - - private fun applyStarTo(path: Path, scale: ScaleFactor, time: Int) { - - val points = points.interpolated(time) - val rotation = rotation.interpolated(time) - val outer_roundness = outerRoundness.interpolated(time) - val inner_roundness = innerRoundness.interpolated(time) - val outer_radius = outerRadius.interpolated(time) - val inner_radius = innerRadius.interpolated(time) - - val half_angle = PI / points - val angle_radians = rotation / 180 * PI - - // Tangents for rounded courners - val tangent_len_outer = - (outer_roundness * outer_radius * 2 * PI / (points * 4 * 100)).toFloat() - val tangent_len_inner = - (inner_roundness * inner_radius * 2 * PI / (points * 4 * 100)).toFloat() - - repeat(points.toInt()) { i -> - val main_angle = -PI / 2 + angle_radians + i * half_angle * 2; - - val outer_vertex = Offset( - outer_radius * cos(main_angle).toFloat(), - outer_radius * sin(main_angle).toFloat() - ); - - val outer_tangent = if (outer_radius == 0f) { - Offset.Zero - } else { - Offset( - outer_vertex.y / outer_radius * tangent_len_outer, - -outer_vertex.x / outer_radius * tangent_len_outer - ) - } - - path.cubicTo( - outer_vertex.x, - outer_vertex.y, - outer_tangent.x, - outer_tangent.y, - -outer_tangent.x, - -outer_tangent.y - ) - - // Star inner radius - if (starType == StarType.Star) { - val inner_vertex = Offset( - inner_radius * cos(main_angle + half_angle).toFloat(), - inner_radius * sin(main_angle + half_angle).toFloat() - ) - - val inner_tangent = if (inner_radius.toInt() != 0) { - Offset( - inner_vertex.y / inner_radius * tangent_len_inner, - -inner_vertex.x / inner_radius * tangent_len_inner - ) - } else { - Offset.Zero - } - - path.cubicTo( - inner_vertex.x, - inner_vertex.y, - inner_tangent.x, - inner_tangent.y, - -inner_tangent.x, - -inner_tangent.y - ) - } - } - } -} - -@Serializable -@JvmInline -value class StarType(val type : Byte) { - companion object { - val Star = StarType(1) - val Polygon = StarType(2) - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.internal.schema.shapes +// +//import androidx.compose.ui.geometry.Offset +//import androidx.compose.ui.geometry.Rect +//import androidx.compose.ui.graphics.Path +//import androidx.compose.ui.layout.ScaleFactor +//import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 +//import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +//import kotlinx.serialization.SerialName +//import kotlinx.serialization.Serializable +//import kotlinx.serialization.Transient +//import kotlin.jvm.JvmInline +//import kotlin.math.PI +//import kotlin.math.cos +//import kotlin.math.sin +// +//@Serializable +//@SerialName("sr") +//internal class Star( +// +// @SerialName("mn") +// override val matchName : String? = null, +// +// @SerialName("nm") +// override val name : String? = null, +// +// @SerialName("hd") +// override val hidden : Boolean = false, +// +// @SerialName("p") +// val position : AnimatedVector2, +// +// @SerialName("d") +// val direction : Int = 1, +// +// @SerialName("is") +// val innerRoundness : AnimatedValue, +// +// @SerialName("ir") +// val innerRadius : AnimatedValue, +// +// @SerialName("or") +// val outerRadius : AnimatedValue, +// +// @SerialName("os") +// val outerRoundness : AnimatedValue, +// +// @SerialName("r") +// val rotation : AnimatedValue, +// +// @SerialName("pt") +// val points : AnimatedValue, +// +// @SerialName("s") +// val size : AnimatedVector2, +// +// @SerialName("sy") +// val starType : StarType, +// +// ) : LayoutShape { +// +// @Transient +// private val path = Path() +// +// override fun getPath(time: Int): Path { +// +// path.rewind() +// +// val position = position.interpolated(time) +// val size = size.interpolated(time) +// +// val top = (position[0] - size[0] / 2) +// val left = (position[1] - size[0] / 2) +// +// path.addOval( +// Rect( +// top = top, +// left = left, +// bottom = top + size[0], +// right = left + size[1], +// ) +// ) +// return path +// } +// +// private fun applyStarTo(path: Path, scale: ScaleFactor, time: Int) { +// +// val points = points.interpolated(time) +// val rotation = rotation.interpolated(time) +// val outer_roundness = outerRoundness.interpolated(time) +// val inner_roundness = innerRoundness.interpolated(time) +// val outer_radius = outerRadius.interpolated(time) +// val inner_radius = innerRadius.interpolated(time) +// +// val half_angle = PI / points +// val angle_radians = rotation / 180 * PI +// +// // Tangents for rounded courners +// val tangent_len_outer = +// (outer_roundness * outer_radius * 2 * PI / (points * 4 * 100)).toFloat() +// val tangent_len_inner = +// (inner_roundness * inner_radius * 2 * PI / (points * 4 * 100)).toFloat() +// +// repeat(points.toInt()) { i -> +// val main_angle = -PI / 2 + angle_radians + i * half_angle * 2; +// +// val outer_vertex = Offset( +// outer_radius * cos(main_angle).toFloat(), +// outer_radius * sin(main_angle).toFloat() +// ); +// +// val outer_tangent = if (outer_radius == 0f) { +// Offset.Zero +// } else { +// Offset( +// outer_vertex.y / outer_radius * tangent_len_outer, +// -outer_vertex.x / outer_radius * tangent_len_outer +// ) +// } +// +// path.cubicTo( +// outer_vertex.x, +// outer_vertex.y, +// outer_tangent.x, +// outer_tangent.y, +// -outer_tangent.x, +// -outer_tangent.y +// ) +// +// // Star inner radius +// if (starType == StarType.Star) { +// val inner_vertex = Offset( +// inner_radius * cos(main_angle + half_angle).toFloat(), +// inner_radius * sin(main_angle + half_angle).toFloat() +// ) +// +// val inner_tangent = if (inner_radius.toInt() != 0) { +// Offset( +// inner_vertex.y / inner_radius * tangent_len_inner, +// -inner_vertex.x / inner_radius * tangent_len_inner +// ) +// } else { +// Offset.Zero +// } +// +// path.cubicTo( +// inner_vertex.x, +// inner_vertex.y, +// inner_tangent.x, +// inner_tangent.y, +// -inner_tangent.x, +// -inner_tangent.y +// ) +// } +// } +// } +//} +// +//@Serializable +//@JvmInline +//value class StarType(val type : Byte) { +// companion object { +// val Star = StarType(1) +// val Polygon = StarType(2) +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt index a21dd9ce..0f3dbc0e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt @@ -1,8 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieTransform +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.schema.ModifierContent +import io.github.alexzhirkevich.compottie.internal.schema.helpers.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName @@ -41,10 +41,8 @@ internal class TransformShape( @SerialName("sa") override val skewAxis: AnimatedValue? = null, -) : LottieTransform(), ModifierShape { +) : AnimatedTransform(), Shape, ModifierContent { + override fun setContents(contentsBefore: List, contentsAfter: List) { - override fun applyTo(path: Path, paint: Paint, time: Int) { - path.transform(matrix(time)) - paint.alpha *= opacity.interpolated(time) / 100f } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt deleted file mode 100644 index 89466888..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Trim.kt +++ /dev/null @@ -1,31 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes - -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -@SerialName("tm") -internal class Trim( - - @SerialName("mn") - override val matchName : String? = null, - - @SerialName("nm") - override val name : String? = null, - - @SerialName("hd") - override val hidden : Boolean = false, - - @SerialName("d") - val direction : Int = 1, - - @SerialName("s") - val start : AnimatedValue, - - @SerialName("e") - val end : AnimatedValue, - - @SerialName("o") - val offset : AnimatedValue, -) : Shape \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt index 6f93cc42..046727a8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt @@ -1,12 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes +import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -@SerialName("tr") +@SerialName("tm") internal class TrimPath( @SerialName("n") @@ -30,4 +31,7 @@ internal class TrimPath( @SerialName("m") val type : TrimPathType = TrimPathType.Simultaneously ) : Shape { + override fun setContents(contentsBefore: List, contentsAfter: List) { + + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt index 9dca11c1..ee1222f6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt @@ -1,18 +1,20 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util -// -//import androidx.compose.ui.graphics.Path -//import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath -// -//internal class CompoundTrimPath { -// private val contents: MutableList = mutableListOf() -// -// fun addTrimPath(trimPath: TrimPath) { -// contents.add(trimPath) -// } -// -// fun apply(path: Path, time : Int) { -// for (i in contents.indices.reversed()) { -// Utils.applyTrimPathIfNeeded(path = path, trimPath = contents[i], time = time) -// } -// } -//} +package io.github.alexzhirkevich.compottie.internal.schema.shapes.util + +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +import io.github.alexzhirkevich.compottie.internal.utils.Utils + +internal class CompoundTrimPath { + private val contents: MutableList = mutableListOf() + + fun addTrimPath(trimPath: TrimPath) { + contents.add(trimPath) + } + + fun apply(path: Path, frame : Int) { + contents.fastForEachReversed { + Utils.applyTrimPathIfNeeded(path, it, frame) + } + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index 1c1d892c..89db5b6b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -1,13 +1,20 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.graphics.Matrix +import org.jetbrains.skia.Matrix44 fun Matrix.preTranslate(x : Float, y : Float) { - return translate(x, y) + preConcat(Matrix().apply { translate(x,y) }) +// return translate(x, y) } + +private val tempMatrix = Matrix() + fun Matrix.preConcat(other : Matrix) { - return timesAssign(other) + tempMatrix.setFrom(other) + tempMatrix.timesAssign(this) + this.setFrom(tempMatrix) } fun Matrix.setValues(values : FloatArray){ @@ -15,9 +22,18 @@ fun Matrix.setValues(values : FloatArray){ } fun Matrix.preRotate(degree : Float) { - return rotateZ(degree) + preConcat(tempMatrix.apply { + reset() + rotateZ(degree) + }) + +// return rotateZ(degree) } fun Matrix.preScale(x : Float, y : Float) { - return scale(x,y) + preConcat(tempMatrix.apply { + reset() + scale(x, y) + }) +// return scale(x,y) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt index 7d8b1b30..3ea0781f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -4,13 +4,15 @@ import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.trace import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath import kotlin.math.abs import kotlin.math.max import kotlin.math.min -object Utils { +internal object Utils { private val pathMeasure = ExtendedPathMeasure() private val tempPath = Path() @@ -24,6 +26,21 @@ object Utils { canvas.saveLayer(rect, paint) } + fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPath, frame : Int) { + if (trimPath.hidden) { + return + } + val start: Float = trimPath.start.interpolated(frame) + val end: Float = trimPath.end.interpolated(frame) + val offset: Float = trimPath.offset.interpolated(frame) + applyTrimPathIfNeeded( + path = path, + startValue = start / 100f, + endValue = end / 100f, + offsetValue = offset / 360f + ) + } + fun applyTrimPathIfNeeded( path: Path, startValue: Float, endValue: Float, offsetValue: Float, ) { diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt similarity index 100% rename from compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPathMeasure.android.kt rename to compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt new file mode 100644 index 00000000..b5619de0 --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -0,0 +1,66 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.graphics.TileMode.Companion.Clamp +import androidx.compose.ui.graphics.toArgb +import org.jetbrains.skia.FilterTileMode +import org.jetbrains.skia.GradientStyle +import org.jetbrains.skia.Matrix33 +import org.jetbrains.skia.Matrix44 +import org.jetbrains.skia.Shader + + +actual fun MakeLinearGradient( + from : Offset, + to : Offset, + colors : List, + colorStops: List, + tileMode: TileMode, + matrix: Matrix +) = Shader.makeLinearGradient( + x0 = from.x, + y0 = from.y, + x1 = to.x, + y1 = to.y, + colors = colors.toIntArray(), + positions = colorStops.toFloatArray(), + style = GradientStyle( + tileMode = tileMode.toSkiaTileMode(), + isPremul = true, + localMatrix = Matrix44(*matrix.values).asMatrix33() + ) +) + +actual fun MakeRadialGradient( + center : Offset, + radius : Float, + colors : List, + colorStops: List, + tileMode: TileMode, + matrix: Matrix +) = Shader.makeRadialGradient( + x = center.x, + y = center.y, + r = radius, + colors = colors.toIntArray(), + positions = colorStops.toFloatArray(), + style = GradientStyle( + tileMode = tileMode.toSkiaTileMode(), + isPremul = true, + localMatrix = Matrix44(*matrix.values).asMatrix33() + ) +) + +private fun List.toIntArray(): IntArray = + IntArray(size) { i -> this[i].toArgb() } + +internal fun TileMode.toSkiaTileMode(): FilterTileMode = when (this) { + Clamp -> FilterTileMode.CLAMP + TileMode.Repeated -> FilterTileMode.REPEAT + TileMode.Mirror -> FilterTileMode.MIRROR + TileMode.Decal -> FilterTileMode.DECAL + else -> FilterTileMode.CLAMP +} diff --git a/example/androidapp/build.gradle.kts b/example/androidapp/build.gradle.kts index ef67a7ca..6335f564 100644 --- a/example/androidapp/build.gradle.kts +++ b/example/androidapp/build.gradle.kts @@ -1,7 +1,10 @@ + +@Suppress("DSL_SCOPE_VIOLATION") plugins { - id("com.android.application") id("org.jetbrains.kotlin.android") - id("org.jetbrains.compose") + alias(libs.plugins.android.application) + alias(libs.plugins.compose) + alias(libs.plugins.composeCompiler) } val _jvmTarget = findProperty("jvmTarget") as String @@ -32,6 +35,7 @@ android { signingConfig = signingConfigs.getByName("debug") } } + buildFeatures { compose = true } } dependencies { diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index cd8ea4b3..97e8958c 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -1,36 +1,13 @@ package io.github.alexzhirkevich.compottie.example.android +import App import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import App -import android.app.Application -import android.graphics.Bitmap -import android.graphics.BitmapFactory -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.asImageBitmap -import androidx.lifecycle.lifecycleScope -import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - context = applicationContext as Application - - lifecycleScope.launch { - val bytes = renderComposeScene(256,256){ - Box(Modifier.fillMaxSize().background(Color.Red)) - } - - val bitmap = BitmapFactory.decodeByteArray(bytes,0, bytes.size) - setContent { - Image(bitmap = bitmap.asImageBitmap(), contentDescription = null) - } - } + setContent { App() } } } \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index b746ef59..5a11fcc8 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,8 +1,13 @@ +import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState @@ -26,7 +31,7 @@ fun App() { ) Image( - modifier = Modifier.fillMaxSize(), + modifier = Modifier.border(1.dp, Color.Black), painter = rememberLottiePainter( composition = composition, progress = { @@ -37,6 +42,9 @@ fun App() { ) } +private val fadeBalls = "{\"v\":\"4.8.0\",\"meta\":{\"g\":\"LottieFiles AE 3.5.2\",\"a\":\"\",\"k\":\"\",\"d\":\"\",\"tc\":\"\"},\"fr\":25,\"ip\":0,\"op\":114,\"w\":1080,\"h\":1080,\"nm\":\"Coloring Ball\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[353.056,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[1,0,0.028235371908,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13.11,\"s\":[0.056470490992,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":24.223,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":35.333,\"s\":[1,0,0.517646789551,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":46.444,\"s\":[1,0,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":57.556,\"s\":[0,1,0.564705908298,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":68.667,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":79.777,\"s\":[1,0,0,1]},{\"t\":90.8896484375,\"s\":[0,1,0.564705908298,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":2,\"op\":252,\"st\":2,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[723.944,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":7,\"s\":[1,0,0.687059529622,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":18.11,\"s\":[0,1,0.84705889225,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":29.223,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":40.333,\"s\":[0,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":51.444,\"s\":[0.710588574409,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":62.556,\"s\":[1,0.494117677212,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":73.667,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":84.777,\"s\":[0.997646987438,1,0,1]},{\"t\":95.8896484375,\"s\":[1,0.494117677212,0,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":7,\"op\":257,\"st\":7,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[540,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":4,\"s\":[0,0.494117468596,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":15.11,\"s\":[0.57882386446,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":26.223,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":37.333,\"s\":[0,0.512941002846,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":48.444,\"s\":[1,0,0.404705822468,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":59.556,\"s\":[0,0.73882317543,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":70.667,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":81.777,\"s\":[0,0.512941002846,1,1]},{\"t\":92.8896484375,\"s\":[0,0.73882317543,1,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":4,\"op\":254,\"st\":4,\"bm\":0}],\"markers\":[]}" + +private val ellipseGradient = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 5\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":23,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":34,\"s\":[100]},{\"t\":69,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":23,\"s\":[400,400]},{\"i\":{\"x\":[0.009,0.009],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":34,\"s\":[440,440]},{\"t\":59,\"s\":[400,400]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":23,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":34,\"s\":[10]},{\"t\":59,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 4\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":16,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":27,\"s\":[100]},{\"t\":62,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":16,\"s\":[320,320]},{\"i\":{\"x\":[0.025,0.025],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":27,\"s\":[360,360]},{\"t\":52,\"s\":[320,320]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":16,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":27,\"s\":[10]},{\"t\":52,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":9,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":20,\"s\":[100]},{\"t\":55,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":9,\"s\":[240,240]},{\"i\":{\"x\":[0.051,0.051],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":20,\"s\":[280,280]},{\"t\":45,\"s\":[240,240]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13,\"s\":[100]},{\"t\":48,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":2,\"s\":[160,160]},{\"i\":{\"x\":[0.034,0.034],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":13,\"s\":[200,200]},{\"t\":38,\"s\":[160,160]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":2,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":13,\"s\":[10]},{\"t\":38,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":0,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":11,\"s\":[100]},{\"t\":46,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":0,\"s\":[80,80]},{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":11,\"s\":[120,120]},{\"t\":36,\"s\":[80,80]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":11,\"s\":[10]},{\"t\":35,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" private val roundRect = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"rc\",\"nm\":\"Rectangle\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]},\"r\":{\"a\":0,\"k\":50}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8c37039e..b4436533 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,6 +14,7 @@ serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", v [plugins] compose = { id = "org.jetbrains.compose", version.ref = "compose" } kotlin-multiplatform = { id ="org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +kotlin-android = { id ="org.jetbrains.kotlin.android", version.ref = "kotlin" } android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } From 5b0748fa6f00782c02873253cf2dae7f0ce76de3 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 29 May 2024 17:30:20 +0300 Subject: [PATCH 004/100] wip --- .../platform/PlatformImage.android.kt | 9 ++ .../compottie/LottieCompositionSpec.kt | 2 +- .../alexzhirkevich/compottie/LottiePainter.kt | 94 ++++++++---- .../compottie/internal/content/Content.kt | 1 + .../internal/content/ContentGroup.kt | 23 +-- .../internal/platform/PlatformImage.kt | 5 + .../compottie/internal/schema/Json.kt | 22 +-- .../compottie/internal/schema/LottieData.kt | 5 +- .../internal/schema/assets/LottieAsset.kt | 87 +++++++++++ .../internal/schema/assets/LottieFileAsset.kt | 10 ++ .../schema/helpers/AnimatedTransform.kt | 3 + .../internal/schema/helpers/Transform.kt | 2 +- .../internal/schema/layers/BaseLayer.kt | 14 +- .../internal/schema/layers/ImageLayer.kt | 140 ++++++++++++++++++ .../compottie/internal/schema/layers/Layer.kt | 5 + .../internal/schema/layers/NullLayer.kt | 84 +++++++++++ .../internal/schema/layers/ShapeLayer.kt | 1 + .../schema/properties/AnimatedGradient.kt | 11 +- .../schema/properties/AnimatedVector2.kt | 22 ++- .../{BaseStroke.kt => BaseStrokeShape.kt} | 45 +++++- .../shapes/{Ellipse.kt => EllipseShape.kt} | 2 +- .../schema/shapes/{Fill.kt => FillShape.kt} | 3 +- .../{GradientFill.kt => GradientFillShape.kt} | 6 +- .../internal/schema/shapes/GradientStroke.kt | 9 +- .../internal/schema/shapes/GroupShape.kt | 2 +- .../schema/shapes/{Rect.kt => RectShape.kt} | 2 +- .../{SolidStroke.kt => SolidStrokeShape.kt} | 46 +----- .../internal/schema/shapes/TransformShape.kt | 3 +- .../internal/services/LottieImageService.kt | 15 ++ .../internal/services/LottieServiceLocator.kt | 19 +++ .../compottie/internal/utils/Matrix.kt | 14 +- .../internal/platform/PlatformImage.skiko.kt | 9 ++ example/shared/src/commonMain/kotlin/App.kt | 15 +- 33 files changed, 597 insertions(+), 133 deletions(-) create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{BaseStroke.kt => BaseStrokeShape.kt} (87%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{Ellipse.kt => EllipseShape.kt} (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{Fill.kt => FillShape.kt} (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{GradientFill.kt => GradientFillShape.kt} (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{Rect.kt => RectShape.kt} (99%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{SolidStroke.kt => SolidStrokeShape.kt} (54%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieImageService.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt new file mode 100644 index 00000000..b9eaa8f6 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt @@ -0,0 +1,9 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import android.graphics.BitmapFactory +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.asImageBitmap + +internal actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { + return BitmapFactory.decodeByteArray(bytes, 0, bytes.size).asImageBitmap() +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 234e9236..1a294431 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.Immutable sealed class LottieCompositionSpec { @Immutable - class JsonString constructor( + class JsonString( internal val jsonString: String ) : LottieCompositionSpec() { override fun equals(other: Any?): Boolean { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 1eee9f65..b110a077 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState @@ -9,6 +10,7 @@ import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope @@ -16,73 +18,104 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.graphics.withSave import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent -import io.github.alexzhirkevich.compottie.internal.utils.preScale -import io.github.alexzhirkevich.compottie.internal.utils.preTranslate +import io.github.alexzhirkevich.compottie.internal.services.LottieImageService +import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonClassDiscriminator import kotlin.math.roundToInt @Composable fun rememberLottiePainter( composition : LottieCompositionResult, + maintainOriginalImageBounds: Boolean = false, + onLoadError : (Throwable) -> Painter = { EmptyPainter }, progress : () -> Float ) : Painter { - val painter by produceState(EmptyPainter){ - value = LottiePainter(composition.await()) + val painter by produceState(EmptyPainter) { + value = try { + LottiePainter( + composition = composition.await(), + maintainOriginalImageBounds = maintainOriginalImageBounds + ) + } catch (t : Throwable) { + onLoadError(t) + } } LaunchedEffect(painter){ snapshotFlow { progress() }.collect { - painter.progress = it + (painter as? LottiePainter)?.progress = it } } return painter } -private abstract class ProgressPainter : Painter() { - - abstract var progress : Float -} - -private object EmptyPainter : ProgressPainter() { +private object EmptyPainter : Painter() { - override var progress: Float = 0f override val intrinsicSize: Size = Size(1f,1f) override fun DrawScope.onDraw() { } - } + private class LottiePainter( private val composition: LottieComposition, - private val clipToCompositionBounds : Boolean = true -) : ProgressPainter() { + private val maintainOriginalImageBounds : Boolean, +) : Painter() { override val intrinsicSize: Size = Size( composition.lottieData.width.toFloat(), composition.lottieData.height.toFloat() ) - override var progress: Float by mutableStateOf(0f) + var progress: Float by mutableStateOf(0f) private val matrix = Matrix() private var alpha by mutableStateOf(1f) + private val currentFrame by derivedStateOf { + val p = composition.lottieData.outPoint * progress.coerceIn(0f, 1f) - + composition.lottieData.inPoint + p.coerceAtLeast(0f).roundToInt() + } + + private var serviceLocator = LottieServiceLocator( + LottieImageService( + maintainOriginalImageBounds = maintainOriginalImageBounds, + assets = composition.lottieData.assets + ) + ) + + init { + composition.lottieData.layers.forEach { + it.serviceLocator = serviceLocator + } + } + override fun applyAlpha(alpha: Float): Boolean { + if (alpha !in 0f..1f) + return false + this.alpha = alpha return true } - override fun DrawScope.onDraw() { drawIntoCanvas { canvas -> @@ -103,22 +136,19 @@ private class LottiePainter( layoutDirection ) - -// matrix.preScale(scale.scaleX, scale.scaleY) -// matrix.preTranslate(offset.x.toFloat(), offset.y.toFloat()) - - val dat = composition.lottieData - - val frame = (dat.outPoint * progress.coerceIn(0f, 1f) - dat.inPoint) - .coerceAtLeast(0f).roundToInt() - - scale(scale.scaleX, scale.scaleY) { - translate(offset.x.toFloat(), offset.y.toFloat()) { - dat.layers.fastForEachReversed { +// scale(scale.scaleX, scale.scaleY) { +// translate(offset.x.toFloat(), offset.y.toFloat()) { + composition.lottieData.layers.fastForEachReversed { if (it is DrawingContent) { - it.draw(canvas, matrix, alpha, frame) - } - } + it.density = density + try { + it.draw(canvas, matrix, alpha, currentFrame) + } catch (t: Throwable) { + println("Lottie crashed in draw :(") + t.printStackTrace() + } +// } +// } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt index d81fdec1..293e2c26 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.content interface Content { + val name: String? fun setContents( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index adac1448..cdaaa953 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -6,9 +6,11 @@ import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.schema.helpers.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union @@ -27,6 +29,7 @@ internal class ContentGroup( private val path = Path() private var pathContents: MutableList? = null + private val boundsRect = MutableRect(0f,0f,0f,0f) override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { if (hidden) { @@ -40,7 +43,7 @@ internal class ContentGroup( if (transform != null) { matrix.preConcat(transform.matrix(frame)) transform.opacity?.interpolated(frame)?.let { - layerAlpha = (layerAlpha * it/100f).coerceIn(0f,1f) + layerAlpha = (layerAlpha * it / 100f).coerceIn(0f, 1f) } } @@ -78,12 +81,12 @@ internal class ContentGroup( if (hidden) { return path } - for (i in contents.indices.reversed()) { - val content = contents[i] - if (content is PathContent) { - path.addPath(content.getPath(frame), matrix) + contents.fastForEachReversed { + if (it is PathContent) { + path.addPath(it.getPath(frame), matrix) } } + return path } @@ -110,11 +113,11 @@ internal class ContentGroup( matrix.preConcat(transform.matrix(frame)) } - rect.set(0f,0f,0f,0f) - for (i in contents.indices.reversed()) { - val content = contents[i] - if (content is DrawingContent) { - content.getBounds(rect, matrix, applyParents, frame) + rect.set(0f, 0f, 0f, 0f) + + contents.fastForEachReversed { + if (it is DrawingContent) { + it.getBounds(rect, matrix, applyParents, frame) outBounds.union(rect) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt new file mode 100644 index 00000000..45863c22 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.graphics.ImageBitmap + +internal expect fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt index 328172bc..a338b710 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt @@ -1,31 +1,35 @@ package io.github.alexzhirkevich.compottie.internal.schema import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer +import io.github.alexzhirkevich.compottie.internal.schema.layers.NullLayer import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Ellipse -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Fill +import io.github.alexzhirkevich.compottie.internal.schema.shapes.EllipseShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.FillShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFill import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientStroke import io.github.alexzhirkevich.compottie.internal.schema.shapes.GroupShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Rect +import io.github.alexzhirkevich.compottie.internal.schema.shapes.RectShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStroke +import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStrokeShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.polymorphic import kotlinx.serialization.modules.subclass +@OptIn(ExperimentalSerializationApi::class) val LottieJson = Json { ignoreUnknownKeys = true isLenient = true - + allowTrailingComma = true serializersModule = SerializersModule { polymorphic(Layer::class){ subclass(ShapeLayer::class) + subclass(NullLayer::class) } polymorphic(AnimatedValue::class){ @@ -38,13 +42,13 @@ val LottieJson = Json { } polymorphic(Shape::class){ // subclass(Path::class) - subclass(Ellipse::class) - subclass(Fill::class) + subclass(EllipseShape::class) + subclass(FillShape::class) subclass(GradientFill::class) subclass(GroupShape::class) - subclass(Rect::class) + subclass(RectShape::class) // subclass(Round::class) - subclass(SolidStroke::class) + subclass(SolidStrokeShape::class) subclass(GradientStroke::class) subclass(TrimPath::class) subclass(TransformShape::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt index ee2c8275..1503cf71 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema +import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -28,7 +29,9 @@ internal class LottieData( @SerialName("nm") val name : String, - val layers: List + val layers: List = emptyList(), + + val assets : List = emptyList() ) internal val LottieData.durationMillis diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt new file mode 100644 index 00000000..0fbda026 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt @@ -0,0 +1,87 @@ +package io.github.alexzhirkevich.compottie.internal.schema.assets + +import androidx.compose.ui.graphics.ImageBitmap +import io.github.alexzhirkevich.compottie.internal.platform.fromBytes +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.PolymorphicSerializer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.jsonObject +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi + +@Serializable(with = AssetSerializer::class) +internal sealed interface LottieAsset { + + val id: String + val name: String? + + @Serializable + class ImageAsset( + + @SerialName("id") + override val id: String, + + @SerialName("p") + override val fileName: String, + + @SerialName("u") + override val path: String ="", + + + @SerialName("sid") + override val slotId: String? = null, + + @SerialName("nm") + override val name: String? = null, + + @SerialName("e") + override val embedded: BooleanInt = BooleanInt.No, + + @SerialName("w") + private val w: Int? = null, + + @SerialName("h") + private val h: Int? = null, + ) : LottieFileAsset { + + val width : Int get() = w ?: bitmap?.width ?: 0 + + val height : Int get() = h ?: bitmap?.height ?: 0 + + @OptIn(ExperimentalEncodingApi::class) + @Transient + val bitmap: ImageBitmap? = fileName + .takeIf(String::isBase64Data::get) + ?.substringAfter("base64,") + ?.trim() + ?.let { ImageBitmap.fromBytes(Base64.decode(it)) } + } + + @Serializable + class EmptyAsset( + @SerialName("id") + override val id: String, + + @SerialName("nm") + override val name: String? = null, + ) : LottieAsset +} + +private val String.isBase64Data : Boolean get() = + (startsWith("data:") && indexOf("base64,") > 0) + +internal class AssetSerializer : JsonContentPolymorphicSerializer(LottieAsset::class) { + + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + return when { + "p" in element.jsonObject.keys -> LottieAsset.ImageAsset.serializer() + else -> LottieAsset.EmptyAsset.serializer() + } + } +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt new file mode 100644 index 00000000..ad01b31c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt @@ -0,0 +1,10 @@ +package io.github.alexzhirkevich.compottie.internal.schema.assets + +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt + +internal interface LottieFileAsset : LottieAsset { + val path : String + val fileName : String? + val embedded : BooleanInt + val slotId : String? +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt index f2175018..e1c6b7e6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt @@ -1,5 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.helpers +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Matrix import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 @@ -93,6 +95,7 @@ internal abstract class AnimatedTransform { matrix.preScale(it.x/100f, it.y/100f) } + anchorPoint?.interpolated(frame)?.let { if (it.x != 0f || it.y != 0f) { matrix.preTranslate(-it.x, -it.y) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt index 25c818d8..befdfa14 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable internal class Transform( @SerialName("a") - override val anchorPoint : AnimatedVector2? = null, + override val anchorPoint : AnimatedVector2? = null , @SerialName("p") override val position : AnimatedVector2? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt index f3e5b77d..a244e067 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt @@ -1,11 +1,15 @@ package io.github.alexzhirkevich.compottie.internal.schema.layers +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform import io.github.alexzhirkevich.compottie.internal.utils.preConcat @@ -14,7 +18,8 @@ internal abstract class BaseLayer() : DrawingContent { abstract val transform: Transform private val matrix = Matrix() - private val boundsMatrix = Matrix() + + protected val boundsMatrix = Matrix() private val rect = MutableRect(0f,0f,0f,0f) @@ -22,6 +27,10 @@ internal abstract class BaseLayer() : DrawingContent { private var parentLayer: BaseLayer? = null + var serviceLocator : LottieServiceLocator? = null + + var density by mutableStateOf(1f) + abstract fun drawLayer( canvas: Canvas, parentMatrix: Matrix, @@ -30,7 +39,6 @@ internal abstract class BaseLayer() : DrawingContent { ) override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) { - buildParentLayerListIfNeeded() matrix.reset() @@ -42,7 +50,7 @@ internal abstract class BaseLayer() : DrawingContent { var alpha = parentAlpha transform.opacity?.interpolated(frame)?.let { - alpha = (alpha * (it / 100f)).coerceIn(0f,1f) + alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) } matrix.preConcat(transform.matrix(frame)) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt new file mode 100644 index 00000000..e46c62f2 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt @@ -0,0 +1,140 @@ +package io.github.alexzhirkevich.compottie.internal.schema.layers + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.unit.IntSize +import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode +import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.services.LottieImageService +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlin.math.roundToInt + +@Serializable +@SerialName("2") +internal class ImageLayer( + @SerialName("ks") + override val transform: Transform = Transform(), + + @SerialName("ao") + override val autoOrient: BooleanInt = BooleanInt.No, + + @SerialName("ddd") + override val is3d: BooleanInt = BooleanInt.No, + + @SerialName("ind") + override val index: Int? = null, + + @SerialName("bm") + override val blendMode: LottieBlendMode = LottieBlendMode.Normal, + + @SerialName("cl") + override val clazz: String? = null, + + @SerialName("ln") + override val htmlId: String? = null, + + @SerialName("ip") + override val inPoint: Float? = null, + + @SerialName("op") + override val outPoint: Float? = null, + + @SerialName("st") + override val startTime: Int? = null, + + @SerialName("nm") + override val name: String? = null, + + @SerialName("sr") + override val stretch: Float = 1f, + + @SerialName("parent") + override val parent: Int? = null, + + @SerialName("tt") + override val matteMode: MatteMode? = null, + + @SerialName("tp") + override val matteParent: Int? = null, + + @SerialName("td") + override val matteTarget: BooleanInt? = null, + + @SerialName("hd") + override val hidden: Boolean = false, + + @SerialName("ct") + override val collapseTransform: BooleanInt = BooleanInt.No, + + @SerialName("refId") + val refId : String +) : BaseLayer(), VisualLayer { + + @Transient + private val src = MutableRect(0f,0f,0f,0f) + + @Transient + private val dst = MutableRect(0f,0f,0f,0f) + + @Transient + private val paint = Paint() + + private val service by lazy { + serviceLocator?.get() + } + + private val asset : LottieAsset.ImageAsset? by lazy { + service?.asset(refId) as? LottieAsset.ImageAsset + } + + override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + val mAsset = asset ?: return + val bitmap = mAsset.bitmap ?: return + + val maintainOriginalImageBounds = service?.maintainOriginalImageBounds ?: false + + paint.alpha = parentAlpha + + canvas.save() + canvas.concat(parentMatrix) + src.set(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat()) + + val dstSize = if (maintainOriginalImageBounds){ + IntSize((mAsset.width * density).roundToInt(), (mAsset.height * density).roundToInt()) + } else { + IntSize((bitmap.width * density).roundToInt(), (bitmap.height * density).roundToInt()) + } + + val srcSize = IntSize((bitmap.width * density).toInt(), (bitmap.height * density).toInt()) + + canvas.drawImageRect( + bitmap, + srcSize = srcSize, + dstSize = dstSize, + paint = paint + ) + canvas.restore() + } + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int + ) { + super.getBounds(outBounds, parentMatrix, applyParents, frame) + + asset?.let { + outBounds.set(0f, 0f, it.width * density, it.height * density) + boundsMatrix.map(outBounds) + } + } +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt index cbbaa535..ef543d28 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.layers +import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator @@ -25,6 +26,10 @@ internal sealed interface Layer { val startTime : Int? val name : String? + + var serviceLocator : LottieServiceLocator? + + var density : Float } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt new file mode 100644 index 00000000..6f2320f2 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt @@ -0,0 +1,84 @@ +package io.github.alexzhirkevich.compottie.internal.schema.layers + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import io.github.alexzhirkevich.compottie.internal.schema.effects.Effect +import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("3") +internal class NullLayer( + @SerialName("ks") + override val transform: Transform = Transform(), + + @SerialName("ao") + override val autoOrient: BooleanInt = BooleanInt.No, + + @SerialName("ddd") + override val is3d: BooleanInt = BooleanInt.No, + + @SerialName("ind") + override val index: Int? = null, + + @SerialName("bm") + override val blendMode: LottieBlendMode = LottieBlendMode.Normal, + + @SerialName("cl") + override val clazz: String? = null, + + @SerialName("ln") + override val htmlId: String? = null, + + @SerialName("ip") + override val inPoint: Float? = null, + + @SerialName("op") + override val outPoint: Float? = null, + + @SerialName("st") + override val startTime: Int? = null, + + @SerialName("nm") + override val name: String? = null, + + @SerialName("sr") + override val stretch: Float = 1f, + + @SerialName("parent") + override val parent: Int? = null, + + @SerialName("tt") + override val matteMode: MatteMode? = null, + + @SerialName("tp") + override val matteParent: Int? = null, + + @SerialName("td") + override val matteTarget: BooleanInt? = null, + + @SerialName("hd") + override val hidden: Boolean = false, + + @SerialName("ct") + override val collapseTransform: BooleanInt = BooleanInt.No, +) : BaseLayer(), VisualLayer { + + override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + } + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Int + ) { + outBounds.set(0f,0f,0f,0f) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt index 4327fcb4..271bb811 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt @@ -76,6 +76,7 @@ internal class ShapeLayer( @SerialName("hd") override val hidden: Boolean = false, + @SerialName("ct") override val collapseTransform: BooleanInt = BooleanInt.No, ) : BaseLayer(), VisualLayer { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt index baf0d4c4..340ec26f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt @@ -42,7 +42,7 @@ internal sealed interface AnimatedGradient : Animated { private val colors by lazy { ColorsWithStops( colorStops = (0 until numberOfColors).map { - colorsVector[it * 3] + colorsVector[it * 4] }, colors = (0 until numberOfColors).map { @@ -51,12 +51,11 @@ internal sealed interface AnimatedGradient : Animated { } else 1f Color( - red = colorsVector[it * 3 + 1], - green = colorsVector[it * 3 + 2], - blue = colorsVector[it * 3 + 3], + red = colorsVector[it * 4 + 1], + green = colorsVector[it * 4 + 2], + blue = colorsVector[it * 4 + 3], alpha = alpha - ).also { println(it) } - + ) } ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt index 9f756e93..2a5e7a3a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt @@ -2,21 +2,27 @@ package io.github.alexzhirkevich.compottie.internal.schema.properties import androidx.compose.animation.core.AnimationVector import androidx.compose.animation.core.AnimationVector2D +import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonClassDiscriminator +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.int +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive import kotlin.time.Duration.Companion.milliseconds @OptIn(ExperimentalSerializationApi::class) -@Serializable +@Serializable() @JsonClassDiscriminator("a") internal sealed interface AnimatedVector2 : Animated, Indexable { @Serializable @SerialName("0") - class Default( + data class Default( @SerialName("k") val value: FloatArray, @@ -67,6 +73,16 @@ internal sealed interface AnimatedVector2 : Animated, Indexab val AnimationVector2D.x : Float get() = v1 val AnimationVector2D.y : Float get() = v2 - +//internal class AnimatedVectorSerializer : JsonContentPolymorphicSerializer( +// AnimatedVector2::class +//) { +// override fun selectDeserializer(element: JsonElement): DeserializationStrategy { +// return when(element.jsonObject["a"]?.jsonPrimitive?.int){ +// 1 -> AnimatedVector2.Keyframed.serializer() +// else -> AnimatedVector2.Default.serializer() +// } +// } +//} +// diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt similarity index 87% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt index bb60ed21..d3a6db6e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt @@ -6,6 +6,8 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.graphics.StrokeJoin import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.content.Content @@ -18,9 +20,50 @@ import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVal import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.set +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline import kotlin.math.min -internal abstract class BaseStroke() : DrawingContent { + +@Serializable +@JvmInline +internal value class LineCap(val type : Byte) { + companion object { + val Butt = LineCap(1) + val Round = LineCap(2) + val Square = LineCap(3) + } +} + +@Serializable +@JvmInline +internal value class LineJoin(val type : Byte) { + companion object { + val Miter = LineJoin(1) + val Round = LineJoin(2) + val Bevel = LineJoin(3) + } +} + +internal fun LineJoin.asStrokeJoin() : StrokeJoin { + return when(this){ + LineJoin.Miter -> StrokeJoin.Miter + LineJoin.Round -> StrokeJoin.Round + LineJoin.Bevel -> StrokeJoin.Bevel + else -> StrokeJoin.Round// error("Unknown line join: $this") + } +} + +internal fun LineCap.asStrokeCap() : StrokeCap { + return when(this){ + LineCap.Butt -> StrokeCap.Butt + LineCap.Round -> StrokeCap.Round + LineCap.Square -> StrokeCap.Square + else -> StrokeCap.Round //error("Unknown line cap: $this") + } +} + +internal abstract class BaseStrokeShape() : DrawingContent { abstract val opacity: AnimatedValue abstract val strokeWidth: AnimatedValue diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt index 6cef450a..c7f1fa2d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Ellipse.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt @@ -15,7 +15,7 @@ import kotlinx.serialization.Transient @Serializable @SerialName("el") -internal class Ellipse( +internal class EllipseShape( @SerialName("mn") override val matchName : String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt similarity index 96% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt index 99417be1..aaab7762 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Fill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt @@ -12,7 +12,6 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedColor import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName @@ -20,7 +19,7 @@ import kotlinx.serialization.Serializable @Serializable @SerialName("fl") -internal class Fill( +internal class FillShape( @SerialName("mn") override val matchName : String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt similarity index 96% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt index ea949d7b..53d53981 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt @@ -3,11 +3,9 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.LinearGradientShader import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.RadialGradientShader import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.util.fastForEach @@ -128,8 +126,8 @@ internal fun GradientShader( val c = colors.colors.interpolated(frame) - return if (type == GradientType.Linear){ - MakeLinearGradient( + return if (type == GradientType.Linear) { + MakeLinearGradient( from = Offset(start.x, start.y), to = Offset(end.x, end.y), colors = c.colors, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt index ba95ea76..2ca45c0f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt @@ -6,6 +6,7 @@ import androidx.compose.ui.graphics.Matrix import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors +import io.github.alexzhirkevich.compottie.internal.utils.preScale import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -61,9 +62,15 @@ internal class GradientStroke( @SerialName("t") val type : GradientType, -) : BaseStroke(), Shape { +) : BaseStrokeShape(), Shape { + + @Transient + private val boundsRect = MutableRect(0f,0f,0f,0f) override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + + getBounds(boundsRect, parentMatrix, false, frame) + paint.shader = GradientShader( type = type, startPoint = startPoint, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt index c31e8054..f645c3bf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt @@ -29,5 +29,5 @@ internal class GroupShape( name = name, hidden = hidden, contents = items, - transform = items.firstOrNull { it is TransformShape } as? TransformShape? + transform = items.lastOrNull { it is TransformShape } as? TransformShape? ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt similarity index 99% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt index ce46b41e..1d267a8e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Rect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt @@ -17,7 +17,7 @@ import kotlinx.serialization.Transient @Serializable @SerialName("rc") -internal class Rect( +internal class RectShape( @SerialName("mn") override val matchName : String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt similarity index 54% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt index 797ba824..8be8f15c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt @@ -2,19 +2,15 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.StrokeCap -import androidx.compose.ui.graphics.StrokeJoin import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedColor import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import kotlin.jvm.JvmInline @Serializable @SerialName("st") -internal class SolidStroke( +internal class SolidStrokeShape( @SerialName("mn") override val matchName : String? = null, @@ -45,7 +41,7 @@ internal class SolidStroke( @SerialName("c") val color : AnimatedColor, -) : BaseStroke(), Shape { +) : BaseStrokeShape(), Shape { override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { paint.color = color.interpolated(frame) @@ -53,41 +49,3 @@ internal class SolidStroke( super.draw(canvas, parentMatrix, parentAlpha, frame) } } - -@Serializable -@JvmInline -internal value class LineCap(val type : Byte) { - companion object { - val Butt = LineCap(1) - val Round = LineCap(2) - val Square = LineCap(3) - } -} - -@Serializable -@JvmInline -internal value class LineJoin(val type : Byte) { - companion object { - val Miter = LineJoin(1) - val Round = LineJoin(2) - val Bevel = LineJoin(3) - } -} - -internal fun LineJoin.asStrokeJoin() : StrokeJoin { - return when(this){ - LineJoin.Miter -> StrokeJoin.Miter - LineJoin.Round -> StrokeJoin.Round - LineJoin.Bevel -> StrokeJoin.Bevel - else ->StrokeJoin.Round// error("Unknown line join: $this") - } -} - -internal fun LineCap.asStrokeCap() : StrokeCap { - return when(this){ - LineCap.Butt -> StrokeCap.Butt - LineCap.Round -> StrokeCap.Round - LineCap.Square -> StrokeCap.Square - else -> StrokeCap.Round //error("Unknown line cap: $this") - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt index 0f3dbc0e..22c75ca4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes +import androidx.compose.runtime.traceEventEnd import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.schema.ModifierContent import io.github.alexzhirkevich.compottie.internal.schema.helpers.AnimatedTransform @@ -22,7 +23,7 @@ internal class TransformShape( override val hidden : Boolean = false, @SerialName("a") - override val anchorPoint : AnimatedVector2 = AnimatedVector2.Default(value = floatArrayOf(0f, 0f, 0f)), + override val anchorPoint : AnimatedVector2? = null, @SerialName("p") override val position : AnimatedVector2? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieImageService.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieImageService.kt new file mode 100644 index 00000000..89eb3e10 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieImageService.kt @@ -0,0 +1,15 @@ +package io.github.alexzhirkevich.compottie.internal.services + +import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset + +internal class LottieImageService( + val maintainOriginalImageBounds : Boolean, + assets : List +) : LottieService { + + private val assets = assets.associateBy { it.id } + + fun asset(id : String) : LottieAsset? { + return assets[id] + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt new file mode 100644 index 00000000..c2156e94 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt @@ -0,0 +1,19 @@ +package io.github.alexzhirkevich.compottie.internal.services + +import kotlin.reflect.KClass + +internal interface LottieService + +internal class LottieServiceLocator( + private val services: Map, LottieService> +) { + inline fun get(): T where T : LottieService { + return services[T::class] as T + } +} + +internal fun LottieServiceLocator( + vararg services : LottieService +) = LottieServiceLocator( + services.associateBy { it::class } +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index 89db5b6b..598b98ad 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -1,20 +1,24 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.graphics.Matrix -import org.jetbrains.skia.Matrix44 + +private val tempMatrix = Matrix() + fun Matrix.preTranslate(x : Float, y : Float) { - preConcat(Matrix().apply { translate(x,y) }) + + preConcat(tempMatrix.apply { + reset() + translate(x, y) + }) // return translate(x, y) } - -private val tempMatrix = Matrix() - fun Matrix.preConcat(other : Matrix) { tempMatrix.setFrom(other) tempMatrix.timesAssign(this) this.setFrom(tempMatrix) +// timesAssign(other) } fun Matrix.setValues(values : FloatArray){ diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt new file mode 100644 index 00000000..c17094ea --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt @@ -0,0 +1,9 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.toComposeImageBitmap +import org.jetbrains.skia.Image + +internal actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { + return Image.makeFromEncoded(bytes).toComposeImageBitmap() +} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 5a11fcc8..db5d2b73 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,8 +1,5 @@ -import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.Image -import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier @@ -22,7 +19,7 @@ private const val lottieData = """ fun App() { val composition = rememberLottieComposition( - LottieCompositionSpec.JsonString(bounsingBall) + LottieCompositionSpec.JsonString(ellipseCenter) ) val progress by animateLottieCompositionAsState( @@ -36,7 +33,8 @@ fun App() { composition = composition, progress = { progress - } + }, + onLoadError = { throw it } ), contentDescription = null ) @@ -44,7 +42,10 @@ fun App() { private val fadeBalls = "{\"v\":\"4.8.0\",\"meta\":{\"g\":\"LottieFiles AE 3.5.2\",\"a\":\"\",\"k\":\"\",\"d\":\"\",\"tc\":\"\"},\"fr\":25,\"ip\":0,\"op\":114,\"w\":1080,\"h\":1080,\"nm\":\"Coloring Ball\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[353.056,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[1,0,0.028235371908,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13.11,\"s\":[0.056470490992,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":24.223,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":35.333,\"s\":[1,0,0.517646789551,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":46.444,\"s\":[1,0,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":57.556,\"s\":[0,1,0.564705908298,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":68.667,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":79.777,\"s\":[1,0,0,1]},{\"t\":90.8896484375,\"s\":[0,1,0.564705908298,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":2,\"op\":252,\"st\":2,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[723.944,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":7,\"s\":[1,0,0.687059529622,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":18.11,\"s\":[0,1,0.84705889225,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":29.223,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":40.333,\"s\":[0,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":51.444,\"s\":[0.710588574409,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":62.556,\"s\":[1,0.494117677212,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":73.667,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":84.777,\"s\":[0.997646987438,1,0,1]},{\"t\":95.8896484375,\"s\":[1,0.494117677212,0,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":7,\"op\":257,\"st\":7,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[540,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":4,\"s\":[0,0.494117468596,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":15.11,\"s\":[0.57882386446,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":26.223,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":37.333,\"s\":[0,0.512941002846,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":48.444,\"s\":[1,0,0.404705822468,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":59.556,\"s\":[0,0.73882317543,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":70.667,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":81.777,\"s\":[0,0.512941002846,1,1]},{\"t\":92.8896484375,\"s\":[0,0.73882317543,1,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":4,\"op\":254,\"st\":4,\"bm\":0}],\"markers\":[]}" -private val ellipseGradient = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 5\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":23,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":34,\"s\":[100]},{\"t\":69,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":23,\"s\":[400,400]},{\"i\":{\"x\":[0.009,0.009],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":34,\"s\":[440,440]},{\"t\":59,\"s\":[400,400]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":23,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":34,\"s\":[10]},{\"t\":59,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 4\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":16,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":27,\"s\":[100]},{\"t\":62,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":16,\"s\":[320,320]},{\"i\":{\"x\":[0.025,0.025],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":27,\"s\":[360,360]},{\"t\":52,\"s\":[320,320]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":16,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":27,\"s\":[10]},{\"t\":52,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":9,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":20,\"s\":[100]},{\"t\":55,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":9,\"s\":[240,240]},{\"i\":{\"x\":[0.051,0.051],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":20,\"s\":[280,280]},{\"t\":45,\"s\":[240,240]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13,\"s\":[100]},{\"t\":48,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":2,\"s\":[160,160]},{\"i\":{\"x\":[0.034,0.034],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":13,\"s\":[200,200]},{\"t\":38,\"s\":[160,160]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":2,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":13,\"s\":[10]},{\"t\":38,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":0,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":11,\"s\":[100]},{\"t\":46,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":0,\"s\":[80,80]},{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":11,\"s\":[120,120]},{\"t\":36,\"s\":[80,80]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":11,\"s\":[10]},{\"t\":35,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" +private val gradientStrokeEllipsesSingle = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" +private val ellipseCenter = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" + +private val gradientStrokeEllipses = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 5\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":23,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":34,\"s\":[100]},{\"t\":69,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":23,\"s\":[400,400]},{\"i\":{\"x\":[0.009,0.009],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":34,\"s\":[440,440]},{\"t\":59,\"s\":[400,400]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":23,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":34,\"s\":[10]},{\"t\":59,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 4\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":16,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":27,\"s\":[100]},{\"t\":62,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":16,\"s\":[320,320]},{\"i\":{\"x\":[0.025,0.025],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":27,\"s\":[360,360]},{\"t\":52,\"s\":[320,320]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":16,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":27,\"s\":[10]},{\"t\":52,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":9,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":20,\"s\":[100]},{\"t\":55,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":9,\"s\":[240,240]},{\"i\":{\"x\":[0.051,0.051],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":20,\"s\":[280,280]},{\"t\":45,\"s\":[240,240]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13,\"s\":[100]},{\"t\":48,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":2,\"s\":[160,160]},{\"i\":{\"x\":[0.034,0.034],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":13,\"s\":[200,200]},{\"t\":38,\"s\":[160,160]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":2,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":13,\"s\":[10]},{\"t\":38,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":0,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":11,\"s\":[100]},{\"t\":46,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":0,\"s\":[80,80]},{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":11,\"s\":[120,120]},{\"t\":36,\"s\":[80,80]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":11,\"s\":[10]},{\"t\":35,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" private val roundRect = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"rc\",\"nm\":\"Rectangle\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]},\"r\":{\"a\":0,\"k\":50}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" @@ -53,6 +54,8 @@ private val rect = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\" private val oval = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"el\",\"nm\":\"Ellipse\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" +val bounsingBallWithAnchor = "{\"nm\":\"Bouncy Ball\",\"v\":\"5.5.2\",\"ip\":0,\"op\":120,\"fr\":60,\"w\":512,\"h\":512,\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":120,\"nm\":\"Layer\",\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[0,0]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Ellipse Group\",\"it\":[{\"ty\":\"el\",\"nm\":\"Ellipse\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]}},{\"ty\":\"fl\",\"nm\":\"Fill\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[0.71,0.192,0.278]},\"r\":1},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":1,\"k\":[{\"t\":0,\"s\":[256,106],\"h\":0,\"o\":{\"x\":[0.333],\"y\":[0]},\"i\":{\"x\":[1],\"y\":[1]}},{\"t\":60,\"s\":[256,441],\"h\":0,\"o\":{\"x\":[0],\"y\":[0]},\"i\":{\"x\":[0.667],\"y\":[1]}},{\"t\":120,\"s\":[256,106]}]},\"s\":{\"a\":1,\"k\":[{\"t\":55,\"s\":[100,100],\"h\":0,\"o\":{\"x\":[0],\"y\":[0]},\"i\":{\"x\":[1],\"y\":[1]}},{\"t\":60,\"s\":[136,59],\"h\":0,\"o\":{\"x\":[0],\"y\":[0]},\"i\":{\"x\":[1],\"y\":[1]}},{\"t\":65,\"s\":[100,100]}]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}]}" + private val bounsingBall = """ { "nm": "Bouncy Ball", From 24e9c76525d2cf4028a371500c9469795e2bb85d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 31 May 2024 04:14:02 +0300 Subject: [PATCH 005/100] wip --- .../platform/PlatformShader.android.kt | 8 +- .../compottie/LottieComposition.kt | 26 ++-- .../compottie/LottieCompositionSpec.kt | 53 ++++--- .../alexzhirkevich/compottie/LottiePainter.kt | 73 +++++++--- .../assets/CompoundLottieAssetsFetcher.kt | 25 ++++ .../compottie/assets/LottieAssetFetcher.kt | 32 +++++ .../compottie/assets/LottieAssetsCache.kt | 8 ++ .../internal/content/ContentGroup.kt | 14 +- .../internal/content/ShapeModifierContent.kt | 4 + .../internal/platform/PlatformShader.kt | 128 ++++++++++++++++- .../compottie/internal/schema/Json.kt | 8 +- .../internal/schema/animation/Animated.kt | 6 + .../AnimatedColor.kt | 37 +++-- .../AnimatedGradient.kt | 52 ++++--- .../schema/animation/AnimatedShape.kt | 59 ++++++++ .../schema/animation/AnimatedTransform.kt | 117 ++++++++++++++++ .../schema/animation/AnimatedValue.kt | 48 +++++++ .../AnimatedVector2.kt | 42 ++---- .../BezierInterpolation.kt} | 4 +- .../{properties => animation}/Indexable.kt | 2 +- .../internal/schema/animation/Keyframe.kt | 22 +++ .../schema/animation/KeyframeAnimation.kt | 87 ++++++++++++ .../schema/animation/ShapeKeyframe.kt | 25 ++++ .../schema/animation/ValueKeyframe.kt | 26 ++++ .../schema/animation/VectorKeyframe.kt | 26 ++++ .../internal/schema/assets/LottieAsset.kt | 42 +++++- .../internal/schema/assets/LottieFileAsset.kt | 2 +- .../schema/helpers/AnimatedTransform.kt | 113 --------------- .../internal/schema/helpers/Bezier.kt | 41 ++++++ .../{properties => helpers}/BooleanInt.kt | 2 +- .../internal/schema/helpers/CubicCurveData.kt | 9 ++ .../{properties => helpers}/MatteMode.kt | 2 +- .../internal/schema/helpers/ShapeData.kt | 66 +++++++++ .../internal/schema/helpers/Transform.kt | 5 +- .../{properties => helpers}/TrimPathType.kt | 3 +- .../internal/schema/layers/ImageLayer.kt | 8 +- .../compottie/internal/schema/layers/Layer.kt | 2 +- .../internal/schema/layers/NullLayer.kt | 6 +- .../internal/schema/layers/ShapeLayer.kt | 10 +- .../internal/schema/layers/VisualLayer.kt | 4 +- .../internal/schema/properties/Animated.kt | 6 - .../schema/properties/AnimatedValue.kt | 57 -------- .../internal/schema/properties/Keyframe.kt | 132 ------------------ .../schema/properties/ShapeProperties.kt | 56 -------- .../schema/properties/ShapeProperty.kt | 30 ---- .../properties/ShapePropertyKeyframe.kt | 24 ---- .../schema/properties/ValueKeyframe.kt | 44 ------ .../schema/properties/VectorKeyframe.kt | 50 ------- .../internal/schema/shapes/BaseStrokeShape.kt | 18 +-- .../internal/schema/shapes/EllipseShape.kt | 7 +- .../internal/schema/shapes/FillShape.kt | 6 +- .../schema/shapes/GradientFillShape.kt | 83 +++-------- .../internal/schema/shapes/GradientStroke.kt | 16 ++- .../internal/schema/shapes/GroupShape.kt | 4 +- .../compottie/internal/schema/shapes/Path.kt | 53 ------- .../internal/schema/shapes/PathShape.kt | 76 ++++++++++ .../internal/schema/shapes/RectShape.kt | 9 +- .../schema/shapes/SolidStrokeShape.kt | 6 +- .../internal/schema/shapes/TransformShape.kt | 11 +- .../internal/schema/shapes/TrimPath.kt | 37 ----- .../internal/schema/shapes/TrimPathShape.kt | 58 ++++++++ .../schema/shapes/util/CompoundTrimPath.kt | 6 +- ...eImageService.kt => LottieAssetService.kt} | 2 +- .../compottie/internal/utils/L.kt | 4 + .../compottie/internal/utils/Matrix.kt | 15 +- .../compottie/internal/utils/Utils.kt | 5 +- .../internal/platform/PlatformShader.skiko.kt | 26 +++- .../src/main/kotlin/MainActivity.kt | 1 + example/shared/src/commonMain/kotlin/App.kt | 15 +- 69 files changed, 1206 insertions(+), 898 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetFetcher.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties => animation}/AnimatedColor.kt (63%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties => animation}/AnimatedGradient.kt (56%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties => animation}/AnimatedVector2.kt (55%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties/BezierCurveInterpolation.kt => animation/BezierInterpolation.kt} (51%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties => animation}/Indexable.kt (55%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ShapeKeyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties => helpers}/BooleanInt.kt (79%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/CubicCurveData.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties => helpers}/MatteMode.kt (83%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/{properties => helpers}/TrimPathType.kt (68%) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedValue.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/{LottieImageService.kt => LottieAssetService.kt} (91%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt index 7667c4c4..0e081c97 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt @@ -12,7 +12,7 @@ import androidx.compose.ui.graphics.toArgb private val tempMatrix = android.graphics.Matrix() -actual fun MakeLinearGradient( +internal actual fun MakeLinearGradient( from : Offset, to : Offset, colors : List, @@ -26,11 +26,11 @@ actual fun MakeLinearGradient( tileMode = tileMode, colors = colors ).apply { - tempMatrix.setValues(matrix.values) + tempMatrix.setFrom(matrix) setLocalMatrix(tempMatrix) } -actual fun MakeRadialGradient( +internal actual fun MakeRadialGradient( center : Offset, radius : Float, colors : List, @@ -44,7 +44,7 @@ actual fun MakeRadialGradient( tileMode = tileMode, colors = colors ).apply { - tempMatrix.setValues(matrix.values) + tempMatrix.setFrom(matrix) setLocalMatrix(tempMatrix) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index b052fc9d..16c67560 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -29,19 +29,14 @@ fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionR LottieCompositionResultImpl() } - LaunchedEffect(spec){ - when (spec){ - is LottieCompositionSpec.JsonString -> { - withContext(Dispatchers.Default) { - try { - val composition = parseFromJsonString(spec.jsonString) - result.complete(composition) - } catch (c: CancellationException) { - throw c - } catch (t: Throwable) { - result.completeExceptionally(t) - } - } + LaunchedEffect(spec) { + withContext(Dispatchers.Default) { + try { + result.complete(spec.load()) + } catch (c: CancellationException) { + throw c + } catch (t: Throwable) { + result.completeExceptionally(t) } } } @@ -49,8 +44,3 @@ fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionR return result } -private fun parseFromJsonString(jsonString: String) : LottieComposition { - return LottieComposition( - LottieJson.decodeFromString(jsonString), - ) -} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 1a294431..7a67f5ce 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -1,35 +1,48 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable +import androidx.compose.runtime.Stable +import io.github.alexzhirkevich.compottie.internal.schema.LottieJson -@Immutable -sealed class LottieCompositionSpec { +@Stable +sealed interface LottieCompositionSpec { + suspend fun load() : LottieComposition - @Immutable - class JsonString( - internal val jsonString: String - ) : LottieCompositionSpec() { - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false + companion object +} - other as JsonString +@Stable +fun LottieCompositionSpec.Companion.JsonString( + jsonString: String +): LottieCompositionSpec = JsonStringImpl(jsonString) - if (jsonString != other.jsonString) return false +@Immutable +private class JsonStringImpl( + internal val jsonString: String +) : LottieCompositionSpec { + + override suspend fun load(): LottieComposition { + return LottieComposition(LottieJson.decodeFromString(jsonString)) + } - return true - } + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false - override fun hashCode(): Int { - return jsonString.hashCode() - } + other as JsonStringImpl - override fun toString(): String { - return "JsonString(jsonString='$jsonString')" - } + if (jsonString != other.jsonString) return false + return true } - companion object + override fun hashCode(): Int { + return jsonString.hashCode() + } + + override fun toString(): String { + return "JsonString(jsonString='$jsonString')" + } } + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index b110a077..fa73baf1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -2,35 +2,38 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.Stable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState +import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment -import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.graphics.withSave import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent -import io.github.alexzhirkevich.compottie.internal.services.LottieImageService +import io.github.alexzhirkevich.compottie.internal.platform.fromBytes +import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieFileAsset +import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonClassDiscriminator +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.joinAll +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import kotlin.math.roundToInt @@ -38,22 +41,53 @@ import kotlin.math.roundToInt fun rememberLottiePainter( composition : LottieCompositionResult, maintainOriginalImageBounds: Boolean = false, + assetsFetcher: LottieAssetsFetcher = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, progress : () -> Float ) : Painter { - val painter by produceState(EmptyPainter) { + val updatedOnLoadError by rememberUpdatedState(onLoadError) + + val painter by produceState( + EmptyPainter, + composition, + assetsFetcher, + maintainOriginalImageBounds + ) { value = try { + val comp = composition.await() + coroutineScope { + comp.lottieData.assets.map { asset -> + withContext(Dispatchers.Default) { + when (asset) { + is LottieAsset.ImageAsset -> { + if (asset.bitmap == null) { + launch { + assetsFetcher + .fetch(asset.id, asset.path, asset.fileName) + ?.let { + asset.setBitmap(ImageBitmap.fromBytes(it)) + } + } + } else null + } + + else -> null + } + } + } + }.filterNotNull().joinAll() + LottiePainter( composition = composition.await(), maintainOriginalImageBounds = maintainOriginalImageBounds ) - } catch (t : Throwable) { - onLoadError(t) + } catch (t: Throwable) { + updatedOnLoadError(t) } } - LaunchedEffect(painter){ + LaunchedEffect(painter) { snapshotFlow { progress() }.collect { @@ -96,7 +130,7 @@ private class LottiePainter( } private var serviceLocator = LottieServiceLocator( - LottieImageService( + LottieAssetService( maintainOriginalImageBounds = maintainOriginalImageBounds, assets = composition.lottieData.assets ) @@ -136,8 +170,9 @@ private class LottiePainter( layoutDirection ) -// scale(scale.scaleX, scale.scaleY) { -// translate(offset.x.toFloat(), offset.y.toFloat()) { + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + composition.lottieData.layers.fastForEachReversed { if (it is DrawingContent) { it.density = density @@ -147,8 +182,8 @@ private class LottiePainter( println("Lottie crashed in draw :(") t.printStackTrace() } -// } -// } + } + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt new file mode 100644 index 00000000..f7f594ef --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt @@ -0,0 +1,25 @@ +package io.github.alexzhirkevich.compottie.assets + +internal class CompoundLottieAssetsFetcher( + private val localFetcher: LottieAssetsFetcher, + private val remoteFetcher : LottieAssetsFetcher, + private val cache : LottieAssetsCache +) : LottieAssetsFetcher { + + override suspend fun fetch(id: String, path: String, name: String): ByteArray? { + return if (path.startsWith("https://", true) || + path.startsWith("http://", true) + ) { + cache.loadFromCache(id, path, name)?.let { + return it + } + + remoteFetcher.fetch(id, path, name)?.also { + cache.saveToCache(it, id, path, name) + } + + } else { + localFetcher.fetch(id, path, name) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetFetcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetFetcher.kt new file mode 100644 index 00000000..991b2f66 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetFetcher.kt @@ -0,0 +1,32 @@ +package io.github.alexzhirkevich.compottie.assets + +/** + * Used to fetch lottie assets that are not embedded to the animation JSON file + * */ +fun interface LottieAssetsFetcher { + + /** + * Fetch asset + * + * @param id unique asset id that is used for referring from animation layers + * @param path relative system path or web URL excluding file name. For example: + * + * - /path/to/images/ + * - https://example.com/images/ + * + * @param name asset name and extension (for example image.png) + * */ + suspend fun fetch(id: String, path: String, name: String): ByteArray? + + companion object { + fun Compound( + networkFetcher: LottieAssetsFetcher, + localFetcher: LottieAssetsFetcher, + cache: LottieAssetsCache + ): LottieAssetsFetcher = CompoundLottieAssetsFetcher(networkFetcher, localFetcher, cache) + } +} + +internal val NoOpAssetsFetcher = LottieAssetsFetcher { _, _, _ -> null } + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt new file mode 100644 index 00000000..722d2fe6 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie.assets + +interface LottieAssetsCache { + + suspend fun saveToCache(asset: ByteArray, id: String, path: String, name: String) + + suspend fun loadFromCache(id: String, path: String, name: String) : ByteArray? +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index cdaaa953..86c7aed1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -8,9 +8,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.schema.helpers.AnimatedTransform -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union @@ -32,6 +30,8 @@ internal class ContentGroup( private val boundsRect = MutableRect(0f,0f,0f,0f) override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + + if (hidden) { return } @@ -72,15 +72,15 @@ internal class ContentGroup( override fun getPath(frame: Int): Path { + path.reset() + if (hidden) { + return path + } matrix.reset() if (transform != null) { matrix.setFrom(transform.matrix(frame)) } - path.reset() - if (hidden) { - return path - } contents.fastForEachReversed { if (it is PathContent) { path.addPath(it.getPath(frame), matrix) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt new file mode 100644 index 00000000..87da9866 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt @@ -0,0 +1,4 @@ +package io.github.alexzhirkevich.compottie.internal.content + +interface ShapeModifierContent { +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 6820890c..1846e8d9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -5,9 +5,130 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientColors +import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientType +import kotlin.math.hypot +private val CACHE_LIMIT = 15 +internal fun GradientShader( + type: GradientType, + startPoint: AnimatedVector2, + endPoint: AnimatedVector2, + colors: GradientColors, + frame : Int, + matrix: Matrix, + cache : LinkedHashMap +) : Shader { + val start = startPoint.interpolated(frame) + val end = endPoint.interpolated(frame) -expect fun MakeLinearGradient( + colors.colors.numberOfColors = colors.numberOfColors + + val c = colors.colors.interpolated(frame) + + return if (type == GradientType.Linear) { + CachedLinearGradient( + from = Offset(start.x, start.y), + to = Offset(end.x, end.y), + colors = c.colors, + colorStops = c.colorStops, + tileMode = TileMode.Clamp, + matrix = matrix, + cache = cache + ) + } else { + val r = hypot((end.x - start.x), (end.y - start.y)) + + CachedRadialGradient( + radius = r, + center = Offset(start.x, start.y), + colors = c.colors, + colorStops = c.colorStops, + tileMode = TileMode.Clamp, + matrix = matrix, + cache = cache + ) + } +} + +private fun CachedLinearGradient( + from : Offset, + to : Offset, + colors : List, + colorStops: List, + tileMode: TileMode = TileMode.Clamp, + matrix: Matrix, + cache : LinkedHashMap, +) : Shader { + + var hash = from.hashCode() + hash = (hash * 31) + to.hashCode() + hash = (hash * 31) + colors.hashCode() + hash = (hash * 31) + tileMode.hashCode() + hash = (hash * 31) + matrix.hashCode() + + val cached = cache[hash] + + if (cached != null){ + cache.remove(hash) + cache[hash] = cached + return cached + } + + val shader = MakeLinearGradient(from, to, colors, colorStops, tileMode, matrix) + + if (cache.size >= CACHE_LIMIT){ + repeat(cache.size - CACHE_LIMIT + 1){ + cache.remove(cache.keys.first()) + } + } + + cache[hash] = shader + + return shader +} + +private fun CachedRadialGradient( + center : Offset, + radius : Float, + colors : List, + colorStops: List, + tileMode: TileMode = TileMode.Clamp, + matrix: Matrix, + cache : LinkedHashMap, +) : Shader { + + var hash = center.hashCode() + hash = (hash * 31) + radius.hashCode() + hash = (hash * 31) + colors.hashCode() + hash = (hash * 31) + tileMode.hashCode() + hash = (hash * 31) + matrix.hashCode() + + val cached = cache[hash] + + if (cached != null){ + cache.remove(hash) + cache[hash] = cached + return cached + } + + val shader = MakeRadialGradient(center, radius, colors, colorStops, tileMode, matrix) + + if (cache.size >= CACHE_LIMIT){ + repeat(cache.size - CACHE_LIMIT + 1){ + cache.remove(cache.keys.first()) + } + } + + cache[hash] = shader + + return shader +} + + + +internal expect fun MakeLinearGradient( from : Offset, to : Offset, colors : List, @@ -17,11 +138,12 @@ expect fun MakeLinearGradient( ) : Shader -expect fun MakeRadialGradient( +internal expect fun MakeRadialGradient( center : Offset, radius : Float, colors : List, colorStops: List, tileMode: TileMode = TileMode.Clamp, matrix: Matrix -) : Shader \ No newline at end of file +) : Shader + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt index a338b710..5cd13748 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt @@ -3,8 +3,8 @@ package io.github.alexzhirkevich.compottie.internal.schema import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer import io.github.alexzhirkevich.compottie.internal.schema.layers.NullLayer import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.schema.shapes.EllipseShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.FillShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFill @@ -14,7 +14,7 @@ import io.github.alexzhirkevich.compottie.internal.schema.shapes.RectShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStrokeShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule @@ -50,7 +50,7 @@ val LottieJson = Json { // subclass(Round::class) subclass(SolidStrokeShape::class) subclass(GradientStroke::class) - subclass(TrimPath::class) + subclass(TrimPathShape::class) subclass(TransformShape::class) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt new file mode 100644 index 00000000..34b3441e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + +interface Animated { + + fun interpolated(frame : Int) : T +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt similarity index 63% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt index 90c880f0..33132835 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt @@ -1,14 +1,13 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.animation -import androidx.compose.animation.core.AnimationVector2D import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.lerp import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonClassDiscriminator -import kotlin.time.Duration.Companion.milliseconds @OptIn(ExperimentalSerializationApi::class) @Serializable @@ -29,12 +28,7 @@ internal sealed interface AnimatedColor : Animated, Indexable { ) : AnimatedColor { @Transient - private val color: Color = Color( - red = value[0], - green = value[1], - blue = value[2], - alpha = value.getOrNull(3) ?: 1f - ) + private val color: Color = value.asColor() override fun interpolated(frame: Int) = color } @@ -57,20 +51,21 @@ internal sealed interface AnimatedColor : Animated, Indexable { @SerialName("to") val outTangent: FloatArray? = null, - ) : AnimatedColor { - - @Transient - private val animation = value.toColorAnimation() - - override fun interpolated(time: Int): Color { - return animation.getValueFromNanos( - playTimeNanos = time.milliseconds.inWholeNanoseconds, - ).let { - Color(it.v1,it.v2,it.v3,it.v4) - } + ) : AnimatedColor, Animated by KeyframeAnimation( + keyframes = value, + emptyValue = Color.Transparent, + map = { s, e, p -> + lerp(s.asColor(), e.asColor(), p) } - } + ) } +private fun FloatArray.asColor() = Color( + red = get(0), + green = get(1), + blue = get(2), + alpha = getOrNull(3) ?: 1f +) + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt similarity index 56% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt index 340ec26f..a727bd93 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.animation import androidx.compose.ui.graphics.Color import kotlinx.serialization.ExperimentalSerializationApi @@ -6,6 +6,7 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonClassDiscriminator +import kotlin.jvm.JvmInline internal class ColorsWithStops( val colorStops: List, @@ -22,6 +23,15 @@ internal class GradientColors( val numberOfColors: Int = 0 ) +@Serializable +@JvmInline +internal value class GradientType(val type : Byte) { + companion object { + val Linear = GradientType(1) + val Radial = GradientType(2) + } +} + @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") @@ -40,28 +50,30 @@ internal sealed interface AnimatedGradient : Animated { override var numberOfColors: Int = 0 private val colors by lazy { - ColorsWithStops( - colorStops = (0 until numberOfColors).map { - colorsVector[it * 4] - }, - colors = (0 until numberOfColors).map { - - val alpha = if (colorsVector.size == numberOfColors * 6) { - colorsVector[colorsVector.lastIndex - numberOfColors * 2 + (it + 1) * 2] - } else 1f - - Color( - red = colorsVector[it * 4 + 1], - green = colorsVector[it * 4 + 2], - blue = colorsVector[it * 4 + 3], - alpha = alpha - ) - } - ) + colorsVector.asGradient(numberOfColors) } override fun interpolated(frame: Int): ColorsWithStops { return colors } } -} \ No newline at end of file +} + +private fun FloatArray.asGradient(numberOfColors: Int) : ColorsWithStops = ColorsWithStops( + colorStops = (0 until numberOfColors).map { + this[it * 4] + }, + colors = (0 until numberOfColors).map { + + val alpha = if (size == numberOfColors * 6) { + this[lastIndex - numberOfColors * 2 + (it + 1) * 2] + } else 1f + + Color( + red = this[it * 4 + 1], + green = this[it * 4 + 2], + blue = this[it * 4 + 3], + alpha = alpha + ) + } +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt new file mode 100644 index 00000000..c0dba478 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt @@ -0,0 +1,59 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Bezier +import io.github.alexzhirkevich.compottie.internal.schema.helpers.CubicCurveData +import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.schema.helpers.toShapeData +import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("a") +internal sealed interface AnimatedShape : Animated, Indexable { + + @SerialName("0") + class Default( + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null, + + @SerialName("k") + val bezier : Bezier + ) : AnimatedShape { + + private val shapeData = bezier.toShapeData() + + override fun interpolated(frame: Int): ShapeData { + return shapeData + } + } + + @SerialName("1") + @Serializable + class Keyframed( + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null, + + @SerialName("k") + val keyframes : List + ) : AnimatedShape { + + @Transient + private var tempShapeData = ShapeData() + + + override fun interpolated(frame: Int): ShapeData { + TODO("Not yet implemented") + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt new file mode 100644 index 00000000..aa343c7c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt @@ -0,0 +1,117 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + +import androidx.compose.ui.graphics.Matrix +import io.github.alexzhirkevich.compottie.internal.utils.Math +import io.github.alexzhirkevich.compottie.internal.utils.preConcat +import io.github.alexzhirkevich.compottie.internal.utils.preRotate +import io.github.alexzhirkevich.compottie.internal.utils.preScale +import io.github.alexzhirkevich.compottie.internal.utils.preTranslate +import io.github.alexzhirkevich.compottie.internal.utils.setValues +import kotlin.math.cos +import kotlin.math.sin +import kotlin.math.tan + +internal abstract class AnimatedTransform { + + abstract val anchorPoint: AnimatedVector2? + abstract val position: AnimatedVector2? + abstract val scale: AnimatedVector2? + abstract val rotation: AnimatedValue? + abstract val opacity: AnimatedValue? + abstract val skew: AnimatedValue? + abstract val skewAxis: AnimatedValue? + + private val matrix: Matrix = Matrix() + + private val skewMatrix1: Matrix by lazy { + Matrix() + } + + private val skewMatrix2: Matrix by lazy { + Matrix() + } + + private val skewMatrix3: Matrix by lazy { + Matrix() + } + + private val skewValues: FloatArray by lazy { + FloatArray(9) + } + + fun matrix(frame: Int): Matrix { + matrix.reset() + + position?.interpolated(frame) + ?.takeIf { it.x != 0f || it.y != 0f } + ?.let { + matrix.preTranslate(it.x, it.y) + } + + rotation?.interpolated(frame) + ?.takeIf { it != 0f } + ?.let(matrix::preRotate) + + skew?.interpolated(frame) + ?.takeIf { it != 0f } + ?.let { sk -> + val skewAngle = skewAxis?.interpolated(frame) + + val mCos = if (skewAngle == null) + 0f + else cos(Math.toRadians(-skewAngle + 90)) + + val mSin = if (skewAngle == null) + 1f + else sin(Math.toRadians(-skewAngle + 90)) + + val aTan = tan(Math.toRadians(sk)) + + clearSkewValues() + skewValues[0] = mCos + skewValues[1] = mSin + skewValues[3] = -mSin + skewValues[4] = mCos + skewValues[8] = 1f + skewMatrix1.setValues(skewValues) + clearSkewValues() + skewValues[0] = 1f + skewValues[3] = aTan + skewValues[4] = 1f + skewValues[8] = 1f + skewMatrix2.setValues(skewValues) + clearSkewValues() + skewValues[0] = mCos + skewValues[1] = -mSin + skewValues[3] = mSin + skewValues[4] = mCos + skewValues[8] = 1f + + skewMatrix3.setValues(skewValues) + skewMatrix2.preConcat(skewMatrix1) + skewMatrix3.preConcat(skewMatrix2) + matrix.preConcat(skewMatrix3) + } + + scale?.interpolated(frame) + ?.takeIf { it.x != 0f || it.y != 0f } + ?.let { + matrix.preScale(it.x / 100f, it.y / 100f) + } + + + anchorPoint?.interpolated(frame) + ?.takeIf { it.x != 0f || it.y != 0f } + ?.let { + matrix.preTranslate(-it.x, -it.y) + } + + return matrix + } + + private fun clearSkewValues() { + for (i in 0..8) { + skewValues[i] = 0f + } + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt new file mode 100644 index 00000000..be666a69 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt @@ -0,0 +1,48 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.util.lerp +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("a") +internal sealed interface AnimatedValue : Animated, Indexable { + + @Serializable + @SerialName("0") + class Default( + @SerialName("k") + val value: Float, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null + ) : AnimatedValue { + + override fun interpolated(frame: Int): Float = value + } + + @Serializable + @SerialName("1") + class Keyframed( + @SerialName("k") + val value: List, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null + ) : AnimatedValue, Animated by KeyframeAnimation( + keyframes = value, + emptyValue = 1f, + map = { s, e, p -> lerp(s[0], e[0], p) } + ) +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt similarity index 55% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt index 2a5e7a3a..78873e6d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt @@ -1,28 +1,23 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.animation -import androidx.compose.animation.core.AnimationVector -import androidx.compose.animation.core.AnimationVector2D -import kotlinx.serialization.DeserializationStrategy +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.util.lerp import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonClassDiscriminator -import kotlinx.serialization.json.JsonContentPolymorphicSerializer -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.int -import kotlinx.serialization.json.jsonObject -import kotlinx.serialization.json.jsonPrimitive -import kotlin.time.Duration.Companion.milliseconds + +internal typealias Vec2 = Offset @OptIn(ExperimentalSerializationApi::class) @Serializable() @JsonClassDiscriminator("a") -internal sealed interface AnimatedVector2 : Animated, Indexable { +internal sealed interface AnimatedVector2 : Animated, Indexable { @Serializable @SerialName("0") - data class Default( + class Default( @SerialName("k") val value: FloatArray, @@ -34,9 +29,9 @@ internal sealed interface AnimatedVector2 : Animated, Indexab ) : AnimatedVector2 { @Transient - private val animationVector = AnimationVector(value[0], value[1]) + private val animationVector = Offset(value[0], value[1]) - override fun interpolated(frame: Int): AnimationVector2D = animationVector + override fun interpolated(frame: Int): Vec2 = animationVector } @Serializable @@ -57,22 +52,13 @@ internal sealed interface AnimatedVector2 : Animated, Indexab @SerialName("to") val outTangent: FloatArray? = null, - ) : AnimatedVector2 { - - @Transient - private val animation = value.to2DAnimation() - - override fun interpolated(frame: Int): AnimationVector2D { - return animation.getValueFromNanos( - playTimeNanos = frame.milliseconds.inWholeNanoseconds, - ) - } - } + ) : AnimatedVector2, Animated by KeyframeAnimation( + keyframes = value, + emptyValue = Offset.Zero, + map = { s, e, p -> Offset(lerp(s[0], e[0], p), lerp(s[1], e[1], p)) } + ) } -val AnimationVector2D.x : Float get() = v1 -val AnimationVector2D.y : Float get() = v2 - //internal class AnimatedVectorSerializer : JsonContentPolymorphicSerializer( // AnimatedVector2::class //) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BezierCurveInterpolation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt similarity index 51% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BezierCurveInterpolation.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt index 7e8edcbc..ba83048b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BezierCurveInterpolation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt @@ -1,9 +1,9 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.animation import kotlinx.serialization.Serializable @Serializable -class BezierCurveInterpolation( +class BezierInterpolation( val x : FloatArray, val y : FloatArray ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Indexable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Indexable.kt similarity index 55% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Indexable.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Indexable.kt index a22a342e..1fc705a4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Indexable.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Indexable.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.animation internal interface Indexable { val expression : String ? diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt new file mode 100644 index 00000000..95c9a94a --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt @@ -0,0 +1,22 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + +import androidx.compose.animation.core.CubicBezierEasing +import androidx.compose.animation.core.Easing +import androidx.compose.animation.core.LinearEasing + +internal abstract class Keyframe { + abstract val start: T? + abstract val end: T? + abstract val time: Int + abstract val inValue: BezierInterpolation? + abstract val outValue: BezierInterpolation? + + val easing: Easing by lazy { + val i = inValue + val o = outValue + + if (o != null && i != null) { + CubicBezierEasing(o.x[0], o.y[0], i.x[0], i.y[0]) + } else LinearEasing + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt new file mode 100644 index 00000000..97d15ab8 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt @@ -0,0 +1,87 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + + +internal class KeyframeAnimation( + keyframes: List>, + private val emptyValue : T, + val map : (start : K, end : K, Float) -> T, +) : Animated { + + private val sortedKeyframes = keyframes.sortedBy { it.time } + + private val firstFrame: Int by lazy { + sortedKeyframes.first().time + } + + private val lastFrame: Int by lazy { + sortedKeyframes.last().time + } + + private val initialValue by lazy { + map( + requireNotNull( + sortedKeyframes[0].start, + InvalidKeyframeError + ), + requireNotNull( + sortedKeyframes[0].end ?: sortedKeyframes.getOrNull(1)?.start, + InvalidKeyframeError + ), + 0f + ) + } + + private val targetValue by lazy { + map( + requireNotNull( + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.start, + InvalidKeyframeError + ), + requireNotNull( + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.end + ?: sortedKeyframes.last().start, + InvalidKeyframeError + ), + 1f + ) + } + + override fun interpolated(frame: Int): T { + return when { + sortedKeyframes.isEmpty() -> emptyValue + frame >= lastFrame -> targetValue + frame <= firstFrame -> initialValue + else -> { + var kfIdx = sortedKeyframes.lastIndex + var progress = 1f + + for (i in 0..? = null, + + @SerialName("e") + override val end: List? = null, + + @SerialName("t") + override val time: Int, + + @SerialName("i") + override val inValue : BezierInterpolation? = null, + + @SerialName("o") + override val outValue : BezierInterpolation? = null, +) : Keyframe>() { +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt new file mode 100644 index 00000000..25dbb3ce --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt @@ -0,0 +1,26 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class ValueKeyframe( + + @SerialName("s") + override val start: FloatArray? = null, + + @SerialName("e") + override val end: FloatArray? = null, + + @SerialName("t") + override val time: Int, + + @SerialName("i") + override val inValue : BezierInterpolation? = null, + + @SerialName("o") + override val outValue : BezierInterpolation? = null, +) : Keyframe() + + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt new file mode 100644 index 00000000..3608c36c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt @@ -0,0 +1,26 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class VectorKeyframe( + + @SerialName("s") + override val start : FloatArray? = null, + + @SerialName("e") + override val end : FloatArray? = null, + + @SerialName("t") + override val time : Int, + + @SerialName("i") + override val inValue : BezierInterpolation? = null, + + @SerialName("o") + override val outValue : BezierInterpolation? = null +) : Keyframe() + + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt index 0fbda026..a3fc5dcd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt @@ -1,10 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.schema.assets +import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.platform.fromBytes -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.PolymorphicSerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -49,17 +51,30 @@ internal sealed interface LottieAsset { private val h: Int? = null, ) : LottieFileAsset { - val width : Int get() = w ?: bitmap?.width ?: 0 + val width: Int get() = w ?: bitmap?.width ?: 0 - val height : Int get() = h ?: bitmap?.height ?: 0 + val height: Int get() = h ?: bitmap?.height ?: 0 @OptIn(ExperimentalEncodingApi::class) @Transient - val bitmap: ImageBitmap? = fileName + var bitmap: ImageBitmap? = fileName .takeIf(String::isBase64Data::get) ?.substringAfter("base64,") ?.trim() - ?.let { ImageBitmap.fromBytes(Base64.decode(it)) } + ?.let { + ImageBitmap.fromBytes(Base64.decode(it)) + }?.let(::transformBitmap) + private set + + fun setBitmap(bitmap: ImageBitmap) { + this.bitmap = transformBitmap(bitmap) + } + + private fun transformBitmap(bitmap: ImageBitmap) : ImageBitmap { + return if (w != null && w != bitmap.width || h != null && h != bitmap.width) { + bitmap.resize(w ?: bitmap.width, h ?: bitmap.height) + } else bitmap + } } @Serializable @@ -72,6 +87,21 @@ internal sealed interface LottieAsset { ) : LottieAsset } +private val emptyPaint = Paint() +private fun ImageBitmap.resize(w : Int, h : Int) : ImageBitmap { + val bitmap = ImageBitmap(w, h) + + Canvas(bitmap).apply { + drawImageRect( + image = this@resize, + dstSize = IntSize(w, h), + paint = emptyPaint + ) + } + + return bitmap +} + private val String.isBase64Data : Boolean get() = (startsWith("data:") && indexOf("base64,") > 0) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt index ad01b31c..709ff350 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.assets -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt internal interface LottieFileAsset : LottieAsset { val path : String diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt deleted file mode 100644 index e1c6b7e6..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/AnimatedTransform.kt +++ /dev/null @@ -1,113 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers - -import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.x -import io.github.alexzhirkevich.compottie.internal.schema.properties.y -import io.github.alexzhirkevich.compottie.internal.utils.Math -import io.github.alexzhirkevich.compottie.internal.utils.preConcat -import io.github.alexzhirkevich.compottie.internal.utils.preRotate -import io.github.alexzhirkevich.compottie.internal.utils.preScale -import io.github.alexzhirkevich.compottie.internal.utils.preTranslate -import io.github.alexzhirkevich.compottie.internal.utils.setValues -import kotlin.math.cos -import kotlin.math.sin -import kotlin.math.tan - -internal abstract class AnimatedTransform { - - abstract val anchorPoint: AnimatedVector2? - abstract val position: AnimatedVector2? - abstract val scale: AnimatedVector2? - abstract val rotation: AnimatedValue? - abstract val opacity: AnimatedValue? - abstract val skew: AnimatedValue? - abstract val skewAxis: AnimatedValue? - - private val matrix: Matrix = Matrix() - - private val skewMatrix1: Matrix by lazy { - Matrix() - } - - private val skewMatrix2: Matrix by lazy { - Matrix() - } - - private val skewMatrix3: Matrix by lazy { - Matrix() - } - - private val skewValues: FloatArray by lazy { - FloatArray(9) - } - - fun matrix(frame: Int): Matrix { - matrix.reset() - - position?.interpolated(frame)?.let { - if (it.x != 0f || it.y != 0f) { - matrix.preTranslate(it.x, it.y) - } - } - - rotation?.interpolated(frame)?.takeIf { it != 0f }?.let(matrix::preRotate) -// -// skew?.interpolated(frame)?.let { sk -> -// val skewAngle = skewAxis?.interpolated(frame) -// -// val mCos = if (skewAngle == null) -// 0f else cos(Math.toRadians(-skewAngle + 90)) -// -// val mSin = if (skewAngle == null) -// 1f else sin(Math.toRadians(-skewAngle + 90)) -// -// val aTan = tan(Math.toRadians(sk)) -// clearSkewValues() -// skewValues[0] = mCos -// skewValues[1] = mSin -// skewValues[3] = -mSin -// skewValues[4] = mCos -// skewValues[8] = 1f -// skewMatrix1.setValues(skewValues) -// clearSkewValues() -// skewValues[0] = 1f -// skewValues[3] = aTan -// skewValues[4] = 1f -// skewValues[8] = 1f -// skewMatrix2.setValues(skewValues) -// clearSkewValues() -// skewValues[0] = mCos -// skewValues[1] = -mSin -// skewValues[3] = mSin -// skewValues[4] = mCos -// skewValues[8] = 1f -// skewMatrix3.setValues(skewValues) -// skewMatrix2.preConcat(skewMatrix1) -// skewMatrix3.preConcat(skewMatrix2) -// matrix.preConcat(skewMatrix3) -// } - - scale?.interpolated(frame)?.takeIf { it.x != 0f || it.y != 0f }?.let { - matrix.preScale(it.x/100f, it.y/100f) - } - - - anchorPoint?.interpolated(frame)?.let { - if (it.x != 0f || it.y != 0f) { - matrix.preTranslate(-it.x, -it.y) - } - } - - return matrix - } - - private fun clearSkewValues() { - for (i in 0..8) { - skewValues[i] = 0f - } - } -} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt new file mode 100644 index 00000000..98eceed2 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt @@ -0,0 +1,41 @@ +package io.github.alexzhirkevich.compottie.internal.schema.helpers + +import androidx.compose.ui.geometry.Offset +import io.github.alexzhirkevich.compottie.internal.schema.helpers.CubicCurveData +import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class Bezier( + + @SerialName("c") + val isClosed : Boolean = false, + + @SerialName("i") + val inTangents : List , + + @SerialName("o") + val outTangents : List, + + @SerialName("v") + val vertices : List, +) + +internal fun Bezier.toShapeData() : ShapeData { + + val curves = vertices.indices.map { idx -> + CubicCurveData( + controlPoint1 = inTangents[idx].toOffset(), + controlPoint2 = outTangents[idx].toOffset(), + vertex = vertices[idx].toOffset(), + ) + }.toMutableList() + + return ShapeData( + curves = curves, + isClosed = isClosed, + initialPoint = curves.getOrNull(0)?.vertex ?: Offset.Zero + ) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BooleanInt.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/BooleanInt.kt similarity index 79% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BooleanInt.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/BooleanInt.kt index ac925176..29c97c2f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/BooleanInt.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/BooleanInt.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.helpers import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/CubicCurveData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/CubicCurveData.kt new file mode 100644 index 00000000..41e03784 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/CubicCurveData.kt @@ -0,0 +1,9 @@ +package io.github.alexzhirkevich.compottie.internal.schema.helpers + +import androidx.compose.ui.geometry.Offset + +internal class CubicCurveData( + var controlPoint1: Offset = Offset.Zero, + var controlPoint2: Offset = Offset.Zero, + var vertex: Offset = Offset.Zero +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/MatteMode.kt similarity index 83% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/MatteMode.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/MatteMode.kt index 5defc945..712846ad 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/MatteMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/MatteMode.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.helpers import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt new file mode 100644 index 00000000..4ae194ae --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt @@ -0,0 +1,66 @@ +package io.github.alexzhirkevich.compottie.internal.schema.helpers + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.util.lerp +import kotlin.math.min + +internal class ShapeData( + var curves: MutableList = mutableListOf(), + var initialPoint: Offset = Offset.Zero, + var isClosed: Boolean = false +) { + + fun interpolateBetween( + shapeData1: ShapeData, + shapeData2: ShapeData, + percentage: Float + ) { + isClosed = shapeData1.isClosed || shapeData2.isClosed + + val points = min(shapeData1.curves.size, shapeData2.curves.size) + + if (curves.size < points) { + for (i in curves.size until points) { + curves.add(CubicCurveData()) + } + } else if (curves.size > points) { + for (i in curves.size - 1 downTo points) { + curves.removeAt(curves.size - 1) + } + } + + val initialPoint1 = shapeData1.initialPoint + val initialPoint2 = shapeData2.initialPoint + + initialPoint = Offset( + lerp(initialPoint1.x, initialPoint2.x, percentage), + lerp(initialPoint1.y, initialPoint2.y, percentage) + ) + + for (i in curves.indices.reversed()) { + val curve1: CubicCurveData = shapeData1.curves[i] + val curve2: CubicCurveData = shapeData2.curves[i] + + val cp11 = curve1.controlPoint1 + val cp21 = curve1.controlPoint2 + val vertex1 = curve1.vertex + + val cp12 = curve2.controlPoint1 + val cp22 = curve2.controlPoint2 + val vertex2 = curve2.vertex + + curves[i].controlPoint1 = Offset( + lerp(cp11.x, cp12.x, percentage), + lerp(cp11.y, cp12.y, percentage) + ) + curves[i].controlPoint2 = Offset( + lerp(cp21.x, cp22.x, percentage), + lerp(cp21.y, cp22.y, percentage) + ) + curves[i].vertex = Offset( + lerp(vertex1.x, vertex2.x, percentage), + lerp(vertex1.y, vertex2.y, percentage) + ) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt index befdfa14..b0f829ee 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt @@ -1,7 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.schema.helpers -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/TrimPathType.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/TrimPathType.kt similarity index 68% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/TrimPathType.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/TrimPathType.kt index 090d831f..4a576171 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/TrimPathType.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/TrimPathType.kt @@ -1,7 +1,6 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties +package io.github.alexzhirkevich.compottie.internal.schema.helpers import kotlinx.serialization.Serializable -import kotlinx.serialization.builtins.TripleSerializer import kotlin.jvm.JvmInline @JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt index e46c62f2..96aa65d2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt @@ -7,10 +7,10 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.services.LottieImageService +import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -87,7 +87,7 @@ internal class ImageLayer( private val paint = Paint() private val service by lazy { - serviceLocator?.get() + serviceLocator?.get() } private val asset : LottieAsset.ImageAsset? by lazy { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt index ef543d28..2c9de4fa 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.layers import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt index 6f2320f2..7976589c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt @@ -3,12 +3,10 @@ package io.github.alexzhirkevich.compottie.internal.schema.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.schema.effects.Effect import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt index 271bb811..e25628be 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt @@ -3,14 +3,14 @@ package io.github.alexzhirkevich.compottie.internal.schema.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.schema.effects.Effect import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.findTransform import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -88,13 +88,13 @@ internal class ShapeLayer( name = name, hidden = hidden, contents = shapes, - transform = transform + transform = shapes.findTransform() ).apply { setContents(emptyList(), emptyList()) } override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame : Int) { - contentGroup.draw(canvas, parentMatrix, parentAlpha, frame) + contentGroup.draw(canvas, parentMatrix, parentAlpha, frame) } override fun getBounds( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt index 339e4973..58218d0b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt @@ -2,8 +2,8 @@ package io.github.alexzhirkevich.compottie.internal.schema.layers import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.MatteMode +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt deleted file mode 100644 index 34f96c78..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Animated.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -interface Animated { - - fun interpolated(frame : Int) : T -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedValue.kt deleted file mode 100644 index f41b0ced..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/AnimatedValue.kt +++ /dev/null @@ -1,57 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import androidx.compose.animation.core.AnimationVector -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient -import kotlinx.serialization.json.JsonClassDiscriminator -import kotlin.time.Duration.Companion.milliseconds - -@OptIn(ExperimentalSerializationApi::class) -@Serializable -@JsonClassDiscriminator("a") -internal sealed interface AnimatedValue : Animated, Indexable { - - - @Serializable - @SerialName("0") - class Default( - @SerialName("k") - val value : Float, - - @SerialName("x") - override val expression : String? = null, - - @SerialName("ix") - override val index : String? = null - ) : AnimatedValue { - - override fun interpolated(frame: Int): Float = value - } - - @Serializable - @SerialName("1") - class Keyframed( - @SerialName("k") - val value : List, - - @SerialName("x") - override val expression : String? = null, - - @SerialName("ix") - override val index : String? = null - ) : AnimatedValue { - - @Transient - private val keyframes = value.toAnimation() - - override fun interpolated(frame: Int): Float { - return keyframes.getValueFromNanos( - playTimeNanos = frame.milliseconds.inWholeNanoseconds, - ).value - } - } -} - -private val ZeroVector = AnimationVector(0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt deleted file mode 100644 index 35eaf6cc..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/Keyframe.kt +++ /dev/null @@ -1,132 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import androidx.compose.animation.VectorConverter -import androidx.compose.animation.core.Animation -import androidx.compose.animation.core.AnimationVector -import androidx.compose.animation.core.AnimationVector2D -import androidx.compose.animation.core.AnimationVector4D -import androidx.compose.animation.core.Easing -import androidx.compose.animation.core.LinearEasing -import androidx.compose.animation.core.TwoWayConverter -import androidx.compose.animation.core.createAnimation -import androidx.compose.animation.core.keyframes -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.colorspace.ColorSpace - -internal interface Keyframe { - val start : T? - val end : T? - val time : Int - val easing : Easing -} - -internal fun List.toAnimation() = - asComposeKeyframes { it[0] }.vectorize( - converter = TwoWayConverter( - convertToVector = { - AnimationVector(it) - }, - convertFromVector = { it.value } - ) -).createAnimation( - initialValue = AnimationVector(first().start?.getOrNull(0) ?: 0f), - targetValue = AnimationVector( - last().start?.getOrNull(0) ?: getOrNull(lastIndex-1)?.end?.getOrNull(0) ?: 0f - ), - initialVelocity = ZeroVector1d -) - - -internal fun List.to2DAnimation(): Animation { - - val start = first().start - val end = last().start ?: getOrNull(lastIndex-1)?.end - - val initialValue = if (start != null){ - AnimationVector(start[0], start[1]) - } else { - ZeroVector2D - } - - val targetValue = if (end != null){ - AnimationVector(end[0], end[1]) - } else { - ZeroVector2D - } - - return asComposeKeyframes { it } - .vectorize( - converter = TwoWayConverter( - convertToVector = { - AnimationVector(it[0], it[1]) - }, - convertFromVector = { - floatArrayOf(it.v1, it.v2) - } - ) - ).createAnimation( - initialValue = initialValue, - targetValue = targetValue, - initialVelocity = ZeroVector2D - ) -} -internal fun List.toColorAnimation( - colorSpace: ColorSpace = first().start?.toColor()?.colorSpace ?: Color.Black.colorSpace -): Animation { - - val start = first().start - val end = last().end ?: getOrNull(lastIndex-1)?.end - - val initialValue = if (start != null){ - AnimationVector( - start.getOrNull(3) ?: 1f, - start[0], - start[1], - start[2], - ) - } else { - ZeroVector4D - } - - val targetValue = if (end != null){ - AnimationVector( - end.getOrNull(3) ?: 1f, - end[0], - end[1], - end[2], - ) - } else { - ZeroVector4D - } - - return asComposeKeyframes { it.toColor() } - .vectorize( - converter = Color.VectorConverter(colorSpace) - ).createAnimation( - initialValue = initialValue, - targetValue = targetValue, - initialVelocity = ZeroVector4D - ) -} - -private fun List>.asComposeKeyframes( - map : (T) -> R, -) = keyframes { - durationMillis = last().time - - forEachIndexed { idx, it -> - it.start?.let { s-> - map(s) at it.time using (it.easing ?: LinearEasing) - } - - it.end?.takeIf { idx != lastIndex && idx != 0 }?.let{ e -> - map(e) at get(idx-1).time - } - } -} - -private fun FloatArray.toColor() = Color(this[0], this[1], this[2], getOrNull(3) ?: 0f) - -private val ZeroVector1d = AnimationVector(0f) -private val ZeroVector2D = AnimationVector(0f,0f,) -private val ZeroVector4D = AnimationVector(0f,0f, 0f, 0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt deleted file mode 100644 index 2a93beb4..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperties.kt +++ /dev/null @@ -1,56 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonClassDiscriminator - -@OptIn(ExperimentalSerializationApi::class) -@Serializable -@JsonClassDiscriminator("a") -internal sealed interface ShapeProperties : Indexable { - - fun interpolated(time : Int) : ShapeProperty - - @Serializable - @SerialName("0") - class Default( - @SerialName("k") - val value : ShapeProperty, - - @SerialName("x") - override val expression : String? = null, - - @SerialName("ix") - override val index: String? = null, - - ) : ShapeProperties { - override fun interpolated(time: Int): ShapeProperty { - return value - } - } - - @SerialName("1") - @Serializable - class Keyframed( - - @SerialName("k") - val value : ShapePropertyKeyframe, - - @SerialName("x") - override val expression : String? = null, - - @SerialName("ix") - override val index: String? = null, - - @SerialName("ti") - val inTangent: FloatArray? = null, - - @SerialName("to") - val outTangent: FloatArray? = null, - ) : ShapeProperties { - override fun interpolated(time: Int): ShapeProperty { - TODO("Not yet implemented") - } - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt deleted file mode 100644 index ff555384..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapeProperty.kt +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - - -@Serializable -internal class ShapeProperty( - - @SerialName("c") - val closed : Boolean, - - /** - * Bezier curve In points. Array of 2 dimensional arrays - * */ - @SerialName("i") - val inPoints : List, - - /** - * Bezier curve Out points. Array of 2 dimensional arrays. - * */ - @SerialName("o") - val outPoints : List, - - /** - * Bezier curve Vertices. Array of 2 dimensional arrays. - * */ - @SerialName("v") - val vertices : List -) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt deleted file mode 100644 index 13d881fc..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ShapePropertyKeyframe.kt +++ /dev/null @@ -1,24 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - - -@Serializable -internal class ShapePropertyKeyframe( - - @SerialName("s") - val start : List, - - @SerialName("e") - val end : List, - - @SerialName("t") - val time: Int, - - @SerialName("i") - val inValue : BezierCurveInterpolation, - - @SerialName("o") - val outValue : BezierCurveInterpolation, -) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt deleted file mode 100644 index c7d5ab33..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/ValueKeyframe.kt +++ /dev/null @@ -1,44 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import androidx.compose.animation.core.AnimationVector -import androidx.compose.animation.core.CubicBezierEasing -import androidx.compose.animation.core.LinearEasing -import androidx.compose.animation.core.TwoWayConverter -import androidx.compose.animation.core.createAnimation -import androidx.compose.animation.core.keyframes -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -@Serializable -internal class ValueKeyframe( - - @SerialName("s") - override val start: FloatArray? = null, - - @SerialName("e") - override val end: FloatArray? = null, - - @SerialName("t") - override val time: Int, - - @SerialName("i") - val inValue : BezierCurveInterpolation? = null, - - @SerialName("o") - val outValue : BezierCurveInterpolation? = null, -) : Keyframe { - - @Transient - override val easing = if (inValue != null && outValue != null) { - CubicBezierEasing( - inValue.x[0], - inValue.y[0], - outValue.x[0], - outValue.y[0] - ) - } else LinearEasing -} - - - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt deleted file mode 100644 index 7a58b449..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/properties/VectorKeyframe.kt +++ /dev/null @@ -1,50 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.properties - -import androidx.compose.animation.VectorConverter -import androidx.compose.animation.core.Animation -import androidx.compose.animation.core.AnimationVector -import androidx.compose.animation.core.AnimationVector2D -import androidx.compose.animation.core.AnimationVector4D -import androidx.compose.animation.core.CubicBezierEasing -import androidx.compose.animation.core.LinearEasing -import androidx.compose.animation.core.TargetBasedAnimation -import androidx.compose.animation.core.TwoWayConverter -import androidx.compose.animation.core.createAnimation -import androidx.compose.animation.core.keyframes -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.colorspace.ColorSpace -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient - -@Serializable -class VectorKeyframe( - - @SerialName("s") - override val start : FloatArray? = null, - - @SerialName("e") - override val end : FloatArray? = null, - - @SerialName("t") - override val time : Int, - - @SerialName("i") - val inValue : BezierCurveInterpolation? = null, - - @SerialName("o") - val outValue : BezierCurveInterpolation? = null -) : Keyframe{ - - @Transient - override val easing = if (inValue != null && outValue != null){ - CubicBezierEasing( - outValue.x[0], outValue.y[0], - inValue.x[0], inValue.y[0], - ) - } else LinearEasing -} - - - - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt index d3a6db6e..ae57f503 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt @@ -16,8 +16,7 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.Serializable @@ -109,14 +108,13 @@ internal abstract class BaseStrokeShape() : DrawingContent { override fun setContents(contentsBefore: List, contentsAfter: List) { - val trimPathContentBefore: TrimPath? = contentsBefore.firstOrNull { - it is TrimPath && it.type == TrimPathType.Companion.Individually - } as TrimPath? + val trimPathContentBefore: TrimPathShape? = contentsBefore + .firstOrNull(Content::isIndividualTrimPath) as TrimPathShape? var currentPathGroup: PathGroup? = null contentsAfter.fastForEachReversed { content -> - if (content is TrimPath && content.type == TrimPathType.Individually) { + if (content.isIndividualTrimPath()) { currentPathGroup?.let(pathGroups::add) currentPathGroup = PathGroup(content) @@ -129,16 +127,14 @@ internal abstract class BaseStrokeShape() : DrawingContent { } contentsAfter.fastForEachReversed { content -> - if (content is TrimPath && content.type == TrimPathType.Individually) { + if (content.isIndividualTrimPath()) { currentPathGroup?.let(pathGroups::add) currentPathGroup = PathGroup(content) } else if (content is PathContent) { if (currentPathGroup == null) { - currentPathGroup = PathGroup( - trimPathContentBefore - ) + currentPathGroup = PathGroup(trimPathContentBefore) } currentPathGroup!!.paths.add(content) } @@ -271,7 +267,7 @@ internal abstract class BaseStrokeShape() : DrawingContent { } private class PathGroup( - val trimPath: TrimPath?, + val trimPath: TrimPathShape?, ) { val paths: MutableList = mutableListOf() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt index c7f1fa2d..d7522b41 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt @@ -4,10 +4,7 @@ import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.properties.x -import io.github.alexzhirkevich.compottie.internal.schema.properties.y +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -67,7 +64,7 @@ internal class EllipseShape( override fun setContents(contentsBefore: List, contentsAfter: List) { for (i in contentsBefore.indices) { val content = contentsBefore[i] - if (content is TrimPath && content.type == TrimPathType.Simultaneously) { + if (content.isSimultaneousTrimPath()) { trimPaths.addTrimPath(content) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt index aaab7762..a8449906 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt @@ -10,9 +10,9 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt index 53d53981..ba4f4673 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt @@ -1,30 +1,25 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.Shader -import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.platform.MakeLinearGradient -import io.github.alexzhirkevich.compottie.internal.platform.MakeRadialGradient +import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors -import io.github.alexzhirkevich.compottie.internal.schema.properties.x -import io.github.alexzhirkevich.compottie.internal.schema.properties.y +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientColors +import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientType import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import kotlin.jvm.JvmInline -import kotlin.math.hypot +import kotlinx.serialization.Transient @Serializable @SerialName("gf") @@ -67,13 +62,20 @@ internal class GradientFill( val colors : GradientColors, ) : Shape, DrawingContent { - private val path = Path() + @Transient + private val path = Path() + @Transient private var paths: List = emptyList() + @Transient private val paint = Paint() + @Transient + private val gradientCache = LinkedHashMap() + + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { paint.alpha = if (opacity != null) { @@ -83,7 +85,15 @@ internal class GradientFill( parentAlpha } - paint.shader = GradientShader(type, startPoint, endPoint, colors, frame,parentMatrix) + paint.shader = GradientShader( + type = type, + startPoint = startPoint, + endPoint = endPoint, + colors = colors, + frame = frame, + matrix = parentMatrix, + cache = gradientCache + ) } override fun getBounds( @@ -111,50 +121,3 @@ internal class GradientFill( } } -internal fun GradientShader( - type: GradientType, - startPoint: AnimatedVector2, - endPoint: AnimatedVector2, - colors: GradientColors, - frame : Int, - matrix: Matrix -) : Shader { - val start = startPoint.interpolated(frame) - val end = endPoint.interpolated(frame) - - colors.colors.numberOfColors = colors.numberOfColors - - val c = colors.colors.interpolated(frame) - - return if (type == GradientType.Linear) { - MakeLinearGradient( - from = Offset(start.x, start.y), - to = Offset(end.x, end.y), - colors = c.colors, - colorStops = c.colorStops, - tileMode = TileMode.Clamp, - matrix = matrix, - ) - } else { - val r = hypot((end.x - start.x), (end.y - start.y)) - - MakeRadialGradient( - radius = r, - center = Offset(start.x, start.y), - colors = c.colors, - colorStops = c.colorStops, - tileMode = TileMode.Clamp, - matrix = matrix - ) - } -} - - -@Serializable -@JvmInline -internal value class GradientType(val type : Byte) { - companion object { - val Linear = GradientType(1) - val Radial = GradientType(2) - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt index 2ca45c0f..b19da0f0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt @@ -3,10 +3,12 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.GradientColors -import io.github.alexzhirkevich.compottie.internal.utils.preScale +import androidx.compose.ui.graphics.Shader +import io.github.alexzhirkevich.compottie.internal.platform.GradientShader +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientColors +import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -67,6 +69,9 @@ internal class GradientStroke( @Transient private val boundsRect = MutableRect(0f,0f,0f,0f) + @Transient + private val gradientCache = LinkedHashMap() + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { getBounds(boundsRect, parentMatrix, false, frame) @@ -77,7 +82,8 @@ internal class GradientStroke( endPoint = endPoint, colors = colors, frame = frame, - matrix = parentMatrix + matrix = parentMatrix, + cache = gradientCache ) super.draw(canvas, parentMatrix, parentAlpha, frame) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt index f645c3bf..a2045327 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt @@ -29,5 +29,5 @@ internal class GroupShape( name = name, hidden = hidden, contents = items, - transform = items.lastOrNull { it is TransformShape } as? TransformShape? -) + transform = items.findTransform() +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt deleted file mode 100644 index 013c855a..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Path.kt +++ /dev/null @@ -1,53 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes -// -//import androidx.compose.ui.graphics.Path -//import io.github.alexzhirkevich.compottie.internal.schema.properties.ShapeProperties -//import kotlinx.serialization.SerialName -//import kotlinx.serialization.Serializable -//import kotlinx.serialization.Transient -// -//@Serializable -//@SerialName("sh") -//internal class Path( -// @SerialName("mn") -// override val matchName : String? = null, -// -// @SerialName("nm") -// override val name : String? = null, -// -// @SerialName("hd") -// override val hidden : Boolean = false, -// -// @SerialName("ks") -// val properties : ShapeProperties -//) : LayoutShape { -// -// @Transient -// private var path = Path() -// -// override fun getPath(time: Int): Path { -// path.rewind() -// -// val shape = properties.interpolated(time) -// -// val first = shape.vertices.first() -// -// path.moveTo(first[0], first[1]) -// -// for (i in shape.vertices.indices){ -// path.cubicTo( -// shape.vertices[i][0], -// shape.vertices[i][1], -// shape.inPoints[i][0], -// shape.inPoints[i][1], -// shape.outPoints[i][0], -// shape.outPoints[i][1], -// ) -// } -// -// if (shape.closed){ -// path.close() -// } -// return path -// } -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt new file mode 100644 index 00000000..8b5dac45 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt @@ -0,0 +1,76 @@ +//package io.github.alexzhirkevich.compottie.internal.schema.shapes +// +//import androidx.compose.ui.graphics.Path +//import io.github.alexzhirkevich.compottie.internal.content.Content +//import io.github.alexzhirkevich.compottie.internal.content.PathContent +//import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent +//import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape +//import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +//import kotlinx.serialization.SerialName +//import kotlinx.serialization.Serializable +//import kotlinx.serialization.Transient +// +//@Serializable +//@SerialName("sh") +//internal class PathShape( +// @SerialName("mn") +// override val matchName : String? = null, +// +// @SerialName("nm") +// override val name : String? = null, +// +// @SerialName("hd") +// override val hidden : Boolean = false, +// +// @SerialName("ks") +// val properties : AnimatedShape +//) : Shape, PathContent { +// +// @Transient +// private var path = Path() +// +// @Transient +// private val trimPaths: CompoundTrimPath = CompoundTrimPath() +// +// +// override fun getPath(time: Int): Path { +// path.rewind() +// +// val shape = properties.interpolated(time) +// +// val first = shape.vertices.first() +// +// path.moveTo(first[0], first[1]) +// +// for (i in shape.vertices.indices){ +// path.cubicTo( +// shape.vertices[i][0], +// shape.vertices[i][1], +// shape.inPoints[i][0], +// shape.inPoints[i][1], +// shape.outPoints[i][0], +// shape.outPoints[i][1], +// ) +// } +// +// if (shape.closed){ +// path.close() +// } +// return path +// } +// +// override fun setContents(contentsBefore: List, contentsAfter: List) { +// val shapeModifierContents: MutableList = mutableListOf() +// +// contentsBefore.forEach { content -> +// if (content.isSimultaneousTrimPath()) { +// // Trim path individually will be handled by the stroke where paths are combined. +// trimPaths.addTrimPath(content) +// } else if (content is ShapeModifierContent) { +// shapeModifierContents.add(content as ShapeModifierContent) +// } +// } +// +// shapeAnimation.setShapeModifiers(shapeModifierContents) +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt index 1d267a8e..6b000bfc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt @@ -5,11 +5,8 @@ import androidx.compose.ui.geometry.RoundRect import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.x -import io.github.alexzhirkevich.compottie.internal.schema.properties.y +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -49,7 +46,7 @@ internal class RectShape( override fun setContents(contentsBefore: List, contentsAfter: List) { contentsBefore.forEach { - if (it is TrimPath && it.type == TrimPathType.Simultaneously) { + if (it.isSimultaneousTrimPath()) { trimPaths.addTrimPath(it) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt index 8be8f15c..056c66e5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt @@ -2,9 +2,9 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.schema.properties.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt index 22c75ca4..f01cc8b5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt @@ -1,11 +1,10 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes -import androidx.compose.runtime.traceEventEnd import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.schema.ModifierContent -import io.github.alexzhirkevich.compottie.internal.schema.helpers.AnimatedTransform -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -46,4 +45,8 @@ internal class TransformShape( override fun setContents(contentsBefore: List, contentsAfter: List) { } +} + +internal fun Iterable.findTransform() : TransformShape? { + return firstOrNull { it is TransformShape } as TransformShape? } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt deleted file mode 100644 index 046727a8..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPath.kt +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes - -import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.schema.properties.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -@SerialName("tm") -internal class TrimPath( - - @SerialName("n") - override val name: String? = null, - - @SerialName("mn") - override val matchName: String?, - - @SerialName("hd") - override val hidden: Boolean = false, - - @SerialName("s") - val start : AnimatedValue, - - @SerialName("e") - val end : AnimatedValue, - - @SerialName("o") - val offset : AnimatedValue, - - @SerialName("m") - val type : TrimPathType = TrimPathType.Simultaneously -) : Shape { - override fun setContents(contentsBefore: List, contentsAfter: List) { - - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt new file mode 100644 index 00000000..5f38bf0e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt @@ -0,0 +1,58 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.schema.helpers.TrimPathType +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.contract + +@Serializable +@SerialName("tm") +internal class TrimPathShape( + + @SerialName("n") + override val name: String? = null, + + @SerialName("mn") + override val matchName: String?, + + @SerialName("hd") + override val hidden: Boolean = false, + + @SerialName("s") + val start : AnimatedValue, + + @SerialName("e") + val end : AnimatedValue, + + @SerialName("o") + val offset : AnimatedValue, + + @SerialName("m") + val type : TrimPathType = TrimPathType.Simultaneously +) : Shape { + override fun setContents(contentsBefore: List, contentsAfter: List) { + + } +} + + +@OptIn(ExperimentalContracts::class) +internal fun Content.isSimultaneousTrimPath() : Boolean { + contract { + returns(true) implies (this@isSimultaneousTrimPath is TrimPathShape) + } + + return this is TrimPathShape && type == TrimPathType.Simultaneously +} + +@OptIn(ExperimentalContracts::class) +internal fun Content.isIndividualTrimPath() : Boolean { + contract { + returns(true) implies (this@isIndividualTrimPath is TrimPathShape) + } + + return this is TrimPathShape && type == TrimPathType.Simultaneously +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt index ee1222f6..d9729b93 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt @@ -2,13 +2,13 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes.util import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape import io.github.alexzhirkevich.compottie.internal.utils.Utils internal class CompoundTrimPath { - private val contents: MutableList = mutableListOf() + private val contents: MutableList = mutableListOf() - fun addTrimPath(trimPath: TrimPath) { + fun addTrimPath(trimPath: TrimPathShape) { contents.add(trimPath) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieImageService.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt similarity index 91% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieImageService.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt index 89eb3e10..1e37572e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieImageService.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt @@ -2,7 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.services import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset -internal class LottieImageService( +internal class LottieAssetService( val maintainOriginalImageBounds : Boolean, assets : List ) : LottieService { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt new file mode 100644 index 00000000..e92d1d46 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt @@ -0,0 +1,4 @@ +package io.github.alexzhirkevich.compottie.internal.utils + +object L { +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index 598b98ad..451654e8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -22,7 +22,15 @@ fun Matrix.preConcat(other : Matrix) { } fun Matrix.setValues(values : FloatArray){ - values.copyInto(this.values) + this.values[Matrix.ScaleX] = values[0] + this.values[Matrix.SkewX] = values[1] + this.values[Matrix.TranslateX] = values[2] + this.values[Matrix.SkewY] = values[3] + this.values[Matrix.ScaleY] = values[4] + this.values[Matrix.TranslateY] = values[5] + this.values[Matrix.Perspective0] = values[6] + this.values[Matrix.Perspective1] = values[7] + this.values[Matrix.Perspective2] = values[8] } fun Matrix.preRotate(degree : Float) { @@ -30,7 +38,7 @@ fun Matrix.preRotate(degree : Float) { reset() rotateZ(degree) }) - +// // return rotateZ(degree) } @@ -40,4 +48,5 @@ fun Matrix.preScale(x : Float, y : Float) { scale(x, y) }) // return scale(x,y) -} \ No newline at end of file +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt index 3ea0781f..575b4cd0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -4,10 +4,9 @@ import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path -import androidx.compose.ui.util.trace import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape import kotlin.math.abs import kotlin.math.max import kotlin.math.min @@ -26,7 +25,7 @@ internal object Utils { canvas.saveLayer(rect, paint) } - fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPath, frame : Int) { + fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathShape, frame : Int) { if (trimPath.hidden) { return } diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt index b5619de0..cf307cdb 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -12,15 +12,14 @@ import org.jetbrains.skia.Matrix33 import org.jetbrains.skia.Matrix44 import org.jetbrains.skia.Shader - -actual fun MakeLinearGradient( +internal actual fun MakeLinearGradient( from : Offset, to : Offset, colors : List, colorStops: List, tileMode: TileMode, matrix: Matrix -) = Shader.makeLinearGradient( +) = Shader.makeLinearGradient( x0 = from.x, y0 = from.y, x1 = to.x, @@ -30,11 +29,11 @@ actual fun MakeLinearGradient( style = GradientStyle( tileMode = tileMode.toSkiaTileMode(), isPremul = true, - localMatrix = Matrix44(*matrix.values).asMatrix33() + localMatrix = matrix.asSkia33() ) ) -actual fun MakeRadialGradient( +internal actual fun MakeRadialGradient( center : Offset, radius : Float, colors : List, @@ -50,10 +49,25 @@ actual fun MakeRadialGradient( style = GradientStyle( tileMode = tileMode.toSkiaTileMode(), isPremul = true, - localMatrix = Matrix44(*matrix.values).asMatrix33() + localMatrix = matrix.asSkia33() ) ) + +private fun Matrix.asSkia33() : Matrix33 { + return Matrix33( + values[Matrix.ScaleX], + values[Matrix.SkewX], + values[Matrix.TranslateX], + values[Matrix.SkewY], + values[Matrix.ScaleY], + values[Matrix.TranslateY], + values[Matrix.Perspective0], + values[Matrix.Perspective1], + values[Matrix.Perspective2], + ) +} + private fun List.toIntArray(): IntArray = IntArray(size) { i -> this[i].toArgb() } diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index 97e8958c..d1637080 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.example.android import App +import android.graphics.Matrix import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index db5d2b73..92f582ea 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,15 +1,16 @@ import androidx.compose.foundation.Image -import androidx.compose.foundation.border +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp +import compottie.example.shared.generated.resources.Res +import io.github.alexzhirkevich.compottie.JsonString import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter +import org.jetbrains.compose.resources.ExperimentalResourceApi private const val lottieData = """ {"v":"4.10.1","fr":60,"ip":0,"op":120,"w":800,"h":800,"nm":"loading_animation","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":23,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":34,"s":[100],"e":[20]},{"t":69}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":23,"s":[400,400],"e":[440,440]},{"i":{"x":[0.009,0.009],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p009_1_0p333_0","0p009_1_0p333_0"],"t":34,"s":[440,440],"e":[400,400]},{"t":59}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[10],"e":[5]},{"t":59}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":27,"s":[100],"e":[20]},{"t":62}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":16,"s":[320,320],"e":[360,360]},{"i":{"x":[0.025,0.025],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p025_1_0p333_0","0p025_1_0p333_0"],"t":27,"s":[360,360],"e":[320,320]},{"t":52}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":27,"s":[10],"e":[5]},{"t":52}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":9,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":20,"s":[100],"e":[20]},{"t":55}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":9,"s":[240,240],"e":[280,280]},{"i":{"x":[0.051,0.051],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p051_1_0p333_0","0p051_1_0p333_0"],"t":20,"s":[280,280],"e":[240,240]},{"t":45}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[10],"e":[5]},{"t":45}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[100],"e":[20]},{"t":48}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":2,"s":[160,160],"e":[200,200]},{"i":{"x":[0.034,0.034],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p034_1_0p333_0","0p034_1_0p333_0"],"t":13,"s":[200,200],"e":[160,160]},{"t":38}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[10],"e":[5]},{"t":38}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":11,"s":[100],"e":[20]},{"t":46}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":0,"s":[80,80],"e":[120,120]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":11,"s":[120,120],"e":[80,80]},{"t":36}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[10],"e":[5]},{"t":35}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0}]} @@ -18,8 +19,10 @@ private const val lottieData = """ @Composable fun App() { + Res.readBytes() + val composition = rememberLottieComposition( - LottieCompositionSpec.JsonString(ellipseCenter) + LottieCompositionSpec.JsonString(lottieData) ) val progress by animateLottieCompositionAsState( @@ -28,7 +31,7 @@ fun App() { ) Image( - modifier = Modifier.border(1.dp, Color.Black), + modifier = Modifier.fillMaxSize(), painter = rememberLottiePainter( composition = composition, progress = { @@ -43,6 +46,8 @@ fun App() { private val fadeBalls = "{\"v\":\"4.8.0\",\"meta\":{\"g\":\"LottieFiles AE 3.5.2\",\"a\":\"\",\"k\":\"\",\"d\":\"\",\"tc\":\"\"},\"fr\":25,\"ip\":0,\"op\":114,\"w\":1080,\"h\":1080,\"nm\":\"Coloring Ball\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[353.056,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[1,0,0.028235371908,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13.11,\"s\":[0.056470490992,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":24.223,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":35.333,\"s\":[1,0,0.517646789551,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":46.444,\"s\":[1,0,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":57.556,\"s\":[0,1,0.564705908298,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":68.667,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":79.777,\"s\":[1,0,0,1]},{\"t\":90.8896484375,\"s\":[0,1,0.564705908298,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":2,\"op\":252,\"st\":2,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[723.944,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":7,\"s\":[1,0,0.687059529622,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":18.11,\"s\":[0,1,0.84705889225,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":29.223,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":40.333,\"s\":[0,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":51.444,\"s\":[0.710588574409,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":62.556,\"s\":[1,0.494117677212,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":73.667,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":84.777,\"s\":[0.997646987438,1,0,1]},{\"t\":95.8896484375,\"s\":[1,0.494117677212,0,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":7,\"op\":257,\"st\":7,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[540,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":4,\"s\":[0,0.494117468596,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":15.11,\"s\":[0.57882386446,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":26.223,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":37.333,\"s\":[0,0.512941002846,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":48.444,\"s\":[1,0,0.404705822468,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":59.556,\"s\":[0,0.73882317543,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":70.667,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":81.777,\"s\":[0,0.512941002846,1,1]},{\"t\":92.8896484375,\"s\":[0,0.73882317543,1,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":4,\"op\":254,\"st\":4,\"bm\":0}],\"markers\":[]}" private val gradientStrokeEllipsesSingle = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" + +private val strokeEllipse = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"st\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"c\":{\"a\":0,\"k\":[0,0.627,1],\"ix\":8},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" private val ellipseCenter = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" private val gradientStrokeEllipses = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 5\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":23,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":34,\"s\":[100]},{\"t\":69,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":23,\"s\":[400,400]},{\"i\":{\"x\":[0.009,0.009],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":34,\"s\":[440,440]},{\"t\":59,\"s\":[400,400]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":23,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":34,\"s\":[10]},{\"t\":59,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 4\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":16,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":27,\"s\":[100]},{\"t\":62,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":16,\"s\":[320,320]},{\"i\":{\"x\":[0.025,0.025],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":27,\"s\":[360,360]},{\"t\":52,\"s\":[320,320]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":16,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":27,\"s\":[10]},{\"t\":52,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":9,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":20,\"s\":[100]},{\"t\":55,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":9,\"s\":[240,240]},{\"i\":{\"x\":[0.051,0.051],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":20,\"s\":[280,280]},{\"t\":45,\"s\":[240,240]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13,\"s\":[100]},{\"t\":48,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":2,\"s\":[160,160]},{\"i\":{\"x\":[0.034,0.034],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":13,\"s\":[200,200]},{\"t\":38,\"s\":[160,160]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":2,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":13,\"s\":[10]},{\"t\":38,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":0,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":11,\"s\":[100]},{\"t\":46,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":0,\"s\":[80,80]},{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":11,\"s\":[120,120]},{\"t\":36,\"s\":[80,80]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":11,\"s\":[10]},{\"t\":35,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" From 135a5d570dd71ca2cd5428b0bebc2fb09a868e1c Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Fri, 31 May 2024 10:37:46 +0300 Subject: [PATCH 006/100] bezier shapes --- .../alexzhirkevich/compottie/LottiePainter.kt | 2 + .../internal/content/ShapeModifierContent.kt | 17 ++- .../compottie/internal/schema/Json.kt | 4 +- .../internal/schema/animation/Animated.kt | 6 - .../schema/animation/AnimatedColor.kt | 6 +- .../schema/animation/AnimatedGradient.kt | 2 +- .../schema/animation/AnimatedShape.kt | 69 ++++++++-- .../schema/animation/AnimatedValue.kt | 7 +- .../schema/animation/AnimatedVector2.kt | 6 +- .../schema/animation/BaseKeyframeAnimation.kt | 87 ++++++++++++ .../schema/animation/BezierKeyframe.kt | 52 ++++++++ .../internal/schema/animation/Keyframe.kt | 2 +- .../schema/animation/KeyframeAnimation.kt | 87 +----------- .../schema/animation/ShapeKeyframe.kt | 25 ---- .../schema/animation/ValueKeyframe.kt | 2 +- .../schema/animation/VectorKeyframe.kt | 2 +- .../internal/schema/helpers/Bezier.kt | 117 +++++++++++++--- .../internal/schema/helpers/ShapeData.kt | 38 +++++- .../internal/schema/shapes/FillShape.kt | 11 +- .../internal/schema/shapes/PathShape.kt | 126 +++++++----------- .../compottie/internal/utils/Utils.kt | 6 +- example/shared/src/commonMain/kotlin/App.kt | 2 - 22 files changed, 421 insertions(+), 255 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ShapeKeyframe.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index fa73baf1..5152dc30 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -22,6 +22,8 @@ import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.assets.LottieAssetsFetcher +import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt index 87da9866..8f6f5729 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt @@ -1,4 +1,19 @@ package io.github.alexzhirkevich.compottie.internal.content -interface ShapeModifierContent { +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Bezier + +internal interface ShapeModifierContent { + fun modify(shape: Bezier) : Bezier +} + + +internal fun Bezier.modifiedBy(modifiers : List) : Bezier { + var b = this + + modifiers.fastForEachReversed { + b = it.modify(b) + } + + return b } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt index 5cd13748..73e52c3a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt @@ -34,10 +34,10 @@ val LottieJson = Json { polymorphic(AnimatedValue::class){ subclass(AnimatedValue.Default::class) - subclass(AnimatedValue.Keyframed::class) + subclass(AnimatedValue.Animated::class) } polymorphic(AnimatedVector2::class){ - subclass(AnimatedVector2.Keyframed::class) + subclass(AnimatedVector2.Animated::class) subclass(AnimatedVector2.Default::class) } polymorphic(Shape::class){ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt deleted file mode 100644 index 34b3441e..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Animated.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation - -interface Animated { - - fun interpolated(frame : Int) : T -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt index 33132835..e36afef9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt @@ -12,7 +12,7 @@ import kotlinx.serialization.json.JsonClassDiscriminator @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") -internal sealed interface AnimatedColor : Animated, Indexable { +internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { @Serializable @SerialName("0") @@ -35,7 +35,7 @@ internal sealed interface AnimatedColor : Animated, Indexable { @Serializable @SerialName("1") - class Keyframed( + class Animated( @SerialName("k") val value: List, @@ -51,7 +51,7 @@ internal sealed interface AnimatedColor : Animated, Indexable { @SerialName("to") val outTangent: FloatArray? = null, - ) : AnimatedColor, Animated by KeyframeAnimation( + ) : AnimatedColor, KeyframeAnimation by BaseKeyframeAnimation( keyframes = value, emptyValue = Color.Transparent, map = { s, e, p -> diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt index a727bd93..cbc986fc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt @@ -35,7 +35,7 @@ internal value class GradientType(val type : Byte) { @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") -internal sealed interface AnimatedGradient : Animated { +internal sealed interface AnimatedGradient : KeyframeAnimation { var numberOfColors: Int diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt index c0dba478..9d0741de 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt @@ -1,10 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.schema.animation +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent +import io.github.alexzhirkevich.compottie.internal.content.modifiedBy +import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.schema.helpers.Bezier -import io.github.alexzhirkevich.compottie.internal.schema.helpers.CubicCurveData import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.schema.helpers.mapPath import io.github.alexzhirkevich.compottie.internal.schema.helpers.toShapeData -import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -14,9 +17,12 @@ import kotlinx.serialization.json.JsonClassDiscriminator @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") -internal sealed interface AnimatedShape : Animated, Indexable { +internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { + + var shapeModifiers: List @SerialName("0") + @Serializable class Default( @SerialName("x") override val expression: String? = null, @@ -25,19 +31,30 @@ internal sealed interface AnimatedShape : Animated, Indexable { override val index: String? = null, @SerialName("k") - val bezier : Bezier + val bezier: Bezier, ) : AnimatedShape { - private val shapeData = bezier.toShapeData() + @Transient + override var shapeModifiers: List = emptyList() + + private val path by lazy { + Path().also { + bezier.modifiedBy(shapeModifiers).toShapeData().mapPath(it) + } + } - override fun interpolated(frame: Int): ShapeData { - return shapeData + @Transient + private val tmpPath = Path() + override fun interpolated(frame: Int): Path { + tmpPath.reset() + tmpPath.set(path) + return tmpPath } } @SerialName("1") @Serializable - class Keyframed( + class Animated( @SerialName("x") override val expression: String? = null, @@ -45,15 +62,39 @@ internal sealed interface AnimatedShape : Animated, Indexable { override val index: String? = null, @SerialName("k") - val keyframes : List - ) : AnimatedShape { + val keyframes: List, + ) : AnimatedShape, KeyframeAnimation { @Transient - private var tempShapeData = ShapeData() + override var shapeModifiers: List = emptyList() + set(value) { + field = value + delegate = createDelegate() + } + @Transient + private val tmpPath = Path() - override fun interpolated(frame: Int): ShapeData { - TODO("Not yet implemented") + @Transient + private val tmpShapeData = ShapeData() + + @Transient + private var delegate = createDelegate() + + override fun interpolated(frame: Int): Path { + return delegate.interpolated(frame) } + + private fun createDelegate() = BaseKeyframeAnimation( + keyframes = keyframes.map { it.toShapeKeyframe(shapeModifiers) }, + emptyValue = tmpPath, + map = { s, e, p -> + tmpShapeData.interpolateBetween(s, e, p) + tmpShapeData.mapPath(tmpPath) + tmpPath + } + ) } -} \ No newline at end of file +} + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt index be666a69..b061b933 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt @@ -1,6 +1,5 @@ package io.github.alexzhirkevich.compottie.internal.schema.animation -import androidx.compose.ui.geometry.Offset import androidx.compose.ui.util.lerp import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName @@ -10,7 +9,7 @@ import kotlinx.serialization.json.JsonClassDiscriminator @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") -internal sealed interface AnimatedValue : Animated, Indexable { +internal sealed interface AnimatedValue : KeyframeAnimation, Indexable { @Serializable @SerialName("0") @@ -30,7 +29,7 @@ internal sealed interface AnimatedValue : Animated, Indexable { @Serializable @SerialName("1") - class Keyframed( + class Animated( @SerialName("k") val value: List, @@ -39,7 +38,7 @@ internal sealed interface AnimatedValue : Animated, Indexable { @SerialName("ix") override val index: String? = null - ) : AnimatedValue, Animated by KeyframeAnimation( + ) : AnimatedValue, KeyframeAnimation by BaseKeyframeAnimation( keyframes = value, emptyValue = 1f, map = { s, e, p -> lerp(s[0], e[0], p) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt index 78873e6d..b4ca4186 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt @@ -13,7 +13,7 @@ internal typealias Vec2 = Offset @OptIn(ExperimentalSerializationApi::class) @Serializable() @JsonClassDiscriminator("a") -internal sealed interface AnimatedVector2 : Animated, Indexable { +internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @Serializable @SerialName("0") @@ -36,7 +36,7 @@ internal sealed interface AnimatedVector2 : Animated, Indexable { @Serializable @SerialName("1") - class Keyframed( + class Animated( @SerialName("k") val value: List, @@ -52,7 +52,7 @@ internal sealed interface AnimatedVector2 : Animated, Indexable { @SerialName("to") val outTangent: FloatArray? = null, - ) : AnimatedVector2, Animated by KeyframeAnimation( + ) : AnimatedVector2, KeyframeAnimation by BaseKeyframeAnimation( keyframes = value, emptyValue = Offset.Zero, map = { s, e, p -> Offset(lerp(s[0], e[0], p), lerp(s[1], e[1], p)) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt new file mode 100644 index 00000000..33e73007 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt @@ -0,0 +1,87 @@ +package io.github.alexzhirkevich.compottie.internal.schema.animation + + +internal class BaseKeyframeAnimation( + keyframes: List>, + private val emptyValue : T, + private val map : (K, K, Float) -> T +) : KeyframeAnimation { + + private val sortedKeyframes = keyframes.sortedBy { it.time } + + private val firstFrame: Float by lazy { + sortedKeyframes.first().time + } + + private val lastFrame: Float by lazy { + sortedKeyframes.last().time + } + + private val initialValue by lazy { + map( + requireNotNull( + sortedKeyframes[0].start, + InvalidKeyframeError + ), + requireNotNull( + sortedKeyframes[0].end ?: sortedKeyframes.getOrNull(1)?.start, + InvalidKeyframeError + ), + 0f + ) + } + + private val targetValue by lazy { + map( + requireNotNull( + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.start, + InvalidKeyframeError + ), + requireNotNull( + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.end + ?: sortedKeyframes.last().start, + InvalidKeyframeError + ), + 1f + ) + } + + final override fun interpolated(frame: Int): T { + return when { + sortedKeyframes.isEmpty() -> emptyValue + frame >= lastFrame -> targetValue + frame <= firstFrame -> initialValue + else -> { + var kfIdx = sortedKeyframes.lastIndex + var progress = 1f + + for (i in 0..() + + +internal fun BezierKeyframe.toShapeKeyframe( + modifiers : List +) = ShapeKeyframe( + start = start?.let { it.modifiedBy(modifiers).toShapeData() }, + end = end?.let { it.modifiedBy(modifiers).toShapeData() }, + time = time, + inValue = inValue, + outValue = outValue +) + +internal class ShapeKeyframe( + + override val start: ShapeData? = null, + + override val end: ShapeData? = null, + + override val time: Float, + + override val inValue : BezierInterpolation? = null, + + override val outValue : BezierInterpolation? = null, +) : Keyframe() \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt index 95c9a94a..d50c4d8a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt @@ -7,7 +7,7 @@ import androidx.compose.animation.core.LinearEasing internal abstract class Keyframe { abstract val start: T? abstract val end: T? - abstract val time: Int + abstract val time: Float abstract val inValue: BezierInterpolation? abstract val outValue: BezierInterpolation? diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt index 97d15ab8..6c03401c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt @@ -1,87 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.animation +interface KeyframeAnimation { -internal class KeyframeAnimation( - keyframes: List>, - private val emptyValue : T, - val map : (start : K, end : K, Float) -> T, -) : Animated { - - private val sortedKeyframes = keyframes.sortedBy { it.time } - - private val firstFrame: Int by lazy { - sortedKeyframes.first().time - } - - private val lastFrame: Int by lazy { - sortedKeyframes.last().time - } - - private val initialValue by lazy { - map( - requireNotNull( - sortedKeyframes[0].start, - InvalidKeyframeError - ), - requireNotNull( - sortedKeyframes[0].end ?: sortedKeyframes.getOrNull(1)?.start, - InvalidKeyframeError - ), - 0f - ) - } - - private val targetValue by lazy { - map( - requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.start, - InvalidKeyframeError - ), - requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.end - ?: sortedKeyframes.last().start, - InvalidKeyframeError - ), - 1f - ) - } - - override fun interpolated(frame: Int): T { - return when { - sortedKeyframes.isEmpty() -> emptyValue - frame >= lastFrame -> targetValue - frame <= firstFrame -> initialValue - else -> { - var kfIdx = sortedKeyframes.lastIndex - var progress = 1f - - for (i in 0..? = null, - - @SerialName("e") - override val end: List? = null, - - @SerialName("t") - override val time: Int, - - @SerialName("i") - override val inValue : BezierInterpolation? = null, - - @SerialName("o") - override val outValue : BezierInterpolation? = null, -) : Keyframe>() { -} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt index 25dbb3ce..63ed65b0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt @@ -13,7 +13,7 @@ internal class ValueKeyframe( override val end: FloatArray? = null, @SerialName("t") - override val time: Int, + override val time: Float, @SerialName("i") override val inValue : BezierInterpolation? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt index 3608c36c..ce189dea 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt @@ -13,7 +13,7 @@ internal class VectorKeyframe( override val end : FloatArray? = null, @SerialName("t") - override val time : Int, + override val time : Float, @SerialName("i") override val inValue : BezierInterpolation? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt index 98eceed2..6d0a61bd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt @@ -1,41 +1,122 @@ package io.github.alexzhirkevich.compottie.internal.schema.helpers -import androidx.compose.ui.geometry.Offset -import io.github.alexzhirkevich.compottie.internal.schema.helpers.CubicCurveData -import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData +import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlin.math.min @Serializable internal class Bezier( @SerialName("c") - val isClosed : Boolean = false, + var isClosed : Boolean = false, @SerialName("i") - val inTangents : List , + var inTangents : List = emptyList(), @SerialName("o") - val outTangents : List, + var outTangents : List = emptyList(), @SerialName("v") - val vertices : List, -) + var vertices : List = emptyList(), +) { + init { + require(vertices.size == inTangents.size && vertices.size == outTangents.size){ + "Invalid bezier curve. Control points count must be the same as vertices count" + } + } +} + +internal fun Bezier.lerp(from: Bezier, to: Bezier, fraction : Float) { + isClosed = from.isClosed || to.isClosed + + val size = min(from.vertices.size, to.vertices.size) + + if (inTangents !is MutableList<*>) { + inTangents = ArrayList(size) + } + + if (outTangents !is MutableList<*>) { + outTangents = ArrayList(size) + } + + if (vertices !is MutableList<*>) { + vertices = ArrayList(size) + } + + val i = inTangents as MutableList + val o = outTangents as MutableList + val v = vertices as MutableList + + if(v.size > size){ + v.dropLast(v.size-size) + o.dropLast(v.size-size) + i.dropLast(v.size-size) + } + + if (v.size < size){ + repeat(size - v.size){ + v.add(floatArrayOf(0f,0f)) + o.add(floatArrayOf(0f,0f)) + i.add(floatArrayOf(0f,0f)) + } + } + + repeat(size) { + + val cp11 = from.inTangents[it].toOffset() + val cp21 = from.outTangents[it].toOffset() + val vertex1 = from.vertices[it].toOffset() + + val cp12 = to.inTangents[it].toOffset() + val cp22 = to.outTangents[it].toOffset() + val vertex2 = to.vertices[it].toOffset() + + i[it][0] = androidx.compose.ui.util.lerp(cp11.x, cp12.x, fraction) + i[it][1] = androidx.compose.ui.util.lerp(cp11.y, cp12.y, fraction) + + o[it][0] = androidx.compose.ui.util.lerp(cp21.x, cp22.x, fraction) + o[it][1] = androidx.compose.ui.util.lerp(cp21.y, cp22.y, fraction) + + v[it][0] = androidx.compose.ui.util.lerp(vertex1.x, vertex2.x, fraction) + v[it][1] = androidx.compose.ui.util.lerp(vertex1.y, vertex2.y, fraction) + } +} internal fun Bezier.toShapeData() : ShapeData { - val curves = vertices.indices.map { idx -> - CubicCurveData( - controlPoint1 = inTangents[idx].toOffset(), - controlPoint2 = outTangents[idx].toOffset(), - vertex = vertices[idx].toOffset(), - ) - }.toMutableList() + val initialPoint = vertices.first() + + val curves = mutableListOf() + + for (i in 1..vertices.lastIndex) { + + val prevVertex = vertices[i - 1] + val cp1 = outTangents[i - 1] + val cp2 = inTangents[i] + val vertex = vertices[i] + + val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) + curves.add(CubicCurveData(shapeCp1.toOffset(), shapeCp2.toOffset(), vertex.toOffset())) + } + + if (isClosed) { + val vertex = vertices[0] + val prevVertex = vertices.last() + val cp1 = outTangents[vertices.lastIndex] + val cp2 = inTangents[0] + + val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) + + curves.add(CubicCurveData(shapeCp1.toOffset(), shapeCp2.toOffset(), vertex.toOffset())) + } return ShapeData( curves = curves, - isClosed = isClosed, - initialPoint = curves.getOrNull(0)?.vertex ?: Offset.Zero + initialPoint = initialPoint.toOffset(), + isClosed = isClosed ) -} \ No newline at end of file +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt index 4ae194ae..e13d395f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt @@ -1,19 +1,20 @@ package io.github.alexzhirkevich.compottie.internal.schema.helpers import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.lerp import kotlin.math.min internal class ShapeData( var curves: MutableList = mutableListOf(), var initialPoint: Offset = Offset.Zero, - var isClosed: Boolean = false + var isClosed: Boolean = false, ) { fun interpolateBetween( - shapeData1: ShapeData, - shapeData2: ShapeData, - percentage: Float + shapeData1: ShapeData, + shapeData2: ShapeData, + percentage: Float, ) { isClosed = shapeData1.isClosed || shapeData2.isClosed @@ -63,4 +64,33 @@ internal class ShapeData( ) } } +} + +internal fun ShapeData.mapPath(outPath : Path) { + outPath.reset() + outPath.moveTo(initialPoint.x, initialPoint.y) + + var pathFromDataCurrentPoint = initialPoint + for (i in curves.indices) { + val curveData = curves[i] + val cp1 = curveData.controlPoint1 + val cp2 = curveData.controlPoint2 + val vertex = curveData.vertex + + if (cp1 == pathFromDataCurrentPoint&& cp2 == vertex) { + // On some phones like Samsung phones, zero valued control points can cause artifacting. + // https://github.com/airbnb/lottie-android/issues/275 + // + // This does its best to add a tiny value to the vertex without affecting the final + // animation as much as possible. + // outPath.rMoveTo(0.01f, 0.01f); + outPath.lineTo(vertex.x, vertex.y) + } else { + outPath.cubicTo(cp1.x, cp1.y, cp2.x, cp2.y, vertex.x, vertex.y) + } + pathFromDataCurrentPoint = vertex + } + if (isClosed) { + outPath.close() + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt index a8449906..76869ead 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -50,16 +51,14 @@ internal class FillShape( private val paint = Paint() override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + if (hidden) { return } - paint.alpha = if (opacity != null) { - (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) - } - else { - parentAlpha - } + paint.alpha = opacity?.interpolated(frame)?.let { + (parentAlpha * it / 100f).coerceIn(0f, 1f) + } ?: parentAlpha paint.color = color.interpolated(frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt index 8b5dac45..60765d53 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt @@ -1,76 +1,50 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes -// -//import androidx.compose.ui.graphics.Path -//import io.github.alexzhirkevich.compottie.internal.content.Content -//import io.github.alexzhirkevich.compottie.internal.content.PathContent -//import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent -//import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape -//import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath -//import kotlinx.serialization.SerialName -//import kotlinx.serialization.Serializable -//import kotlinx.serialization.Transient -// -//@Serializable -//@SerialName("sh") -//internal class PathShape( -// @SerialName("mn") -// override val matchName : String? = null, -// -// @SerialName("nm") -// override val name : String? = null, -// -// @SerialName("hd") -// override val hidden : Boolean = false, -// -// @SerialName("ks") -// val properties : AnimatedShape -//) : Shape, PathContent { -// -// @Transient -// private var path = Path() -// -// @Transient -// private val trimPaths: CompoundTrimPath = CompoundTrimPath() -// -// -// override fun getPath(time: Int): Path { -// path.rewind() -// -// val shape = properties.interpolated(time) -// -// val first = shape.vertices.first() -// -// path.moveTo(first[0], first[1]) -// -// for (i in shape.vertices.indices){ -// path.cubicTo( -// shape.vertices[i][0], -// shape.vertices[i][1], -// shape.inPoints[i][0], -// shape.inPoints[i][1], -// shape.outPoints[i][0], -// shape.outPoints[i][1], -// ) -// } -// -// if (shape.closed){ -// path.close() -// } -// return path -// } -// -// override fun setContents(contentsBefore: List, contentsAfter: List) { -// val shapeModifierContents: MutableList = mutableListOf() -// -// contentsBefore.forEach { content -> -// if (content.isSimultaneousTrimPath()) { -// // Trim path individually will be handled by the stroke where paths are combined. -// trimPaths.addTrimPath(content) -// } else if (content is ShapeModifierContent) { -// shapeModifierContents.add(content as ShapeModifierContent) -// } -// } -// -// shapeAnimation.setShapeModifiers(shapeModifierContents) -// } -//} \ No newline at end of file +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("sh") +internal class PathShape( + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("ks") + val shape : AnimatedShape +) : Shape, PathContent { + + @Transient + private val trimPaths: CompoundTrimPath = CompoundTrimPath() + + override fun getPath(time: Int): Path { + return shape.interpolated(time) + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + val shapeModifierContents: MutableList = mutableListOf() + + contentsBefore.forEach { content -> + if (content.isSimultaneousTrimPath()) { + // Trim path individually will be handled by the stroke where paths are combined. + trimPaths.addTrimPath(content) + } else if (content is ShapeModifierContent) { + shapeModifierContents.add(content as ShapeModifierContent) + } + } + + shape.shapeModifiers = shapeModifierContents + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt index 575b4cd0..6f57e3fc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -22,10 +22,10 @@ internal object Utils { rect: Rect, paint: Paint, ) { - canvas.saveLayer(rect, paint) + canvas.saveLayer(rect, paint) } - fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathShape, frame : Int) { + fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathShape, frame: Int) { if (trimPath.hidden) { return } @@ -114,4 +114,4 @@ internal object Utils { } path.set(tempPath) } -} \ No newline at end of file +} diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 92f582ea..01d3885b 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -19,8 +19,6 @@ private const val lottieData = """ @Composable fun App() { - Res.readBytes() - val composition = rememberLottieComposition( LottieCompositionSpec.JsonString(lottieData) ) From 086ea4d8b17b445ccdeaef368480b8b8fbca0c53 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Fri, 31 May 2024 16:39:51 +0300 Subject: [PATCH 007/100] trim paths --- .../internal/platform/PlatformPath.android.kt | 17 +- .../compottie/LottieAnimatable.kt | 14 +- ...ationState2.kt => LottieAnimationState.kt} | 0 .../compottie/LottieComposition.kt | 8 +- .../compottie/LottieCompositionSpec.kt | 7 +- .../alexzhirkevich/compottie/LottiePainter.kt | 42 +- .../animateLottieCompositionAsState.kt | 3 + .../internal/content/ModifierContent.kt | 5 + .../internal/content/ShapeModifierContent.kt | 10 +- .../internal/platform/PlatformPath.kt | 14 +- .../compottie/internal/schema/Json.kt | 57 - .../compottie/internal/schema/LottieData.kt | 2 +- .../compottie/internal/schema/LottieJson.kt | 87 + .../internal/schema/ModifierContent.kt | 7 - .../schema/animation/AnimatedColor.kt | 4 +- .../schema/animation/AnimatedShape.kt | 40 +- .../schema/animation/AnimatedTransform.kt | 2 +- .../schema/animation/AnimatedValue.kt | 4 +- .../schema/animation/AnimatedVector2.kt | 7 +- .../schema/animation/BaseKeyframeAnimation.kt | 84 +- .../schema/animation/BezierInterpolation.kt | 24 +- .../schema/animation/BezierKeyframe.kt | 6 +- .../internal/schema/animation/Keyframe.kt | 24 +- .../schema/animation/ValueKeyframe.kt | 7 +- .../schema/animation/VectorKeyframe.kt | 2 +- .../internal/schema/helpers/ShapeData.kt | 2 +- .../internal/schema/helpers/Transform.kt | 4 +- .../internal/schema/shapes/BaseStrokeShape.kt | 41 +- .../internal/schema/shapes/EllipseShape.kt | 46 +- .../schema/shapes/GradientFillShape.kt | 2 +- ...adientStroke.kt => GradientStrokeShape.kt} | 2 +- .../internal/schema/shapes/PathShape.kt | 21 +- .../internal/schema/shapes/PolystarShape.kt | 310 ++++ .../internal/schema/shapes/RectShape.kt | 3 +- .../compottie/internal/schema/shapes/Round.kt | 33 - .../internal/schema/shapes/RoundShape.kt | 188 ++ .../compottie/internal/schema/shapes/Star.kt | 166 -- .../internal/schema/shapes/TransformShape.kt | 4 +- .../internal/schema/shapes/TrimPathShape.kt | 2 +- .../compottie/internal/utils/MiscUtil.kt | 2 +- .../compottie/internal/utils/Utils.kt | 35 +- .../internal/platform/PlatformPath.skiko.kt | 12 +- .../internal/platform/PlatformShader.skiko.kt | 2 +- .../composeResources/files/bouncing_ball.json | 1 + .../composeResources/files/checkmark.json | 1506 +++++++++++++++++ .../composeResources/files/fade_balls.json | 1 + .../files/gradient_ellipse.json | 1 + .../composeResources/files/polystar.json | 1 + .../composeResources/files/test.json | 363 ++++ example/shared/src/commonMain/kotlin/App.kt | 621 +------ 50 files changed, 2823 insertions(+), 1023 deletions(-) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/{LottieAnimationState2.kt => LottieAnimationState.kt} (100%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ModifierContent.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieJson.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/{GradientStroke.kt => GradientStrokeShape.kt} (98%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PolystarShape.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RoundShape.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt create mode 100644 example/shared/src/commonMain/composeResources/files/bouncing_ball.json create mode 100644 example/shared/src/commonMain/composeResources/files/checkmark.json create mode 100644 example/shared/src/commonMain/composeResources/files/fade_balls.json create mode 100644 example/shared/src/commonMain/composeResources/files/gradient_ellipse.json create mode 100644 example/shared/src/commonMain/composeResources/files/polystar.json create mode 100644 example/shared/src/commonMain/composeResources/files/test.json diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt index 5d85c20a..8194a1ac 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt @@ -4,13 +4,25 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.asAndroidPath +import androidx.compose.ui.graphics.asComposePath +import androidx.compose.ui.graphics.setFrom -actual fun ExtendedPathMeasure() : ExtendedPathMeasure = AndroidExtendedPathMeasure( +internal actual fun ExtendedPathMeasure() : ExtendedPathMeasure = AndroidExtendedPathMeasure( android.graphics.PathMeasure() ) -private val matrix = android.graphics.Matrix() +private val tempAndroidMatrix = android.graphics.Matrix() +internal actual fun Path.addPath(path: Path, matrix: Matrix) : Path { + return asAndroidPath().apply { + this.addPath(path.asAndroidPath(), tempAndroidMatrix.apply { setFrom(matrix) }) + }.asComposePath() +} + +//internal actual fun Path.set(other : Path) { +// asAndroidPath().set(other.asAndroidPath()) +//} + private class AndroidExtendedPathMeasure( private val internalPathMeasure: android.graphics.PathMeasure @@ -79,3 +91,4 @@ private class AndroidExtendedPathMeasure( } } } + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt index f5ef4c6a..a4038e62 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt @@ -18,6 +18,7 @@ import kotlinx.coroutines.job import kotlinx.coroutines.withContext import kotlin.coroutines.EmptyCoroutineContext import kotlin.coroutines.coroutineContext +import kotlin.time.Duration.Companion.nanoseconds /** * Use this to create a [LottieAnimatable] in a composable. @@ -292,21 +293,17 @@ private class LottieAnimatableImpl : LottieAnimatable { private fun onFrame(iterations: Int, frameNanos: Long): Boolean { val composition = composition ?: return true - val dNanos = if (lastFrameNanos == AnimationConstants.UnspecifiedTime) - 0L else (frameNanos - lastFrameNanos) - + val dNanos = if (lastFrameNanos == AnimationConstants.UnspecifiedTime) 0L else (frameNanos - lastFrameNanos) lastFrameNanos = frameNanos val minProgress = clipSpec?.getMinProgress(composition) ?: 0f val maxProgress = clipSpec?.getMaxProgress(composition) ?: 1f - val dProgress = dNanos.toFloat() / 1_000_000 / composition.duration * frameSpeed - + val dProgress = dNanos / 1_000_000f / composition.duration * frameSpeed val progressPastEndOfIteration = when { frameSpeed < 0 -> minProgress - (progressRaw + dProgress) else -> progressRaw + dProgress - maxProgress } - if (progressPastEndOfIteration < 0f) { updateProgress(progressRaw.coerceIn(minProgress, maxProgress) + dProgress) } else { @@ -320,7 +317,6 @@ private class LottieAnimatableImpl : LottieAnimatable { } iteration += dIterations val progressPastEndRem = progressPastEndOfIteration - (dIterations - 1) * durationProgress - updateProgress( when { frameSpeed < 0 -> maxProgress - progressPastEndRem @@ -341,9 +337,7 @@ private class LottieAnimatableImpl : LottieAnimatable { private fun updateProgress(progress: Float) { this.progressRaw = progress - this.progress = if (useCompositionFrameRate) - progress.roundToCompositionFrameRate(composition) - else progress + this.progress = if (useCompositionFrameRate) progress.roundToCompositionFrameRate(composition) else progress } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState2.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationState.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 16c67560..f6a4dd02 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -16,9 +16,13 @@ import kotlinx.coroutines.withContext class LottieComposition internal constructor( internal val lottieData: LottieData, ) { - val duration: Int get() = lottieData.durationMillis + val duration: Float get() = lottieData.durationMillis - val frameRate : Int get() = lottieData.frameRate + val frameRate: Float get() = lottieData.frameRate + + companion object { + fun parse(json: String) = LottieComposition(LottieJson.decodeFromString(json)) + } } @Composable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 7a67f5ce..bd0e37c4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -11,18 +11,20 @@ sealed interface LottieCompositionSpec { companion object } + @Stable fun LottieCompositionSpec.Companion.JsonString( jsonString: String ): LottieCompositionSpec = JsonStringImpl(jsonString) + @Immutable private class JsonStringImpl( - internal val jsonString: String + private val jsonString: String ) : LottieCompositionSpec { override suspend fun load(): LottieComposition { - return LottieComposition(LottieJson.decodeFromString(jsonString)) + return LottieComposition.parse(jsonString) } override fun equals(other: Any?): Boolean { @@ -45,4 +47,3 @@ private class JsonStringImpl( } } - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 5152dc30..9efe76b9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -21,6 +21,7 @@ import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.assets.LottieAssetsFetcher import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher @@ -37,6 +38,7 @@ import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlin.math.roundToInt +import kotlin.time.measureTime @Composable @@ -139,7 +141,7 @@ private class LottiePainter( ) init { - composition.lottieData.layers.forEach { + composition.lottieData.layers.fastForEach { it.serviceLocator = serviceLocator } } @@ -153,28 +155,26 @@ private class LottiePainter( } override fun DrawScope.onDraw() { + matrix.reset() + + val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) + + val offset = Alignment.Center.align( + IntSize( + (intrinsicSize.width).roundToInt(), + (intrinsicSize.height).roundToInt() + ), + IntSize( + size.width.roundToInt(), + size.height.roundToInt() + ), + layoutDirection + ) - drawIntoCanvas { canvas -> - - matrix.reset() - - val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) - - val offset = Alignment.Center.align( - IntSize( - (intrinsicSize.width).roundToInt(), - (intrinsicSize.height).roundToInt() - ), - IntSize( - size.width.roundToInt(), - size.height.roundToInt() - ), - layoutDirection - ) - - scale(scale.scaleX, scale.scaleY) { - translate(offset.x.toFloat(), offset.y.toFloat()) { + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + drawIntoCanvas { canvas -> composition.lottieData.layers.fastForEachReversed { if (it is DrawingContent) { it.density = density diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt index 959e9e94..99bdf5e1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt @@ -36,6 +36,8 @@ import androidx.compose.runtime.setValue * @param ignoreSystemAnimatorScale By default, Lottie will respect the system animator scale set in developer options or set to 0 * by things like battery saver mode. When set to 0, the speed will effectively become [Integer.MAX_VALUE]. * Set this to false if you want to ignore the system animator scale and always default to normal speed. + * + * @param forceFPS scale animation frame rate to specific value */ @Composable fun animateLottieCompositionAsState( @@ -50,6 +52,7 @@ fun animateLottieCompositionAsState( ignoreSystemAnimatorScale: Boolean = false, useCompositionFrameRate: Boolean = false, ): LottieAnimationState { + require(iterations > 0) { "Iterations must be a positive number ($iterations)." } require(speed.isFinite()) { "Speed must be a finite number. It is $speed." } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ModifierContent.kt new file mode 100644 index 00000000..5d7e3d09 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ModifierContent.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.internal.content + +import io.github.alexzhirkevich.compottie.internal.content.Content + +internal interface ModifierContent : Content \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt index 8f6f5729..a2b9556d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt @@ -1,18 +1,20 @@ package io.github.alexzhirkevich.compottie.internal.content +import androidx.compose.ui.graphics.Shape import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.schema.helpers.Bezier +import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData -internal interface ShapeModifierContent { - fun modify(shape: Bezier) : Bezier +internal interface ShapeModifierContent : Content { + fun modify(shape: ShapeData, frame : Int) : ShapeData } -internal fun Bezier.modifiedBy(modifiers : List) : Bezier { +internal fun ShapeData.modifiedBy(modifiers : List, frame: Int) : ShapeData { var b = this modifiers.fastForEachReversed { - b = it.modify(b) + b = it.modify(b, frame) } return b diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index 13b3c26a..4d737f3d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -1,18 +1,22 @@ package io.github.alexzhirkevich.compottie.internal.platform +import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.graphics.PathOperation -expect fun ExtendedPathMeasure() : ExtendedPathMeasure +internal expect fun ExtendedPathMeasure() : ExtendedPathMeasure -interface ExtendedPathMeasure : PathMeasure { +internal interface ExtendedPathMeasure : PathMeasure { fun nextContour() : Boolean } -fun Path.set(other : Path){ - op(this, other, PathOperation.Union) +internal fun Path.set(other : Path){ + reset() + addPath(other) } -fun Path.addPath(path: Path, matrix: Matrix) = addPath(path.apply { transform(matrix) }) \ No newline at end of file +//internal expect fun Path.set(other : Path) + +internal expect fun Path.addPath(path: Path, matrix: Matrix) : Path \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt deleted file mode 100644 index 73e52c3a..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/Json.kt +++ /dev/null @@ -1,57 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema - -import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer -import io.github.alexzhirkevich.compottie.internal.schema.layers.NullLayer -import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.shapes.EllipseShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.FillShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFill -import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientStroke -import io.github.alexzhirkevich.compottie.internal.schema.shapes.GroupShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.RectShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStrokeShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.Json -import kotlinx.serialization.modules.SerializersModule -import kotlinx.serialization.modules.polymorphic -import kotlinx.serialization.modules.subclass - -@OptIn(ExperimentalSerializationApi::class) -val LottieJson = Json { - ignoreUnknownKeys = true - isLenient = true - allowTrailingComma = true - serializersModule = SerializersModule { - polymorphic(Layer::class){ - subclass(ShapeLayer::class) - subclass(NullLayer::class) - } - - polymorphic(AnimatedValue::class){ - subclass(AnimatedValue.Default::class) - subclass(AnimatedValue.Animated::class) - } - polymorphic(AnimatedVector2::class){ - subclass(AnimatedVector2.Animated::class) - subclass(AnimatedVector2.Default::class) - } - polymorphic(Shape::class){ -// subclass(Path::class) - subclass(EllipseShape::class) - subclass(FillShape::class) - subclass(GradientFill::class) - subclass(GroupShape::class) - subclass(RectShape::class) -// subclass(Round::class) - subclass(SolidStrokeShape::class) - subclass(GradientStroke::class) - subclass(TrimPathShape::class) - subclass(TransformShape::class) - } - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt index 1503cf71..e6e065d9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable @Serializable internal class LottieData( @SerialName("fr") - val frameRate : Int, + val frameRate : Float, @SerialName("w") val width : Int, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieJson.kt new file mode 100644 index 00000000..0cd6ceec --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieJson.kt @@ -0,0 +1,87 @@ +package io.github.alexzhirkevich.compottie.internal.schema + +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer +import io.github.alexzhirkevich.compottie.internal.schema.layers.NullLayer +import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer +import io.github.alexzhirkevich.compottie.internal.schema.layers.ImageLayer +import io.github.alexzhirkevich.compottie.internal.schema.shapes.EllipseShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.FillShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFillShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientStrokeShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.GroupShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.PathShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.PolystarShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.RectShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.RoundShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStrokeShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape +import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.modules.SerializersModule +import kotlinx.serialization.modules.polymorphic +import kotlinx.serialization.modules.subclass + +@OptIn(ExperimentalSerializationApi::class) +internal val LottieJson by lazy { + Json { + ignoreUnknownKeys = true + isLenient = true + allowTrailingComma = true + serializersModule = SerializersModule { + + // all this polymorphic stuff doesn't really do anything. + // just referencing classes here to avoid them been tree-shaken by the proguard/webpack + + polymorphic(Layer::class) { + subclass(ShapeLayer::class) + subclass(NullLayer::class) + subclass(ImageLayer::class) + + defaultDeserializer { + NullLayer.serializer() + } + } + + polymorphic(Shape::class) { + subclass(EllipseShape::class) + subclass(FillShape::class) + subclass(GradientFillShape::class) + subclass(GradientStrokeShape::class) + subclass(GroupShape::class) + subclass(PathShape::class) + subclass(PolystarShape::class) + subclass(RectShape::class) + subclass(RoundShape::class) + subclass(SolidStrokeShape::class) + subclass(TransformShape::class) + subclass(TrimPathShape::class) + } + + polymorphic(AnimatedColor::class) { + subclass(AnimatedColor.Default::class) + subclass(AnimatedColor.Animated::class) + } + + polymorphic(AnimatedShape::class) { + subclass(AnimatedShape.Default::class) + subclass(AnimatedShape.Animated::class) + } + + polymorphic(AnimatedValue::class) { + subclass(AnimatedValue.Default::class) + subclass(AnimatedValue.Animated::class) + } + + polymorphic(AnimatedVector2::class) { + subclass(AnimatedVector2.Default::class) + subclass(AnimatedVector2.Animated::class) + } + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt deleted file mode 100644 index f2a52816..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/ModifierContent.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.schema - -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.Path - -interface ModifierContent { -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt index e36afef9..ac7c2456 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt @@ -54,8 +54,8 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { ) : AnimatedColor, KeyframeAnimation by BaseKeyframeAnimation( keyframes = value, emptyValue = Color.Transparent, - map = { s, e, p -> - lerp(s.asColor(), e.asColor(), p) + map = { s, e, p, _ -> + lerp(s.asColor(), e.asColor(), easingX.transform(p)) } ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt index 9d0741de..685ed5c8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt @@ -37,17 +37,26 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { @Transient override var shapeModifiers: List = emptyList() - private val path by lazy { + private val unmodifiedPath by lazy { Path().also { - bezier.modifiedBy(shapeModifiers).toShapeData().mapPath(it) + bezier.toShapeData().mapPath(it) } } + private val shapeData by lazy { + bezier.toShapeData() + } + @Transient private val tmpPath = Path() override fun interpolated(frame: Int): Path { + if (shapeModifiers.isEmpty()) { + tmpPath.set(unmodifiedPath) + return unmodifiedPath + } + tmpPath.reset() - tmpPath.set(path) + shapeData.modifiedBy(shapeModifiers, frame).mapPath(tmpPath) return tmpPath } } @@ -67,10 +76,6 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { @Transient override var shapeModifiers: List = emptyList() - set(value) { - field = value - delegate = createDelegate() - } @Transient private val tmpPath = Path() @@ -79,21 +84,20 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { private val tmpShapeData = ShapeData() @Transient - private var delegate = createDelegate() - - override fun interpolated(frame: Int): Path { - return delegate.interpolated(frame) - } - - private fun createDelegate() = BaseKeyframeAnimation( - keyframes = keyframes.map { it.toShapeKeyframe(shapeModifiers) }, + private var delegate = BaseKeyframeAnimation( + keyframes = keyframes.map { it.toShapeKeyframe() }, emptyValue = tmpPath, - map = { s, e, p -> - tmpShapeData.interpolateBetween(s, e, p) - tmpShapeData.mapPath(tmpPath) + map = { s, e, p, frame -> + tmpShapeData.interpolateBetween(s, e, easingX.transform(p)) + val modified = tmpShapeData.modifiedBy(shapeModifiers, frame) + modified.mapPath(tmpPath) tmpPath } ) + + override fun interpolated(frame: Int): Path { + return delegate.interpolated(frame) + } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt index aa343c7c..991a1d5b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt @@ -94,7 +94,7 @@ internal abstract class AnimatedTransform { } scale?.interpolated(frame) - ?.takeIf { it.x != 0f || it.y != 0f } + ?.takeIf { it.x != 1f || it.y != 1f } ?.let { matrix.preScale(it.x / 100f, it.y / 100f) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt index b061b933..bfac52db 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt @@ -41,7 +41,9 @@ internal sealed interface AnimatedValue : KeyframeAnimation, Indexable { ) : AnimatedValue, KeyframeAnimation by BaseKeyframeAnimation( keyframes = value, emptyValue = 1f, - map = { s, e, p -> lerp(s[0], e[0], p) } + map = { s, e, p, _ -> + lerp(s[0], e[0], easingX.transform(p)) + } ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt index b4ca4186..242663f4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt @@ -55,7 +55,12 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { ) : AnimatedVector2, KeyframeAnimation by BaseKeyframeAnimation( keyframes = value, emptyValue = Offset.Zero, - map = { s, e, p -> Offset(lerp(s[0], e[0], p), lerp(s[1], e[1], p)) } + map = { s, e, p, _ -> + Offset( + lerp(s[0], e[0], easingX.transform(p)), + lerp(s[1], e[1], easingY.transform(p)) + ) + } ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt index 33e73007..848d15a0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt @@ -1,10 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.schema.animation +import kotlin.math.roundToInt + internal class BaseKeyframeAnimation( keyframes: List>, private val emptyValue : T, - private val map : (K, K, Float) -> T + private val map : Keyframe.(K, K, Float, Int) -> T ) : KeyframeAnimation { private val sortedKeyframes = keyframes.sortedBy { it.time } @@ -18,35 +20,41 @@ internal class BaseKeyframeAnimation( } private val initialValue by lazy { - map( - requireNotNull( - sortedKeyframes[0].start, - InvalidKeyframeError - ), - requireNotNull( - sortedKeyframes[0].end ?: sortedKeyframes.getOrNull(1)?.start, - InvalidKeyframeError - ), - 0f - ) + keyframes.first().run { + map( + requireNotNull( + sortedKeyframes[0].start, + InvalidKeyframeError + ), + requireNotNull( + sortedKeyframes[0].end ?: sortedKeyframes.getOrNull(1)?.start, + InvalidKeyframeError + ), + 0f, + firstFrame.roundToInt() + ) + } } private val targetValue by lazy { - map( - requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.start, - InvalidKeyframeError - ), - requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.end - ?: sortedKeyframes.last().start, - InvalidKeyframeError - ), - 1f - ) + keyframes.last().run { + map( + requireNotNull( + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.start, + InvalidKeyframeError + ), + requireNotNull( + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.end + ?: sortedKeyframes.last().start, + InvalidKeyframeError + ), + 1f, + lastFrame.roundToInt() + ) + } } - final override fun interpolated(frame: Int): T { + override fun interpolated(frame: Int): T { return when { sortedKeyframes.isEmpty() -> emptyValue frame >= lastFrame -> targetValue @@ -65,17 +73,21 @@ internal class BaseKeyframeAnimation( } } - map( - requireNotNull( - sortedKeyframes[kfIdx].start, - InvalidKeyframeError - ), - requireNotNull( - sortedKeyframes[kfIdx].end ?: sortedKeyframes.getOrNull(kfIdx + 1)?.start, - InvalidKeyframeError - ), - sortedKeyframes[kfIdx].easing.transform(progress) - ) + sortedKeyframes[kfIdx].run { + map( + requireNotNull( + sortedKeyframes[kfIdx].start, + InvalidKeyframeError + ), + requireNotNull( + sortedKeyframes[kfIdx].end + ?: sortedKeyframes.getOrNull(kfIdx + 1)?.start, + InvalidKeyframeError + ), + progress, + frame + ) + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt index ba83048b..41187159 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt @@ -1,10 +1,30 @@ package io.github.alexzhirkevich.compottie.internal.schema.animation +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.ArraySerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.JsonTransformingSerializer + @Serializable class BezierInterpolation( - val x : FloatArray, - val y : FloatArray + @Serializable(with = BezierCoordinateSerializer::class) + val x : Array, + + @Serializable(with = BezierCoordinateSerializer::class) + val y : Array ) +@OptIn(ExperimentalSerializationApi::class) +internal class BezierCoordinateSerializer : JsonTransformingSerializer>(ArraySerializer(Float.serializer())) { + override fun transformDeserialize(element: JsonElement): JsonElement { + return if (element is JsonPrimitive){ + JsonArray(listOf(element)) + } else element + } +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt index 3799a013..f80104c2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt @@ -29,10 +29,10 @@ internal class BezierKeyframe( internal fun BezierKeyframe.toShapeKeyframe( - modifiers : List + modifiers : List = emptyList(), frame : Int = 0 ) = ShapeKeyframe( - start = start?.let { it.modifiedBy(modifiers).toShapeData() }, - end = end?.let { it.modifiedBy(modifiers).toShapeData() }, + start = start?.toShapeData()?.modifiedBy(modifiers, frame), + end = end?.toShapeData()?.modifiedBy(modifiers, frame), time = time, inValue = inValue, outValue = outValue diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt index d50c4d8a..4d08d7c0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt @@ -11,12 +11,28 @@ internal abstract class Keyframe { abstract val inValue: BezierInterpolation? abstract val outValue: BezierInterpolation? - val easing: Easing by lazy { + + val easingX: Easing by lazy { val i = inValue val o = outValue - if (o != null && i != null) { - CubicBezierEasing(o.x[0], o.y[0], i.x[0], i.y[0]) + if (!i?.x.isNullOrEmpty() && + !i?.y.isNullOrEmpty() && + !o?.x.isNullOrEmpty() && !o?.y.isNullOrEmpty()) { + CubicBezierEasing(o!!.x[0], o.y[0], i!!.x[0], i.y[0]) } else LinearEasing } -} \ No newline at end of file + + val easingY by lazy { + + val i = inValue + val o = outValue + + if ( i?.x?.size == 2 && i.y.size == 2 && o?.x?.size == 2 && o.y.size == 2){ + CubicBezierEasing(o.x[1], o.y[1], i.x[1], i.y[1]) + } else { + easingX + } + } +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt index 63ed65b0..8c2eab50 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt @@ -2,8 +2,12 @@ package io.github.alexzhirkevich.compottie.internal.schema.animation import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonTransformingSerializer -@Serializable +@Serializable() internal class ValueKeyframe( @SerialName("s") @@ -23,4 +27,3 @@ internal class ValueKeyframe( ) : Keyframe() - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt index ce189dea..4b23fe48 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt @@ -4,7 +4,7 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -internal class VectorKeyframe( +internal data class VectorKeyframe( @SerialName("s") override val start : FloatArray? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt index e13d395f..53b707ec 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt @@ -70,7 +70,7 @@ internal fun ShapeData.mapPath(outPath : Path) { outPath.reset() outPath.moveTo(initialPoint.x, initialPoint.y) - var pathFromDataCurrentPoint = initialPoint + var pathFromDataCurrentPoint = initialPoint for (i in curves.indices) { val curveData = curves[i] val cp1 = curveData.controlPoint1 diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt index b0f829ee..5eed769e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt @@ -29,6 +29,8 @@ internal class Transform( @SerialName("sa") override val skewAxis: AnimatedValue? = null, -) : AnimatedTransform() +) : AnimatedTransform() { + +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt index ae57f503..4b1c95d0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt @@ -115,19 +115,7 @@ internal abstract class BaseStrokeShape() : DrawingContent { contentsAfter.fastForEachReversed { content -> if (content.isIndividualTrimPath()) { - currentPathGroup?.let(pathGroups::add) - - currentPathGroup = PathGroup(content) - } else if (content is PathContent) { - if (currentPathGroup == null) { - currentPathGroup = PathGroup(trimPathContentBefore) - } - currentPathGroup?.paths?.add(content) - } - } - contentsAfter.fastForEachReversed { content -> - if (content.isIndividualTrimPath()) { currentPathGroup?.let(pathGroups::add) currentPathGroup = PathGroup(content) @@ -143,6 +131,35 @@ internal abstract class BaseStrokeShape() : DrawingContent { currentPathGroup?.let(pathGroups::add) } +// override fun setContents(contentsBefore: List, contentsAfter: List) { +// var trimPathContentBefore: TrimPathShape? = null +// for (i in contentsBefore.indices.reversed()) { +// val content = contentsBefore[i] +// if (content.isIndividualTrimPath()) { +// trimPathContentBefore = content +// } +// } +// +// var currentPathGroup: PathGroup? = null +// for (i in contentsAfter.indices.reversed()) { +// val content = contentsAfter[i] +// if (content.isIndividualTrimPath()) { +// if (currentPathGroup != null) { +// pathGroups.add(currentPathGroup) +// } +// currentPathGroup = PathGroup(content) +// } else if (content is PathContent) { +// if (currentPathGroup == null) { +// currentPathGroup = PathGroup(trimPathContentBefore) +// } +// currentPathGroup.paths.add(content) +// } +// } +// if (currentPathGroup != null) { +// pathGroups.add(currentPathGroup) +// } +// } + override fun getBounds( outBounds: MutableRect, parentMatrix: Matrix, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt index d7522b41..be478173 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 @@ -44,29 +45,46 @@ internal class EllipseShape( return path } - val pos = position.interpolated(frame) val size = size.interpolated(frame) + val halfWidth = size.x / 2f + val halfHeight = size.y / 2f + + // TODO: handle bounds + val cpW = halfWidth * ELLIPSE_CONTROL_POINT_PERCENTAGE + val cpH = halfHeight * ELLIPSE_CONTROL_POINT_PERCENTAGE path.reset() +// if (circleShape.isReversed) { +// path.moveTo(0f, -halfHeight) +// path.cubicTo(0 - cpW, -halfHeight, -halfWidth, 0 - cpH, -halfWidth, 0f) +// path.cubicTo(-halfWidth, 0 + cpH, 0 - cpW, halfHeight, 0f, halfHeight) +// path.cubicTo(0 + cpW, halfHeight, halfWidth, 0 + cpH, halfWidth, 0f) +// path.cubicTo(halfWidth, 0 - cpH, 0 + cpW, -halfHeight, 0f, -halfHeight) +// } else { + path.moveTo(0f, -halfHeight) + path.cubicTo(0 + cpW, -halfHeight, halfWidth, 0 - cpH, halfWidth, 0f) + path.cubicTo(halfWidth, 0 + cpH, 0 + cpW, halfHeight, 0f, halfHeight) + path.cubicTo(0 - cpW, halfHeight, -halfWidth, 0 + cpH, -halfWidth, 0f) + path.cubicTo(-halfWidth, 0 - cpH, 0 - cpW, -halfHeight, 0f, -halfHeight) +// } + + val position = position.interpolated(frame) + + path.translate(position) + + path.close() - path.addOval( - Rect( - left = pos.x - size.x/2, - top = pos.y - size.y/2, - right = pos.x + size.y/2, - bottom = pos.y + size.y/2 - ) - ) + trimPaths.apply(path, frame) return path } override fun setContents(contentsBefore: List, contentsAfter: List) { - for (i in contentsBefore.indices) { - val content = contentsBefore[i] - if (content.isSimultaneousTrimPath()) { - trimPaths.addTrimPath(content) + contentsBefore.fastForEach { + if (it.isSimultaneousTrimPath()) { + trimPaths.addTrimPath(it) } } } -} \ No newline at end of file +} +private const val ELLIPSE_CONTROL_POINT_PERCENTAGE = 0.55228f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt index ba4f4673..1fadc73d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt @@ -23,7 +23,7 @@ import kotlinx.serialization.Transient @Serializable @SerialName("gf") -internal class GradientFill( +internal class GradientFillShape( @SerialName("mn") override val matchName : String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStrokeShape.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStrokeShape.kt index b19da0f0..fac51f78 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStrokeShape.kt @@ -15,7 +15,7 @@ import kotlinx.serialization.Transient @Serializable @SerialName("gs") -internal class GradientStroke( +internal class GradientStrokeShape( @SerialName("mn") override val matchName : String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt index 60765d53..b49f4ca3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt @@ -1,9 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathFillType +import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent +import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName @@ -29,19 +32,29 @@ internal class PathShape( @Transient private val trimPaths: CompoundTrimPath = CompoundTrimPath() - override fun getPath(time: Int): Path { - return shape.interpolated(time) + private val path = Path() + override fun getPath(frame: Int): Path { + path.reset() + + if (hidden) { + return path + } + path.set(shape.interpolated(frame)) + path.fillType = PathFillType.EvenOdd + + trimPaths.apply(path, frame) + return path } override fun setContents(contentsBefore: List, contentsAfter: List) { val shapeModifierContents: MutableList = mutableListOf() - contentsBefore.forEach { content -> + contentsBefore.fastForEach { content -> if (content.isSimultaneousTrimPath()) { // Trim path individually will be handled by the stroke where paths are combined. trimPaths.addTrimPath(content) } else if (content is ShapeModifierContent) { - shapeModifierContents.add(content as ShapeModifierContent) + shapeModifierContents.add(content) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PolystarShape.kt new file mode 100644 index 00000000..30409d72 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PolystarShape.kt @@ -0,0 +1,310 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathMeasure +import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.utils.Math +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlin.jvm.JvmInline +import kotlin.math.PI +import kotlin.math.atan2 +import kotlin.math.ceil +import kotlin.math.cos +import kotlin.math.floor +import kotlin.math.sin + +@Serializable +@JvmInline +internal value class StarType(val type : Byte) { + companion object { + val Star = StarType(1) + val Polygon = StarType(2) + } +} + +@Serializable +@SerialName("sr") +internal class PolystarShape( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("p") + val position : AnimatedVector2?, + + @SerialName("d") + val direction : Int = 1, + + @SerialName("is") + val innerRoundness : AnimatedValue?, + + @SerialName("ir") + val innerRadius : AnimatedValue, + + @SerialName("or") + val outerRadius : AnimatedValue, + + @SerialName("os") + val outerRoundness : AnimatedValue?, + + @SerialName("r") + val rotation : AnimatedValue?, + + @SerialName("pt") + val points : AnimatedValue, + + @SerialName("sy") + val starType : StarType, + +) : Shape, PathContent { + + @Transient + private val path = Path() + + @Transient + private val lastSegmentPath = Path() + + @Transient + private val lastSegmentPathMeasure = PathMeasure() + + @Transient + private val trimPaths = CompoundTrimPath() + + override fun getPath(frame: Int): Path { + + path.reset() + + when (starType) { + StarType.Star -> createStarPath(frame) + StarType.Polygon -> createPolygonPath(frame) + } + + path.close() + + trimPaths.apply(path, frame) + + return path + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + contentsBefore.fastForEach { + if (it.isSimultaneousTrimPath()) { + trimPaths.addTrimPath(it) + } + } + } + + private fun createStarPath(frame: Int) { + val points = points.interpolated(frame = frame) + var currentAngle = Math.toRadians((rotation?.interpolated(frame) ?: 0f) - 90f) + + // adjust current angle for partial points + val anglePerPoint: Float = (TwoPI / points).toFloat() +// if (isReversed) { +// anglePerPoint *= -1f +// } + val halfAnglePerPoint = anglePerPoint / 2.0f + val partialPointAmount = points - points.toInt() + if (partialPointAmount != 0f) { + currentAngle += (halfAnglePerPoint * (1f - partialPointAmount)) + } + + val outerRadius = outerRadius.interpolated(frame) + val innerRadius = innerRadius.interpolated(frame) + + val innerRoundedness = innerRoundness?.interpolated(frame)?.div(100f) ?: 0f + val outerRoundedness = outerRoundness?.interpolated(frame)?.div(100f) ?: 0f + + var x: Float + var y: Float + var previousX: Float + var previousY: Float + var partialPointRadius = 0f + + if (partialPointAmount != 0f) { + partialPointRadius = innerRadius + partialPointAmount * (outerRadius - innerRadius) + x = partialPointRadius * cos(currentAngle) + y = partialPointRadius * sin(currentAngle) + path.moveTo(x, y) + currentAngle += (anglePerPoint * partialPointAmount / 2f) + } else { + x = outerRadius * cos(currentAngle) + y = outerRadius * sin(currentAngle) + path.moveTo(x, y) + currentAngle += halfAnglePerPoint + } + + + // True means the line will go to outer radius. False means inner radius. + var longSegment = false + val numPoints = (ceil(points) * 2).toInt() + repeat(numPoints) { i -> + var radius = if (longSegment) outerRadius else innerRadius + var dTheta = halfAnglePerPoint + if (partialPointRadius != 0f && i == numPoints - 2) { + dTheta = anglePerPoint * partialPointAmount / 2f + } + if (partialPointRadius != 0f && i == numPoints - 1) { + radius = partialPointRadius + } + previousX = x + previousY = y + x = radius * cos(currentAngle) + y = radius * sin(currentAngle) + + if (innerRoundedness == 0f && outerRoundedness == 0f) { + path.lineTo(x, y) + } else { + val cp1Theta = (atan2(previousY, previousX) - HalfPI) + val cp1Dx = cos(cp1Theta).toFloat() + val cp1Dy = sin(cp1Theta).toFloat() + + val cp2Theta = (atan2(y, x) - HalfPI) + val cp2Dx = cos(cp2Theta).toFloat() + val cp2Dy = sin(cp2Theta).toFloat() + + val cp1Roundedness = if (longSegment) innerRoundedness else outerRoundedness + val cp2Roundedness = if (longSegment) outerRoundedness else innerRoundedness + val cp1Radius = if (longSegment) innerRadius else outerRadius + val cp2Radius = if (longSegment) outerRadius else innerRadius + + var cp1x: Float = + cp1Radius * cp1Roundedness * POLYSTAR_MAGIC_NUMBER * cp1Dx + var cp1y: Float = + cp1Radius * cp1Roundedness * POLYSTAR_MAGIC_NUMBER * cp1Dy + var cp2x: Float = + cp2Radius * cp2Roundedness * POLYSTAR_MAGIC_NUMBER * cp2Dx + var cp2y: Float = + cp2Radius * cp2Roundedness * POLYSTAR_MAGIC_NUMBER * cp2Dy + + if (partialPointAmount != 0f) { + if (i == 0) { + cp1x *= partialPointAmount + cp1y *= partialPointAmount + } else if (i == numPoints - 1) { + cp2x *= partialPointAmount + cp2y *= partialPointAmount + } + } + + path.cubicTo(previousX - cp1x, previousY - cp1y, x + cp2x, y + cp2y, x, y) + } + + currentAngle += dTheta + longSegment = !longSegment + } + + + val position = position?.interpolated(frame)?.let { + path.translate(it) + } + + path.close() + } + + private fun createPolygonPath(frame: Int) { + val points = floor(points.interpolated(frame)).toInt() + var currentAngle = Math.toRadians((rotation?.interpolated(frame) ?: 0f) - 90f) + + // adjust current angle for partial points + val anglePerPoint = (TwoPI / points).toFloat() + + val roundedness = outerRoundness?.interpolated(frame)?.div(100f) ?: 0f + val radius = outerRadius.interpolated(frame) + var x: Float + var y: Float + var previousX: Float + var previousY: Float + x = radius * cos(currentAngle) + y = radius * sin(currentAngle) + path.moveTo(x, y) + currentAngle += anglePerPoint + + + repeat(points) { i -> + + previousX = x + previousY = y + x = radius * cos(currentAngle) + y = radius * sin(currentAngle) + + if (roundedness != 0f) { + val cp1Theta = (atan2(previousY, previousX) - HalfPI) + val cp1Dx = cos(cp1Theta) + val cp1Dy = sin(cp1Theta) + + val cp2Theta = atan2(y, x) - HalfPI + val cp2Dx = cos(cp2Theta).toFloat() + val cp2Dy = sin(cp2Theta).toFloat() + + val cp1x = radius * roundedness * POLYGON_MAGIC_NUMBER * cp1Dx + val cp1y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp1Dy + val cp2x = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dx + val cp2y = radius * roundedness * POLYGON_MAGIC_NUMBER * cp2Dy + + + val vX = (previousX - cp1x).toFloat() + val vY = (previousY - cp1y).toFloat() + val cpX = x + cp2x + val cpY = y + cp2y + + if (i == points - 1) { + // When there is a huge stroke, it will flash if the path ends where it starts. + // We want the final bezier curve to end *slightly* before the start. + // The close() call at the end will complete the polystar. + // https://github.com/airbnb/lottie-android/issues/2329 + lastSegmentPath.reset() + lastSegmentPath.moveTo(previousX, previousY) + lastSegmentPath.cubicTo(vX, vY, cpX, cpY, x, y) + lastSegmentPathMeasure.setPath(lastSegmentPath, false) + + val lastSegmentPosition = + lastSegmentPathMeasure.getPosition(lastSegmentPathMeasure.length * 0.9999f) + path.cubicTo( + vX, + vY, + cpX, + cpY, + lastSegmentPosition.x, + lastSegmentPosition.y + ) + } else { + path.cubicTo(vX, vY, x + cp2x, y + cp2y, x, y) + } + } else { + if (i != points - 1) { + // When there is a huge stroke, it will flash if the path ends where it starts. + // The close() call should make the path effectively equivalent. + // https://github.com/airbnb/lottie-android/issues/2329 + path.lineTo(x, y) + } + } + + currentAngle += anglePerPoint + } + + position?.interpolated(frame)?.takeIf { it != Offset.Zero }?.let { + path.translate(it) + } + path.close() + } +} + +private const val HalfPI = PI /2f +private const val TwoPI = PI * 2f +private const val POLYSTAR_MAGIC_NUMBER = .47829f +private const val POLYGON_MAGIC_NUMBER = .25f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt index 6b000bfc..612998d1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.RoundRect import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue @@ -45,7 +46,7 @@ internal class RectShape( private val trimPaths = CompoundTrimPath() override fun setContents(contentsBefore: List, contentsAfter: List) { - contentsBefore.forEach { + contentsBefore.fastForEach { if (it.isSimultaneousTrimPath()) { trimPaths.addTrimPath(it) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt deleted file mode 100644 index 212b91f8..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Round.kt +++ /dev/null @@ -1,33 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes -// -//import androidx.compose.ui.graphics.Paint -//import androidx.compose.ui.graphics.PathEffect -//import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -//import kotlinx.serialization.SerialName -//import kotlinx.serialization.Serializable -// -//@Serializable -//@SerialName("rd") -//internal class Round( -// -// @SerialName("mn") -// override val matchName : String? = null, -// -// @SerialName("nm") -// override val name : String? = null, -// -// @SerialName("hd") -// override val hidden : Boolean = false, -// -// @SerialName("r") -// val radius : AnimatedValue, -//) : Shape { -// -// override fun applyTo(paint: Paint, time: Int) { -// -// val radius = radius.interpolated(time) -// -// paint.pathEffect = PathEffect.cornerPathEffect(radius) -// } -// -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RoundShape.kt new file mode 100644 index 00000000..672598e0 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RoundShape.kt @@ -0,0 +1,188 @@ +package io.github.alexzhirkevich.compottie.internal.schema.shapes + +import androidx.compose.ui.geometry.Offset +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent +import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.schema.helpers.CubicCurveData +import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.utils.floorMod +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlin.math.hypot +import kotlin.math.min + +@Serializable +@SerialName("rd") +internal class RoundShape( + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + override val hidden : Boolean = false, + + @SerialName("r") + val radius : AnimatedValue, +) : Shape, ShapeModifierContent { + + @Transient + private var shapeData: ShapeData? = null + override fun modify(shape: ShapeData, frame : Int): ShapeData { + val startingCurves: List = shape.curves + + if (startingCurves.size <= 2) { + return shape + } + val roundedness: Float = radius.interpolated(frame) + if (roundedness == 0f) { + return shape + } + + val modifiedShapeData = getShapeData(shape) + modifiedShapeData.initialPoint = shape.initialPoint + val modifiedCurves = modifiedShapeData.curves + var modifiedCurvesIndex = 0 + val isClosed = shape.isClosed + + // i represents which vertex we are currently on. Refer to the docs of CubicCurveData prior to working with + // this code. + // When i == 0 + // vertex=ShapeData.initialPoint + // inCp=if closed vertex else curves[size - 1].cp2 + // outCp=curves[0].cp1 + // When i == 1 + // vertex=curves[0].vertex + // inCp=curves[0].cp2 + // outCp=curves[1].cp1. + // When i == size - 1 + // vertex=curves[size - 1].vertex + // inCp=curves[size - 1].cp2 + // outCp=if closed vertex else curves[0].cp1 + for (i in startingCurves.indices) { + val startingCurve = startingCurves[i] + val previousCurve = + startingCurves[floorMod(i - 1, startingCurves.size)] + val previousPreviousCurve = + startingCurves[floorMod(i - 2, startingCurves.size)] + val vertex = if ((i == 0 && !isClosed)) shape.initialPoint else previousCurve.vertex + val inPoint = if ((i == 0 && !isClosed)) vertex else previousCurve.controlPoint2 + val outPoint = startingCurve.controlPoint1 + val previousVertex = previousPreviousCurve.vertex + val nextVertex = startingCurve.vertex + + // We can't round the corner of the end of a non-closed curve. + val isEndOfCurve = !shape.isClosed && (i == 0 || i == startingCurves.size - 1) + if (inPoint == vertex && outPoint == vertex && !isEndOfCurve) { + // This vertex is a point. Round its corners + val dxToPreviousVertex: Float = vertex.x - previousVertex.x + val dyToPreviousVertex: Float = vertex.y - previousVertex.y + val dxToNextVertex: Float = nextVertex.x - vertex.x + val dyToNextVertex: Float = nextVertex.y - vertex.y + + val dToPreviousVertex = + hypot(dxToPreviousVertex.toDouble(), dyToPreviousVertex.toDouble()).toFloat() + val dToNextVertex = + hypot(dxToNextVertex.toDouble(), dyToNextVertex.toDouble()).toFloat() + + val previousVertexPercent = + min((roundedness / dToPreviousVertex).toDouble(), 0.5).toFloat() + val nextVertexPercent = + min((roundedness / dToNextVertex).toDouble(), 0.5).toFloat() + + // Split the vertex into two and move each vertex towards the previous/next vertex. + val newVertex1X: Float = + vertex.x + (previousVertex.x - vertex.x) * previousVertexPercent + val newVertex1Y: Float = + vertex.y + (previousVertex.y - vertex.y) * previousVertexPercent + val newVertex2X: Float = vertex.x + (nextVertex.x - vertex.x) * nextVertexPercent + val newVertex2Y: Float = vertex.y + (nextVertex.y - vertex.y) * nextVertexPercent + + // Extend the new vertex control point towards the original vertex. + val newVertex1OutPointX: Float = + newVertex1X - (newVertex1X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER + val newVertex1OutPointY: Float = + newVertex1Y - (newVertex1Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER + val newVertex2InPointX: Float = + newVertex2X - (newVertex2X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER + val newVertex2InPointY: Float = + newVertex2Y - (newVertex2Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER + + // Remap vertex/in/out point to CubicCurveData. + // Refer to the docs for CubicCurveData for more info on the difference. + var previousCurveData = modifiedCurves[floorMod(modifiedCurvesIndex - 1, modifiedCurves.size)] + var currentCurveData = modifiedCurves[modifiedCurvesIndex] + previousCurveData.controlPoint2 = Offset(newVertex1X, newVertex1Y) + previousCurveData.vertex = Offset(newVertex1X, newVertex1Y) + if (i == 0) { + modifiedShapeData.initialPoint = Offset(newVertex1X, newVertex1Y) + } + currentCurveData.controlPoint1 = Offset(newVertex1OutPointX, newVertex1OutPointY) + modifiedCurvesIndex++ + + previousCurveData = currentCurveData + currentCurveData = modifiedCurves[modifiedCurvesIndex] + previousCurveData.controlPoint2 = Offset(newVertex2InPointX, newVertex2InPointY) + previousCurveData.vertex = Offset(newVertex2X, newVertex2Y) + currentCurveData.controlPoint1 = Offset(newVertex2X, newVertex2Y) + modifiedCurvesIndex++ + } else { + // This vertex is not a point. Don't modify it. Refer to the documentation above and for CubicCurveData for mapping a vertex + // oriented point to CubicCurveData (path segments). + val previousCurveData = + modifiedCurves[floorMod(modifiedCurvesIndex - 1, modifiedCurves.size)] + val currentCurveData = modifiedCurves[modifiedCurvesIndex] + previousCurveData.controlPoint2 = previousCurve.controlPoint2 + previousCurveData.vertex = previousCurve.vertex + currentCurveData.controlPoint1 = previousCurve.controlPoint1 + modifiedCurvesIndex++ + } + } + return modifiedShapeData + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + + } + + private fun getShapeData(startingShapeData: ShapeData): ShapeData { + val startingCurves: List = startingShapeData.curves + val isClosed: Boolean = startingShapeData.isClosed + var vertices = 0 + + for (i in startingCurves.indices.reversed()) { + val startingCurve: CubicCurveData = startingCurves[i] + val previousCurve: CubicCurveData = + startingCurves[floorMod(i - 1, startingCurves.size)] + val vertex = if ((i == 0 && !isClosed)) + startingShapeData.initialPoint + else previousCurve.vertex + + val inPoint = if ((i == 0 && !isClosed)) + vertex else previousCurve.controlPoint2 + val outPoint = startingCurve.controlPoint1 + + val isEndOfCurve = + !startingShapeData.isClosed && (i == 0 || i == startingCurves.size - 1) + + vertices += if (inPoint == vertex && outPoint == vertex && !isEndOfCurve) { + 2 + } else { + 1 + } + } + if (shapeData?.curves?.size != vertices) { + val newCurves: MutableList = MutableList(vertices) { + CubicCurveData() + } + + shapeData = ShapeData(newCurves, Offset.Zero, false) + } + shapeData?.isClosed = isClosed + return shapeData!! + } +} + +private const val ROUNDED_CORNER_MAGIC_NUMBER = 0.5519f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt deleted file mode 100644 index 1d3be6ca..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Star.kt +++ /dev/null @@ -1,166 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes -// -//import androidx.compose.ui.geometry.Offset -//import androidx.compose.ui.geometry.Rect -//import androidx.compose.ui.graphics.Path -//import androidx.compose.ui.layout.ScaleFactor -//import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedVector2 -//import io.github.alexzhirkevich.compottie.internal.schema.properties.AnimatedValue -//import kotlinx.serialization.SerialName -//import kotlinx.serialization.Serializable -//import kotlinx.serialization.Transient -//import kotlin.jvm.JvmInline -//import kotlin.math.PI -//import kotlin.math.cos -//import kotlin.math.sin -// -//@Serializable -//@SerialName("sr") -//internal class Star( -// -// @SerialName("mn") -// override val matchName : String? = null, -// -// @SerialName("nm") -// override val name : String? = null, -// -// @SerialName("hd") -// override val hidden : Boolean = false, -// -// @SerialName("p") -// val position : AnimatedVector2, -// -// @SerialName("d") -// val direction : Int = 1, -// -// @SerialName("is") -// val innerRoundness : AnimatedValue, -// -// @SerialName("ir") -// val innerRadius : AnimatedValue, -// -// @SerialName("or") -// val outerRadius : AnimatedValue, -// -// @SerialName("os") -// val outerRoundness : AnimatedValue, -// -// @SerialName("r") -// val rotation : AnimatedValue, -// -// @SerialName("pt") -// val points : AnimatedValue, -// -// @SerialName("s") -// val size : AnimatedVector2, -// -// @SerialName("sy") -// val starType : StarType, -// -// ) : LayoutShape { -// -// @Transient -// private val path = Path() -// -// override fun getPath(time: Int): Path { -// -// path.rewind() -// -// val position = position.interpolated(time) -// val size = size.interpolated(time) -// -// val top = (position[0] - size[0] / 2) -// val left = (position[1] - size[0] / 2) -// -// path.addOval( -// Rect( -// top = top, -// left = left, -// bottom = top + size[0], -// right = left + size[1], -// ) -// ) -// return path -// } -// -// private fun applyStarTo(path: Path, scale: ScaleFactor, time: Int) { -// -// val points = points.interpolated(time) -// val rotation = rotation.interpolated(time) -// val outer_roundness = outerRoundness.interpolated(time) -// val inner_roundness = innerRoundness.interpolated(time) -// val outer_radius = outerRadius.interpolated(time) -// val inner_radius = innerRadius.interpolated(time) -// -// val half_angle = PI / points -// val angle_radians = rotation / 180 * PI -// -// // Tangents for rounded courners -// val tangent_len_outer = -// (outer_roundness * outer_radius * 2 * PI / (points * 4 * 100)).toFloat() -// val tangent_len_inner = -// (inner_roundness * inner_radius * 2 * PI / (points * 4 * 100)).toFloat() -// -// repeat(points.toInt()) { i -> -// val main_angle = -PI / 2 + angle_radians + i * half_angle * 2; -// -// val outer_vertex = Offset( -// outer_radius * cos(main_angle).toFloat(), -// outer_radius * sin(main_angle).toFloat() -// ); -// -// val outer_tangent = if (outer_radius == 0f) { -// Offset.Zero -// } else { -// Offset( -// outer_vertex.y / outer_radius * tangent_len_outer, -// -outer_vertex.x / outer_radius * tangent_len_outer -// ) -// } -// -// path.cubicTo( -// outer_vertex.x, -// outer_vertex.y, -// outer_tangent.x, -// outer_tangent.y, -// -outer_tangent.x, -// -outer_tangent.y -// ) -// -// // Star inner radius -// if (starType == StarType.Star) { -// val inner_vertex = Offset( -// inner_radius * cos(main_angle + half_angle).toFloat(), -// inner_radius * sin(main_angle + half_angle).toFloat() -// ) -// -// val inner_tangent = if (inner_radius.toInt() != 0) { -// Offset( -// inner_vertex.y / inner_radius * tangent_len_inner, -// -inner_vertex.x / inner_radius * tangent_len_inner -// ) -// } else { -// Offset.Zero -// } -// -// path.cubicTo( -// inner_vertex.x, -// inner_vertex.y, -// inner_tangent.x, -// inner_tangent.y, -// -inner_tangent.x, -// -inner_tangent.y -// ) -// } -// } -// } -//} -// -//@Serializable -//@JvmInline -//value class StarType(val type : Byte) { -// companion object { -// val Star = StarType(1) -// val Polygon = StarType(2) -// } -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt index f01cc8b5..d1e0dc12 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.schema.ModifierContent +import io.github.alexzhirkevich.compottie.internal.content.ModifierContent import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue @@ -34,7 +34,7 @@ internal class TransformShape( override val rotation : AnimatedValue ? = null, @SerialName("o") - override val opacity : AnimatedValue = AnimatedValue.Default(value = 100f), + override val opacity : AnimatedValue? = null, @SerialName("sk") override val skew: AnimatedValue? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt index 5f38bf0e..c02367db 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt @@ -54,5 +54,5 @@ internal fun Content.isIndividualTrimPath() : Boolean { returns(true) implies (this@isIndividualTrimPath is TrimPathShape) } - return this is TrimPathShape && type == TrimPathType.Simultaneously + return this is TrimPathShape && type == TrimPathType.Individually } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt index ec402fe2..e674cdc2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt @@ -4,7 +4,7 @@ fun floorMod(x: Float, y: Float): Int { return floorMod(x.toInt(), y.toInt()) } -private fun floorMod(x: Int, y: Int): Int { +fun floorMod(x: Int, y: Int): Int { return x - y * floorDiv(x, y) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt index 6f57e3fc..c9bfd598 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathMeasure import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape @@ -32,6 +33,7 @@ internal object Utils { val start: Float = trimPath.start.interpolated(frame) val end: Float = trimPath.end.interpolated(frame) val offset: Float = trimPath.offset.interpolated(frame) + applyTrimPathIfNeeded( path = path, startValue = start / 100f, @@ -43,20 +45,19 @@ internal object Utils { fun applyTrimPathIfNeeded( path: Path, startValue: Float, endValue: Float, offsetValue: Float, ) { - pathMeasure.setPath(path, false) val length: Float = pathMeasure.length if (startValue == 1f && endValue == 0f) { return } - if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { + if (length < 1f || abs((endValue - startValue - 1)) < .01f) { return } val start = length * startValue val end = length * endValue - var newStart = min(start.toDouble(), end.toDouble()).toFloat() - var newEnd = max(start.toDouble(), end.toDouble()).toFloat() + var newStart = min(start, end) + var newEnd = max(start, end) val offset = offsetValue * length newStart += offset @@ -85,33 +86,35 @@ internal object Utils { newStart -= length } + tempPath.reset() pathMeasure.getSegment( - newStart, - newEnd, - tempPath, - true + startDistance = newStart, + stopDistance = newEnd, + destination = tempPath, + startWithMoveTo = true ) if (newEnd > length) { tempPath2.reset() pathMeasure.getSegment( - 0f, - newEnd % length, - tempPath2, - true + startDistance = 0f, + stopDistance = newEnd % length, + destination = tempPath2, + startWithMoveTo = true ) tempPath.addPath(tempPath2) } else if (newStart < 0) { tempPath2.reset() pathMeasure.getSegment( - length + newStart, - length, - tempPath2, - true + startDistance = length + newStart, + stopDistance = length, + destination = tempPath2, + startWithMoveTo = true ) tempPath.addPath(tempPath2) } + path.set(tempPath) } } diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt index d37c910c..3cd7cc65 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt @@ -1,10 +1,15 @@ package io.github.alexzhirkevich.compottie.internal.platform +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure +import androidx.compose.ui.graphics.asComposePath +import androidx.compose.ui.graphics.asSkiaPath import androidx.compose.ui.graphics.asSkiaPathMeasure -actual fun ExtendedPathMeasure() : ExtendedPathMeasure = SkikoExtendedPathMeasure() +internal actual fun ExtendedPathMeasure() : ExtendedPathMeasure = SkikoExtendedPathMeasure() private class SkikoExtendedPathMeasure( private val delegate: PathMeasure = PathMeasure() @@ -14,3 +19,8 @@ private class SkikoExtendedPathMeasure( return delegate.asSkiaPathMeasure().nextContour() } } + + + +internal actual fun Path.addPath(path: Path, matrix: Matrix) = + asSkiaPath().addPath(path.asSkiaPath(), matrix = matrix.asSkia33()).asComposePath() \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt index cf307cdb..fbef5719 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -54,7 +54,7 @@ internal actual fun MakeRadialGradient( ) -private fun Matrix.asSkia33() : Matrix33 { +internal fun Matrix.asSkia33() : Matrix33 { return Matrix33( values[Matrix.ScaleX], values[Matrix.SkewX], diff --git a/example/shared/src/commonMain/composeResources/files/bouncing_ball.json b/example/shared/src/commonMain/composeResources/files/bouncing_ball.json new file mode 100644 index 00000000..8c95f30e --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/bouncing_ball.json @@ -0,0 +1 @@ +{"nm":"Bouncy Ball","v":"5.5.2","ip":0,"op":120,"fr":60,"w":512,"h":512,"layers":[{"ddd":0,"ty":4,"ind":0,"st":0,"ip":0,"op":120,"nm":"Layer","ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Ellipse Group","it":[{"ty":"el","nm":"Ellipse","p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]}},{"ty":"fl","nm":"Fill","o":{"a":0,"k":100},"c":{"a":0,"k":[0.71,0.192,0.278]},"r":1},{"ty":"tr","a":{"a":0,"k":[256,256]},"p":{"a":1,"k":[{"t":0,"s":[256,106],"h":0,"o":{"x":[0.333],"y":[0]},"i":{"x":[1],"y":[1]}},{"t":60,"s":[256,441],"h":0,"o":{"x":[0],"y":[0]},"i":{"x":[0.667],"y":[1]}},{"t":120,"s":[256,106]}]},"s":{"a":1,"k":[{"t":55,"s":[100,100],"h":0,"o":{"x":[0],"y":[0]},"i":{"x":[1],"y":[1]}},{"t":60,"s":[136,59],"h":0,"o":{"x":[0],"y":[0]},"i":{"x":[1],"y":[1]}},{"t":65,"s":[100,100]}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/checkmark.json b/example/shared/src/commonMain/composeResources/files/checkmark.json new file mode 100644 index 00000000..55527d5b --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/checkmark.json @@ -0,0 +1,1506 @@ +{ + "nm": "Comp 1", + "ddd": 0, + "h": 800, + "w": 800, + "meta": { + "g": "@lottiefiles/toolkit-js 0.33.2" + }, + "layers": [ + { + "ty": 4, + "nm": "Shape Layer 2", + "sr": 1, + "st": 0, + "op": 384, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 0, + "k": [ + 0, + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + }, + "sk": { + "a": 0, + "k": 0 + }, + "p": { + "a": 0, + "k": [ + 415.00000000000006, + 382, + 0 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "sa": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100, + "ix": 11 + } + }, + "ef": [], + "shapes": [ + { + "ty": "gr", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Group", + "nm": "Shape 1", + "ix": 1, + "cix": 2, + "np": 3, + "it": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Shape - Group", + "nm": "Path 1", + "ix": 1, + "d": 1, + "ks": { + "a": 0, + "k": { + "c": false, + "i": [ + [ + 0, + 0 + ], + [ + -22, + 1 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 22, + -1 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -134, + 56 + ], + [ + -74, + 108 + ], + [ + 72, + -56 + ] + ] + }, + "ix": 2 + } + }, + { + "ty": "st", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Graphic - Stroke", + "nm": "Stroke 1", + "lc": 2, + "lj": 1, + "ml": 4, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 55, + "ix": 5 + }, + "c": { + "a": 0, + "k": [ + 1, + 1, + 1 + ], + "ix": 3 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 85.449, + 85.449 + ], + "ix": 3 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + } + } + ] + }, + { + "ty": "tm", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Filter - Trim", + "nm": "Trim Paths 1", + "ix": 2, + "e": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 5 + }, + { + "s": [ + 100 + ], + "t": 22 + } + ], + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "s": { + "a": 1, + "k": [ + { + "o": { + "x": 0.463, + "y": 0 + }, + "i": { + "x": 0.853, + "y": 1 + }, + "s": [ + 0 + ], + "t": 22 + }, + { + "s": [ + 100 + ], + "t": 36 + } + ], + "ix": 1 + }, + "m": 1 + } + ], + "ind": 1 + }, + { + "ty": 4, + "nm": "3", + "sr": 1, + "st": 0, + "op": 384, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 0, + "k": [ + -54.531, + 27.469, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 152.399, + 152.399, + 100 + ], + "ix": 6 + }, + "sk": { + "a": 0, + "k": 0 + }, + "p": { + "a": 0, + "k": [ + 394, + 396, + 0 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "sa": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100, + "ix": 11 + } + }, + "ef": [], + "shapes": [ + { + "ty": "gr", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Group", + "nm": "Ellipse 1", + "ix": 1, + "cix": 2, + "np": 3, + "it": [ + { + "ty": "el", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Shape - Ellipse", + "nm": "Ellipse Path 1", + "d": 1, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "s": { + "a": 0, + "k": [ + 262.938, + 262.938 + ], + "ix": 2 + } + }, + { + "ty": "st", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Graphic - Stroke", + "nm": "Stroke 1", + "lc": 2, + "lj": 1, + "ml": 4, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 4, + "ix": 5 + }, + "c": { + "a": 0, + "k": [ + 0.1529, + 0.6588, + 0.1333 + ], + "ix": 3 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "p": { + "a": 0, + "k": [ + -54.531, + 27.469 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + } + } + ] + }, + { + "ty": "tm", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Filter - Trim", + "nm": "Trim Paths 1", + "ix": 2, + "e": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0.093, + "y": 1 + }, + "s": [ + 0 + ], + "t": 0 + }, + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0.093, + "y": 1 + }, + "s": [ + 100 + ], + "t": 12 + }, + { + "o": { + "x": 0.907, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 27 + }, + { + "s": [ + 0 + ], + "t": 39 + } + ], + "ix": 2 + }, + "o": { + "a": 0, + "k": 0, + "ix": 3 + }, + "s": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0.041, + "y": 1 + }, + "s": [ + 0 + ], + "t": 4 + }, + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0.041, + "y": 1 + }, + "s": [ + 100 + ], + "t": 15 + }, + { + "o": { + "x": 0.959, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 31 + }, + { + "s": [ + 0 + ], + "t": 42 + } + ], + "ix": 1 + }, + "m": 1 + } + ], + "ind": 2 + }, + { + "ty": 4, + "nm": "2", + "sr": 1, + "st": 0, + "op": 384, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 0, + "k": [ + -54.531, + 27.469, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 170.654, + 170.654, + 100 + ], + "ix": 6 + }, + "sk": { + "a": 0, + "k": 0 + }, + "p": { + "a": 0, + "k": [ + 394, + 396, + 0 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "sa": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100, + "ix": 11 + } + }, + "ef": [], + "shapes": [ + { + "ty": "gr", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Group", + "nm": "Ellipse 1", + "ix": 1, + "cix": 2, + "np": 3, + "it": [ + { + "ty": "el", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Shape - Ellipse", + "nm": "Ellipse Path 1", + "d": 1, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "s": { + "a": 0, + "k": [ + 262.938, + 262.938 + ], + "ix": 2 + } + }, + { + "ty": "st", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Graphic - Stroke", + "nm": "Stroke 1", + "lc": 2, + "lj": 1, + "ml": 4, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 4, + "ix": 5 + }, + "c": { + "a": 0, + "k": [ + 0.0471, + 0.5529, + 0.1725 + ], + "ix": 3 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "p": { + "a": 0, + "k": [ + -54.531, + 27.469 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + } + } + ] + }, + { + "ty": "tm", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Filter - Trim", + "nm": "Trim Paths 1", + "ix": 2, + "e": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 2 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 100 + ], + "t": 17 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 29 + }, + { + "s": [ + 0 + ], + "t": 44 + } + ], + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 0 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 360 + ], + "t": 12 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 360 + ], + "t": 27 + }, + { + "s": [ + 0 + ], + "t": 39 + } + ], + "ix": 3 + }, + "s": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 6 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 100 + ], + "t": 20 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 33 + }, + { + "s": [ + 0 + ], + "t": 47 + } + ], + "ix": 1 + }, + "m": 1 + } + ], + "ind": 3 + }, + { + "ty": 4, + "nm": "1", + "sr": 1, + "st": 0, + "op": 384, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 0, + "k": [ + -54.531, + 27.469, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 191.952, + 191.952, + 100 + ], + "ix": 6 + }, + "sk": { + "a": 0, + "k": 0 + }, + "p": { + "a": 0, + "k": [ + 394, + 396, + 0 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "sa": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100, + "ix": 11 + } + }, + "ef": [], + "shapes": [ + { + "ty": "gr", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Group", + "nm": "Ellipse 1", + "ix": 1, + "cix": 2, + "np": 3, + "it": [ + { + "ty": "el", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Shape - Ellipse", + "nm": "Ellipse Path 1", + "d": 1, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "s": { + "a": 0, + "k": [ + 262.938, + 262.938 + ], + "ix": 2 + } + }, + { + "ty": "st", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Graphic - Stroke", + "nm": "Stroke 1", + "lc": 2, + "lj": 1, + "ml": 4, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 4, + "ix": 5 + }, + "c": { + "a": 0, + "k": [ + 0.1529, + 0.6588, + 0.1333 + ], + "ix": 3 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "p": { + "a": 0, + "k": [ + -54.531, + 27.469 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + } + } + ] + }, + { + "ty": "tm", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Filter - Trim", + "nm": "Trim Paths 1", + "ix": 2, + "e": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 6 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 100 + ], + "t": 21 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 32 + }, + { + "s": [ + 0 + ], + "t": 47 + } + ], + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 4 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 360 + ], + "t": 16 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 360 + ], + "t": 30 + }, + { + "s": [ + 0 + ], + "t": 42 + } + ], + "ix": 3 + }, + "s": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 10 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 100 + ], + "t": 24 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 36 + }, + { + "s": [ + 0 + ], + "t": 50 + } + ], + "ix": 1 + }, + "m": 1 + } + ], + "ind": 4 + }, + { + "ty": 4, + "nm": "Shape Layer 1", + "sr": 1, + "st": 0, + "op": 384, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 0, + "k": [ + -54.531, + 27.469, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0, + 0, + 100 + ], + "t": 0 + }, + { + "o": { + "x": 0.167, + "y": 0.167 + }, + "i": { + "x": 0.833, + "y": 0.833 + }, + "s": [ + 141.835, + 141.835, + 100 + ], + "t": 16 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 141.835, + 141.835, + 100 + ], + "t": 27 + }, + { + "s": [ + 0, + 0, + 100 + ], + "t": 43 + } + ], + "ix": 6 + }, + "sk": { + "a": 0, + "k": 0 + }, + "p": { + "a": 0, + "k": [ + 394, + 396, + 0 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "sa": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100, + "ix": 11 + } + }, + "ef": [], + "shapes": [ + { + "ty": "gr", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Group", + "nm": "Ellipse 1", + "ix": 1, + "cix": 2, + "np": 3, + "it": [ + { + "ty": "el", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Shape - Ellipse", + "nm": "Ellipse Path 1", + "d": 1, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "s": { + "a": 0, + "k": [ + 262.938, + 262.938 + ], + "ix": 2 + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Graphic - Fill", + "nm": "Fill 1", + "c": { + "a": 0, + "k": [ + 0.1529, + 0.6588, + 0.1333 + ], + "ix": 4 + }, + "r": 1, + "o": { + "a": 0, + "k": 100, + "ix": 5 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "p": { + "a": 0, + "k": [ + -54.531, + 27.469 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + } + } + ] + } + ], + "ind": 5 + } + ], + "v": "5.5.9", + "fr": 24, + "op": 84, + "ip": 0, + "assets": [] +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/fade_balls.json b/example/shared/src/commonMain/composeResources/files/fade_balls.json new file mode 100644 index 00000000..d1539247 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/fade_balls.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.5.2","a":"","k":"","d":"","tc":""},"fr":25,"ip":0,"op":114,"w":1080,"h":1080,"nm":"Coloring Ball","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[353.056,540,0],"ix":2},"a":{"a":0,"k":[-164.895,104.476,0],"ix":1},"s":{"a":0,"k":[146,146,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],"o":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],"v":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":2,"s":[1,0,0.028235371908,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13.11,"s":[0.056470490992,1,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24.223,"s":[0,0.098823800683,1,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35.333,"s":[1,0,0.517646789551,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":46.444,"s":[1,0,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57.556,"s":[0,1,0.564705908298,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":68.667,"s":[0,0.098823800683,1,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":79.777,"s":[1,0,0,1]},{"t":90.8896484375,"s":[0,1,0.564705908298,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-164.895,104.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":2,"op":252,"st":2,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[723.944,540,0],"ix":2},"a":{"a":0,"k":[-164.895,104.476,0],"ix":1},"s":{"a":0,"k":[146,146,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],"o":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],"v":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[1,0,0.687059529622,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18.11,"s":[0,1,0.84705889225,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29.223,"s":[0.997646987438,1,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40.333,"s":[0,1,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":51.444,"s":[0.710588574409,0,1,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":62.556,"s":[1,0.494117677212,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":73.667,"s":[0.997646987438,1,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":84.777,"s":[0.997646987438,1,0,1]},{"t":95.8896484375,"s":[1,0.494117677212,0,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-164.895,104.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":257,"st":7,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2},"a":{"a":0,"k":[-164.895,104.476,0],"ix":1},"s":{"a":0,"k":[146,146,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],"o":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],"v":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[0,0.494117468596,1,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15.11,"s":[0.57882386446,0,1,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26.223,"s":[1,0.475294411182,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37.333,"s":[0,0.512941002846,1,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":48.444,"s":[1,0,0.404705822468,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":59.556,"s":[0,0.73882317543,1,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":70.667,"s":[1,0.475294411182,0,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":81.777,"s":[0,0.512941002846,1,1]},{"t":92.8896484375,"s":[0,0.73882317543,1,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-164.895,104.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":254,"st":4,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/gradient_ellipse.json b/example/shared/src/commonMain/composeResources/files/gradient_ellipse.json new file mode 100644 index 00000000..7aab7e02 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/gradient_ellipse.json @@ -0,0 +1 @@ +{"v":"4.10.1","fr":60,"ip":0,"op":120,"w":800,"h":800,"nm":"loading_animation","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":23,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":34,"s":[100],"e":[20]},{"t":69}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":23,"s":[400,400],"e":[440,440]},{"i":{"x":[0.009,0.009],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p009_1_0p333_0","0p009_1_0p333_0"],"t":34,"s":[440,440],"e":[400,400]},{"t":59}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[10],"e":[5]},{"t":59}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":27,"s":[100],"e":[20]},{"t":62}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":16,"s":[320,320],"e":[360,360]},{"i":{"x":[0.025,0.025],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p025_1_0p333_0","0p025_1_0p333_0"],"t":27,"s":[360,360],"e":[320,320]},{"t":52}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":27,"s":[10],"e":[5]},{"t":52}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":9,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":20,"s":[100],"e":[20]},{"t":55}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":9,"s":[240,240],"e":[280,280]},{"i":{"x":[0.051,0.051],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p051_1_0p333_0","0p051_1_0p333_0"],"t":20,"s":[280,280],"e":[240,240]},{"t":45}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[10],"e":[5]},{"t":45}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[100],"e":[20]},{"t":48}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":2,"s":[160,160],"e":[200,200]},{"i":{"x":[0.034,0.034],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p034_1_0p333_0","0p034_1_0p333_0"],"t":13,"s":[200,200],"e":[160,160]},{"t":38}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[10],"e":[5]},{"t":38}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":11,"s":[100],"e":[20]},{"t":46}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":0,"s":[80,80],"e":[120,120]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":11,"s":[120,120],"e":[80,80]},{"t":36}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[10],"e":[5]},{"t":35}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0}]} diff --git a/example/shared/src/commonMain/composeResources/files/polystar.json b/example/shared/src/commonMain/composeResources/files/polystar.json new file mode 100644 index 00000000..90a52ecb --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/polystar.json @@ -0,0 +1 @@ +{"v":"5.7.1","ip":0,"op":180,"nm":"Animation","mn":"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}","fr":60,"w":512,"h":512,"layers":[{"ty":4,"ddd":0,"nm":"Layer","mn":"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}","ip":0,"op":180,"ind":0,"st":0,"sr":1,"ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"PolyStar","mn":"{9199543e-3552-4e51-a802-623f2a4a2ca1}","it":[{"ty":"sr","nm":"PolyStar","sy":1,"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"pt":{"a":0,"k":5},"or":{"a":0,"k":200},"os":{"a":0,"k":0},"ir":{"a":0,"k":100},"is":{"a":0,"k":0}},{"ty":"st","nm":"Stroke","mn":"{0930ce27-c8f9-4371-b0cf-111a859abfaf}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.979995422293431,0.28000305180437934]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":30}},{"ty":"tr","a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}],"meta":{"g":"Glaxnimate 0.4.6-32-gb62899be"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json new file mode 100644 index 00000000..5b45589b --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -0,0 +1,363 @@ +{ + "nm": "Comp 1", + "ddd": 0, + "h": 800, + "w": 800, + "meta": { + "g": "@lottiefiles/toolkit-js 0.33.2" + }, + "layers": [ + { + "ty": 4, + "nm": "1", + "sr": 1, + "st": 0, + "op": 384, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 0, + "k": [ + -54.531, + 27.469, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 191.952, + 191.952, + 100 + ], + "ix": 6 + }, + "sk": { + "a": 0, + "k": 0 + }, + "p": { + "a": 0, + "k": [ + 394, + 396, + 0 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "sa": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100, + "ix": 11 + } + }, + "ef": [], + "shapes": [ + { + "ty": "gr", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Group", + "nm": "Ellipse 1", + "ix": 1, + "cix": 2, + "np": 3, + "it": [ + { + "ty": "el", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Shape - Ellipse", + "nm": "Ellipse Path 1", + "d": 1, + "p": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 3 + }, + "s": { + "a": 0, + "k": [ + 262.938, + 262.938 + ], + "ix": 2 + } + }, + { + "ty": "st", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Graphic - Stroke", + "nm": "Stroke 1", + "lc": 2, + "lj": 1, + "ml": 4, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 4, + "ix": 5 + }, + "c": { + "a": 0, + "k": [ + 0.1529, + 0.6588, + 0.1333 + ], + "ix": 3 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "p": { + "a": 0, + "k": [ + -54.531, + 27.469 + ], + "ix": 2 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + } + } + ] + }, + { + "ty": "tm", + "bm": 0, + "hd": false, + "mn": "ADBE Vector Filter - Trim", + "nm": "Trim Paths 1", + "ix": 2, + "e": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 6 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 100 + ], + "t": 21 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 32 + }, + { + "s": [ + 0 + ], + "t": 47 + } + ], + "ix": 2 + }, + "o": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 4 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 360 + ], + "t": 16 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 360 + ], + "t": 30 + }, + { + "s": [ + 0 + ], + "t": 42 + } + ], + "ix": 3 + }, + "s": { + "a": 1, + "k": [ + { + "o": { + "x": 0.333, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 0 + ], + "t": 10 + }, + { + "o": { + "x": 0.167, + "y": 0 + }, + "i": { + "x": 0, + "y": 1 + }, + "s": [ + 100 + ], + "t": 24 + }, + { + "o": { + "x": 1, + "y": 0 + }, + "i": { + "x": 0.667, + "y": 1 + }, + "s": [ + 100 + ], + "t": 36 + }, + { + "s": [ + 0 + ], + "t": 50 + } + ], + "ix": 1 + }, + "m": 1 + } + ], + "ind": 4 + } + ], + "v": "5.5.9", + "fr": 24, + "op": 84, + "ip": 0, + "assets": [] +} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 01d3885b..1ae5a3a8 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,8 +1,13 @@ import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.JsonString import io.github.alexzhirkevich.compottie.LottieCompositionSpec @@ -12,596 +17,44 @@ import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi -private const val lottieData = """ -{"v":"4.10.1","fr":60,"ip":0,"op":120,"w":800,"h":800,"nm":"loading_animation","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":23,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":34,"s":[100],"e":[20]},{"t":69}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":23,"s":[400,400],"e":[440,440]},{"i":{"x":[0.009,0.009],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p009_1_0p333_0","0p009_1_0p333_0"],"t":34,"s":[440,440],"e":[400,400]},{"t":59}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[10],"e":[5]},{"t":59}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":27,"s":[100],"e":[20]},{"t":62}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":16,"s":[320,320],"e":[360,360]},{"i":{"x":[0.025,0.025],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p025_1_0p333_0","0p025_1_0p333_0"],"t":27,"s":[360,360],"e":[320,320]},{"t":52}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":27,"s":[10],"e":[5]},{"t":52}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":9,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":20,"s":[100],"e":[20]},{"t":55}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":9,"s":[240,240],"e":[280,280]},{"i":{"x":[0.051,0.051],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p051_1_0p333_0","0p051_1_0p333_0"],"t":20,"s":[280,280],"e":[240,240]},{"t":45}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[10],"e":[5]},{"t":45}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[100],"e":[20]},{"t":48}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":2,"s":[160,160],"e":[200,200]},{"i":{"x":[0.034,0.034],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p034_1_0p333_0","0p034_1_0p333_0"],"t":13,"s":[200,200],"e":[160,160]},{"t":38}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[10],"e":[5]},{"t":38}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[20],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":11,"s":[100],"e":[20]},{"t":46}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,400,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":0,"s":[80,80],"e":[120,120]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0_1_0p333_0","0_1_0p333_0"],"t":11,"s":[120,120],"e":[80,80]},{"t":36}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[10],"e":[5]},{"t":35}],"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],"ix":8}},"s":{"a":0,"k":[0,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":120,"st":0,"bm":0}]} -""" +private val GRADIENT_ELLIPSE = "files/gradient_ellipse.json" +private val TEST = "files/test.json" +private val CHECKMARK = "files/checkmark.json" +private val FADE_BALLS = "files/fade_balls.json" +private val BOUNCING_BALL = "files/bouncing_ball.json" +private val POLYSTAR = "files/polystar.json" +@OptIn(ExperimentalResourceApi::class) @Composable fun App() { - val composition = rememberLottieComposition( - LottieCompositionSpec.JsonString(lottieData) - ) - - val progress by animateLottieCompositionAsState( - composition = composition.value, - iterations = LottieConstants.IterateForever, - ) + val json by produceState(null){ + value = Res.readBytes(CHECKMARK).decodeToString() + } - Image( - modifier = Modifier.fillMaxSize(), - painter = rememberLottiePainter( - composition = composition, - progress = { - progress - }, - onLoadError = { throw it } - ), - contentDescription = null - ) + if (json != null) { + val composition = rememberLottieComposition( + LottieCompositionSpec.JsonString(json!!) + ) + + val progress by animateLottieCompositionAsState( + composition = composition.value, + iterations = LottieConstants.IterateForever, + ) + + Image( + modifier = Modifier.fillMaxSize().background(Color.LightGray), + painter = rememberLottiePainter( + composition = composition, + progress = { + progress + }, + onLoadError = { throw it } + ), + contentDescription = null + ) + } } -private val fadeBalls = "{\"v\":\"4.8.0\",\"meta\":{\"g\":\"LottieFiles AE 3.5.2\",\"a\":\"\",\"k\":\"\",\"d\":\"\",\"tc\":\"\"},\"fr\":25,\"ip\":0,\"op\":114,\"w\":1080,\"h\":1080,\"nm\":\"Coloring Ball\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[353.056,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[1,0,0.028235371908,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13.11,\"s\":[0.056470490992,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":24.223,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":35.333,\"s\":[1,0,0.517646789551,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":46.444,\"s\":[1,0,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":57.556,\"s\":[0,1,0.564705908298,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":68.667,\"s\":[0,0.098823800683,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":79.777,\"s\":[1,0,0,1]},{\"t\":90.8896484375,\"s\":[0,1,0.564705908298,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":2,\"op\":252,\"st\":2,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[723.944,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":7,\"s\":[1,0,0.687059529622,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":18.11,\"s\":[0,1,0.84705889225,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":29.223,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":40.333,\"s\":[0,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":51.444,\"s\":[0.710588574409,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":62.556,\"s\":[1,0.494117677212,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":73.667,\"s\":[0.997646987438,1,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":84.777,\"s\":[0.997646987438,1,0,1]},{\"t\":95.8896484375,\"s\":[1,0.494117677212,0,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":7,\"op\":257,\"st\":7,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[540,540,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[-164.895,104.476,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[146,146,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[31.978,0],[0,-31.978],[-31.978,0],[0,31.978]],\"o\":[[-31.978,0],[0,31.978],[31.978,0],[0,-31.978]],\"v\":[[0,-57.902],[-57.902,0],[0,57.902],[57.902,0]],\"c\":true},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":4,\"s\":[0,0.494117468596,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":15.11,\"s\":[0.57882386446,0,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":26.223,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":37.333,\"s\":[0,0.512941002846,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":48.444,\"s\":[1,0,0.404705822468,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":59.556,\"s\":[0,0.73882317543,1,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":70.667,\"s\":[1,0.475294411182,0,1]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":81.777,\"s\":[0,0.512941002846,1,1]},{\"t\":92.8896484375,\"s\":[0,0.73882317543,1,1]}],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"bm\":0,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[-164.895,104.476],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":4,\"op\":254,\"st\":4,\"bm\":0}],\"markers\":[]}" - -private val gradientStrokeEllipsesSingle = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" - -private val strokeEllipse = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"st\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"c\":{\"a\":0,\"k\":[0,0.627,1],\"ix\":8},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" -private val ellipseCenter = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[400,400],\"ix\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[400,400],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" - -private val gradientStrokeEllipses = "{\"v\":\"4.10.1\",\"fr\":60,\"ip\":0,\"op\":120,\"w\":800,\"h\":800,\"nm\":\"loading_animation\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 5\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":23,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":34,\"s\":[100]},{\"t\":69,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":23,\"s\":[400,400]},{\"i\":{\"x\":[0.009,0.009],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":34,\"s\":[440,440]},{\"t\":59,\"s\":[400,400]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":4,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":23,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":34,\"s\":[10]},{\"t\":59,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Shape Layer 4\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":16,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":27,\"s\":[100]},{\"t\":62,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":16,\"s\":[320,320]},{\"i\":{\"x\":[0.025,0.025],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":27,\"s\":[360,360]},{\"t\":52,\"s\":[320,320]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":16,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":27,\"s\":[10]},{\"t\":52,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Shape Layer 3\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":9,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":20,\"s\":[100]},{\"t\":55,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":9,\"s\":[240,240]},{\"i\":{\"x\":[0.051,0.051],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":20,\"s\":[280,280]},{\"t\":45,\"s\":[240,240]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":9,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":20,\"s\":[10]},{\"t\":45,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":4,\"ty\":4,\"nm\":\"Shape Layer 2\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":2,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":13,\"s\":[100]},{\"t\":48,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":2,\"s\":[160,160]},{\"i\":{\"x\":[0.034,0.034],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":13,\"s\":[200,200]},{\"t\":38,\"s\":[160,160]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":2,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":13,\"s\":[10]},{\"t\":38,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":5,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":0,\"s\":[20]},{\"i\":{\"x\":[0.667],\"y\":[1]},\"o\":{\"x\":[0.333],\"y\":[0]},\"t\":11,\"s\":[100]},{\"t\":46,\"s\":[20]}],\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[400,400,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.667,0.667],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":0,\"s\":[80,80]},{\"i\":{\"x\":[0,0],\"y\":[1,1]},\"o\":{\"x\":[0.333,0.333],\"y\":[0,0]},\"t\":11,\"s\":[120,120]},{\"t\":36,\"s\":[80,80]}],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false},{\"ty\":\"gs\",\"o\":{\"a\":0,\"k\":100,\"ix\":9},\"w\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":0,\"s\":[5]},{\"i\":{\"x\":[0.833],\"y\":[0.833]},\"o\":{\"x\":[0.167],\"y\":[0.167]},\"t\":11,\"s\":[10]},{\"t\":35,\"s\":[5]}],\"ix\":10},\"g\":{\"p\":3,\"k\":{\"a\":0,\"k\":[0,0,0.627,1,0.5,0.496,0.314,1,1,0.992,0,1],\"ix\":8}},\"s\":{\"a\":0,\"k\":[0,0],\"ix\":4},\"e\":{\"a\":0,\"k\":[100,0],\"ix\":5},\"t\":1,\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Gradient Stroke 1\",\"mn\":\"ADBE Vector Graphic - G-Stroke\",\"hd\":false}],\"ip\":0,\"op\":120,\"st\":0,\"bm\":0}]}" -private val roundRect = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"rc\",\"nm\":\"Rectangle\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]},\"r\":{\"a\":0,\"k\":50}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" - -private val rect = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"rc\",\"nm\":\"Rectangle\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]},\"r\":{\"a\":0,\"k\":0}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" - -private val oval = "{\"v\":\"5.5.7\",\"ip\":0,\"op\":180,\"nm\":\"Animation\",\"mn\":\"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}\",\"fr\":60,\"w\":512,\"h\":512,\"assets\":[],\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":180,\"nm\":\"Layer\",\"mn\":\"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}\",\"ks\":{\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Group\",\"it\":[{\"ty\":\"el\",\"nm\":\"Ellipse\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[256,256]}},{\"ty\":\"st\",\"nm\":\"Stroke\",\"mn\":\"{0930ce27-c8f9-4371-b0cf-111a859abfaf}\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[1,0.9803921568627451,0.2823529411764706]},\"lc\":2,\"lj\":2,\"ml\":0,\"w\":{\"a\":0,\"k\":30}},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"p\":{\"a\":0,\"k\":[249.3134328358209,254.47164179104476]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}],\"meta\":{\"g\":\"Glaxnimate 0.4.6-26-g7b05e75c\"}}" - -val bounsingBallWithAnchor = "{\"nm\":\"Bouncy Ball\",\"v\":\"5.5.2\",\"ip\":0,\"op\":120,\"fr\":60,\"w\":512,\"h\":512,\"layers\":[{\"ddd\":0,\"ty\":4,\"ind\":0,\"st\":0,\"ip\":0,\"op\":120,\"nm\":\"Layer\",\"ks\":{\"a\":{\"a\":0,\"k\":[0,0]},\"p\":{\"a\":0,\"k\":[0,0]},\"s\":{\"a\":0,\"k\":[100,100]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}},\"shapes\":[{\"ty\":\"gr\",\"nm\":\"Ellipse Group\",\"it\":[{\"ty\":\"el\",\"nm\":\"Ellipse\",\"p\":{\"a\":0,\"k\":[256,256]},\"s\":{\"a\":0,\"k\":[100,100]}},{\"ty\":\"fl\",\"nm\":\"Fill\",\"o\":{\"a\":0,\"k\":100},\"c\":{\"a\":0,\"k\":[0.71,0.192,0.278]},\"r\":1},{\"ty\":\"tr\",\"a\":{\"a\":0,\"k\":[256,256]},\"p\":{\"a\":1,\"k\":[{\"t\":0,\"s\":[256,106],\"h\":0,\"o\":{\"x\":[0.333],\"y\":[0]},\"i\":{\"x\":[1],\"y\":[1]}},{\"t\":60,\"s\":[256,441],\"h\":0,\"o\":{\"x\":[0],\"y\":[0]},\"i\":{\"x\":[0.667],\"y\":[1]}},{\"t\":120,\"s\":[256,106]}]},\"s\":{\"a\":1,\"k\":[{\"t\":55,\"s\":[100,100],\"h\":0,\"o\":{\"x\":[0],\"y\":[0]},\"i\":{\"x\":[1],\"y\":[1]}},{\"t\":60,\"s\":[136,59],\"h\":0,\"o\":{\"x\":[0],\"y\":[0]},\"i\":{\"x\":[1],\"y\":[1]}},{\"t\":65,\"s\":[100,100]}]},\"r\":{\"a\":0,\"k\":0},\"o\":{\"a\":0,\"k\":100}}]}]}]}" - -private val bounsingBall = """ - { - "nm": "Bouncy Ball", - "v": "5.5.2", - "ip": 0, - "op": 120, - "fr": 60, - "w": 512, - "h": 512, - "layers": [ - { - "ddd": 0, - "ty": 4, - "ind": 0, - "st": 0, - "ip": 0, - "op": 120, - "nm": "Layer", - "ks": { - "a": { - "a": 0, - "k": [ - 0, - 0 - ] - }, - "p": { - "a": 0, - "k": [ - 0, - 0 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - }, - "shapes": [ - { - "ty": "gr", - "nm": "Ellipse Group", - "it": [ - { - "ty": "el", - "nm": "Ellipse", - "p": { - "a": 0, - "k": [ - 204, - 169 - ] - }, - "s": { - "a": 0, - "k": [ - 153, - 153 - ] - } - }, - { - "ty": "fl", - "nm": "Fill", - "o": { - "a": 0, - "k": 100 - }, - "c": { - "a": 0, - "k": [ - 0.710, - 0.192, - 0.278 - ] - }, - "r": 1 - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 204, - 169 - ] - }, - "p": { - "a": 1, - "k": [ - { - "t": 0, - "s": [ - 235, - 106 - ], - "h": 0, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "i": { - "x": [ - 1 - ], - "y": [ - 1 - ] - } - }, - { - "t": 60, - "s": [ - 265, - 441 - ], - "h": 0, - "o": { - "x": [ - 0 - ], - "y": [ - 0 - ] - }, - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - } - }, - { - "t": 120, - "s": [ - 235, - 106 - ] - } - ] - }, - "s": { - "a": 1, - "k": [ - { - "t": 55, - "s": [ - 100, - 100 - ], - "h": 0, - "o": { - "x": [ - 0 - ], - "y": [ - 0 - ] - }, - "i": { - "x": [ - 1 - ], - "y": [ - 1 - ] - } - }, - { - "t": 60, - "s": [ - 136, - 59 - ], - "h": 0, - "o": { - "x": [ - 0 - ], - "y": [ - 0 - ] - }, - "i": { - "x": [ - 1 - ], - "y": [ - 1 - ] - } - }, - { - "t": 65, - "s": [ - 100, - 100 - ] - } - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - } - ] - } - ] - } - ] - } -""".trimIndent() - -private val shapesLottie = """ - { - "v": "5.5.7", - "ip": 0, - "op": 180, - "nm": "Animation", - "mn": "{7c55df9e-4c06-4afe-bcb7-a2b4b9d5f7c9}", - "fr": 60, - "w": 512, - "h": 512, - "assets": [ - ], - "layers": [ - { - "ddd": 0, - "ty": 4, - "ind": 1, - "st": 0, - "ip": 0, - "op": 180, - "nm": "Ellipse", - "mn": "{0a36d01c-18e1-48d3-8e8f-cc093b3f24ba}", - "ks": { - "a": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "p": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - }, - "shapes": [ - { - "ty": "gr", - "nm": "Ellipse", - "mn": "{f1becc2a-49f0-4f0c-918f-bdffe4c6870f}", - "it": [ - { - "ty": "el", - "nm": "Ellipse", - "mn": "{2aabac6e-1dd8-41b0-b60b-baf75ccb6318}", - "p": { - "a": 0, - "k": [ - 303.9044776119403, - 324.9671641791045 - ] - }, - "s": { - "a": 0, - "k": [ - 205.46865671641788, - 204.6089552238806 - ] - } - }, - { - "ty": "st", - "hd": true, - "nm": "Stroke", - "mn": "{be0ec062-125f-46e3-bb2b-c9abfd75d49f}", - "o": { - "a": 0, - "k": 100 - }, - "c": { - "a": 0, - "k": [ - 0, - 0.5019607843137255, - 1 - ] - }, - "lc": 2, - "lj": 2, - "ml": 0, - "w": { - "a": 0, - "k": 1 - } - }, - { - "ty": "fl", - "nm": "Fill", - "mn": "{b1921647-2329-42c2-af2d-5379557b5b54}", - "o": { - "a": 0, - "k": 100 - }, - "c": { - "a": 0, - "k": [ - 0.9411764705882353, - 0.11372549019607843, - 0.0392156862745098 - ] - }, - "r": 1 - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 303.9044776119403, - 324.9671641791045 - ] - }, - "p": { - "a": 0, - "k": [ - 330.55522388059705, - 308.63283582089554 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - } - ] - } - ] - }, - { - "ddd": 0, - "ty": 4, - "ind": 0, - "st": 0, - "ip": 0, - "op": 180, - "nm": "Rectangle", - "mn": "{50b511ea-ca42-416e-b630-58eca8fb41d9}", - "ks": { - "a": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "p": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - }, - "shapes": [ - { - "ty": "gr", - "nm": "Rectangle", - "mn": "{c338119b-6435-437a-a855-0f36a8264c22}", - "it": [ - { - "ty": "rc", - "nm": "Rectangle", - "mn": "{9e7f37be-ac4b-411e-8e47-3e2a2cad9102}", - "p": { - "a": 0, - "k": [ - 185.69552238805971, - 256.1910447761194 - ] - }, - "s": { - "a": 0, - "k": [ - 268.2268656716418, - 225.24179104477614 - ] - }, - "r": { - "a": 0, - "k": 0 - } - }, - { - "ty": "st", - "hd": true, - "nm": "Stroke", - "mn": "{9781440d-fa0d-45e1-b224-8c96fefc1f09}", - "o": { - "a": 0, - "k": 100 - }, - "c": { - "a": 0, - "k": [ - 0, - 0.5019607843137255, - 1 - ] - }, - "lc": 2, - "lj": 2, - "ml": 0, - "w": { - "a": 0, - "k": 1 - } - }, - { - "ty": "fl", - "nm": "Fill", - "mn": "{dc302cc0-3912-40b0-81da-03b5c172432c}", - "o": { - "a": 0, - "k": 100 - }, - "c": { - "a": 0, - "k": [ - 0.19607843137254902, - 0.3137254901960784, - 0.6901960784313725 - ] - }, - "r": 1 - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 185.69552238805971, - 256.1910447761194 - ] - }, - "p": { - "a": 0, - "k": [ - 212.34626865671646, - 239.85671641791043 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - } - ] - } - ] - } - ], - "meta": { - "g": "Glaxnimate 0.4.6-26-g7b05e75c" - } - } -""".trimIndent() \ No newline at end of file From 539ae9265892e6371dc2bfecf3b8c9449afdcaae Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Fri, 31 May 2024 17:04:18 +0300 Subject: [PATCH 008/100] change rect shape implementation --- .../alexzhirkevich/compottie/LottiePainter.kt | 1 - .../internal/schema/shapes/RectShape.kt | 86 ++++++++--- .../composeResources/files/rect.json | 143 ++++++++++++++++++ .../composeResources/files/roundrect.json | 143 ++++++++++++++++++ example/shared/src/commonMain/kotlin/App.kt | 2 + 5 files changed, 353 insertions(+), 22 deletions(-) create mode 100644 example/shared/src/commonMain/composeResources/files/rect.json create mode 100644 example/shared/src/commonMain/composeResources/files/roundrect.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 9efe76b9..e8d0c060 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -173,7 +173,6 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { - drawIntoCanvas { canvas -> composition.lottieData.layers.fastForEachReversed { if (it is DrawingContent) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt index 612998d1..8a71499a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.geometry.RoundRect import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content @@ -12,6 +11,7 @@ import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTr import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlin.math.min @Serializable @SerialName("rc") @@ -62,28 +62,72 @@ internal class RectShape( val position = position.interpolated(frame) val size = size.interpolated(frame) - val radius = roundedCorners?.interpolated(frame) - - path.rewind() - - val rect = Rect( - top = position.x - size.x/2, - left = position.y - size.y/2, - bottom = position.x + size.x/2, - right = position.y + size.y/2, - ) - - if (radius != null) { - path.addRoundRect( - RoundRect( - rect = rect, - radiusX = radius, - radiusY = radius - ) + var radius = roundedCorners?.interpolated(frame) ?: 0F + + val halfWidth = size.x / 2f + val halfHeight = size.y / 2f + + val maxRadius = min(halfWidth.toDouble(), halfHeight.toDouble()).toFloat() + if (radius > maxRadius) { + radius = maxRadius + } + + path.moveTo(position.x + halfWidth, position.y - halfHeight + radius) + + path.lineTo(position.x + halfWidth, position.y + halfHeight - radius) + + if (radius > 0) { + path.arcTo( + Rect( + position.x + halfWidth - 2 * radius, + position.y + halfHeight - 2 * radius, + position.x + halfWidth, + position.y + halfHeight + ), 0f, 90f, false + ) + } + + path.lineTo(position.x - halfWidth + radius, position.y + halfHeight) + + if (radius > 0) { + path.arcTo( + Rect( + position.x - halfWidth, + position.y + halfHeight - 2 * radius, + position.x - halfWidth + 2 * radius, + position.y + halfHeight + ), 90f, 90f, false + ) + } + + path.lineTo(position.x - halfWidth, position.y - halfHeight + radius) + + if (radius > 0) { + + path.arcTo( + Rect( + position.x - halfWidth, + position.y - halfHeight, + position.x - halfWidth + 2 * radius, + position.y - halfHeight + 2 * radius + ), 180f, 90f, false + ) + } + + path.lineTo(position.x + halfWidth - radius, position.y - halfHeight) + + if (radius > 0) { + + path.arcTo( + Rect( + position.x + halfWidth - 2 * radius, + position.y - halfHeight, + position.x + halfWidth, + position.y - halfHeight + 2 * radius + ), 270f, 90f, false ) - } else { - path.addRect(rect) } + path.close() trimPaths.apply(path, frame) diff --git a/example/shared/src/commonMain/composeResources/files/rect.json b/example/shared/src/commonMain/composeResources/files/rect.json new file mode 100644 index 00000000..489411e8 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/rect.json @@ -0,0 +1,143 @@ +{ + "v": "5.5.7", + "ip": 0, + "op": 180, + "nm": "Animation", + "mn": "{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}", + "fr": 60, + "w": 512, + "h": 512, + "assets": [], + "layers": [ + { + "ddd": 0, + "ty": 4, + "ind": 0, + "st": 0, + "ip": 0, + "op": 180, + "nm": "Layer", + "mn": "{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}", + "ks": { + "a": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "p": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + }, + "shapes": [ + { + "ty": "gr", + "nm": "Group", + "it": [ + { + "ty": "rc", + "nm": "Rectangle", + "p": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "s": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "r": { + "a": 0, + "k": 0 + } + }, + { + "ty": "st", + "nm": "Stroke", + "mn": "{0930ce27-c8f9-4371-b0cf-111a859abfaf}", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 1, + 0.9803921568627451, + 0.2823529411764706 + ] + }, + "lc": 2, + "lj": 2, + "ml": 0, + "w": { + "a": 0, + "k": 30 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 249.3134328358209, + 254.47164179104476 + ] + }, + "p": { + "a": 0, + "k": [ + 249.3134328358209, + 254.47164179104476 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + } + ] + } + ] + } + ], + "meta": { + "g": "Glaxnimate 0.4.6-26-g7b05e75c" + } +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/roundrect.json b/example/shared/src/commonMain/composeResources/files/roundrect.json new file mode 100644 index 00000000..3aabbf7a --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/roundrect.json @@ -0,0 +1,143 @@ +{ + "v": "5.5.7", + "ip": 0, + "op": 180, + "nm": "Animation", + "mn": "{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}", + "fr": 60, + "w": 512, + "h": 512, + "assets": [], + "layers": [ + { + "ddd": 0, + "ty": 4, + "ind": 0, + "st": 0, + "ip": 0, + "op": 180, + "nm": "Layer", + "mn": "{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}", + "ks": { + "a": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "p": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + }, + "shapes": [ + { + "ty": "gr", + "nm": "Group", + "it": [ + { + "ty": "rc", + "nm": "Rectangle", + "p": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "s": { + "a": 0, + "k": [ + 256, + 256 + ] + }, + "r": { + "a": 0, + "k": 50 + } + }, + { + "ty": "st", + "nm": "Stroke", + "mn": "{0930ce27-c8f9-4371-b0cf-111a859abfaf}", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 1, + 0.9803921568627451, + 0.2823529411764706 + ] + }, + "lc": 2, + "lj": 2, + "ml": 0, + "w": { + "a": 0, + "k": 30 + } + }, + { + "ty": "tr", + "a": { + "a": 0, + "k": [ + 249.3134328358209, + 254.47164179104476 + ] + }, + "p": { + "a": 0, + "k": [ + 249.3134328358209, + 254.47164179104476 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + } + ] + } + ] + } + ], + "meta": { + "g": "Glaxnimate 0.4.6-26-g7b05e75c" + } +} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 1ae5a3a8..686cb717 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -23,6 +23,8 @@ private val CHECKMARK = "files/checkmark.json" private val FADE_BALLS = "files/fade_balls.json" private val BOUNCING_BALL = "files/bouncing_ball.json" private val POLYSTAR = "files/polystar.json" +private val RECT = "files/rect.json" +private val ROUND_RECT = "files/roundrect.json" @OptIn(ExperimentalResourceApi::class) @Composable From 901e313dc4c214ff77d7ac647710fa805d28aad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 31 May 2024 20:30:36 +0300 Subject: [PATCH 009/100] remove frame rounding, add markers support --- .../compottie/LottieClipSpec.skiko.kt | 364 ++-- .../compottie/LottieComposition.kt | 12 +- .../compottie/LottieCompositionSpec.kt | 1 - .../alexzhirkevich/compottie/LottiePainter.kt | 6 +- .../internal/{schema => }/LottieData.kt | 11 +- .../internal/{schema => }/LottieJson.kt | 2 +- .../{schema => }/animation/AnimatedColor.kt | 2 +- .../animation/AnimatedGradient.kt | 2 +- .../{schema => }/animation/AnimatedShape.kt | 4 +- .../animation/AnimatedTransform.kt | 2 +- .../{schema => }/animation/AnimatedValue.kt | 2 +- .../{schema => }/animation/AnimatedVector2.kt | 2 +- .../animation/BaseKeyframeAnimation.kt | 8 +- .../animation/BezierInterpolation.kt | 0 .../{schema => }/animation/BezierKeyframe.kt | 2 +- .../{schema => }/animation/Indexable.kt | 0 .../{schema => }/animation/Keyframe.kt | 0 .../animation/KeyframeAnimation.kt | 2 +- .../{schema => }/animation/ValueKeyframe.kt | 0 .../{schema => }/animation/VectorKeyframe.kt | 0 .../{schema => }/assets/LottieAsset.kt | 0 .../{schema => }/assets/LottieFileAsset.kt | 0 .../internal/content/ContentGroup.kt | 6 +- .../internal/content/DrawingContent.kt | 4 +- .../compottie/internal/content/PathContent.kt | 2 +- .../internal/content/ShapeModifierContent.kt | 6 +- .../internal/{schema => }/effects/Effect.kt | 0 .../internal/{schema => }/helpers/Bezier.kt | 0 .../{schema => }/helpers/BooleanInt.kt | 0 .../{schema => }/helpers/CubicCurveData.kt | 0 .../{schema => }/helpers/LottieBlendMode.kt | 0 .../compottie/internal/helpers/Marker.kt | 16 + .../{schema => }/helpers/MatteMode.kt | 0 .../{schema => }/helpers/ShapeData.kt | 0 .../{schema => }/helpers/Transform.kt | 0 .../{schema => }/helpers/TrimPathType.kt | 0 .../internal/{schema => }/layers/BaseLayer.kt | 6 +- .../{schema => }/layers/ImageLayer.kt | 4 +- .../internal/{schema => }/layers/Layer.kt | 0 .../internal/{schema => }/layers/NullLayer.kt | 4 +- .../{schema => }/layers/ShapeLayer.kt | 4 +- .../{schema => }/layers/VisualLayer.kt | 0 .../internal/platform/PlatformShader.kt | 4 +- .../{schema => }/shapes/BaseStrokeShape.kt | 6 +- .../{schema => }/shapes/EllipseShape.kt | 3 +- .../internal/{schema => }/shapes/FillShape.kt | 5 +- .../{schema => }/shapes/GradientFillShape.kt | 4 +- .../shapes/GradientStrokeShape.kt | 2 +- .../{schema => }/shapes/GroupShape.kt | 0 .../internal/{schema => }/shapes/PathShape.kt | 2 +- .../{schema => }/shapes/PolystarShape.kt | 6 +- .../internal/{schema => }/shapes/RectShape.kt | 2 +- .../{schema => }/shapes/RoundShape.kt | 2 +- .../internal/{schema => }/shapes/Shape.kt | 0 .../{schema => }/shapes/SolidStrokeShape.kt | 2 +- .../{schema => }/shapes/TransformShape.kt | 0 .../{schema => }/shapes/TrimPathShape.kt | 0 .../shapes/util/CompoundTrimPath.kt | 2 +- .../shapes/util/CornerRounding.kt | 0 .../{schema => }/shapes/util/Cubic.kt | 0 .../{schema => }/shapes/util/Feature.kt | 0 .../{schema => }/shapes/util/Point.kt | 0 .../shapes/util/RoundedPolygon.kt | 0 .../{schema => }/shapes/util/Utils.kt | 0 .../internal/{schema => }/util/VectorUtil.kt | 0 .../compottie/internal/utils/L.kt | 4 - .../compottie/internal/utils/Utils.kt | 3 +- .../composeResources/files/checkmark.json | 1507 +---------------- .../composeResources/files/rect.json | 144 +- .../composeResources/files/robot.json | 1 + .../composeResources/files/roundrect.json | 144 +- .../composeResources/files/test.json | 363 ---- example/shared/src/commonMain/kotlin/App.kt | 1 + 73 files changed, 275 insertions(+), 2406 deletions(-) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/LottieData.kt (71%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/LottieJson.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/AnimatedColor.kt (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/AnimatedGradient.kt (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/AnimatedShape.kt (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/AnimatedTransform.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/AnimatedValue.kt (95%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/AnimatedVector2.kt (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/BaseKeyframeAnimation.kt (93%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/BezierInterpolation.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/BezierKeyframe.kt (95%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/Indexable.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/Keyframe.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/KeyframeAnimation.kt (72%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/ValueKeyframe.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/animation/VectorKeyframe.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/assets/LottieAsset.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/assets/LottieFileAsset.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/effects/Effect.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/Bezier.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/BooleanInt.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/CubicCurveData.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/LottieBlendMode.kt (100%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/MatteMode.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/ShapeData.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/Transform.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/helpers/TrimPathType.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/layers/BaseLayer.kt (97%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/layers/ImageLayer.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/layers/Layer.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/layers/NullLayer.kt (97%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/layers/ShapeLayer.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/layers/VisualLayer.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/BaseStrokeShape.kt (99%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/EllipseShape.kt (97%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/FillShape.kt (96%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/GradientFillShape.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/GradientStrokeShape.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/GroupShape.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/PathShape.kt (97%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/PolystarShape.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/RectShape.kt (98%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/RoundShape.kt (99%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/Shape.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/SolidStrokeShape.kt (97%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/TransformShape.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/TrimPathShape.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/util/CompoundTrimPath.kt (93%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/util/CornerRounding.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/util/Cubic.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/util/Feature.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/util/Point.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/util/RoundedPolygon.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/shapes/util/Utils.kt (100%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{schema => }/util/VectorUtil.kt (100%) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt create mode 100644 example/shared/src/commonMain/composeResources/files/robot.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt index 7713c84c..ef0fb1cf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt @@ -1,12 +1,16 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.Stable + /** * Use subclasses of [LottieClipSpec] to set min/max bounds on the animation playback. * - * @see LottieAnimation * @see rememberLottieAnimatable * @see animateLottieCompositionAsState */ + +@Stable sealed class LottieClipSpec { internal abstract fun getMinProgress(composition: LottieComposition): Float @@ -17,181 +21,185 @@ sealed class LottieClipSpec { * Play the animation between these two frames. [maxInclusive] determines whether the animation * should play the max frame or stop one frame before it. */ -// class Frame constructor( -// val min: Int?, -// val max: Int?, -// val maxInclusive: Boolean, -// ) : LottieClipSpec() { -// -// private val actualMaxFrame = when { -// max == null -> null -// maxInclusive -> max -// else -> max - 1 -// } -// -// override fun getMinProgress(composition: LottieComposition): Float { -// return when (min) { -// null -> 0f -// else -> (min / composition.lastFrame).coerceIn(0f, 1f) -// } -// } -// -// override fun getMaxProgress(composition: LottieComposition): Float { -// return when (actualMaxFrame) { -// null -> 1f -// else -> (actualMaxFrame / composition.lastFrame).coerceIn(0f, 1f) -// } -// } -// -// override fun equals(other: Any?): Boolean { -// if (this === other) return true -// if (other == null || this::class != other::class) return false -// -// other as Frame -// -// if (min != other.min) return false -// if (max != other.max) return false -// if (maxInclusive != other.maxInclusive) return false -// if (actualMaxFrame != other.actualMaxFrame) return false -// -// return true -// } -// -// override fun hashCode(): Int { -// var result = min ?: 0 -// result = 31 * result + (max ?: 0) -// result = 31 * result + maxInclusive.hashCode() -// result = 31 * result + (actualMaxFrame ?: 0) -// return result -// } -// -// override fun toString(): String { -// return "Frame(min=$min, max=$max, maxInclusive=$maxInclusive, actualMaxFrame=$actualMaxFrame)" -// } -// } -// -// /** -// * Play the animation between these two progress values. -// */ -// class Progress constructor( -// val min: Float, -// val max: Float, -// ) : LottieClipSpec() { -// override fun getMinProgress(composition: LottieComposition): Float { -// return min -// } -// -// override fun getMaxProgress(composition: LottieComposition): Float { -// return max -// } -// -// override fun equals(other: Any?): Boolean { -// if (this === other) return true -// if (other == null || this::class != other::class) return false -// -// other as Progress -// -// if (min != other.min) return false -// if (max != other.max) return false -// -// return true -// } -// -// override fun hashCode(): Int { -// var result = min.hashCode() -// result = 31 * result + max.hashCode() -// return result -// } -// -// override fun toString(): String { -// return "Progress(min=$min, max=$max)" -// } -// -// } -// -// /** -// * Play the animation from minMarker until maxMarker. If maxMarker represents the end of your animation, -// * set [maxInclusive] to true. If the marker represents the beginning of the next section, set -// * it to false to stop the animation at the frame before maxMarker. -// */ -// class Markers constructor( -// val min: String?, -// val max: String?, -// val maxInclusive: Boolean -// ) : LottieClipSpec() { -// override fun getMinProgress(composition: LottieComposition): Float { -// return when (min) { -// null -> 0f -// else -> ((composition.marker(min)?.startFrame ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) -// } -// } -// -// override fun getMaxProgress(composition: LottieComposition): Float { -// return when (max) { -// null -> 1f -// else -> { -// val offset = if (maxInclusive) 0 else -1 -// return ((composition.marker(max)?.startFrame?.plus(offset) ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) -// } -// } -// } -// -// override fun equals(other: Any?): Boolean { -// if (this === other) return true -// if (other == null || this::class != other::class) return false -// -// other as Markers -// -// if (min != other.min) return false -// if (max != other.max) return false -// if (maxInclusive != other.maxInclusive) return false -// -// return true -// } -// -// override fun hashCode(): Int { -// var result = min?.hashCode() ?: 0 -// result = 31 * result + (max?.hashCode() ?: 0) -// result = 31 * result + maxInclusive.hashCode() -// return result -// } -// -// override fun toString(): String { -// return "Markers(min=$min, max=$max, maxInclusive=$maxInclusive)" -// } -// } -// -// /** -// * Play the animation from the beginning of the marker for the duration of the marker itself. -// * The duration can be set in After Effects. -// */ -// actual class Marker actual constructor(val marker: String) : LottieClipSpec() { -// override fun getMinProgress(composition: LottieComposition): Float { -// return ((composition.marker(marker)?.startFrame ?: 0f) / composition.lastFrame).coerceIn(0f, 1f) -// } -// -// override fun getMaxProgress(composition: LottieComposition): Float { -// val marker = composition.marker(marker) ?: return 1f -// return ((marker.startFrame + marker.durationFrames) / composition.lastFrame).coerceIn(0f, 1f) -// } -// -// override fun equals(other: Any?): Boolean { -// if (this === other) return true -// if (other == null || this::class != other::class) return false -// -// other as Marker -// -// if (marker != other.marker) return false -// -// return true -// } -// -// override fun hashCode(): Int { -// return marker.hashCode() -// } -// -// override fun toString(): String { -// return "Marker(marker='$marker')" -// } -// } + @Immutable + class Frame constructor( + val min: Int?, + val max: Int?, + val maxInclusive: Boolean, + ) : LottieClipSpec() { + + private val actualMaxFrame = when { + max == null -> null + maxInclusive -> max + else -> max - 1 + } + + override fun getMinProgress(composition: LottieComposition): Float { + return when (min) { + null -> 0f + else -> (min / composition.endFrame).coerceIn(0f, 1f) + } + } + + override fun getMaxProgress(composition: LottieComposition): Float { + return when (actualMaxFrame) { + null -> 1f + else -> (actualMaxFrame / composition.endFrame).coerceIn(0f, 1f) + } + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as Frame + + if (min != other.min) return false + if (max != other.max) return false + if (maxInclusive != other.maxInclusive) return false + if (actualMaxFrame != other.actualMaxFrame) return false + + return true + } + + override fun hashCode(): Int { + var result = min ?: 0 + result = 31 * result + (max ?: 0) + result = 31 * result + maxInclusive.hashCode() + result = 31 * result + (actualMaxFrame ?: 0) + return result + } + + override fun toString(): String { + return "Frame(min=$min, max=$max, maxInclusive=$maxInclusive, actualMaxFrame=$actualMaxFrame)" + } + } + + /** + * Play the animation between these two progress values. + */ + + @Immutable + class Progress constructor( + val min: Float, + val max: Float, + ) : LottieClipSpec() { + override fun getMinProgress(composition: LottieComposition): Float { + return min + } + + override fun getMaxProgress(composition: LottieComposition): Float { + return max + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as Progress + + if (min != other.min) return false + if (max != other.max) return false + + return true + } + + override fun hashCode(): Int { + var result = min.hashCode() + result = 31 * result + max.hashCode() + return result + } + + override fun toString(): String { + return "Progress(min=$min, max=$max)" + } + + } + + /** + * Play the animation from minMarker until maxMarker. If maxMarker represents the end of your animation, + * set [maxInclusive] to true. If the marker represents the beginning of the next section, set + * it to false to stop the animation at the frame before maxMarker. + */ + @Immutable + class Markers constructor( + val min: String?, + val max: String?, + val maxInclusive: Boolean + ) : LottieClipSpec() { + override fun getMinProgress(composition: LottieComposition): Float { + return when (min) { + null -> 0f + else -> ((composition.marker(min)?.startFrame ?: 0f) / composition.endFrame).coerceIn(0f, 1f) + } + } + + override fun getMaxProgress(composition: LottieComposition): Float { + return when (max) { + null -> 1f + else -> { + val offset = if (maxInclusive) 0 else -1 + return ((composition.marker(max)?.startFrame?.plus(offset) ?: 0f) / composition.endFrame).coerceIn(0f, 1f) + } + } + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as Markers + + if (min != other.min) return false + if (max != other.max) return false + if (maxInclusive != other.maxInclusive) return false + + return true + } + + override fun hashCode(): Int { + var result = min?.hashCode() ?: 0 + result = 31 * result + (max?.hashCode() ?: 0) + result = 31 * result + maxInclusive.hashCode() + return result + } + + override fun toString(): String { + return "Markers(min=$min, max=$max, maxInclusive=$maxInclusive)" + } + } + + /** + * Play the animation from the beginning of the marker for the duration of the marker itself. + * The duration can be set in After Effects. + */ + class Marker(val marker: String) : LottieClipSpec() { + override fun getMinProgress(composition: LottieComposition): Float { + return ((composition.marker(marker)?.startFrame ?: 0f) / composition.endFrame).coerceIn(0f, 1f) + } + + override fun getMaxProgress(composition: LottieComposition): Float { + val marker = composition.marker(marker) ?: return 1f + return ((marker.startFrame + marker.durationFrames) / composition.endFrame).coerceIn(0f, 1f) + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as Marker + + if (marker != other.marker) return false + + return true + } + + override fun hashCode(): Int { + return marker.hashCode() + } + + override fun toString(): String { + return "Marker(marker='$marker')" + } + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index f6a4dd02..0dc78db6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -4,9 +4,9 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.remember -import io.github.alexzhirkevich.compottie.internal.schema.LottieData -import io.github.alexzhirkevich.compottie.internal.schema.LottieJson -import io.github.alexzhirkevich.compottie.internal.schema.durationMillis +import io.github.alexzhirkevich.compottie.internal.LottieData +import io.github.alexzhirkevich.compottie.internal.LottieJson +import io.github.alexzhirkevich.compottie.internal.durationMillis import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -16,6 +16,10 @@ import kotlinx.coroutines.withContext class LottieComposition internal constructor( internal val lottieData: LottieData, ) { + val startFrame : Float get() = lottieData.inPoint + + val endFrame : Float get() = lottieData.outPoint + val duration: Float get() = lottieData.durationMillis val frameRate: Float get() = lottieData.frameRate @@ -25,6 +29,8 @@ class LottieComposition internal constructor( } } +internal fun LottieComposition.marker(name : String?) = lottieData.markers.firstOrNull { it.name == name } + @Composable @Stable fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionResult { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index bd0e37c4..ef413f74 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import io.github.alexzhirkevich.compottie.internal.schema.LottieJson @Stable sealed interface LottieCompositionSpec { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index e8d0c060..3de90f1c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.Stable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -28,17 +27,14 @@ import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieFileAsset import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlin.math.roundToInt -import kotlin.time.measureTime @Composable @@ -130,7 +126,7 @@ private class LottiePainter( private val currentFrame by derivedStateOf { val p = composition.lottieData.outPoint * progress.coerceIn(0f, 1f) - composition.lottieData.inPoint - p.coerceAtLeast(0f).roundToInt() + p.coerceAtLeast(0f) } private var serviceLocator = LottieServiceLocator( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt similarity index 71% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index e6e065d9..5e247be9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -1,5 +1,6 @@ -package io.github.alexzhirkevich.compottie.internal.schema +package io.github.alexzhirkevich.compottie.internal +import io.github.alexzhirkevich.compottie.internal.schema.helpers.Marker import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer import kotlinx.serialization.SerialName @@ -21,17 +22,19 @@ internal class LottieData( val version : String, @SerialName("ip") - val inPoint : Int, + val inPoint : Float, @SerialName("op") - val outPoint : Int, + val outPoint : Float, @SerialName("nm") val name : String, val layers: List = emptyList(), - val assets : List = emptyList() + val assets : List = emptyList(), + + val markers : List = emptyList() ) internal val LottieData.durationMillis diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieJson.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 0cd6ceec..c99ce742 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema +package io.github.alexzhirkevich.compottie.internal import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt similarity index 96% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index ac7c2456..8bd511a8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -30,7 +30,7 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { @Transient private val color: Color = value.asColor() - override fun interpolated(frame: Int) = color + override fun interpolated(frame: Float) = color } @Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt similarity index 96% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt index cbc986fc..6c5cb144 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt @@ -53,7 +53,7 @@ internal sealed interface AnimatedGradient : KeyframeAnimation colorsVector.asGradient(numberOfColors) } - override fun interpolated(frame: Int): ColorsWithStops { + override fun interpolated(frame: Float): ColorsWithStops { return colors } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt similarity index 96% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 685ed5c8..673e836d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -49,7 +49,7 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { @Transient private val tmpPath = Path() - override fun interpolated(frame: Int): Path { + override fun interpolated(frame: Float): Path { if (shapeModifiers.isEmpty()) { tmpPath.set(unmodifiedPath) return unmodifiedPath @@ -95,7 +95,7 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { } ) - override fun interpolated(frame: Int): Path { + override fun interpolated(frame: Float): Path { return delegate.interpolated(frame) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 991a1d5b..4fc2612e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -39,7 +39,7 @@ internal abstract class AnimatedTransform { FloatArray(9) } - fun matrix(frame: Int): Matrix { + fun matrix(frame: Float): Matrix { matrix.reset() position?.interpolated(frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt similarity index 95% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt index bfac52db..9a513cc4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt @@ -24,7 +24,7 @@ internal sealed interface AnimatedValue : KeyframeAnimation, Indexable { override val index: String? = null ) : AnimatedValue { - override fun interpolated(frame: Int): Float = value + override fun interpolated(frame: Float): Float = value } @Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt similarity index 96% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 242663f4..c097c9aa 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -31,7 +31,7 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @Transient private val animationVector = Offset(value[0], value[1]) - override fun interpolated(frame: Int): Vec2 = animationVector + override fun interpolated(frame: Float): Vec2 = animationVector } @Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt similarity index 93% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index 848d15a0..aa4d0dd7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -6,7 +6,7 @@ import kotlin.math.roundToInt internal class BaseKeyframeAnimation( keyframes: List>, private val emptyValue : T, - private val map : Keyframe.(K, K, Float, Int) -> T + private val map : Keyframe.(start : K, end : K, progress: Float, frame: Float) -> T ) : KeyframeAnimation { private val sortedKeyframes = keyframes.sortedBy { it.time } @@ -31,7 +31,7 @@ internal class BaseKeyframeAnimation( InvalidKeyframeError ), 0f, - firstFrame.roundToInt() + firstFrame ) } } @@ -49,12 +49,12 @@ internal class BaseKeyframeAnimation( InvalidKeyframeError ), 1f, - lastFrame.roundToInt() + lastFrame ) } } - override fun interpolated(frame: Int): T { + override fun interpolated(frame: Float): T { return when { sortedKeyframes.isEmpty() -> emptyValue frame >= lastFrame -> targetValue diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierInterpolation.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt similarity index 95% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt index f80104c2..503c6182 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt @@ -29,7 +29,7 @@ internal class BezierKeyframe( internal fun BezierKeyframe.toShapeKeyframe( - modifiers : List = emptyList(), frame : Int = 0 + modifiers: List = emptyList(), frame: Float = 0f ) = ShapeKeyframe( start = start?.toShapeData()?.modifiedBy(modifiers, frame), end = end?.toShapeData()?.modifiedBy(modifiers, frame), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Indexable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Indexable.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Indexable.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Indexable.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/Keyframe.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt similarity index 72% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt index 6c03401c..d8779d5b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/KeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt @@ -2,5 +2,5 @@ package io.github.alexzhirkevich.compottie.internal.schema.animation interface KeyframeAnimation { - fun interpolated(frame : Int) : T + fun interpolated(frame: Float) : T } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/ValueKeyframe.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/animation/VectorKeyframe.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieAsset.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFileAsset.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/assets/LottieFileAsset.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFileAsset.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 86c7aed1..3366ccde 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -29,7 +29,7 @@ internal class ContentGroup( private val boundsRect = MutableRect(0f,0f,0f,0f) - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { if (hidden) { @@ -70,7 +70,7 @@ internal class ContentGroup( } } - override fun getPath(frame: Int): Path { + override fun getPath(frame: Float): Path { path.reset() if (hidden) { @@ -106,7 +106,7 @@ internal class ContentGroup( outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int, + frame: Float, ) { matrix.setFrom(parentMatrix) if (transform != null) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt index ce70ffbf..9edcd782 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt @@ -5,7 +5,7 @@ import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix internal interface DrawingContent : Content { - fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) + fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) - fun getBounds(outBounds : MutableRect, parentMatrix: Matrix, applyParents: Boolean, frame: Int) + fun getBounds(outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, frame: Float) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt index 54d1b96f..344be06f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt @@ -3,5 +3,5 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.graphics.Path internal interface PathContent : Content { - fun getPath(frame: Int) : Path + fun getPath(frame: Float) : Path } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt index a2b9556d..0a44beaf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt @@ -1,16 +1,14 @@ package io.github.alexzhirkevich.compottie.internal.content -import androidx.compose.ui.graphics.Shape import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData internal interface ShapeModifierContent : Content { - fun modify(shape: ShapeData, frame : Int) : ShapeData + fun modify(shape: ShapeData, frame: Float) : ShapeData } -internal fun ShapeData.modifiedBy(modifiers : List, frame: Int) : ShapeData { +internal fun ShapeData.modifiedBy(modifiers: List, frame: Float) : ShapeData { var b = this modifiers.fastForEachReversed { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/effects/Effect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/effects/Effect.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Bezier.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/BooleanInt.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/BooleanInt.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/BooleanInt.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/BooleanInt.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/CubicCurveData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/CubicCurveData.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieBlendMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/LottieBlendMode.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt new file mode 100644 index 00000000..a45e19f2 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt @@ -0,0 +1,16 @@ +package io.github.alexzhirkevich.compottie.internal.schema.helpers + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class Marker( + @SerialName("cm") + val name : String? = null, + + @SerialName("tm") + val startFrame : Float, + + @SerialName("dr") + val durationFrames : Float +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/MatteMode.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/ShapeData.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/Transform.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/TrimPathType.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/TrimPathType.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/helpers/TrimPathType.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/TrimPathType.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt similarity index 97% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index a244e067..16ac4107 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -35,10 +35,10 @@ internal abstract class BaseLayer() : DrawingContent { canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, - frame: Int, + frame: Float, ) - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) { + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { buildParentLayerListIfNeeded() matrix.reset() @@ -62,7 +62,7 @@ internal abstract class BaseLayer() : DrawingContent { outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int, + frame: Float, ) { rect.set(0f, 0f, 0f, 0f) buildParentLayerListIfNeeded() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 96aa65d2..ee4863e8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -94,7 +94,7 @@ internal class ImageLayer( service?.asset(refId) as? LottieAsset.ImageAsset } - override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { val mAsset = asset ?: return val bitmap = mAsset.bitmap ?: return @@ -127,7 +127,7 @@ internal class ImageLayer( outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int + frame: Float ) { super.getBounds(outBounds, parentMatrix, applyParents, frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/Layer.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt similarity index 97% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index 7976589c..78d07993 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -68,14 +68,14 @@ internal class NullLayer( override val collapseTransform: BooleanInt = BooleanInt.No, ) : BaseLayer(), VisualLayer { - override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { } override fun getBounds( outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int + frame: Float ) { outBounds.set(0f,0f,0f,0f) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index e25628be..75d19281 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -93,7 +93,7 @@ internal class ShapeLayer( setContents(emptyList(), emptyList()) } - override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame : Int) { + override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { contentGroup.draw(canvas, parentMatrix, parentAlpha, frame) } @@ -101,7 +101,7 @@ internal class ShapeLayer( outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int, + frame: Float, ) { super.getBounds(outBounds, parentMatrix, applyParents, frame) contentGroup.getBounds(outBounds, boundMatrix, applyParents, frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/layers/VisualLayer.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 1846e8d9..32b18f9d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -16,9 +16,9 @@ internal fun GradientShader( startPoint: AnimatedVector2, endPoint: AnimatedVector2, colors: GradientColors, - frame : Int, + frame: Float, matrix: Matrix, - cache : LinkedHashMap + cache: LinkedHashMap ) : Shader { val start = startPoint.interpolated(frame) val end = endPoint.interpolated(frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt similarity index 99% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 4b1c95d0..b3394ac7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -82,7 +82,7 @@ internal abstract class BaseStrokeShape() : DrawingContent { } private val pm = ExtendedPathMeasure() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha : Float, frame: Int) { + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { paint.style = PaintingStyle.Stroke paint.alpha = parentAlpha * (opacity.interpolated(frame) / 100f).coerceIn(0f,1f) @@ -164,7 +164,7 @@ internal abstract class BaseStrokeShape() : DrawingContent { outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int, + frame: Float, ) { path.reset() for (i in pathGroups.indices) { @@ -194,7 +194,7 @@ internal abstract class BaseStrokeShape() : DrawingContent { private fun applyTrimPath( canvas: Canvas, - time: Int, + time: Float, pathGroup: PathGroup, parentMatrix: Matrix, ) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt similarity index 97% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index be478173..7de9b3d0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -1,6 +1,5 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes -import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content @@ -40,7 +39,7 @@ internal class EllipseShape( @Transient private val trimPaths = CompoundTrimPath() - override fun getPath(frame: Int): Path { + override fun getPath(frame: Float): Path { if (hidden) { return path } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt similarity index 96% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 76869ead..213bcd4c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie.internal.schema.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -50,7 +49,7 @@ internal class FillShape( private val paint = Paint() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { if (hidden) { return @@ -74,7 +73,7 @@ internal class FillShape( outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int + frame: Float ) { path.reset() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 1fadc73d..5fefb8f7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -76,7 +76,7 @@ internal class GradientFillShape( private val gradientCache = LinkedHashMap() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { paint.alpha = if (opacity != null) { (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) @@ -100,7 +100,7 @@ internal class GradientFillShape( outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, - frame: Int + frame: Float ) { path.reset() paths.fastForEach { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStrokeShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index fac51f78..1084245b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -72,7 +72,7 @@ internal class GradientStrokeShape( @Transient private val gradientCache = LinkedHashMap() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { getBounds(boundsRect, parentMatrix, false, frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/GroupShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt similarity index 97% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index b49f4ca3..f5f9550b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -33,7 +33,7 @@ internal class PathShape( private val trimPaths: CompoundTrimPath = CompoundTrimPath() private val path = Path() - override fun getPath(frame: Int): Path { + override fun getPath(frame: Float): Path { path.reset() if (hidden) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PolystarShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 30409d72..6c14f5d4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -84,7 +84,7 @@ internal class PolystarShape( @Transient private val trimPaths = CompoundTrimPath() - override fun getPath(frame: Int): Path { + override fun getPath(frame: Float): Path { path.reset() @@ -108,7 +108,7 @@ internal class PolystarShape( } } - private fun createStarPath(frame: Int) { + private fun createStarPath(frame: Float) { val points = points.interpolated(frame = frame) var currentAngle = Math.toRadians((rotation?.interpolated(frame) ?: 0f) - 90f) @@ -216,7 +216,7 @@ internal class PolystarShape( path.close() } - private fun createPolygonPath(frame: Int) { + private fun createPolygonPath(frame: Float) { val points = floor(points.interpolated(frame)).toInt() var currentAngle = Math.toRadians((rotation?.interpolated(frame) ?: 0f) - 90f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index 8a71499a..6aa59aa9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -53,7 +53,7 @@ internal class RectShape( } } - override fun getPath(frame: Int): Path { + override fun getPath(frame: Float): Path { if (hidden) { path.rewind() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt similarity index 99% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RoundShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index 672598e0..4ea4a5d6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -30,7 +30,7 @@ internal class RoundShape( @Transient private var shapeData: ShapeData? = null - override fun modify(shape: ShapeData, frame : Int): ShapeData { + override fun modify(shape: ShapeData, frame: Float): ShapeData { val startingCurves: List = shape.curves if (startingCurves.size <= 2) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/Shape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt similarity index 97% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 056c66e5..6b6c559e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -43,7 +43,7 @@ internal class SolidStrokeShape( val color : AnimatedColor, ) : BaseStrokeShape(), Shape { - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Int) { + override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { paint.color = color.interpolated(frame) super.draw(canvas, parentMatrix, parentAlpha, frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TransformShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/TrimPathShape.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt similarity index 93% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt index d9729b93..ae0512c8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt @@ -12,7 +12,7 @@ internal class CompoundTrimPath { contents.add(trimPath) } - fun apply(path: Path, frame : Int) { + fun apply(path: Path, frame: Float) { contents.fastForEachReversed { Utils.applyTrimPathIfNeeded(path, it, frame) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/CornerRounding.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Cubic.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Feature.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Point.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/RoundedPolygon.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/shapes/util/Utils.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/util/VectorUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt similarity index 100% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/schema/util/VectorUtil.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt deleted file mode 100644 index e92d1d46..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/L.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.utils - -object L { -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt index c9bfd598..c156f024 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -4,7 +4,6 @@ import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.PathMeasure import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape @@ -26,7 +25,7 @@ internal object Utils { canvas.saveLayer(rect, paint) } - fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathShape, frame: Int) { + fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathShape, frame: Float) { if (trimPath.hidden) { return } diff --git a/example/shared/src/commonMain/composeResources/files/checkmark.json b/example/shared/src/commonMain/composeResources/files/checkmark.json index 55527d5b..df6d8e73 100644 --- a/example/shared/src/commonMain/composeResources/files/checkmark.json +++ b/example/shared/src/commonMain/composeResources/files/checkmark.json @@ -1,1506 +1 @@ -{ - "nm": "Comp 1", - "ddd": 0, - "h": 800, - "w": 800, - "meta": { - "g": "@lottiefiles/toolkit-js 0.33.2" - }, - "layers": [ - { - "ty": 4, - "nm": "Shape Layer 2", - "sr": 1, - "st": 0, - "op": 384, - "ip": 0, - "hd": false, - "ddd": 0, - "bm": 0, - "hasMask": false, - "ao": 0, - "ks": { - "a": { - "a": 0, - "k": [ - 0, - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - }, - "sk": { - "a": 0, - "k": 0 - }, - "p": { - "a": 0, - "k": [ - 415.00000000000006, - 382, - 0 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "sa": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100, - "ix": 11 - } - }, - "ef": [], - "shapes": [ - { - "ty": "gr", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Group", - "nm": "Shape 1", - "ix": 1, - "cix": 2, - "np": 3, - "it": [ - { - "ty": "sh", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Shape - Group", - "nm": "Path 1", - "ix": 1, - "d": 1, - "ks": { - "a": 0, - "k": { - "c": false, - "i": [ - [ - 0, - 0 - ], - [ - -22, - 1 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 22, - -1 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - -134, - 56 - ], - [ - -74, - 108 - ], - [ - 72, - -56 - ] - ] - }, - "ix": 2 - } - }, - { - "ty": "st", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Graphic - Stroke", - "nm": "Stroke 1", - "lc": 2, - "lj": 1, - "ml": 4, - "o": { - "a": 0, - "k": 100, - "ix": 4 - }, - "w": { - "a": 0, - "k": 55, - "ix": 5 - }, - "c": { - "a": 0, - "k": [ - 1, - 1, - 1 - ], - "ix": 3 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 85.449, - 85.449 - ], - "ix": 3 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - } - } - ] - }, - { - "ty": "tm", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Filter - Trim", - "nm": "Trim Paths 1", - "ix": 2, - "e": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 5 - }, - { - "s": [ - 100 - ], - "t": 22 - } - ], - "ix": 2 - }, - "o": { - "a": 0, - "k": 0, - "ix": 3 - }, - "s": { - "a": 1, - "k": [ - { - "o": { - "x": 0.463, - "y": 0 - }, - "i": { - "x": 0.853, - "y": 1 - }, - "s": [ - 0 - ], - "t": 22 - }, - { - "s": [ - 100 - ], - "t": 36 - } - ], - "ix": 1 - }, - "m": 1 - } - ], - "ind": 1 - }, - { - "ty": 4, - "nm": "3", - "sr": 1, - "st": 0, - "op": 384, - "ip": 0, - "hd": false, - "ddd": 0, - "bm": 0, - "hasMask": false, - "ao": 0, - "ks": { - "a": { - "a": 0, - "k": [ - -54.531, - 27.469, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 152.399, - 152.399, - 100 - ], - "ix": 6 - }, - "sk": { - "a": 0, - "k": 0 - }, - "p": { - "a": 0, - "k": [ - 394, - 396, - 0 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "sa": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100, - "ix": 11 - } - }, - "ef": [], - "shapes": [ - { - "ty": "gr", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Group", - "nm": "Ellipse 1", - "ix": 1, - "cix": 2, - "np": 3, - "it": [ - { - "ty": "el", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Shape - Ellipse", - "nm": "Ellipse Path 1", - "d": 1, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 3 - }, - "s": { - "a": 0, - "k": [ - 262.938, - 262.938 - ], - "ix": 2 - } - }, - { - "ty": "st", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Graphic - Stroke", - "nm": "Stroke 1", - "lc": 2, - "lj": 1, - "ml": 4, - "o": { - "a": 0, - "k": 100, - "ix": 4 - }, - "w": { - "a": 0, - "k": 4, - "ix": 5 - }, - "c": { - "a": 0, - "k": [ - 0.1529, - 0.6588, - 0.1333 - ], - "ix": 3 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "p": { - "a": 0, - "k": [ - -54.531, - 27.469 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - } - } - ] - }, - { - "ty": "tm", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Filter - Trim", - "nm": "Trim Paths 1", - "ix": 2, - "e": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0.093, - "y": 1 - }, - "s": [ - 0 - ], - "t": 0 - }, - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0.093, - "y": 1 - }, - "s": [ - 100 - ], - "t": 12 - }, - { - "o": { - "x": 0.907, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 27 - }, - { - "s": [ - 0 - ], - "t": 39 - } - ], - "ix": 2 - }, - "o": { - "a": 0, - "k": 0, - "ix": 3 - }, - "s": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0.041, - "y": 1 - }, - "s": [ - 0 - ], - "t": 4 - }, - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0.041, - "y": 1 - }, - "s": [ - 100 - ], - "t": 15 - }, - { - "o": { - "x": 0.959, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 31 - }, - { - "s": [ - 0 - ], - "t": 42 - } - ], - "ix": 1 - }, - "m": 1 - } - ], - "ind": 2 - }, - { - "ty": 4, - "nm": "2", - "sr": 1, - "st": 0, - "op": 384, - "ip": 0, - "hd": false, - "ddd": 0, - "bm": 0, - "hasMask": false, - "ao": 0, - "ks": { - "a": { - "a": 0, - "k": [ - -54.531, - 27.469, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 170.654, - 170.654, - 100 - ], - "ix": 6 - }, - "sk": { - "a": 0, - "k": 0 - }, - "p": { - "a": 0, - "k": [ - 394, - 396, - 0 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "sa": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100, - "ix": 11 - } - }, - "ef": [], - "shapes": [ - { - "ty": "gr", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Group", - "nm": "Ellipse 1", - "ix": 1, - "cix": 2, - "np": 3, - "it": [ - { - "ty": "el", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Shape - Ellipse", - "nm": "Ellipse Path 1", - "d": 1, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 3 - }, - "s": { - "a": 0, - "k": [ - 262.938, - 262.938 - ], - "ix": 2 - } - }, - { - "ty": "st", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Graphic - Stroke", - "nm": "Stroke 1", - "lc": 2, - "lj": 1, - "ml": 4, - "o": { - "a": 0, - "k": 100, - "ix": 4 - }, - "w": { - "a": 0, - "k": 4, - "ix": 5 - }, - "c": { - "a": 0, - "k": [ - 0.0471, - 0.5529, - 0.1725 - ], - "ix": 3 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "p": { - "a": 0, - "k": [ - -54.531, - 27.469 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - } - } - ] - }, - { - "ty": "tm", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Filter - Trim", - "nm": "Trim Paths 1", - "ix": 2, - "e": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 2 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 100 - ], - "t": 17 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 29 - }, - { - "s": [ - 0 - ], - "t": 44 - } - ], - "ix": 2 - }, - "o": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 0 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 360 - ], - "t": 12 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 360 - ], - "t": 27 - }, - { - "s": [ - 0 - ], - "t": 39 - } - ], - "ix": 3 - }, - "s": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 6 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 100 - ], - "t": 20 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 33 - }, - { - "s": [ - 0 - ], - "t": 47 - } - ], - "ix": 1 - }, - "m": 1 - } - ], - "ind": 3 - }, - { - "ty": 4, - "nm": "1", - "sr": 1, - "st": 0, - "op": 384, - "ip": 0, - "hd": false, - "ddd": 0, - "bm": 0, - "hasMask": false, - "ao": 0, - "ks": { - "a": { - "a": 0, - "k": [ - -54.531, - 27.469, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 191.952, - 191.952, - 100 - ], - "ix": 6 - }, - "sk": { - "a": 0, - "k": 0 - }, - "p": { - "a": 0, - "k": [ - 394, - 396, - 0 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "sa": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100, - "ix": 11 - } - }, - "ef": [], - "shapes": [ - { - "ty": "gr", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Group", - "nm": "Ellipse 1", - "ix": 1, - "cix": 2, - "np": 3, - "it": [ - { - "ty": "el", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Shape - Ellipse", - "nm": "Ellipse Path 1", - "d": 1, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 3 - }, - "s": { - "a": 0, - "k": [ - 262.938, - 262.938 - ], - "ix": 2 - } - }, - { - "ty": "st", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Graphic - Stroke", - "nm": "Stroke 1", - "lc": 2, - "lj": 1, - "ml": 4, - "o": { - "a": 0, - "k": 100, - "ix": 4 - }, - "w": { - "a": 0, - "k": 4, - "ix": 5 - }, - "c": { - "a": 0, - "k": [ - 0.1529, - 0.6588, - 0.1333 - ], - "ix": 3 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "p": { - "a": 0, - "k": [ - -54.531, - 27.469 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - } - } - ] - }, - { - "ty": "tm", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Filter - Trim", - "nm": "Trim Paths 1", - "ix": 2, - "e": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 6 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 100 - ], - "t": 21 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 32 - }, - { - "s": [ - 0 - ], - "t": 47 - } - ], - "ix": 2 - }, - "o": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 4 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 360 - ], - "t": 16 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 360 - ], - "t": 30 - }, - { - "s": [ - 0 - ], - "t": 42 - } - ], - "ix": 3 - }, - "s": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 10 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 100 - ], - "t": 24 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 36 - }, - { - "s": [ - 0 - ], - "t": 50 - } - ], - "ix": 1 - }, - "m": 1 - } - ], - "ind": 4 - }, - { - "ty": 4, - "nm": "Shape Layer 1", - "sr": 1, - "st": 0, - "op": 384, - "ip": 0, - "hd": false, - "ddd": 0, - "bm": 0, - "hasMask": false, - "ao": 0, - "ks": { - "a": { - "a": 0, - "k": [ - -54.531, - 27.469, - 0 - ], - "ix": 1 - }, - "s": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0, - 0, - 100 - ], - "t": 0 - }, - { - "o": { - "x": 0.167, - "y": 0.167 - }, - "i": { - "x": 0.833, - "y": 0.833 - }, - "s": [ - 141.835, - 141.835, - 100 - ], - "t": 16 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 141.835, - 141.835, - 100 - ], - "t": 27 - }, - { - "s": [ - 0, - 0, - 100 - ], - "t": 43 - } - ], - "ix": 6 - }, - "sk": { - "a": 0, - "k": 0 - }, - "p": { - "a": 0, - "k": [ - 394, - 396, - 0 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "sa": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100, - "ix": 11 - } - }, - "ef": [], - "shapes": [ - { - "ty": "gr", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Group", - "nm": "Ellipse 1", - "ix": 1, - "cix": 2, - "np": 3, - "it": [ - { - "ty": "el", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Shape - Ellipse", - "nm": "Ellipse Path 1", - "d": 1, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 3 - }, - "s": { - "a": 0, - "k": [ - 262.938, - 262.938 - ], - "ix": 2 - } - }, - { - "ty": "fl", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Graphic - Fill", - "nm": "Fill 1", - "c": { - "a": 0, - "k": [ - 0.1529, - 0.6588, - 0.1333 - ], - "ix": 4 - }, - "r": 1, - "o": { - "a": 0, - "k": 100, - "ix": 5 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "p": { - "a": 0, - "k": [ - -54.531, - 27.469 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - } - } - ] - } - ], - "ind": 5 - } - ], - "v": "5.5.9", - "fr": 24, - "op": 84, - "ip": 0, - "assets": [] -} \ No newline at end of file +{"nm":"Comp 1","ddd":0,"h":800,"w":800,"meta":{"g":"@lottiefiles/toolkit-js 0.33.2"},"layers":[{"ty":4,"nm":"Shape Layer 2","sr":1,"st":0,"op":384,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[415.00000000000006,382,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-22,1],[0,0]],"o":[[0,0],[22,-1],[0,0]],"v":[[-134,56],[-74,108],[72,-56]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":55,"ix":5},"c":{"a":0,"k":[1,1,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[85.449,85.449],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":5},{"s":[100],"t":22}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.463,"y":0},"i":{"x":0.853,"y":1},"s":[0],"t":22},{"s":[100],"t":36}],"ix":1},"m":1}],"ind":1},{"ty":4,"nm":"3","sr":1,"st":0,"op":384,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-54.531,27.469,0],"ix":1},"s":{"a":0,"k":[152.399,152.399,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[394,396,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[262.938,262.938],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.1529,0.6588,0.1333],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-54.531,27.469],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.093,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.093,"y":1},"s":[100],"t":12},{"o":{"x":0.907,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":27},{"s":[0],"t":39}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.041,"y":1},"s":[0],"t":4},{"o":{"x":0.333,"y":0},"i":{"x":0.041,"y":1},"s":[100],"t":15},{"o":{"x":0.959,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":31},{"s":[0],"t":42}],"ix":1},"m":1}],"ind":2},{"ty":4,"nm":"2","sr":1,"st":0,"op":384,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-54.531,27.469,0],"ix":1},"s":{"a":0,"k":[170.654,170.654,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[394,396,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[262.938,262.938],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.0471,0.5529,0.1725],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-54.531,27.469],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":2},{"o":{"x":0.167,"y":0},"i":{"x":0,"y":1},"s":[100],"t":17},{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":29},{"s":[0],"t":44}],"ix":2},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":0},{"o":{"x":0.167,"y":0},"i":{"x":0,"y":1},"s":[360],"t":12},{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[360],"t":27},{"s":[0],"t":39}],"ix":3},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":6},{"o":{"x":0.167,"y":0},"i":{"x":0,"y":1},"s":[100],"t":20},{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":33},{"s":[0],"t":47}],"ix":1},"m":1}],"ind":3},{"ty":4,"nm":"1","sr":1,"st":0,"op":384,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-54.531,27.469,0],"ix":1},"s":{"a":0,"k":[191.952,191.952,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[394,396,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[262.938,262.938],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.1529,0.6588,0.1333],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-54.531,27.469],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":6},{"o":{"x":0.167,"y":0},"i":{"x":0,"y":1},"s":[100],"t":21},{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":32},{"s":[0],"t":47}],"ix":2},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":4},{"o":{"x":0.167,"y":0},"i":{"x":0,"y":1},"s":[360],"t":16},{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[360],"t":30},{"s":[0],"t":42}],"ix":3},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":10},{"o":{"x":0.167,"y":0},"i":{"x":0,"y":1},"s":[100],"t":24},{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":36},{"s":[0],"t":50}],"ix":1},"m":1}],"ind":4},{"ty":4,"nm":"Shape Layer 1","sr":1,"st":0,"op":384,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-54.531,27.469,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0,0,100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[141.835,141.835,100],"t":16},{"o":{"x":1,"y":0},"i":{"x":0.667,"y":1},"s":[141.835,141.835,100],"t":27},{"s":[0,0,100],"t":43}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[394,396,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[262.938,262.938],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1529,0.6588,0.1333],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-54.531,27.469],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":5}],"v":"5.5.9","fr":24,"op":84,"ip":0,"assets":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/rect.json b/example/shared/src/commonMain/composeResources/files/rect.json index 489411e8..268f14bd 100644 --- a/example/shared/src/commonMain/composeResources/files/rect.json +++ b/example/shared/src/commonMain/composeResources/files/rect.json @@ -1,143 +1 @@ -{ - "v": "5.5.7", - "ip": 0, - "op": 180, - "nm": "Animation", - "mn": "{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}", - "fr": 60, - "w": 512, - "h": 512, - "assets": [], - "layers": [ - { - "ddd": 0, - "ty": 4, - "ind": 0, - "st": 0, - "ip": 0, - "op": 180, - "nm": "Layer", - "mn": "{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}", - "ks": { - "a": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "p": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - }, - "shapes": [ - { - "ty": "gr", - "nm": "Group", - "it": [ - { - "ty": "rc", - "nm": "Rectangle", - "p": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "s": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "r": { - "a": 0, - "k": 0 - } - }, - { - "ty": "st", - "nm": "Stroke", - "mn": "{0930ce27-c8f9-4371-b0cf-111a859abfaf}", - "o": { - "a": 0, - "k": 100 - }, - "c": { - "a": 0, - "k": [ - 1, - 0.9803921568627451, - 0.2823529411764706 - ] - }, - "lc": 2, - "lj": 2, - "ml": 0, - "w": { - "a": 0, - "k": 30 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 249.3134328358209, - 254.47164179104476 - ] - }, - "p": { - "a": 0, - "k": [ - 249.3134328358209, - 254.47164179104476 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - } - ] - } - ] - } - ], - "meta": { - "g": "Glaxnimate 0.4.6-26-g7b05e75c" - } -} \ No newline at end of file +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":0,"st":0,"ip":0,"op":180,"nm":"Layer","mn":"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Group","it":[{"ty":"rc","nm":"Rectangle","p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[256,256]},"r":{"a":0,"k":0}},{"ty":"st","nm":"Stroke","mn":"{0930ce27-c8f9-4371-b0cf-111a859abfaf}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.9803921568627451,0.2823529411764706]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":30}},{"ty":"tr","a":{"a":0,"k":[249.3134328358209,254.47164179104476]},"p":{"a":0,"k":[249.3134328358209,254.47164179104476]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/robot.json b/example/shared/src/commonMain/composeResources/files/robot.json new file mode 100644 index 00000000..96403426 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/robot.json @@ -0,0 +1 @@ +{"v":"5.7.1","fr":60,"ip":0,"op":181,"w":500,"h":500,"nm":"Comp 1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"рука 1.1 Outlines 2","cl":"1","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[195.262,126.787,0],"ix":2},"a":{"a":0,"k":[195.262,126.787,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.885,0.104],[-0.781,0.233]],"o":[[-0.629,-0.074],[0.782,-0.232]],"v":[[-0.258,-2.695],[0.105,2.535]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.227,107.118],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.26,-0.325],[-0.182,-5.623],[0,0],[0,0],[1.041,1.25],[0.851,0]],"o":[[-0.623,0.78],[0.182,5.622],[4.506,-1.354],[0,0],[-0.609,-0.73],[-0.605,0]],"v":[[-1.843,-9.436],[-3.618,1.394],[-2.105,9.932],[3.801,-1.432],[2.01,-8.863],[-0.449,-9.932]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.839215746113,0.796078491211,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.432,109.654],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"табличка Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.563,"y":1},"o":{"x":0.478,"y":0.475},"t":12,"s":[1558.678,686.658,0],"to":[-7.333,-72.667,0],"ti":[7.333,72.667,0]},{"i":{"x":0.296,"y":0.296},"o":{"x":0.204,"y":0.204},"t":75,"s":[1514.678,250.658,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.751,"y":1},"o":{"x":0.204,"y":0},"t":82,"s":[1514.678,250.658,0],"to":[7.333,72.667,0],"ti":[-7.333,-72.667,0]},{"t":179,"s":[1558.678,686.658,0]}],"ix":2},"a":{"a":0,"k":[219.758,66.572,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":12,"s":[710,710,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":59,"s":[771,593,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":93,"s":[710,710,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":139,"s":[675,682,100]},{"t":178,"s":[710,710,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.111,-1.962],[0.021,-1.899],[0,0],[0.08,1.969],[0.105,1.913]],"o":[[-0.195,1.927],[-0.111,1.961],[0,0],[-0.049,-1.913],[-0.08,-1.968],[0,0]],"v":[[1.304,-7.727],[0.845,-1.893],[0.647,3.898],[-0.741,3.94],[-0.934,-1.883],[-1.211,-7.705]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,-0.167],[0.066,-0.146],[0.107,-0.108],[0.15,-0.062],[0.167,0],[0.143,0.063],[0.11,0.107],[0.063,0.146],[0,0.167],[-0.062,0.143],[-0.112,0.112],[-0.143,0.063],[-0.167,0],[-0.149,-0.062],[-0.108,-0.111],[-0.066,-0.143]],"o":[[0,0.167],[-0.066,0.146],[-0.108,0.107],[-0.149,0.063],[-0.167,0],[-0.143,-0.062],[-0.112,-0.108],[-0.062,-0.146],[0,-0.167],[0.063,-0.143],[0.11,-0.111],[0.143,-0.062],[0.167,0],[0.15,0.063],[0.107,0.112],[0.066,0.143]],"v":[[1.117,6.527],[1.017,6.997],[0.757,7.378],[0.37,7.633],[-0.104,7.727],[-0.569,7.633],[-0.949,7.378],[-1.211,6.997],[-1.304,6.527],[-1.211,6.063],[-0.949,5.682],[-0.569,5.421],[-0.104,5.327],[0.37,5.421],[0.757,5.682],[1.017,6.063]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[225.318,64.22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.277,0.007],[0.278,0],[0.459,-0.017],[0.459,-0.034],[0,0],[-0.16,-0.011],[-0.161,-0.014],[-0.039,1.067],[0,1.071],[0.021,0.699],[0.021,0.709],[0.188,-0.007],[0.195,-0.013],[0,0],[-0.536,-0.017],[-0.542,0],[0,0],[-0.202,0.014],[0,0],[0.157,0.007],[0.16,0],[0.041,-1.235],[0,-1.252],[-0.042,-1.085],[-0.233,0.007],[-0.236,0.014]],"o":[[-0.278,-0.014],[-0.279,-0.007],[-0.459,0],[-0.459,0.017],[0,0],[0.16,0.021],[0.16,0.01],[0.042,-1.079],[0.038,-1.068],[0,-0.716],[-0.021,-0.7],[-0.181,0],[-0.188,0.007],[0,0],[0.536,0.034],[0.536,0.017],[0,0],[0.195,0],[0,0],[-0.16,0],[-0.156,-0.007],[-0.097,1.252],[-0.042,1.235],[0,1.093],[0.222,0],[0.233,-0.007],[0,0]],"v":[[2.192,7.419],[1.357,7.388],[0.523,7.377],[-0.855,7.403],[-2.232,7.481],[-2.211,5.238],[-1.731,5.285],[-1.251,5.322],[-1.132,2.103],[-1.074,-1.106],[-1.105,-3.229],[-1.168,-5.342],[-1.721,-5.332],[-2.296,-5.301],[-2.274,-7.481],[-0.667,-7.403],[0.95,-7.377],[1.535,-7.377],[2.13,-7.398],[2.067,-5.322],[1.592,-5.332],[1.117,-5.342],[0.909,-1.612],[0.846,2.118],[0.909,5.384],[1.592,5.374],[2.296,5.342]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.862,64.059],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.049,-1.353],[0.021,-1.363],[-0.177,0],[0,0],[-0.234,0.007],[-0.237,0.015],[0,0.295],[0,0],[0.021,1.051],[0.049,1.064],[0,0],[0.066,-1.652],[0,-1.676],[-0.021,-0.814],[-0.035,-0.827],[0,0],[-0.029,0.822],[-0.028,0.821],[0.393,0.017],[0.389,0],[0,0],[0,0],[0,0],[-0.014,-0.48],[0,0],[-0.01,0.977],[0,0.988],[0.126,2.999]],"o":[[-0.07,1.377],[-0.048,1.353],[0.174,0.014],[0,0],[0.223,0],[0.232,-0.007],[0.014,-0.306],[0,0],[0,-1.058],[-0.021,-1.05],[0,0],[-0.125,1.677],[-0.066,1.652],[0,0.821],[0.021,0.814],[0,0],[0.035,-0.827],[0.027,-0.82],[-0.397,-0.021],[-0.393,-0.018],[0,0],[0,0],[0,0],[0,0.473],[0,0],[0.034,-1.001],[0.011,-0.977],[0,-2.991],[0,0]],"v":[[-0.918,-7.45],[-1.096,-3.354],[-1.2,0.72],[-0.673,0.741],[-0.146,0.741],[0.538,0.731],[1.242,0.699],[1.263,-0.203],[1.263,-1.116],[1.231,-4.278],[1.127,-7.45],[3.694,-7.45],[3.407,-2.457],[3.308,2.536],[3.339,4.988],[3.423,7.45],[1.043,7.45],[1.138,4.977],[1.221,2.515],[0.037,2.458],[-1.137,2.431],[-1.221,2.431],[-1.221,4.581],[-1.221,6.021],[-1.2,7.45],[-3.589,7.45],[-3.522,4.482],[-3.506,1.534],[-3.694,-7.45]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[213.997,64.09],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.75,-0.902],[-1.786,-11.401],[0,0],[0,0],[0,0],[-0.625,8.539],[11.021,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.512,0]],"v":[[-18.551,-20.462],[-16.863,14.482],[1.364,21.664],[-1.552,16.556],[16.15,14.549],[18.65,-20.462],[1.426,-21.664]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.388235324037,0.764705942191,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[218.251,66.572],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[12.186,-21.063],[15.101,-19.813],[12.186,12.83],[9.686,13.948],[-4.059,15.324],[-5.1,21.063],[-15.101,12.83]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.835294177485,0.152941176471,0.682352941176,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[224.715,67.173],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"рука 1.1 Outlines","cl":"1","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[-10]},{"t":82,"s":[0]}],"ix":10},"p":{"a":0,"k":[195.262,126.787,0],"ix":2},"a":{"a":0,"k":[195.262,126.787,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.273,-3.437],[0,0],[3.055,8.393]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.842,-5.496],[4.036,6.529],[4.842,5.231],[-4.599,-6.529]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.698039215686,0.592156862745,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.388,116.752],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.701,-2.761],[0,0]],"o":[[0,0],[0,0],[-0.7,2.76],[0,0]],"v":[[-304.671,-96.893],[-300.794,-95.43],[-303.211,-89.776],[-306.54,-83.248]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.482352971096,0.396078461292,0.815686334348,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.99,-4.362],[0,0],[-1.145,5.935],[0,0],[0.074,0]],"o":[[-4.478,4.894],[0,0],[1.145,-5.936],[0,0],[-0.605,0]],"v":[[-0.952,-7.179],[-6.755,11.778],[-0.536,1.985],[6.756,-11.774],[6.644,-11.778]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.643137254902,0.560784313725,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.082,109.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.23,-3.035],[0.208,-6.56],[-4.373,-1.25],[-2.031,3.387],[2.916,3.644],[1.765,0]],"o":[[0,0],[0,0],[4.374,1.249],[2.03,-3.386],[-1.182,-1.476],[-2.592,0]],"v":[[-4.529,-13.425],[-10.569,7.817],[-6.3,16.773],[5.571,6.465],[7.758,-15.821],[3.185,-18.021]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827451040231,0.784313785329,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[200.659,115.518],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"рука 1 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.331],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[0]},{"t":148,"s":[25]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[162.796,159.626,0],"to":[-0.188,-0.751,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[161.669,155.119,0],"to":[0,0,0],"ti":[-0.188,-0.751,0]},{"t":148,"s":[162.796,159.626,0]}],"ix":2},"a":{"a":0,"k":[161.669,155.119,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.528,-0.141],[-2.811,-1.458],[0,0],[6.391,0.001]],"o":[[-2.202,0.587],[2.812,1.457],[0,0],[-0.464,-0.001]],"v":[[-3.064,-8.956],[-2.232,7.705],[5.266,3.331],[-1.579,-9.162]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.639215686275,0.556862745098,0.913725550034,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.94,128.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.053,2.456],[0,0],[-0.132,0.091],[-11.334,3.941],[0,0],[0,0],[0,0]],"o":[[-12.291,24.368],[-5.96,-3.858],[0,0],[0.115,-0.106],[0,0],[13.448,-4.676],[0,0],[0,0],[1.707,3.471]],"v":[[-300.793,-68.502],[-334.766,-35.809],[-343.866,-54.719],[-343.858,-54.728],[-343.487,-55.016],[-328.284,-44.75],[-309.334,-72.797],[-309.334,-79.648],[-302.352,-76.062]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.764705942191,0.705882352941,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[26.445,-12.654],[0.099,-0.123],[0,0],[-5.96,-3.857],[-12.291,24.368],[1.707,3.471],[3.57,0.256]],"o":[[-0.141,0.066],[0,0],[-2.053,2.456],[0,0],[0,0],[-1.162,-2.391],[0,0]],"v":[[-20.205,3.286],[-20.576,3.574],[-20.584,3.583],[-11.483,22.493],[22.489,-10.201],[20.93,-17.76],[14.154,-22.492]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.847058883368,0.803921628466,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.718,141.698],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"тело Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.282,"y":1},"o":{"x":0.217,"y":0},"t":0,"s":[983.73,1265.851,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":90,"s":[987.73,1105.851,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[983.73,1265.851,0]}],"ix":2},"a":{"a":0,"k":[138.215,179.134,0],"ix":1},"s":{"a":0,"k":[710,710,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.636,-1.015],[-11.847,-1.156],[-2.499,0.78],[17.701,1.21]],"o":[[2.555,4.076],[11.848,1.156],[2.5,-0.782],[-17.702,-1.21]],"v":[[-381.874,-16.125],[-356.958,-13.064],[-340.59,-8.834],[-359.74,-28.661]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.607843137255,0.956862804936,0.988235353956,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.127,-3.648],[-12.936,-0.05],[0,0],[8.535,2.336]],"o":[[0,0],[12.937,0.051],[0,0],[-8.536,-2.336]],"v":[[-378.502,8.818],[-362.092,14.917],[-343.895,7.264],[-358.398,8.818]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.607843137255,0.956862804936,0.988235353956,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":50,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.661,-0.157],[-0.302,-0.551],[-0.185,0.668]],"o":[[-0.656,0.156],[0.304,0.55],[0.185,-0.669]],"v":[[-0.327,-1.337],[-0.756,0.944],[0.873,0.708]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.445,167.722],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.19,-0.393],[-0.824,-1.022],[-0.441,1.493]],"o":[[-0.786,0.26],[0.824,1.022],[0.44,-1.494]],"v":[[-1.102,-4.128],[-1.102,3.499],[1.485,2.713]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[150.766,161.197],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.113,-4.806],[9.782,0.893],[-0.066,0.288],[0,0],[-7.584,0]],"o":[[-3.075,4.823],[-8.516,-0.778],[0.008,-0.008],[4.584,-6.899],[7.898,0]],"v":[[18.523,0.576],[-11.258,7.313],[-18.415,3.948],[-18.408,3.931],[0.47,-7.478]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.674509803922,0.63137254902,0.87450986376,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.156,148.134],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.028,-14.243],[-15.551,0],[-0.208,11.871],[14.494,1.368],[0.744,0]],"o":[[-2.01,14.113],[15.551,0],[0.208,-11.87],[-0.754,-0.071],[-12.523,0]],"v":[[-23.986,-0.003],[1.353,24.159],[25.788,3.021],[3.712,-24.053],[1.464,-24.159]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.247,0.98,0.835,0.5,0.218,0.955,0.878,1,0.188,0.929,0.922],"ix":9}},"s":{"a":0,"k":[-0.282,13.803],"ix":5},"e":{"a":0,"k":[0.845,-12.113],"ix":6},"t":2,"h":{"a":0,"k":0,"ix":7},"a":{"a":0,"k":0,"ix":8},"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.972,193.453],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.028,-14.243],[-15.551,0],[-0.208,11.871],[14.493,1.368],[0.745,0]],"o":[[-2.01,14.113],[15.55,0],[0.208,-11.871],[-0.755,-0.071],[-12.522,0.001]],"v":[[-387.149,-7.799],[-361.81,16.363],[-337.375,-4.775],[-359.451,-31.849],[-361.699,-31.955]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.623529411765,0.549019607843,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.698,-10.041],[14.434,0],[2.811,10.313],[-3.751,11.871],[-0.783,1.624],[0,0],[-6.075,-16.05],[-9.579,10.667],[0.428,2.283]],"o":[[-1.904,11.244],[-12.564,0],[-2.811,-10.304],[0.561,-1.772],[0,0],[0,0],[6.076,16.051],[9.117,-10.148],[2.596,10.782]],"v":[[26.516,11.937],[0.113,30.674],[-25.905,15.679],[-23.878,-25.556],[-21.857,-30.658],[-21.85,-30.675],[-23.374,10.576],[20.589,15.622],[25.066,-20.65]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.690196078431,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.215,186.936],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-7.842,-8.123],[6.9,9.028]],"o":[[0,0],[0,0]],"v":[[-336.053,-30.706],[-345.126,-52.185]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.564705882353,0.501960784314,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.583,-6.899],[0.008,-0.008],[0.71,-1.467],[0,0],[0.559,-1.772],[-2.811,-10.305],[-12.563,0],[-1.903,11.245],[2.596,10.783],[0,0.026],[1.236,3.149],[1.913,2.234],[7.898,0]],"o":[[0,0],[-0.874,1.312],[0,0],[-0.783,1.624],[-3.751,11.871],[2.812,10.312],[14.435,0],[1.699,-10.04],[-0.008,-0.041],[-0.824,-3.445],[-1.072,-2.737],[-4.113,-4.806],[-7.583,0]],"v":[[-19.215,-27.068],[-19.223,-27.053],[-21.598,-22.872],[-21.606,-22.855],[-23.626,-17.753],[-25.654,23.482],[0.363,38.477],[26.767,19.738],[25.317,-12.848],[25.3,-12.947],[22.201,-22.88],[17.715,-30.423],[-0.338,-38.477]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.831372608858,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.964,179.133],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"нога 1 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-15]},{"t":148,"s":[0]}],"ix":10},"p":{"a":0,"k":[117.306,210.078,0],"ix":2},"a":{"a":0,"k":[117.306,210.078,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.309,-0.404],[-7.622,3.427],[5.565,0.001]],"o":[[-2.218,2.898],[0,0],[-0.653,0]],"v":[[-10.631,-7.717],[12.849,4.874],[-9.167,-8.302]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.58431372549,0.541176470588,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[121.358,213.147],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.014,-1.245],[-3.898,-6.561],[1.064,1.904],[0.891,4.213],[1.484,2.606],[-0.347,0.503],[-1.196,-1.508],[0.281,-1.615]],"o":[[-1.013,1.253],[-1.021,-0.362],[-0.635,-2.844],[-1.137,-5.424],[-0.857,-4.195],[2.11,-3.124],[0.222,0.29],[0,0]],"v":[[-381.367,17.61],[-377.229,41.665],[-380.386,38.104],[-382.851,26.826],[-388.374,13.232],[-389.272,5.426],[-365.926,17.354],[-366.034,20.38]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.721568627451,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.217,-0.321],[-0.857,-4.195],[-3.232,-5.787],[-1.023,-0.362],[-1.186,6.942],[0.222,0.289],[4.852,0]],"o":[[-0.347,0.503],[1.575,7.7],[1.062,1.904],[4.731,1.691],[0.281,-1.616],[-1.072,-1.354],[-0.556,0]],"v":[[-11.611,-18.732],[-10.713,-10.926],[-2.724,13.947],[0.434,17.507],[11.628,-3.777],[11.736,-6.803],[-10.432,-19.199]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827451040231,0.788235353956,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.339,224.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"нога 2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[16]},{"t":148,"s":[0]}],"ix":10},"p":{"a":0,"k":[151.022,209.978,0],"ix":2},"a":{"a":0,"k":[151.022,209.978,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.568,-4.691],[2.638,-5.416],[-2.844,-7.007],[0.19,4.855],[-0.149,0.207],[-1.096,-1.501]],"o":[[0,0],[-2.638,5.408],[-4.773,-5.358],[-0.024,-0.602],[2.72,-3.693],[0.289,0.403]],"v":[[-334.295,11.007],[-348.351,19.803],[-347.156,45.078],[-357.51,18.591],[-357.328,17.354],[-333.801,2.558]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.721568627451,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.97,-0.606],[-1.421,-0.377]],"o":[[-0.852,0.263],[1.42,0.376]],"v":[[-0.46,-3.605],[-0.089,3.835]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.402,227.107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.658,-13.916],[-3.433,14.115]],"o":[[-0.602,1.478],[0,0]],"v":[[-11.552,7.275],[12.154,-8.753]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666666666667,0.572549019608,0.929411824544,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.043,211.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.569,-3.488],[-0.025,-0.602],[-4.772,-5.359],[0,0],[-0.708,-0.206],[-0.198,0.008],[-0.75,1.351],[-1.419,10.543],[-0.073,0.644],[0.288,0.403],[0.17,0]],"o":[[-0.149,0.206],[0.191,4.855],[0,0],[0.767,0.857],[0.206,0.067],[0.759,-0.016],[3.149,-5.631],[0.091,-0.693],[0.569,-4.691],[-0.061,-0.084],[-2.893,0.001]],"v":[[-11.804,-7.275],[-11.986,-6.038],[-1.632,20.449],[-1.632,20.456],[0.594,22.096],[1.204,22.188],[3.479,20.036],[10.973,-11.618],[11.228,-13.622],[11.723,-22.072],[11.373,-22.195]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.862745157878,0.815686334348,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.476,224.63],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"рука 2.2 Outlines","cl":"2","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-9]},{"t":149,"s":[0]}],"ix":10},"p":{"a":0,"k":[93.767,205.496,0],"ix":2},"a":{"a":0,"k":[93.767,205.496,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.152,0],[-0.72,0.143]],"o":[[-1.383,0],[0.72,-0.145]],"v":[[-0.389,-3.059],[1.051,2.917]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.432,214.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0.671,4.894],[2.976,2.783],[0.959,-14.494],[-4.069,1.646]],"v":[[-4.607,-2.118],[-1.44,7.721],[3.648,7.721],[0.825,-10.504]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.827451040231,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[99.323,216.434],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.203,-2.51],[-1.68,-0.586],[0,0],[0,0]],"o":[[0,0],[1.68,0.587],[0,0],[0,0]],"v":[[-3.552,1.233],[0.586,5.412],[3.577,5.38],[-2.629,-5.664]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.513725490196,0.435294147566,0.84313731474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.345,219.979],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.056,9.406],[0,0]],"o":[[4.469,-0.865],[1.057,-9.407],[-9.563,4.969]],"v":[[-1.997,14.648],[5.147,-0.421],[3.359,-14.649]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.717647058824,0.603921568627,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.479,220.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.196,-2.214],[-3.264,-11.422],[-3.455,1.248],[-0.191,7.583],[4.703,0.768],[0.235,0]],"o":[[-1.296,2.399],[0,0],[3.456,-1.248],[0.192,-7.583],[-0.221,-0.036],[-2.796,0]],"v":[[-6.814,-12.115],[-5.519,15.528],[2.544,15.528],[8.59,-3.381],[1.488,-16.723],[0.803,-16.776]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.815686334348,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.42,218.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"рука 2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-5]},{"t":179,"s":[10]}],"ix":10},"p":{"a":0,"k":[112.329,161.13,0],"ix":2},"a":{"a":0,"k":[112.329,161.13,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[5.518,1.146],[0.334,0]],"o":[[8.343,4.375],[0,0],[-0.336,-0.07],[-5.145,0]],"v":[[-8.194,1.704],[7.205,0.973],[2.676,-5.978],[1.67,-6.08]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.592156862745,0.478431402468,0.870588295133,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[94.014,205.393],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.87,0.461],[-0.703,-0.312]],"o":[[-0.769,-0.407],[0.703,0.313]],"v":[[0.313,-0.972],[-0.48,1.066]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.167,180.543],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.833,0.312],[-1.562,0.104]],"o":[[-0.975,-0.366],[1.562,-0.104]],"v":[[-3.105,5.831],[2.518,-6.04]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[106.095,172.524],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.737,-7.04],[0.206,-0.461],[0,0],[0,0],[0,0],[-7.337,15.127],[-4.048,5.21],[2.605,-11.311],[-4.896,7.914],[0,0]],"o":[[-0.024,6.027],[-4.526,11.657],[0,0],[0,0],[-1.921,-0.281],[0,0],[3.685,-7.6],[-2.317,3.058],[-2.968,12.868],[4.889,-7.914],[0,0]],"v":[[15.304,-25.258],[11.702,-3.479],[0.169,23.313],[0.161,23.322],[-12.13,25.258],[-15.304,24.575],[-6.558,-3.908],[5.874,-23.79],[-8.742,3.892],[5.156,3.892],[15.156,-25.258]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.764705942191,0.705882352941,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.062,183.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.887,-4.93],[0,0],[0.008,-0.008],[0.041,-0.05],[0.034,-0.034],[0.034,-0.042],[0.041,-0.066],[0.025,-0.025],[3.684,-7.6],[0,0],[-1.921,-0.28],[-4.155,2.531],[0,0],[-4.526,11.657],[-0.024,6.026],[0.42,0.231],[0.054,0]],"o":[[0,0],[0,0.008],[-0.033,0.042],[-0.016,0.033],[-0.024,0.033],[-0.049,0.066],[-0.016,0.024],[-4.047,5.21],[-7.337,15.127],[0,0],[3.165,0.461],[0,0],[0.206,-0.462],[2.736,-7.04],[0.017,-4.097],[-0.039,-0.021],[-0.933,0.001]],"v":[[6.368,-21.133],[6.352,-21.117],[6.336,-21.092],[6.228,-20.96],[6.154,-20.861],[6.071,-20.754],[5.923,-20.556],[5.865,-20.482],[-6.565,-0.599],[-15.313,27.883],[-12.138,28.567],[0.153,26.63],[0.161,26.622],[11.695,-0.17],[15.296,-21.95],[14.522,-29.13],[14.382,-29.161]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.847058883368,0.803921628466,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.07,179.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"голова Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-9]},{"t":131,"s":[0]}],"ix":10},"p":{"a":0,"k":[139.381,137.647,0],"ix":2},"a":{"a":0,"k":[139.381,137.647,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.561,-0.739],[0.552,1.069]],"o":[[0.56,0.737],[0,0]],"v":[[-4.319,5.173],[4.328,-5.91]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.811764765721,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.297,95.229],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.495,-3.519],[-2.603,-0.426],[-1.333,0.536],[3.52,2.545]],"o":[[0,0],[2.603,0.426],[1.332,-0.537],[0,0]],"v":[[-4.885,1.505],[-1.123,0.617],[4.314,5.849],[1.148,-5.888]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.486274539723,0.941176530427,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.045,75.211],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.003,-0.726],[-1.797,-0.235],[-1.376,0.859],[0,0]],"o":[[0,0],[-3.003,0.726],[1.796,0.234],[1.376,-0.859],[0,0]],"v":[[-316.047,-126.57],[-321.253,-128.574],[-322.659,-118.153],[-318.725,-124.245],[-314.942,-124.771]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.486274539723,0.941176530427,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.048,5.186],[-0.797,6.091],[-0.974,-0.552],[-0.575,-5.878],[0,0]],"o":[[0,0],[0.798,-6.09],[0.975,0.553],[0.448,4.573],[0,0]],"v":[[-2.994,8.75],[-2.873,-1.877],[0.535,-11.349],[1.934,1.046],[3.261,9.912]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.156862745098,0.376470618154,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.969,101.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.577,-3.133],[-0.391,2.939],[3.868,0]],"o":[[-0.141,0.768],[0.184,-1.387],[-4.327,0]],"v":[[-8.46,1.689],[8.417,-0.298],[1.227,-2.641]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.925490255917,0.333333333333,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.346,120.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.297,-0.7],[-2.393,0.313],[0.26,0.365]],"o":[[-1.156,0.624],[2.392,-0.312],[-0.261,-0.364]],"v":[[-1.934,-0.257],[-0.604,1.301],[2.83,-1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[172.843,68.707],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.825,-0.89],[-0.469,0.729]],"o":[[-1.383,0.322],[0.469,-0.729]],"v":[[-4.884,-2.783],[5.799,2.944]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[153.577,66.648],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.709],[-0.235,-0.708],[0.235,-0.708],[0.235,0.709]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.708],[0.235,0.708],[0.235,-0.71],[-0.235,-0.71]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.206,-0.659],[0,0]],"o":[[0,0],[0.091,0.272]],"v":[[0.235,0.708],[-0.235,-0.709]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.5,0.5,0.5,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[182.377,98.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.874,-3.292],[-16.098,0.788],[0.957,1.129],[15.984,3.504]],"o":[[-0.83,3.129],[19.462,-0.953],[-0.574,-0.678],[-10.556,-2.314]],"v":[[-382.369,-81.455],[-360.555,-75.984],[-337.917,-82.144],[-360.305,-82.654]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.258823529412,0.450980422076,0.776470648074,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.572,-2.91],[-4.151,-0.452],[0.499,4.691],[4.458,0]],"o":[[-2.379,2.691],[4.658,0.507],[-0.27,-2.528],[-3.815,-0.001]],"v":[[-8.686,-1.237],[-1.865,4.851],[10.566,-1.176],[1.888,-5.357]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929411824544,0.086274509804,0.529411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.258,122.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.456,-11.141],[0,0],[0,0],[0,0],[0.912,9.358],[0,0],[0,0]],"o":[[-6.455,11.143],[7.654,5.216],[0,0],[0,0],[-1.093,-11.215],[2.652,-6.029],[0,0]],"v":[[-9.763,-1.324],[-13.616,15.999],[16.218,16.876],[15.281,13.752],[-11.741,8.924],[6.062,-12.583],[4.67,-21.215]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.725490196078,0.603921568627,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.596,108.582],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-11.153,0],[0,0],[11.963,0]],"o":[[0,0],[11.153,0],[0,0],[-11.964,0]],"v":[[-15.984,-2.708],[-0.896,1.355],[15.983,-3.333],[-0.896,3.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.184000007779,0.583999992819,0.804000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[139.695,102.549],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.997,-2.789],[-2.083,3.669],[7.288,0.834],[0.302,0]],"o":[[0.778,2.178],[1.009,-1.779],[-0.315,-0.036],[-6.688,0.001]],"v":[[-8.337,2.931],[8.325,4.701],[1.766,-8.316],[0.842,-8.37]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.192156877705,0.913725550034,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.231,88.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.315,-0.036],[-1.01,-1.779],[-0.778,2.178],[6.686,0.001]],"o":[[-7.288,0.834],[2.083,3.669],[0.996,-2.789],[-0.302,0]],"v":[[-1.764,-8.316],[-8.323,4.701],[8.338,2.931],[-0.839,-8.37]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.192156877705,0.913725550034,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.442,88.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.081,-3.746],[-5.434,2.604],[-0.771,2.091],[0,0],[0,0]],"o":[[0,0],[5.435,-2.603],[0.772,-2.092],[0,0],[0,0]],"v":[[-405.339,-63.292],[-397.135,-69.128],[-385.933,-75.861],[-400.839,-76.719],[-408.644,-73.332]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.552941176471,0.513725490196,0.84313731474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.241,-1.31],[-15.795,-0.025],[-3.223,3.083],[9.675,0]],"o":[[2.225,3.001],[8.813,0.008],[-5.804,-1.293],[-11.292,0]],"v":[[-27.554,-1.718],[0.061,3.797],[27.554,-1.941],[2.757,-3.805]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.400000029919,0.258823529412,0.670588235294,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.167,139.052],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":3,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.157,-0.429],[0.107,-0.14],[0,0],[16.874,-3.784],[0,0],[0,0],[-0.255,1.772],[-4.212,0.775],[-13.808,-2.093],[-1.154,-0.239],[-0.041,-0.008]],"o":[[-0.05,0.132],[-1.335,1.888],[0,0],[-16.875,3.784],[0,0],[-3.611,-1.443],[0.157,-1.08],[12.382,-2.242],[1.443,0.256],[0.041,0.008],[3.273,0.709]],"v":[[33.979,-1.112],[33.748,-0.7],[26.996,3.619],[-10.693,-1.112],[-28.854,4.914],[-28.862,4.914],[-33.965,-0.024],[-26.917,-2.827],[24.904,-3.652],[28.811,-2.901],[28.926,-2.877]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.407843167174,0.36862745098,0.847058883368,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.529,140.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.237,-1.31],[0.157,-1.08],[-3.611,-1.444],[0,0],[-13.635,-0.016],[1.286,4.418],[0.19,0.222],[2.382,0.585],[0.04,0.009],[0.214,0.049],[1.186,0.181],[8.02,0]],"o":[[-4.213,0.775],[-0.256,1.772],[0,0],[5.499,2.2],[12.316,0.008],[-0.066,-0.232],[-0.75,-0.874],[-0.041,-0.008],[-0.198,-0.048],[-0.998,-0.222],[-5.737,-0.87],[-11.284,0]],"v":[[-27.516,-4.706],[-34.565,-1.904],[-29.462,3.035],[-29.454,3.035],[-0.494,6.785],[33.535,-1.904],[33.148,-2.579],[28.326,-4.755],[28.211,-4.781],[27.592,-4.93],[24.303,-5.53],[2.77,-6.793]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.556862745098,0.494117676978,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.129,142.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":3,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.691,-6.579],[8.54,15.827],[-5.367,14.303],[0,0],[-5.614,-8.82],[-24.369,1.038],[-4.089,6.875],[1.525,4.83],[0,0]],"o":[[-13.956,19.57],[-5.573,-10.338],[0,-0.008],[-0.231,0.841],[5.737,9.02],[24.367,-1.047],[3.223,-5.408],[0,0],[2.786,10.956]],"v":[[43.951,11.737],[-44.14,14.029],[-43.736,-26.151],[-43.728,-26.159],[-43.843,3.55],[8.966,10.278],[45.485,-1.181],[43.943,-23.356],[46.334,-16.226]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.745098039216,0.682352941176,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.801,122.679],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":3,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.667,-0.04],[-5.117,-21.832],[-14.162,12.079],[30.108,0.005]],"o":[[-28.571,1.714],[3.123,13.328],[13.859,-11.822],[-0.658,0]],"v":[[-4.371,-32.568],[-41.841,17.848],[33.1,20.549],[-2.388,-32.628]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.050980395897,0.298039215686,0.643137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.098,96.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":3,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.117,-21.832],[-14.161,12.079],[31.239,-1.874]],"o":[[3.124,13.329],[14.162,-12.079],[-28.572,1.715]],"v":[[-41.993,18.755],[32.948,21.456],[-4.522,-31.661]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.889999988032,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.549,97.509],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.04,-18.77],[-5.573,-10.338],[-13.956,19.571],[2.787,10.956],[23.791,0]],"o":[[-5.366,14.303],[8.54,15.827],[4.691,-6.578],[-5.506,-21.647],[-20.214,0]],"v":[[-43.439,-11.017],[-43.844,29.163],[44.247,26.87],[46.63,-1.092],[-0.943,-46.44]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.850980451995,0.807843197093,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.505,107.546],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":3,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.812,-11.87],[0,0],[0,0],[6.013,6.716]],"o":[[-2.81,11.872],[0,0],[0,0],[0,0]],"v":[[-6.405,-1.963],[-1.898,17.034],[7.568,-1.181],[3.202,-17.035]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.188235309077,0.929411824544,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.313,85.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":3,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.812,11.872],[0,0]],"o":[[0,0],[0,0],[-2.811,-11.87],[-6.013,6.716]],"v":[[-7.568,-1.181],[1.897,17.034],[6.404,-1.963],[-3.202,-17.035]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.188235309077,0.929411824544,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[181.973,85.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":3,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.012,-0.001],[0,-10.699],[0,0],[0,0],[0.889,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.013,0]],"v":[[1.508,-9.423],[-4.686,7.914],[-2.291,9.425],[4.686,-5.016],[1.545,-9.425]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.63137254902,0.552941176471,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.922,75.214],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":3,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.707,8.435],[0,0]],"o":[[0,0],[0,0],[-2.707,-8.435],[-7.653,0.937]],"v":[[-10.833,-11.004],[5.837,17.338],[8.126,-7.758],[3.074,-17.338]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.800000059838,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[175.355,83.129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":3,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0.248,-13.885],[-1.741,1.354]],"v":[[-4.633,-6.583],[2.568,10.788],[4.385,8.909],[-1.665,-10.788]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.63137254902,0.552941176471,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.519,76.579],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":3,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.707,-8.435],[0,0],[0,0],[7.655,0.937]],"o":[[-2.708,8.435],[0,0],[0,0],[0,0]],"v":[[-8.126,-7.758],[-5.836,17.338],[10.834,-11.004],[-3.075,-17.338]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.800000059838,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.929,83.129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":3,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,268,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[27,27,100],"ix":6}},"ao":0,"w":2000,"h":2000,"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/roundrect.json b/example/shared/src/commonMain/composeResources/files/roundrect.json index 3aabbf7a..21573fc1 100644 --- a/example/shared/src/commonMain/composeResources/files/roundrect.json +++ b/example/shared/src/commonMain/composeResources/files/roundrect.json @@ -1,143 +1 @@ -{ - "v": "5.5.7", - "ip": 0, - "op": 180, - "nm": "Animation", - "mn": "{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}", - "fr": 60, - "w": 512, - "h": 512, - "assets": [], - "layers": [ - { - "ddd": 0, - "ty": 4, - "ind": 0, - "st": 0, - "ip": 0, - "op": 180, - "nm": "Layer", - "mn": "{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}", - "ks": { - "a": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "p": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - }, - "shapes": [ - { - "ty": "gr", - "nm": "Group", - "it": [ - { - "ty": "rc", - "nm": "Rectangle", - "p": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "s": { - "a": 0, - "k": [ - 256, - 256 - ] - }, - "r": { - "a": 0, - "k": 50 - } - }, - { - "ty": "st", - "nm": "Stroke", - "mn": "{0930ce27-c8f9-4371-b0cf-111a859abfaf}", - "o": { - "a": 0, - "k": 100 - }, - "c": { - "a": 0, - "k": [ - 1, - 0.9803921568627451, - 0.2823529411764706 - ] - }, - "lc": 2, - "lj": 2, - "ml": 0, - "w": { - "a": 0, - "k": 30 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 249.3134328358209, - 254.47164179104476 - ] - }, - "p": { - "a": 0, - "k": [ - 249.3134328358209, - 254.47164179104476 - ] - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ] - }, - "r": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100 - } - } - ] - } - ] - } - ], - "meta": { - "g": "Glaxnimate 0.4.6-26-g7b05e75c" - } -} \ No newline at end of file +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":0,"st":0,"ip":0,"op":180,"nm":"Layer","mn":"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Group","it":[{"ty":"rc","nm":"Rectangle","p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[256,256]},"r":{"a":0,"k":50}},{"ty":"st","nm":"Stroke","mn":"{0930ce27-c8f9-4371-b0cf-111a859abfaf}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.9803921568627451,0.2823529411764706]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":30}},{"ty":"tr","a":{"a":0,"k":[249.3134328358209,254.47164179104476]},"p":{"a":0,"k":[249.3134328358209,254.47164179104476]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index 5b45589b..e69de29b 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1,363 +0,0 @@ -{ - "nm": "Comp 1", - "ddd": 0, - "h": 800, - "w": 800, - "meta": { - "g": "@lottiefiles/toolkit-js 0.33.2" - }, - "layers": [ - { - "ty": 4, - "nm": "1", - "sr": 1, - "st": 0, - "op": 384, - "ip": 0, - "hd": false, - "ddd": 0, - "bm": 0, - "hasMask": false, - "ao": 0, - "ks": { - "a": { - "a": 0, - "k": [ - -54.531, - 27.469, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 191.952, - 191.952, - 100 - ], - "ix": 6 - }, - "sk": { - "a": 0, - "k": 0 - }, - "p": { - "a": 0, - "k": [ - 394, - 396, - 0 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "sa": { - "a": 0, - "k": 0 - }, - "o": { - "a": 0, - "k": 100, - "ix": 11 - } - }, - "ef": [], - "shapes": [ - { - "ty": "gr", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Group", - "nm": "Ellipse 1", - "ix": 1, - "cix": 2, - "np": 3, - "it": [ - { - "ty": "el", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Shape - Ellipse", - "nm": "Ellipse Path 1", - "d": 1, - "p": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 3 - }, - "s": { - "a": 0, - "k": [ - 262.938, - 262.938 - ], - "ix": 2 - } - }, - { - "ty": "st", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Graphic - Stroke", - "nm": "Stroke 1", - "lc": 2, - "lj": 1, - "ml": 4, - "o": { - "a": 0, - "k": 100, - "ix": 4 - }, - "w": { - "a": 0, - "k": 4, - "ix": 5 - }, - "c": { - "a": 0, - "k": [ - 0.1529, - 0.6588, - 0.1333 - ], - "ix": 3 - } - }, - { - "ty": "tr", - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "p": { - "a": 0, - "k": [ - -54.531, - 27.469 - ], - "ix": 2 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - } - } - ] - }, - { - "ty": "tm", - "bm": 0, - "hd": false, - "mn": "ADBE Vector Filter - Trim", - "nm": "Trim Paths 1", - "ix": 2, - "e": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 6 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 100 - ], - "t": 21 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 32 - }, - { - "s": [ - 0 - ], - "t": 47 - } - ], - "ix": 2 - }, - "o": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 4 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 360 - ], - "t": 16 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 360 - ], - "t": 30 - }, - { - "s": [ - 0 - ], - "t": 42 - } - ], - "ix": 3 - }, - "s": { - "a": 1, - "k": [ - { - "o": { - "x": 0.333, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 0 - ], - "t": 10 - }, - { - "o": { - "x": 0.167, - "y": 0 - }, - "i": { - "x": 0, - "y": 1 - }, - "s": [ - 100 - ], - "t": 24 - }, - { - "o": { - "x": 1, - "y": 0 - }, - "i": { - "x": 0.667, - "y": 1 - }, - "s": [ - 100 - ], - "t": 36 - }, - { - "s": [ - 0 - ], - "t": 50 - } - ], - "ix": 1 - }, - "m": 1 - } - ], - "ind": 4 - } - ], - "v": "5.5.9", - "fr": 24, - "op": 84, - "ip": 0, - "assets": [] -} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 686cb717..1f498b28 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -25,6 +25,7 @@ private val BOUNCING_BALL = "files/bouncing_ball.json" private val POLYSTAR = "files/polystar.json" private val RECT = "files/rect.json" private val ROUND_RECT = "files/roundrect.json" +private val ROBOT = "files/robot.json" @OptIn(ExperimentalResourceApi::class) @Composable From abaa494e44b0ec981a52682acbfda935faf1a8b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 31 May 2024 20:32:00 +0300 Subject: [PATCH 010/100] fix packages --- .../alexzhirkevich/compottie/LottiePainter.kt | 2 +- .../compottie/internal/LottieData.kt | 6 +-- .../compottie/internal/LottieJson.kt | 42 +++++++++---------- .../internal/animation/AnimatedColor.kt | 2 +- .../internal/animation/AnimatedGradient.kt | 2 +- .../internal/animation/AnimatedShape.kt | 10 ++--- .../internal/animation/AnimatedTransform.kt | 2 +- .../internal/animation/AnimatedValue.kt | 2 +- .../internal/animation/AnimatedVector2.kt | 2 +- .../animation/BaseKeyframeAnimation.kt | 2 +- .../internal/animation/BezierInterpolation.kt | 2 +- .../internal/animation/BezierKeyframe.kt | 8 ++-- .../compottie/internal/animation/Indexable.kt | 2 +- .../compottie/internal/animation/Keyframe.kt | 2 +- .../internal/animation/KeyframeAnimation.kt | 2 +- .../internal/animation/ValueKeyframe.kt | 2 +- .../internal/animation/VectorKeyframe.kt | 2 +- .../compottie/internal/assets/LottieAsset.kt | 4 +- .../internal/assets/LottieFileAsset.kt | 4 +- .../internal/content/ContentGroup.kt | 2 +- .../internal/content/ShapeModifierContent.kt | 2 +- .../compottie/internal/effects/Effect.kt | 2 +- .../compottie/internal/helpers/Bezier.kt | 4 +- .../compottie/internal/helpers/BooleanInt.kt | 2 +- .../internal/helpers/CubicCurveData.kt | 2 +- .../internal/helpers/LottieBlendMode.kt | 2 +- .../compottie/internal/helpers/Marker.kt | 2 +- .../compottie/internal/helpers/MatteMode.kt | 2 +- .../compottie/internal/helpers/ShapeData.kt | 2 +- .../compottie/internal/helpers/Transform.kt | 8 ++-- .../internal/helpers/TrimPathType.kt | 2 +- .../compottie/internal/layers/BaseLayer.kt | 4 +- .../compottie/internal/layers/ImageLayer.kt | 12 +++--- .../compottie/internal/layers/Layer.kt | 4 +- .../compottie/internal/layers/NullLayer.kt | 10 ++--- .../compottie/internal/layers/ShapeLayer.kt | 16 +++---- .../compottie/internal/layers/VisualLayer.kt | 10 ++--- .../internal/platform/PlatformShader.kt | 6 +-- .../internal/services/LottieAssetService.kt | 2 +- .../internal/shapes/BaseStrokeShape.kt | 4 +- .../compottie/internal/shapes/EllipseShape.kt | 6 +-- .../compottie/internal/shapes/FillShape.kt | 8 ++-- .../internal/shapes/GradientFillShape.kt | 10 ++--- .../internal/shapes/GradientStrokeShape.kt | 10 ++--- .../compottie/internal/shapes/GroupShape.kt | 4 +- .../compottie/internal/shapes/PathShape.kt | 6 +-- .../internal/shapes/PolystarShape.kt | 8 ++-- .../compottie/internal/shapes/RectShape.kt | 8 ++-- .../compottie/internal/shapes/RoundShape.kt | 8 ++-- .../compottie/internal/shapes/Shape.kt | 2 +- .../internal/shapes/SolidStrokeShape.kt | 8 ++-- .../internal/shapes/TransformShape.kt | 8 ++-- .../internal/shapes/TrimPathShape.kt | 6 +-- .../internal/shapes/util/CompoundTrimPath.kt | 4 +- .../internal/shapes/util/CornerRounding.kt | 2 +- .../compottie/internal/shapes/util/Cubic.kt | 2 +- .../compottie/internal/shapes/util/Feature.kt | 2 +- .../compottie/internal/shapes/util/Point.kt | 2 +- .../internal/shapes/util/RoundedPolygon.kt | 2 +- .../compottie/internal/shapes/util/Utils.kt | 4 +- .../compottie/internal/util/VectorUtil.kt | 2 +- .../compottie/internal/utils/Utils.kt | 2 +- 62 files changed, 157 insertions(+), 157 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 3de90f1c..a8b896ad 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -26,7 +26,7 @@ import io.github.alexzhirkevich.compottie.assets.LottieAssetsFetcher import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.platform.fromBytes -import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator import kotlinx.coroutines.Dispatchers diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index 5e247be9..b7caeee9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -1,8 +1,8 @@ package io.github.alexzhirkevich.compottie.internal -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Marker -import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer +import io.github.alexzhirkevich.compottie.internal.helpers.Marker +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index c99ce742..7ef5459e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -1,26 +1,26 @@ package io.github.alexzhirkevich.compottie.internal -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.layers.Layer -import io.github.alexzhirkevich.compottie.internal.schema.layers.NullLayer -import io.github.alexzhirkevich.compottie.internal.schema.layers.ShapeLayer -import io.github.alexzhirkevich.compottie.internal.schema.layers.ImageLayer -import io.github.alexzhirkevich.compottie.internal.schema.shapes.EllipseShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.FillShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientFillShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.GradientStrokeShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.GroupShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.PathShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.PolystarShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.RectShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.RoundShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.SolidStrokeShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TransformShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.layers.Layer +import io.github.alexzhirkevich.compottie.internal.layers.NullLayer +import io.github.alexzhirkevich.compottie.internal.layers.ShapeLayer +import io.github.alexzhirkevich.compottie.internal.layers.ImageLayer +import io.github.alexzhirkevich.compottie.internal.shapes.EllipseShape +import io.github.alexzhirkevich.compottie.internal.shapes.FillShape +import io.github.alexzhirkevich.compottie.internal.shapes.GradientFillShape +import io.github.alexzhirkevich.compottie.internal.shapes.GradientStrokeShape +import io.github.alexzhirkevich.compottie.internal.shapes.GroupShape +import io.github.alexzhirkevich.compottie.internal.shapes.PathShape +import io.github.alexzhirkevich.compottie.internal.shapes.PolystarShape +import io.github.alexzhirkevich.compottie.internal.shapes.RectShape +import io.github.alexzhirkevich.compottie.internal.shapes.RoundShape +import io.github.alexzhirkevich.compottie.internal.shapes.Shape +import io.github.alexzhirkevich.compottie.internal.shapes.SolidStrokeShape +import io.github.alexzhirkevich.compottie.internal.shapes.TransformShape +import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index 8bd511a8..4c45699e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -1,5 +1,5 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.lerp diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt index 6c5cb144..f9f18937 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Color import kotlinx.serialization.ExperimentalSerializationApi diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 673e836d..400bfd10 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -1,13 +1,13 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.content.modifiedBy import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Bezier -import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData -import io.github.alexzhirkevich.compottie.internal.schema.helpers.mapPath -import io.github.alexzhirkevich.compottie.internal.schema.helpers.toShapeData +import io.github.alexzhirkevich.compottie.internal.helpers.Bezier +import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.helpers.mapPath +import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 4fc2612e..776cde18 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Matrix import io.github.alexzhirkevich.compottie.internal.utils.Math diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt index 9a513cc4..d976e1e5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.util.lerp import kotlinx.serialization.ExperimentalSerializationApi diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index c097c9aa..551a50c8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.geometry.Offset import androidx.compose.ui.util.lerp diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index aa4d0dd7..303cb721 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import kotlin.math.roundToInt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt index 41187159..c68dd031 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt index 503c6182..8d5b85be 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt @@ -1,10 +1,10 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.content.modifiedBy -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Bezier -import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData -import io.github.alexzhirkevich.compottie.internal.schema.helpers.toShapeData +import io.github.alexzhirkevich.compottie.internal.helpers.Bezier +import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Indexable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Indexable.kt index 1fc705a4..b66385a6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Indexable.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Indexable.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation internal interface Indexable { val expression : String ? diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt index 4d08d7c0..6dca8faa 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.animation.core.CubicBezierEasing import androidx.compose.animation.core.Easing diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt index d8779d5b..42e6d836 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation interface KeyframeAnimation { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt index 8c2eab50..40764c73 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index 4b23fe48..30eab4e4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.animation +package io.github.alexzhirkevich.compottie.internal.animation import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt index a3fc5dcd..c3e134d1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt @@ -1,11 +1,11 @@ -package io.github.alexzhirkevich.compottie.internal.schema.assets +package io.github.alexzhirkevich.compottie.internal.assets import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.Paint import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.platform.fromBytes -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFileAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFileAsset.kt index 709ff350..8cb7be1e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFileAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFileAsset.kt @@ -1,6 +1,6 @@ -package io.github.alexzhirkevich.compottie.internal.schema.assets +package io.github.alexzhirkevich.compottie.internal.assets -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt internal interface LottieFileAsset : LottieAsset { val path : String diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 3366ccde..59644d94 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -8,7 +8,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt index 0a44beaf..2e22083e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData internal interface ShapeModifierContent : Content { fun modify(shape: ShapeData, frame: Float) : ShapeData diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt index 09529524..789f5060 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.effects +package io.github.alexzhirkevich.compottie.internal.effects import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt index 6d0a61bd..acc7ab9b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt @@ -1,7 +1,7 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.schema.util.toOffset +import io.github.alexzhirkevich.compottie.internal.util.toOffset import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlin.math.min diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/BooleanInt.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/BooleanInt.kt index 29c97c2f..eb97e561 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/BooleanInt.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/BooleanInt.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt index 41e03784..6f77a52c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.geometry.Offset diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt index affa6608..0ccf4c8f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.graphics.BlendMode import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt index a45e19f2..3a9a32d3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Marker.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt index 712846ad..d9e926c3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt index 53b707ec..6553ed8a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Path diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index 5eed769e..11aee4f5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -1,8 +1,8 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedTransform -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/TrimPathType.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/TrimPathType.kt index 4a576171..e143a185 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/TrimPathType.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/TrimPathType.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.helpers +package io.github.alexzhirkevich.compottie.internal.helpers import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 16ac4107..c6996551 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.layers +package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -10,7 +10,7 @@ import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.utils.preConcat internal abstract class BaseLayer() : DrawingContent { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index ee4863e8..c0318b81 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -1,15 +1,15 @@ -package io.github.alexzhirkevich.compottie.internal.schema.layers +package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.unit.IntSize -import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode -import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 2c9de4fa..96df7fd2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,7 +1,7 @@ -package io.github.alexzhirkevich.compottie.internal.schema.layers +package io.github.alexzhirkevich.compottie.internal.layers import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index 78d07993..d934ae7f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -1,12 +1,12 @@ -package io.github.alexzhirkevich.compottie.internal.schema.layers +package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 75d19281..4326c905 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -1,16 +1,16 @@ -package io.github.alexzhirkevich.compottie.internal.schema.layers +package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import io.github.alexzhirkevich.compottie.internal.content.ContentGroup -import io.github.alexzhirkevich.compottie.internal.schema.effects.Effect -import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode -import io.github.alexzhirkevich.compottie.internal.schema.shapes.Shape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.findTransform +import io.github.alexzhirkevich.compottie.internal.effects.Effect +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.shapes.Shape +import io.github.alexzhirkevich.compottie.internal.shapes.findTransform import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt index 58218d0b..834f1541 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt @@ -1,9 +1,9 @@ -package io.github.alexzhirkevich.compottie.internal.schema.layers +package io.github.alexzhirkevich.compottie.internal.layers -import io.github.alexzhirkevich.compottie.internal.schema.helpers.LottieBlendMode -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 32b18f9d..10457809 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -5,9 +5,9 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientColors -import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.GradientColors +import io.github.alexzhirkevich.compottie.internal.animation.GradientType import kotlin.math.hypot private val CACHE_LIMIT = 15 diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt index 1e37572e..3cca5dc2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.services -import io.github.alexzhirkevich.compottie.internal.schema.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset internal class LottieAssetService( val maintainOriginalImageBounds : Boolean, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index b3394ac7..b489e135 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas @@ -16,7 +16,7 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 7de9b3d0..ebdf2c56 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -1,11 +1,11 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 213bcd4c..cd86a4f4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas @@ -10,9 +10,9 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 5fefb8f7..042d3cfd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas @@ -12,10 +12,10 @@ import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientColors -import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.GradientColors +import io.github.alexzhirkevich.compottie.internal.animation.GradientType import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index 1084245b..b5dc9202 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -1,14 +1,14 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Shader import io.github.alexzhirkevich.compottie.internal.platform.GradientShader -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientColors -import io.github.alexzhirkevich.compottie.internal.schema.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.GradientColors +import io.github.alexzhirkevich.compottie.internal.animation.GradientType import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index a2045327..a185a170 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -1,8 +1,8 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.PathAndDrawingContext -import io.github.alexzhirkevich.compottie.internal.schema.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.Transform import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index f5f9550b..59d792f6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathFillType @@ -7,8 +7,8 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedShape -import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape +import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 6c14f5d4..de6b39a8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Path @@ -6,9 +6,9 @@ import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.utils.Math import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index 6aa59aa9..96fd76e6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -1,13 +1,13 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index 4ea4a5d6..1d8ce4da 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -1,11 +1,11 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Offset import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.schema.helpers.CubicCurveData -import io.github.alexzhirkevich.compottie.internal.schema.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.helpers.CubicCurveData +import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData import io.github.alexzhirkevich.compottie.internal.utils.floorMod import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index 28889a57..96ac06cf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.Content import kotlinx.serialization.ExperimentalSerializationApi diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 6b6c559e..6f484fe1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -1,10 +1,10 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.schema.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index d1e0dc12..3d650331 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -1,10 +1,10 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ModifierContent -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedTransform -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt index c02367db..77d8226f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt @@ -1,8 +1,8 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes +package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.schema.helpers.TrimPathType -import io.github.alexzhirkevich.compottie.internal.schema.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.helpers.TrimPathType +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlin.contracts.ExperimentalContracts diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt index ae0512c8..0be34d91 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt @@ -1,8 +1,8 @@ -package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +package io.github.alexzhirkevich.compottie.internal.shapes.util import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape +import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape import io.github.alexzhirkevich.compottie.internal.utils.Utils internal class CompoundTrimPath { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt index a45505c6..78ebacef 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt @@ -1,4 +1,4 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +//package io.github.alexzhirkevich.compottie.internal.shapes.util // ///* // * Copyright 2022 The Android Open Source Project diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt index 3a6fe330..79027765 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt @@ -1,4 +1,4 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +//package io.github.alexzhirkevich.compottie.internal.shapes.util // ///* // * Copyright 2022 The Android Open Source Project diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt index 78d22069..c5d325ae 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt @@ -1,4 +1,4 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +//package io.github.alexzhirkevich.compottie.internal.shapes.util // //import androidx.compose.ui.geometry.Offset // diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt index 7c53e87d..964e550b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt @@ -1,4 +1,4 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +//package io.github.alexzhirkevich.compottie.internal.shapes.util // //import androidx.compose.ui.geometry.Offset //import kotlin.math.sqrt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt index 05a67506..2d1d3c06 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt @@ -1,4 +1,4 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +//package io.github.alexzhirkevich.compottie.internal.shapes.util // ///* // * Copyright 2022 The Android Open Source Project diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt index a6d6adca..7cfe0df2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt @@ -1,10 +1,10 @@ -//package io.github.alexzhirkevich.compottie.internal.schema.shapes.util +//package io.github.alexzhirkevich.compottie.internal.shapes.util // //import androidx.compose.ui.graphics.Path //import androidx.compose.ui.graphics.PathMeasure //import androidx.compose.ui.graphics.PathOperation //import io.github.alexzhirkevich.compottie.internal.platform.set -//import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPath +//import io.github.alexzhirkevich.compottie.internal.shapes.TrimPath //import kotlin.math.abs //import kotlin.math.max //import kotlin.math.min diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt index 5d1f66e1..da34f3b0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.schema.util +package io.github.alexzhirkevich.compottie.internal.util import androidx.compose.ui.geometry.Offset diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt index c156f024..04019bdf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -6,7 +6,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.schema.shapes.TrimPathShape +import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape import kotlin.math.abs import kotlin.math.max import kotlin.math.min From 5624a661ad03eb8c4feb712abda143ca33fd50ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 31 May 2024 20:35:32 +0300 Subject: [PATCH 011/100] disable workflow for dev branch --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c2dc51ba..dcedd451 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,9 +2,13 @@ name: Build on: push: + branches: + - main paths-ignore: - '**.md' pull_request: + branches: + - main paths-ignore: - '**.md' From d4dd9331c0d07e57192d8dea99f5092991fe0ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 1 Jun 2024 15:50:12 +0300 Subject: [PATCH 012/100] precomposition layer with time remapping --- .../internal/platform/Platform.android.kt | 11 + .../platform/PlatformCanvas.android.kt | 33 + .../platform/PlatformImage.android.kt | 3 +- .../alexzhirkevich/compottie/LottiePainter.kt | 19 +- .../compottie/internal/LottieJson.kt | 9 + .../compottie/internal/assets/LottieAsset.kt | 16 +- .../internal/content/ContentGroup.kt | 43 +- .../internal/content/DrawingContent.kt | 3 +- .../util => helpers}/CompoundTrimPath.kt | 2 +- .../compottie/internal/helpers/Mask.kt | 41 ++ .../compottie/internal/helpers/ShapeData.kt | 7 +- .../compottie/internal/layers/BaseLayer.kt | 375 +++++++++- .../compottie/internal/layers/ImageLayer.kt | 59 +- .../compottie/internal/layers/Layer.kt | 3 + .../compottie/internal/layers/NullLayer.kt | 7 +- .../internal/layers/PrecompositionLayer.kt | 128 ++++ .../compottie/internal/layers/ShapeLayer.kt | 9 +- .../compottie/internal/layers/VisualLayer.kt | 3 + .../compottie/internal/platform/Platform.kt | 5 + .../internal/platform/PlatformCanvas.kt | 29 + .../internal/shapes/BaseStrokeShape.kt | 51 +- .../compottie/internal/shapes/EllipseShape.kt | 2 +- .../compottie/internal/shapes/FillShape.kt | 13 +- .../internal/shapes/GradientFillShape.kt | 7 +- .../internal/shapes/GradientStrokeShape.kt | 5 +- .../compottie/internal/shapes/PathShape.kt | 2 +- .../internal/shapes/PolystarShape.kt | 2 +- .../compottie/internal/shapes/RectShape.kt | 2 +- .../internal/shapes/SolidStrokeShape.kt | 5 +- .../internal/shapes/util/CornerRounding.kt | 64 -- .../compottie/internal/shapes/util/Cubic.kt | 437 ------------ .../compottie/internal/shapes/util/Feature.kt | 83 --- .../compottie/internal/shapes/util/Point.kt | 84 --- .../internal/shapes/util/RoundedPolygon.kt | 664 ------------------ .../compottie/internal/shapes/util/Utils.kt | 115 --- .../compottie/internal/utils/MutableRect.kt | 21 +- .../compottie/internal/utils/Utils.kt | 14 + .../internal/platform/Platform.skiko.kt | 4 + .../internal/platform/PlatformCanvas.skiko.kt | 21 + .../files/precomp_with_remapping.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 3 +- 41 files changed, 839 insertions(+), 1566 deletions(-) create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.android.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{shapes/util => helpers}/CompoundTrimPath.kt (90%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt create mode 100644 example/shared/src/commonMain/composeResources/files/precomp_with_remapping.json diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt new file mode 100644 index 00000000..ef128627 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt @@ -0,0 +1,11 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import android.os.Build +import androidx.annotation.ChecksSdkIntAtLeast + +@ChecksSdkIntAtLeast(parameter = 0) +internal actual fun isAndroidAtLeast(code : Int) : Boolean = Build.VERSION.SDK_INT >= code + + +@ChecksSdkIntAtLeast(parameter = 0) +internal actual fun isAndroidAtMost(code : Int) : Boolean = Build.VERSION.SDK_INT <= code diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.android.kt new file mode 100644 index 00000000..46f7f963 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.android.kt @@ -0,0 +1,33 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import android.os.Build +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.nativeCanvas +import androidx.compose.ui.graphics.setFrom + +internal actual fun Canvas.getMatrix(matrix: Matrix) = + matrix.setFrom(nativeCanvas.matrix) + +internal actual fun Canvas.saveLayer(rect : MutableRect, paint : Paint, flag : Int) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + nativeCanvas.saveLayer( + /* left = */ rect.left, + /* top = */ rect.top, + /* right = */ rect.right, + /* bottom = */ rect.bottom, + /* paint = */ paint.asFrameworkPaint(), + /* saveFlags = */ flag + ) + } else { + nativeCanvas.saveLayer( + /* left = */ rect.left, + /* top = */rect.top, + /* right = */rect.right, + /* bottom = */rect.bottom, + /* paint = */paint.asFrameworkPaint() + ) + } +} diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt index b9eaa8f6..6c565968 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt @@ -6,4 +6,5 @@ import androidx.compose.ui.graphics.asImageBitmap internal actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { return BitmapFactory.decodeByteArray(bytes, 0, bytes.size).asImageBitmap() -} \ No newline at end of file +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index a8b896ad..3d8dfd6b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -139,6 +139,7 @@ private class LottiePainter( init { composition.lottieData.layers.fastForEach { it.serviceLocator = serviceLocator + it.composition = composition } } @@ -169,16 +170,14 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { - drawIntoCanvas { canvas -> - composition.lottieData.layers.fastForEachReversed { - if (it is DrawingContent) { - it.density = density - try { - it.draw(canvas, matrix, alpha, currentFrame) - } catch (t: Throwable) { - println("Lottie crashed in draw :(") - t.printStackTrace() - } + composition.lottieData.layers.fastForEachReversed { + if (it is DrawingContent) { + it.density = density + try { + it.draw(this, matrix, alpha, currentFrame) + } catch (t: Throwable) { + println("Lottie crashed in draw :(") + t.printStackTrace() } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 7ef5459e..469820fb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -4,10 +4,12 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.layers.NullLayer import io.github.alexzhirkevich.compottie.internal.layers.ShapeLayer import io.github.alexzhirkevich.compottie.internal.layers.ImageLayer +import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer import io.github.alexzhirkevich.compottie.internal.shapes.EllipseShape import io.github.alexzhirkevich.compottie.internal.shapes.FillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientFillShape @@ -42,12 +44,19 @@ internal val LottieJson by lazy { subclass(ShapeLayer::class) subclass(NullLayer::class) subclass(ImageLayer::class) + subclass(PrecompositionLayer::class) defaultDeserializer { NullLayer.serializer() } } + polymorphic(LottieAsset::class){ + subclass(LottieAsset.ImageAsset::class) + subclass(LottieAsset.PrecompositionAsset::class) + subclass(LottieAsset.EmptyAsset::class) + } + polymorphic(Shape::class) { subclass(EllipseShape::class) subclass(FillShape::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt index c3e134d1..793129df 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt @@ -6,6 +6,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -20,7 +21,6 @@ import kotlin.io.encoding.ExperimentalEncodingApi internal sealed interface LottieAsset { val id: String - val name: String? @Serializable class ImageAsset( @@ -39,7 +39,7 @@ internal sealed interface LottieAsset { override val slotId: String? = null, @SerialName("nm") - override val name: String? = null, + val name: String? = null, @SerialName("e") override val embedded: BooleanInt = BooleanInt.No, @@ -78,12 +78,15 @@ internal sealed interface LottieAsset { } @Serializable - class EmptyAsset( - @SerialName("id") + class PrecompositionAsset( override val id: String, + val layers : List + ) : LottieAsset - @SerialName("nm") - override val name: String? = null, + @Serializable + class EmptyAsset( + @SerialName("id") + override val id: String = "", ) : LottieAsset } @@ -109,6 +112,7 @@ internal class AssetSerializer : JsonContentPolymorphicSerializer(L override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + "layers" in element.jsonObject.keys -> LottieAsset.PrecompositionAsset.serializer() "p" in element.jsonObject.keys -> LottieAsset.ImageAsset.serializer() else -> LottieAsset.EmptyAsset.serializer() } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 59644d94..072dc73a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -2,10 +2,12 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.toRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform @@ -29,8 +31,7 @@ internal class ContentGroup( private val boundsRect = MutableRect(0f,0f,0f,0f) - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { - + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { if (hidden) { return @@ -47,26 +48,28 @@ internal class ContentGroup( } } - val isRenderingWithOffScreen = false//hasTwoOrMoreDrawableContent() + //TODO: doesn't work, something wrong with getBounds + val isRenderingWithOffScreen = false//hasTwoOrMoreDrawableContent() && layerAlpha != 1f - if (isRenderingWithOffScreen) { - offscreenRect.set(0f, 0f, 0f, 0f) - getBounds(offscreenRect, matrix, true, frame) - offscreenPaint.alpha = layerAlpha - Utils.saveLayerCompat(canvas, offscreenRect.toRect(), offscreenPaint) - } + drawScope.drawIntoCanvas { canvas -> + if (isRenderingWithOffScreen) { + offscreenRect.set(0f, 0f, 0f, 0f) + getBounds(offscreenRect, matrix, true, frame) + offscreenPaint.alpha = layerAlpha + Utils.saveLayerCompat(canvas, offscreenRect.toRect(), offscreenPaint) + } - val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha + val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha - for (i in contents.indices.reversed()) { - val content: Any = contents[i] - if (content is DrawingContent) { - content.draw(canvas, matrix, childAlpha, frame) + contents.fastForEachReversed { content -> + if (content is DrawingContent) { + content.draw(drawScope, matrix, childAlpha, frame) + } } - } - if (isRenderingWithOffScreen) { - canvas.restore() + if (isRenderingWithOffScreen) { + canvas.restore() + } } } @@ -126,8 +129,8 @@ internal class ContentGroup( private fun hasTwoOrMoreDrawableContent(): Boolean { var drawableContentCount = 0 - for (i in contents.indices) { - if (contents[i] is DrawingContent) { + contents.fastForEach { + if (it is DrawingContent) { drawableContentCount += 1 if (drawableContentCount >= 2) { return true diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt index 9edcd782..9fb768fe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt @@ -3,9 +3,10 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.drawscope.DrawScope internal interface DrawingContent : Content { - fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) + fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) fun getBounds(outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, frame: Float) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt similarity index 90% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt index 0be34d91..0a7100fb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt @@ -1,4 +1,4 @@ -package io.github.alexzhirkevich.compottie.internal.shapes.util +package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt new file mode 100644 index 00000000..28525088 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -0,0 +1,41 @@ +package io.github.alexzhirkevich.compottie.internal.helpers + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +internal class Mask( + + @SerialName("inv") + val isInverted : Boolean = false, + + @SerialName("pt") + val shape : AnimatedShape? = null, + + @SerialName("o") + val opacity : AnimatedValue? = null, + + @SerialName("mode") + val mode : MaskMode = MaskMode.Intersect, + + @SerialName("x") + val expand: AnimatedValue? = null +) + +@Serializable +@JvmInline +internal value class MaskMode(val type : String) { + + companion object { + val None = MaskMode("n") + val Add = MaskMode("a") + val Subtract = MaskMode("s") + val Intersect = MaskMode("i") + val Lighten = MaskMode("l") + val Darken = MaskMode("d") + val Difference = MaskMode("f") + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt index 6553ed8a..6125c32b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.lerp import kotlin.math.min @@ -71,13 +72,13 @@ internal fun ShapeData.mapPath(outPath : Path) { outPath.moveTo(initialPoint.x, initialPoint.y) var pathFromDataCurrentPoint = initialPoint - for (i in curves.indices) { - val curveData = curves[i] + + curves.fastForEach { curveData -> val cp1 = curveData.controlPoint1 val cp2 = curveData.controlPoint2 val vertex = curveData.vertex - if (cp1 == pathFromDataCurrentPoint&& cp2 == vertex) { + if (cp1 == pathFromDataCurrentPoint && cp2 == vertex) { // On some phones like Samsung phones, zero valued control points can cause artifacting. // https://github.com/airbnb/lottie-android/issues/275 // diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index c6996551..92b71231 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -4,41 +4,88 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.isIdentity +import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent -import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator +import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.platform.drawRect +import io.github.alexzhirkevich.compottie.internal.platform.getMatrix +import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost +import io.github.alexzhirkevich.compottie.internal.platform.saveLayer +import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator +import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.utils.intersect +import io.github.alexzhirkevich.compottie.internal.utils.overlaps import io.github.alexzhirkevich.compottie.internal.utils.preConcat +import io.github.alexzhirkevich.compottie.internal.utils.set +import kotlin.math.max +import kotlin.math.min -internal abstract class BaseLayer() : DrawingContent { +internal abstract class BaseLayer() : Layer, DrawingContent { - abstract val transform: Transform + abstract val masks: List? - private val matrix = Matrix() + abstract val transform: Transform + override var density by mutableStateOf(1f) + override var serviceLocator: LottieServiceLocator? = null + override lateinit var composition : LottieComposition protected val boundsMatrix = Matrix() + protected val path = Path() - private val rect = MutableRect(0f,0f,0f,0f) + private val matrix = Matrix() + private val canvasMatrix = Matrix() + private val canvasBounds = MutableRect(0f, 0f, 0f, 0f) + private val contentPaint = Paint().apply { + isAntiAlias = true + } + private val clearPaint = Paint().apply { + blendMode = BlendMode.Clear + } - private var parentLayers : MutableList? = null + private val dstInPaint = Paint().apply { + blendMode = BlendMode.DstIn + isAntiAlias = true + } - private var parentLayer: BaseLayer? = null + private val dstOutPaint = Paint().apply { + blendMode = BlendMode.DstOut + isAntiAlias = true + } - var serviceLocator : LottieServiceLocator? = null + private val maskBoundsRect = MutableRect(0f, 0f, 0f, 0f) + private val rect = MutableRect(0f, 0f, 0f, 0f) + private var parentLayers: MutableList? = null - var density by mutableStateOf(1f) + private var parentLayer: BaseLayer? = null abstract fun drawLayer( - canvas: Canvas, + drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float, ) - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { buildParentLayerListIfNeeded() matrix.reset() @@ -53,10 +100,86 @@ internal abstract class BaseLayer() : DrawingContent { alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) } + if (!hasMask()) { + matrix.preConcat(transform.matrix(frame)) + drawLayer(drawScope, matrix, alpha, frame) + return + } + + getBounds(rect, matrix, false, frame); + +// intersectBoundsWithMatte(rect, parentMatrix) + matrix.preConcat(transform.matrix(frame)) - drawLayer(canvas, matrix, alpha, frame) - } + intersectBoundsWithMask(rect, matrix, frame) + // Intersect the mask and matte rect with the canvas bounds. + // If the canvas has a transform, then we need to transform its bounds by its matrix + // so that we know the coordinate space that the canvas is showing. + canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) + + drawScope.drawIntoCanvas { canvas -> + canvas.getMatrix(canvasMatrix) + if (!canvasMatrix.isIdentity()) { + canvasMatrix.invert() + canvasMatrix.map(canvasBounds) + } + if (rect.overlaps(canvasBounds)) { + rect.intersect(canvasBounds) + } else { + rect.set(0f, 0f, 0f, 0f) + } + + // Ensure that what we are drawing is >=1px of width and height. + // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. + // https://github.com/airbnb/lottie-android/issues/1625 + if (rect.width >= 1f && rect.height >= 1f) { + contentPaint.alpha = 1f + Utils.saveLayerCompat(canvas, rect, contentPaint) + + // Clear the off screen buffer. This is necessary for some phones. + clearCanvas(canvas) + drawLayer(drawScope, matrix, alpha, frame) + + if (hasMask()) { + applyMasks(canvas, matrix, frame) + } + +// if (hasMatteOnThisLayer()) { +// if (L.isTraceEnabled()) { +// L.beginSection("Layer#drawMatte") +// L.beginSection("Layer#saveLayer") +// } +// Utils.saveLayerCompat(canvas, rect, mattePaint, BaseLayer.SAVE_FLAGS) +// if (L.isTraceEnabled()) { +// L.endSection("Layer#saveLayer") +// } +// clearCanvas(canvas) +// matteLayer.draw(canvas, parentMatrix, alpha) +// if (L.isTraceEnabled()) { +// L.beginSection("Layer#restoreLayer") +// } +// canvas.restore() +// if (L.isTraceEnabled()) { +// L.endSection("Layer#restoreLayer") +// L.endSection("Layer#drawMatte") +// } +// } + + canvas.restore() + } + +// if (outlineMasksAndMattes && outlineMasksAndMattesPaint != null) { +// outlineMasksAndMattesPaint.setStyle(android.graphics.Paint.Style.STROKE) +// outlineMasksAndMattesPaint.setColor(-0x3d7fd) +// outlineMasksAndMattesPaint.setStrokeWidth(4f) +// canvas.drawRect(rect, outlineMasksAndMattesPaint) +// outlineMasksAndMattesPaint.setStyle(android.graphics.Paint.Style.FILL) +// outlineMasksAndMattesPaint.setColor(0x50EBEBEB) +// canvas.drawRect(rect, outlineMasksAndMattesPaint) +// } + } + } override fun getBounds( outBounds: MutableRect, @@ -85,7 +208,7 @@ internal abstract class BaseLayer() : DrawingContent { //do nothing } - fun setParentLayer(layer: BaseLayer){ + fun setParentLayer(layer: BaseLayer) { this.parentLayer = layer } @@ -105,4 +228,228 @@ internal abstract class BaseLayer() : DrawingContent { layer = layer.parentLayer } } + + protected fun hasMask(): Boolean = !masks.isNullOrEmpty() + + private fun clearCanvas(canvas: Canvas) { + // If we don't pad the clear draw, some phones leave a 1px border of the graphics buffer. + canvas.drawRect( + rect.left - 1, + rect.top - 1, + rect.right + 1, + rect.bottom + 1, + clearPaint + ) + } + + private fun intersectBoundsWithMask(rect: MutableRect, matrix: Matrix, frame: Float) { + maskBoundsRect.set(0f, 0f, 0f, 0f) + + if (!hasMask()) { + return + } + + val mMasks = this.masks + val size: Int = mMasks!!.size + + this.masks?.fastForEachIndexed { i, mask -> + + val maskPath = mask.shape?.interpolated(frame) ?: return@fastForEachIndexed + + path.set(maskPath) + path.transform(matrix) + + when (mask.mode) { + MaskMode.None, + MaskMode.Subtract -> + // If there is a subtract mask, the mask could potentially be the size of the entire + // canvas so we can't use the mask bounds. + return + + MaskMode.Intersect, + MaskMode.Add -> { + if (mask.isInverted) { + return + } + val tempMaskBoundsRect = path.getBounds() + // As we iterate through the masks, we want to calculate the union region of the masks. + // We initialize the rect with the first mask. If we don't call set() on the first call, + // the rect will always extend to (0,0). + if (i == 0) { + maskBoundsRect.set(tempMaskBoundsRect) + } else { + maskBoundsRect.set( + min(maskBoundsRect.left, tempMaskBoundsRect.left), + min(maskBoundsRect.top, tempMaskBoundsRect.top), + max(maskBoundsRect.right, tempMaskBoundsRect.right), + max(maskBoundsRect.bottom, tempMaskBoundsRect.bottom) + ) + } + } + + else -> { + val tempMaskBoundsRect = path.getBounds() + if (i == 0) { + maskBoundsRect.set(tempMaskBoundsRect) + } else { + maskBoundsRect.set( + min(maskBoundsRect.left, tempMaskBoundsRect.left), + min(maskBoundsRect.top, tempMaskBoundsRect.top), + max(maskBoundsRect.right, tempMaskBoundsRect.right), + max(maskBoundsRect.bottom, tempMaskBoundsRect.bottom) + ) + } + } + } + } + + if (rect.overlaps(maskBoundsRect)) { + rect.intersect(maskBoundsRect) + } else { + rect.set(0f, 0f, 0f, 0f) + } + } + + private fun applyMasks(canvas: Canvas, matrix: Matrix, frame: Float) { + canvas.saveLayer(rect, dstInPaint, SAVE_FLAGS) + + if (isAndroidAtMost(27)) { + clearCanvas(canvas) + } + + masks?.fastForEachIndexed { i, mask -> + + when (mask.mode) { + MaskMode.None -> // None mask should have no effect. If all masks are NONE, fill the + // mask canvas with a rectangle so it fully covers the original layer content. + // However, if there are other masks, they should be the only ones that have an effect so + // this should noop. + if (this.masks!!.all { it.mode == MaskMode.None }) { + contentPaint.alpha = 1f + canvas.drawRect(rect, contentPaint) + } + + MaskMode.Add -> if (mask.isInverted) { + applyInvertedAddMask(canvas, matrix, mask, frame) + } else { + applyAddMask(canvas, matrix, mask, frame) + } + + MaskMode.Subtract -> { + if (i == 0) { + contentPaint.color = Color.Black + contentPaint.alpha = 1f + canvas.drawRect(rect, contentPaint) + } + if (mask.isInverted) { + applyInvertedSubtractMask(canvas, matrix, mask, frame) + } else { + applySubtractMask(canvas, matrix, mask, frame) + } + } + + MaskMode.Intersect -> if (mask.isInverted) { + applyInvertedIntersectMask(canvas, matrix, mask, frame) + } else { + applyIntersectMask(canvas, matrix, mask, frame) + } + } + } + canvas.restore() + } + + private fun applyInvertedAddMask( + canvas: Canvas, + matrix: Matrix, + mask: Mask, + frame: Float + ) { + Utils.saveLayerCompat(canvas, rect, contentPaint) + canvas.drawRect(rect, contentPaint) + val maskPath = mask.shape?.interpolated(frame) ?: return + path.set(maskPath) + path.transform(matrix) + contentPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + canvas.drawPath(path, dstOutPaint) + canvas.restore() + } + + private fun applyAddMask( + canvas: Canvas, + matrix: Matrix, + mask: Mask, + frame: Float + ) { + val maskPath = mask.shape?.interpolated(frame) ?: return + path.set(maskPath) + path.transform(matrix) + contentPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + canvas.drawPath(path, contentPaint) + } + + private fun applySubtractMask( + canvas: Canvas, + matrix: Matrix, + mask: Mask, + frame: Float + ) { + val maskPath = mask.shape?.interpolated(frame) ?: return + path.set(maskPath) + path.transform(matrix) + canvas.drawPath(path, dstOutPaint) + } + + private fun applyInvertedSubtractMask( + canvas: Canvas, + matrix: Matrix, + mask: Mask, + frame: Float + ) { + Utils.saveLayerCompat(canvas, rect, dstOutPaint) + canvas.drawRect(rect, contentPaint) + dstOutPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + val maskPath = mask.shape?.interpolated(frame) ?: return + path.set(maskPath) + path.transform(matrix) + canvas.drawPath(path, dstOutPaint) + canvas.restore() + } + + private fun applyIntersectMask( + canvas: Canvas, + matrix: Matrix, + mask: Mask, + frame: Float + ) { + Utils.saveLayerCompat(canvas, rect, dstInPaint) + val maskPath = mask.shape?.interpolated(frame) ?: return + path.set(maskPath) + path.transform(matrix) + contentPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + canvas.drawPath(path, contentPaint) + canvas.restore() + } + + private fun applyInvertedIntersectMask( + canvas: Canvas, + matrix: Matrix, + mask: Mask, + frame: Float + ) { + Utils.saveLayerCompat(canvas, rect, dstInPaint) + canvas.drawRect(rect, contentPaint) + dstOutPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + val maskPath = mask.shape?.interpolated(frame) ?: return + path.set(maskPath) + path.transform(matrix) + canvas.drawPath(path, dstOutPaint) + canvas.restore() + } + } + +private const val CLIP_SAVE_FLAG = 0x02 +private const val CLIP_TO_LAYER_SAVE_FLAG = 0x10 +private const val MATRIX_SAVE_FLAG = 0x01 +private const val SAVE_FLAGS = CLIP_SAVE_FLAG or CLIP_TO_LAYER_SAVE_FLAG or MATRIX_SAVE_FLAG + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index c0318b81..b8310da9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -4,12 +4,15 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -73,9 +76,13 @@ internal class ImageLayer( @SerialName("ct") override val collapseTransform: BooleanInt = BooleanInt.No, + @SerialName("masksProperties") + override val masks: List? = null, + @SerialName("refId") - val refId : String -) : BaseLayer(), VisualLayer { + val refId : String, + + ) : BaseLayer(), VisualLayer { @Transient private val src = MutableRect(0f,0f,0f,0f) @@ -94,7 +101,7 @@ internal class ImageLayer( service?.asset(refId) as? LottieAsset.ImageAsset } - override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { val mAsset = asset ?: return val bitmap = mAsset.bitmap ?: return @@ -102,25 +109,35 @@ internal class ImageLayer( paint.alpha = parentAlpha - canvas.save() - canvas.concat(parentMatrix) - src.set(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat()) - - val dstSize = if (maintainOriginalImageBounds){ - IntSize((mAsset.width * density).roundToInt(), (mAsset.height * density).roundToInt()) - } else { - IntSize((bitmap.width * density).roundToInt(), (bitmap.height * density).roundToInt()) + drawScope.drawIntoCanvas { canvas -> + + canvas.save() + canvas.concat(parentMatrix) + src.set(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat()) + + val dstSize = if (maintainOriginalImageBounds) { + IntSize( + (mAsset.width * density).roundToInt(), + (mAsset.height * density).roundToInt() + ) + } else { + IntSize( + (bitmap.width * density).roundToInt(), + (bitmap.height * density).roundToInt() + ) + } + + val srcSize = + IntSize((bitmap.width * density).toInt(), (bitmap.height * density).toInt()) + + canvas.drawImageRect( + bitmap, + srcSize = srcSize, + dstSize = dstSize, + paint = paint + ) + canvas.restore() } - - val srcSize = IntSize((bitmap.width * density).toInt(), (bitmap.height * density).toInt()) - - canvas.drawImageRect( - bitmap, - srcSize = srcSize, - dstSize = dstSize, - paint = paint - ) - canvas.restore() } override fun getBounds( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 96df7fd2..5e656eda 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.layers +import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.ExperimentalSerializationApi @@ -27,6 +28,8 @@ internal sealed interface Layer { val name : String? + var composition : LottieComposition + var serviceLocator : LottieServiceLocator? var density : Float diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index d934ae7f..a1385bcc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -3,9 +3,11 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -66,9 +68,12 @@ internal class NullLayer( @SerialName("ct") override val collapseTransform: BooleanInt = BooleanInt.No, + + @SerialName("masksProperties") + override val masks: List? = null, ) : BaseLayer(), VisualLayer { - override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { } override fun getBounds( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt new file mode 100644 index 00000000..3e3b151f --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -0,0 +1,128 @@ +package io.github.alexzhirkevich.compottie.internal.layers + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.platform.clipRect +import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService +import io.github.alexzhirkevich.compottie.internal.utils.Utils +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@SerialName("0") +@Serializable +internal class PrecompositionLayer( + val refId : String, + + @SerialName("w") + val width : Float, + + @SerialName("h") + val height : Float, + + @SerialName("tm") + val timeRemapping : AnimatedValue? = null, + + @SerialName("ddd") + override val is3d: BooleanInt = BooleanInt.No, + + @SerialName("ind") + override val index: Int? = null, + + @SerialName("ip") + override val inPoint: Float? = null, + + @SerialName("op") + override val outPoint: Float? = null, + + @SerialName("st") + override val startTime: Int? = null, + + @SerialName("nm") + override val name: String? = null, + + @SerialName("sr") + override val stretch: Float = 1f, + + @SerialName("parent") + override val parent: Int? = null, + + @SerialName("hd") + override val hidden: Boolean = false, + + @SerialName("masksProperties") + override val masks: List? = null, + + @SerialName("ks") + override val transform: Transform, +) : BaseLayer() { + + @Transient + private val newClipRect = MutableRect(0f,0f,0f,0f) + + @Transient + private val layerPaint = Paint() + + private val layers by lazy { + val a = serviceLocator?.get()?.asset(refId) + (a as? LottieAsset.PrecompositionAsset?)?.layers + } + + override fun drawLayer( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { + + newClipRect.set(0f, 0f, width, height) + parentMatrix.map(newClipRect) + + // Apply off-screen rendering only when needed in order to improve rendering performance. + val isDrawingWithOffScreen = false + + drawScope.drawIntoCanvas { canvas -> + + if (isDrawingWithOffScreen) { + layerPaint.alpha = parentAlpha + Utils.saveLayerCompat(canvas, newClipRect, layerPaint) + } else { + canvas.save() + } + + val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha + + layers?.fastForEachReversed { layer -> + // Only clip precomps. This mimics the way After Effects renders animations. + val ignoreClipOnThisLayer = "__container" == layer.name + + if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { + canvas.clipRect(newClipRect) + } + + (layer as? DrawingContent)?.draw(drawScope, parentMatrix, childAlpha, remappedFrame(frame)) + } + + canvas.restore() + } + } + + private fun remappedFrame(frame: Float) : Float{ + + if (timeRemapping == null) + return frame + + return timeRemapping.interpolated(frame) * + composition.frameRate + composition.startFrame + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 4326c905..b5d921e6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -3,11 +3,13 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.effects.Effect import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.shapes.Shape import io.github.alexzhirkevich.compottie.internal.shapes.findTransform @@ -78,6 +80,9 @@ internal class ShapeLayer( @SerialName("ct") override val collapseTransform: BooleanInt = BooleanInt.No, + + @SerialName("masksProperties") + override val masks: List? = null, ) : BaseLayer(), VisualLayer { @Transient @@ -93,8 +98,8 @@ internal class ShapeLayer( setContents(emptyList(), emptyList()) } - override fun drawLayer(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { - contentGroup.draw(canvas, parentMatrix, parentAlpha, frame) + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + contentGroup.draw(drawScope, parentMatrix, parentAlpha, frame) } override fun getBounds( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt index 834f1541..a9ded47a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator @@ -28,6 +29,8 @@ internal sealed interface VisualLayer : Layer { val htmlId : String? val collapseTransform : BooleanInt + + val masks : List? } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt new file mode 100644 index 00000000..b5b9e247 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +internal expect fun isAndroidAtLeast(code : Int) : Boolean +internal expect fun isAndroidAtMost(code : Int) : Boolean + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt new file mode 100644 index 00000000..48b4d472 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt @@ -0,0 +1,29 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint + +internal fun Canvas.drawRect(rect: MutableRect, paint: Paint) = + drawRect( + left = rect.left, + top = rect.top, + right = rect.right, + bottom = rect.bottom, + paint = paint + ) + +internal fun Canvas.clipRect(rect: MutableRect) { + clipRect( + left = rect.left, + top = rect.top, + right = rect.right, + bottom = rect.bottom, + ) +} + + +internal expect fun Canvas.getMatrix(matrix: Matrix) + +internal expect fun Canvas.saveLayer(rect : MutableRect, paint : Paint, flag : Int) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index b489e135..a53170df 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -8,6 +8,8 @@ import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.StrokeJoin +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.content.Content @@ -66,15 +68,15 @@ internal abstract class BaseStrokeShape() : DrawingContent { abstract val opacity: AnimatedValue abstract val strokeWidth: AnimatedValue - abstract val lineCap : LineCap - abstract val lineJoin : LineJoin - abstract val strokeMiter : Float + abstract val lineCap: LineCap + abstract val lineJoin: LineJoin + abstract val strokeMiter: Float private val pathGroups = mutableListOf() private val trimPathPath = Path() private val path = Path() - private val rect = MutableRect(0f,0f,0f,0f) + private val rect = MutableRect(0f, 0f, 0f, 0f) protected val paint = Paint().apply { strokeMiterLimit = strokeMiter strokeCap = lineCap.asStrokeCap() @@ -82,26 +84,33 @@ internal abstract class BaseStrokeShape() : DrawingContent { } private val pm = ExtendedPathMeasure() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { paint.style = PaintingStyle.Stroke - paint.alpha = parentAlpha * (opacity.interpolated(frame) / 100f).coerceIn(0f,1f) + paint.alpha = parentAlpha * (opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) paint.strokeWidth = strokeWidth.interpolated(frame) if (paint.strokeWidth <= 0) { return } + drawScope.drawIntoCanvas { canvas -> - pathGroups.fastForEach { pathGroup -> + pathGroups.fastForEach { pathGroup -> - if (pathGroup.trimPath != null) { - applyTrimPath(canvas, frame, pathGroup, parentMatrix) - } else { - path.reset() - pathGroup.paths.fastForEachReversed { - path.addPath(it.getPath(frame), parentMatrix) + if (pathGroup.trimPath != null) { + applyTrimPath(canvas, frame, pathGroup, parentMatrix) + } else { + path.reset() + pathGroup.paths.fastForEachReversed { + path.addPath(it.getPath(frame), parentMatrix) + } + canvas.drawPath(path, paint) } - canvas.drawPath(path, paint) } } } @@ -167,15 +176,14 @@ internal abstract class BaseStrokeShape() : DrawingContent { frame: Float, ) { path.reset() - for (i in pathGroups.indices) { - val pathGroup = pathGroups[i] - for (j in pathGroup.paths.indices) { - path.addPath(pathGroup.paths[j].getPath(frame), parentMatrix) + pathGroups.fastForEach { pathGroup -> + pathGroup.paths.fastForEach { + path.addPath(it.getPath(frame), parentMatrix) } } rect.set(path.getBounds()) - val width = strokeWidth.interpolated(frame) + val width = strokeWidth.interpolated(frame) rect.set( rect.left - width / 2f, rect.top - width / 2f, @@ -231,8 +239,9 @@ internal abstract class BaseStrokeShape() : DrawingContent { ).toFloat() var currentLength = 0f - for (j in pathGroup.paths.indices.reversed()) { - trimPathPath.set(pathGroup.paths[j].getPath(time)) + + pathGroup.paths.fastForEachReversed { + trimPathPath.set(it.getPath(time)) trimPathPath.transform(parentMatrix) pm.setPath(trimPathPath, false) val length: Float = pm.length diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index ebdf2c56..310aa1d1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -5,7 +5,7 @@ import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index cd86a4f4..2b6638fb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -5,6 +5,8 @@ import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent @@ -49,7 +51,7 @@ internal class FillShape( private val paint = Paint() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { if (hidden) { return @@ -63,11 +65,12 @@ internal class FillShape( path.reset() - for (i in paths.indices) { - path.addPath(paths[i].getPath(frame), parentMatrix) + paths.fastForEach { + path.addPath(it.getPath(frame), parentMatrix) + } + drawScope.drawIntoCanvas { canvas -> + canvas.drawPath(path, paint) } - - canvas.drawPath(path, paint) } override fun getBounds( outBounds: MutableRect, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 042d3cfd..05b5c5b6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -6,6 +6,8 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.Shader +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent @@ -76,7 +78,7 @@ internal class GradientFillShape( private val gradientCache = LinkedHashMap() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { paint.alpha = if (opacity != null) { (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) @@ -94,6 +96,9 @@ internal class GradientFillShape( matrix = parentMatrix, cache = gradientCache ) + drawScope.drawIntoCanvas { + it.drawPath(path, paint) + } } override fun getBounds( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index b5dc9202..c969af67 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Shader +import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 @@ -72,7 +73,7 @@ internal class GradientStrokeShape( @Transient private val gradientCache = LinkedHashMap() - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { getBounds(boundsRect, parentMatrix, false, frame) @@ -85,7 +86,7 @@ internal class GradientStrokeShape( matrix = parentMatrix, cache = gradientCache ) - super.draw(canvas, parentMatrix, parentAlpha, frame) + super.draw(drawScope, parentMatrix, parentAlpha, frame) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 59d792f6..09b4f6af 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -8,7 +8,7 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape -import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index de6b39a8..659cd2a1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -8,7 +8,7 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.utils.Math import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index 96fd76e6..ac215200 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -7,7 +7,7 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.shapes.util.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 6f484fe1..f9701b8d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue @@ -43,9 +44,9 @@ internal class SolidStrokeShape( val color : AnimatedColor, ) : BaseStrokeShape(), Shape { - override fun draw(canvas: Canvas, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw(drawScope : DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { paint.color = color.interpolated(frame) - super.draw(canvas, parentMatrix, parentAlpha, frame) + super.draw(drawScope, parentMatrix, parentAlpha, frame) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt deleted file mode 100644 index 78ebacef..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/CornerRounding.kt +++ /dev/null @@ -1,64 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.shapes.util -// -///* -// * Copyright 2022 The Android Open Source Project -// * -// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// * -// * http://www.apache.org/licenses/LICENSE-2.0 -// * -// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -// -///** -// * CornerRounding defines the amount and quality around a given vertex of a shape. -// * [radius] defines the radius of the circle which forms the basis of the rounding for the -// * vertex. [smoothing] defines the amount by which the curve is extended from the circular -// * arc around the corner to the edge between vertices. -// * -// * Each corner of a shape can be thought of as either: -// * -// *
  • unrounded (with a corner radius of 0 and no smoothing)
  • -// *
  • rounded with only a circular arc (with smoothing of 0). In this case, the rounding -// * around the corner follows an approximated circular arc between the edges to adjacent -// * vertices.
  • -// *
  • rounded with three curves: There is an inner circular arc and two symmetric flanking -// * curves. The flanking curves determine the curvature from the inner curve to the edges, -// * with a value of 0 (no smoothing) meaning that it is purely a circular curve and a value of 1 -// * meaning that the flanking curves are maximized between the inner curve and the edges. -// * -// * -// * @param radius a value of 0 or greater, representing the radius of the circle which defines -// * the inner rounding arc of the -// * corner. A value of 0 indicates that the corner is sharp, or completely unrounded. A positive -// * value is the requested size of the radius. Note that this radius is an absolute size that -// * should relate to the overall size of its shape. Thus if the shape is in screen coordinate -// * size, the radius should be sized appropriately. If the shape is in some canonical form -// * (bounds of (-1,-1) to (1,1), for example, which is the default when creating a [RoundedPolygon] -// * from a number of vertices), then the radius should be relative to that size. The radius will be -// * scaled if the shape itself is transformed, since it will produce curves which round the corner -// * and thus get transformed along with the overall shape. -// * @param smoothing the amount by which the arc is "smoothed" by extending the curve from -// * the inner circular arc to the edge between vertices. A value of 0 (no smoothing) indicates -// * that the corner is rounded by only a circular arc; there are no flanking curves. A value -// * of 1 indicates that there is no circular arc in the center; the flanking curves on either side -// * meet at the middle. -// */ -//class CornerRounding( -// /*@FloatRange(from = 0.0) */val radius: Float = 0f, -// /*@FloatRange(from = 0.0, to = 1.0) */val smoothing: Float = 0f -//) { -// -// companion object { -// /** -// * [Unrounded] has a rounding radius of zero, producing a sharp corner at a vertex. -// */ -// val Unrounded = CornerRounding() -// } -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt deleted file mode 100644 index 79027765..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Cubic.kt +++ /dev/null @@ -1,437 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.shapes.util -// -///* -// * Copyright 2022 The Android Open Source Project -// * -// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// * -// * http://www.apache.org/licenses/LICENSE-2.0 -// * -// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -// -//import androidx.compose.ui.geometry.Offset -//import kotlin.math.abs -//import kotlin.math.max -//import kotlin.math.min -//import kotlin.math.sqrt -// -///** -// * This class holds the anchor and control point data for a single cubic Bézier curve, -// * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end -// * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining -// * the slope of the curve between the anchor points. -// */ -//open class Cubic internal constructor(internal val points: FloatArray = FloatArray(8)) { -// init { -// require(points.size == 8) { "Points array size should be 8" } -// } -// -// /** -// * The first anchor point x coordinate -// */ -// val anchor0X get() = points[0] -// -// /** -// * The first anchor point y coordinate -// */ -// val anchor0Y get() = points[1] -// -// /** -// * The first control point x coordinate -// */ -// val control0X get() = points[2] -// -// /** -// * The first control point y coordinate -// */ -// val control0Y get() = points[3] -// -// /** -// * The second control point x coordinate -// */ -// val control1X get() = points[4] -// -// /** -// * The second control point y coordinate -// */ -// val control1Y get() = points[5] -// -// /** -// * The second anchor point x coordinate -// */ -// val anchor1X get() = points[6] -// -// /** -// * The second anchor point y coordinate -// */ -// val anchor1Y get() = points[7] -// -// internal constructor(anchor0: Offset, control0: Offset, control1: Offset, anchor1: Offset) : -// this(floatArrayOf(anchor0.x, anchor0.y, control0.x, control0.y, -// control1.x, control1.y, anchor1.x, anchor1.y)) -// -// /** -// * Returns a point on the curve for parameter t, representing the proportional distance -// * along the curve between its starting point at anchor0 and ending point at anchor1. -// * -// * @param t The distance along the curve between the anchor points, where 0 is at anchor0 and -// * 1 is at anchor1 -// */ -// internal fun pointOnCurve(t: Float): Offset { -// val u = 1 - t -// return Offset(anchor0X * (u * u * u) + control0X * (3 * t * u * u) + -// control1X * (3 * t * t * u) + anchor1X * (t * t * t), -// anchor0Y * (u * u * u) + control0Y * (3 * t * u * u) + -// control1Y * (3 * t * t * u) + anchor1Y * (t * t * t) -// ) -// } -// -// internal fun zeroLength() = abs(anchor0X - anchor1X) < DistanceEpsilon && -// abs(anchor0Y - anchor1Y) < DistanceEpsilon -// -// private fun zeroIsh(value: Float) = abs(value) < DistanceEpsilon -// -// /** -// * This function returns the true bounds of this curve, filling [bounds] with the -// * axis-aligned bounding box values for left, top, right, and bottom, in that order. -// */ -// internal fun calculateBounds( -// bounds: FloatArray = FloatArray(4), -// approximate: Boolean = false -// ) { -// -// // A curve might be of zero-length, with both anchors co-lated. -// // Just return the point itself. -// if (zeroLength()) { -// bounds[0] = anchor0X -// bounds[1] = anchor0Y -// bounds[2] = anchor0X -// bounds[3] = anchor0Y -// return -// } -// -// var minX = min(anchor0X, anchor1X) -// var minY = min(anchor0Y, anchor1Y) -// var maxX = max(anchor0X, anchor1X) -// var maxY = max(anchor0Y, anchor1Y) -// -// if (approximate) { -// // Approximate bounds use the bounding box of all anchors and controls -// bounds[0] = min(minX, min(control0X, control1X)) -// bounds[1] = min(minY, min(control0Y, control1Y)) -// bounds[2] = max(maxX, max(control0X, control1X)) -// bounds[3] = max(maxY, max(control0Y, control1Y)) -// return -// } -// -// // Find the derivative, which is a quadratic Bezier. Then we can solve for t using -// // the quadratic formula -// val xa = -anchor0X + 3 * control0X - 3 * control1X + anchor1X -// val xb = 2 * anchor0X - 4 * control0X + 2 * control1X -// val xc = -anchor0X + control0X -// -// if (zeroIsh(xa)) { -// // Try Muller's method instead; it can find a single root when a is 0 -// if (xb != 0f) { -// val t = 2 * xc / (-2 * xb) -// if (t in 0f..1f) { -// pointOnCurve(t).x.let { -// if (it < minX) minX = it -// if (it > maxX) maxX = it -// } -// } -// } -// } else { -// val xs = xb * xb - 4 * xa * xc -// if (xs >= 0) { -// val t1 = (-xb + sqrt(xs)) / (2 * xa) -// if (t1 in 0f..1f) { -// pointOnCurve(t1).x.let { -// if (it < minX) minX = it -// if (it > maxX) maxX = it -// } -// } -// -// val t2 = (-xb - sqrt(xs)) / (2 * xa) -// if (t2 in 0f..1f) { -// pointOnCurve(t2).x.let { -// if (it < minX) minX = it -// if (it > maxX) maxX = it -// } -// } -// } -// } -// -// // Repeat the above for y coordinate -// val ya = -anchor0Y + 3 * control0Y - 3 * control1Y + anchor1Y -// val yb = 2 * anchor0Y - 4 * control0Y + 2 * control1Y -// val yc = -anchor0Y + control0Y -// -// if (zeroIsh(ya)) { -// if (yb != 0f) { -// val t = 2 * yc / (-2 * yb) -// if (t in 0f..1f) { -// pointOnCurve(t).y.let { -// if (it < minY) minY = it -// if (it > maxY) maxY = it -// } -// } -// } -// } else { -// val ys = yb * yb - 4 * ya * yc -// if (ys >= 0) { -// val t1 = (-yb + sqrt(ys)) / (2 * ya) -// if (t1 in 0f..1f) { -// pointOnCurve(t1).y.let { -// if (it < minY) minY = it -// if (it > maxY) maxY = it -// } -// } -// -// val t2 = (-yb - sqrt(ys)) / (2 * ya) -// if (t2 in 0f..1f) { -// pointOnCurve(t2).y.let { -// if (it < minY) minY = it -// if (it > maxY) maxY = it -// } -// } -// } -// } -// bounds[0] = minX -// bounds[1] = minY -// bounds[2] = maxX -// bounds[3] = maxY -// } -// -// /** -// * Returns two Cubics, created by splitting this curve at the given -// * distance of [t] between the original starting and ending anchor points. -// */ -// // TODO: cartesian optimization? -// fun split(t: Float): Pair { -// val u = 1 - t -// val pointOnCurve = pointOnCurve(t) -// return Cubic( -// anchor0X, anchor0Y, -// anchor0X * u + control0X * t, anchor0Y * u + control0Y * t, -// anchor0X * (u * u) + control0X * (2 * u * t) + control1X * (t * t), -// anchor0Y * (u * u) + control0Y * (2 * u * t) + control1Y * (t * t), -// pointOnCurve.x, pointOnCurve.y -// ) to Cubic( -// // TODO: should calculate once and share the result -// pointOnCurve.x, pointOnCurve.y, -// control0X * (u * u) + control1X * (2 * u * t) + anchor1X * (t * t), -// control0Y * (u * u) + control1Y * (2 * u * t) + anchor1Y * (t * t), -// control1X * u + anchor1X * t, control1Y * u + anchor1Y * t, -// anchor1X, anchor1Y -// ) -// } -// -// /** -// * Utility function to reverse the control/anchor points for this curve. -// */ -// fun reverse() = Cubic(anchor1X, anchor1Y, control1X, control1Y, control0X, control0Y, -// anchor0X, anchor0Y) -// -// /** -// * Operator overload to enable adding Cubic objects together, like "c0 + c1" -// */ -// operator fun plus(o: Cubic) = Cubic(FloatArray(8) { points[it] + o.points[it] }) -// -// /** -// * Operator overload to enable multiplying Cubics by a scalar value x, like "c0 * x" -// */ -// operator fun times(x: Float) = Cubic(FloatArray(8) { points[it] * x }) -// -// /** -// * Operator overload to enable multiplying Cubics by an Int scalar value x, like "c0 * x" -// */ -// operator fun times(x: Int) = times(x.toFloat()) -// -// /** -// * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" -// */ -// operator fun div(x: Float) = times(1f / x) -// -// /** -// * Operator overload to enable dividing Cubics by a scalar value x, like "c0 / x" -// */ -// operator fun div(x: Int) = div(x.toFloat()) -// -// override fun toString(): String { -// return "anchor0: ($anchor0X, $anchor0Y) control0: ($control0X, $control0Y), " + -// "control1: ($control1X, $control1Y), anchor1: ($anchor1X, $anchor1Y)" -// } -// -// override fun equals(other: Any?): Boolean { -// if (this === other) return true -// -// if (other !is Cubic) { -// return false -// } -// -// return points.contentEquals(other.points) -// } -// -// /** -// * Transforms the points in this [Cubic] with the given [PointTransformer] and returns a new -// * [Cubic] -// * -// * @param f The [PointTransformer] used to transform this [Cubic] -// */ -// fun transformed(f: PointTransformer): Cubic { -// val newCubic = MutableCubic() -// points.copyInto(newCubic.points) -// newCubic.transform(f) -// return newCubic -// } -// -// override fun hashCode() = points.contentHashCode() -// -// companion object { -// /** -// * Generates a bezier curve that is a straight line between the given anchor points. -// * The control points lie 1/3 of the distance from their respective anchor points. -// */ -// fun straightLine(x0: Float, y0: Float, x1: Float, y1: Float): Cubic { -// return Cubic( -// x0, y0, -// interpolate(x0, x1, 1f / 3f), -// interpolate(y0, y1, 1f / 3f), -// interpolate(x0, x1, 2f / 3f), -// interpolate(y0, y1, 2f / 3f), -// x1, y1 -// ) -// } -// -// // TODO: consider a more general function (maybe in addition to this) that allows -// // caller to get a list of curves surpassing 180 degrees -// /** -// * Generates a bezier curve that approximates a circular arc, with p0 and p1 as -// * the starting and ending anchor points. The curve generated is the smallest of -// * the two possible arcs around the entire 360-degree circle. Arcs of greater than 180 -// * degrees should use more than one arc together. Note that p0 and p1 should be -// * equidistant from the center. -// */ -// fun circularArc( -// centerX: Float, -// centerY: Float, -// x0: Float, -// y0: Float, -// x1: Float, -// y1: Float -// ): Cubic { -// val p0d = directionVector(x0 - centerX, y0 - centerY) -// val p1d = directionVector(x1 - centerX, y1 - centerY) -// val rotatedP0 = p0d.rotate90() -// val rotatedP1 = p1d.rotate90() -// val clockwise = rotatedP0.dotProduct(x1 - centerX, y1 - centerY) >= 0 -// val cosa = p0d.dotProduct(p1d) -// if (cosa > 0.999f) /* p0 ~= p1 */ return straightLine(x0, y0, x1, y1) -// val k = distance(x0 - centerX, y0 - centerY) * 4f / 3f * -// (sqrt(2 * (1 - cosa)) - sqrt(1 - cosa * cosa)) / (1 - cosa) * -// if (clockwise) 1f else -1f -// return Cubic( -// x0, y0, x0 + rotatedP0.x * k, y0 + rotatedP0.y * k, -// x1 - rotatedP1.x * k, y1 - rotatedP1.y * k, x1, y1 -// ) -// } -// } -//} -// -///** -// * Create a Cubic that holds the anchor and control point data for a single Bézier curve, -// * with anchor points ([anchor0X], [anchor0Y]) and ([anchor1X], [anchor1Y]) at either end -// * and control points ([control0X], [control0Y]) and ([control1X], [control1Y]) determining -// * the slope of the curve between the anchor points. -// * -// * The returned instance is immutable. -// * -// * @param anchor0X the first anchor point x coordinate -// * @param anchor0Y the first anchor point y coordinate -// * @param control0X the first control point x coordinate -// * @param control0Y the first control point y coordinate -// * @param control1X the second control point x coordinate -// * @param control1Y the second control point y coordinate -// * @param anchor1X the second anchor point x coordinate -// * @param anchor1Y the second anchor point y coordinate -// */ -//fun Cubic( -// anchor0X: Float, -// anchor0Y: Float, -// control0X: Float, -// control0Y: Float, -// control1X: Float, -// control1Y: Float, -// anchor1X: Float, -// anchor1Y: Float -//) = Cubic(floatArrayOf(anchor0X, anchor0Y, control0X, control0Y, -// control1X, control1Y, anchor1X, anchor1Y)) -// -///** -// * This interface is used refer to Points that can be modified, as a scope to -// * [PointTransformer] -// */ -//interface MutablePoint { -// /** -// * The x coordinate of the Point -// */ -// var x: Float -// -// /** -// * The y coordinate of the Point -// */ -// var y: Float -//} -// -//typealias TransformResult = Pair -// -///** -// * Interface for a function that can transform (rotate/scale/translate/etc.) points. -// */ -//fun interface PointTransformer { -// /** -// * Transform the point given the x and y parameters, returning the transformed point as a -// * [TransformResult] -// */ -// fun transform(x: Float, y: Float): TransformResult -//} -// -///** -// * This is a Mutable version of [Cubic], used mostly for performance critical paths so we can -// * avoid creating new [Cubic]s -// * -// * This is used in Morph.forEachCubic, reusing a [MutableCubic] instance to avoid creating -// * new [Cubic]s. -// */ -//class MutableCubic : Cubic() { -// private fun transformOnePoint(f: PointTransformer, ix: Int) { -// val result = f.transform(points[ix], points[ix + 1]) -// points[ix] = result.first -// points[ix + 1] = result.second -// } -// -// fun transform(f: PointTransformer) { -// transformOnePoint(f, 0) -// transformOnePoint(f, 2) -// transformOnePoint(f, 4) -// transformOnePoint(f, 6) -// } -// -// fun interpolate(c1: Cubic, c2: Cubic, progress: Float) { -// repeat(8) { -// points[it] = interpolate( -// c1.points[it], -// c2.points[it], -// progress -// ) -// } -// } -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt deleted file mode 100644 index c5d325ae..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Feature.kt +++ /dev/null @@ -1,83 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.shapes.util -// -//import androidx.compose.ui.geometry.Offset -// -///* -// * Copyright 2023 The Android Open Source Project -// * -// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// * -// * http://www.apache.org/licenses/LICENSE-2.0 -// * -// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -// -// -///** -// * This class holds information about a corner (rounded or not) or an edge of a given -// * polygon. The features of a Polygon can be used to manipulate the shape with more context -// * of what the shape actually is, rather than simply manipulating the raw curves and lines -// * which describe it. -// */ -//internal abstract class Feature(val cubics: List) { -// internal abstract fun transformed(f: PointTransformer): Feature -// -// /** -// * Edges have only a list of the cubic curves which make up the edge. Edges lie between -// * corners and have no vertex or concavity; the curves are simply straight lines (represented -// * by Cubic curves). -// */ -// internal class Edge(cubics: List) : Feature(cubics) { -// override fun transformed(f: PointTransformer) = -// Edge( -// buildList { -// // Performance: Builds the list by avoiding creating an unnecessary Iterator to -// // iterate through the cubics List. -// for (i in cubics.indices) { -// add(cubics[i].transformed(f)) -// } -// } -// ) -// -// override fun toString(): String = "Edge" -// } -// -// /** -// * Corners contain the list of cubic curves which describe how the corner is rounded (or -// * not), plus the vertex at the corner (which the cubics may or may not pass through, depending -// * on whether the corner is rounded) and a flag indicating whether the corner is convex. -// * A regular polygon has all convex corners, while a star polygon generally (but not -// * necessarily) has both convex (outer) and concave (inner) corners. -// */ -// internal class Corner( -// cubics: List, -// val vertex: Offset, -// val roundedCenter: Offset, -// val convex: Boolean = true -// ) : Feature(cubics) { -// override fun transformed(f: PointTransformer): Feature { -// return Corner( -// buildList { -// // Performance: Builds the list by avoiding creating an unnecessary Iterator to -// // iterate through the cubics List. -// for (i in cubics.indices) { -// add(cubics[i].transformed(f)) -// } -// }, -// vertex.transformed(f), -// roundedCenter.transformed(f), -// convex -// ) -// } -// -// override fun toString(): String { -// return "Corner: vertex=$vertex, center=$roundedCenter, convex=$convex" -// } -// } -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt deleted file mode 100644 index 964e550b..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Point.kt +++ /dev/null @@ -1,84 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.shapes.util -// -//import androidx.compose.ui.geometry.Offset -//import kotlin.math.sqrt -// -///* -// * Copyright 2023 The Android Open Source Project -// * -// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// * -// * http://www.apache.org/licenses/LICENSE-2.0 -// * -// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -// -// -// -///** -// * The magnitude of the Point, which is the distance of this point from (0, 0). -// * -// * If you need this value to compare it to another [Point]'s distance, -// * consider using [getDistanceSquared] instead, since it is cheaper to compute. -// */ -//internal fun Offset.getDistance() = sqrt(x * x + y * y) -// -///** -// * The square of the magnitude (which is the distance of this point from (0, 0)) of the Point. -// * -// * This is cheaper than computing the [getDistance] itself. -// */ -//internal fun Offset.getDistanceSquared() = x * x + y * y -// -//internal fun Offset.dotProduct(other: Offset) = x * other.x + y * other.y -// -//internal fun Offset.dotProduct(otherX: Float, otherY: Float) = x * otherX + y * otherY -// -///** -// * Compute the Z coordinate of the cross product of two vectors, to check if the second vector is -// * going clockwise ( > 0 ) or counterclockwise (< 0) compared with the first one. -// * It could also be 0, if the vectors are co-linear. -// */ -//internal fun Offset.clockwise(other: Offset) = x * other.y - y * other.x > 0 -// -///** -// * Returns unit vector representing the direction to this point from (0, 0) -// */ -//internal fun Offset.getDirection() = run { -// val d = this.getDistance() -// require(d > 0f) { "Can't get the direction of a 0-length vector" } -// this / d -//} -// -///** -// * Linearly interpolate between two Points. -// * -// * The [fraction] argument represents position on the timeline, with 0.0 meaning -// * that the interpolation has not started, returning [start] (or something -// * equivalent to [start]), 1.0 meaning that the interpolation has finished, -// * returning [stop] (or something equivalent to [stop]), and values in between -// * meaning that the interpolation is at the relevant point on the timeline -// * between [start] and [stop]. The interpolation can be extrapolated beyond 0.0 and -// * 1.0, so negative values and values greater than 1.0 are valid (and can -// * easily be generated by curves). -// * -// * Values for [fraction] are usually obtained from an [Animation], such as -// * an `AnimationController`. -// */ -//internal fun interpolate(start: Offset, stop: Offset, fraction: Float): Offset { -// return Offset( -// interpolate(start.x, stop.x, fraction), -// interpolate(start.y, stop.y, fraction) -// ) -//} -// -//internal fun Offset.transformed(f: PointTransformer): Offset { -// val result = f.transform(x, y) -// return Offset(result.first, result.second) -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt deleted file mode 100644 index 2d1d3c06..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/RoundedPolygon.kt +++ /dev/null @@ -1,664 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.shapes.util -// -///* -// * Copyright 2022 The Android Open Source Project -// * -// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// * -// * http://www.apache.org/licenses/LICENSE-2.0 -// * -// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -// -//import androidx.compose.ui.geometry.Offset -//import kotlin.math.abs -//import kotlin.math.max -//import kotlin.math.min -//import kotlin.math.sqrt -// -///** -// * The RoundedPolygon class allows simple construction of polygonal shapes with optional rounding -// * at the vertices. Polygons can be constructed with either the number of vertices -// * desired or an ordered list of vertices. -// * -// */ -//class RoundedPolygon internal constructor( -// internal val features: List, -// val centerX: Float, -// val centerY: Float -//) { -// /** -// * A flattened version of the [Feature]s, as a List. -// */ -// val cubics = buildList { -// // The first/last mechanism here ensures that the final anchor point in the shape -// // exactly matches the first anchor point. There can be rendering artifacts introduced -// // by those points being slightly off, even by much less than a pixel -// var firstCubic: Cubic? = null -// var lastCubic: Cubic? = null -// var firstFeatureSplitStart: List? = null -// var firstFeatureSplitEnd: List? = null -// if (features.size > 0 && features[0].cubics.size == 3) { -// val centerCubic = features[0].cubics[1] -// val (start, end) = centerCubic.split(.5f) -// firstFeatureSplitStart = mutableListOf(features[0].cubics[0], start) -// firstFeatureSplitEnd = mutableListOf(end, features[0].cubics[2]) -// } -// // iterating one past the features list size allows us to insert the initial split -// // cubic if it exists -// for (i in 0..features.size) { -// val featureCubics = if (i == 0 && firstFeatureSplitEnd != null) firstFeatureSplitEnd -// else if (i == features.size) { -// if (firstFeatureSplitStart != null) firstFeatureSplitStart -// else break -// } else features[i].cubics -// for (j in featureCubics.indices) { -// // Skip zero-length curves; they add nothing and can trigger rendering artifacts -// val cubic = featureCubics[j] -// if (!cubic.zeroLength()) { -// if (lastCubic != null) add(lastCubic) -// lastCubic = cubic -// if (firstCubic == null) firstCubic = cubic -// } else { -// if (lastCubic != null) { -// // Dropping several zero-ish length curves in a row can lead to -// // enough discontinuity to throw an exception later, even though the -// // distances are quite small. Account for that by making the last -// // cubic use the latest anchor point, always. -// lastCubic.points[6] = cubic.anchor1X -// lastCubic.points[7] = cubic.anchor1Y -// } -// } -// } -// } -// if (lastCubic != null && firstCubic != null) add(Cubic( -// lastCubic.anchor0X, lastCubic.anchor0Y, lastCubic.control0X, lastCubic.control0Y, -// lastCubic.control1X, lastCubic.control1Y, firstCubic.anchor0X, firstCubic.anchor0Y)) -// } -// -// init { -// var prevCubic = cubics[cubics.size - 1] -// debugLog("RoundedPolygon") { "Cubic-1 = $prevCubic" } -// for (index in cubics.indices) { -// val cubic = cubics[index] -// debugLog("RoundedPolygon") { "Cubic = $cubic" } -// if (abs(cubic.anchor0X - prevCubic.anchor1X) > DistanceEpsilon || -// abs(cubic.anchor0Y - prevCubic.anchor1Y) > DistanceEpsilon -// ) { -// debugLog("RoundedPolygon") { -// "Ix: $index | (${cubic.anchor0X},${cubic.anchor0Y}) vs " + -// "$prevCubic" -// } -// throw IllegalArgumentException( -// "RoundedPolygon must be contiguous, with the " + -// "anchor points of all curves matching the anchor points of the preceding " + -// "and succeeding cubics" -// ) -// } -// prevCubic = cubic -// } -// } -// -// /** -// * Transforms (scales/translates/etc.) this [RoundedPolygon] with the given [PointTransformer] -// * and returns a new [RoundedPolygon]. -// * This is a low level API and there should be more platform idiomatic ways to transform -// * a [RoundedPolygon] provided by the platform specific wrapper. -// * -// * @param f The [PointTransformer] used to transform this [RoundedPolygon] -// */ -// fun transformed(f: PointTransformer): RoundedPolygon { -// val center = Offset(centerX, centerY).transformed(f) -// return RoundedPolygon( -// buildList { -// for (i in features.indices) { -// add(features[i].transformed(f)) -// } -// }, -// center.x, -// center.y -// ) -// } -// -// /** -// * Creates a new RoundedPolygon, moving and resizing this one, so it's completely inside the -// * (0, 0) -> (1, 1) square, centered if there extra space in one direction -// */ -// fun normalized(): RoundedPolygon { -// val bounds = calculateBounds() -// val width = bounds[2] - bounds[0] -// val height = bounds[3] - bounds[1] -// val side = max(width, height) -// // Center the shape if bounds are not a square -// val offsetX = (side - width) / 2 - bounds[0] /* left */ -// val offsetY = (side - height) / 2 - bounds[1] /* top */ -// return transformed { x, y -> TransformResult((x + offsetX) / side, (y + offsetY) / side) } -// } -// -// override fun toString(): String = "[RoundedPolygon." + -// " Cubics = " + cubics.joinToString() + -// " || Features = " + features.joinToString() + -// " || Center = ($centerX, $centerY)]" -// -// /** -// * Like [calculateBounds], this function calculates the axis-aligned bounds of the -// * object and returns that rectangle. But this function determines the max dimension of -// * the shape (by calculating the distance from its center to the start and midpoint of -// * each curve) and returns a square which can be used to hold the object in any rotation. -// * This function can be used, for example, to calculate the max size of a UI element meant -// * to hold this shape in any rotation. -// * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be -// * created. -// * @return The axis-aligned max bounding box for this object, where the rectangles left, -// * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. -// */ -// fun calculateMaxBounds(bounds: FloatArray = FloatArray(4)): FloatArray { -// require(bounds.size >= 4) { "Required bounds size of 4" } -// var maxDistSquared = 0f -// for (i in cubics.indices) { -// val cubic = cubics[i] -// val anchorDistance = distanceSquared(cubic.anchor0X - centerX, -// cubic.anchor0Y - centerY) -// val middlePoint = cubic.pointOnCurve(.5f) -// val middleDistance = distanceSquared(middlePoint.x - centerX, -// middlePoint.y - centerY) -// maxDistSquared = max(maxDistSquared, max(anchorDistance, middleDistance)) -// } -// val distance = sqrt(maxDistSquared) -// bounds[0] = centerX - distance -// bounds[1] = centerY - distance -// bounds[2] = centerX + distance -// bounds[3] = centerY + distance -// return bounds -// } -// -// /** -// * Calculates the axis-aligned bounds of the object. -// * @param approximate when true, uses a faster calculation to create the bounding -// * box based on the min/max values of all anchor and control points that make up the shape. -// * Default value is true. -// * @param bounds a buffer to hold the results. If not supplied, a temporary buffer will be -// * created. -// * @return The axis-aligned bounding box for this object, where the rectangles left, -// * top, right, and bottom values will be stored in entries 0, 1, 2, and 3, in that order. -// */ -// fun calculateBounds( -// bounds: FloatArray = FloatArray(4), -// approximate: Boolean = true -// ): FloatArray { -// require(bounds.size >= 4) { "Required bounds size of 4" } -// var minX = Float.MAX_VALUE -// var minY = Float.MAX_VALUE -// var maxX = Float.MIN_VALUE -// var maxY = Float.MIN_VALUE -// for (i in cubics.indices) { -// val cubic = cubics[i] -// cubic.calculateBounds(bounds, approximate = approximate) -// minX = min(minX, bounds[0]) -// minY = min(minY, bounds[1]) -// maxX = max(maxX, bounds[2]) -// maxY = max(maxY, bounds[3]) -// } -// bounds[0] = minX -// bounds[1] = minY -// bounds[2] = maxX -// bounds[3] = maxY -// return bounds -// } -// -// companion object {} -// -// override fun equals(other: Any?): Boolean { -// if (this === other) return true -// if (other !is RoundedPolygon) return false -// -// return features == other.features -// } -// -// override fun hashCode(): Int { -// return features.hashCode() -// } -//} -// -///** -// * This constructor takes the number of vertices in the resulting polygon. These vertices are -// * positioned on a virtual circle around a given center with each vertex positioned [radius] -// * distance from that center, equally spaced (with equal angles between them). If no radius -// * is supplied, the shape will be created with a default radius of 1, resulting in a shape -// * whose vertices lie on a unit circle, with width/height of 2. That default polygon will -// * probably need to be rescaled using [transformed] into the appropriate size for the UI in -// * which it will be drawn. -// * -// * The [rounding] and [perVertexRounding] parameters are optional. If not supplied, the result -// * will be a regular polygon with straight edges and unrounded corners. -// * -// * @param numVertices The number of vertices in this polygon. -// * @param radius The radius of the polygon, in pixels. This radius determines the -// * initial size of the object, but it can be transformed later by using the [transformed] function. -// * @param centerX The X coordinate of the center of the polygon, around which all vertices -// * will be placed. The default center is at (0,0). -// * @param centerY The Y coordinate of the center of the polygon, around which all vertices -// * will be placed. The default center is at (0,0). -// * @param rounding The [CornerRounding] properties of all vertices. If some vertices should -// * have different rounding properties, then use [perVertexRounding] instead. The default -// * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices -// * themselves in the final shape and not curves rounded around the vertices. -// * @param perVertexRounding The [CornerRounding] properties of every vertex. If this -// * parameter is not null, then it must have [numVertices] elements. If this parameter -// * is null, then the polygon will use the [rounding] parameter for every vertex instead. The -// * default value is null. -// * -// * @throws IllegalArgumentException If [perVertexRounding] is not null and its size is not -// * equal to [numVertices]. -// * @throws IllegalArgumentException [numVertices] must be at least 3. -// */ -//fun RoundedPolygon( -// numVertices: Int, -// radius: Float = 1f, -// centerX: Float = 0f, -// centerY: Float = 0f, -// rounding: CornerRounding = CornerRounding.Unrounded, -// perVertexRounding: List? = null -//) = RoundedPolygon( -// verticesFromNumVerts(numVertices, radius, centerX, centerY), -// rounding = rounding, -// perVertexRounding = perVertexRounding, -// centerX = centerX, -// centerY = centerY -//) -// -///** -// * Creates a copy of the given [RoundedPolygon] -// */ -//fun RoundedPolygon(source: RoundedPolygon) = -// RoundedPolygon(source.features, source.centerX, source.centerY) -// -///** -// * This function takes the vertices (either supplied or calculated, depending on the -// * constructor called), plus [CornerRounding] parameters, and creates the actual -// * [RoundedPolygon] shape, rounding around the vertices (or not) as specified. The result -// * is a list of [Cubic] curves which represent the geometry of the final shape. -// * -// * @param vertices The list of vertices in this polygon specified as pairs of x/y coordinates in -// * this FloatArray. This should be an ordered list (with the outline of the shape going from each -// * vertex to the next in order of this list), otherwise the results will be undefined. -// * @param rounding The [CornerRounding] properties of all vertices. If some vertices should -// * have different rounding properties, then use [perVertexRounding] instead. The default -// * rounding value is [CornerRounding.Unrounded], meaning that the polygon will use the vertices -// * themselves in the final shape and not curves rounded around the vertices. -// * @param perVertexRounding The [CornerRounding] properties of all vertices. If this -// * parameter is not null, then it must have the same size as [vertices]. If this parameter -// * is null, then the polygon will use the [rounding] parameter for every vertex instead. The -// * default value is null. -// * @param centerX The X coordinate of the center of the polygon, around which all vertices -// * will be placed. The default center is at (0,0). -// * @param centerY The Y coordinate of the center of the polygon, around which all vertices -// * will be placed. The default center is at (0,0). -// * @throws IllegalArgumentException if the number of vertices is less than 3 (the [vertices] -// * parameter has less than 6 Floats). Or if the [perVertexRounding] parameter is not null and the -// * size doesn't match the number vertices. -// */ -//// TODO(performance): Update the map calls to more efficient code that doesn't allocate Iterators -//// unnecessarily. -//fun RoundedPolygon( -// vertices: FloatArray, -// rounding: CornerRounding = CornerRounding.Unrounded, -// perVertexRounding: List? = null, -// centerX: Float = Float.MIN_VALUE, -// centerY: Float = Float.MIN_VALUE -//): RoundedPolygon { -// if (vertices.size < 6) { -// throw IllegalArgumentException("Polygons must have at least 3 vertices") -// } -// if (vertices.size % 2 == 1) { -// throw IllegalArgumentException("The vertices array should have even size") -// } -// if (perVertexRounding != null && perVertexRounding.size * 2 != vertices.size) { -// throw IllegalArgumentException( -// "perVertexRounding list should be either null or " + -// "the same size as the number of vertices (vertices.size / 2)" -// ) -// } -// val corners = mutableListOf>() -// val n = vertices.size / 2 -// val roundedCorners = mutableListOf() -// for (i in 0 until n) { -// val vtxRounding = perVertexRounding?.get(i) ?: rounding -// val prevIndex = ((i + n - 1) % n) * 2 -// val nextIndex = ((i + 1) % n) * 2 -// roundedCorners.add( -// RoundedCorner( -// Offset(vertices[prevIndex], vertices[prevIndex + 1]), -// Offset(vertices[i * 2], vertices[i * 2 + 1]), -// Offset(vertices[nextIndex], vertices[nextIndex + 1]), -// vtxRounding -// ) -// ) -// } -// -// // For each side, check if we have enough space to do the cuts needed, and if not split -// // the available space, first for round cuts, then for smoothing if there is space left. -// // Each element in this list is a pair, that represent how much we can do of the cut for -// // the given side (side i goes from corner i to corner i+1), the elements of the pair are: -// // first is how much we can use of expectedRoundCut, second how much of expectedCut -// val cutAdjusts = (0 until n).map { ix -> -// val expectedRoundCut = roundedCorners[ix].expectedRoundCut + -// roundedCorners[(ix + 1) % n].expectedRoundCut -// val expectedCut = roundedCorners[ix].expectedCut + -// roundedCorners[(ix + 1) % n].expectedCut -// val vtxX = vertices[ix * 2] -// val vtxY = vertices[ix * 2 + 1] -// val nextVtxX = vertices[((ix + 1) % n) * 2] -// val nextVtxY = vertices[((ix + 1) % n) * 2 + 1] -// val sideSize = distance(vtxX - nextVtxX, vtxY - nextVtxY) -// -// // Check expectedRoundCut first, and ensure we fulfill rounding needs first for -// // both corners before using space for smoothing -// if (expectedRoundCut > sideSize) { -// // Not enough room for fully rounding, see how much we can actually do. -// sideSize / expectedRoundCut to 0f -// } else if (expectedCut > sideSize) { -// // We can do full rounding, but not full smoothing. -// 1f to (sideSize - expectedRoundCut) / (expectedCut - expectedRoundCut) -// } else { -// // There is enough room for rounding & smoothing. -// 1f to 1f -// } -// } -// // Create and store list of beziers for each [potentially] rounded corner -// for (i in 0 until n) { -// // allowedCuts[0] is for the side from the previous corner to this one, -// // allowedCuts[1] is for the side from this corner to the next one. -// val allowedCuts = mutableListOf() -// for (delta in 0..1) { -// val (roundCutRatio, cutRatio) = cutAdjusts[(i + n - 1 + delta) % n] -// allowedCuts.add( -// roundedCorners[i].expectedRoundCut * roundCutRatio + -// (roundedCorners[i].expectedCut - roundedCorners[i].expectedRoundCut) * cutRatio -// ) -// } -// corners.add( -// roundedCorners[i].getCubics( -// allowedCut0 = allowedCuts[0], -// allowedCut1 = allowedCuts[1] -// ) -// ) -// } -// // Finally, store the calculated cubics. This includes all of the rounded corners -// // from above, along with new cubics representing the edges between those corners. -// val tempFeatures = mutableListOf() -// for (i in 0 until n) { -// // Determine whether corner at this vertex is concave or convex, based on the -// // relationship of the prev->curr/curr->next vectors -// // Note that these indices are for pairs of values (points), they need to be -// // doubled to access the xy values in the vertices float array -// val prevVtxIndex = (i + n - 1) % n -// val nextVtxIndex = (i + 1) % n -// val currVertex = Offset(vertices[i * 2], vertices[i * 2 + 1]) -// val prevVertex = Offset(vertices[prevVtxIndex * 2], vertices[prevVtxIndex * 2 + 1]) -// val nextVertex = Offset(vertices[nextVtxIndex * 2], vertices[nextVtxIndex * 2 + 1]) -// val convex = (currVertex - prevVertex).clockwise(nextVertex - currVertex) -// tempFeatures.add( -// Feature.Corner( -// corners[i], currVertex, roundedCorners[i].center, -// convex -// ) -// ) -// tempFeatures.add( -// Feature.Edge( -// listOf( -// Cubic.straightLine( -// corners[i].last().anchor1X, corners[i].last().anchor1Y, -// corners[(i + 1) % n].first().anchor0X, corners[(i + 1) % n].first().anchor0Y -// ) -// ) -// ) -// ) -// } -// -// val (cx, cy) = if (centerX == Float.MIN_VALUE || centerY == Float.MIN_VALUE) { -// calculateCenter(vertices) -// } else { -// Offset(centerX, centerY) -// } -// return RoundedPolygon(tempFeatures, cx, cy) -//} -// -///** -// * Calculates an estimated center position for the polygon, returning it. -// * This function should only be called if the center is not already calculated or provided. -// * The Polygon constructor which takes `numVertices` calculates its own center, since it -// * knows exactly where it is centered, at (0, 0). -// * -// * Note that this center will be transformed whenever the shape itself is transformed. -// * Any transforms that occur before the center is calculated will be taken into account -// * automatically since the center calculation is an average of the current location of -// * all cubic anchor points. -// */ -//private fun calculateCenter(vertices: FloatArray): Offset { -// var cumulativeX = 0f -// var cumulativeY = 0f -// var index = 0 -// while (index < vertices.size) { -// cumulativeX += vertices[index++] -// cumulativeY += vertices[index++] -// } -// return Offset(cumulativeX / vertices.size / 2, cumulativeY / vertices.size / 2) -//} -// -///** -// * Private utility class that holds the information about each corner in a polygon. The shape -// * of the corner can be returned by calling the [getCubics] function, which will return a list -// * of curves representing the corner geometry. The shape of the corner depends on the [rounding] -// * constructor parameter. -// * -// * If rounding is null, there is no rounding; the corner will simply be a single point at [p1]. -// * This point will be represented by a [Cubic] of length 0 at that point. -// * -// * If rounding is not null, the corner will be rounded either with a curve approximating a circular -// * arc of the radius specified in [rounding], or with three curves if [rounding] has a nonzero -// * smoothing parameter. These three curves are a circular arc in the middle and two symmetrical -// * flanking curves on either side. The smoothing parameter determines the curvature of the -// * flanking curves. -// * -// * This is a class because we usually need to do the work in 2 steps, and prefer to keep state -// * between: first we determine how much we want to cut to comply with the parameters, then we are -// * given how much we can actually cut (because of space restrictions outside this corner) -// * -// * @param p0 the vertex before the one being rounded -// * @param p1 the vertex of this rounded corner -// * @param p2 the vertex after the one being rounded -// * @param rounding the optional parameters specifying how this corner should be rounded -// */ -//private class RoundedCorner( -// val p0: Offset, -// val p1: Offset, -// val p2: Offset, -// val rounding: CornerRounding? = null -//) { -// val d1 = (p0 - p1).getDirection() -// val d2 = (p2 - p1).getDirection() -// val cornerRadius = rounding?.radius ?: 0f -// val smoothing = rounding?.smoothing ?: 0f -// -// // cosine of angle at p1 is dot product of unit vectors to the other two vertices -// val cosAngle = d1.dotProduct(d2) -// -// // identity: sin^2 + cos^2 = 1 -// // sinAngle gives us the intersection -// val sinAngle = sqrt(1 - square(cosAngle)) -// -// // How much we need to cut, as measured on a side, to get the required radius -// // calculating where the rounding circle hits the edge -// // This uses the identity of tan(A/2) = sinA/(1 + cosA), where tan(A/2) = radius/cut -// val expectedRoundCut = -// if (sinAngle > 1e-3) { -// cornerRadius * (cosAngle + 1) / sinAngle -// } else { -// 0f -// } -// -// // smoothing changes the actual cut. 0 is same as expectedRoundCut, 1 doubles it -// val expectedCut: Float -// get() = ((1 + smoothing) * expectedRoundCut) -// -// // the center of the circle approximated by the rounding curve (or the middle of the three -// // curves if smoothing is requested). The center is the same as p0 if there is no rounding. -// var center: Offset = Offset(0f, 0f) -// -// fun getCubics(allowedCut0: Float, allowedCut1: Float = allowedCut0): -// List { -// // We use the minimum of both cuts to determine the radius, but if there is more space -// // in one side we can use it for smoothing. -// val allowedCut = min(allowedCut0, allowedCut1) -// // Nothing to do, just use lines, or a point -// if (expectedRoundCut < DistanceEpsilon || -// allowedCut < DistanceEpsilon || -// cornerRadius < DistanceEpsilon -// ) { -// center = p1 -// return listOf(Cubic.straightLine(p1.x, p1.y, p1.x, p1.y)) -// } -// // How much of the cut is required for the rounding part. -// val actualRoundCut = min(allowedCut, expectedRoundCut) -// // We have two smoothing values, one for each side of the vertex -// // Space is used for rounding values first. If there is space left over, then we -// // apply smoothing, if it was requested -// val actualSmoothing0 = calculateActualSmoothingValue(allowedCut0) -// val actualSmoothing1 = calculateActualSmoothingValue(allowedCut1) -// // Scale the radius if needed -// val actualR = cornerRadius * actualRoundCut / expectedRoundCut -// // Distance from the corner (p1) to the center -// val centerDistance = sqrt(square(actualR) + square(actualRoundCut)) -// // Center of the arc we will use for rounding -// center = p1 + ((d1 + d2) / 2f).getDirection() * centerDistance -// val circleIntersection0 = p1 + d1 * actualRoundCut -// val circleIntersection2 = p1 + d2 * actualRoundCut -// val flanking0 = computeFlankingCurve( -// actualRoundCut, actualSmoothing0, p1, p0, -// circleIntersection0, circleIntersection2, center, actualR -// ) -// val flanking2 = computeFlankingCurve( -// actualRoundCut, actualSmoothing1, p1, p2, -// circleIntersection2, circleIntersection0, center, actualR -// ).reverse() -// return listOf( -// flanking0, -// Cubic.circularArc( -// center.x, center.y, flanking0.anchor1X, flanking0.anchor1Y, -// flanking2.anchor0X, flanking2.anchor0Y -// ), -// flanking2 -// ) -// } -// -// /** -// * If allowedCut (the amount we are able to cut) is greater than the expected cut -// * (without smoothing applied yet), then there is room to apply smoothing and we -// * calculate the actual smoothing value here. -// */ -// private fun calculateActualSmoothingValue(allowedCut: Float): Float { -// return if (allowedCut > expectedCut) { -// smoothing -// } else if (allowedCut > expectedRoundCut) { -// smoothing * (allowedCut - expectedRoundCut) / (expectedCut - expectedRoundCut) -// } else { -// 0f -// } -// } -// -// /** -// * Compute a Bezier to connect the linear segment defined by corner and sideStart -// * with the circular segment defined by circleCenter, circleSegmentIntersection, -// * otherCircleSegmentIntersection and actualR. -// * The bezier will start at the linear segment and end on the circular segment. -// * -// * @param actualRoundCut How much we are cutting of the corner to add the circular segment -// * (this is before smoothing, that will cut some more). -// * @param actualSmoothingValues How much we want to smooth (this is the smooth parameter, -// * adjusted down if there is not enough room). -// * @param corner The point at which the linear side ends -// * @param sideStart The point at which the linear side starts -// * @param circleSegmentIntersection The point at which the linear side and the circle intersect. -// * @param otherCircleSegmentIntersection The point at which the opposing linear side and the -// * circle intersect. -// * @param circleCenter The center of the circle. -// * @param actualR The radius of the circle. -// * -// * @return a Bezier cubic curve that connects from the (cut) linear side and the (cut) circular -// * segment in a smooth way. -// */ -// private fun computeFlankingCurve( -// actualRoundCut: Float, -// actualSmoothingValues: Float, -// corner: Offset, -// sideStart: Offset, -// circleSegmentIntersection: Offset, -// otherCircleSegmentIntersection: Offset, -// circleCenter: Offset, -// actualR: Float -// ): Cubic { -// // sideStart is the anchor, 'anchor' is actual control point -// val sideDirection = (sideStart - corner).getDirection() -// val curveStart = corner + sideDirection * actualRoundCut * (1 + actualSmoothingValues) -// // We use an approximation to cut a part of the circle section proportional to 1 - smooth, -// // When smooth = 0, we take the full section, when smooth = 1, we take nothing. -// // TODO: revisit this, it can be problematic as it approaches 180 degrees -// val p = interpolate( -// circleSegmentIntersection, -// (circleSegmentIntersection + otherCircleSegmentIntersection) / 2f, -// actualSmoothingValues -// ) -// // The flanking curve ends on the circle -// val curveEnd = circleCenter + -// directionVector(p.x - circleCenter.x, p.y - circleCenter.y) * actualR -// // The anchor on the circle segment side is in the intersection between the tangent to the -// // circle in the circle/flanking curve boundary and the linear segment. -// val circleTangent = (curveEnd - circleCenter).rotate90() -// val anchorEnd = lineIntersection(sideStart, sideDirection, curveEnd, circleTangent) -// ?: circleSegmentIntersection -// // From what remains, we pick a point for the start anchor. -// // 2/3 seems to come from design tools? -// val anchorStart = (curveStart + anchorEnd * 2f) / 3f -// return Cubic(curveStart, anchorStart, anchorEnd, curveEnd) -// } -// -// /** -// * Returns the intersection point of the two lines d0->d1 and p0->p1, or null if the -// * lines do not intersect -// */ -// private fun lineIntersection(p0: Offset, d0: Offset, p1: Offset, d1: Offset): Offset? { -// val rotatedD1 = d1.rotate90() -// val den = d0.dotProduct(rotatedD1) -// if (abs(den) < DistanceEpsilon) return null -// val num = (p1 - p0).dotProduct(rotatedD1) -// // Also check the relative value. This is equivalent to abs(den/num) < DistanceEpsilon, -// // but avoid doing a division -// if (abs(den) < DistanceEpsilon * abs(num)) return null -// val k = num / den -// return p0 + d0 * k -// } -//} -// -//private fun verticesFromNumVerts( -// numVertices: Int, -// radius: Float, -// centerX: Float, -// centerY: Float -//): FloatArray { -// val result = FloatArray(numVertices * 2) -// var arrayIndex = 0 -// for (i in 0 until numVertices) { -// val vertex = radialToCartesian(radius, (FloatPi / numVertices * 2 * i)) + -// Offset(centerX, centerY) -// result[arrayIndex++] = vertex.x -// result[arrayIndex++] = vertex.y -// } -// return result -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt deleted file mode 100644 index 7cfe0df2..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/util/Utils.kt +++ /dev/null @@ -1,115 +0,0 @@ -//package io.github.alexzhirkevich.compottie.internal.shapes.util -// -//import androidx.compose.ui.graphics.Path -//import androidx.compose.ui.graphics.PathMeasure -//import androidx.compose.ui.graphics.PathOperation -//import io.github.alexzhirkevich.compottie.internal.platform.set -//import io.github.alexzhirkevich.compottie.internal.shapes.TrimPath -//import kotlin.math.abs -//import kotlin.math.max -//import kotlin.math.min -// -//internal object Utils { -// -// fun applyTrimPathIfNeeded( -// path: Path, -// trimPath: TrimPath, -// time : Int -// ) { -// if (trimPath.hidden) { -// return -// } -// val start: Float = trimPath.start.interpolated(time) -// val end: Float = trimPath.end.interpolated(time) -// val offset: Float = trimPath.offset.interpolated(time) -// applyTrimPathIfNeeded( -// path, -// start / 100f, -// end / 100f, -// offset / 360f -// ) -// } -// -// private val pathMeasure = PathMeasure() -// private val tempPath = Path() -// private val tempPath2 = Path() -// -// fun applyTrimPathIfNeeded( -// path: Path, startValue: Float, endValue: Float, offsetValue: Float -// ) { -// -// pathMeasure.setPath(path, false) -// -// val length: Float = pathMeasure.length -// -// if (startValue == 1f && endValue == 0f) { -// return -// } -// if (length < 1f || abs((endValue - startValue - 1).toDouble()) < .01) { -// return -// } -// -// val start = length * startValue -// val end = length * endValue -// var newStart = min(start.toDouble(), end.toDouble()).toFloat() -// var newEnd = max(start.toDouble(), end.toDouble()).toFloat() -// -// val offset = offsetValue * length -// newStart += offset -// newEnd += offset -// -// // If the trim path has rotated around the path, we need to shift it back. -// if (newStart >= length && newEnd >= length) { -// newStart = floorMod(newStart, length).toFloat() -// newEnd = floorMod(newEnd, length).toFloat() -// } -// -// if (newStart < 0) { -// newStart = floorMod(newStart, length).toFloat() -// } -// if (newEnd < 0) { -// newEnd = floorMod(newEnd, length).toFloat() -// } -// -// // If the start and end are equals, return an empty path. -// if (newStart == newEnd) { -// path.reset() -// return -// } -// -// if (newStart >= newEnd) { -// newStart -= length -// } -// -// tempPath.reset() -// pathMeasure.getSegment( -// newStart, -// newEnd, -// tempPath, -// true -// ) -// -// if (newEnd > length) { -// tempPath2.reset() -// pathMeasure.getSegment( -// 0f, -// newEnd % length, -// tempPath2, -// true -// ) -// tempPath.addPath(tempPath2) -// } else if (newStart < 0) { -// tempPath2.reset() -// pathMeasure.getSegment( -// length + newStart, -// length, -// tempPath2, -// true -// ) -// tempPath.addPath(tempPath2) -// } -// -// path.reset() -// path.set(tempPath) -// } -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt index 613f8c55..d51af511 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt @@ -3,7 +3,22 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Rect -fun MutableRect.union(other : MutableRect){ +internal fun MutableRect.intersect(other: MutableRect) = + intersect( + left = other.left, + top = other.top, + right = other.right, + bottom = other.bottom + ) +internal fun MutableRect.overlaps(other: MutableRect): Boolean { + if (right <= other.left || other.right <= left) + return false + if (bottom <= other.top || other.bottom <= top) + return false + return true +} + +internal fun MutableRect.union(other : MutableRect){ if ((left < right) && (top < bottom)) { if ((this.left < this.right) && (this.top < this.bottom)) { if (this.left > left) this.left = left; @@ -19,11 +34,11 @@ fun MutableRect.union(other : MutableRect){ } } -fun MutableRect.set(other : MutableRect){ +internal fun MutableRect.set(other : MutableRect){ set(left = other.left, top = other.top, right = other.right, bottom = other.bottom) } -fun MutableRect.set(other : Rect){ +internal fun MutableRect.set(other : Rect){ set(left = other.left, top = other.top, right = other.right, bottom = other.bottom) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt index 04019bdf..86bf2acb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt @@ -1,6 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.utils +import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.geometry.toRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -11,12 +13,15 @@ import kotlin.math.abs import kotlin.math.max import kotlin.math.min + + internal object Utils { private val pathMeasure = ExtendedPathMeasure() private val tempPath = Path() private val tempPath2 = Path() + fun saveLayerCompat( canvas: Canvas, rect: Rect, @@ -25,6 +30,15 @@ internal object Utils { canvas.saveLayer(rect, paint) } + fun saveLayerCompat( + canvas: Canvas, + rect: MutableRect, + paint: Paint, + ) { + canvas.saveLayer(rect.toRect(), paint) + } + + fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathShape, frame: Float) { if (trimPath.hidden) { return diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt new file mode 100644 index 00000000..75c36bf0 --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt @@ -0,0 +1,4 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +internal actual fun isAndroidAtLeast(code : Int) : Boolean = false +internal actual fun isAndroidAtMost(code : Int) : Boolean = false diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt new file mode 100644 index 00000000..13792438 --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt @@ -0,0 +1,21 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.nativeCanvas + +internal actual fun Canvas.getMatrix(matrix: Matrix) { + nativeCanvas.localToDevice.mat.copyInto(matrix.values) +} + +internal actual fun Canvas.saveLayer(rect : MutableRect, paint : Paint, flag : Int) { + nativeCanvas.saveLayer( + left = rect.left, + top = rect.top, + right = rect.right, + bottom = rect.bottom, + paint = paint.asFrameworkPaint() + ) +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/precomp_with_remapping.json b/example/shared/src/commonMain/composeResources/files/precomp_with_remapping.json new file mode 100644 index 00000000..ea08a66c --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/precomp_with_remapping.json @@ -0,0 +1 @@ +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{7820523d-dd32-453b-b311-50323a49e4df}","fr":60,"w":512,"h":512,"assets":[{"nm":"Composition","mn":"{4d838004-a221-48cb-966f-399347c5acb8}","id":"{4d838004-a221-48cb-966f-399347c5acb8}","layers":[{"ddd":0,"ty":4,"ind":0,"st":0,"ip":0,"op":180,"nm":"Layer 1","mn":"{8afc4794-97eb-4533-814b-f92676e324f5}","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"PolyStar 1","mn":"{600eb536-73f0-415d-8743-01dd2f26e2b7}","it":[{"ty":"sr","nm":"PolyStar 1","mn":"{0d81b309-da59-4646-812d-ed9212679e27}","p":{"a":0,"k":[166.49999999999997,144.89999999999998]},"or":{"a":0,"k":103.60950469970703},"ir":{"a":0,"k":51.804752349853516},"r":{"a":0,"k":147.41429138183594},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{5271148f-841e-4e99-9f23-e0b201b46def}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{c72fab9f-6a71-4e30-966c-1b863389d19a}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.9803921568627451,0.2823529411764706]},"r":1},{"ty":"tr","a":{"a":0,"k":[166.49999999999997,144.89999999999998]},"p":{"a":1,"k":[{"t":0,"s":[106.19999999999997,126.89999999999998],"h":0,"o":{"x":[0.3333333333333333],"y":[0]},"i":{"x":[0.6666666666666666],"y":[1]},"e":[413.99999999999994,413.09999999999997]},{"t":180,"s":[413.99999999999994,413.09999999999997]}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}]}],"layers":[{"ty":0,"ddd":0,"nm":"Composition","mn":"{e3aa5446-47d2-454e-8d20-ed3c5f15612e}","ip":0,"op":180,"ind":2,"st":0,"sr":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[50,50]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"refId":"{4d838004-a221-48cb-966f-399347c5acb8}","w":512,"h":512},{"ty":0,"ddd":0,"nm":"Remapped","mn":"{0f7b917c-b0e8-450f-bb63-812dff786620}","ip":0,"op":180,"ind":1,"st":0,"sr":1,"tm":{"a":1,"k":[{"t":0,"s":[0],"o":{"x":0,"y":0},"i":{"x":1,"y":1}},{"t":30,"s":[3],"o":{"x":0,"y":0},"i":{"x":1,"y":1}},{"t":60,"s":[1.5],"o":{"x":0,"y":0},"i":{"x":1,"y":1}},{"t":180,"s":[3],"o":{"x":0,"y":0},"i":{"x":1,"y":1}}]},"ks":{"a":{"a":0,"k":[512,512]},"p":{"a":0,"k":[512,512]},"s":{"a":0,"k":[50,50]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"refId":"{4d838004-a221-48cb-966f-399347c5acb8}","w":512,"h":512}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 1f498b28..3f33ab88 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -26,13 +26,14 @@ private val POLYSTAR = "files/polystar.json" private val RECT = "files/rect.json" private val ROUND_RECT = "files/roundrect.json" private val ROBOT = "files/robot.json" +private val PRECOMP_WITH_REMAPPING = "files/precomp_with_remapping.json" @OptIn(ExperimentalResourceApi::class) @Composable fun App() { val json by produceState(null){ - value = Res.readBytes(CHECKMARK).decodeToString() + value = Res.readBytes(PRECOMP_WITH_REMAPPING).decodeToString() } if (json != null) { From 3f3e00ab837cd40853b5a6fb99c4cda0be6e6b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 2 Jun 2024 01:38:28 +0300 Subject: [PATCH 013/100] add masks, fix unreset rect path --- .../internal/platform/PlatformPath.android.kt | 5 +++- .../alexzhirkevich/compottie/LottiePainter.kt | 29 ++++++++++--------- .../internal/content/ContentGroup.kt | 4 +-- .../compottie/internal/layers/BaseLayer.kt | 29 +++++++++++-------- .../compottie/internal/layers/ImageLayer.kt | 25 +++++++--------- .../compottie/internal/layers/Layer.kt | 11 +++++-- .../compottie/internal/layers/NullLayer.kt | 2 +- .../internal/layers/PrecompositionLayer.kt | 29 ++++++++++++------- .../compottie/internal/layers/ShapeLayer.kt | 7 ++--- .../internal/services/LottieAssetService.kt | 15 ---------- .../internal/services/LottieServiceLocator.kt | 19 ------------ .../internal/shapes/BaseStrokeShape.kt | 6 ++-- .../compottie/internal/shapes/EllipseShape.kt | 3 +- .../compottie/internal/shapes/FillShape.kt | 2 +- .../internal/shapes/PolystarShape.kt | 2 +- .../compottie/internal/shapes/RectShape.kt | 1 + .../compottie/internal/utils/Matrix.kt | 20 ++++++------- .../compottie/internal/utils/MutableRect.kt | 27 +++++++++-------- .../internal/platform/PlatformCanvas.skiko.kt | 5 ++++ .../composeResources/files/mask_add.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 3 +- 21 files changed, 119 insertions(+), 126 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt create mode 100644 example/shared/src/commonMain/composeResources/files/mask_add.json diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt index 8194a1ac..6ca87968 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt @@ -15,7 +15,10 @@ internal actual fun ExtendedPathMeasure() : ExtendedPathMeasure = AndroidExtende private val tempAndroidMatrix = android.graphics.Matrix() internal actual fun Path.addPath(path: Path, matrix: Matrix) : Path { return asAndroidPath().apply { - this.addPath(path.asAndroidPath(), tempAndroidMatrix.apply { setFrom(matrix) }) + this.addPath(path.asAndroidPath(), tempAndroidMatrix.apply { + reset() + setFrom(matrix) + }) }.asComposePath() } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 3d8dfd6b..9870600a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -17,24 +17,29 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.drawscope.translate +import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed +import androidx.compose.ui.util.fastJoinToString import io.github.alexzhirkevich.compottie.assets.LottieAssetsFetcher import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService -import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator +import io.github.alexzhirkevich.compottie.internal.platform.getMatrix +import io.github.alexzhirkevich.compottie.internal.utils.preScale +import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlin.math.roundToInt +import kotlin.time.Duration +import kotlin.time.measureTime @Composable @@ -129,17 +134,11 @@ private class LottiePainter( p.coerceAtLeast(0f) } - private var serviceLocator = LottieServiceLocator( - LottieAssetService( - maintainOriginalImageBounds = maintainOriginalImageBounds, - assets = composition.lottieData.assets - ) - ) - init { composition.lottieData.layers.fastForEach { - it.serviceLocator = serviceLocator + it.assets = composition.lottieData.assets.associateBy(LottieAsset::id) it.composition = composition + it.maintainOriginalImageBounds = maintainOriginalImageBounds } } @@ -158,16 +157,20 @@ private class LottiePainter( val offset = Alignment.Center.align( IntSize( - (intrinsicSize.width).roundToInt(), + (intrinsicSize.width ).roundToInt(), (intrinsicSize.height).roundToInt() ), IntSize( - size.width.roundToInt(), - size.height.roundToInt() + (size.width).roundToInt(), + (size.height).roundToInt() ), layoutDirection ) + matrix.reset() +// matrix.preScale(scale.scaleX, scale.scaleY) +// matrix.preTranslate(offset.x.toFloat(), offset.y.toFloat()) + scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { composition.lottieData.layers.fastForEachReversed { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 072dc73a..51a3711e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -48,8 +48,7 @@ internal class ContentGroup( } } - //TODO: doesn't work, something wrong with getBounds - val isRenderingWithOffScreen = false//hasTwoOrMoreDrawableContent() && layerAlpha != 1f + val isRenderingWithOffScreen = hasTwoOrMoreDrawableContent() && layerAlpha < 1f drawScope.drawIntoCanvas { canvas -> if (isRenderingWithOffScreen) { @@ -115,7 +114,6 @@ internal class ContentGroup( if (transform != null) { matrix.preConcat(transform.matrix(frame)) } - rect.set(0f, 0f, 0f, 0f) contents.fastForEachReversed { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 92b71231..9cd62617 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -4,6 +4,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.toRect import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Color @@ -11,11 +12,14 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.DrawStyle +import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.isIdentity import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.helpers.Mask @@ -26,7 +30,6 @@ import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.intersect import io.github.alexzhirkevich.compottie.internal.utils.overlaps @@ -41,7 +44,10 @@ internal abstract class BaseLayer() : Layer, DrawingContent { abstract val transform: Transform override var density by mutableStateOf(1f) - override var serviceLocator: LottieServiceLocator? = null + override var assets: Map = emptyMap() + + override var maintainOriginalImageBounds = false + override lateinit var composition : LottieComposition protected val boundsMatrix = Matrix() @@ -106,7 +112,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { return } - getBounds(rect, matrix, false, frame); + getBounds(rect, matrix, false, frame) // intersectBoundsWithMatte(rect, parentMatrix) @@ -117,13 +123,15 @@ internal abstract class BaseLayer() : Layer, DrawingContent { // If the canvas has a transform, then we need to transform its bounds by its matrix // so that we know the coordinate space that the canvas is showing. canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) - drawScope.drawIntoCanvas { canvas -> canvas.getMatrix(canvasMatrix) - if (!canvasMatrix.isIdentity()) { - canvasMatrix.invert() - canvasMatrix.map(canvasBounds) - } + + //TODO: fix mask canvas mapping +// if (!canvasMatrix.isIdentity()) { +// canvasMatrix.invert() +// canvasMatrix.map(canvasBounds) +// } + if (rect.overlaps(canvasBounds)) { rect.intersect(canvasBounds) } else { @@ -249,10 +257,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { return } - val mMasks = this.masks - val size: Int = mMasks!!.size - - this.masks?.fastForEachIndexed { i, mask -> + masks?.fastForEachIndexed { i, mask -> val maskPath = mask.shape?.interpolated(frame) ?: return@fastForEachIndexed diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index b8310da9..0e572768 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -13,7 +13,6 @@ import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.helpers.Mask -import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -56,7 +55,7 @@ internal class ImageLayer( override val name: String? = null, @SerialName("sr") - override val stretch: Float = 1f, + override val timeStretch: Float = 1f, @SerialName("parent") override val parent: Int? = null, @@ -93,20 +92,14 @@ internal class ImageLayer( @Transient private val paint = Paint() - private val service by lazy { - serviceLocator?.get() - } - private val asset : LottieAsset.ImageAsset? by lazy { - service?.asset(refId) as? LottieAsset.ImageAsset + assets[refId] as? LottieAsset.ImageAsset } override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { val mAsset = asset ?: return val bitmap = mAsset.bitmap ?: return - val maintainOriginalImageBounds = service?.maintainOriginalImageBounds ?: false - paint.alpha = parentAlpha drawScope.drawIntoCanvas { canvas -> @@ -117,18 +110,20 @@ internal class ImageLayer( val dstSize = if (maintainOriginalImageBounds) { IntSize( - (mAsset.width * density).roundToInt(), - (mAsset.height * density).roundToInt() + (mAsset.width * drawScope.density).roundToInt(), + (mAsset.height * drawScope.density).roundToInt() ) } else { IntSize( - (bitmap.width * density).roundToInt(), - (bitmap.height * density).roundToInt() + (bitmap.width * drawScope.density).roundToInt(), + (bitmap.height * drawScope.density).roundToInt() ) } - val srcSize = - IntSize((bitmap.width * density).toInt(), (bitmap.height * density).toInt()) + val srcSize = IntSize( + (bitmap.width * drawScope.density).toInt(), + (bitmap.height * drawScope.density).toInt() + ) canvas.drawImageRect( bitmap, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 5e656eda..02d9af97 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.internal.services.LottieServiceLocator +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator @@ -18,7 +18,7 @@ internal sealed interface Layer { val parent : Int? - val stretch : Float + val timeStretch : Float val inPoint : Float? @@ -30,10 +30,15 @@ internal sealed interface Layer { var composition : LottieComposition - var serviceLocator : LottieServiceLocator? var density : Float + + var assets: Map + + var maintainOriginalImageBounds: Boolean } +internal val Layer.isContainerLayer get() = name == "__container" + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index a1385bcc..b089f588 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -49,7 +49,7 @@ internal class NullLayer( override val name: String? = null, @SerialName("sr") - override val stretch: Float = 1f, + override val timeStretch: Float = 1f, @SerialName("parent") override val parent: Int? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index 3e3b151f..3ea12194 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -13,7 +13,6 @@ import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.platform.clipRect -import io.github.alexzhirkevich.compottie.internal.services.LottieAssetService import io.github.alexzhirkevich.compottie.internal.utils.Utils import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -52,7 +51,7 @@ internal class PrecompositionLayer( override val name: String? = null, @SerialName("sr") - override val stretch: Float = 1f, + override val timeStretch: Float = 1f, @SerialName("parent") override val parent: Int? = null, @@ -68,14 +67,13 @@ internal class PrecompositionLayer( ) : BaseLayer() { @Transient - private val newClipRect = MutableRect(0f,0f,0f,0f) + private val newClipRect = MutableRect(0f, 0f, 0f, 0f) @Transient private val layerPaint = Paint() private val layers by lazy { - val a = serviceLocator?.get()?.asset(refId) - (a as? LottieAsset.PrecompositionAsset?)?.layers + (assets[refId] as? LottieAsset.PrecompositionAsset?)?.layers } override fun drawLayer( @@ -89,7 +87,7 @@ internal class PrecompositionLayer( parentMatrix.map(newClipRect) // Apply off-screen rendering only when needed in order to improve rendering performance. - val isDrawingWithOffScreen = false + val isDrawingWithOffScreen = layers.isNullOrEmpty() && parentAlpha < 1f drawScope.drawIntoCanvas { canvas -> @@ -104,25 +102,34 @@ internal class PrecompositionLayer( layers?.fastForEachReversed { layer -> // Only clip precomps. This mimics the way After Effects renders animations. - val ignoreClipOnThisLayer = "__container" == layer.name + val ignoreClipOnThisLayer = isContainerLayer if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { canvas.clipRect(newClipRect) } - (layer as? DrawingContent)?.draw(drawScope, parentMatrix, childAlpha, remappedFrame(frame)) + (layer as? DrawingContent)?.draw( + drawScope, + parentMatrix, + childAlpha, + remappedFrame(frame) + ) } canvas.restore() } } - private fun remappedFrame(frame: Float) : Float{ + private fun remappedFrame(frame: Float): Float { if (timeRemapping == null) return frame - return timeRemapping.interpolated(frame) * - composition.frameRate + composition.startFrame + val f = if (timeStretch != 0f && !isContainerLayer) { + frame / timeStretch + } else frame + + return timeRemapping.interpolated(f) * + composition.frameRate - composition.startFrame } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index b5d921e6..b2fb4af1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -58,7 +58,7 @@ internal class ShapeLayer( val effect: List = emptyList(), @SerialName("sr") - override val stretch: Float = 1f, + override val timeStretch: Float = 1f, @SerialName("parent") override val parent: Int? = null, @@ -85,9 +85,6 @@ internal class ShapeLayer( override val masks: List? = null, ) : BaseLayer(), VisualLayer { - @Transient - private val boundMatrix = Matrix() - @Transient private val contentGroup = ContentGroup( name = name, @@ -109,6 +106,6 @@ internal class ShapeLayer( frame: Float, ) { super.getBounds(outBounds, parentMatrix, applyParents, frame) - contentGroup.getBounds(outBounds, boundMatrix, applyParents, frame) + contentGroup.getBounds(outBounds, boundsMatrix, applyParents, frame) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt deleted file mode 100644 index 3cca5dc2..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieAssetService.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.services - -import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset - -internal class LottieAssetService( - val maintainOriginalImageBounds : Boolean, - assets : List -) : LottieService { - - private val assets = assets.associateBy { it.id } - - fun asset(id : String) : LottieAsset? { - return assets[id] - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt deleted file mode 100644 index c2156e94..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/services/LottieServiceLocator.kt +++ /dev/null @@ -1,19 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.services - -import kotlin.reflect.KClass - -internal interface LottieService - -internal class LottieServiceLocator( - private val services: Map, LottieService> -) { - inline fun get(): T where T : LottieService { - return services[T::class] as T - } -} - -internal fun LottieServiceLocator( - vararg services : LottieService -) = LottieServiceLocator( - services.associateBy { it::class } -) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index a53170df..96003e42 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -186,8 +186,10 @@ internal abstract class BaseStrokeShape() : DrawingContent { val width = strokeWidth.interpolated(frame) rect.set( - rect.left - width / 2f, rect.top - width / 2f, - rect.right + width / 2f, rect.bottom + width / 2f + rect.left - width / 2f, + rect.top - width / 2f, + rect.right + width / 2f, + rect.bottom + width / 2f ) outBounds.set(rect) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 310aa1d1..787daaa5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -41,6 +41,7 @@ internal class EllipseShape( override fun getPath(frame: Float): Path { if (hidden) { + path.rewind() return path } @@ -52,7 +53,7 @@ internal class EllipseShape( val cpW = halfWidth * ELLIPSE_CONTROL_POINT_PERCENTAGE val cpH = halfHeight * ELLIPSE_CONTROL_POINT_PERCENTAGE - path.reset() + path.rewind() // if (circleShape.isReversed) { // path.moveTo(0f, -halfHeight) // path.cubicTo(0 - cpW, -halfHeight, -halfWidth, 0 - cpH, -halfWidth, 0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 2b6638fb..d05fafb7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -81,7 +81,7 @@ internal class FillShape( path.reset() paths.fastForEach { - this.path.addPath(it.getPath(frame), parentMatrix) + path.addPath(it.getPath(frame), parentMatrix) } outBounds.set(path.getBounds()) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 659cd2a1..428a7dd4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -86,7 +86,7 @@ internal class PolystarShape( override fun getPath(frame: Float): Path { - path.reset() + path.rewind() when (starType) { StarType.Star -> createStarPath(frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index ac215200..02ff7190 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -59,6 +59,7 @@ internal class RectShape( path.rewind() return path } + path.rewind() val position = position.interpolated(frame) val size = size.interpolated(frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index 451654e8..e1f9ae49 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -2,12 +2,12 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.graphics.Matrix -private val tempMatrix = Matrix() - +private val tempMatrixConcat = Matrix() +private val tempMatrixTransform = Matrix() fun Matrix.preTranslate(x : Float, y : Float) { - preConcat(tempMatrix.apply { + preConcat(tempMatrixTransform.apply { reset() translate(x, y) }) @@ -15,9 +15,9 @@ fun Matrix.preTranslate(x : Float, y : Float) { } fun Matrix.preConcat(other : Matrix) { - tempMatrix.setFrom(other) - tempMatrix.timesAssign(this) - this.setFrom(tempMatrix) + tempMatrixConcat.setFrom(other) + tempMatrixConcat.timesAssign(this) + this.setFrom(tempMatrixConcat) // timesAssign(other) } @@ -34,16 +34,16 @@ fun Matrix.setValues(values : FloatArray){ } fun Matrix.preRotate(degree : Float) { - preConcat(tempMatrix.apply { + preConcat(tempMatrixTransform.apply { reset() rotateZ(degree) }) -// -// return rotateZ(degree) + + return rotateZ(degree) } fun Matrix.preScale(x : Float, y : Float) { - preConcat(tempMatrix.apply { + preConcat(tempMatrixTransform.apply { reset() scale(x, y) }) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt index d51af511..b298c3a0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt @@ -2,6 +2,8 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Rect +import kotlin.math.max +import kotlin.math.min internal fun MutableRect.intersect(other: MutableRect) = intersect( @@ -18,20 +20,21 @@ internal fun MutableRect.overlaps(other: MutableRect): Boolean { return true } -internal fun MutableRect.union(other : MutableRect){ +internal fun MutableRect.union(other : MutableRect) { + + if ((other.left >= other.right) || (other.top >= other.bottom)) { + return + } + if ((left < right) && (top < bottom)) { - if ((this.left < this.right) && (this.top < this.bottom)) { - if (this.left > left) this.left = left; - if (this.top > top) this.top = top; - if (this.right < right) this.right = right; - if (this.bottom < bottom) this.bottom = bottom; - } else { - this.left = left; - this.top = top; - this.right = right; - this.bottom = bottom; - } + set(other) + return } + + left = min(left, other.left) + top = min(top, other.top) + right = max(right, other.top) + bottom = max(right, other.bottom) } internal fun MutableRect.set(other : MutableRect){ diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt index 13792438..cc9cf6a2 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.skiko.kt @@ -8,6 +8,11 @@ import androidx.compose.ui.graphics.nativeCanvas internal actual fun Canvas.getMatrix(matrix: Matrix) { nativeCanvas.localToDevice.mat.copyInto(matrix.values) + + //TODO: some random perspective is always + // returned for skiko canvas even if it is untouched + matrix[0, 3] = 0f + matrix[1, 3] = 0f } internal actual fun Canvas.saveLayer(rect : MutableRect, paint : Paint, flag : Int) { diff --git a/example/shared/src/commonMain/composeResources/files/mask_add.json b/example/shared/src/commonMain/composeResources/files/mask_add.json new file mode 100644 index 00000000..875108d0 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mask_add.json @@ -0,0 +1 @@ +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{b3d1b083-9de7-4537-a691-fc9aa42f9742}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":2,"st":0,"ip":0,"op":180,"nm":"Shapes","ks":{},"shapes":[{"ty":"gr","nm":"PolyStar","mn":"{528994b7-40ff-4d12-81f8-603f274da12e}","it":[{"ty":"sr","nm":"PolyStar","mn":"{ce8756d7-289f-4f84-a135-d225d57c42e0}","p":{"a":0,"k":[427.2716417910448,194.29253731343283]},"or":{"a":0,"k":216.4160919189453},"ir":{"a":0,"k":87.03440856933594},"r":{"a":0,"k":261.54803466796875},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{efd05a25-a43b-451d-83d2-53a477087223}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{523ca39c-9e57-4547-bf0e-ba7496003579}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.19607843137254902,0.3137254901960784,0.6901960784313725]},"r":1},{"ty":"tr","a":{"a":0,"k":[427.2716417910448,194.29253731343283]},"p":{"a":0,"k":[338.7223880597015,209.76716417910447]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Rectangle","mn":"{d2d7a5d5-6d91-42e8-b40a-af52a112fe38}","it":[{"ty":"rc","nm":"Rectangle","mn":"{9ef8604e-7891-4909-a655-445131b4d842}","p":{"a":0,"k":[209.17611940298502,226.8]},"s":{"a":0,"k":[363.3313432835821,369.3492537313433]},"r":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{444584d2-cb59-4cba-83a1-82cc605837fd}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{f75aed67-9b0e-41a9-b859-a14b5b0a320d}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.7686274509803922,0.8509803921568627,0.9607843137254902]},"r":1},{"ty":"tr","a":{"a":0,"k":[256.1910447761194,273.8149253731343]},"p":{"a":0,"k":[256.1910447761194,273.8149253731343]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"hasMask":true,"masksProperties":[{"mode":"a","o":{"a":0,"k":100},"inv":false,"x":{"a":0,"k":0},"pt":{"a":0,"k":{"c":true,"v":[[247.109,125.719],[66.109,306.719],[424.109,389.719]],"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]]}}}]}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 3f33ab88..47500c46 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -27,13 +27,14 @@ private val RECT = "files/rect.json" private val ROUND_RECT = "files/roundrect.json" private val ROBOT = "files/robot.json" private val PRECOMP_WITH_REMAPPING = "files/precomp_with_remapping.json" +private val MASK_ADD = "files/mask_add.json" @OptIn(ExperimentalResourceApi::class) @Composable fun App() { val json by produceState(null){ - value = Res.readBytes(PRECOMP_WITH_REMAPPING).decodeToString() + value = Res.readBytes(MASK_ADD).decodeToString() } if (json != null) { From ec7d1ffcd4e239b423698a42517b11aa9ce500d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 2 Jun 2024 18:12:17 +0300 Subject: [PATCH 014/100] stroke dash --- .../compottie/LottieAnimation.kt | 136 ++++++++++-------- .../alexzhirkevich/compottie/LottiePainter.kt | 101 +++++++++---- .../compottie/internal/helpers/StrokeDash.kt | 32 +++++ .../compottie/internal/layers/Layer.kt | 1 - .../internal/shapes/BaseStrokeShape.kt | 85 +++++++---- .../internal/shapes/GradientStrokeShape.kt | 9 +- .../internal/shapes/SolidStrokeShape.kt | 5 +- .../compottie/internal/utils/Matrix.kt | 16 +++ .../composeResources/files/dash.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 20 +-- 10 files changed, 271 insertions(+), 135 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt create mode 100644 example/shared/src/commonMain/composeResources/files/dash.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt index 5da7ca6f..cdfdcea8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt @@ -1,62 +1,74 @@ -//package io.github.alexzhirkevich.compottie -// -//import androidx.compose.foundation.Canvas -//import androidx.compose.foundation.layout.size -//import androidx.compose.runtime.Composable -//import androidx.compose.runtime.remember -//import androidx.compose.ui.Alignment -//import androidx.compose.ui.Modifier -//import androidx.compose.ui.geometry.Size -//import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -//import androidx.compose.ui.graphics.nativeCanvas -//import androidx.compose.ui.layout.ContentScale -//import androidx.compose.ui.platform.LocalDensity -//import androidx.compose.ui.unit.DpSize -//import androidx.compose.ui.unit.IntSize -//import androidx.compose.ui.unit.toOffset -//import org.jetbrains.skia.Rect -//import org.jetbrains.skia.skottie.RenderFlag -//import kotlin.math.roundToInt -// -// -//@Composable -//fun LottieAnimation( -// composition : LottieComposition?, -// progress : () -> Float, -// modifier: Modifier, -// alignment: Alignment, -// contentScale: ContentScale, -// clipToCompositionBounds : Boolean, -//) { -// val density = LocalDensity.current -// -// -// Canvas(modifier) { -// if (composition == null || composition.animation.isClosed || composition.invalidationController.isClosed) -// return@Canvas -// -// val compositionSize = composition.animation.size.let { Size(it.x, it.y) } -// -// val scale = contentScale.computeScaleFactor(compositionSize, size) -// val intSize = size.round() -// val translation = alignment.align(compositionSize * scale, intSize, layoutDirection).toOffset() -// -// drawIntoCanvas { -// if (clipToCompositionBounds) -// it.clipRect(0f, 0f, size.width, size.height) -// -// it.translate(translation.x, translation.y) -// it.scale(scale.scaleX, scale.scaleY) -// -// composition.animation -// .seek(progress(), composition.invalidationController) -// .render( -// canvas = it.nativeCanvas, -// dst = Rect.makeWH(compositionSize.width, compositionSize.height), -// *flags -// ) -// } -// } -//} -// -//internal fun Size.round() = IntSize(width.roundToInt(), height.roundToInt()) +package io.github.alexzhirkevich.compottie + +import androidx.compose.foundation.Image +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale + + +@Composable +@Deprecated( + "Use Image with rememberLottiePainter(...) instead", + replaceWith = ReplaceWith( + "Image(rememberLottiePainter(composition,progress),null,modifier,alignment,contentScale)", + "androidx.compose.foundation.Image", + "io.github.alexzhirkevich.compottie.rememberLottiePainter" + ) +) +fun LottieAnimation( + composition : LottieComposition?, + progress : () -> Float, + modifier: Modifier = Modifier, + alignment: Alignment = Alignment.Center, + contentScale: ContentScale = ContentScale.Fit, + clipToCompositionBounds : Boolean = true, +) { + Image( + painter = rememberLottiePainter(composition, progress), + contentDescription = null, + modifier = modifier, + alignment = alignment, + contentScale = contentScale, + ) +} + +@Deprecated( + "Use Image with rememberLottiePainter(...) instead", + replaceWith = ReplaceWith( + "Image(rememberLottiePainter(composition,isPlaying,restartOnPlay,reverseOnRepeat,clipSpec,speed,iterations),null,modifier,alignment,contentScale)", + "androidx.compose.foundation.Image", + "io.github.alexzhirkevich.compottie.rememberLottiePainter" + ) +) +@Composable +fun LottieAnimation( + composition: LottieComposition?, + modifier: Modifier = Modifier, + isPlaying: Boolean = true, + restartOnPlay: Boolean = true, + clipSpec: LottieClipSpec? = null, + speed: Float = 1f, + iterations: Int = 1, + reverseOnRepeat: Boolean = false, + alignment: Alignment = Alignment.Center, + contentScale: ContentScale = ContentScale.Fit, + clipToCompositionBounds: Boolean = true, +) { + Image( + painter = rememberLottiePainter( + composition = composition, + isPlaying = isPlaying, + restartOnPlay = restartOnPlay, + reverseOnRepeat = reverseOnRepeat, + clipSpec = clipSpec, + speed = speed, + iterations = iterations + ), + contentDescription = null, + modifier = modifier, + alignment = alignment, + contentScale = contentScale, + ) +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 9870600a..8aef52fd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -34,6 +34,8 @@ import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -41,55 +43,98 @@ import kotlin.math.roundToInt import kotlin.time.Duration import kotlin.time.measureTime +@Composable +fun rememberLottiePainter( + composition : LottieComposition?, + isPlaying: Boolean = true, + restartOnPlay: Boolean = true, + reverseOnRepeat: Boolean = false, + clipSpec: LottieClipSpec? = null, + speed: Float = 1f, + iterations: Int = 1, + cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, + ignoreSystemAnimatorScale: Boolean = false, + useCompositionFrameRate: Boolean = false, + maintainOriginalImageBounds: Boolean = false, + assetsFetcher: LottieAssetsFetcher = NoOpAssetsFetcher, + onLoadError : (Throwable) -> Painter = { EmptyPainter }, +) : Painter { + val progress = animateLottieCompositionAsState( + composition = composition, + isPlaying = isPlaying, + restartOnPlay = restartOnPlay, + reverseOnRepeat = reverseOnRepeat, + clipSpec = clipSpec, + speed = speed, + iterations = iterations, + cancellationBehavior = cancellationBehavior, + ignoreSystemAnimatorScale = ignoreSystemAnimatorScale, + useCompositionFrameRate = useCompositionFrameRate + ) + + return rememberLottiePainter( + composition = composition, + progress = { progress.value }, + maintainOriginalImageBounds = maintainOriginalImageBounds, + assetsFetcher = assetsFetcher, + onLoadError = onLoadError + ) +} @Composable fun rememberLottiePainter( - composition : LottieCompositionResult, + composition : LottieComposition?, + progress : () -> Float, maintainOriginalImageBounds: Boolean = false, assetsFetcher: LottieAssetsFetcher = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, - progress : () -> Float ) : Painter { val updatedOnLoadError by rememberUpdatedState(onLoadError) + val updatedComposition by rememberUpdatedState(composition) + val painter by produceState( EmptyPainter, composition, assetsFetcher, maintainOriginalImageBounds ) { - value = try { - val comp = composition.await() - coroutineScope { - comp.lottieData.assets.map { asset -> - withContext(Dispatchers.Default) { - when (asset) { - is LottieAsset.ImageAsset -> { - if (asset.bitmap == null) { - launch { - assetsFetcher - .fetch(asset.id, asset.path, asset.fileName) - ?.let { - asset.setBitmap(ImageBitmap.fromBytes(it)) + + snapshotFlow { updatedComposition } + .filterNotNull() + .collectLatest { + value = try { + coroutineScope { + it.lottieData.assets.map { asset -> + withContext(Dispatchers.Default) { + when (asset) { + is LottieAsset.ImageAsset -> { + if (asset.bitmap == null) { + launch { + assetsFetcher + .fetch(asset.id, asset.path, asset.fileName) + ?.let { + asset.setBitmap(ImageBitmap.fromBytes(it)) + } } + } else null } - } else null - } - else -> null + else -> null + } + } } - } + }.filterNotNull().joinAll() + + LottiePainter( + composition = it, + maintainOriginalImageBounds = maintainOriginalImageBounds + ) + } catch (t: Throwable) { + updatedOnLoadError(t) } - }.filterNotNull().joinAll() - - LottiePainter( - composition = composition.await(), - maintainOriginalImageBounds = maintainOriginalImageBounds - ) - } catch (t: Throwable) { - updatedOnLoadError(t) - } + } } LaunchedEffect(painter) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt new file mode 100644 index 00000000..1fb7f06f --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt @@ -0,0 +1,32 @@ +package io.github.alexzhirkevich.compottie.internal.helpers + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +internal class StrokeDash( + @SerialName("nm") + val name : String? = null, + + @SerialName("mn") + val matchName : String? = null, + + @SerialName("n") + val dashType: DashType, + + @SerialName("v") + val value : AnimatedValue +) + +@JvmInline +@Serializable +value class DashType(val type : String) { + + companion object { + val Dash = DashType("d") + val Gap = DashType("g") + val Offset = DashType("o") + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 02d9af97..1cf7cea4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -30,7 +30,6 @@ internal sealed interface Layer { var composition : LottieComposition - var density : Float var assets: Map diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 96003e42..db139b63 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -6,20 +6,25 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathEffect import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.StrokeJoin import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach +import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.helpers.DashType +import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.utils.scale import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline @@ -71,9 +76,11 @@ internal abstract class BaseStrokeShape() : DrawingContent { abstract val lineCap: LineCap abstract val lineJoin: LineJoin abstract val strokeMiter: Float + abstract val strokeDash: List? private val pathGroups = mutableListOf() + private val trimPathPath = Path() private val path = Path() private val rect = MutableRect(0f, 0f, 0f, 0f) @@ -84,6 +91,18 @@ internal abstract class BaseStrokeShape() : DrawingContent { } private val pm = ExtendedPathMeasure() + private val dashPattern by lazy { + strokeDash?.filter { it.dashType != DashType.Offset }?.map { it.value } + } + + private val dashOffset by lazy { + strokeDash?.first { it.dashType == DashType.Offset }?.value + } + + private val dashPatternValues by lazy { + FloatArray(dashPattern?.size ?: 0) + } + override fun draw( drawScope: DrawScope, parentMatrix: Matrix, @@ -98,6 +117,9 @@ internal abstract class BaseStrokeShape() : DrawingContent { if (paint.strokeWidth <= 0) { return } + + applyDashPatternIfNeeded(parentMatrix, frame) + drawScope.drawIntoCanvas { canvas -> pathGroups.fastForEach { pathGroup -> @@ -140,35 +162,6 @@ internal abstract class BaseStrokeShape() : DrawingContent { currentPathGroup?.let(pathGroups::add) } -// override fun setContents(contentsBefore: List, contentsAfter: List) { -// var trimPathContentBefore: TrimPathShape? = null -// for (i in contentsBefore.indices.reversed()) { -// val content = contentsBefore[i] -// if (content.isIndividualTrimPath()) { -// trimPathContentBefore = content -// } -// } -// -// var currentPathGroup: PathGroup? = null -// for (i in contentsAfter.indices.reversed()) { -// val content = contentsAfter[i] -// if (content.isIndividualTrimPath()) { -// if (currentPathGroup != null) { -// pathGroups.add(currentPathGroup) -// } -// currentPathGroup = PathGroup(content) -// } else if (content is PathContent) { -// if (currentPathGroup == null) { -// currentPathGroup = PathGroup(trimPathContentBefore) -// } -// currentPathGroup.paths.add(content) -// } -// } -// if (currentPathGroup != null) { -// pathGroups.add(currentPathGroup) -// } -// } - override fun getBounds( outBounds: MutableRect, parentMatrix: Matrix, @@ -211,6 +204,7 @@ internal abstract class BaseStrokeShape() : DrawingContent { if (pathGroup.trimPath == null) { return } + path.reset() pathGroup.paths.fastForEachReversed { @@ -292,6 +286,37 @@ internal abstract class BaseStrokeShape() : DrawingContent { currentLength += length } } + + private fun applyDashPatternIfNeeded(parentMatrix: Matrix, frame: Float) { + + val dp = dashPattern + val o = dashOffset?.interpolated(frame) ?: 0f + if (dp.isNullOrEmpty()) { + return + } + + val scale = parentMatrix.scale + + dp.fastForEachIndexed { i, strokeDash -> + dashPatternValues[i] = strokeDash.interpolated(frame) + // If the value of the dash pattern or gap is too small, the number of individual sections + // approaches infinity as the value approaches 0. + // To mitigate this, we essentially put a minimum value on the dash pattern size of 1px + // and a minimum gap size of 0.01. + if (i % 2 == 0) { + if (dashPatternValues[i] < 1f) { + dashPatternValues[i] = 1f + } + } else { + if (dashPatternValues[i] < 0.1f) { + dashPatternValues[i] = 0.1f + } + } + dashPatternValues[i] = dashPatternValues[i] * scale + } + + paint.pathEffect = PathEffect.dashPathEffect(dashPatternValues, o) + } } private class PathGroup( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index c969af67..12a53bbd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope @@ -10,6 +9,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -37,11 +37,14 @@ internal class GradientStrokeShape( override val strokeMiter : Float = 0f, @SerialName("o") - override val opacity : AnimatedValue, + override val opacity : AnimatedValue = AnimatedValue.Default(100f), @SerialName("w") override val strokeWidth : AnimatedValue, + @SerialName("d") + override val strokeDash: List? = null, + @SerialName("s") val startPoint : AnimatedVector2, @@ -64,7 +67,7 @@ internal class GradientStrokeShape( val colors : GradientColors, @SerialName("t") - val type : GradientType, + val type : GradientType = GradientType.Linear, ) : BaseStrokeShape(), Shape { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index f9701b8d..3e7a8906 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -1,11 +1,11 @@ package io.github.alexzhirkevich.compottie.internal.shapes -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -40,6 +40,9 @@ internal class SolidStrokeShape( @SerialName("w") override val strokeWidth : AnimatedValue, + @SerialName("d") + override val strokeDash: List? = null, + @SerialName("c") val color : AnimatedColor, ) : BaseStrokeShape(), Shape { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index e1f9ae49..aa73f6f1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -1,10 +1,26 @@ package io.github.alexzhirkevich.compottie.internal.utils +import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix +import kotlin.math.hypot +import kotlin.math.sqrt private val tempMatrixConcat = Matrix() private val tempMatrixTransform = Matrix() + + +private val InvSqrt2Offset = Offset( + 1/sqrt(2f), + 1/sqrt(2f), +) +val Matrix.scale: Float get() { + val p1 = map(Offset.Zero) + val p2 = map(InvSqrt2Offset) + + return hypot(p2.x - p1.x, p2.y - p1.y) +} + fun Matrix.preTranslate(x : Float, y : Float) { preConcat(tempMatrixTransform.apply { diff --git a/example/shared/src/commonMain/composeResources/files/dash.json b/example/shared/src/commonMain/composeResources/files/dash.json new file mode 100644 index 00000000..cb53ba94 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/dash.json @@ -0,0 +1 @@ +{"v":"5.7.1","ip":0,"op":180,"nm":"Animation","mn":"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":0,"st":0,"ip":0,"op":180,"nm":"Layer","mn":"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sr","nm":"PolyStar","mn":"{57cff206-c227-4a14-a679-195157be886b}","p":{"a":0,"k":[249.3134328358209,254.47164179104476]},"or":{"a":0,"k":200},"ir":{"a":0,"k":100},"r":{"a":0,"k":0},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"tm","nm":"Trim Path","mn":"{dcd7570f-5105-485b-bd43-42ad990b01e8}","s":{"a":0,"k":0},"e":{"a":0,"k":100},"o":{"a":0,"k":0},"m":1},{"ty":"st","nm":"Stroke","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.98,0.28]},"lc":2,"lj":2,"ml":3,"w":{"a":0,"k":32},"d":[{"n":"o","nm":"offset","v":{"a":0,"k":512}},{"n":"d","nm":"dash","v":{"a":0,"k":252}},{"n":"g","nm":"gap","v":{"a":0,"k":64}}],"r":null}]}],"meta":{"g":"Glaxnimate 0.4.6-32-gb62899be"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 47500c46..8cc7c6a0 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -6,16 +6,21 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.produceState import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.JsonString +import io.github.alexzhirkevich.compottie.LottieAnimation import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi +import kotlin.time.TimeSource +import kotlin.time.measureTime private val GRADIENT_ELLIPSE = "files/gradient_ellipse.json" private val TEST = "files/test.json" @@ -28,32 +33,27 @@ private val ROUND_RECT = "files/roundrect.json" private val ROBOT = "files/robot.json" private val PRECOMP_WITH_REMAPPING = "files/precomp_with_remapping.json" private val MASK_ADD = "files/mask_add.json" +private val DASH = "files/dash.json" @OptIn(ExperimentalResourceApi::class) @Composable fun App() { val json by produceState(null){ - value = Res.readBytes(MASK_ADD).decodeToString() + value = Res.readBytes(DASH).decodeToString() } + if (json != null) { - val composition = rememberLottieComposition( + val composition by rememberLottieComposition( LottieCompositionSpec.JsonString(json!!) ) - val progress by animateLottieCompositionAsState( - composition = composition.value, - iterations = LottieConstants.IterateForever, - ) - Image( modifier = Modifier.fillMaxSize().background(Color.LightGray), painter = rememberLottiePainter( composition = composition, - progress = { - progress - }, + iterations = LottieConstants.IterateForever, onLoadError = { throw it } ), contentDescription = null From 3f3cd367cad13a874c9e3ad49cb6f06f9833d8ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 2 Jun 2024 19:18:48 +0300 Subject: [PATCH 015/100] repreater, rounded corners --- .../internal/animation/AnimatedTransform.kt | 2 +- .../internal/animation/RepeaterTransform.kt | 73 ++++++++++ .../internal/content/ContentGroup.kt | 12 +- .../internal/content/GreedyContent.kt | 5 + .../internal/shapes/BaseStrokeShape.kt | 8 +- .../compottie/internal/shapes/FillShape.kt | 12 ++ .../internal/shapes/GradientFillShape.kt | 7 +- .../internal/shapes/PolystarShape.kt | 10 +- .../internal/shapes/RepeaterShape.kt | 136 ++++++++++++++++++ .../compottie/internal/shapes/RoundShape.kt | 15 ++ .../compottie/internal/utils/Matrix.kt | 5 +- .../composeResources/files/repeater.json | 1 + .../files/rounding_corners.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 4 +- 14 files changed, 283 insertions(+), 8 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt create mode 100644 example/shared/src/commonMain/composeResources/files/repeater.json create mode 100644 example/shared/src/commonMain/composeResources/files/rounding_corners.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 776cde18..dafac0e8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -21,7 +21,7 @@ internal abstract class AnimatedTransform { abstract val skew: AnimatedValue? abstract val skewAxis: AnimatedValue? - private val matrix: Matrix = Matrix() + protected val matrix: Matrix = Matrix() private val skewMatrix1: Matrix by lazy { Matrix() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt new file mode 100644 index 00000000..c1d38a17 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt @@ -0,0 +1,73 @@ +package io.github.alexzhirkevich.compottie.internal.animation + +import androidx.compose.ui.graphics.Matrix +import io.github.alexzhirkevich.compottie.internal.utils.preRotate +import io.github.alexzhirkevich.compottie.internal.utils.preScale +import io.github.alexzhirkevich.compottie.internal.utils.preTranslate +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.math.pow + +@Serializable +internal class RepeaterTransform( + @SerialName("a") + override val anchorPoint : AnimatedVector2? = null , + + @SerialName("p") + override val position : AnimatedVector2? = null, + + @SerialName("s") + override val scale : AnimatedVector2? = null, + + @SerialName("r") + override val rotation : AnimatedValue? = null, + + @SerialName("o") + override val opacity : AnimatedValue? = null, + + @SerialName("sk") + override val skew: AnimatedValue? = null, + + @SerialName("sa") + override val skewAxis: AnimatedValue? = null, + + @SerialName("so") + val startOpacity : AnimatedValue? = null, + + @SerialName("eo") + val endOpacity : AnimatedValue? = null, +) : AnimatedTransform() { + + fun repeaterMatrix(frame: Float, amount: Float): Matrix { + matrix.reset() + + position?.interpolated(frame)?.let { + matrix.preTranslate( + it.x * amount, + it.y * amount + ) + } + + scale?.interpolated(frame)?.let { + matrix.preScale( + it.x.div(100f).pow(amount), + it.y.div(100f).pow(amount) + ) + } + + rotation?.interpolated(frame)?.let { + val anchorPoint = anchorPoint?.interpolated(it) + + if (anchorPoint != null) { + matrix.translate(anchorPoint.x, anchorPoint.y) + } + matrix.preRotate(it * amount) + + if (anchorPoint != null) { + matrix.translate(-anchorPoint.x, -anchorPoint.y) + } + } + + return matrix + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 51a3711e..a0f8afe2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -18,7 +18,7 @@ import io.github.alexzhirkevich.compottie.internal.utils.union internal class ContentGroup( override val name: String?, val hidden: Boolean, - val contents: List, + contents: List, val transform: AnimatedTransform?, ) : PathAndDrawingContext { @@ -31,6 +31,16 @@ internal class ContentGroup( private val boundsRect = MutableRect(0f,0f,0f,0f) + private val contents = contents.toMutableList() + + init { + val greedyContents = contents.filterIsInstance().reversed() + + greedyContents.fastForEachReversed { + it.absorbContent(this.contents.listIterator(this.contents.size)) + } + } + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { if (hidden) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt new file mode 100644 index 00000000..1bdb8c36 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.internal.content + +interface GreedyContent { + fun absorbContent(contents: MutableListIterator) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index db139b63..3b990bfd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -103,13 +103,14 @@ internal abstract class BaseStrokeShape() : DrawingContent { FloatArray(dashPattern?.size ?: 0) } + private var roundShape : RoundShape? = null + override fun draw( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float ) { - paint.style = PaintingStyle.Stroke paint.alpha = parentAlpha * (opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) paint.strokeWidth = strokeWidth.interpolated(frame) @@ -120,6 +121,8 @@ internal abstract class BaseStrokeShape() : DrawingContent { applyDashPatternIfNeeded(parentMatrix, frame) + roundShape?.applyTo(paint, frame) + drawScope.drawIntoCanvas { canvas -> pathGroups.fastForEach { pathGroup -> @@ -156,6 +159,8 @@ internal abstract class BaseStrokeShape() : DrawingContent { currentPathGroup = PathGroup(trimPathContentBefore) } currentPathGroup!!.paths.add(content) + } else if (content is RoundShape){ + roundShape = content } } @@ -287,6 +292,7 @@ internal abstract class BaseStrokeShape() : DrawingContent { } } + private fun applyDashPatternIfNeeded(parentMatrix: Matrix, frame: Float) { val dp = dashPattern diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index d05fafb7..0f281561 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -18,6 +18,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable @SerialName("fl") @@ -45,12 +46,18 @@ internal class FillShape( val color : AnimatedColor, ) : Shape, DrawingContent { + @Transient private val path = Path() + @Transient private var paths: List = emptyList() + @Transient private val paint = Paint() + @Transient + private var roundShape : RoundShape? = null + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { if (hidden) { @@ -68,6 +75,9 @@ internal class FillShape( paths.fastForEach { path.addPath(it.getPath(frame), parentMatrix) } + + roundShape?.applyTo(paint, frame) + drawScope.drawIntoCanvas { canvas -> canvas.drawPath(path, paint) } @@ -96,5 +106,7 @@ internal class FillShape( override fun setContents(contentsBefore: List, contentsAfter: List) { paths = contentsAfter.filterIsInstance() + + roundShape = contentsBefore?.find { it is RoundShape } as? RoundShape } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 05b5c5b6..35585061 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -73,10 +73,11 @@ internal class GradientFillShape( @Transient private val paint = Paint() - @Transient private val gradientCache = LinkedHashMap() + @Transient + private var roundShape : RoundShape? = null override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { @@ -96,6 +97,9 @@ internal class GradientFillShape( matrix = parentMatrix, cache = gradientCache ) + + roundShape?.applyTo(paint, frame) + drawScope.drawIntoCanvas { it.drawPath(path, paint) } @@ -123,6 +127,7 @@ internal class GradientFillShape( override fun setContents(contentsBefore: List, contentsAfter: List) { paths = contentsAfter.filterIsInstance() + roundShape = contentsBefore.find { it is RoundShape } as? RoundShape } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 428a7dd4..e24880ce 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -148,6 +148,8 @@ internal class PolystarShape( currentAngle += halfAnglePerPoint } + val startX = x + val startY = y // True means the line will go to outer radius. False means inner radius. var longSegment = false @@ -167,7 +169,11 @@ internal class PolystarShape( y = radius * sin(currentAngle) if (innerRoundedness == 0f && outerRoundedness == 0f) { - path.lineTo(x, y) + if (i == numPoints-1){ + path.lineTo(startX, startY) + } else { + path.lineTo(x, y) + } } else { val cp1Theta = (atan2(previousY, previousX) - HalfPI) val cp1Dx = cos(cp1Theta).toFloat() @@ -209,7 +215,7 @@ internal class PolystarShape( } - val position = position?.interpolated(frame)?.let { + position?.interpolated(frame)?.let { path.translate(it) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt new file mode 100644 index 00000000..e625b1c9 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -0,0 +1,136 @@ +package io.github.alexzhirkevich.compottie.internal.shapes + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.RepeaterTransform +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.ContentGroup +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.content.GreedyContent +import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.utils.preConcat +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("rp") +internal class RepeaterShape( + + @SerialName("c") + val copies : AnimatedValue, + + @SerialName("o") + val offset : AnimatedValue? = null, + + @SerialName("tr") + val transform: RepeaterTransform, + + @SerialName("nm") + override val name: String? = null, + + @SerialName("mn") + override val matchName: String? = null, + + @SerialName("hd") + override val hidden: Boolean = false +) : Shape, GreedyContent, DrawingContent, PathContent { + + @Transient + private var contentGroup: ContentGroup? = null + + @Transient + private val path = Path() + + @Transient + private val matrix = Matrix() + + override fun draw( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { + contentGroup?.let { contentGroup -> + val copies = copies.interpolated(frame) + val offset = offset?.interpolated(frame) ?: 0f + val startOpacity = transform.startOpacity?.interpolated(frame)?.div(100f) ?: 1f + val endOpacity = transform.endOpacity?.interpolated(frame)?.div(100f) ?: 1f + + for (i in copies.toInt() - 1 downTo 0) { + matrix.setFrom(parentMatrix) + matrix.preConcat(transform.repeaterMatrix(frame, i + offset)) + val newAlpha = parentAlpha * lerp(startOpacity, endOpacity, i / copies) + contentGroup.draw(drawScope, matrix, newAlpha, frame) + } + } + } + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Float + ) { + contentGroup?.getBounds(outBounds, parentMatrix, applyParents, frame) + } + + override fun getPath(frame: Float): Path { + path.reset() + val contentPath = contentGroup?.getPath(frame) ?: return path + + val copies = copies.interpolated(frame) + val offset = offset?.interpolated(frame) ?: 0f + + for (i in copies.toInt() - 1 downTo 0) { + matrix.setFrom(transform.repeaterMatrix(frame, i + offset)) + path.addPath(contentPath, matrix) + } + return path + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + contentGroup?.setContents(contentsBefore, contentsAfter) + + } + + override fun absorbContent(contents: MutableListIterator) { + + // This check prevents a repeater from getting added twice. + // This can happen in the following situation: + // RECTANGLE + // REPEATER 1 + // FILL + // REPEATER 2 + // In this case, the expected structure would be: + // REPEATER 2 + // REPEATER 1 + // RECTANGLE + // FILL + // Without this check, REPEATER 1 will try and absorb contents once it is already inside of + // REPEATER 2. + if (contentGroup != null) { + return + } + + // Fast forward the iterator until after this content. + @Suppress("ControlFlowWithEmptyBody") + while (contents.hasPrevious() && contents.previous() !== this) { + } + + val contentsList = mutableListOf() + + while (contents.hasPrevious()) { + contentsList.add(contents.previous()) + contents.remove() + } + contentsList.reverse() + + contentGroup = ContentGroup(name, hidden, contentsList, null) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index 1d8ce4da..aa0209fe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -1,6 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PathEffect import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue @@ -30,6 +32,7 @@ internal class RoundShape( @Transient private var shapeData: ShapeData? = null + override fun modify(shape: ShapeData, frame: Float): ShapeData { val startingCurves: List = shape.curves @@ -185,4 +188,16 @@ internal class RoundShape( } } +internal fun RoundShape.applyTo(paint: Paint, frame: Float){ + if (!hidden){ + val radius = radius.interpolated(frame) + val effect = PathEffect.cornerPathEffect(radius) + paint.pathEffect = if (paint.pathEffect == null) { + effect + } else { + PathEffect.chainPathEffect(effect, paint.pathEffect!!) + } + } +} + private const val ROUNDED_CORNER_MAGIC_NUMBER = 0.5519f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index aa73f6f1..7ec3c805 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -55,9 +55,12 @@ fun Matrix.preRotate(degree : Float) { rotateZ(degree) }) - return rotateZ(degree) +// return rotateZ(degree) } + + + fun Matrix.preScale(x : Float, y : Float) { preConcat(tempMatrixTransform.apply { reset() diff --git a/example/shared/src/commonMain/composeResources/files/repeater.json b/example/shared/src/commonMain/composeResources/files/repeater.json new file mode 100644 index 00000000..9002b1c2 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/repeater.json @@ -0,0 +1 @@ +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{33a02914-c5a9-4c4e-a0bd-0ec07f05b204}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":0,"st":0,"ip":0,"op":180,"nm":"Layer","mn":"{9eb62fdc-6d5b-4771-94c0-ebdafbd7a54e}","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"PolyStar","mn":"{bfbf6254-ff78-4d00-9d09-eafe4e34b732}","it":[{"ty":"sr","nm":"PolyStar","mn":"{5a453691-6b60-4bd3-bc43-e28b7a0ebc48}","p":{"a":0,"k":[80,120]},"or":{"a":0,"k":80},"ir":{"a":0,"k":40},"r":{"a":0,"k":0},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"st","nm":"Stroke","mn":"{b0ba4cf0-3a1b-45a3-8912-d0ed2bdd2082}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{0c2313ae-ccff-4e71-9e00-81649390d850}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.9803921568627451,0.2823529411764706]},"r":1},{"ty":"rp","nm":"Repeater","mn":"{a9e13270-7dd8-4520-b5a1-c1c9cf96286b}","c":{"a":0,"k":4},"o":{"a":0,"k":0},"m":1,"tr":{"a":{"a":0,"k":[80,120]},"p":{"a":0,"k":[130,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":137},"so":{"a":0,"k":100},"eo":{"a":0,"k":50}}},{"ty":"tr","a":{"a":0,"k":[65.33731343283583,117.77910447761194]},"p":{"a":0,"k":[73.93432835820896,93.70746268656717]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/rounding_corners.json b/example/shared/src/commonMain/composeResources/files/rounding_corners.json new file mode 100644 index 00000000..548d6f10 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/rounding_corners.json @@ -0,0 +1 @@ +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{8f1618e3-6f83-4531-8f65-07dd4b68ee2e}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":0,"st":0,"ip":0,"op":180,"nm":"Layer","mn":"{85f37d8b-1792-4a4f-82d2-1b3b6d829c07}","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"PolyStar","mn":"{9199543e-3552-4e51-a802-623f2a4a2ca1}","it":[{"ty":"sr","nm":"PolyStar","mn":"{57cff206-c227-4a14-a679-195157be886b}","p":{"a":0,"k":[256,256]},"or":{"a":0,"k":222.72242736816406},"ir":{"a":0,"k":111.36121368408203},"r":{"a":0,"k":358.67291259765625},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"rd","nm":"Rounded Corners","mn":"{dcd7570f-5105-485b-bd43-42ad990b01e8}","r":{"a":0,"k":66}},{"ty":"st","nm":"Stroke","mn":"{0930ce27-c8f9-4371-b0cf-111a859abfaf}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.9803921568627451,0.2823529411764706]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":30}},{"ty":"fl","hd":true,"nm":"Fill","mn":"{a1bcc159-6916-4718-841d-a99140c0e74b}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,0.9803921568627451,0.2823529411764706]},"r":1},{"ty":"tr","a":{"a":0,"k":[249.3134328358209,254.47164179104476]},"p":{"a":0,"k":[249.3134328358209,254.47164179104476]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 8cc7c6a0..6e85539d 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -34,13 +34,15 @@ private val ROBOT = "files/robot.json" private val PRECOMP_WITH_REMAPPING = "files/precomp_with_remapping.json" private val MASK_ADD = "files/mask_add.json" private val DASH = "files/dash.json" +private val ROUNDING_CORENERS = "files/rounding_corners.json" +private val REPEATER = "files/repeater.json" @OptIn(ExperimentalResourceApi::class) @Composable fun App() { val json by produceState(null){ - value = Res.readBytes(DASH).decodeToString() + value = Res.readBytes(ROUNDING_CORENERS).decodeToString() } From 8183d9cf742cd65dc87e89f63c43030e3165d032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 2 Jun 2024 19:27:27 +0300 Subject: [PATCH 016/100] hold keyframe --- .../animation/BaseKeyframeAnimation.kt | 6 +-- .../internal/animation/BezierKeyframe.kt | 10 ++++- .../compottie/internal/animation/Keyframe.kt | 41 ++++++++++++------- .../internal/animation/ValueKeyframe.kt | 4 ++ .../internal/animation/VectorKeyframe.kt | 4 ++ 5 files changed, 46 insertions(+), 19 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index 303cb721..0667dd82 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -27,7 +27,7 @@ internal class BaseKeyframeAnimation( InvalidKeyframeError ), requireNotNull( - sortedKeyframes[0].end ?: sortedKeyframes.getOrNull(1)?.start, + sortedKeyframes[0].endHold ?: sortedKeyframes.getOrNull(1)?.start, InvalidKeyframeError ), 0f, @@ -44,7 +44,7 @@ internal class BaseKeyframeAnimation( InvalidKeyframeError ), requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.end + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.endHold ?: sortedKeyframes.last().start, InvalidKeyframeError ), @@ -80,7 +80,7 @@ internal class BaseKeyframeAnimation( InvalidKeyframeError ), requireNotNull( - sortedKeyframes[kfIdx].end + sortedKeyframes[kfIdx].endHold ?: sortedKeyframes.getOrNull(kfIdx + 1)?.start, InvalidKeyframeError ), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt index 8d5b85be..3936098d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.content.modifiedBy import io.github.alexzhirkevich.compottie.internal.helpers.Bezier +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData import kotlinx.serialization.SerialName @@ -20,6 +21,9 @@ internal class BezierKeyframe( @SerialName("t") override val time: Float, + @SerialName("h") + override val hold: BooleanInt = BooleanInt.No, + @SerialName("i") override val inValue : BezierInterpolation? = null, @@ -35,7 +39,8 @@ internal fun BezierKeyframe.toShapeKeyframe( end = end?.toShapeData()?.modifiedBy(modifiers, frame), time = time, inValue = inValue, - outValue = outValue + outValue = outValue, + hold = hold ) internal class ShapeKeyframe( @@ -46,7 +51,10 @@ internal class ShapeKeyframe( override val time: Float, + override val hold: BooleanInt = BooleanInt.No, + override val inValue : BezierInterpolation? = null, override val outValue : BezierInterpolation? = null, + ) : Keyframe() \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt index 6dca8faa..7367e8a4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt @@ -3,35 +3,46 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.animation.core.CubicBezierEasing import androidx.compose.animation.core.Easing import androidx.compose.animation.core.LinearEasing +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt internal abstract class Keyframe { abstract val start: T? abstract val end: T? abstract val time: Float + abstract val hold : BooleanInt abstract val inValue: BezierInterpolation? abstract val outValue: BezierInterpolation? + val endHold get() = if (hold == BooleanInt.Yes) start else end val easingX: Easing by lazy { - val i = inValue - val o = outValue - - if (!i?.x.isNullOrEmpty() && - !i?.y.isNullOrEmpty() && - !o?.x.isNullOrEmpty() && !o?.y.isNullOrEmpty()) { - CubicBezierEasing(o!!.x[0], o.y[0], i!!.x[0], i.y[0]) - } else LinearEasing + if (hold == BooleanInt.Yes) { + LinearEasing + } else { + val i = inValue + val o = outValue + + if (!i?.x.isNullOrEmpty() && + !i?.y.isNullOrEmpty() && + !o?.x.isNullOrEmpty() && !o?.y.isNullOrEmpty() + ) { + CubicBezierEasing(o!!.x[0], o.y[0], i!!.x[0], i.y[0]) + } else LinearEasing + } } val easingY by lazy { - - val i = inValue - val o = outValue - - if ( i?.x?.size == 2 && i.y.size == 2 && o?.x?.size == 2 && o.y.size == 2){ - CubicBezierEasing(o.x[1], o.y[1], i.x[1], i.y[1]) + if (hold == BooleanInt.Yes) { + LinearEasing } else { - easingX + val i = inValue + val o = outValue + + if (i?.x?.size == 2 && i.y.size == 2 && o?.x?.size == 2 && o.y.size == 2) { + CubicBezierEasing(o.x[1], o.y[1], i.x[1], i.y[1]) + } else { + easingX + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt index 40764c73..87237772 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.animation +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.serializer @@ -19,6 +20,9 @@ internal class ValueKeyframe( @SerialName("t") override val time: Float, + @SerialName("h") + override val hold: BooleanInt = BooleanInt.No, + @SerialName("i") override val inValue : BezierInterpolation? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index 30eab4e4..11b815d8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.animation +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -15,6 +16,9 @@ internal data class VectorKeyframe( @SerialName("t") override val time : Float, + @SerialName("h") + override val hold: BooleanInt = BooleanInt.No, + @SerialName("i") override val inValue : BezierInterpolation? = null, From 85ab607eb806c98e59cf5b08db4f05d1c3438840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 2 Jun 2024 21:47:52 +0300 Subject: [PATCH 017/100] merge paths --- .../alexzhirkevich/compottie/LottiePainter.kt | 32 ++-- .../compottie/internal/LottieData.kt | 4 +- .../internal/animation/AnimatedTransform.kt | 2 + .../internal/content/ContentGroup.kt | 38 +++-- .../internal/content/ContentGroupBase.kt | 10 ++ .../internal/content/PathAndDrawingContext.kt | 4 - .../internal/layers/BaseCompositionLayer.kt | 154 ++++++++++++++++++ .../compottie/internal/layers/BaseLayer.kt | 2 +- .../internal/layers/CompositionLayer.kt | 38 +++++ .../internal/layers/PrecompositionLayer.kt | 80 +-------- .../compottie/internal/layers/ShapeLayer.kt | 3 +- .../internal/shapes/GradientFillShape.kt | 16 +- .../compottie/internal/shapes/GroupShape.kt | 5 +- .../internal/shapes/MergePathsShape.kt | 144 ++++++++++++++++ .../composeResources/files/robot_404.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 4 +- 16 files changed, 419 insertions(+), 118 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt create mode 100644 example/shared/src/commonMain/composeResources/files/robot_404.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 8aef52fd..a36df388 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -29,6 +29,9 @@ import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer +import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer +import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate @@ -163,8 +166,8 @@ private class LottiePainter( ) : Painter() { override val intrinsicSize: Size = Size( - composition.lottieData.width.toFloat(), - composition.lottieData.height.toFloat() + composition.lottieData.width, + composition.lottieData.height ) var progress: Float by mutableStateOf(0f) @@ -179,8 +182,15 @@ private class LottiePainter( p.coerceAtLeast(0f) } + val compositionLayer = if (composition.lottieData.layers.size == 1 && composition.lottieData.layers[0] is PrecompositionLayer){ + composition.lottieData.layers[0] as BaseCompositionLayer + } else { + CompositionLayer(composition) + } + + init { - composition.lottieData.layers.fastForEach { + compositionLayer.let { it.assets = composition.lottieData.assets.associateBy(LottieAsset::id) it.composition = composition it.maintainOriginalImageBounds = maintainOriginalImageBounds @@ -218,16 +228,12 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { - composition.lottieData.layers.fastForEachReversed { - if (it is DrawingContent) { - it.density = density - try { - it.draw(this, matrix, alpha, currentFrame) - } catch (t: Throwable) { - println("Lottie crashed in draw :(") - t.printStackTrace() - } - } + compositionLayer.density = density + try { + compositionLayer.draw(this, matrix, alpha, currentFrame) + } catch (t: Throwable) { + println("Lottie crashed in draw :(") + t.printStackTrace() } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index b7caeee9..0731278c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -13,10 +13,10 @@ internal class LottieData( val frameRate : Float, @SerialName("w") - val width : Int, + val width : Float, @SerialName("h") - val height : Int, + val height : Float, @SerialName("v") val version : String, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index dafac0e8..a588471a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -7,6 +7,8 @@ import io.github.alexzhirkevich.compottie.internal.utils.preRotate import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import io.github.alexzhirkevich.compottie.internal.utils.setValues +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient import kotlin.math.cos import kotlin.math.sin import kotlin.math.tan diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index a0f8afe2..8f174ad0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -9,35 +9,43 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient internal class ContentGroup( override val name: String?, val hidden: Boolean, contents: List, - val transform: AnimatedTransform?, -) : PathAndDrawingContext { + override val transform: AnimatedTransform?, +) : ContentGroupBase { private val rect = MutableRect(0f,0f,0f,0f) private val offscreenRect = MutableRect(0f,0f,0f,0f) private val offscreenPaint = Paint() private val matrix = Matrix() private val path = Path() - private var pathContents: MutableList? = null - private val boundsRect = MutableRect(0f,0f,0f,0f) - private val contents = contents.toMutableList() + private val mContents by lazy { + contents.filter { + !(it is ContentGroupBase && it.pathContents.isEmpty()) + }.toMutableList() + } + + override val pathContents: List by lazy { + this.mContents.filterIsInstance() + } init { val greedyContents = contents.filterIsInstance().reversed() greedyContents.fastForEachReversed { - it.absorbContent(this.contents.listIterator(this.contents.size)) + it.absorbContent(this.mContents.listIterator(this.mContents.size)) } } @@ -70,7 +78,7 @@ internal class ContentGroup( val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha - contents.fastForEachReversed { content -> + mContents.fastForEachReversed { content -> if (content is DrawingContent) { content.draw(drawScope, matrix, childAlpha, frame) } @@ -93,7 +101,7 @@ internal class ContentGroup( if (transform != null) { matrix.setFrom(transform.matrix(frame)) } - contents.fastForEachReversed { + mContents.fastForEachReversed { if (it is PathContent) { path.addPath(it.getPath(frame), matrix) } @@ -104,12 +112,12 @@ internal class ContentGroup( override fun setContents(contentsBefore: List, contentsAfter: List) { // Do nothing with contents after. - val myContentsBefore: MutableList = ArrayList(contentsBefore.size + contents.size) + val myContentsBefore: MutableList = ArrayList(contentsBefore.size + mContents.size) myContentsBefore.addAll(contentsBefore) - for (i in contents.indices.reversed()) { - val content = contents[i] - content.setContents(myContentsBefore, contents.subList(0, i)) + for (i in mContents.indices.reversed()) { + val content = mContents[i] + content.setContents(myContentsBefore, mContents.subList(0, i)) myContentsBefore.add(content) } } @@ -126,7 +134,7 @@ internal class ContentGroup( } rect.set(0f, 0f, 0f, 0f) - contents.fastForEachReversed { + mContents.fastForEachReversed { if (it is DrawingContent) { it.getBounds(rect, matrix, applyParents, frame) outBounds.union(rect) @@ -137,7 +145,7 @@ internal class ContentGroup( private fun hasTwoOrMoreDrawableContent(): Boolean { var drawableContentCount = 0 - contents.fastForEach { + mContents.fastForEach { if (it is DrawingContent) { drawableContentCount += 1 if (drawableContentCount >= 2) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt new file mode 100644 index 00000000..7111f067 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt @@ -0,0 +1,10 @@ +package io.github.alexzhirkevich.compottie.internal.content + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform + +internal interface ContentGroupBase : DrawingContent, PathContent { + + val pathContents : List + + val transform : AnimatedTransform? +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt deleted file mode 100644 index 161515c9..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathAndDrawingContext.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.content - -internal interface PathAndDrawingContext : DrawingContent, PathContent { -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt new file mode 100644 index 00000000..4c0a0203 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -0,0 +1,154 @@ +package io.github.alexzhirkevich.compottie.internal.layers + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.util.fastForEach +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.platform.clipRect +import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.utils.union +import kotlinx.serialization.Transient + +internal abstract class BaseCompositionLayer: BaseLayer() { + + abstract val width : Float + + abstract val height : Float + + abstract val timeRemapping : AnimatedValue? + + @Transient + private val newClipRect = MutableRect(0f, 0f, 0f, 0f) + + @Transient + private val layerPaint = Paint() + + abstract fun loadLayers() : List + + private val layers by lazy { + val l = loadLayers().filterIsInstance() + + val layersWithIndex = l + .filter { it.index != null } + .associateBy { it.index } + + l.forEach { + it.parent?.let { pId -> + val p = layersWithIndex[pId] + + if (p != null){ + it.setParentLayer(p) + } + } + } + l + } + + override var density: Float + get() = super.density + set(value) { + super.density = value + layers.fastForEach { it.density = value } + } + + override var maintainOriginalImageBounds: Boolean + get() = super.maintainOriginalImageBounds + set(value) { + super.maintainOriginalImageBounds = value + layers.fastForEach { + it.maintainOriginalImageBounds = value + } + } + + override var assets: Map + get() = super.assets + set(value) { + super.assets = value + layers.fastForEach { it.assets = value } + } + + final override var composition: LottieComposition + get() = super.composition + set(value) { + super.composition = value + layers.fastForEach { + it.composition = value + } + } + + override fun drawLayer( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { + + newClipRect.set(0f, 0f, width, height) + parentMatrix.map(newClipRect) + + // Apply off-screen rendering only when needed in order to improve rendering performance. + val isDrawingWithOffScreen = layers.isEmpty() && parentAlpha < 1f + + drawScope.drawIntoCanvas { canvas -> + + if (isDrawingWithOffScreen) { + layerPaint.alpha = parentAlpha + Utils.saveLayerCompat(canvas, newClipRect, layerPaint) + } else { + canvas.save() + } + + val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha + + layers.fastForEachReversed { layer -> + // Only clip precomps. This mimics the way After Effects renders animations. + val ignoreClipOnThisLayer = isContainerLayer + + if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { + canvas.clipRect(newClipRect) + } + + layer.draw( + drawScope, + parentMatrix, + childAlpha, + remappedFrame(frame) + ) + } + + canvas.restore() + } + } + + override fun getBounds( + outBounds: MutableRect, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Float + ) { + super.getBounds(outBounds, parentMatrix, applyParents, frame) + layers.fastForEachReversed { + rect.set(0f, 0f, 0f, 0f) + it.getBounds(rect, boundsMatrix, true,frame) + outBounds.union(rect) + } + } + + private fun remappedFrame(frame: Float): Float { + + val tr = timeRemapping ?: return frame + + val f = if (timeStretch != 0f && !isContainerLayer) { + frame / timeStretch + } else frame + + return tr.interpolated(f) * + composition.frameRate - composition.startFrame + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 9cd62617..47a148d0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -74,7 +74,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { } private val maskBoundsRect = MutableRect(0f, 0f, 0f, 0f) - private val rect = MutableRect(0f, 0f, 0f, 0f) + protected val rect = MutableRect(0f, 0f, 0f, 0f) private var parentLayers: MutableList? = null private var parentLayer: BaseLayer? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt new file mode 100644 index 00000000..7f598213 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -0,0 +1,38 @@ +package io.github.alexzhirkevich.compottie.internal.layers + +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.Transform + +internal class CompositionLayer( + composition: LottieComposition +) : BaseCompositionLayer() { + + init { + this.composition = composition + } + + override val width: Float get() = composition.lottieData.width + override val height: Float get() = composition.lottieData.height + override val timeRemapping: AnimatedValue? get() = null + + override val masks: List? get() = null + override val transform: Transform = Transform() + + override val is3d: BooleanInt get() = BooleanInt.No + override val hidden: Boolean get() = false + override val index: Int? get() = null + override val parent: Int? get() = null + override val timeStretch: Float get() = 1f + + override val inPoint: Float get() = composition.lottieData.inPoint + override val outPoint: Float get() = composition.lottieData.outPoint + override val startTime: Int get() = 0 + override val name: String? = null + + override fun loadLayers(): List { + return composition.lottieData.layers + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index 3ea12194..11a2b23a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -8,12 +8,12 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.platform.clipRect import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.utils.union import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -24,13 +24,13 @@ internal class PrecompositionLayer( val refId : String, @SerialName("w") - val width : Float, + override val width : Float, @SerialName("h") - val height : Float, + override val height : Float, @SerialName("tm") - val timeRemapping : AnimatedValue? = null, + override val timeRemapping : AnimatedValue? = null, @SerialName("ddd") override val is3d: BooleanInt = BooleanInt.No, @@ -63,73 +63,9 @@ internal class PrecompositionLayer( override val masks: List? = null, @SerialName("ks") - override val transform: Transform, -) : BaseLayer() { - - @Transient - private val newClipRect = MutableRect(0f, 0f, 0f, 0f) - - @Transient - private val layerPaint = Paint() - - private val layers by lazy { - (assets[refId] as? LottieAsset.PrecompositionAsset?)?.layers - } - - override fun drawLayer( - drawScope: DrawScope, - parentMatrix: Matrix, - parentAlpha: Float, - frame: Float - ) { - - newClipRect.set(0f, 0f, width, height) - parentMatrix.map(newClipRect) - - // Apply off-screen rendering only when needed in order to improve rendering performance. - val isDrawingWithOffScreen = layers.isNullOrEmpty() && parentAlpha < 1f - - drawScope.drawIntoCanvas { canvas -> - - if (isDrawingWithOffScreen) { - layerPaint.alpha = parentAlpha - Utils.saveLayerCompat(canvas, newClipRect, layerPaint) - } else { - canvas.save() - } - - val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha - - layers?.fastForEachReversed { layer -> - // Only clip precomps. This mimics the way After Effects renders animations. - val ignoreClipOnThisLayer = isContainerLayer - - if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { - canvas.clipRect(newClipRect) - } - - (layer as? DrawingContent)?.draw( - drawScope, - parentMatrix, - childAlpha, - remappedFrame(frame) - ) - } - - canvas.restore() - } - } - - private fun remappedFrame(frame: Float): Float { - - if (timeRemapping == null) - return frame - - val f = if (timeStretch != 0f && !isContainerLayer) { - frame / timeStretch - } else frame - - return timeRemapping.interpolated(f) * - composition.frameRate - composition.startFrame + override val transform: Transform = Transform(), +) : BaseCompositionLayer() { + override fun loadLayers(): List { + return (assets[refId] as? LottieAsset.PrecompositionAsset?)?.layers.orEmpty() } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index b2fb4af1..cb635d48 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.content.ContentGroup @@ -54,6 +53,7 @@ internal class ShapeLayer( @SerialName("nm") override val name: String? = null, + @SerialName("ef") val effect: List = emptyList(), @@ -83,6 +83,7 @@ internal class ShapeLayer( @SerialName("masksProperties") override val masks: List? = null, + ) : BaseLayer(), VisualLayer { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 35585061..69890c9d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -9,15 +8,15 @@ import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.GradientColors +import io.github.alexzhirkevich.compottie.internal.animation.GradientType import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.animation.GradientColors -import io.github.alexzhirkevich.compottie.internal.animation.GradientType import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -98,6 +97,13 @@ internal class GradientFillShape( cache = gradientCache ) + path.reset() + + paths.fastForEach { + path.addPath(it.getPath(frame), parentMatrix) + } + + roundShape?.applyTo(paint, frame) drawScope.drawIntoCanvas { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index a185a170..4c53884e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -1,8 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.ContentGroup -import io.github.alexzhirkevich.compottie.internal.content.PathAndDrawingContext -import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -25,7 +24,7 @@ internal class GroupShape( @SerialName("it") val items : List = emptyList(), -) : Shape, PathAndDrawingContext by ContentGroup( +) : Shape, ContentGroupBase by ContentGroup( name = name, hidden = hidden, contents = items, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt new file mode 100644 index 00000000..1e4f0a47 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -0,0 +1,144 @@ +package io.github.alexzhirkevich.compottie.internal.shapes + +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathOperation +import androidx.compose.ui.util.fastForEach +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.content.ContentGroup +import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase +import io.github.alexzhirkevich.compottie.internal.content.GreedyContent +import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.platform.set +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlin.jvm.JvmInline + +@Serializable +@SerialName("mm") +internal class MergePathsShape( + + @SerialName("mn") + override val matchName : String? = null, + + @SerialName("nm") + override val name : String? = null, + + @SerialName("hd") + override val hidden : Boolean = false, + + @SerialName("mm") + val mode : MergeMode = MergeMode.Normal +) : Shape, GreedyContent, PathContent { + + @Transient + private val path = Path() + + @Transient + private val remainderPath = Path() + private val firstPath = Path() + + @Transient + private val pathContents = mutableListOf() + + override fun getPath(frame: Float): Path { + + path.reset() + + if (hidden) { + return path + } + + when (mode) { + MergeMode.Normal -> addPaths(frame) + MergeMode.Add -> opFirstPathWithRest(PathOperation.Union, frame) + MergeMode.Subtract -> opFirstPathWithRest(PathOperation.Difference, frame) + MergeMode.Intersect -> opFirstPathWithRest(PathOperation.Intersect, frame) + MergeMode.ExcludeIntersections -> opFirstPathWithRest(PathOperation.Xor, frame) + } + + return path + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + pathContents.fastForEach { + it.setContents(contentsBefore, contentsAfter) + } + } + + override fun absorbContent(contents: MutableListIterator) { + + // Fast forward the iterator until after this content. + @Suppress("ControlFlowWithEmptyBody") + while (contents.hasPrevious() && contents.previous() !== this) { + } + while (contents.hasPrevious()) { + val content = contents.previous() + if (content is PathContent) { + pathContents.add(content) + contents.remove() + } + } + } + + private fun addPaths(frame: Float) { + pathContents.fastForEach { + path.addPath(it.getPath(frame)) + } + } + + private fun opFirstPathWithRest(op: PathOperation, frame: Float) { + + remainderPath.reset() + firstPath.reset() + + for (i in pathContents.size - 1 downTo 1) { + val content = pathContents[i] + + if (content is ContentGroupBase) { + content.pathContents.fastForEachReversed { path -> + val p = path.getPath(frame) + content.transform?.matrix(frame)?.let { + p.transform(it) + } + remainderPath.addPath(p) + } + + } else { + remainderPath.addPath(content.getPath(frame)) + } + } + + val lastContent = pathContents[0] + if (lastContent is ContentGroupBase) { + lastContent.pathContents.fastForEach { + val path = it.getPath(frame) + lastContent.transform?.matrix(frame)?.let(path::transform) + firstPath.addPath(path) + } + } else { + firstPath.set(lastContent.getPath(frame)) + } + + if (pathContents.size == 1) { + path.addPath(firstPath) + return + } + + path.op(firstPath, remainderPath, op) + } +} + +@Serializable +@JvmInline +internal value class MergeMode(val mode : Byte) { + companion object { + val Normal = MergeMode(1) + val Add = MergeMode(2) + val Subtract = MergeMode(3) + val Intersect = MergeMode(4) + val ExcludeIntersections = MergeMode(5) + } +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/robot_404.json b/example/shared/src/commonMain/composeResources/files/robot_404.json new file mode 100644 index 00000000..173fdbf7 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/robot_404.json @@ -0,0 +1 @@ +{"nm":"Comp 1","ddd":0,"h":500,"w":500,"meta":{"g":"@lottiefiles/toolkit-js 0.33.2"},"layers":[{"ty":4,"nm":"404 Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[618.85,101.821,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[100,100,100],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[116,116,100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":61},{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[100,100,100],"t":90},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[116,116,100],"t":108},{"s":[100,100,100],"t":151}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[618.85,101.821,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-4.574],[-0.016,-1.399],[-0.031,-1.404],[0,0],[-0.046,1.265],[-0.051,1.29],[0,0],[-0.222,2.292],[-0.094,2.417],[0,0],[0.176,-1.915],[0.052,-1.828],[0,0],[0,0.728],[0,0],[0.015,1.244],[0.052,1.26]],"o":[[-0.186,4.668],[0,1.405],[0.016,1.399],[0,0],[0.061,-1.26],[0.047,-1.265],[0,0],[0.299,-2.24],[0.222,-2.293],[0,0],[-0.237,1.807],[-0.176,1.916],[0,0],[0.02,-0.733],[0,0],[0,-1.249],[-0.016,-1.245],[0,0]],"v":[[4.879,-11.153],[4.601,2.71],[4.624,6.916],[4.693,11.122],[1.178,11.153],[1.34,7.365],[1.487,3.533],[-4.879,3.563],[-4.097,-3.236],[-3.624,-10.3],[-0.248,-10.3],[-0.867,-4.717],[-1.208,0.899],[1.549,0.774],[1.58,-1.417],[1.58,-3.624],[1.557,-7.364],[1.456,-11.122]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0,0.5451],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[630.777,101.696],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,1.528],[0.113,1.116],[0.191,0.718],[0.264,0.34],[0.299,0],[0.269,-0.31],[0.201,-0.697],[0.114,-1.125],[0,-1.631],[-0.113,-1.121],[-0.201,-0.722],[-0.268,-0.341],[-0.3,0],[-0.262,0.351],[-0.191,0.728],[-0.113,1.121]],"o":[[0,-1.549],[-0.113,-1.115],[-0.191,-0.717],[-0.262,-0.341],[-0.3,0],[-0.268,0.31],[-0.201,0.697],[-0.113,1.126],[0,1.559],[0.114,1.12],[0.201,0.723],[0.269,0.341],[0.299,0],[0.264,-0.351],[0.191,-0.728],[0.113,-1.12]],"v":[[2.161,-0.016],[1.99,-4.012],[1.533,-6.761],[0.851,-8.348],[0.008,-8.86],[-0.845,-8.395],[-1.549,-6.886],[-2.022,-4.152],[-2.192,-0.016],[-2.022,4.005],[-1.549,6.769],[-0.845,8.364],[0.008,8.876],[0.851,8.348],[1.533,6.73],[1.99,3.958]]},"ix":2}},{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":2,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-2.055],[0.298,-1.477],[0.516,-0.96],[0.691,-0.465],[0.784,0],[0.691,0.45],[0.521,0.95],[0.3,1.482],[0,2.065],[-0.3,1.487],[-0.522,0.924],[-0.693,0.414],[-0.785,0],[-0.693,-0.449],[-0.517,-0.945],[-0.3,-1.482]],"o":[[0,2.024],[-0.3,1.477],[-0.517,0.961],[-0.693,0.465],[-0.785,0],[-0.693,-0.449],[-0.522,-0.949],[-0.3,-1.482],[0,-2.158],[0.3,-1.487],[0.521,-0.924],[0.691,-0.412],[0.784,0],[0.691,0.45],[0.516,0.945],[0.298,1.482]],"v":[[5.708,-0.016],[5.259,5.235],[4.035,8.89],[2.223,11.028],[0.008,11.726],[-2.207,11.051],[-4.027,8.952],[-5.259,5.305],[-5.708,-0.016],[-5.259,-5.484],[-4.027,-9.101],[-2.207,-11.106],[0.008,-11.726],[2.223,-11.053],[4.035,-8.96],[5.259,-5.321]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0,0.5451],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[619.168,101.821],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-4.574],[-0.016,-1.399],[-0.031,-1.404],[0,0],[-0.046,1.265],[-0.051,1.29],[0,0],[-0.222,2.292],[-0.094,2.417],[0,0],[0.176,-1.915],[0.052,-1.828],[0,0],[0,0.728],[0,0],[0.015,1.244],[0.052,1.26]],"o":[[-0.186,4.668],[0,1.405],[0.016,1.399],[0,0],[0.061,-1.26],[0.047,-1.265],[0,0],[0.299,-2.24],[0.222,-2.293],[0,0],[-0.237,1.807],[-0.176,1.916],[0,0],[0.02,-0.733],[0,0],[0,-1.249],[-0.016,-1.245],[0,0]],"v":[[4.879,-11.153],[4.601,2.71],[4.624,6.916],[4.693,11.122],[1.178,11.153],[1.34,7.365],[1.487,3.533],[-4.879,3.563],[-4.097,-3.236],[-3.624,-10.3],[-0.248,-10.3],[-0.867,-4.717],[-1.208,0.899],[1.549,0.774],[1.58,-1.417],[1.58,-3.624],[1.557,-7.364],[1.456,-11.122]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0,0.5451],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[606.923,101.696],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1,"parent":7},{"ty":4,"nm":"тело","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[620.639,184.574,0],"ix":1},"s":{"a":0,"k":[249,249,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[266.39,327.588,0],"t":0,"ti":[0,0,0],"to":[0,-6.333,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[266.39,289.588,0],"t":55,"ti":[0,-6.333,0],"to":[0,0,0]},{"s":[266.39,327.588,0],"t":164}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.127,-3.649],[-12.936,-0.05],[0,0],[8.536,2.336]],"o":[[0,0],[12.937,0.051],[0,0],[-8.535,-2.336]],"v":[[104.202,14.744],[120.612,20.843],[138.81,13.189],[124.306,14.744]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[121.376,8.369],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.9215686274509803,0.3568627450980392,0.8784313725490196,0.5,0.9372549019607843,0.1803921568627451,0.8588235294117647,1,0.9568627450980393,0.00784313725490196,0.8352941176470589,0,1,0.5,0.5,1,0],"ix":9}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":0,"k":[121.491,19.813],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.636,-1.014],[-11.849,-1.156],[-2.499,0.781],[17.702,1.21]],"o":[[2.555,4.077],[11.847,1.156],[2.499,-0.78],[-17.702,-1.21]],"v":[[100.549,-10.687],[125.466,-7.625],[141.833,-3.396],[122.683,-23.222]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[85.25,-3],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.9215686274509803,0.3568627450980392,0.8784313725490196,0.5,0.9372549019607843,0.1803921568627451,0.8588235294117647,1,0.9568627450980393,0.00784313725490196,0.8352941176470589,0,1,0.5,0.5,1,0],"ix":9}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":0,"k":[137.75,-2.25],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.19,-0.393],[-0.824,-1.021],[-0.441,1.494]],"o":[[-0.786,0.259],[0.824,1.022],[0.44,-1.493]],"v":[[-1.101,-4.127],[-1.101,3.498],[1.486,2.712]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[633.188,166.636],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.115,-4.806],[9.782,0.893],[-0.066,0.288],[0,0],[-7.584,0]],"o":[[-3.076,4.823],[-8.515,-0.778],[0.008,-0.008],[4.583,-6.9],[7.897,0]],"v":[[138.104,-45.851],[108.321,-39.114],[101.164,-42.479],[101.172,-42.496],[120.05,-53.905]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[124.75,-36],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.3764705882352941,0.2784313725490196,0.7215686274509804,0.5,0.5254901960784314,0.4549019607843137,0.796078431372549,1,0.6745098039215687,0.6313725490196078,0.8705882352941177],"ix":9}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":0,"k":[31.5,-23.5],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.028,-14.243],[-15.551,0],[-0.21,11.872],[14.492,1.368],[0.745,0]],"o":[[-2.009,14.112],[15.551,0],[0.208,-11.87],[-0.755,-0.072],[-12.523,0.001]],"v":[[-23.987,-0.003],[1.352,24.159],[25.788,3.02],[3.712,-24.053],[1.462,-24.16]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[22.776,23.978],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.803921568627451,0.3215686274509804,0.8588235294117647,0.5,0.8823529411764706,0.1607843137254902,0.8470588235294118,1,0.9607843137254902,0,0.8352941176470589],"ix":9}},"t":2,"a":{"a":0,"k":0,"ix":8},"h":{"a":0,"k":0,"ix":7},"s":{"a":0,"k":[0.196,1.488],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[619.396,198.893],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 6","ix":6,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.028,-14.243],[-15.55,0],[-0.208,11.872],[14.493,1.368],[0.744,0]],"o":[[-2.008,14.113],[15.551,0],[0.208,-11.871],[-0.754,-0.071],[-12.523,0]],"v":[[95.273,-2.361],[120.612,21.802],[145.048,0.663],[122.972,-26.41],[120.724,-26.516]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6667,0.6196,0.8667],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 7","ix":7,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.699,-10.041],[14.435,0],[2.812,10.313],[-3.751,11.87],[-0.783,1.624],[0,0],[-6.077,-16.05],[-9.58,10.668],[0.429,2.283]],"o":[[-1.903,11.244],[-12.563,0],[-2.81,-10.304],[0.56,-1.773],[0,0],[0,0],[6.075,16.051],[9.117,-10.147],[2.597,10.782]],"v":[[147.154,4.312],[120.75,23.049],[94.733,8.054],[96.762,-33.18],[98.781,-38.283],[98.789,-38.3],[97.265,2.951],[141.228,7.996],[145.704,-28.275]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7608,0.7098,0.9333],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 8","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.583,-6.899],[0.008,-0.008],[0.709,-1.467],[0,0],[0.56,-1.772],[-2.81,-10.304],[-12.562,0],[-1.903,11.245],[2.597,10.782],[0,0.024],[1.236,3.15],[1.911,2.233],[7.897,0]],"o":[[0,0],[-0.874,1.31],[0,0],[-0.783,1.623],[-3.751,11.87],[2.812,10.314],[14.435,0],[1.698,-10.04],[-0.009,-0.041],[-0.825,-3.446],[-1.072,-2.737],[-4.115,-4.806],[-7.584,0]],"v":[[-19.215,-27.068],[-19.223,-27.051],[-21.598,-22.872],[-21.606,-22.855],[-23.625,-17.752],[-25.654,23.48],[0.363,38.477],[26.767,19.739],[25.317,-12.847],[25.301,-12.946],[22.201,-22.88],[17.717,-30.423],[-0.337,-38.477]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[35.25,2.5],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.8784313725490196,0.8352941176470589,0.9686274509803922,0.5,0.8745098039215686,0.8274509803921568,0.9686274509803922,1,0.8666666666666667,0.8235294117647058,0.9686274509803922],"ix":9}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":0,"k":[-32.25,8.75],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[620.387,184.572],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"рука п 2 Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[667.99,192.155,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[667.99,192.155,0],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[9],"t":34},{"s":[0],"t":120}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.179,-1.015],[0,0],[-8.57,-2.507],[0,0],[4.406,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-2.23,0]],"v":[[-7.817,0.159],[-7.248,1.577],[7.817,0.93],[7.131,0.123],[-1.007,-1.193]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7137,0.651,0.9098],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[673.705,201.143],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.25,-0.007],[0,0],[0,0],[-1.119,1.181],[0.848,0.529],[5.321,0]],"o":[[-5.624,0.143],[1.874,4.315],[0,0],[1.118,-1.18],[-0.812,-0.506],[-0.24,0]],"v":[[-1.747,-4.441],[-9,-3.81],[-3.37,4.451],[7.883,1.442],[7.998,-2.451],[-1.01,-4.451]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[-6.024,0.301],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-6.024,0.301],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7137,0.651,0.9098],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[-8.484,-3.163],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[674.891,190.42],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[10],"t":43},{"s":[0],"t":120}],"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[1.959,2.068],[0,0],[0,0],[-1.493,-1.958]],"o":[[0,0],[0,0],[-5.876,-6.205],[0,0],[0,0],[0.705,0.924]],"v":[[6.874,6.665],[3.495,8.672],[0.274,3.629],[-6.874,-8.671],[1.111,-1.323],[4.556,2.69]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.498,0.4078,0.7647],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[681.248,198.444],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.905,-4.558],[0,0],[1.294,6.506],[0,0]],"o":[[4.428,4.115],[0,0],[-1.294,-6.506],[0,0]],"v":[[-1.232,-1.265],[5.539,12.758],[6.399,3.824],[-7.693,-12.758]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7137,0.651,0.9098],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[682.068,202.531],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.18,-1.183],[-1.527,-3.641],[-4.664,0.192],[1.892,6.043],[5.164,4.052],[2.842,0.001]],"o":[[-2.576,2.582],[1.527,3.641],[4.663,-0.192],[0,0],[0,0],[-1.651,0]],"v":[[-10.635,-12.704],[-10.691,-0.887],[5.975,14.069],[11.319,2.748],[-0.523,-13.151],[-6.127,-14.262]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.851,0.8078,0.9686],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[677.148,203.607],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3,"parent":4},{"ty":4,"nm":"рука п 1 Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[641.125,156.327,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[641.125,156.327,0],"t":0,"ti":[0,0,0],"to":[0,1,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[641.125,162.327,0],"t":34,"ti":[0,1,0],"to":[0,0,0]},{"s":[641.125,156.327,0],"t":120}],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[14],"t":34},{"s":[0],"t":120}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0]],"o":[[0.701,-12.552],[-2.659,8.133]],"v":[[3.908,11.79],[-1.95,-11.791]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6627,0.5961,0.8627],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[640.479,158.995],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":2,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.891,-0.419],[0,0],[-4.977,5.205],[1.454,3.283],[3.854,0]],"o":[[-5.373,2.524],[0,0],[0,0],[0,0],[-0.766,0]],"v":[[-2.636,-7.007],[-4.148,4.259],[8.01,2.395],[5.919,-3.176],[-0.151,-7.6]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.498,0.4078,0.7647],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[670.531,195.203],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":3,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.76,0.463],[1.553,-0.19]],"o":[[0.889,-0.542],[-1.554,0.192]],"v":[[2.242,2.519],[-1.577,-2.792]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[649.943,164.28],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":4,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-4.011,-6.401],[-0.289,-0.415],[0,0],[0,0],[0,0],[10.046,13.48],[4.954,4.357],[-4.684,-10.619],[6.295,6.853],[0,0]],"o":[[1.156,5.914],[6.635,10.599],[0,0],[0,0],[1.834,-0.636],[0,0],[-5.047,-6.773],[2.85,2.569],[5.332,12.082],[-6.289,-6.855],[0,0]],"v":[[-19.712,-22.271],[-12.083,-1.555],[4.276,22.594],[4.286,22.6],[16.723,22.194],[19.712,20.926],[5.772,-5.406],[-10.174,-22.601],[9.382,1.843],[-4.269,4.454],[-19.566,-22.298]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7333,0.6627,0.9137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[658.829,176.672],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 6","ix":5,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.054,-0.045],[-0.786,-4.022],[-4.011,-6.401],[-0.289,-0.415],[0,0],[-3.023,1.048],[0,0],[10.047,13.479],[4.955,4.357],[0.021,0.021],[0.061,0.055],[0.03,0.028],[0.021,0.03],[0.04,0.034],[0.002,0.007],[0,0],[1.065,0]],"o":[[-0.369,0.305],[1.156,5.914],[6.635,10.598],[0,0],[4.557,1.706],[1.834,-0.636],[0,0],[-5.047,-6.773],[-0.028,-0.019],[-0.053,-0.056],[-0.039,-0.034],[-0.038,-0.026],[-0.05,-0.04],[-0.01,-0.006],[-0.009,-0.008],[-4.584,-3.974],[-0.102,0]],"v":[[-19.821,-26.854],[-19.233,-19.656],[-11.604,1.06],[4.756,25.209],[4.765,25.215],[17.202,24.809],[20.191,23.541],[6.25,-2.791],[-9.695,-19.986],[-9.765,-20.048],[-9.948,-20.214],[-10.049,-20.304],[-10.14,-20.388],[-10.271,-20.497],[-10.292,-20.518],[-10.311,-20.531],[-19.587,-26.921]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8588,0.8196,0.9725],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[658.35,174.057],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4,"parent":2},{"ty":4,"nm":"рука л 2 Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[572.158,193.786,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[572.158,193.786,0],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[-23],"t":34},{"s":[0],"t":120}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":1,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.641,-3.183],[0.259,-0.966],[-1.623,-0.099],[0,0],[1.577,4.433]],"o":[[-4.639,3.182],[-0.259,0.966],[1.624,0.1],[0,0],[0,0]],"v":[[-0.71,-3.435],[-8.386,4.407],[-5.643,7.173],[1.406,4.217],[7.067,-7.272]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7137,0.651,0.9098],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[6.526,-6.124],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[561.671,193.493],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[-10],"t":46},{"s":[0],"t":120}],"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[2.23,0]],"o":[[0,0],[8.573,-2.506],[0,0],[-2.179,-1.015],[-4.405,0]],"v":[[-7.129,0.122],[-7.818,0.93],[7.249,1.576],[7.818,0.158],[1.008,-1.194]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7647,0.6941,0.9333],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[566.31,202.167],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-1.809,2.198],[0,0]],"o":[[0,0],[0,0],[1.811,-2.2],[0,0]],"v":[[-4.945,3.663],[-1.472,5.922],[1.654,0.627],[4.945,-5.922]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.4745,0.3843,0.7569],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[556.839,202.47],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.294,-6.507],[0,0],[-4.106,4.438],[0,0]],"o":[[-1.294,6.506],[0,0],[4.105,-4.436],[0,0]],"v":[[-5.274,3.482],[-4.414,12.417],[2.358,-1.607],[6.568,-12.417]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6902,0.6235,0.9059],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[556.823,203.896],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-4.664,-0.193],[-1.527,3.641],[2.575,2.582],[1.65,0]],"o":[[-5.163,4.052],[-1.893,6.042],[4.663,0.191],[1.527,-3.641],[-1.18,-1.183],[-2.843,0.001]],"v":[[0.523,-13.15],[-11.318,2.749],[-5.974,14.07],[10.692,-0.887],[10.637,-12.704],[6.13,-14.261]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.851,0.8078,0.9686],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[562.867,204.63],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":5,"parent":6},{"ty":4,"nm":"рука л 1 Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[597.468,157.953,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[597.468,157.953,0],"t":0,"ti":[0,0,0],"to":[0,1,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[597.468,163.953,0],"t":34,"ti":[0,1,0],"to":[0,0,0]},{"s":[597.468,157.953,0],"t":120}],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[-14],"t":34},{"s":[0],"t":120}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.699,-12.553],[2.661,8.133]],"o":[[0,0],[0,0]],"v":[[-3.91,11.792],[1.948,-11.791]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6039,0.5294,0.8353],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[599.538,160.018],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":2,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[5.372,2.526],[0.766,0]],"o":[[-1.455,3.284],[4.976,5.205],[0,0],[-0.89,-0.418],[-3.854,0.001]],"v":[[-5.919,-3.176],[-8.008,2.395],[4.149,4.26],[2.636,-7.007],[0.151,-7.6]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6039,0.5294,0.8353],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[569.484,196.226],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.768,0.616],[-0.632,-0.439]],"o":[[-0.678,-0.544],[0.632,0.438]],"v":[[0.512,-0.874],[-0.648,0.98]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[582.618,175.668],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":4,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.759,0.463],[-1.553,-0.191]],"o":[[-0.89,-0.542],[1.554,0.191]],"v":[[-2.241,2.519],[1.577,-2.792]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[590.072,165.303],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 6","ix":5,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[4.01,-6.401],[0.289,-0.415],[0,0],[0,0],[0,0],[-10.048,13.48],[-4.954,4.357],[4.682,-10.62],[-6.296,6.854],[0,0]],"o":[[-1.156,5.914],[-6.634,10.599],[0,0],[0,0],[-1.833,-0.637],[0,0],[5.047,-6.774],[-2.849,2.569],[-5.332,12.082],[6.288,-6.855],[0,0]],"v":[[19.711,-22.27],[12.083,-1.555],[-4.278,22.594],[-4.287,22.6],[-16.724,22.195],[-19.711,20.927],[-5.771,-5.405],[10.172,-22.6],[-9.381,1.844],[4.269,4.454],[19.565,-22.298]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7333,0.6627,0.9137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[581.188,177.695],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 7","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.583,-3.974],[0.009,-0.006],[0.01,-0.007],[0.049,-0.041],[0.039,-0.026],[0.041,-0.034],[0.053,-0.057],[0.03,-0.02],[5.047,-6.773],[0,0],[-1.834,-0.636],[-4.555,1.706],[0,0],[-6.634,10.6],[-1.156,5.914],[0.37,0.306],[0.102,0]],"o":[[0,0],[-0.002,0.008],[-0.039,0.035],[-0.023,0.03],[-0.031,0.028],[-0.061,0.056],[-0.021,0.02],[-4.954,4.357],[-10.048,13.48],[0,0],[3.022,1.048],[0,0],[0.289,-0.415],[4.011,-6.4],[0.785,-4.021],[-0.053,-0.045],[-1.064,0.001]],"v":[[10.311,-20.532],[10.292,-20.518],[10.27,-20.497],[10.141,-20.388],[10.049,-20.305],[9.948,-20.215],[9.765,-20.048],[9.694,-19.986],[-6.25,-2.792],[-20.19,23.54],[-17.202,24.809],[-4.766,25.214],[-4.756,25.208],[11.603,1.059],[19.233,-19.656],[19.82,-26.854],[19.587,-26.921]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8588,0.8196,0.9725],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[581.666,175.081],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":6,"parent":2},{"ty":4,"nm":"голова Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[619.995,156.239,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[619.995,156.239,0],"t":0,"ti":[0,0,0],"to":[0,0.017,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[619.995,156.344,0],"t":52,"ti":[0,0.017,0],"to":[0,0,0]},{"s":[619.995,156.239,0],"t":117}],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[-10],"t":46},{"s":[0],"t":105}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.561,-0.739],[0.552,1.069]],"o":[[0.56,0.738],[0,0]],"v":[[-4.319,5.173],[4.328,-5.91]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9176,0.8667,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[564.663,105.497],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.496,-3.519],[-2.603,-0.427],[-1.332,0.536],[3.52,2.545]],"o":[[0,0],[2.603,0.425],[1.333,-0.536],[0,0]],"v":[[-4.885,1.505],[-1.122,0.618],[4.313,5.849],[1.148,-5.888]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9843,0.4235,0.7176],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[577.411,85.479],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.003,-0.725],[-1.797,-0.234],[-1.376,0.859],[0,0]],"o":[[0,0],[-3.003,0.726],[1.796,0.234],[1.377,-0.858],[0,0]],"v":[[3.327,-3.148],[-1.879,-5.153],[-3.284,5.268],[0.65,-0.824],[4.432,-1.349]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9843,0.4235,0.7176],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[661.991,86.847],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.049,5.186],[-0.797,6.09],[-0.974,-0.552],[-0.576,-5.878],[0,0]],"o":[[0,0],[0.798,-6.091],[0.975,0.553],[0.447,4.573],[0,0]],"v":[[-2.994,8.75],[-2.872,-1.876],[0.536,-11.349],[1.935,1.046],[3.262,9.912]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0745,0.2863,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[584.334,111.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.577,-3.133],[-0.391,2.939],[3.869,0]],"o":[[-0.141,0.768],[0.184,-1.387],[-4.327,0]],"v":[[77.253,-67.771],[94.129,-69.758],[86.938,-72.102]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9647,0.3843,0.7647],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 7","ix":6,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.297,-0.7],[-2.392,0.313],[0.26,0.365]],"o":[[-1.156,0.624],[2.394,-0.312],[-0.261,-0.364]],"v":[[-1.934,-0.257],[-0.605,1.301],[2.83,-1.25]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[654.208,78.975],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 8","ix":7,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.824,-0.89],[-0.468,0.729]],"o":[[-1.383,0.322],[0.468,-0.729]],"v":[[-4.884,-2.783],[5.799,2.944]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[634.943,76.916],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 9","ix":8,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.709],[-0.235,-0.709],[0.235,-0.709],[0.235,0.709]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 3","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.709],[0.235,0.709],[0.235,-0.709],[-0.235,-0.709]]},"ix":2}},{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":2,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.207,-0.66],[0,0]],"o":[[0,0],[0.091,0.272]],"v":[[0.235,0.709],[-0.235,-0.709]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.502,0.502,0.502],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[663.743,108.47],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 10","ix":9,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.874,-3.292],[-16.117,0.182],[0.36,0.332],[15.985,3.504]],"o":[[-0.831,3.129],[20.417,-0.232],[0,0],[-10.555,-2.314]],"v":[[98.997,-71.187],[120.811,-65.716],[144.44,-71.206],[119.994,-69.758]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.2784,0.6235],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 11","ix":10,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.625,-3.749],[-13.084,0.433],[-9.194,9.715],[18.17,-0.472]],"o":[[-0.719,4.317],[15.723,-0.521],[1.515,-1.602],[-18.17,0.471]],"v":[[90.082,-108.79],[112.054,-105.093],[152.77,-101.792],[121.061,-123.943]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1216,0.3294,0.6706],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 12","ix":11,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.572,-2.91],[-4.151,-0.451],[0.499,4.69],[4.458,0]],"o":[[-2.38,2.692],[4.657,0.507],[-0.27,-2.528],[-3.815,0]],"v":[[-8.686,-1.238],[-1.865,4.85],[10.566,-1.176],[1.888,-5.357]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9412,0.0824,0.5255],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[585.624,132.972],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 13","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[6.456,-11.142],[0,0],[0,0],[0,0],[0.912,9.359],[0,0],[0,0]],"o":[[-6.456,11.142],[7.655,5.217],[0,0],[0,0],[-1.094,-11.215],[2.654,-6.03],[0,0]],"v":[[-9.763,-1.324],[-13.617,15.998],[16.219,16.876],[15.281,13.751],[-11.74,8.923],[6.062,-12.583],[4.669,-21.215]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7294,0.6078,0.9216],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[564.961,118.851],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 14","ix":13,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.081,-3.745],[-5.435,2.603],[-0.772,2.091],[0,0],[0,0]],"o":[[0,0],[5.435,-2.604],[0.771,-2.091],[0,0],[0,0]],"v":[[76.026,-53.024],[84.231,-58.859],[95.434,-65.593],[80.526,-66.451],[72.722,-63.064]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.5569,0.5137,0.8392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 15","ix":14,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.241,-1.31],[-15.795,-0.025],[-3.222,3.084],[9.674,0]],"o":[[2.225,3.001],[8.811,0.009],[-5.804,-1.293],[-11.292,0]],"v":[[-27.553,-1.719],[0.063,3.796],[27.554,-1.942],[2.758,-3.805]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.4039,0.2627,0.6627],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[619.532,149.321],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 16","ix":15,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.227,-0.971],[0.791,-0.807],[0,0],[16.875,-3.784],[0,0],[0,0],[-0.256,1.772],[-4.213,0.775],[-13.809,-2.094],[-1.154,-0.239],[-0.041,-0.009]],"o":[[0.117,0.262],[-1.548,1.581],[0,0],[-16.874,3.784],[0,0],[-3.61,-1.443],[0.156,-1.08],[12.381,-2.242],[1.442,0.255],[0.041,0.008],[3.273,0.709]],"v":[[152.972,-49.646],[152.439,-47.949],[145.849,-44.837],[108.201,-50.683],[90.041,-44.657],[90.032,-44.657],[84.93,-49.595],[91.979,-52.398],[143.798,-53.222],[147.705,-52.472],[147.82,-52.447]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.4039,0.3569,0.8275],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 17","ix":16,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.236,-1.31],[0.156,-1.08],[-3.61,-1.443],[0,0],[-13.635,-0.016],[1.286,4.419],[0.19,0.223],[2.383,0.585],[0.041,0.009],[0.215,0.05],[1.186,0.181],[8.022,0]],"o":[[-4.213,0.775],[-0.256,1.772],[0,0],[5.498,2.201],[12.316,0.009],[-0.066,-0.231],[-0.75,-0.874],[-0.041,-0.008],[-0.198,-0.048],[-0.997,-0.221],[-5.738,-0.87],[-11.282,0.001]],"v":[[91.979,-52.398],[84.93,-49.595],[90.032,-44.657],[90.041,-44.657],[119.001,-40.907],[153.03,-49.595],[152.642,-50.271],[147.82,-52.447],[147.705,-52.473],[147.086,-52.621],[143.798,-53.222],[122.263,-54.484]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.5882,0.5216,0.9294],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 18","ix":17,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.691,-6.579],[8.541,15.827],[-5.367,14.303],[0,0],[-5.613,-8.821],[-24.368,1.038],[-4.089,6.875],[1.526,4.83],[0,0]],"o":[[-13.957,19.57],[-5.572,-10.338],[0,-0.008],[-0.23,0.841],[5.738,9.019],[24.368,-1.047],[3.224,-5.408],[0,0],[2.787,10.955]],"v":[[164.118,-55.316],[76.026,-53.024],[76.431,-93.204],[76.438,-93.212],[76.323,-63.502],[129.132,-56.775],[165.651,-68.234],[164.109,-90.409],[166.5,-83.278]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7529,0.6941,0.9255],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 19","ix":18,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.667,-0.04],[-5.117,-21.831],[-14.163,12.079],[30.107,0.005]],"o":[[-28.572,1.715],[3.124,13.328],[13.858,-11.822],[-0.657,-0.001]],"v":[[-4.37,-32.568],[-41.841,17.848],[33.101,20.549],[-2.388,-32.627]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0588,0.2392,0.5412],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[622.464,107.065],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 20","ix":19,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.117,-21.832],[-14.162,12.079],[31.238,-1.875]],"o":[[3.124,13.329],[14.162,-12.079],[-28.573,1.714]],"v":[[-41.993,18.755],[32.948,21.456],[-4.521,-31.661]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8745,0.8902,0.9843],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[622.915,107.777],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 21","ix":20,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.041,-18.77],[-5.572,-10.338],[-13.957,19.57],[2.787,10.956],[23.792,0]],"o":[[-5.366,14.303],[8.541,15.827],[4.691,-6.579],[-5.506,-21.647],[-20.213,0]],"v":[[-43.44,-11.018],[-43.844,29.163],[44.247,26.871],[46.63,-1.092],[-0.944,-46.441]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9059,0.8588,0.9686],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[619.87,117.813],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 22","ix":21,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.812,-11.871],[0,0],[0,0],[6.014,6.716]],"o":[[-2.811,11.871],[0,0],[0,0],[0,0]],"v":[[-6.404,-1.962],[-1.897,17.034],[7.568,-1.182],[3.202,-17.035]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9333,0.0824,0.5255],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[576.678,95.359],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 23","ix":22,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[2.812,11.871],[0,0]],"o":[[0,0],[0,0],[-2.811,-11.871],[-6.014,6.716]],"v":[[-7.568,-1.182],[1.897,17.034],[6.404,-1.962],[-3.202,-17.035]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9333,0.0824,0.5255],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[663.338,95.359],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 24","ix":23,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.012,-0.001],[0,-10.7],[0,0],[0,0],[0.888,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.013,0]],"v":[[1.509,-9.423],[-4.686,7.915],[-2.291,9.424],[4.686,-5.016],[1.546,-9.424]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6902,0.5098,0.8824],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[658.288,85.482],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 25","ix":24,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[2.707,8.435],[0,0]],"o":[[0,0],[0,0],[-2.707,-8.435],[-7.654,0.937]],"v":[[145.888,-117.607],[162.557,-89.265],[164.848,-114.361],[159.797,-123.941]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8549,0.7961,0.9608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 26","ix":25,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0.248,-13.886],[-1.741,1.354]],"v":[[-4.632,-6.583],[2.569,10.788],[4.384,8.91],[-1.664,-10.788]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.651,0.5804,0.9412],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[581.884,86.847],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 27","ix":26,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.708,-8.435],[0,0],[0,0],[7.654,0.937]],"o":[[-2.707,8.435],[0,0],[0,0],[0,0]],"v":[[75.168,-114.361],[77.459,-89.265],[94.129,-117.607],[80.22,-123.941]]},"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":1},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8549,0.7961,0.9608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[500,200],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":7,"parent":2},{"ty":4,"nm":"1 Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[601.075,210.534,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[601.075,210.534,0],"t":0,"ti":[0,0,0],"to":[0.833,0,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[606.075,210.534,0],"t":49,"ti":[0.833,0,0],"to":[0,0,0]},{"s":[601.075,210.534,0],"t":162}],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-18],"t":49},{"s":[0],"t":162}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.245,-4.558],[-0.395,-6.011],[5.28,-5.413],[-2.011,4.424],[0.059,0.247],[1.582,-0.975]],"o":[[0,0],[0.4,6.004],[6.443,-3.158],[0.25,-0.548],[-1.124,-4.447],[-0.42,0.265]],"v":[[-8.989,-14.179],[0.7,-0.725],[-9.955,22.225],[9.639,1.614],[9.938,0.4],[-6.255,-22.189]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7725,0.7216,0.9294],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[598.457,222.685],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.595,-1.307],[1.457,0.188]],"o":[[0.69,0.565],[-1.458,-0.188]],"v":[[1.961,-2.814],[-1.192,3.934]]},"ix":2}},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[593.926,227.333],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":3,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.002,1.595],[0,0]],"o":[[0.018,-15.022],[-2.156,14.366]],"v":[[9.016,11.101],[-6.878,-12.695]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6314,0.5529,0.9176],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[599.331,213.194],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":4,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.039,-0.024],[1.244,-4.557],[0.177,-0.676],[-0.789,-6.403],[-0.697,-0.301],[-0.216,-0.017],[-1.034,0.504],[0,0],[-2.012,4.425],[0.059,0.247],[2.105,0.002]],"o":[[-0.419,0.266],[-0.175,0.623],[-2.672,10.298],[0.183,1.535],[0.179,0.082],[0.735,0.077],[0,0],[6.443,-3.158],[0.249,-0.547],[-1.096,-4.337],[-0.053,0]],"v":[[-3.593,-22.571],[-6.327,-14.56],[-6.847,-12.609],[-11.87,19.532],[-10.576,22.383],[-9.978,22.53],[-7.297,21.852],[-7.293,21.844],[12.301,1.232],[12.6,0.019],[-3.454,-22.607]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8549,0.7961,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[596.045,223.066],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":8,"parent":2},{"ty":4,"nm":"2 Outlines","sr":1,"st":0,"op":4800,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[640.779,208.069,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[640.779,208.069,0],"t":0,"ti":[0,0,0],"to":[-1.333,0,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[632.779,208.069,0],"t":49,"ti":[-1.333,0,0],"to":[0,0,0]},{"s":[640.779,208.069,0],"t":162}],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[21],"t":49},{"s":[0],"t":162}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.246,-4.558],[0.396,-6.011],[-5.281,-5.413],[2.01,4.424],[-0.059,0.247],[-1.582,-0.974]],"o":[[0,0],[-0.4,6.004],[-6.444,-3.158],[-0.25,-0.548],[1.124,-4.447],[0.419,0.265]],"v":[[8.989,-14.179],[-0.701,-0.725],[9.955,22.225],[-9.639,1.614],[-9.939,0.4],[6.255,-22.19]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7725,0.7216,0.9294],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[643.929,220.22],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.019,-15.022],[2.155,14.366]],"o":[[0.001,1.594],[0,0]],"v":[[-9.014,11.101],[6.879,-12.695]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6353,0.5529,0.9137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[643.303,210.729],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.095,-4.336],[-0.25,-0.548],[-6.444,-3.158],[0,0],[-0.734,0.077],[-0.179,0.082],[-0.184,1.535],[2.67,10.298],[0.174,0.623],[0.42,0.266],[0.054,0]],"o":[[-0.061,0.248],[2.01,4.424],[0,0],[1.034,0.504],[0.216,-0.016],[0.696,-0.301],[0.789,-6.403],[-0.179,-0.676],[-1.246,-4.558],[-0.039,-0.024],[-2.105,0.002]],"v":[[-12.598,0.019],[-12.299,1.233],[7.294,21.844],[7.298,21.852],[9.978,22.53],[10.577,22.383],[11.871,19.532],[6.85,-12.609],[6.329,-14.56],[3.594,-22.571],[3.455,-22.607]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":4},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8549,0.7961,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[646.589,220.601],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":9,"parent":2}],"v":"5.7.1","fr":60,"op":165,"ip":0,"assets":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 6e85539d..e12f6f7c 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -31,6 +31,7 @@ private val POLYSTAR = "files/polystar.json" private val RECT = "files/rect.json" private val ROUND_RECT = "files/roundrect.json" private val ROBOT = "files/robot.json" +private val ROBOT_404 = "files/robot_404.json" private val PRECOMP_WITH_REMAPPING = "files/precomp_with_remapping.json" private val MASK_ADD = "files/mask_add.json" private val DASH = "files/dash.json" @@ -42,10 +43,9 @@ private val REPEATER = "files/repeater.json" fun App() { val json by produceState(null){ - value = Res.readBytes(ROUNDING_CORENERS).decodeToString() + value = Res.readBytes(ROBOT).decodeToString() } - if (json != null) { val composition by rememberLottieComposition( LottieCompositionSpec.JsonString(json!!) From 569f0ef7aab5cf4b4d7210a4b773aea1d891ceca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 2 Jun 2024 23:53:33 +0300 Subject: [PATCH 018/100] bug fixes --- .../alexzhirkevich/compottie/LottiePainter.kt | 27 ++++++++++--------- .../internal/animation/AnimatedTransform.kt | 5 +++- .../internal/animation/AnimatedValue.kt | 1 + .../animation/BaseKeyframeAnimation.kt | 15 ++++++----- .../compottie/internal/animation/Keyframe.kt | 14 ++++++++-- .../internal/content/ContentGroup.kt | 2 +- .../compottie/internal/helpers/Transform.kt | 4 +-- .../compottie/internal/layers/BaseLayer.kt | 4 +++ .../compottie/internal/layers/NullLayer.kt | 1 + .../compottie/internal/shapes/FillShape.kt | 4 +-- .../internal/shapes/GradientFillShape.kt | 14 +++++----- .../internal/shapes/PolystarShape.kt | 18 ++++++------- .../composeResources/files/confetti.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 6 ++--- 14 files changed, 68 insertions(+), 48 deletions(-) create mode 100644 example/shared/src/commonMain/composeResources/files/confetti.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index a36df388..0fa433a7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -182,7 +182,10 @@ private class LottiePainter( p.coerceAtLeast(0f) } - val compositionLayer = if (composition.lottieData.layers.size == 1 && composition.lottieData.layers[0] is PrecompositionLayer){ + val compositionLayer : BaseCompositionLayer = if ( + composition.lottieData.layers.size == 1 && + composition.lottieData.layers[0] is PrecompositionLayer + ){ composition.lottieData.layers[0] as BaseCompositionLayer } else { CompositionLayer(composition) @@ -223,17 +226,17 @@ private class LottiePainter( ) matrix.reset() -// matrix.preScale(scale.scaleX, scale.scaleY) -// matrix.preTranslate(offset.x.toFloat(), offset.y.toFloat()) - - scale(scale.scaleX, scale.scaleY) { - translate(offset.x.toFloat(), offset.y.toFloat()) { - compositionLayer.density = density - try { - compositionLayer.draw(this, matrix, alpha, currentFrame) - } catch (t: Throwable) { - println("Lottie crashed in draw :(") - t.printStackTrace() + + measureTime { + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + compositionLayer.density = density + try { + compositionLayer.draw(this, matrix, alpha, currentFrame) + } catch (t: Throwable) { + println("Lottie crashed in draw :(") + t.printStackTrace() + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index a588471a..30198fda 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -6,9 +6,12 @@ import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.preRotate import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate +import io.github.alexzhirkevich.compottie.internal.utils.scale import io.github.alexzhirkevich.compottie.internal.utils.setValues import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlin.math.abs +import kotlin.math.absoluteValue import kotlin.math.cos import kotlin.math.sin import kotlin.math.tan @@ -96,7 +99,7 @@ internal abstract class AnimatedTransform { } scale?.interpolated(frame) - ?.takeIf { it.x != 1f || it.y != 1f } + ?.takeIf { it.x != 100f || it.y != 100f } ?.let { matrix.preScale(it.x / 100f, it.y / 100f) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt index d976e1e5..ee15cd21 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt @@ -42,6 +42,7 @@ internal sealed interface AnimatedValue : KeyframeAnimation, Indexable { keyframes = value, emptyValue = 1f, map = { s, e, p, _ -> + lerp(s[0], e[0], easingX.transform(p)) } ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index 0667dd82..9ae82730 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -9,7 +9,7 @@ internal class BaseKeyframeAnimation( private val map : Keyframe.(start : K, end : K, progress: Float, frame: Float) -> T ) : KeyframeAnimation { - private val sortedKeyframes = keyframes.sortedBy { it.time } + private val sortedKeyframes = keyframes//.sortedBy { it.time } private val firstFrame: Float by lazy { sortedKeyframes.first().time @@ -23,11 +23,11 @@ internal class BaseKeyframeAnimation( keyframes.first().run { map( requireNotNull( - sortedKeyframes[0].start, + start, InvalidKeyframeError ), requireNotNull( - sortedKeyframes[0].endHold ?: sortedKeyframes.getOrNull(1)?.start, + endHold ?: sortedKeyframes.getOrNull(1)?.start, InvalidKeyframeError ), 0f, @@ -44,8 +44,7 @@ internal class BaseKeyframeAnimation( InvalidKeyframeError ), requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.endHold - ?: sortedKeyframes.last().start, + sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.endHold ?: start, InvalidKeyframeError ), 1f, @@ -66,13 +65,15 @@ internal class BaseKeyframeAnimation( for (i in 0.. { !i?.y.isNullOrEmpty() && !o?.x.isNullOrEmpty() && !o?.y.isNullOrEmpty() ) { - CubicBezierEasing(o!!.x[0], o.y[0], i!!.x[0], i.y[0]) + CubicBezierEasing( + o!!.x[0].coerceIn(0f,1f), + o.y[0].coerceIn(0f,1f), + i!!.x[0].coerceIn(0f,1f), + i.y[0].coerceIn(0f,1f) + ) } else LinearEasing } } @@ -39,7 +44,12 @@ internal abstract class Keyframe { val o = outValue if (i?.x?.size == 2 && i.y.size == 2 && o?.x?.size == 2 && o.y.size == 2) { - CubicBezierEasing(o.x[1], o.y[1], i.x[1], i.y[1]) + CubicBezierEasing( + o.x[1].coerceIn(0f,1f), + o.y[1].coerceIn(0f,1f), + i.x[1].coerceIn(0f,1f), + i.y[1].coerceIn(0f,1f) + ) } else { easingX } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 8f174ad0..764e38ac 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -50,7 +50,6 @@ internal class ContentGroup( } override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { - if (hidden) { return } @@ -62,6 +61,7 @@ internal class ContentGroup( if (transform != null) { matrix.preConcat(transform.matrix(frame)) transform.opacity?.interpolated(frame)?.let { + layerAlpha = (layerAlpha * it / 100f).coerceIn(0f, 1f) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index 11aee4f5..efd93477 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -29,8 +29,6 @@ internal class Transform( @SerialName("sa") override val skewAxis: AnimatedValue? = null, -) : AnimatedTransform() { - -} +) : AnimatedTransform() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 47a148d0..885f192a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -92,6 +92,10 @@ internal abstract class BaseLayer() : Layer, DrawingContent { parentAlpha: Float, frame: Float ) { + + if (hidden || (inPoint ?: 0f) > frame || (outPoint ?: Float.MAX_VALUE) < frame) + return + buildParentLayerListIfNeeded() matrix.reset() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index b089f588..c4b836ba 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -82,6 +82,7 @@ internal class NullLayer( applyParents: Boolean, frame: Float ) { + super.getBounds(outBounds, parentMatrix, applyParents, frame) outBounds.set(0f,0f,0f,0f) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 0f281561..36bb16ff 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -64,12 +64,12 @@ internal class FillShape( return } + paint.color = color.interpolated(frame) + paint.alpha = opacity?.interpolated(frame)?.let { (parentAlpha * it / 100f).coerceIn(0f, 1f) } ?: parentAlpha - paint.color = color.interpolated(frame) - path.reset() paths.fastForEach { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 69890c9d..fb134e6b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -80,13 +80,6 @@ internal class GradientFillShape( override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { - paint.alpha = if (opacity != null) { - (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) - } - else { - parentAlpha - } - paint.shader = GradientShader( type = type, startPoint = startPoint, @@ -97,6 +90,13 @@ internal class GradientFillShape( cache = gradientCache ) + paint.alpha = if (opacity != null) { + (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) + } + else { + parentAlpha + } + path.reset() paths.fastForEach { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index e24880ce..b6a4b0ef 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -50,19 +50,19 @@ internal class PolystarShape( val direction : Int = 1, @SerialName("is") - val innerRoundness : AnimatedValue?, + val innerRoundness : AnimatedValue? = null, @SerialName("ir") - val innerRadius : AnimatedValue, + val innerRadius : AnimatedValue? = null, @SerialName("or") - val outerRadius : AnimatedValue, + val outerRadius : AnimatedValue? = null, @SerialName("os") - val outerRoundness : AnimatedValue?, + val outerRoundness : AnimatedValue? = null, @SerialName("r") - val rotation : AnimatedValue?, + val rotation : AnimatedValue? = null, @SerialName("pt") val points : AnimatedValue, @@ -93,8 +93,6 @@ internal class PolystarShape( StarType.Polygon -> createPolygonPath(frame) } - path.close() - trimPaths.apply(path, frame) return path @@ -123,8 +121,8 @@ internal class PolystarShape( currentAngle += (halfAnglePerPoint * (1f - partialPointAmount)) } - val outerRadius = outerRadius.interpolated(frame) - val innerRadius = innerRadius.interpolated(frame) + val outerRadius = outerRadius?.interpolated(frame) ?: 0f + val innerRadius = innerRadius?.interpolated(frame) ?: 0f val innerRoundedness = innerRoundness?.interpolated(frame)?.div(100f) ?: 0f val outerRoundedness = outerRoundness?.interpolated(frame)?.div(100f) ?: 0f @@ -230,7 +228,7 @@ internal class PolystarShape( val anglePerPoint = (TwoPI / points).toFloat() val roundedness = outerRoundness?.interpolated(frame)?.div(100f) ?: 0f - val radius = outerRadius.interpolated(frame) + val radius = outerRadius?.interpolated(frame) ?: 0f var x: Float var y: Float var previousX: Float diff --git a/example/shared/src/commonMain/composeResources/files/confetti.json b/example/shared/src/commonMain/composeResources/files/confetti.json new file mode 100644 index 00000000..f49ad425 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/confetti.json @@ -0,0 +1 @@ +{"v":"5.7.12","fr":30,"ip":0,"op":60,"w":512,"h":512,"nm":"Confetti 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 3","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":260,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[102,102,100],"ix":6,"l":2}},"ao":0,"ip":5,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 50","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":41,"s":[100]},{"t":57,"s":[0]}],"ix":11},"r":{"a":0,"k":487,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[41,41,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-19.362,34.498],[7.899,-25.433],[37.607,53.867],[11.905,108.592]],"o":[[0,0],[42.457,-75.648],[-9.025,29.061],[-47.221,-67.637],[-3.807,-34.72]],"v":[[1,2],[-48.536,-23.607],[-76.476,-100.021],[27.098,-130.112],[-120.809,-222.715]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.49411764705882355,0.8274509803921568,0.12941176470588237,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":17,"s":[0]},{"t":54,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":14,"s":[0]},{"t":49,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":14,"op":60,"st":14,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 49","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40,"s":[100]},{"t":56,"s":[0]}],"ix":11},"r":{"a":0,"k":353,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[70,70,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[8.506,-58.529],[28.328,67.272],[11.905,108.592]],"o":[[0,0],[9.966,-26.338],[-12.365,85.083],[-32.013,-76.024],[-3.807,-34.72]],"v":[[1,2],[-48.536,-23.607],[-76.476,-100.021],[27.098,-130.112],[-120.809,-222.715]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.728918397193,0.113771438599,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":16,"s":[0]},{"t":53,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":13,"s":[0]},{"t":48,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":13,"op":60,"st":13,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 48","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":39,"s":[100]},{"t":55,"s":[0]}],"ix":11},"r":{"a":0,"k":187,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[70,70,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[8.254,-31.239],[20.685,70.001],[17.795,30.055]],"o":[[0,0],[9.966,-26.338],[-7.439,28.154],[-10.769,-36.442],[-17.795,-30.055]],"v":[[1,2],[2.692,-79.782],[-49.416,-90.653],[-14.589,-135.23],[-105.31,-168.421]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.89785563151,0.113771438599,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":15,"s":[0]},{"t":52,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":12,"s":[0]},{"t":47,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":12,"op":60,"st":12,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 47","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":38,"s":[100]},{"t":54,"s":[0]}],"ix":11},"r":{"a":0,"k":203,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[58,58,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[-1,38],[35.009,-27.828],[-11,31]],"o":[[0,0],[9.966,-26.338],[1,-38],[-39,31],[11,-31]],"v":[[1,2],[48,-39],[29,-112],[136,-107],[103,-176]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.104197326361,0.38322987276,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":14,"s":[0]},{"t":51,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":11,"s":[0]},{"t":46,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":11,"op":60,"st":11,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 46","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[100]},{"t":53,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[-1,38],[35.009,-27.828],[-11,31]],"o":[[0,0],[9.966,-26.338],[1,-38],[-39,31],[11,-31]],"v":[[1,2],[48,-39],[29,-112],[136,-107],[103,-176]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":13,"s":[0]},{"t":50,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":10,"s":[0]},{"t":45,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":10,"op":60,"st":10,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 45","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"t":52,"s":[0]}],"ix":11},"r":{"a":0,"k":487,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[41,41,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-19.362,34.498],[7.899,-25.433],[37.607,53.867],[11.905,108.592]],"o":[[0,0],[42.457,-75.648],[-9.025,29.061],[-47.221,-67.637],[-3.807,-34.72]],"v":[[1,2],[-48.536,-23.607],[-76.476,-100.021],[27.098,-130.112],[-120.809,-222.715]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.49411764705882355,0.8274509803921568,0.12941176470588237,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":12,"s":[0]},{"t":49,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":9,"s":[0]},{"t":44,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":9,"op":60,"st":9,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 43","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[100]},{"t":51,"s":[0]}],"ix":11},"r":{"a":0,"k":353,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[70,70,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[8.506,-58.529],[28.328,67.272],[11.905,108.592]],"o":[[0,0],[9.966,-26.338],[-12.365,85.083],[-32.013,-76.024],[-3.807,-34.72]],"v":[[1,2],[-48.536,-23.607],[-76.476,-100.021],[27.098,-130.112],[-120.809,-222.715]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.728918397193,0.113771438599,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":11,"s":[0]},{"t":48,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":8,"s":[0]},{"t":43,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":8,"op":60,"st":8,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 42","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":34,"s":[100]},{"t":50,"s":[0]}],"ix":11},"r":{"a":0,"k":187,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[70,70,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[8.254,-31.239],[20.685,70.001],[17.795,30.055]],"o":[[0,0],[9.966,-26.338],[-7.439,28.154],[-10.769,-36.442],[-17.795,-30.055]],"v":[[1,2],[2.692,-79.782],[-49.416,-90.653],[-14.589,-135.23],[-105.31,-168.421]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.89785563151,0.113771438599,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":10,"s":[0]},{"t":47,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":7,"s":[0]},{"t":42,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":60,"st":7,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 44","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":33,"s":[100]},{"t":49,"s":[0]}],"ix":11},"r":{"a":0,"k":203,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[58,58,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[-1,38],[35.009,-27.828],[-11,31]],"o":[[0,0],[9.966,-26.338],[1,-38],[-39,31],[11,-31]],"v":[[1,2],[48,-39],[29,-112],[136,-107],[103,-176]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.104197326361,0.38322987276,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":9,"s":[0]},{"t":46,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":6,"s":[0]},{"t":41,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":6,"op":60,"st":6,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 41","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100]},{"t":48,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14,37],[-1,38],[35.009,-27.828],[-11,31]],"o":[[0,0],[9.966,-26.338],[1,-38],[-39,31],[11,-31]],"v":[[1,2],[48,-39],[29,-112],[136,-107],[103,-176]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5,"x":"var $bm_rt;\n$bm_rt = wiggle(5, 3);"},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":8,"s":[0]},{"t":45,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.139],"y":[0]},"t":5,"s":[0]},{"t":40,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":5,"op":60,"st":5,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 40","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":33,"s":[100]},{"t":49,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.647},"o":{"x":0.167,"y":0.167},"t":6,"s":[269.95,307.113,0],"to":[-0.323,-0.36,0],"ti":[1.346,1.541,0]},{"i":{"x":0.833,"y":0.769},"o":{"x":0.167,"y":0.109},"t":7,"s":[268.011,304.951,0],"to":[-1.346,-1.541,0],"ti":[2.46,3.542,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.13},"t":8,"s":[261.875,297.864,0],"to":[-2.46,-3.542,0],"ti":[2.232,5.312,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":9,"s":[253.252,283.701,0],"to":[-2.232,-5.312,0],"ti":[0.637,5.627,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.178},"t":10,"s":[248.481,265.992,0],"to":[-0.637,-5.627,0],"ti":[-0.921,4.788,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":11,"s":[249.431,249.939,0],"to":[0.921,-4.788,0],"ti":[-1.796,3.705,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":12,"s":[254.007,237.262,0],"to":[1.796,-3.705,0],"ti":[-2.147,2.784,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":13,"s":[260.206,227.707,0],"to":[2.147,-2.784,0],"ti":[-2.218,2.088,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":14,"s":[266.89,220.559,0],"to":[2.218,-2.088,0],"ti":[-2.161,1.578,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":15,"s":[273.513,215.179,0],"to":[2.161,-1.578,0],"ti":[-2.053,1.203,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.177},"t":16,"s":[279.855,211.089,0],"to":[2.053,-1.203,0],"ti":[-1.93,0.918,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[285.832,207.964,0],"to":[1.93,-0.918,0],"ti":[-1.801,0.7,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[291.433,205.582,0],"to":[1.801,-0.7,0],"ti":[-1.666,0.538,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[296.641,203.764,0],"to":[1.666,-0.538,0],"ti":[-1.53,0.417,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":20,"s":[301.428,202.354,0],"to":[1.53,-0.417,0],"ti":[-1.402,0.32,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":21,"s":[305.818,201.265,0],"to":[1.402,-0.32,0],"ti":[-1.283,0.243,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[309.838,200.433,0],"to":[1.283,-0.243,0],"ti":[-1.172,0.18,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[313.514,199.809,0],"to":[1.172,-0.18,0],"ti":[-1.068,0.128,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":24,"s":[316.868,199.355,0],"to":[1.068,-0.128,0],"ti":[-0.97,0.084,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":25,"s":[319.92,199.043,0],"to":[0.97,-0.084,0],"ti":[-0.879,0.048,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":26,"s":[322.69,198.85,0],"to":[0.879,-0.048,0],"ti":[-0.793,0.017,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":27,"s":[325.194,198.756,0],"to":[0.793,-0.017,0],"ti":[-0.712,-0.009,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[327.449,198.747,0],"to":[0.712,0.009,0],"ti":[-0.636,-0.03,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":29,"s":[329.469,198.808,0],"to":[0.636,0.03,0],"ti":[-0.564,-0.048,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":30,"s":[331.266,198.928,0],"to":[0.564,0.048,0],"ti":[-0.497,-0.063,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":31,"s":[332.854,199.098,0],"to":[0.497,0.063,0],"ti":[-0.434,-0.076,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":32,"s":[334.247,199.309,0],"to":[0.434,0.076,0],"ti":[-0.375,-0.085,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":33,"s":[335.457,199.552,0],"to":[0.375,0.085,0],"ti":[-0.32,-0.092,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":34,"s":[336.496,199.819,0],"to":[0.32,0.092,0],"ti":[-0.269,-0.097,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.181},"t":35,"s":[337.376,200.105,0],"to":[0.269,0.097,0],"ti":[-0.221,-0.099,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.182},"t":36,"s":[338.108,200.401,0],"to":[0.221,0.099,0],"ti":[-0.178,-0.1,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.183},"t":37,"s":[338.704,200.702,0],"to":[0.178,0.1,0],"ti":[-0.138,-0.098,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.184},"t":38,"s":[339.176,200.999,0],"to":[0.138,0.098,0],"ti":[-0.103,-0.094,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.186},"t":39,"s":[339.534,201.288,0],"to":[0.103,0.094,0],"ti":[-0.071,-0.087,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.187},"t":40,"s":[339.791,201.562,0],"to":[0.071,0.087,0],"ti":[-0.043,-0.079,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.188},"t":41,"s":[339.958,201.813,0],"to":[0.043,0.079,0],"ti":[-0.02,-0.068,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.189},"t":42,"s":[340.049,202.035,0],"to":[0.02,0.068,0],"ti":[0,-0.055,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.191},"t":43,"s":[340.075,202.222,0],"to":[0,0.055,0],"ti":[0.014,-0.04,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.191},"t":44,"s":[340.051,202.365,0],"to":[-0.014,0.04,0],"ti":[0.025,-0.022,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.184},"t":45,"s":[339.989,202.459,0],"to":[-0.025,0.022,0],"ti":[0.024,-0.002,0]},{"i":{"x":0.833,"y":0.799},"o":{"x":0.167,"y":0.197},"t":46,"s":[339.903,202.496,0],"to":[-0.024,0.002,0],"ti":[0.008,0.02,0]},{"i":{"x":0.833,"y":0.778},"o":{"x":0.167,"y":0.143},"t":47,"s":[339.844,202.469,0],"to":[-0.008,-0.02,0],"ti":[-0.011,0.042,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.133},"t":48,"s":[339.858,202.373,0],"to":[0.011,-0.042,0],"ti":[-0.012,0.057,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.156},"t":49,"s":[339.908,202.219,0],"to":[0.012,-0.057,0],"ti":[-0.001,0.066,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.158},"t":50,"s":[339.927,202.033,0],"to":[0.001,-0.066,0],"ti":[0.008,0.072,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":51,"s":[339.916,201.823,0],"to":[-0.008,-0.072,0],"ti":[0.017,0.076,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":52,"s":[339.877,201.599,0],"to":[-0.017,-0.076,0],"ti":[0.026,0.078,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.163},"t":53,"s":[339.812,201.365,0],"to":[-0.026,-0.078,0],"ti":[0.033,0.078,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":54,"s":[339.723,201.128,0],"to":[-0.033,-0.078,0],"ti":[0.04,0.076,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":55,"s":[339.613,200.895,0],"to":[-0.04,-0.076,0],"ti":[0.046,0.073,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.167},"t":56,"s":[339.484,200.67,0],"to":[-0.046,-0.073,0],"ti":[0.051,0.068,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":57,"s":[339.339,200.457,0],"to":[-0.051,-0.068,0],"ti":[0.055,0.062,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.169},"t":58,"s":[339.179,200.262,0],"to":[-0.055,-0.062,0],"ti":[0.029,0.029,0]},{"t":59,"s":[339.007,200.087,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.27,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":6,"s":[140.028,87.797,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.945,4.379,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,0.567,0]},"t":7,"s":[149.724,81.426,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.242,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.158,0.081,0]},"t":8,"s":[108.654,80.328,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,1.096,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,-0.235,0]},"t":9,"s":[122.85,125.952,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.361,0.045,0]},"t":10,"s":[67.435,113.999,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.46,0.786,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.186,-0.016,0]},"t":11,"s":[77.828,139.764,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.921,0.918,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,0.136,0]},"t":12,"s":[86.275,118.232,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.039,-1.479,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.604,-4.077,0]},"t":13,"s":[132.517,84.447,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,1.074,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,0.086,0]},"t":14,"s":[130.233,85.124,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.337,1.045,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.399,0.039,0]},"t":15,"s":[104.061,104.576,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,0.992,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,0.029,0]},"t":16,"s":[97.155,67.886,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.652,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.607,-0.009,0]},"t":17,"s":[131.988,124.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.86,0.858,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,-0.045,0]},"t":18,"s":[137.528,73.357,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.036,1.045,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.207,0.201,0]},"t":19,"s":[88.621,106.456,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.915,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.029,0]},"t":20,"s":[55.617,129.849,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.262,4.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.634,4.996,0]},"t":21,"s":[102.914,93.756,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.946,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,0.082,0]},"t":22,"s":[97.417,93.144,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.703,0.499,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.154,-0.157,0]},"t":23,"s":[54.264,122.898,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.998,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,0.1,0]},"t":24,"s":[69.385,112.598,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.949,1.263,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.002,0.458,0]},"t":25,"s":[108.191,60.937,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.891,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.135,0.063,0]},"t":26,"s":[70.4,49.44,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.585,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.486,0.354,0]},"t":27,"s":[84.854,97.16,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.234,0.72,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.104,-0.001,0]},"t":28,"s":[85.713,111.857,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,0.119,0]},"t":29,"s":[89.136,97.385,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.375,0.152,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,-3.19,0]},"t":30,"s":[76.083,63.267,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,0.8,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.068,0.092,0]},"t":31,"s":[85.219,64.136,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.877,1.035,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,0.143,0]},"t":32,"s":[34.985,72.111,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.257,0.025,0]},"t":33,"s":[97.846,83.275,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.901,2.92,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.02,2.259,0]},"t":34,"s":[127.941,67.428,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.553,0.981,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.536,0.08,0]},"t":35,"s":[103.695,66.821,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.782,0.701,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.102,-0.025,0]},"t":36,"s":[99.227,81.408,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.859,0.804,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,0.116,0]},"t":37,"s":[79.727,70.137,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.203,0.145,0]},"t":38,"s":[48.153,40.939,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.706,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.106,-0.113,0]},"t":39,"s":[26.225,1.63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.052,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,0.116,0]},"t":40,"s":[35.878,18.283,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.639,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.032,-0.069,0]},"t":41,"s":[45.795,60.473,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.99,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.108,0.165,0]},"t":42,"s":[29.734,37.417,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,-0.589,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.011,-0.907,0]},"t":43,"s":[-23.828,13.866,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.893,0.871,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.06,0.088,0]},"t":44,"s":[23.282,15.847,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.57,1.036,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.379,0.235,0]},"t":45,"s":[-4.081,51.66,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,0.796,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.025,0]},"t":46,"s":[-11.795,71.385,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.979,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.061,0.141,0]},"t":47,"s":[48.641,43.137,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.129,0.825,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,-0.028,0]},"t":48,"s":[13.642,2.267,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,1.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.159,0]},"t":49,"s":[-18.389,32.951,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.864,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.028,0.017,0]},"t":50,"s":[63.189,66.722,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.844,1.094,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.146,0.216,0]},"t":51,"s":[2.261,24.31,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.977,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.179,0.044,0]},"t":52,"s":[24.372,-2.358,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.521,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.314,-0.032,0]},"t":53,"s":[43.66,54.3,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.101,-0.001,0]},"t":54,"s":[39.61,13.352,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.265,0.893,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.359,-0.012,0]},"t":55,"s":[20.359,53.589,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.847,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,0.371,0]},"t":56,"s":[23.988,18.274,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.068,1.058,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.183,0]},"t":57,"s":[52.384,8.05,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.034,0]},"t":58,"s":[84.408,-0.484,100]},{"t":59,"s":[26.091,14.017,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":60,"st":6,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 39","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":38,"s":[100]},{"t":54,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.587},"o":{"x":0.167,"y":0.167},"t":11,"s":[266.709,299.63,0],"to":[-0.015,0.376,0],"ti":[0.204,-1.854,0]},{"i":{"x":0.833,"y":0.764},"o":{"x":0.167,"y":0.104},"t":12,"s":[266.621,301.887,0],"to":[-0.204,1.854,0],"ti":[0.96,-4.091,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":13,"s":[265.488,310.754,0],"to":[-0.96,4.091,0],"ti":[2.202,-5.284,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":14,"s":[260.859,326.432,0],"to":[-2.202,5.284,0],"ti":[3.145,-4.688,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":15,"s":[252.276,342.456,0],"to":[-3.145,4.688,0],"ti":[3.441,-3.397,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":16,"s":[241.99,354.561,0],"to":[-3.441,3.397,0],"ti":[3.35,-2.293,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":17,"s":[231.629,362.84,0],"to":[-3.35,2.293,0],"ti":[3.107,-1.507,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":18,"s":[221.889,368.32,0],"to":[-3.107,1.507,0],"ti":[2.823,-0.973,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":19,"s":[212.988,371.885,0],"to":[-2.823,0.973,0],"ti":[2.545,-0.61,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":20,"s":[204.948,374.155,0],"to":[-2.545,0.61,0],"ti":[2.287,-0.361,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":21,"s":[197.719,375.542,0],"to":[-2.287,0.361,0],"ti":[2.057,-0.189,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":22,"s":[191.223,376.321,0],"to":[-2.057,0.189,0],"ti":[1.855,-0.069,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":23,"s":[185.374,376.678,0],"to":[-1.855,0.069,0],"ti":[1.678,0.016,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":24,"s":[180.091,376.736,0],"to":[-1.678,-0.016,0],"ti":[1.52,0.078,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":25,"s":[175.308,376.58,0],"to":[-1.52,-0.078,0],"ti":[1.379,0.122,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[170.97,376.27,0],"to":[-1.379,-0.122,0],"ti":[1.252,0.155,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[167.033,375.845,0],"to":[-1.252,-0.155,0],"ti":[1.137,0.18,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":28,"s":[163.458,375.337,0],"to":[-1.137,-0.18,0],"ti":[1.031,0.198,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[160.214,374.766,0],"to":[-1.031,-0.198,0],"ti":[0.933,0.212,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[157.274,374.147,0],"to":[-0.933,-0.212,0],"ti":[0.843,0.223,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":31,"s":[154.615,373.492,0],"to":[-0.843,-0.223,0],"ti":[0.758,0.232,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":32,"s":[152.218,372.807,0],"to":[-0.758,-0.232,0],"ti":[0.683,0.239,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":33,"s":[150.067,372.098,0],"to":[-0.683,-0.239,0],"ti":[0.619,0.242,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":34,"s":[148.12,371.372,0],"to":[-0.619,-0.242,0],"ti":[0.56,0.239,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":35,"s":[146.355,370.647,0],"to":[-0.56,-0.239,0],"ti":[0.506,0.232,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":36,"s":[144.758,369.937,0],"to":[-0.506,-0.232,0],"ti":[0.454,0.219,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":37,"s":[143.32,369.258,0],"to":[-0.454,-0.219,0],"ti":[0.406,0.203,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":38,"s":[142.032,368.621,0],"to":[-0.406,-0.203,0],"ti":[0.36,0.184,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":39,"s":[140.885,368.038,0],"to":[-0.36,-0.184,0],"ti":[0.317,0.162,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":40,"s":[139.871,367.517,0],"to":[-0.317,-0.162,0],"ti":[0.277,0.138,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.18},"t":41,"s":[138.982,367.066,0],"to":[-0.277,-0.138,0],"ti":[0.238,0.111,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":42,"s":[138.211,366.692,0],"to":[-0.238,-0.111,0],"ti":[0.201,0.083,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.185},"t":43,"s":[137.554,366.399,0],"to":[-0.201,-0.083,0],"ti":[0.166,0.055,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.189},"t":44,"s":[137.005,366.191,0],"to":[-0.166,-0.055,0],"ti":[0.132,0.025,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.194},"t":45,"s":[136.559,366.071,0],"to":[-0.132,-0.025,0],"ti":[0.1,-0.005,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.195},"t":46,"s":[136.211,366.04,0],"to":[-0.1,0.005,0],"ti":[0.069,-0.034,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.182},"t":47,"s":[135.959,366.098,0],"to":[-0.069,0.034,0],"ti":[0.039,-0.063,0]},{"i":{"x":0.833,"y":0.81},"o":{"x":0.167,"y":0.158},"t":48,"s":[135.797,366.244,0],"to":[-0.039,0.063,0],"ti":[0.011,-0.091,0]},{"i":{"x":0.833,"y":0.81},"o":{"x":0.167,"y":0.148},"t":49,"s":[135.723,366.476,0],"to":[-0.011,0.091,0],"ti":[-0.016,-0.118,0]},{"i":{"x":0.833,"y":0.819},"o":{"x":0.167,"y":0.149},"t":50,"s":[135.732,366.79,0],"to":[0.016,0.118,0],"ti":[-0.036,-0.141,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.154},"t":51,"s":[135.82,367.181,0],"to":[0.036,0.141,0],"ti":[-0.044,-0.159,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.159},"t":52,"s":[135.95,367.634,0],"to":[0.044,0.159,0],"ti":[-0.046,-0.173,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.161},"t":53,"s":[136.085,368.134,0],"to":[0.046,0.173,0],"ti":[-0.047,-0.184,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":54,"s":[136.223,368.671,0],"to":[0.047,0.184,0],"ti":[-0.048,-0.193,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.164},"t":55,"s":[136.365,369.239,0],"to":[0.048,0.193,0],"ti":[-0.048,-0.197,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.165},"t":56,"s":[136.509,369.827,0],"to":[0.048,0.197,0],"ti":[-0.048,-0.198,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.167},"t":57,"s":[136.653,370.423,0],"to":[0.048,0.198,0],"ti":[-0.047,-0.195,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.169},"t":58,"s":[136.796,371.017,0],"to":[0.047,0.195,0],"ti":[-0.023,-0.096,0]},{"t":59,"s":[136.937,371.594,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.877,0.953,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":11,"s":[59.343,96.124,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.969,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.259,-0.107,0]},"t":12,"s":[89.744,43.042,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.861,1.087,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.05,0.166,0]},"t":13,"s":[104.203,66.307,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.424,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.208,0.043,0]},"t":14,"s":[95.197,89.821,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.819,0.904,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,-0.039,0]},"t":15,"s":[89.153,41.816,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.993,0.548,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.154,0.617,0]},"t":16,"s":[125.946,74.556,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.815,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.008,0.102,0]},"t":17,"s":[169.121,79.673,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,1.513,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.152,-0.669,0]},"t":18,"s":[129.751,102.297,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.747,1.071,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.266,0.072,0]},"t":19,"s":[81.726,99.791,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.055,0.899,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.124,0.038,0]},"t":20,"s":[93.197,117.733,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,1.324,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,0.474,0]},"t":21,"s":[116.588,84.536,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.473,1.053,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.179,0.066,0]},"t":22,"s":[77.774,77.458,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,0.033,0]},"t":23,"s":[80.336,112.065,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.026,1.108,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.364,0.57,0]},"t":24,"s":[93.979,55.33,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.832,0.728,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.047,0]},"t":25,"s":[91.437,45.624,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.069,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.076,0.12,0]},"t":26,"s":[94.777,67.955,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,-0.116,0]},"t":27,"s":[58.109,118.474,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,0.352,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.102,0.493,0]},"t":28,"s":[125.074,97.355,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.408,0.998,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.104,0.096,0]},"t":29,"s":[95.015,93.056,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.982,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,-0.002,0]},"t":30,"s":[108.364,63.932,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.838,-0.683,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.022,-1.218,0]},"t":31,"s":[29.719,92.263,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.172,0.088,0]},"t":32,"s":[91.786,90.449,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.834,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.177,-0.036,0]},"t":33,"s":[150.239,55.635,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,0.888,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,0.167,0]},"t":34,"s":[131.528,79.867,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,1.053,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.326,0]},"t":35,"s":[114.424,104,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.464,0.726,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.141,0.032,0]},"t":36,"s":[99.134,112.3,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.762,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.12,0]},"t":37,"s":[104.825,98.77,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.398,1.006,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.54,0.128,0]},"t":38,"s":[67.48,67.824,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.006,0]},"t":39,"s":[65.344,10.519,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-3.208,1.093,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.911,0.258,0]},"t":40,"s":[77.671,71.977,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.93,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.085,0.044,0]},"t":41,"s":[76.639,101.368,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.96,1.238,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.443,0.68,0]},"t":42,"s":[25.532,39.221,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.134,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.077,0.062,0]},"t":43,"s":[33.627,30.543,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.683,0.714,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,-0.194,0]},"t":44,"s":[29.417,64.046,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.008,0.948,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.118,0]},"t":45,"s":[40.374,53.993,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.787,1.36,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,-0.137,0]},"t":46,"s":[71.134,29.6,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.078,1.002,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.137,0.068,0]},"t":47,"s":[37.38,38.828,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.937,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.002,0]},"t":48,"s":[-15.322,-10.291,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.695,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.139,-0.254,0]},"t":49,"s":[86.713,39.937,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.314,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.669,0.115,0]},"t":50,"s":[48.493,27.546,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.73,0.854,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.066,0.012,0]},"t":51,"s":[46.484,-5.44,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,0.884,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.12,0.194,0]},"t":52,"s":[56.051,33.097,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,1.27,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.299,0]},"t":53,"s":[77.513,62.169,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.866,0.851,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.324,0.064,0]},"t":54,"s":[46.909,73.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.037,0.912,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.222,0.188,0]},"t":55,"s":[53.173,25.847,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.024,1.423,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,1.71,0]},"t":56,"s":[56.946,-11.873,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.891,0.665,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.019,0.07,0]},"t":57,"s":[96.787,-13.805,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.356,0.111,0]},"t":58,"s":[45.548,-2.059,100]},{"t":59,"s":[29.917,33.378,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":60,"st":11,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 38","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":34,"s":[100]},{"t":50,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.591},"o":{"x":0.167,"y":0.167},"t":7,"s":[262.436,299.331,0],"to":[0.489,-0.187,0],"ti":[-2.348,1.046,0]},{"i":{"x":0.833,"y":0.764},"o":{"x":0.167,"y":0.105},"t":8,"s":[265.373,298.21,0],"to":[2.348,-1.046,0],"ti":[-5.031,2.854,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":9,"s":[276.523,293.055,0],"to":[5.031,-2.854,0],"ti":[-6.175,4.882,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":10,"s":[295.56,281.084,0],"to":[6.175,-4.882,0],"ti":[-4.919,5.974,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":11,"s":[313.573,263.763,0],"to":[4.919,-5.974,0],"ti":[-2.793,5.995,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":12,"s":[325.076,245.24,0],"to":[2.793,-5.995,0],"ti":[-0.958,5.467,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":13,"s":[330.333,227.794,0],"to":[0.958,-5.467,0],"ti":[0.382,4.708,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":14,"s":[330.823,212.44,0],"to":[-0.382,-4.708,0],"ti":[1.261,3.892,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":15,"s":[328.039,199.545,0],"to":[-1.261,-3.892,0],"ti":[1.765,3.129,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":16,"s":[323.257,189.086,0],"to":[-1.765,-3.129,0],"ti":[2.001,2.482,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":17,"s":[317.447,180.769,0],"to":[-2.001,-2.482,0],"ti":[2.064,1.961,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":18,"s":[311.25,174.195,0],"to":[-2.064,-1.961,0],"ti":[2.024,1.552,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":19,"s":[305.064,169.001,0],"to":[-2.024,-1.552,0],"ti":[1.932,1.236,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[299.106,164.881,0],"to":[-1.932,-1.236,0],"ti":[1.816,0.99,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[293.474,161.588,0],"to":[-1.816,-0.99,0],"ti":[1.69,0.797,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[288.212,158.939,0],"to":[-1.69,-0.797,0],"ti":[1.563,0.644,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":23,"s":[283.333,156.803,0],"to":[-1.563,-0.644,0],"ti":[1.437,0.519,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":24,"s":[278.836,155.078,0],"to":[-1.437,-0.519,0],"ti":[1.316,0.416,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":25,"s":[274.712,153.691,0],"to":[-1.316,-0.416,0],"ti":[1.201,0.33,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":26,"s":[270.942,152.585,0],"to":[-1.201,-0.33,0],"ti":[1.094,0.257,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":27,"s":[267.505,151.714,0],"to":[-1.094,-0.257,0],"ti":[0.992,0.194,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[264.381,151.045,0],"to":[-0.992,-0.194,0],"ti":[0.897,0.139,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":29,"s":[261.551,150.551,0],"to":[-0.897,-0.139,0],"ti":[0.808,0.091,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":30,"s":[258.997,150.211,0],"to":[-0.808,-0.091,0],"ti":[0.724,0.048,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":31,"s":[256.702,150.007,0],"to":[-0.724,-0.048,0],"ti":[0.646,0.009,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":32,"s":[254.651,149.925,0],"to":[-0.646,-0.009,0],"ti":[0.572,-0.025,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":33,"s":[252.828,149.951,0],"to":[-0.572,0.025,0],"ti":[0.502,-0.055,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":34,"s":[251.221,150.073,0],"to":[-0.502,0.055,0],"ti":[0.437,-0.082,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":35,"s":[249.815,150.281,0],"to":[-0.437,0.082,0],"ti":[0.377,-0.105,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":36,"s":[248.597,150.563,0],"to":[-0.377,0.105,0],"ti":[0.321,-0.125,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":37,"s":[247.552,150.91,0],"to":[-0.321,0.125,0],"ti":[0.269,-0.141,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":38,"s":[246.671,151.311,0],"to":[-0.269,0.141,0],"ti":[0.22,-0.154,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":39,"s":[245.941,151.756,0],"to":[-0.22,0.154,0],"ti":[0.174,-0.163,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":40,"s":[245.353,152.233,0],"to":[-0.174,0.163,0],"ti":[0.132,-0.168,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":41,"s":[244.897,152.732,0],"to":[-0.132,0.168,0],"ti":[0.093,-0.169,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":42,"s":[244.562,153.241,0],"to":[-0.093,0.169,0],"ti":[0.057,-0.166,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":43,"s":[244.34,153.746,0],"to":[-0.057,0.166,0],"ti":[0.024,-0.158,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":44,"s":[244.221,154.236,0],"to":[-0.024,0.158,0],"ti":[-0.006,-0.145,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":45,"s":[244.197,154.694,0],"to":[0.006,0.145,0],"ti":[-0.033,-0.128,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":46,"s":[244.257,155.108,0],"to":[0.033,0.128,0],"ti":[-0.049,-0.109,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.175},"t":47,"s":[244.394,155.461,0],"to":[0.049,0.109,0],"ti":[-0.051,-0.108,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":48,"s":[244.552,155.765,0],"to":[0.051,0.108,0],"ti":[-0.047,-0.12,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.16},"t":49,"s":[244.699,156.107,0],"to":[0.047,0.12,0],"ti":[-0.044,-0.131,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.163},"t":50,"s":[244.836,156.487,0],"to":[0.044,0.131,0],"ti":[-0.041,-0.137,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"t":51,"s":[244.964,156.891,0],"to":[0.041,0.137,0],"ti":[-0.039,-0.14,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":52,"s":[245.085,157.309,0],"to":[0.039,0.14,0],"ti":[-0.037,-0.14,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":53,"s":[245.198,157.733,0],"to":[0.037,0.14,0],"ti":[-0.035,-0.138,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":54,"s":[245.305,158.152,0],"to":[0.035,0.138,0],"ti":[-0.033,-0.133,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.171},"t":55,"s":[245.406,158.559,0],"to":[0.033,0.133,0],"ti":[-0.031,-0.125,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":56,"s":[245.502,158.947,0],"to":[0.031,0.125,0],"ti":[-0.03,-0.116,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.174},"t":57,"s":[245.594,159.31,0],"to":[0.03,0.116,0],"ti":[-0.029,-0.104,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.176},"t":58,"s":[245.683,159.641,0],"to":[0.029,0.104,0],"ti":[-0.014,-0.049,0]},{"t":59,"s":[245.769,159.936,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.684,1.023,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":7,"s":[100.63,69.657,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.351,-1.07,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.018,0]},"t":8,"s":[104.514,69.052,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.905,1.153,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,0.087,0]},"t":9,"s":[115.346,69.821,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.398,0.948,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.695,0.054,0]},"t":10,"s":[58.871,88.161,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,0.738,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,-0.137,0]},"t":11,"s":[51.174,36.165,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.972,0.948,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.06,0.122,0]},"t":12,"s":[95.636,55.822,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.78,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.042,-0.141,0]},"t":13,"s":[69.725,97.853,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.246,1.072,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.285,0.134,0]},"t":14,"s":[86.959,82.233,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.96,0.883,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,0.039,0]},"t":15,"s":[94.096,56.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1.134,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.077,0.29,0]},"t":16,"s":[151.503,104.404,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.845,0.96,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.166,0.051,0]},"t":17,"s":[121.653,123.646,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.987,1.023,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.181,-0.079,0]},"t":18,"s":[91.668,73.435,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.872,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.015,0.018,0]},"t":19,"s":[66.045,99.285,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,1.2,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.223,0.238,0]},"t":20,"s":[87.746,66.291,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.113,0.059,0]},"t":21,"s":[100.66,48.526,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.102,0.778,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.477,-0.182,0]},"t":22,"s":[95.172,108.893,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.575,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.046,0.133,0]},"t":23,"s":[95.987,89.94,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.108,0.256,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,-0.27,0]},"t":24,"s":[94.176,58.401,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,0.094,0]},"t":25,"s":[130.21,65.835,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,-0.034,0]},"t":26,"s":[47.499,124.757,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,1.024,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.43,-0.057,0]},"t":27,"s":[105.068,83.037,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.17,0.979,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.019,0]},"t":28,"s":[118.917,107.79,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.86,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.056,-0.028,0]},"t":29,"s":[134.616,75.912,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.094,0.206,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.205,-0.452,0]},"t":30,"s":[86.877,99.716,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.852,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,0.093,0]},"t":31,"s":[54.265,96.009,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.9,1.036,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.139,0.19,0]},"t":32,"s":[123.839,64.381,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.39,0.839,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.496,0.025,0]},"t":33,"s":[97.726,39.711,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,0.871,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.097,0.173,0]},"t":34,"s":[92.458,75.119,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,1.058,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.019,0.235,0]},"t":35,"s":[59.151,108.162,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.407,0.742,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.405,0.034,0]},"t":36,"s":[86.256,126.307,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.957,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.097,0.123,0]},"t":37,"s":[81.627,95.551,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.652,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.089,-0.391,0]},"t":38,"s":[53.31,31.043,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.098,1.066,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,0.11,0]},"t":39,"s":[67.002,42.37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.972,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,0.037,0]},"t":40,"s":[81.207,78.404,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.224,-0.041,0]},"t":41,"s":[50.269,13.881,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.43,0.675,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.933,-1.114,0]},"t":42,"s":[31.981,57.039,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.97,0.375,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,0.112,0]},"t":43,"s":[30.188,54.035,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.919,0.947,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.046,0.096,0]},"t":44,"s":[41.246,45.317,100]},{"i":{"x":[0.833,0.833,0.833],"y":[17.435,1.051,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.661,-0.148,0]},"t":45,"s":[34.148,-11.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.997,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,0.032,0]},"t":46,"s":[34.363,9.033,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.893,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.004,-0.247,0]},"t":47,"s":[-8.365,-24.009,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.892,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.375,0.163,0]},"t":48,"s":[32.621,-15.669,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.847,1.17,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.364,-0.012,0]},"t":49,"s":[44.332,-6.94,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.476,0.712,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.183,0.056,0]},"t":50,"s":[47.804,-14.568,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.098,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,0.117,0]},"t":51,"s":[50.704,8.589,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,1.348,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,0.46,0]},"t":52,"s":[66.039,65.528,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.638,0.848,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.665,0.067,0]},"t":53,"s":[32.735,78.112,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.718,0.935,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.185,0]},"t":54,"s":[30.98,12.995,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.692,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.118,-0.305,0]},"t":55,"s":[46.164,-40.385,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.25,0.862,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.313,0.114,0]},"t":56,"s":[82.432,-28.944,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,0.97,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,0.211,0]},"t":57,"s":[74.813,1.96,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.112,-0.047,0]},"t":58,"s":[13.817,22.06,100]},{"t":59,"s":[39.779,9.173,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":60,"st":7,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 37","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"t":52,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.583},"o":{"x":0.167,"y":0.167},"t":9,"s":[264.075,300.144,0],"to":[-0.069,0.468,0],"ti":[0.355,-2.342,0]},{"i":{"x":0.833,"y":0.763},"o":{"x":0.167,"y":0.104},"t":10,"s":[263.663,302.955,0],"to":[-0.355,2.342,0],"ti":[0.559,-5.353,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":11,"s":[261.945,314.199,0],"to":[-0.559,5.353,0],"ti":[0.004,-7.357,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":12,"s":[260.312,335.072,0],"to":[-0.004,7.357,0],"ti":[-1.215,-7.142,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":13,"s":[261.922,358.34,0],"to":[1.215,7.142,0],"ti":[-2.396,-5.718,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":14,"s":[267.601,377.926,0],"to":[2.396,5.718,0],"ti":[-3.152,-4.167,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":15,"s":[276.299,392.647,0],"to":[3.152,4.167,0],"ti":[-3.444,-2.85,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":16,"s":[286.512,402.925,0],"to":[3.444,2.85,0],"ti":[-3.405,-1.874,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":17,"s":[296.962,409.748,0],"to":[3.405,1.874,0],"ti":[-3.2,-1.208,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":18,"s":[306.94,414.169,0],"to":[3.2,1.208,0],"ti":[-2.937,-0.769,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":19,"s":[316.159,416.998,0],"to":[2.937,0.769,0],"ti":[-2.672,-0.481,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[324.559,418.783,0],"to":[2.672,0.481,0],"ti":[-2.428,-0.291,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[332.191,419.883,0],"to":[2.428,0.291,0],"ti":[-2.206,-0.163,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[339.125,420.527,0],"to":[2.206,0.163,0],"ti":[-2.007,-0.077,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[345.429,420.863,0],"to":[2.007,0.077,0],"ti":[-1.827,-0.019,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":24,"s":[351.165,420.991,0],"to":[1.827,0.019,0],"ti":[-1.665,0.021,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":25,"s":[356.391,420.977,0],"to":[1.665,-0.021,0],"ti":[-1.519,0.049,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[361.156,420.865,0],"to":[1.519,-0.049,0],"ti":[-1.386,0.069,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[365.504,420.683,0],"to":[1.386,-0.069,0],"ti":[-1.264,0.084,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":28,"s":[369.472,420.452,0],"to":[1.264,-0.084,0],"ti":[-1.151,0.096,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[373.088,420.182,0],"to":[1.151,-0.096,0],"ti":[-1.046,0.107,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[376.379,419.878,0],"to":[1.046,-0.107,0],"ti":[-0.947,0.118,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":31,"s":[379.365,419.542,0],"to":[0.947,-0.118,0],"ti":[-0.856,0.124,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":32,"s":[382.063,419.172,0],"to":[0.856,-0.124,0],"ti":[-0.773,0.118,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":33,"s":[384.499,418.801,0],"to":[0.773,-0.118,0],"ti":[-0.697,0.107,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":34,"s":[386.7,418.464,0],"to":[0.697,-0.107,0],"ti":[-0.626,0.097,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":35,"s":[388.681,418.159,0],"to":[0.626,-0.097,0],"ti":[-0.561,0.088,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":36,"s":[390.459,417.883,0],"to":[0.561,-0.088,0],"ti":[-0.5,0.079,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":37,"s":[392.047,417.633,0],"to":[0.5,-0.079,0],"ti":[-0.443,0.072,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":38,"s":[393.458,417.406,0],"to":[0.443,-0.072,0],"ti":[-0.39,0.066,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":39,"s":[394.704,417.199,0],"to":[0.39,-0.066,0],"ti":[-0.34,0.061,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":40,"s":[395.795,417.009,0],"to":[0.34,-0.061,0],"ti":[-0.293,0.057,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":41,"s":[396.741,416.833,0],"to":[0.293,-0.057,0],"ti":[-0.249,0.053,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.182},"t":42,"s":[397.551,416.669,0],"to":[0.249,-0.053,0],"ti":[-0.207,0.05,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.184},"t":43,"s":[398.233,416.514,0],"to":[0.207,-0.05,0],"ti":[-0.168,0.048,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.186},"t":44,"s":[398.794,416.367,0],"to":[0.168,-0.048,0],"ti":[-0.132,0.046,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.19},"t":45,"s":[399.242,416.225,0],"to":[0.132,-0.046,0],"ti":[-0.097,0.045,0]},{"i":{"x":0.833,"y":0.857},"o":{"x":0.167,"y":0.195},"t":46,"s":[399.584,416.088,0],"to":[0.097,-0.045,0],"ti":[-0.064,0.044,0]},{"i":{"x":0.833,"y":0.857},"o":{"x":0.167,"y":0.2},"t":47,"s":[399.824,415.954,0],"to":[0.064,-0.044,0],"ti":[-0.034,0.043,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.2},"t":48,"s":[399.97,415.824,0],"to":[0.034,-0.043,0],"ti":[-0.012,0.044,0]},{"i":{"x":0.833,"y":0.82},"o":{"x":0.167,"y":0.168},"t":49,"s":[400.026,415.696,0],"to":[0.012,-0.044,0],"ti":[-0.006,0.049,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.156},"t":50,"s":[400.041,415.559,0],"to":[0.006,-0.049,0],"ti":[-0.008,0.056,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.158},"t":51,"s":[400.063,415.401,0],"to":[0.008,-0.056,0],"ti":[-0.011,0.062,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.159},"t":52,"s":[400.091,415.224,0],"to":[0.011,-0.062,0],"ti":[-0.014,0.066,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.161},"t":53,"s":[400.129,415.031,0],"to":[0.014,-0.066,0],"ti":[-0.017,0.07,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":54,"s":[400.175,414.825,0],"to":[0.017,-0.07,0],"ti":[-0.021,0.073,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.164},"t":55,"s":[400.232,414.61,0],"to":[0.021,-0.073,0],"ti":[-0.025,0.074,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":56,"s":[400.301,414.389,0],"to":[0.025,-0.074,0],"ti":[-0.029,0.073,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":57,"s":[400.382,414.168,0],"to":[0.029,-0.073,0],"ti":[-0.034,0.071,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58,"s":[400.476,413.95,0],"to":[0.034,-0.071,0],"ti":[-0.018,0.035,0]},{"t":59,"s":[400.585,413.741,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[2.237,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":9,"s":[60.433,69.807,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.354,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,0.012,0]},"t":10,"s":[57.035,63.909,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.869,0.914,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.136,0.096,0]},"t":11,"s":[110.865,70.792,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.993,2.539,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.23,2.807,0]},"t":12,"s":[90.384,117.236,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.615,1.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.008,0.079,0]},"t":13,"s":[78.755,118.657,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.957,0.878,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.106,0.017,0]},"t":14,"s":[89.349,90.995,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.759,1.314,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.09,0.263,0]},"t":15,"s":[127.76,125.63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.85,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.128,0.066,0]},"t":16,"s":[109.298,141.669,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.93,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.187,-0.134,0]},"t":17,"s":[74.466,65.123,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.468,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.45,0.009,0]},"t":18,"s":[46.407,94.474,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,2.673,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,2.042,0]},"t":19,"s":[50.79,61.594,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.179,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.209,0.079,0]},"t":20,"s":[74.379,60.195,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,1.053,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.057,0.166,0]},"t":21,"s":[67.656,89.669,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.318,0.963,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.577,0.032,0]},"t":22,"s":[88.817,119.34,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.032,0.863,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,-0.068,0]},"t":23,"s":[92.391,70.889,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,1.002,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.023,0.212,0]},"t":24,"s":[145.365,97.56,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.702,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.509,0.002,0]},"t":25,"s":[71.948,114.853,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.886,1.201,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.407,0]},"t":26,"s":[67.657,97.077,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.837,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.312,0.059,0]},"t":27,"s":[108.077,92.496,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.302,1.255,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.171,-0.517,0]},"t":28,"s":[122.812,108.142,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,1.236,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.065,0.063,0]},"t":29,"s":[136.892,105.97,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.168,0.062,0]},"t":30,"s":[71.752,114.791,100]},{"i":{"x":[0.833,0.833,0.833],"y":[4.698,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[-10.728,0.167,0]},"t":31,"s":[93.325,80.942,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.281,2.111,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.997,0]},"t":32,"s":[93.159,47.153,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.918,0.796,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,0.078,0]},"t":33,"s":[100.704,44.07,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-6.847,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[-7.898,0.141,0]},"t":34,"s":[67.68,88.243,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.681,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.084,-0.275,0]},"t":35,"s":[68.025,152.101,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.562,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.209,0.113,0]},"t":36,"s":[100.152,137.254,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.103,0.504,0]},"t":37,"s":[91.001,95.342,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.918,-2.094,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,0.554,0]},"t":38,"s":[52.026,87.036,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-2.601,0.998,1]},"o":{"x":[0.167,0.167,0.167],"y":[-3.839,0.086,0]},"t":39,"s":[90.362,85.565,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.085,-0.003,0]},"t":40,"s":[89.547,32.423,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.446,1.058,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.669,1.085,0]},"t":41,"s":[55.168,83.983,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,0.034,0]},"t":42,"s":[58.978,88.274,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.109,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.325,0.091,0]},"t":43,"s":[34.79,80.994,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,1.213,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,1.844,0]},"t":44,"s":[39.732,2.714,100]},{"i":{"x":[0.833,0.833,0.833],"y":[4.228,1.121,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.292,0.06,0]},"t":45,"s":[28.352,-0.992,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.049,0]},"t":46,"s":[29.041,12.182,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.923,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.02,-0.04,0]},"t":47,"s":[1.635,-20.19,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.207,3.708,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.991,-1.388,0]},"t":48,"s":[23.803,1.627,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.933,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,0.081,0]},"t":49,"s":[22.083,0.392,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.444,0.353,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.338,0.943,0]},"t":50,"s":[48.704,41.779,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.843,1.011,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,0.096,0]},"t":51,"s":[43.437,45.791,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.042,0.741,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.178,0.01,0]},"t":52,"s":[13.575,72.931,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.846,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.028,0.123,0]},"t":53,"s":[-12.851,42.13,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.907,1.471,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.181,1.058,0]},"t":54,"s":[26.868,-22.827,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.014,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.832,0.071,0]},"t":55,"s":[60.696,-28.382,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,6.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.077,11.039,0]},"t":56,"s":[64.461,8.569,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.945,1.005,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.093,0.082,0]},"t":57,"s":[14.897,8.85,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.162,0.005,0]},"t":58,"s":[38.326,-8.337,100]},{"t":59,"s":[30.376,9.931,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":9,"op":60,"st":9,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 36","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100]},{"t":48,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.604},"o":{"x":0.167,"y":0.167},"t":5,"s":[268.501,303.894,0],"to":[0.373,-0.267,0],"ti":[-1.332,1.601,0]},{"i":{"x":0.833,"y":0.775},"o":{"x":0.167,"y":0.106},"t":6,"s":[270.738,302.29,0],"to":[1.332,-1.601,0],"ti":[1.952,1.768,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.133},"t":7,"s":[276.491,294.286,0],"to":[-1.952,-1.768,0],"ti":[6.31,0.166,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.156},"t":8,"s":[259.026,291.685,0],"to":[-6.31,-0.166,0],"ti":[6.364,-0.502,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":9,"s":[238.628,293.288,0],"to":[-6.364,0.502,0],"ti":[5.435,-0.368,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":10,"s":[220.844,294.694,0],"to":[-5.435,0.368,0],"ti":[4.549,-0.177,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.183},"t":11,"s":[206.017,295.497,0],"to":[-4.549,0.177,0],"ti":[3.853,-0.014,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":12,"s":[193.549,295.758,0],"to":[-3.853,0.014,0],"ti":[3.314,0.117,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":13,"s":[182.897,295.583,0],"to":[-3.314,-0.117,0],"ti":[2.886,0.223,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":14,"s":[173.668,295.056,0],"to":[-2.886,-0.223,0],"ti":[2.537,0.31,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":15,"s":[165.584,294.243,0],"to":[-2.537,-0.31,0],"ti":[2.246,0.383,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":16,"s":[158.446,293.194,0],"to":[-2.246,-0.383,0],"ti":[2.001,0.441,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[152.105,291.947,0],"to":[-2.001,-0.441,0],"ti":[1.789,0.485,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[146.441,290.551,0],"to":[-1.789,-0.485,0],"ti":[1.601,0.519,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[141.373,289.038,0],"to":[-1.601,-0.519,0],"ti":[1.435,0.544,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":20,"s":[136.833,287.437,0],"to":[-1.435,-0.544,0],"ti":[1.285,0.562,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":21,"s":[132.765,285.771,0],"to":[-1.285,-0.562,0],"ti":[1.15,0.573,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":22,"s":[129.121,284.063,0],"to":[-1.15,-0.573,0],"ti":[1.027,0.578,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[125.863,282.331,0],"to":[-1.027,-0.578,0],"ti":[0.915,0.576,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[122.957,280.597,0],"to":[-0.915,-0.576,0],"ti":[0.814,0.569,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[120.371,278.877,0],"to":[-0.814,-0.569,0],"ti":[0.721,0.558,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[118.075,277.184,0],"to":[-0.721,-0.558,0],"ti":[0.637,0.542,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[116.044,275.532,0],"to":[-0.637,-0.542,0],"ti":[0.56,0.523,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":28,"s":[114.254,273.931,0],"to":[-0.56,-0.523,0],"ti":[0.49,0.502,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":29,"s":[112.684,272.392,0],"to":[-0.49,-0.502,0],"ti":[0.427,0.478,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[111.312,270.921,0],"to":[-0.427,-0.478,0],"ti":[0.369,0.453,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":31,"s":[110.122,269.523,0],"to":[-0.369,-0.453,0],"ti":[0.317,0.426,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":32,"s":[109.095,268.204,0],"to":[-0.317,-0.426,0],"ti":[0.27,0.399,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":33,"s":[108.219,266.966,0],"to":[-0.27,-0.399,0],"ti":[0.226,0.37,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":34,"s":[107.478,265.812,0],"to":[-0.226,-0.37,0],"ti":[0.186,0.342,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":35,"s":[106.862,264.743,0],"to":[-0.186,-0.342,0],"ti":[0.15,0.313,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":36,"s":[106.36,263.762,0],"to":[-0.15,-0.313,0],"ti":[0.117,0.283,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":37,"s":[105.962,262.868,0],"to":[-0.117,-0.283,0],"ti":[0.086,0.254,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":38,"s":[105.66,262.062,0],"to":[-0.086,-0.254,0],"ti":[0.058,0.224,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":39,"s":[105.445,261.346,0],"to":[-0.058,-0.224,0],"ti":[0.032,0.194,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.182},"t":40,"s":[105.312,260.718,0],"to":[-0.032,-0.194,0],"ti":[0.008,0.164,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.184},"t":41,"s":[105.253,260.18,0],"to":[-0.008,-0.164,0],"ti":[-0.014,0.135,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.185},"t":42,"s":[105.263,259.732,0],"to":[0.014,-0.135,0],"ti":[-0.034,0.104,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.185},"t":43,"s":[105.336,259.373,0],"to":[0.034,-0.104,0],"ti":[-0.052,0.074,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.181},"t":44,"s":[105.467,259.105,0],"to":[0.052,-0.074,0],"ti":[-0.065,0.05,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":45,"s":[105.65,258.927,0],"to":[0.065,-0.05,0],"ti":[-0.069,0.036,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.172},"t":46,"s":[105.86,258.807,0],"to":[0.069,-0.036,0],"ti":[-0.062,0.029,0]},{"i":{"x":0.833,"y":0.856},"o":{"x":0.167,"y":0.186},"t":47,"s":[106.065,258.712,0],"to":[0.062,-0.029,0],"ti":[-0.047,0.024,0]},{"i":{"x":0.833,"y":0.863},"o":{"x":0.167,"y":0.197},"t":48,"s":[106.232,258.632,0],"to":[0.047,-0.024,0],"ti":[-0.031,0.02,0]},{"i":{"x":0.833,"y":0.876},"o":{"x":0.167,"y":0.214},"t":49,"s":[106.349,258.566,0],"to":[0.031,-0.02,0],"ti":[-0.015,0.014,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.252},"t":50,"s":[106.418,258.515,0],"to":[0.015,-0.014,0],"ti":[0.001,0.009,0]},{"i":{"x":0.833,"y":0.742},"o":{"x":0.167,"y":0.188},"t":51,"s":[106.44,258.479,0],"to":[-0.001,-0.009,0],"ti":[0.016,0.003,0]},{"i":{"x":0.833,"y":0.781},"o":{"x":0.167,"y":0.123},"t":52,"s":[106.414,258.46,0],"to":[-0.016,-0.003,0],"ti":[0.031,-0.003,0]},{"i":{"x":0.833,"y":0.801},"o":{"x":0.167,"y":0.134},"t":53,"s":[106.343,258.459,0],"to":[-0.031,0.003,0],"ti":[0.045,-0.008,0]},{"i":{"x":0.833,"y":0.811},"o":{"x":0.167,"y":0.144},"t":54,"s":[106.228,258.475,0],"to":[-0.045,0.008,0],"ti":[0.059,-0.014,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.149},"t":55,"s":[106.07,258.51,0],"to":[-0.059,0.014,0],"ti":[0.072,-0.02,0]},{"i":{"x":0.833,"y":0.82},"o":{"x":0.167,"y":0.153},"t":56,"s":[105.873,258.562,0],"to":[-0.072,0.02,0],"ti":[0.084,-0.026,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.155},"t":57,"s":[105.639,258.632,0],"to":[-0.084,0.026,0],"ti":[0.095,-0.032,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.157},"t":58,"s":[105.369,258.719,0],"to":[-0.095,0.032,0],"ti":[0.05,-0.017,0]},{"t":59,"s":[105.069,258.823,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.896,-0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":5,"s":[111.822,109.374,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.087,0.955,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.414,0.087,0]},"t":6,"s":[100.055,106.422,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.812,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,-0.097,0]},"t":7,"s":[97.093,40.951,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.773,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.117,0.15,0]},"t":8,"s":[67.613,71.247,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.893,1.157,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.132,-0.129,0]},"t":9,"s":[79.872,109.348,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.215,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.381,0.054,0]},"t":10,"s":[101.054,94.428,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,-0.015,0]},"t":11,"s":[106.979,137.485,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.974,0.793,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.477,-0.164,0]},"t":12,"s":[85.798,101.174,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.674,1.013,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.039,0.139,0]},"t":13,"s":[88.947,113.411,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.677,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.011,0]},"t":14,"s":[86.793,131.596,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.583,0.977,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.914,0.112,0]},"t":15,"s":[106.377,110.603,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.868,0.899,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.088,-0.033,0]},"t":16,"s":[104.74,50.192,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.225,0.471,0]},"t":17,"s":[75.287,93.627,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,0.963,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.244,0.557,0]},"t":18,"s":[57.971,102.957,100]},{"i":{"x":[0.833,0.833,0.833],"y":[6.07,1.272,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.53,-0.068,0]},"t":19,"s":[48.983,104.599,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.801,1.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.082,0.064,0]},"t":20,"s":[48.677,103.694,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.786,1.017,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.143,0.076,0]},"t":21,"s":[67.607,107.546,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.136,0.014,0]},"t":22,"s":[93.956,61.633,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.898,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,-0.051,0]},"t":23,"s":[135.372,117.12,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.936,1.36,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.448,-0.923,0]},"t":24,"s":[94.654,82.761,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.146,1.103,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.276,0.068,0]},"t":25,"s":[85.351,85.606,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.778,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,0.046,0]},"t":26,"s":[87.506,70.455,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.973,0.043,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.134,1.425,0]},"t":27,"s":[107.432,104.297,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.792,1.155,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.04,0.091,0]},"t":28,"s":[140.473,106.399,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.054,0]},"t":29,"s":[118.147,128.441,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.974,1.121,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.054,-0.359,0]},"t":30,"s":[84.776,65.43,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.673,0.886,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.038,0.049,0]},"t":31,"s":[105.029,77.29,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.925,1.408,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.112,0.311,0]},"t":32,"s":[91.068,48.266,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.647,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.747,0.069,0]},"t":33,"s":[50.228,37.635,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,0.939,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.109,-0.474,0]},"t":34,"s":[54.329,100.336,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.244,1.036,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,-0.223,0]},"t":35,"s":[67.613,90.964,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,0.595,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,0.025,0]},"t":36,"s":[81.902,93.51,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.785,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.101,0.105,0]},"t":37,"s":[25.699,89.858,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,0.897,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.136,0.163,0]},"t":38,"s":[51.156,75.74,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,1.149,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.034,0.43,0]},"t":39,"s":[91.35,60.958,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.534,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.231,0.053,0]},"t":40,"s":[62.734,57.409,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,0.526,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,-0.014,0]},"t":41,"s":[70.32,67.319,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.24,0.101,0]},"t":42,"s":[14.17,58.838,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.32,0.689,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.419,-0.944,0]},"t":43,"s":[28.636,19.113,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.869,1.114,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.066,0.114,0]},"t":44,"s":[32.23,22.336,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.092,1.006,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.228,0.048,0]},"t":45,"s":[14.851,31.15,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.899,1.001,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,0.005,0]},"t":46,"s":[4.812,10.283,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.075,1.195,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.472,0.001,0]},"t":47,"s":[25.925,32.587,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.799,0.984,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.058,0]},"t":48,"s":[30.453,9.9,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.142,-0.02,0]},"t":49,"s":[21.826,85.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.674,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,-0.039,0]},"t":50,"s":[9.608,24.619,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.022,0.324,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.112,-0.462,0]},"t":51,"s":[-1.289,66.096,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.018,0.095,0]},"t":52,"s":[-33.054,59.758,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,1.101,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.173,1.876,0]},"t":53,"s":[7.239,14.644,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.273,1.364,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.683,0.046,0]},"t":54,"s":[44.549,12.547,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.913,0.998,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,0.068,0]},"t":55,"s":[40.492,17.184,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.637,1.065,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.953,-0.003,0]},"t":56,"s":[9.161,-7.703,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.935,0.991,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,0.037,0]},"t":57,"s":[7.764,16.458,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.3,-0.01,0]},"t":58,"s":[36.594,-26.534,100]},{"t":59,"s":[30.332,11.798,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":60,"st":5,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"Shape Layer 35","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":31,"s":[100]},{"t":47,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.58},"o":{"x":0.167,"y":0.167},"t":4,"s":[269.847,301.952,0],"to":[0.17,-0.147,0],"ti":[-0.855,0.741,0]},{"i":{"x":0.833,"y":0.763},"o":{"x":0.167,"y":0.104},"t":5,"s":[270.865,301.071,0],"to":[0.855,-0.741,0],"ti":[-1.897,1.74,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":6,"s":[274.976,297.505,0],"to":[1.897,-1.74,0],"ti":[-2.487,2.492,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":7,"s":[282.245,290.631,0],"to":[2.487,-2.492,0],"ti":[-2.333,2.568,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":8,"s":[289.898,282.555,0],"to":[2.333,-2.568,0],"ti":[-1.909,2.26,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":9,"s":[296.244,275.226,0],"to":[1.909,-2.26,0],"ti":[-1.56,1.916,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.183},"t":10,"s":[301.355,268.994,0],"to":[1.56,-1.916,0],"ti":[-1.325,1.619,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":11,"s":[305.606,263.727,0],"to":[1.325,-1.619,0],"ti":[-1.185,1.356,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":12,"s":[309.304,259.281,0],"to":[1.185,-1.356,0],"ti":[-1.147,1.074,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":13,"s":[312.714,255.59,0],"to":[1.147,-1.074,0],"ti":[-1.205,0.459,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.179},"t":14,"s":[316.183,252.839,0],"to":[1.205,-0.459,0],"ti":[-0.955,-0.508,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.171},"t":15,"s":[319.947,252.839,0],"to":[0.955,0.508,0],"ti":[-0.499,-1.03,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":16,"s":[321.913,255.888,0],"to":[0.499,1.03,0],"ti":[-0.292,-1.003,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[322.944,259.018,0],"to":[0.292,1.003,0],"ti":[-0.216,-0.921,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[323.663,261.908,0],"to":[0.216,0.921,0],"ti":[-0.18,-0.838,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[324.24,264.543,0],"to":[0.18,0.838,0],"ti":[-0.16,-0.762,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":20,"s":[324.742,266.939,0],"to":[0.16,0.762,0],"ti":[-0.149,-0.692,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":21,"s":[325.202,269.115,0],"to":[0.149,0.692,0],"ti":[-0.143,-0.628,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[325.638,271.093,0],"to":[0.143,0.628,0],"ti":[-0.139,-0.568,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[326.06,272.884,0],"to":[0.139,0.568,0],"ti":[-0.136,-0.513,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":24,"s":[326.472,274.503,0],"to":[0.136,0.513,0],"ti":[-0.134,-0.461,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":25,"s":[326.877,275.962,0],"to":[0.134,0.461,0],"ti":[-0.131,-0.413,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":26,"s":[327.274,277.271,0],"to":[0.131,0.413,0],"ti":[-0.128,-0.369,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":27,"s":[327.663,278.442,0],"to":[0.128,0.369,0],"ti":[-0.123,-0.327,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":28,"s":[328.039,279.483,0],"to":[0.123,0.327,0],"ti":[-0.117,-0.287,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":29,"s":[328.401,280.402,0],"to":[0.117,0.287,0],"ti":[-0.109,-0.251,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.178},"t":30,"s":[328.742,281.208,0],"to":[0.109,0.251,0],"ti":[-0.095,-0.217,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":31,"s":[329.057,281.906,0],"to":[0.095,0.217,0],"ti":[-0.065,-0.188,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":32,"s":[329.315,282.507,0],"to":[0.065,0.188,0],"ti":[-0.024,-0.165,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.181},"t":33,"s":[329.447,283.036,0],"to":[0.024,0.165,0],"ti":[0.014,-0.145,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.176},"t":34,"s":[329.46,283.5,0],"to":[-0.014,0.145,0],"ti":[0.05,-0.126,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.169},"t":35,"s":[329.361,283.904,0],"to":[-0.05,0.126,0],"ti":[0.083,-0.109,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.163},"t":36,"s":[329.16,284.255,0],"to":[-0.083,0.109,0],"ti":[0.113,-0.092,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.16},"t":37,"s":[328.864,284.555,0],"to":[-0.113,0.092,0],"ti":[0.14,-0.078,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.159},"t":38,"s":[328.482,284.81,0],"to":[-0.14,0.078,0],"ti":[0.165,-0.064,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.159},"t":39,"s":[328.022,285.021,0],"to":[-0.165,0.064,0],"ti":[0.187,-0.05,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":40,"s":[327.492,285.191,0],"to":[-0.187,0.05,0],"ti":[0.206,-0.038,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.161},"t":41,"s":[326.902,285.323,0],"to":[-0.206,0.038,0],"ti":[0.222,-0.026,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":42,"s":[326.259,285.418,0],"to":[-0.222,0.026,0],"ti":[0.235,-0.015,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":43,"s":[325.573,285.479,0],"to":[-0.235,0.015,0],"ti":[0.245,-0.007,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.164},"t":44,"s":[324.851,285.506,0],"to":[-0.245,0.007,0],"ti":[0.251,-0.008,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":45,"s":[324.104,285.522,0],"to":[-0.251,0.008,0],"ti":[0.255,-0.011,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":46,"s":[323.342,285.551,0],"to":[-0.255,0.011,0],"ti":[0.256,-0.015,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.167},"t":47,"s":[322.574,285.591,0],"to":[-0.256,0.015,0],"ti":[0.254,-0.018,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.168},"t":48,"s":[321.808,285.64,0],"to":[-0.254,0.018,0],"ti":[0.248,-0.02,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":49,"s":[321.053,285.698,0],"to":[-0.248,0.02,0],"ti":[0.24,-0.022,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":50,"s":[320.318,285.762,0],"to":[-0.24,0.022,0],"ti":[0.229,-0.023,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.171},"t":51,"s":[319.612,285.831,0],"to":[-0.229,0.023,0],"ti":[0.214,-0.024,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.173},"t":52,"s":[318.945,285.902,0],"to":[-0.214,0.024,0],"ti":[0.197,-0.024,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.175},"t":53,"s":[318.326,285.973,0],"to":[-0.197,0.024,0],"ti":[0.176,-0.022,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.178},"t":54,"s":[317.764,286.043,0],"to":[-0.176,0.022,0],"ti":[0.153,-0.02,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.182},"t":55,"s":[317.268,286.108,0],"to":[-0.153,0.02,0],"ti":[0.126,-0.017,0]},{"i":{"x":0.833,"y":0.857},"o":{"x":0.167,"y":0.188},"t":56,"s":[316.848,286.165,0],"to":[-0.126,0.017,0],"ti":[0.096,-0.013,0]},{"i":{"x":0.833,"y":0.87},"o":{"x":0.167,"y":0.2},"t":57,"s":[316.513,286.212,0],"to":[-0.096,0.013,0],"ti":[0.062,-0.008,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.232},"t":58,"s":[316.273,286.245,0],"to":[-0.062,0.008,0],"ti":[0.022,-0.003,0]},{"t":59,"s":[316.139,286.261,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.112,0.057,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":4,"s":[102.583,113.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.982,0.964,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.048,0.091,0]},"t":5,"s":[89.34,107.749,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.826,0.789,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.023,-0.063,0]},"t":6,"s":[120.4,44.201,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.974,0.965,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.16,0.138,0]},"t":7,"s":[96.055,80.415,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,0.953,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.038,-0.061,0]},"t":8,"s":[69.666,135.77,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.054,1.124,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,-0.107,0]},"t":9,"s":[87.726,103.756,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,0.05,0]},"t":10,"s":[68.046,117.794,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.847,0.448,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.085,-0.418,0]},"t":11,"s":[100.548,82.836,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.184,0.098,0]},"t":12,"s":[84.441,88.646,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.653,0.719,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.581,-0.033,0]},"t":13,"s":[71.053,121.348,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,0.925,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,0.118,0]},"t":14,"s":[68.813,98.016,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.876,-0.382,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.52,-0.749,0]},"t":15,"s":[115.484,42.548,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.015,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.255,0.089,0]},"t":16,"s":[109.038,48.103,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.908,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,-0.516,0]},"t":17,"s":[105.912,134.682,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,-0.015,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.189,0.903,0]},"t":18,"s":[70.98,122.635,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.191,0.613,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.021,0.091,0]},"t":19,"s":[81.664,121.409,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.88,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,0.106,0]},"t":20,"s":[73.094,107.712,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.105,1.007,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.271,-0.001,0]},"t":21,"s":[101.314,57.875,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.034,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.046,0.006,0]},"t":22,"s":[113.878,107.014,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,1.786,0]},"t":23,"s":[85.547,53.745,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.812,-0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.094,-0.086,0]},"t":24,"s":[125.423,51.139,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,0.814,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.149,0.087,0]},"t":25,"s":[106.714,52.421,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,0.151,0]},"t":26,"s":[83.118,81.524,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.571,1.517,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.689,0.542,0]},"t":27,"s":[112.603,117.515,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.176,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.103,0.072,0]},"t":28,"s":[109.423,124.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.971,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.057,-0.391,0]},"t":29,"s":[96.227,76.928,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.758,5.317,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.044,1.133,0]},"t":30,"s":[137.222,85.21,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.901,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,0.082,0]},"t":31,"s":[110.401,85.868,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.016,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.527,-0.056,0]},"t":32,"s":[59.435,51.153,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.802,1.05,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.013,-0.013,0]},"t":33,"s":[49.857,71.912,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.11,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.144,0.031,0]},"t":34,"s":[61.259,54.038,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,-0.059,0]},"t":35,"s":[76.982,82.665,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,1.149,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.103,0.274,0]},"t":36,"s":[40.562,65.859,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.016,1.039,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.187,0.053,0]},"t":37,"s":[56.885,58.517,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.025,0.918,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.013,0.027,0]},"t":38,"s":[70.044,78.995,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.03,2.634,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.019,-7.024,0]},"t":39,"s":[54.364,48.853,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.85,0.699,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,0.079,0]},"t":40,"s":[74.752,49.207,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.102,1.073,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.188,0.115,0]},"t":41,"s":[46.926,41.924,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.008,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.046,0.039,0]},"t":42,"s":[24.667,22.936,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.923,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.008,-0.041,0]},"t":43,"s":[74.072,58.487,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.782,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.08,-0.204,0]},"t":44,"s":[19.734,34.651,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.772,1.167,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,0.158,0]},"t":45,"s":[23.626,41.571,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,1.109,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.131,0.056,0]},"t":46,"s":[29.896,49.314,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.837,1.026,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.05,0.047,0]},"t":47,"s":[40.776,26.063,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.171,0.02,0]},"t":48,"s":[13.174,79.764,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.153,-0.036,0]},"t":49,"s":[-13.177,9.252,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.831,0.665,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.32,-0.508,0]},"t":50,"s":[-3.882,58.452,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.883,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.076,0.111,0]},"t":51,"s":[-5.803,51.522,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.861,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.266,0.29,0]},"t":52,"s":[15.263,30.594,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.125,2.138,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.208,-0.398,0]},"t":53,"s":[24.861,22.138,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.05,0.078,0]},"t":54,"s":[31.285,23.603,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.155,1.18,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.282,-0.051,0]},"t":55,"s":[15.205,2.136,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.018,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.057,0]},"t":56,"s":[8.46,15.435,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.07,2.225,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.015,0.737,0]},"t":57,"s":[27.717,-26.636,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.078,0]},"t":58,"s":[4.398,-31.997,100]},{"t":59,"s":[47.278,52.184,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":60,"st":4,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 34","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[100]},{"t":53,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.622},"o":{"x":0.167,"y":0.167},"t":10,"s":[271.252,303.813,0],"to":[0.284,-0.193,0],"ti":[-1.149,1.055,0]},{"i":{"x":0.833,"y":0.767},"o":{"x":0.167,"y":0.107},"t":11,"s":[272.957,302.654,0],"to":[1.149,-1.055,0],"ti":[-2.022,2.73,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.13},"t":12,"s":[278.144,297.481,0],"to":[2.022,-2.73,0],"ti":[-1.91,4.187,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":13,"s":[285.092,286.273,0],"to":[1.91,-4.187,0],"ti":[-1.055,4.438,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.178},"t":14,"s":[289.604,272.358,0],"to":[1.055,-4.438,0],"ti":[-0.359,3.914,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":15,"s":[291.42,259.644,0],"to":[0.359,-3.914,0],"ti":[0.022,3.308,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.182},"t":16,"s":[291.76,248.874,0],"to":[-0.022,-3.308,0],"ti":[0.239,2.795,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":17,"s":[291.291,239.797,0],"to":[-0.239,-2.795,0],"ti":[0.374,2.38,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":18,"s":[290.325,232.102,0],"to":[-0.374,-2.38,0],"ti":[0.463,2.046,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":19,"s":[289.046,225.517,0],"to":[-0.463,-2.046,0],"ti":[0.527,1.772,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":20,"s":[287.548,219.827,0],"to":[-0.527,-1.772,0],"ti":[0.577,1.542,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[285.886,214.884,0],"to":[-0.577,-1.542,0],"ti":[0.62,1.344,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[284.087,210.573,0],"to":[-0.62,-1.344,0],"ti":[0.662,1.168,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":23,"s":[282.165,206.818,0],"to":[-0.662,-1.168,0],"ti":[0.709,1.006,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":24,"s":[280.115,203.564,0],"to":[-0.709,-1.006,0],"ti":[0.773,0.841,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.172},"t":25,"s":[277.909,200.78,0],"to":[-0.773,-0.841,0],"ti":[0.882,0.613,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.169},"t":26,"s":[275.475,198.518,0],"to":[-0.882,-0.613,0],"ti":[0.968,0.094,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.169},"t":27,"s":[272.616,197.104,0],"to":[-0.968,-0.094,0],"ti":[0.794,-0.512,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.173},"t":28,"s":[269.666,197.956,0],"to":[-0.794,0.512,0],"ti":[0.517,-0.748,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.176},"t":29,"s":[267.851,200.177,0],"to":[-0.517,0.748,0],"ti":[0.389,-0.735,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":30,"s":[266.566,202.443,0],"to":[-0.389,0.735,0],"ti":[0.329,-0.691,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[265.514,204.588,0],"to":[-0.329,0.691,0],"ti":[0.293,-0.642,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":32,"s":[264.591,206.588,0],"to":[-0.293,0.642,0],"ti":[0.267,-0.593,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":33,"s":[263.756,208.44,0],"to":[-0.267,0.593,0],"ti":[0.245,-0.545,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":34,"s":[262.99,210.145,0],"to":[-0.245,0.545,0],"ti":[0.226,-0.497,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":35,"s":[262.283,211.707,0],"to":[-0.226,0.497,0],"ti":[0.206,-0.451,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":36,"s":[261.635,213.129,0],"to":[-0.206,0.451,0],"ti":[0.186,-0.406,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":37,"s":[261.046,214.413,0],"to":[-0.186,0.406,0],"ti":[0.164,-0.36,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.178},"t":38,"s":[260.52,215.562,0],"to":[-0.164,0.36,0],"ti":[0.14,-0.315,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.18},"t":39,"s":[260.062,216.575,0],"to":[-0.14,0.315,0],"ti":[0.114,-0.269,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.183},"t":40,"s":[259.679,217.45,0],"to":[-0.114,0.269,0],"ti":[0.086,-0.224,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.187},"t":41,"s":[259.376,218.188,0],"to":[-0.086,0.224,0],"ti":[0.055,-0.178,0]},{"i":{"x":0.833,"y":0.86},"o":{"x":0.167,"y":0.194},"t":42,"s":[259.162,218.791,0],"to":[-0.055,0.178,0],"ti":[0.022,-0.132,0]},{"i":{"x":0.833,"y":0.862},"o":{"x":0.167,"y":0.205},"t":43,"s":[259.045,219.258,0],"to":[-0.022,0.132,0],"ti":[-0.015,-0.086,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.21},"t":44,"s":[259.032,219.585,0],"to":[0.015,0.086,0],"ti":[-0.054,-0.038,0]},{"i":{"x":0.833,"y":0.802},"o":{"x":0.167,"y":0.162},"t":45,"s":[259.133,219.772,0],"to":[0.054,0.038,0],"ti":[-0.089,-0.002,0]},{"i":{"x":0.833,"y":0.818},"o":{"x":0.167,"y":0.144},"t":46,"s":[259.355,219.813,0],"to":[0.089,0.002,0],"ti":[-0.114,0.012,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.153},"t":47,"s":[259.669,219.787,0],"to":[0.114,-0.012,0],"ti":[-0.131,0.018,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.157},"t":48,"s":[260.041,219.743,0],"to":[0.131,-0.018,0],"ti":[-0.144,0.024,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.16},"t":49,"s":[260.458,219.681,0],"to":[0.144,-0.024,0],"ti":[-0.153,0.025,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.163},"t":50,"s":[260.907,219.601,0],"to":[0.153,-0.025,0],"ti":[-0.159,0.017,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":51,"s":[261.377,219.531,0],"to":[0.159,-0.017,0],"ti":[-0.161,0.006,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":52,"s":[261.86,219.498,0],"to":[0.161,-0.006,0],"ti":[-0.161,-0.005,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":53,"s":[262.346,219.497,0],"to":[0.161,0.005,0],"ti":[-0.157,-0.014,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":54,"s":[262.825,219.527,0],"to":[0.157,0.014,0],"ti":[-0.151,-0.023,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":55,"s":[263.289,219.583,0],"to":[0.151,0.023,0],"ti":[-0.142,-0.03,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.171},"t":56,"s":[263.73,219.663,0],"to":[0.142,0.03,0],"ti":[-0.132,-0.036,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":57,"s":[264.142,219.763,0],"to":[0.132,0.036,0],"ti":[-0.119,-0.041,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.174},"t":58,"s":[264.519,219.88,0],"to":[0.119,0.041,0],"ti":[-0.056,-0.022,0]},{"t":59,"s":[264.857,220.011,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.023,-0.027,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":10,"s":[92.348,80.588,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.063,0.897,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.018,0.091,0]},"t":11,"s":[63.239,83.148,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,1.468,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,0.435,0]},"t":12,"s":[100.528,112.151,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.799,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.11,0.071,0]},"t":13,"s":[34.84,119.029,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,1.046,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.142,0.163,0]},"t":14,"s":[63.172,73.511,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.12,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.917,0.03,0]},"t":15,"s":[103.227,26.126,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.04,-2.324,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.049,10.207,0]},"t":16,"s":[107.23,99.638,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.987,0.97,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,0.085,0]},"t":17,"s":[97.456,100.244,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,0.792,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.016,-0.047,0]},"t":18,"s":[111.909,123.776,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.079,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,0.139,0]},"t":19,"s":[99.739,108.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,0.438,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.401,0]},"t":20,"s":[112.92,86.203,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.27,0.904,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.304,0.098,0]},"t":21,"s":[87.298,80.298,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.89,1.161,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,0.638,0]},"t":22,"s":[77.606,46.38,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.303,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.348,0.055,0]},"t":23,"s":[118.751,41.284,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,-2.246,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.065,0.688,0]},"t":24,"s":[131.696,56.225,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.997,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.244,0.086,0]},"t":25,"s":[71.627,58.284,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,0.56,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.003,-1.183,0]},"t":26,"s":[86.93,136.413,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.554,0.858,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.032,0.103,0]},"t":27,"s":[72.183,131.272,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.102,0.202,0]},"t":28,"s":[82.81,109.279,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.416,0.998,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.64,-0.034,0]},"t":29,"s":[129.066,93.807,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.845,0.765,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,-0.002,0]},"t":30,"s":[135.997,104.839,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.974,0.903,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.18,0.129,0]},"t":31,"s":[94.456,94.071,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,1.617,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.038,0.599,0]},"t":32,"s":[58.778,74.421,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.889,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.243,0.073,0]},"t":33,"s":[83.328,71.244,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.695,0.802,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.338,-0.134,0]},"t":34,"s":[96.122,97.929,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.062,1.055,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.144,0]},"t":35,"s":[100.314,87.693,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.795,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,0.033,0]},"t":36,"s":[111.459,73.549,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.993,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,-0.002,0]},"t":37,"s":[91.979,97.003,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.87,1.251,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.007,0.447,0]},"t":38,"s":[63.62,73.964,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.09,1.06,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.232,0.063,0]},"t":39,"s":[89.728,68.683,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.043,0.035,0]},"t":40,"s":[104.347,89.888,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,1.034,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.032,0,0]},"t":41,"s":[74.014,53.405,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.81,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.02,0.024,0]},"t":42,"s":[95.84,90.08,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.816,0.763,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.148,-0.184,0]},"t":43,"s":[78.32,38.425,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.899,0.993,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.152,0.129,0]},"t":44,"s":[55.867,54.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.701,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.487,-0.007,0]},"t":45,"s":[28.81,84.258,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,1.154,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,-0.011,0]},"t":46,"s":[23.23,56.921,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.701,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.611,0.054,0]},"t":47,"s":[8.759,81.032,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.089,0.935,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,-0.083,0]},"t":48,"s":[6.473,12.233,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.758,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.043,-0.293,0]},"t":49,"s":[0.558,46.8,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,1.273,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,0.023,0]},"t":50,"s":[12.808,39.141,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,0.953,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.02,0.064,0]},"t":51,"s":[36.176,49.79,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.954,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.242,-0.11,0]},"t":52,"s":[17.41,4.217,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.67,0.939,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.224,-0.102,0]},"t":53,"s":[22.21,23.867,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.825,1.394,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.112,-0.223,0]},"t":54,"s":[25.048,15.014,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.216,0.678,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.159,0.069,0]},"t":55,"s":[33.433,17.425,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.985,1.08,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,0.112,0]},"t":56,"s":[42.612,3.611,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.012,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.019,0.041,0]},"t":57,"s":[9.673,-36.008,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.01,-0.68,0]},"t":58,"s":[36.625,41.5,100]},{"t":59,"s":[5.886,33.044,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":60,"st":10,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 33","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":1,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":44,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.635},"o":{"x":0.167,"y":0.167},"t":1,"s":[270.415,303.961,0],"to":[0.303,-0.268,0],"ti":[-1.389,1.063,0]},{"i":{"x":0.833,"y":0.798},"o":{"x":0.167,"y":0.108},"t":2,"s":[272.233,302.354,0],"to":[1.389,-1.063,0],"ti":[-2.915,0.504,0]},{"i":{"x":0.833,"y":0.803},"o":{"x":0.167,"y":0.142},"t":3,"s":[278.751,297.585,0],"to":[2.915,-0.504,0],"ti":[-1.552,-2.903,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.144},"t":4,"s":[289.724,299.332,0],"to":[1.552,2.903,0],"ti":[0.807,-4.867,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":5,"s":[288.065,315.004,0],"to":[-0.807,4.867,0],"ti":[1.017,-4.14,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":6,"s":[284.884,328.537,0],"to":[-1.017,4.14,0],"ti":[0.905,-3.485,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":7,"s":[281.965,339.842,0],"to":[-0.905,3.485,0],"ti":[0.776,-2.987,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.18},"t":8,"s":[279.455,349.449,0],"to":[-0.776,2.987,0],"ti":[0.667,-2.607,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":9,"s":[277.308,357.764,0],"to":[-0.667,2.607,0],"ti":[0.578,-2.312,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":10,"s":[275.455,365.094,0],"to":[-0.578,2.312,0],"ti":[0.505,-2.074,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":11,"s":[273.842,371.638,0],"to":[-0.505,2.074,0],"ti":[0.444,-1.876,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":12,"s":[272.427,377.536,0],"to":[-0.444,1.876,0],"ti":[0.393,-1.708,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":13,"s":[271.178,382.891,0],"to":[-0.393,1.708,0],"ti":[0.349,-1.562,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":14,"s":[270.071,387.781,0],"to":[-0.349,1.562,0],"ti":[0.31,-1.434,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":15,"s":[269.086,392.264,0],"to":[-0.31,1.434,0],"ti":[0.275,-1.32,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":16,"s":[268.211,396.386,0],"to":[-0.275,1.32,0],"ti":[0.243,-1.215,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":17,"s":[267.436,400.181,0],"to":[-0.243,1.215,0],"ti":[0.213,-1.118,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":18,"s":[266.752,403.676,0],"to":[-0.213,1.118,0],"ti":[0.185,-1.028,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":19,"s":[266.156,406.891,0],"to":[-0.185,1.028,0],"ti":[0.158,-0.941,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":20,"s":[265.642,409.842,0],"to":[-0.158,0.941,0],"ti":[0.131,-0.859,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":21,"s":[265.209,412.54,0],"to":[-0.131,0.859,0],"ti":[0.105,-0.779,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":22,"s":[264.855,414.996,0],"to":[-0.105,0.779,0],"ti":[0.078,-0.702,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":23,"s":[264.581,417.216,0],"to":[-0.078,0.702,0],"ti":[0.051,-0.625,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":24,"s":[264.386,419.205,0],"to":[-0.051,0.625,0],"ti":[0.024,-0.55,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":25,"s":[264.272,420.968,0],"to":[-0.024,0.55,0],"ti":[-0.004,-0.475,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":26,"s":[264.241,422.506,0],"to":[0.004,0.475,0],"ti":[-0.032,-0.401,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":27,"s":[264.295,423.82,0],"to":[0.032,0.401,0],"ti":[-0.062,-0.326,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.185},"t":28,"s":[264.435,424.912,0],"to":[0.062,0.326,0],"ti":[-0.092,-0.251,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.187},"t":29,"s":[264.666,425.779,0],"to":[0.092,0.251,0],"ti":[-0.123,-0.178,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.184},"t":30,"s":[264.99,426.419,0],"to":[0.123,0.178,0],"ti":[-0.144,-0.125,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.173},"t":31,"s":[265.403,426.848,0],"to":[0.144,0.125,0],"ti":[-0.154,-0.094,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":32,"s":[265.856,427.168,0],"to":[0.154,0.094,0],"ti":[-0.158,-0.068,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.17},"t":33,"s":[266.328,427.409,0],"to":[0.158,0.068,0],"ti":[-0.158,-0.046,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":34,"s":[266.806,427.579,0],"to":[0.158,0.046,0],"ti":[-0.155,-0.026,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":35,"s":[267.278,427.686,0],"to":[0.155,0.026,0],"ti":[-0.148,-0.008,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":36,"s":[267.736,427.736,0],"to":[0.148,0.008,0],"ti":[-0.139,0.007,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":37,"s":[268.169,427.736,0],"to":[0.139,-0.007,0],"ti":[-0.127,0.022,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":38,"s":[268.571,427.692,0],"to":[0.127,-0.022,0],"ti":[-0.114,0.034,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":39,"s":[268.934,427.607,0],"to":[0.114,-0.034,0],"ti":[-0.098,0.046,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.175},"t":40,"s":[269.252,427.486,0],"to":[0.098,-0.046,0],"ti":[-0.081,0.051,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.18},"t":41,"s":[269.522,427.333,0],"to":[0.081,-0.051,0],"ti":[-0.064,0.046,0]},{"i":{"x":0.833,"y":0.858},"o":{"x":0.167,"y":0.191},"t":42,"s":[269.74,427.18,0],"to":[0.064,-0.046,0],"ti":[-0.047,0.035,0]},{"i":{"x":0.833,"y":0.868},"o":{"x":0.167,"y":0.202},"t":43,"s":[269.907,427.059,0],"to":[0.047,-0.035,0],"ti":[-0.029,0.025,0]},{"i":{"x":0.833,"y":0.882},"o":{"x":0.167,"y":0.227},"t":44,"s":[270.02,426.97,0],"to":[0.029,-0.025,0],"ti":[-0.011,0.015,0]},{"i":{"x":0.833,"y":0.799},"o":{"x":0.167,"y":0.281},"t":45,"s":[270.079,426.911,0],"to":[0.011,-0.015,0],"ti":[0.007,0.006,0]},{"i":{"x":0.833,"y":0.748},"o":{"x":0.167,"y":0.142},"t":46,"s":[270.083,426.879,0],"to":[-0.007,-0.006,0],"ti":[0.025,-0.002,0]},{"i":{"x":0.833,"y":0.791},"o":{"x":0.167,"y":0.125},"t":47,"s":[270.035,426.873,0],"to":[-0.025,0.002,0],"ti":[0.041,-0.009,0]},{"i":{"x":0.833,"y":0.808},"o":{"x":0.167,"y":0.139},"t":48,"s":[269.935,426.889,0],"to":[-0.041,0.009,0],"ti":[0.056,-0.014,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.147},"t":49,"s":[269.788,426.925,0],"to":[-0.056,0.014,0],"ti":[0.07,-0.019,0]},{"i":{"x":0.833,"y":0.822},"o":{"x":0.167,"y":0.153},"t":50,"s":[269.597,426.976,0],"to":[-0.07,0.019,0],"ti":[0.082,-0.022,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.156},"t":51,"s":[269.367,427.038,0],"to":[-0.082,0.022,0],"ti":[0.092,-0.023,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.16},"t":52,"s":[269.104,427.106,0],"to":[-0.092,0.023,0],"ti":[0.099,-0.022,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.162},"t":53,"s":[268.815,427.175,0],"to":[-0.099,0.022,0],"ti":[0.104,-0.02,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.165},"t":54,"s":[268.508,427.24,0],"to":[-0.104,0.02,0],"ti":[0.105,-0.015,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.167},"t":55,"s":[268.192,427.293,0],"to":[-0.105,0.015,0],"ti":[0.103,-0.008,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.17},"t":56,"s":[267.876,427.329,0],"to":[-0.103,0.008,0],"ti":[0.098,0.002,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.173},"t":57,"s":[267.571,427.341,0],"to":[-0.098,-0.002,0],"ti":[0.088,0.014,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.176},"t":58,"s":[267.289,427.32,0],"to":[-0.088,-0.014,0],"ti":[0.041,0.01,0]},{"t":59,"s":[267.042,427.258,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.161,0.992,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":1,"s":[88.706,125.309,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.987,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,-0.009,0]},"t":2,"s":[101.05,65.647,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,0.862,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.015,-0.05,0]},"t":3,"s":[64.822,119.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.03,1.194,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.156,0.21,0]},"t":4,"s":[95.37,85.974,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,0.058,0]},"t":5,"s":[130.225,63.782,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.866,0.793,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.229,-0.185,0]},"t":6,"s":[82.767,137.754,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.05,0.961,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.219,0.139,0]},"t":7,"s":[95.438,114.769,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.544,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,-0.072,0]},"t":8,"s":[103.2,80.591,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.032,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.102,0.224,0]},"t":9,"s":[90.818,98.938,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.336,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.023,0.402,0]},"t":10,"s":[35.459,109.792,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,1.105,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.056,0.095,0]},"t":11,"s":[111.828,112.627,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.085,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.176,0.046,0]},"t":12,"s":[66.113,132.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.042,0.248,0]},"t":13,"s":[25.062,87.733,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.884,1.494,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.328,-0.831,0]},"t":14,"s":[107.997,65.085,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.34,1.282,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.298,0.071,0]},"t":15,"s":[91.212,67.15,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,0.947,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,0.064,0]},"t":16,"s":[84.699,52.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.04,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.065,-0.147,0]},"t":17,"s":[117.811,115.589,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.695,1.984,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,-0.553,0]},"t":18,"s":[116.527,92.87,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.902,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,0.077,0]},"t":19,"s":[118.433,95.846,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.407,0.784,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.556,-0.959,0]},"t":20,"s":[77.764,57.746,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.863,0.619,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.136,0]},"t":21,"s":[70.59,60.792,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.073,1.124,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.213,0.107,0]},"t":22,"s":[112.827,65.643,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.871,1.062,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.039,0.05,0]},"t":23,"s":[139.959,82.972,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.858,0.887,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.235,0.036,0]},"t":24,"s":[89.044,39.953,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.03,1.025,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.202,0.321,0]},"t":25,"s":[61.106,115.024,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.861,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,0.019,0]},"t":26,"s":[41.52,141.346,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.086,0.818,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.674,0.209,0]},"t":27,"s":[68.262,107.246,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.077,0.154,0]},"t":28,"s":[65.317,84.613,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.919,1.127,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,-0.216,0]},"t":29,"s":[106.651,57.805,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[-3.288,0.05,0]},"t":30,"s":[66.005,65.265,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.723,0.574,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.143,-0.241,0]},"t":31,"s":[67.009,46.429,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,1.067,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.086,0.104,0]},"t":32,"s":[66.639,51.274,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.778,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,0.037,0]},"t":33,"s":[54.923,71.216,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,0.741,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.133,-1.444,0]},"t":34,"s":[65.427,35.22,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.878,1.091,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.123,0]},"t":35,"s":[82.893,37.183,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.906,0.828,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.264,0.043,0]},"t":36,"s":[50.525,41.333,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.063,1.344,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.747,0.162,0]},"t":37,"s":[35.563,32.66,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.889,1.002,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.077,0.067,0]},"t":38,"s":[33.685,23.422,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.055,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.331,0.002,0]},"t":39,"s":[59.517,70.825,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,1.608,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,-0.9,0]},"t":40,"s":[68.226,22.181,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.215,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.055,0.073,0]},"t":41,"s":[53.746,26.302,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.832,0.514,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,-0.163,0]},"t":42,"s":[62.499,-7.882,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.925,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.166,0.101,0]},"t":43,"s":[31.128,3.701,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.261,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.72,-0.052,0]},"t":44,"s":[-0.586,59.702,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.131,1.044,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.063,-0.035,0]},"t":45,"s":[2.703,25.328,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.029,0]},"t":46,"s":[-10.892,49.534,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.851,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.242,-0.278,0]},"t":47,"s":[24.109,12.637,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.541,1.12,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.189,-0.068,0]},"t":48,"s":[15.151,21.155,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.973,1.225,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,0.049,0]},"t":49,"s":[8.06,16.479,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.881,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.04,0.061,0]},"t":50,"s":[61.168,27.875,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.037,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.278,-0.07,0]},"t":51,"s":[25.413,-14.304,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.927,1.673,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.026,-0.462,0]},"t":52,"s":[10.106,8.552,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.809,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.597,0.074,0]},"t":53,"s":[32.24,5.058,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.766,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.148,-0.321,0]},"t":54,"s":[29.528,36.767,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.876,1.171,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.422,0.129,0]},"t":55,"s":[26.015,30.226,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.716,0.961,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.252,0.056,0]},"t":56,"s":[25.151,18.362,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.719,0.812,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.118,-0.074,0]},"t":57,"s":[24.725,54.585,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.15,0]},"t":58,"s":[23.696,35.402,100]},{"t":59,"s":[33.602,11.392,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":60,"st":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"Shape Layer 32","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":31,"s":[100]},{"t":47,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.569},"o":{"x":0.167,"y":0.167},"t":4,"s":[267.904,308.221,0],"to":[-0.062,-0.384,0],"ti":[-0.406,2.013,0]},{"i":{"x":0.833,"y":0.761},"o":{"x":0.167,"y":0.103},"t":5,"s":[267.529,305.917,0],"to":[0.406,-2.013,0],"ti":[-2.229,4.277,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.128},"t":6,"s":[270.337,296.143,0],"to":[2.229,-4.277,0],"ti":[-4.056,5.365,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":7,"s":[280.902,280.252,0],"to":[4.056,-5.365,0],"ti":[-4.394,5.019,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.178},"t":8,"s":[294.676,263.955,0],"to":[4.394,-5.019,0],"ti":[-3.868,4.214,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":9,"s":[307.264,250.141,0],"to":[3.868,-4.214,0],"ti":[-3.257,3.538,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":10,"s":[317.883,238.67,0],"to":[3.257,-3.538,0],"ti":[-2.752,3.047,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.18},"t":11,"s":[326.809,228.915,0],"to":[2.752,-3.047,0],"ti":[-2.349,2.69,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":12,"s":[334.394,220.39,0],"to":[2.349,-2.69,0],"ti":[-2.023,2.427,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.177},"t":13,"s":[340.902,212.773,0],"to":[2.023,-2.427,0],"ti":[-1.753,2.23,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":14,"s":[346.531,205.826,0],"to":[1.753,-2.23,0],"ti":[-1.519,2.072,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":15,"s":[351.417,199.393,0],"to":[1.519,-2.072,0],"ti":[-1.306,1.928,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":16,"s":[355.644,193.397,0],"to":[1.306,-1.928,0],"ti":[-1.106,1.797,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":17,"s":[359.255,187.824,0],"to":[1.106,-1.797,0],"ti":[-0.913,1.682,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[362.28,182.616,0],"to":[0.913,-1.682,0],"ti":[-0.72,1.579,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[364.731,177.73,0],"to":[0.72,-1.579,0],"ti":[-0.524,1.479,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":20,"s":[366.601,173.143,0],"to":[0.524,-1.479,0],"ti":[-0.321,1.378,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":21,"s":[367.872,168.855,0],"to":[0.321,-1.378,0],"ti":[-0.115,1.264,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":22,"s":[368.526,164.876,0],"to":[0.115,-1.264,0],"ti":[0.083,1.13,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":23,"s":[368.561,161.269,0],"to":[-0.083,-1.13,0],"ti":[0.254,0.978,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":24,"s":[368.028,158.096,0],"to":[-0.254,-0.978,0],"ti":[0.382,0.82,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":25,"s":[367.038,155.4,0],"to":[-0.382,-0.82,0],"ti":[0.464,0.67,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":26,"s":[365.735,153.176,0],"to":[-0.464,-0.67,0],"ti":[0.506,0.539,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":27,"s":[364.254,151.378,0],"to":[-0.506,-0.539,0],"ti":[0.52,0.43,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":28,"s":[362.7,149.94,0],"to":[-0.52,-0.43,0],"ti":[0.517,0.343,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":29,"s":[361.136,148.795,0],"to":[-0.517,-0.343,0],"ti":[0.505,0.273,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":30,"s":[359.597,147.883,0],"to":[-0.505,-0.273,0],"ti":[0.487,0.216,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":31,"s":[358.105,147.16,0],"to":[-0.487,-0.216,0],"ti":[0.465,0.169,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":32,"s":[356.676,146.589,0],"to":[-0.465,-0.169,0],"ti":[0.441,0.132,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":33,"s":[355.317,146.143,0],"to":[-0.441,-0.132,0],"ti":[0.415,0.101,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":34,"s":[354.033,145.799,0],"to":[-0.415,-0.101,0],"ti":[0.388,0.076,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":35,"s":[352.827,145.538,0],"to":[-0.388,-0.076,0],"ti":[0.36,0.056,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":36,"s":[351.704,145.343,0],"to":[-0.36,-0.056,0],"ti":[0.33,0.04,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":37,"s":[350.668,145.203,0],"to":[-0.33,-0.04,0],"ti":[0.298,0.027,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":38,"s":[349.724,145.104,0],"to":[-0.298,-0.027,0],"ti":[0.263,0.019,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.179},"t":39,"s":[348.882,145.038,0],"to":[-0.263,-0.019,0],"ti":[0.227,0.013,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.181},"t":40,"s":[348.144,144.993,0],"to":[-0.227,-0.013,0],"ti":[0.189,0.011,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.187},"t":41,"s":[347.517,144.959,0],"to":[-0.189,-0.011,0],"ti":[0.146,0.011,0]},{"i":{"x":0.833,"y":0.865},"o":{"x":0.167,"y":0.196},"t":42,"s":[347.011,144.929,0],"to":[-0.146,-0.011,0],"ti":[0.1,0.014,0]},{"i":{"x":0.833,"y":0.867},"o":{"x":0.167,"y":0.218},"t":43,"s":[346.639,144.893,0],"to":[-0.1,-0.014,0],"ti":[0.056,0.022,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.224},"t":44,"s":[346.413,144.843,0],"to":[-0.056,-0.022,0],"ti":[0.03,0.033,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.169},"t":45,"s":[346.304,144.761,0],"to":[-0.03,-0.033,0],"ti":[0.031,0.038,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.152},"t":46,"s":[346.234,144.648,0],"to":[-0.031,-0.038,0],"ti":[0.045,0.038,0]},{"i":{"x":0.833,"y":0.82},"o":{"x":0.167,"y":0.153},"t":47,"s":[346.12,144.534,0],"to":[-0.045,-0.038,0],"ti":[0.059,0.037,0]},{"i":{"x":0.833,"y":0.822},"o":{"x":0.167,"y":0.155},"t":48,"s":[345.962,144.422,0],"to":[-0.059,-0.037,0],"ti":[0.072,0.036,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.157},"t":49,"s":[345.764,144.313,0],"to":[-0.072,-0.036,0],"ti":[0.083,0.034,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.158},"t":50,"s":[345.53,144.207,0],"to":[-0.083,-0.034,0],"ti":[0.093,0.033,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":51,"s":[345.264,144.107,0],"to":[-0.093,-0.033,0],"ti":[0.102,0.031,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.161},"t":52,"s":[344.97,144.011,0],"to":[-0.102,-0.031,0],"ti":[0.11,0.029,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":53,"s":[344.65,143.922,0],"to":[-0.11,-0.029,0],"ti":[0.117,0.026,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":54,"s":[344.308,143.839,0],"to":[-0.117,-0.026,0],"ti":[0.123,0.024,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":55,"s":[343.947,143.764,0],"to":[-0.123,-0.024,0],"ti":[0.127,0.022,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.164},"t":56,"s":[343.572,143.695,0],"to":[-0.127,-0.022,0],"ti":[0.13,0.019,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":57,"s":[343.185,143.634,0],"to":[-0.13,-0.019,0],"ti":[0.133,0.017,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":58,"s":[342.79,143.581,0],"to":[-0.133,-0.017,0],"ti":[0.067,0.008,0]},{"t":59,"s":[342.389,143.535,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.916,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":4,"s":[146.545,56.981,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.984,6.136,1]},"o":{"x":[0.167,0.167,0.167],"y":[7.109,6.416,0]},"t":5,"s":[102.654,113.791,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.082,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.082,0]},"t":6,"s":[102.133,114.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.769,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,-0.024,0]},"t":7,"s":[115.051,67.711,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.13,0.272,0]},"t":8,"s":[89.461,104.174,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.843,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.029,-0.825,0]},"t":9,"s":[44.049,120.312,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.068,5.668,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,-0.052,0]},"t":10,"s":[77.823,118.832,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.009,0.967,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,0.082,0]},"t":11,"s":[107.747,119.743,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.009,-0.054,0]},"t":12,"s":[53.479,67.782,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.061,0.515,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.064,-0.16,0]},"t":13,"s":[113.921,99.393,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.981,1.019,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.087,0.101,0]},"t":14,"s":[111.576,88.565,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.95,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.025,0.015,0]},"t":15,"s":[55.899,36.375,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.094,1.148,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.128,0.737,0]},"t":16,"s":[98.768,100.4,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.97,0.816,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,0.053,0]},"t":17,"s":[81.873,108.568,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.853,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.047,0.153,0]},"t":18,"s":[117.879,85.877,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.034,0.862,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.192,-0.017,0]},"t":19,"s":[94.849,58.578,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.781,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,0.211,0]},"t":20,"s":[77.175,81.139,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.98,1.271,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,0.169,0]},"t":21,"s":[102.134,95.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.835,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.026,0.064,0]},"t":22,"s":[142.654,110.218,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.797,0.841,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.168,-0.034,0]},"t":23,"s":[111.887,49.352,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.009,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,0.175,0]},"t":24,"s":[81.638,92.763,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.008,0.009,0]},"t":25,"s":[38.028,132.048,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.012,0.82,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.143,0.392,0]},"t":26,"s":[86.128,88.194,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.088,0.901,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.011,0.155,0]},"t":27,"s":[68.431,76.37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.042,1.263,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.043,0.518,0]},"t":28,"s":[88.699,62.632,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.935,1.037,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.028,0.063,0]},"t":29,"s":[46.98,59.998,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.851,1.103,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.298,0.026,0]},"t":30,"s":[109.874,70.958,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.881,1.047,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.189,0.046,0]},"t":31,"s":[96.114,55.137,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.231,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.278,0.03,0]},"t":32,"s":[85.214,90.54,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.189,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,-0.071,0]},"t":33,"s":[80.545,35.132,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.796,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,-0.412,0]},"t":34,"s":[98.178,65.031,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.966,0.606,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.209,0.141,0]},"t":35,"s":[40.533,60.003,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,1.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.059,0.106,0]},"t":36,"s":[56.966,52.732,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.747,1.016,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.244,0.016,0]},"t":37,"s":[47.335,25.638,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.818,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.124,0.014,0]},"t":38,"s":[49.783,59.415,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.061,0.813,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.154,0.718,0]},"t":39,"s":[54.761,18.968,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,1.058,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.035,0.15,0]},"t":40,"s":[60.644,13.657,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.945,0.618,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.384,0.034,0]},"t":41,"s":[50.471,7.064,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.973,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.087,0.107,0]},"t":42,"s":[47.647,18.253,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.927,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.04,-0.023,0]},"t":43,"s":[-15.426,58.31,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.52,0.892,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.604,0.275,0]},"t":44,"s":[27.159,27.049,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,0.901,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,0.364,0]},"t":45,"s":[21.997,13.425,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.588,1.135,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.54,0.54,0]},"t":46,"s":[59.347,9.373,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.055,1.741,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.104,0.051,0]},"t":47,"s":[54.352,8.634,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,0.075,0]},"t":48,"s":[34.643,10.569,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.881,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,0.163,0]},"t":49,"s":[67.47,-8.566,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.276,-0.04,0]},"t":50,"s":[34.991,-28.664,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.321,0.639,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.801,0.176,0]},"t":51,"s":[20.908,-15.133,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.876,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.108,0]},"t":52,"s":[21.531,-2.998,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.331,0.787,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.256,0.39,0]},"t":53,"s":[3.556,37.39,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,0.137,0]},"t":54,"s":[-5.112,48.357,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.837,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.482,-0.165,0]},"t":55,"s":[37.958,65.386,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.163,0.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.171,0.163,0]},"t":56,"s":[40.525,59.682,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.082,0.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.092,0]},"t":57,"s":[42.972,53.735,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,-0.57,0]},"t":58,"s":[65.106,-1.291,100]},{"t":59,"s":[21.097,5.723,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":60,"st":4,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 31","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100]},{"t":48,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.6},"o":{"x":0.167,"y":0.167},"t":5,"s":[274.616,306.243,0],"to":[-0.115,-0.59,0],"ti":[0.824,2.77,0]},{"i":{"x":0.833,"y":0.765},"o":{"x":0.167,"y":0.105},"t":6,"s":[273.925,302.703,0],"to":[-0.824,-2.77,0],"ti":[2.181,6.093,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":7,"s":[269.674,289.624,0],"to":[-2.181,-6.093,0],"ti":[3.267,8.196,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":8,"s":[260.838,266.142,0],"to":[-3.267,-8.196,0],"ti":[3.485,7.964,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":9,"s":[250.074,240.449,0],"to":[-3.485,-7.964,0],"ti":[3.198,6.707,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":10,"s":[239.929,218.357,0],"to":[-3.198,-6.707,0],"ti":[2.853,5.529,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":11,"s":[230.887,200.209,0],"to":[-2.853,-5.529,0],"ti":[2.563,4.612,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":12,"s":[222.813,185.182,0],"to":[-2.563,-4.612,0],"ti":[2.332,3.906,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":13,"s":[215.51,172.535,0],"to":[-2.332,-3.906,0],"ti":[2.146,3.349,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":14,"s":[208.822,161.746,0],"to":[-2.146,-3.349,0],"ti":[1.992,2.898,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":15,"s":[202.636,152.442,0],"to":[-1.992,-2.898,0],"ti":[1.863,2.525,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":16,"s":[196.868,144.357,0],"to":[-1.863,-2.525,0],"ti":[1.751,2.21,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[191.458,137.291,0],"to":[-1.751,-2.21,0],"ti":[1.653,1.941,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[186.36,131.094,0],"to":[-1.653,-1.941,0],"ti":[1.563,1.706,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[181.542,125.648,0],"to":[-1.563,-1.706,0],"ti":[1.481,1.501,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":20,"s":[176.98,120.856,0],"to":[-1.481,-1.501,0],"ti":[1.403,1.32,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":21,"s":[172.656,116.64,0],"to":[-1.403,-1.32,0],"ti":[1.328,1.158,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":22,"s":[168.561,112.936,0],"to":[-1.328,-1.158,0],"ti":[1.255,1.014,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[164.687,109.689,0],"to":[-1.255,-1.014,0],"ti":[1.183,0.886,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[161.03,106.849,0],"to":[-1.183,-0.886,0],"ti":[1.111,0.771,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":25,"s":[157.59,104.374,0],"to":[-1.111,-0.771,0],"ti":[1.038,0.668,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[154.367,102.223,0],"to":[-1.038,-0.668,0],"ti":[0.964,0.577,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":27,"s":[151.363,100.364,0],"to":[-0.964,-0.577,0],"ti":[0.888,0.495,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[148.583,98.763,0],"to":[-0.888,-0.495,0],"ti":[0.81,0.422,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":29,"s":[146.035,97.394,0],"to":[-0.81,-0.422,0],"ti":[0.741,0.358,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":30,"s":[143.723,96.23,0],"to":[-0.741,-0.358,0],"ti":[0.687,0.303,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[141.59,95.244,0],"to":[-0.687,-0.303,0],"ti":[0.639,0.255,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":32,"s":[139.604,94.413,0],"to":[-0.639,-0.255,0],"ti":[0.592,0.214,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":33,"s":[137.759,93.715,0],"to":[-0.592,-0.214,0],"ti":[0.547,0.179,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":34,"s":[136.052,93.13,0],"to":[-0.547,-0.179,0],"ti":[0.502,0.149,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":35,"s":[134.48,92.643,0],"to":[-0.502,-0.149,0],"ti":[0.46,0.124,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":36,"s":[133.038,92.238,0],"to":[-0.46,-0.124,0],"ti":[0.418,0.103,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":37,"s":[131.723,91.901,0],"to":[-0.418,-0.103,0],"ti":[0.378,0.085,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":38,"s":[130.53,91.622,0],"to":[-0.378,-0.085,0],"ti":[0.339,0.071,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":39,"s":[129.457,91.39,0],"to":[-0.339,-0.071,0],"ti":[0.301,0.059,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":40,"s":[128.499,91.197,0],"to":[-0.301,-0.059,0],"ti":[0.264,0.049,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":41,"s":[127.654,91.037,0],"to":[-0.264,-0.049,0],"ti":[0.228,0.041,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":42,"s":[126.917,90.903,0],"to":[-0.228,-0.041,0],"ti":[0.193,0.034,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":43,"s":[126.287,90.791,0],"to":[-0.193,-0.034,0],"ti":[0.158,0.028,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.187},"t":44,"s":[125.761,90.698,0],"to":[-0.158,-0.028,0],"ti":[0.134,0.025,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.177},"t":45,"s":[125.337,90.622,0],"to":[-0.134,-0.025,0],"ti":[0.126,0.027,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":46,"s":[124.96,90.547,0],"to":[-0.126,-0.027,0],"ti":[0.127,0.03,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":47,"s":[124.579,90.461,0],"to":[-0.127,-0.03,0],"ti":[0.127,0.034,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":48,"s":[124.196,90.364,0],"to":[-0.127,-0.034,0],"ti":[0.126,0.037,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.167},"t":49,"s":[123.816,90.257,0],"to":[-0.126,-0.037,0],"ti":[0.124,0.04,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.168},"t":50,"s":[123.44,90.141,0],"to":[-0.124,-0.04,0],"ti":[0.121,0.042,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.169},"t":51,"s":[123.073,90.017,0],"to":[-0.121,-0.042,0],"ti":[0.116,0.044,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.17},"t":52,"s":[122.717,89.887,0],"to":[-0.116,-0.044,0],"ti":[0.11,0.046,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":53,"s":[122.376,89.751,0],"to":[-0.11,-0.046,0],"ti":[0.103,0.046,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":54,"s":[122.055,89.613,0],"to":[-0.103,-0.046,0],"ti":[0.095,0.046,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.173},"t":55,"s":[121.755,89.474,0],"to":[-0.095,-0.046,0],"ti":[0.086,0.045,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.175},"t":56,"s":[121.483,89.337,0],"to":[-0.086,-0.045,0],"ti":[0.075,0.043,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.178},"t":57,"s":[121.241,89.204,0],"to":[-0.075,-0.043,0],"ti":[0.062,0.041,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.182},"t":58,"s":[121.035,89.077,0],"to":[-0.062,-0.041,0],"ti":[0.028,0.019,0]},{"t":59,"s":[120.867,88.96,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.272,0.954,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":5,"s":[88.213,98.042,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.933,0.787,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,-0.101,0]},"t":6,"s":[98.671,49.922,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,0.883,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.333,0.137,0]},"t":7,"s":[54.098,71.655,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.856,1.001,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.111,0.287,0]},"t":8,"s":[63.017,105.433,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.719,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.076,0.001,0]},"t":9,"s":[59.185,119.254,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,1.027,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,0.118,0]},"t":10,"s":[102.36,105.209,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,0.02,0]},"t":11,"s":[79.066,71.811,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.893,-1.794,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.579,-1.652,0]},"t":12,"s":[101.985,115.908,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.972,0.937,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.076,0.086,0]},"t":13,"s":[105.84,113.791,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.033,0.698,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.042,-0.255,0]},"t":14,"s":[60.688,44.915,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.04,0.92,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,0.115,0]},"t":15,"s":[90.735,61.894,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.271,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,-2.022,0]},"t":16,"s":[48.636,106.533,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.029,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.867,0.094,0]},"t":17,"s":[110.804,104.766,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.309,0.797,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,-0.018,0]},"t":18,"s":[105.35,91.067,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.026,0.865,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.066,0.141,0]},"t":19,"s":[112.726,102.388,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,1.297,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.217,0]},"t":20,"s":[78.021,118.647,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.73,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.493,0.065,0]},"t":21,"s":[123.499,128.748,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.684,0.681,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.12,-0.217,0]},"t":22,"s":[116.924,82.593,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,1.037,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.113,0]},"t":23,"s":[102.179,95.418,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.886,0.872,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,0.026,0]},"t":24,"s":[61.093,131.691,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.995,1.018,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.309,0.239,0]},"t":25,"s":[97.755,79.275,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.561,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.006,0.015,0]},"t":26,"s":[111.269,51.174,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.103,-0.081,0]},"t":27,"s":[98.597,85.374,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.259,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.031,0.937,0]},"t":28,"s":[44.555,68.006,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.03,1.073,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.425,0.094,0]},"t":29,"s":[83.792,66.311,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.079,1.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,0.039,0]},"t":30,"s":[93.366,52.935,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.97,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,0.017,0]},"t":31,"s":[80.351,77.978,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.459,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.24,-0.047,0]},"t":32,"s":[105.736,46.617,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.918,1.164,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,1.147,0]},"t":33,"s":[119.231,66.597,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.338,0.408,1]},"o":{"x":[0.167,0.167,0.167],"y":[-4.839,0.055,0]},"t":34,"s":[31.333,68.163,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.923,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,0.097,0]},"t":35,"s":[32.821,63.516,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.316,1.245,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.049,-0.192,0]},"t":36,"s":[55.229,35.157,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.082,0.955,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.095,0.062,0]},"t":37,"s":[53.579,43.75,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.008,0.863,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,-0.1,0]},"t":38,"s":[41.681,9.938,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,1.024,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.008,0.213,0]},"t":39,"s":[65.338,25.314,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.135,1.097,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,0.019,0]},"t":40,"s":[39.293,35.228,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,0.045,0]},"t":41,"s":[71.909,22.453,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,1.746,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.192,0.562,0]},"t":42,"s":[-13.722,50.113,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.78,0.885,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,0.075,0]},"t":43,"s":[12.165,54.928,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,1.049,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.134,0.304,0]},"t":44,"s":[36.047,7.012,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.981,0.875,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.369,0.031,0]},"t":45,"s":[75.273,-11.082,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,1.192,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.024,0.248,0]},"t":46,"s":[68.05,17.747,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.142,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.033,0.058,0]},"t":47,"s":[73.648,32.314,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.915,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,0.553,0]},"t":48,"s":[69.641,-15.771,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.919,-0.285,1]},"o":{"x":[0.167,0.167,0.167],"y":[4.378,-0.361,0]},"t":49,"s":[32.387,-24.312,100]},{"i":{"x":[0.833,0.833,0.833],"y":[216.656,0.822,1]},"o":{"x":[0.167,0.167,0.167],"y":[-3.24,0.089,0]},"t":50,"s":[31.664,-22.708,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,0.876,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,0.156,0]},"t":51,"s":[31.682,0.419,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.616,0.585,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.235,0.252,0]},"t":52,"s":[-15.245,26.807,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.106,0.104,0]},"t":53,"s":[-2.957,39.841,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.871,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.581,-0.016,0]},"t":54,"s":[41.396,91.664,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.754,0.858,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.15,0.236,0]},"t":55,"s":[48.828,48.327,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.203,0]},"t":56,"s":[46.178,24.721,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.871,0.408,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,-0.524,0]},"t":57,"s":[72.828,8.231,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.235,0.097,0]},"t":58,"s":[23.424,10.493,100]},{"t":59,"s":[-3.769,24.296,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":60,"st":5,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 30","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[100]},{"t":51,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.613},"o":{"x":0.167,"y":0.167},"t":8,"s":[273.484,300.616,0],"to":[-0.073,-0.268,0],"ti":[0.394,1.23,0]},{"i":{"x":0.833,"y":0.766},"o":{"x":0.167,"y":0.106},"t":9,"s":[273.044,299.005,0],"to":[-0.394,-1.23,0],"ti":[0.97,2.68,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":10,"s":[271.118,293.234,0],"to":[-0.97,-2.68,0],"ti":[1.519,3.557,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":11,"s":[267.222,282.925,0],"to":[-1.519,-3.557,0],"ti":[1.983,3.196,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.179},"t":12,"s":[262.002,271.894,0],"to":[-1.983,-3.196,0],"ti":[2.392,1.007,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.191},"t":13,"s":[255.326,263.748,0],"to":[-2.392,-1.007,0],"ti":[1.906,-1.439,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.174},"t":14,"s":[247.647,265.854,0],"to":[-1.906,1.439,0],"ti":[1.029,-2.094,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":15,"s":[243.888,272.381,0],"to":[-1.029,2.094,0],"ti":[0.709,-1.9,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":16,"s":[241.473,278.416,0],"to":[-0.709,1.9,0],"ti":[0.56,-1.691,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":17,"s":[239.636,283.781,0],"to":[-0.56,1.691,0],"ti":[0.476,-1.51,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":18,"s":[238.111,288.564,0],"to":[-0.476,1.51,0],"ti":[0.423,-1.353,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":19,"s":[236.781,292.841,0],"to":[-0.423,1.353,0],"ti":[0.389,-1.218,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":20,"s":[235.575,296.684,0],"to":[-0.389,1.218,0],"ti":[0.367,-1.099,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":21,"s":[234.45,300.149,0],"to":[-0.367,1.099,0],"ti":[0.353,-0.992,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[233.375,303.275,0],"to":[-0.353,0.992,0],"ti":[0.346,-0.895,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":23,"s":[232.33,306.098,0],"to":[-0.346,0.895,0],"ti":[0.345,-0.807,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[231.297,308.646,0],"to":[-0.345,0.807,0],"ti":[0.347,-0.725,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[230.261,310.941,0],"to":[-0.347,0.725,0],"ti":[0.353,-0.648,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[229.214,312.998,0],"to":[-0.353,0.648,0],"ti":[0.361,-0.575,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[228.146,314.83,0],"to":[-0.361,0.575,0],"ti":[0.371,-0.504,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":28,"s":[227.049,316.449,0],"to":[-0.371,0.504,0],"ti":[0.381,-0.434,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":29,"s":[225.922,317.856,0],"to":[-0.381,0.434,0],"ti":[0.391,-0.366,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":30,"s":[224.764,319.055,0],"to":[-0.391,0.366,0],"ti":[0.401,-0.298,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":31,"s":[223.576,320.049,0],"to":[-0.401,0.298,0],"ti":[0.41,-0.232,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":32,"s":[222.359,320.843,0],"to":[-0.41,0.232,0],"ti":[0.415,-0.168,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":33,"s":[221.118,321.443,0],"to":[-0.415,0.168,0],"ti":[0.412,-0.106,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":34,"s":[219.872,321.85,0],"to":[-0.412,0.106,0],"ti":[0.401,-0.05,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":35,"s":[218.647,322.076,0],"to":[-0.401,0.05,0],"ti":[0.385,-0.003,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":36,"s":[217.463,322.147,0],"to":[-0.385,0.003,0],"ti":[0.364,0.034,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":37,"s":[216.337,322.093,0],"to":[-0.364,-0.034,0],"ti":[0.341,0.06,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":38,"s":[215.276,321.946,0],"to":[-0.341,-0.06,0],"ti":[0.316,0.077,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":39,"s":[214.288,321.735,0],"to":[-0.316,-0.077,0],"ti":[0.29,0.086,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":40,"s":[213.378,321.486,0],"to":[-0.29,-0.086,0],"ti":[0.265,0.09,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":41,"s":[212.546,321.219,0],"to":[-0.265,-0.09,0],"ti":[0.239,0.088,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":42,"s":[211.79,320.949,0],"to":[-0.239,-0.088,0],"ti":[0.212,0.083,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":43,"s":[211.114,320.689,0],"to":[-0.212,-0.083,0],"ti":[0.186,0.075,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.178},"t":44,"s":[210.521,320.45,0],"to":[-0.186,-0.075,0],"ti":[0.176,0.067,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.167},"t":45,"s":[209.997,320.238,0],"to":[-0.176,-0.067,0],"ti":[0.178,0.059,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.167},"t":46,"s":[209.465,320.047,0],"to":[-0.178,-0.059,0],"ti":[0.179,0.05,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.168},"t":47,"s":[208.927,319.881,0],"to":[-0.179,-0.05,0],"ti":[0.179,0.042,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.166},"t":48,"s":[208.392,319.745,0],"to":[-0.179,-0.042,0],"ti":[0.184,0.036,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.164},"t":49,"s":[207.85,319.63,0],"to":[-0.184,-0.036,0],"ti":[0.189,0.031,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":50,"s":[207.287,319.528,0],"to":[-0.189,-0.031,0],"ti":[0.191,0.026,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.167},"t":51,"s":[206.714,319.442,0],"to":[-0.191,-0.026,0],"ti":[0.19,0.019,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":52,"s":[206.14,319.374,0],"to":[-0.19,-0.019,0],"ti":[0.186,0.013,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":53,"s":[205.574,319.326,0],"to":[-0.186,-0.013,0],"ti":[0.18,0.006,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":54,"s":[205.024,319.298,0],"to":[-0.18,-0.006,0],"ti":[0.171,-0.002,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.171},"t":55,"s":[204.495,319.292,0],"to":[-0.171,0.002,0],"ti":[0.161,-0.009,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":56,"s":[203.995,319.308,0],"to":[-0.161,0.009,0],"ti":[0.149,-0.017,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":57,"s":[203.528,319.347,0],"to":[-0.149,0.017,0],"ti":[0.136,-0.024,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.174},"t":58,"s":[203.099,319.409,0],"to":[-0.136,0.024,0],"ti":[0.065,-0.014,0]},{"t":59,"s":[202.712,319.493,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.949,1.131,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":8,"s":[62.161,96.543,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.907,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.13,0.051,0]},"t":9,"s":[100.156,112.306,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.255,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.78,-0.001,0]},"t":10,"s":[85.337,71.714,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,0.737,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,-0.212,0]},"t":11,"s":[83.564,111.805,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.317,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.881,0.122,0]},"t":12,"s":[58.626,100.499,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.968,0.759,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.397,0]},"t":13,"s":[57.883,76.161,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,1.176,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.051,0.127,0]},"t":14,"s":[79.277,69.687,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.057,0]},"t":15,"s":[66.041,57.442,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.189,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.092,0.26,0]},"t":16,"s":[99.685,95.603,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.016,1.082,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,-0.51,0]},"t":17,"s":[83.661,113.563,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,1.121,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.013,0.041,0]},"t":18,"s":[136.015,111.04,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.746,0.893,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.873,0.049,0]},"t":19,"s":[73.781,116.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.529,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.124,0.375,0]},"t":20,"s":[79.202,103.731,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.027,1.092,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.055,0.101,0]},"t":21,"s":[90.283,100.207,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.852,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.044,0]},"t":22,"s":[83.612,83.82,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.603,0.729,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.191,-0.018,0]},"t":23,"s":[92.451,118.313,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.909,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.106,0.12,0]},"t":24,"s":[99.265,89.881,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.481,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.02,-0.001,0]},"t":25,"s":[124.872,26,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,0.628,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,-0.442,0]},"t":26,"s":[127.15,89.446,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.841,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.332,0.107,0]},"t":27,"s":[57.069,79.381,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.572,0.791,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.175,-0.245,0]},"t":28,"s":[59.486,44.49,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.638,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.103,0.139,0]},"t":29,"s":[61.689,53.354,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,1.105,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.108,0.401,0]},"t":30,"s":[70.8,66.698,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.094,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.047,0]},"t":31,"s":[101.268,70.196,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.89,-1.504,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,-0.649,0]},"t":32,"s":[135.914,62.272,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.08,0.944,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.345,0.086,0]},"t":33,"s":[62.097,63.174,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.915,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,-0.167,0]},"t":34,"s":[38.578,89.373,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.898,-33.804,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.213,5.1,0]},"t":35,"s":[84.734,80.668,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.645,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.457,0.084,0]},"t":36,"s":[71.735,80.523,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,-0.034,0]},"t":37,"s":[68.832,20.271,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,1.005,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.053,0.563,0]},"t":38,"s":[94.213,63.191,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.499,0.724,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.065,0.004,0]},"t":39,"s":[78.745,70.653,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.119,0]},"t":40,"s":[87.422,62.786,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,0.984,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.658,0.011,0]},"t":41,"s":[26.733,44.597,100]},{"i":{"x":[0.833,0.833,0.833],"y":[8.954,0.747,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.609,-0.019,0]},"t":42,"s":[23.521,65.429,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,0.997,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.082,0.124,0]},"t":43,"s":[23.011,48.501,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.153,0.822,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.407,-0.003,0]},"t":44,"s":[72.162,14.125,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.994,1.075,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.156,0]},"t":45,"s":[63.801,47.128,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.742,0.92,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.006,0.039,0]},"t":46,"s":[87.498,84.73,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,1.295,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.123,-1.924,0]},"t":47,"s":[65.378,13.453,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.536,1.079,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.497,0.065,0]},"t":48,"s":[19.027,16.413,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.076,0.957,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.102,0.041,0]},"t":49,"s":[25.686,2.971,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.87,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,-0.09,0]},"t":50,"s":[56.116,29.236,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.444,1.634,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.906,0.231,0]},"t":51,"s":[-1.889,16.583,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.986,0.961,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,0.074,0]},"t":52,"s":[2.996,9.45,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,0.802,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.017,-0.074,0]},"t":53,"s":[30.717,70.822,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.484,0.967,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.111,0.144,0]},"t":54,"s":[7.584,38.216,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.944,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,-0.054,0]},"t":55,"s":[17.496,-6.813,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.773,1.079,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.143,-0.17,0]},"t":56,"s":[68.936,20.442,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.98,0.725,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.132,0.041,0]},"t":57,"s":[50.024,11.466,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.027,0.12,0]},"t":58,"s":[17.481,29.004,100]},{"t":59,"s":[42.14,69.391,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":60,"st":8,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 29","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":39,"s":[100]},{"t":55,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.577},"o":{"x":0.167,"y":0.167},"t":12,"s":[270.833,305.959,0],"to":[-0.088,-0.333,0],"ti":[0.479,1.681,0]},{"i":{"x":0.833,"y":0.762},"o":{"x":0.167,"y":0.104},"t":13,"s":[270.305,303.959,0],"to":[-0.479,-1.681,0],"ti":[0.843,3.89,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.128},"t":14,"s":[267.957,295.871,0],"to":[-0.843,-3.89,0],"ti":[-1.367,3.831,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.177},"t":15,"s":[265.25,280.619,0],"to":[1.367,-3.831,0],"ti":[-4.031,0.131,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.16},"t":16,"s":[276.159,272.888,0],"to":[4.031,-0.131,0],"ti":[-3.947,-2.293,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.185},"t":17,"s":[289.438,279.833,0],"to":[3.947,2.293,0],"ti":[-3.163,-2.107,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":18,"s":[299.839,286.644,0],"to":[3.163,2.107,0],"ti":[-2.643,-1.789,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":19,"s":[308.416,292.475,0],"to":[2.643,1.789,0],"ti":[-2.265,-1.502,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":20,"s":[315.699,297.38,0],"to":[2.265,1.502,0],"ti":[-1.975,-1.258,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":21,"s":[322.005,301.489,0],"to":[1.975,1.258,0],"ti":[-1.746,-1.051,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":22,"s":[327.55,304.928,0],"to":[1.746,1.051,0],"ti":[-1.558,-0.872,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":23,"s":[332.48,307.794,0],"to":[1.558,0.872,0],"ti":[-1.4,-0.715,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":24,"s":[336.899,310.159,0],"to":[1.4,0.715,0],"ti":[-1.265,-0.574,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":25,"s":[340.882,312.081,0],"to":[1.265,0.574,0],"ti":[-1.148,-0.448,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":26,"s":[344.489,313.605,0],"to":[1.148,0.448,0],"ti":[-1.045,-0.333,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":27,"s":[347.771,314.769,0],"to":[1.045,0.333,0],"ti":[-0.954,-0.228,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[350.762,315.603,0],"to":[0.954,0.228,0],"ti":[-0.867,-0.129,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":29,"s":[353.494,316.134,0],"to":[0.867,0.129,0],"ti":[-0.779,-0.034,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":30,"s":[355.966,316.376,0],"to":[0.779,0.034,0],"ti":[-0.692,0.054,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":31,"s":[358.169,316.339,0],"to":[0.692,-0.054,0],"ti":[-0.607,0.132,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":32,"s":[360.118,316.051,0],"to":[0.607,-0.132,0],"ti":[-0.525,0.197,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":33,"s":[361.814,315.546,0],"to":[0.525,-0.197,0],"ti":[-0.446,0.247,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":34,"s":[363.265,314.868,0],"to":[0.446,-0.247,0],"ti":[-0.374,0.281,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":35,"s":[364.49,314.065,0],"to":[0.374,-0.281,0],"ti":[-0.309,0.299,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":36,"s":[365.508,313.183,0],"to":[0.309,-0.299,0],"ti":[-0.254,0.304,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":37,"s":[366.345,312.269,0],"to":[0.254,-0.304,0],"ti":[-0.208,0.299,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":38,"s":[367.029,311.356,0],"to":[0.208,-0.299,0],"ti":[-0.171,0.285,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":39,"s":[367.591,310.475,0],"to":[0.171,-0.285,0],"ti":[-0.143,0.266,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":40,"s":[368.057,309.644,0],"to":[0.143,-0.266,0],"ti":[-0.123,0.244,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":41,"s":[368.451,308.877,0],"to":[0.123,-0.244,0],"ti":[-0.108,0.219,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":42,"s":[368.793,308.182,0],"to":[0.108,-0.219,0],"ti":[-0.097,0.192,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":43,"s":[369.097,307.564,0],"to":[0.097,-0.192,0],"ti":[-0.091,0.166,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":44,"s":[369.377,307.027,0],"to":[0.091,-0.166,0],"ti":[-0.087,0.139,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":45,"s":[369.642,306.571,0],"to":[0.087,-0.139,0],"ti":[-0.085,0.112,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":46,"s":[369.899,306.194,0],"to":[0.085,-0.112,0],"ti":[-0.083,0.087,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":47,"s":[370.15,305.896,0],"to":[0.083,-0.087,0],"ti":[-0.082,0.062,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":48,"s":[370.398,305.674,0],"to":[0.082,-0.062,0],"ti":[-0.081,0.039,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.178},"t":49,"s":[370.644,305.522,0],"to":[0.081,-0.039,0],"ti":[-0.079,0.017,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.175},"t":50,"s":[370.885,305.438,0],"to":[0.079,-0.017,0],"ti":[-0.075,-0.004,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.171},"t":51,"s":[371.117,305.419,0],"to":[0.075,0.004,0],"ti":[-0.071,-0.019,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":52,"s":[371.334,305.462,0],"to":[0.071,0.019,0],"ti":[-0.071,-0.023,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.167},"t":53,"s":[371.546,305.533,0],"to":[0.071,0.023,0],"ti":[-0.069,-0.021,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.171},"t":54,"s":[371.758,305.598,0],"to":[0.069,0.021,0],"ti":[-0.064,-0.018,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.176},"t":55,"s":[371.962,305.656,0],"to":[0.064,0.018,0],"ti":[-0.056,-0.014,0]},{"i":{"x":0.833,"y":0.859},"o":{"x":0.167,"y":0.185},"t":56,"s":[372.145,305.704,0],"to":[0.056,0.014,0],"ti":[-0.042,-0.01,0]},{"i":{"x":0.833,"y":0.882},"o":{"x":0.167,"y":0.204},"t":57,"s":[372.295,305.741,0],"to":[0.042,0.01,0],"ti":[-0.025,-0.005,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.285},"t":58,"s":[372.399,305.764,0],"to":[0.025,0.005,0],"ti":[-0.007,-0.001,0]},{"t":59,"s":[372.443,305.77,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.332,1.186,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":12,"s":[64.57,85.432,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.875,0.947,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.095,0.058,0]},"t":13,"s":[69.942,108.953,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.206,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.249,-0.144,0]},"t":14,"s":[107.607,32.831,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.969,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.059,0.176,0]},"t":15,"s":[126.531,60.735,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.048,0.17,0]},"t":16,"s":[60.769,85.755,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,1.153,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0.222,0]},"t":17,"s":[102.39,109.836,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.333,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.877,0.054,0]},"t":18,"s":[60.887,124.258,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.949,1.054,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,-0.162,0]},"t":19,"s":[56.529,83.394,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.322,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.133,0.033,0]},"t":20,"s":[78.284,97.261,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,0.786,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.066,-0.05,0]},"t":21,"s":[69.892,74.45,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.923,1.181,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.033,0.137,0]},"t":22,"s":[110.724,88.677,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.066,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.984,0.057,0]},"t":23,"s":[81.454,110.927,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.003,0.937,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,-0.193,0]},"t":24,"s":[83.739,40.242,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.86,0.536,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.002,-0.266,0]},"t":25,"s":[107.061,61.553,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.865,1.004,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.206,0.102,0]},"t":26,"s":[83.024,56.466,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.851,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.217,0.004,0]},"t":27,"s":[66.63,33.237,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.158,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.189,0.226,0]},"t":28,"s":[56.437,57.54,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.865,1.267,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.203,0]},"t":29,"s":[48.398,71.747,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.754,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.218,0.064,0]},"t":30,"s":[71.71,81.652,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.096,0.683,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.126,-0.203,0]},"t":31,"s":[86.087,39.983,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.99,0.804,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,0.113,0]},"t":32,"s":[114.075,52.122,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.96,0.963,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.012,0.145,0]},"t":33,"s":[53.751,86.117,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,0.79,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.077,-0.066,0]},"t":34,"s":[106.75,131.89,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.204,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.532,0.138,0]},"t":35,"s":[79.216,106.312,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.915,0.889,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,-0.024,0]},"t":36,"s":[82.944,67.378,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.454,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[3.696,0.337,0]},"t":37,"s":[114.826,97.73,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.872,0.088,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,-0.207,0]},"t":38,"s":[115.562,107.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.076,0.092,0]},"t":39,"s":[119.647,104.826,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.157,0.579,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.17,0.758,0]},"t":40,"s":[72.833,76.34,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.104,0]},"t":41,"s":[88.225,72.82,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.853,0.888,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.07,-0.05,0]},"t":42,"s":[43.922,58.537,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,-0.216,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.193,0.325,0]},"t":43,"s":[67.927,67.475,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.471,1.047,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.3,0.089,0]},"t":44,"s":[86.125,70.552,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.03,0]},"t":45,"s":[93.113,112.383,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.526,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.633,-0.31,0]},"t":46,"s":[46.616,46.845,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.045,1.106,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.101,0.012,0]},"t":47,"s":[39.563,60.724,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.969,1.027,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.029,0.047,0]},"t":48,"s":[6.525,44.501,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,0.915,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.05,0.021,0]},"t":49,"s":[57.474,81.367,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.854,1.348,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.48,3.659,0]},"t":50,"s":[25.518,32.394,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.966,0.815,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.195,0.067,0]},"t":51,"s":[30.245,31.253,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.921,1.317,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.077,0.152,0]},"t":52,"s":[33.783,37.163,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.996,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.48,0.066,0]},"t":53,"s":[-10.763,44.348,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.087,-0.029,0]},"t":54,"s":[-8.389,9.855,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.194,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.177,-0.012,0]},"t":55,"s":[46.091,35.382,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.01,0.743,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,-0.03,0]},"t":56,"s":[50.24,13.115,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.876,0.981,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.009,0.123,0]},"t":57,"s":[36.428,29.519,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.252,-0.025,0]},"t":58,"s":[51.9,63.715,100]},{"t":59,"s":[59.535,37.52,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":12,"op":60,"st":12,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":"Shape Layer 28","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":3,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[100]},{"t":46,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.613},"o":{"x":0.167,"y":0.167},"t":3,"s":[270.565,305.387,0],"to":[-0.175,-0.467,0],"ti":[0.928,2.118,0]},{"i":{"x":0.833,"y":0.766},"o":{"x":0.167,"y":0.106},"t":4,"s":[269.518,302.585,0],"to":[-0.928,-2.118,0],"ti":[2.866,4.132,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.13},"t":5,"s":[264.999,292.679,0],"to":[-2.866,-4.132,0],"ti":[5.573,3.332,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.159},"t":6,"s":[252.323,277.795,0],"to":[-5.573,-3.332,0],"ti":[6.454,-0.145,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.178},"t":7,"s":[231.564,272.688,0],"to":[-6.454,0.145,0],"ti":[5.175,-2.485,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":8,"s":[213.599,278.665,0],"to":[-5.175,2.485,0],"ti":[3.799,-3.017,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":9,"s":[200.516,287.597,0],"to":[-3.799,3.017,0],"ti":[2.848,-2.986,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":10,"s":[190.807,296.767,0],"to":[-2.848,2.986,0],"ti":[2.177,-2.823,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":11,"s":[183.426,305.511,0],"to":[-2.177,2.823,0],"ti":[1.672,-2.64,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":12,"s":[177.747,313.704,0],"to":[-1.672,2.64,0],"ti":[1.269,-2.465,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":13,"s":[173.394,321.352,0],"to":[-1.269,2.465,0],"ti":[0.931,-2.298,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":14,"s":[170.134,328.494,0],"to":[-0.931,2.298,0],"ti":[0.638,-2.135,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":15,"s":[167.806,335.14,0],"to":[-0.638,2.135,0],"ti":[0.374,-1.972,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":16,"s":[166.306,341.307,0],"to":[-0.374,1.972,0],"ti":[0.132,-1.802,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[165.565,346.975,0],"to":[-0.132,1.802,0],"ti":[-0.087,-1.628,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[165.516,352.122,0],"to":[0.087,1.628,0],"ti":[-0.279,-1.446,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":19,"s":[166.088,356.74,0],"to":[0.279,1.446,0],"ti":[-0.435,-1.255,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[167.189,360.798,0],"to":[0.435,1.255,0],"ti":[-0.549,-1.065,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[168.697,364.273,0],"to":[0.549,1.065,0],"ti":[-0.622,-0.888,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[170.482,367.189,0],"to":[0.622,0.888,0],"ti":[-0.661,-0.731,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[172.43,369.6,0],"to":[0.661,0.731,0],"ti":[-0.672,-0.596,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":24,"s":[174.447,371.574,0],"to":[0.672,0.596,0],"ti":[-0.665,-0.483,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[176.464,373.178,0],"to":[0.665,0.483,0],"ti":[-0.646,-0.39,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[178.436,374.475,0],"to":[0.646,0.39,0],"ti":[-0.62,-0.314,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[180.337,375.52,0],"to":[0.62,0.314,0],"ti":[-0.589,-0.251,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":28,"s":[182.153,376.359,0],"to":[0.589,0.251,0],"ti":[-0.557,-0.198,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":29,"s":[183.874,377.025,0],"to":[0.557,0.198,0],"ti":[-0.524,-0.154,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":30,"s":[185.496,377.549,0],"to":[0.524,0.154,0],"ti":[-0.49,-0.117,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[187.016,377.951,0],"to":[0.49,0.117,0],"ti":[-0.456,-0.086,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":32,"s":[188.435,378.252,0],"to":[0.456,0.086,0],"ti":[-0.422,-0.059,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":33,"s":[189.752,378.465,0],"to":[0.422,0.059,0],"ti":[-0.387,-0.035,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":34,"s":[190.966,378.603,0],"to":[0.387,0.035,0],"ti":[-0.352,-0.015,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":35,"s":[192.076,378.677,0],"to":[0.352,0.015,0],"ti":[-0.316,0.002,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":36,"s":[193.079,378.696,0],"to":[0.316,-0.002,0],"ti":[-0.278,0.017,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":37,"s":[193.971,378.666,0],"to":[0.278,-0.017,0],"ti":[-0.239,0.029,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.181},"t":38,"s":[194.747,378.596,0],"to":[0.239,-0.029,0],"ti":[-0.199,0.039,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.184},"t":39,"s":[195.405,378.492,0],"to":[0.199,-0.039,0],"ti":[-0.156,0.047,0]},{"i":{"x":0.833,"y":0.856},"o":{"x":0.167,"y":0.19},"t":40,"s":[195.939,378.361,0],"to":[0.156,-0.047,0],"ti":[-0.11,0.054,0]},{"i":{"x":0.833,"y":0.86},"o":{"x":0.167,"y":0.199},"t":41,"s":[196.341,378.209,0],"to":[0.11,-0.054,0],"ti":[-0.061,0.058,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.206},"t":42,"s":[196.601,378.04,0],"to":[0.061,-0.058,0],"ti":[-0.017,0.06,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.18},"t":43,"s":[196.709,377.862,0],"to":[0.017,-0.06,0],"ti":[0.003,0.066,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.153},"t":44,"s":[196.702,377.682,0],"to":[-0.003,-0.066,0],"ti":[-0.001,0.08,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.153},"t":45,"s":[196.693,377.464,0],"to":[0.001,-0.08,0],"ti":[-0.01,0.093,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.156},"t":46,"s":[196.709,377.203,0],"to":[0.01,-0.093,0],"ti":[-0.019,0.104,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.158},"t":47,"s":[196.752,376.906,0],"to":[0.019,-0.104,0],"ti":[-0.028,0.112,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":48,"s":[196.823,376.58,0],"to":[0.028,-0.112,0],"ti":[-0.038,0.118,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":49,"s":[196.923,376.233,0],"to":[0.038,-0.118,0],"ti":[-0.049,0.122,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":50,"s":[197.053,375.871,0],"to":[0.049,-0.122,0],"ti":[-0.059,0.124,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":51,"s":[197.215,375.501,0],"to":[0.059,-0.124,0],"ti":[-0.069,0.124,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":52,"s":[197.407,375.127,0],"to":[0.069,-0.124,0],"ti":[-0.079,0.122,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":53,"s":[197.63,374.756,0],"to":[0.079,-0.122,0],"ti":[-0.089,0.119,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":54,"s":[197.883,374.392,0],"to":[0.089,-0.119,0],"ti":[-0.099,0.115,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":55,"s":[198.166,374.04,0],"to":[0.099,-0.115,0],"ti":[-0.108,0.109,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":56,"s":[198.477,373.703,0],"to":[0.108,-0.109,0],"ti":[-0.116,0.102,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":57,"s":[198.814,373.385,0],"to":[0.116,-0.102,0],"ti":[-0.124,0.095,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":58,"s":[199.175,373.088,0],"to":[0.124,-0.095,0],"ti":[-0.064,0.045,0]},{"t":59,"s":[199.559,372.816,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.903,1.422,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":3,"s":[94.702,122.655,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.272,0.85,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.6,0.07,0]},"t":4,"s":[127.289,129.977,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.732,1.117,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,0.187,0]},"t":5,"s":[132.545,85.581,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.121,0.049,0]},"t":6,"s":[110.128,50.029,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.861,2.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.066,6.415,0]},"t":7,"s":[60.526,135.359,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.066,0.745,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.209,0.08,0]},"t":8,"s":[88.167,136.482,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.966,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,0.124,0]},"t":9,"s":[106.49,110.542,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.936,0.426,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.056,-0.36,0]},"t":10,"s":[73.621,57.227,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.484,1.02,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.27,0.097,0]},"t":11,"s":[93.234,67.259,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.866,0.935,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.016,0]},"t":12,"s":[88.608,126.279,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.185,0.861,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.221,-0.293,0]},"t":13,"s":[120.076,52.9,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.916,0.706,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.057,0.207,0]},"t":14,"s":[139.099,69.169,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.441,0.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[6.732,0.116,0]},"t":15,"s":[77.908,80.095,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.941,1.013,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.086,0.155,0]},"t":16,"s":[77.141,107.685,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.598,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.198,0.011,0]},"t":17,"s":[55.437,139.887,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.889,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.105,0.204,0]},"t":18,"s":[61.857,102.633,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.557,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.337,-0.045,0]},"t":19,"s":[86.378,76.933,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.048,1.193,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.103,-0.014,0]},"t":20,"s":[94.434,93.656,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,0.058,0]},"t":21,"s":[129.176,79.379,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.003,0.846,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.385,-0.049,0]},"t":22,"s":[74.62,126.637,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.783,0.843,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.003,0.182,0]},"t":23,"s":[59.528,96.902,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.987,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,0.178,0]},"t":24,"s":[75.163,71.778,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.98,0.157,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.016,-0.467,0]},"t":25,"s":[100.236,49.638,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.196,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.026,0.092,0]},"t":26,"s":[79.183,52.988,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,1.011,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,0.384,0]},"t":27,"s":[95.26,83.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.998,0.441,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.251,0.01,0]},"t":28,"s":[41.321,92.009,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.333,0.953,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.002,0.098,0]},"t":29,"s":[54.762,82.447,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.996,0.891,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,-0.107,0]},"t":30,"s":[41.586,27.852,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.941,0.229,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.004,0.35,0]},"t":31,"s":[107.415,51.724,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.994,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.201,0.093,0]},"t":32,"s":[44.413,59.172,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.637,0.897,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.19,-0.007,0]},"t":33,"s":[62.871,120.641,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.108,0.443,0]},"t":34,"s":[57.246,63.863,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.767,0.841,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.63,0.024,0]},"t":35,"s":[38.372,50.708,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,1.066,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.175,0]},"t":36,"s":[37.754,69.059,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.994,0.844,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.156,0.037,0]},"t":37,"s":[58.88,85.746,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,1.009,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.007,0.179,0]},"t":38,"s":[83,55.846,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.235,1.083,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.184,0.008,0]},"t":39,"s":[60.74,29.847,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.881,0.964,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,0.042,0]},"t":40,"s":[67.668,58.5,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.257,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.279,-0.062,0]},"t":41,"s":[41.227,1.342,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.063,0.452,0]},"t":42,"s":[29.972,34.049,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.558,0.889,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.356,-0.011,0]},"t":43,"s":[75.997,41.447,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.923,0.757,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.337,0]},"t":44,"s":[77.684,34.902,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.665,1.132,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.086,0.127,0]},"t":45,"s":[24.202,32.753,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,0.637,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.051,0]},"t":46,"s":[28.012,28.648,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.981,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,0.108,0]},"t":47,"s":[-6.22,39.267,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,0.981,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.024,-0.038,0]},"t":48,"s":[30.742,74.855,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,1.113,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,-0.024,0]},"t":49,"s":[2.023,50.337,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.727,0.883,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.326,0.048,0]},"t":50,"s":[30.77,69.402,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.902,1.045,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.12,0.292,0]},"t":51,"s":[24.92,24.502,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.108,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.55,0.029,0]},"t":52,"s":[11.611,6.547,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.904,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,0.962,0]},"t":53,"s":[9.235,34.159,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.825,-0.409,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.138,0.611,0]},"t":54,"s":[43.201,36.778,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.973,0.815,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.159,0.089,0]},"t":55,"s":[30.429,37.192,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,1.034,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.039,0.152,0]},"t":56,"s":[16.318,43.768,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.408,0.765,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.6,0.024,0]},"t":57,"s":[25.931,51.757,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,0.129,0]},"t":58,"s":[27.481,40.555,100]},{"t":59,"s":[52.128,20.168,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":3,"op":60,"st":3,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"Shape Layer 27","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":1,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"t":44,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.551},"o":{"x":0.167,"y":0.167},"t":1,"s":[264.583,303.394,0],"to":[0.152,-0.309,0],"ti":[-0.732,1.703,0]},{"i":{"x":0.833,"y":0.762},"o":{"x":0.167,"y":0.102},"t":2,"s":[265.494,301.541,0],"to":[0.732,-1.703,0],"ti":[-1.362,4.094,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.128},"t":3,"s":[268.975,293.174,0],"to":[1.362,-4.094,0],"ti":[-1.445,5.76,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":4,"s":[273.666,276.977,0],"to":[1.445,-5.76,0],"ti":[-1.23,5.729,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":5,"s":[277.646,258.613,0],"to":[1.23,-5.729,0],"ti":[-1.123,4.869,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":6,"s":[281.044,242.601,0],"to":[1.123,-4.869,0],"ti":[-1.146,4.013,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.183},"t":7,"s":[284.385,229.397,0],"to":[1.146,-4.013,0],"ti":[-1.227,3.315,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":8,"s":[287.919,218.524,0],"to":[1.227,-3.315,0],"ti":[-1.326,2.748,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":9,"s":[291.745,209.508,0],"to":[1.326,-2.748,0],"ti":[-1.42,2.27,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":10,"s":[295.873,202.037,0],"to":[1.42,-2.27,0],"ti":[-1.493,1.856,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":11,"s":[300.264,195.89,0],"to":[1.493,-1.856,0],"ti":[-1.535,1.495,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":12,"s":[304.832,190.902,0],"to":[1.535,-1.495,0],"ti":[-1.541,1.186,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":13,"s":[309.473,186.917,0],"to":[1.541,-1.186,0],"ti":[-1.513,0.928,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":14,"s":[314.076,183.786,0],"to":[1.513,-0.928,0],"ti":[-1.459,0.719,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":15,"s":[318.551,181.352,0],"to":[1.459,-0.719,0],"ti":[-1.388,0.557,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":16,"s":[322.832,179.47,0],"to":[1.388,-0.557,0],"ti":[-1.306,0.432,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":17,"s":[326.879,178.013,0],"to":[1.306,-0.432,0],"ti":[-1.218,0.338,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":18,"s":[330.667,176.878,0],"to":[1.218,-0.338,0],"ti":[-1.129,0.269,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":19,"s":[334.187,175.983,0],"to":[1.129,-0.269,0],"ti":[-1.043,0.219,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":20,"s":[337.444,175.264,0],"to":[1.043,-0.219,0],"ti":[-0.959,0.182,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":21,"s":[340.444,174.672,0],"to":[0.959,-0.182,0],"ti":[-0.877,0.155,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[343.196,174.174,0],"to":[0.877,-0.155,0],"ti":[-0.798,0.134,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":23,"s":[345.706,173.744,0],"to":[0.798,-0.134,0],"ti":[-0.72,0.119,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":24,"s":[347.981,173.367,0],"to":[0.72,-0.119,0],"ti":[-0.644,0.106,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":25,"s":[350.026,173.032,0],"to":[0.644,-0.106,0],"ti":[-0.57,0.094,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.178},"t":26,"s":[351.847,172.732,0],"to":[0.57,-0.094,0],"ti":[-0.497,0.083,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.18},"t":27,"s":[353.446,172.467,0],"to":[0.497,-0.083,0],"ti":[-0.429,0.075,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.18},"t":28,"s":[354.827,172.237,0],"to":[0.429,-0.075,0],"ti":[-0.38,0.083,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":29,"s":[356.018,172.02,0],"to":[0.38,-0.083,0],"ti":[-0.347,0.103,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":30,"s":[357.106,171.74,0],"to":[0.347,-0.103,0],"ti":[-0.318,0.12,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":31,"s":[358.103,171.404,0],"to":[0.318,-0.12,0],"ti":[-0.291,0.134,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":32,"s":[359.015,171.022,0],"to":[0.291,-0.134,0],"ti":[-0.265,0.144,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":33,"s":[359.846,170.603,0],"to":[0.265,-0.144,0],"ti":[-0.24,0.151,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":34,"s":[360.602,170.159,0],"to":[0.24,-0.151,0],"ti":[-0.216,0.155,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":35,"s":[361.284,169.698,0],"to":[0.216,-0.155,0],"ti":[-0.193,0.156,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":36,"s":[361.896,169.23,0],"to":[0.193,-0.156,0],"ti":[-0.172,0.154,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":37,"s":[362.443,168.763,0],"to":[0.172,-0.154,0],"ti":[-0.151,0.15,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":38,"s":[362.927,168.306,0],"to":[0.151,-0.15,0],"ti":[-0.13,0.143,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":39,"s":[363.348,167.866,0],"to":[0.13,-0.143,0],"ti":[-0.109,0.134,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.177},"t":40,"s":[363.707,167.448,0],"to":[0.109,-0.134,0],"ti":[-0.095,0.123,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.175},"t":41,"s":[364.004,167.059,0],"to":[0.095,-0.123,0],"ti":[-0.093,0.109,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":42,"s":[364.278,166.709,0],"to":[0.093,-0.109,0],"ti":[-0.096,0.093,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":43,"s":[364.562,166.405,0],"to":[0.096,-0.093,0],"ti":[-0.099,0.076,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":44,"s":[364.856,166.152,0],"to":[0.099,-0.076,0],"ti":[-0.1,0.058,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":45,"s":[365.154,165.951,0],"to":[0.1,-0.058,0],"ti":[-0.1,0.041,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":46,"s":[365.455,165.803,0],"to":[0.1,-0.041,0],"ti":[-0.099,0.023,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":47,"s":[365.754,165.707,0],"to":[0.099,-0.023,0],"ti":[-0.096,0.006,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.17},"t":48,"s":[366.048,165.664,0],"to":[0.096,-0.006,0],"ti":[-0.093,-0.01,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.169},"t":49,"s":[366.333,165.672,0],"to":[0.093,0.01,0],"ti":[-0.088,-0.026,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.168},"t":50,"s":[366.605,165.727,0],"to":[0.088,0.026,0],"ti":[-0.082,-0.04,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.167},"t":51,"s":[366.86,165.827,0],"to":[0.082,0.04,0],"ti":[-0.074,-0.052,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.167},"t":52,"s":[367.094,165.966,0],"to":[0.074,0.052,0],"ti":[-0.065,-0.063,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.167},"t":53,"s":[367.302,166.14,0],"to":[0.065,0.063,0],"ti":[-0.054,-0.071,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":54,"s":[367.481,166.343,0],"to":[0.054,0.071,0],"ti":[-0.042,-0.077,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":55,"s":[367.625,166.567,0],"to":[0.042,0.077,0],"ti":[-0.028,-0.08,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":56,"s":[367.73,166.804,0],"to":[0.028,0.08,0],"ti":[-0.012,-0.079,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.171},"t":57,"s":[367.791,167.045,0],"to":[0.012,0.079,0],"ti":[0.003,-0.077,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.169},"t":58,"s":[367.803,167.28,0],"to":[-0.003,0.077,0],"ti":[0.005,-0.038,0]},{"t":59,"s":[367.776,167.508,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[-0.282,0.584,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":1,"s":[72.171,102.828,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,1.039,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,0.104,0]},"t":2,"s":[75.523,112.995,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.019,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.304,0.027,0]},"t":3,"s":[123.744,153.636,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.693,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,0.256,0]},"t":4,"s":[141.925,93.916,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.936,0.883,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,0.023,0]},"t":5,"s":[119.587,65.139,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.769,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.276,0.289,0]},"t":6,"s":[59.668,105.203,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.003,2.032,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.13,0.39,0]},"t":7,"s":[73.555,121.412,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.032,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.003,0.077,0]},"t":8,"s":[98.171,125.813,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.887,1.503,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.023,0.67,0]},"t":9,"s":[72.643,66.925,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.315,0.071,0]},"t":10,"s":[108.084,58.564,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.479,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.612,-0.05,0]},"t":11,"s":[120.859,117.368,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.764,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,-0.052,0]},"t":12,"s":[122.874,80.731,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.916,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.129,0.273,0]},"t":13,"s":[109.267,103.32,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.633,1.171,1]},"o":{"x":[0.167,0.167,0.167],"y":[12.53,0.011,0]},"t":14,"s":[84.332,113.266,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.72,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.056,0]},"t":15,"s":[84.165,101.864,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.993,0.575,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.119,-0.115,0]},"t":16,"s":[89.607,136.724,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.905,0.946,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.007,0.104,0]},"t":17,"s":[102.429,122.041,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.566,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.667,-0.15,0]},"t":18,"s":[90.653,61.798,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.025,1.312,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,-0.274,0]},"t":19,"s":[88.97,83.343,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.882,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.019,0.066,0]},"t":20,"s":[122.282,78.321,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.099,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.27,0.282,0]},"t":21,"s":[78.796,102.131,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.927,5.118,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,0.945,0]},"t":22,"s":[59.361,112.137,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.136,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.587,0.082,0]},"t":23,"s":[102.002,113.104,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,-0.036,0]},"t":24,"s":[96.704,64.316,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.841,2.162,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.183,-1.67,0]},"t":25,"s":[110.65,98.408,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.252,1.02,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.176,0.078,0]},"t":26,"s":[106.279,96.788,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.859,0.808,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,0.016,0]},"t":27,"s":[102.331,121.007,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.964,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.205,0.147,0]},"t":28,"s":[70.842,91.027,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.045,0.592,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.063,-0.479,0]},"t":29,"s":[49.193,51.754,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.816,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.029,0.105,0]},"t":30,"s":[61.557,57.576,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.115,0.844,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.152,-0.022,0]},"t":31,"s":[42.519,80.235,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.93,0.834,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.048,0.179,0]},"t":32,"s":[19.507,62.344,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.463,1.029,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.45,0.167,0]},"t":33,"s":[74.401,46.72,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.852,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,0.021,0]},"t":34,"s":[65.831,31.185,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.744,1.068,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.12,0.191,0]},"t":35,"s":[19.228,52.105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.811,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.124,0.037,0]},"t":36,"s":[38.347,68.326,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.615,1.069,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.166,0.149,0]},"t":37,"s":[77.863,38.956,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.995,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.038,0]},"t":38,"s":[80.904,1.852,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,-0.006,0]},"t":39,"s":[55.41,69.603,100]},{"i":{"x":[0.833,0.833,0.833],"y":[4.375,0.208,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.748,-0.921,0]},"t":40,"s":[31.879,6.237,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,1.05,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.093,0]},"t":41,"s":[31.143,11.494,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.257,0.972,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.59,0.031,0]},"t":42,"s":[61.679,56.19,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.875,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.063,-0.042,0]},"t":43,"s":[66.703,-15.414,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.777,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.252,-0.012,0]},"t":44,"s":[46.165,32.254,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.133,-0.048,0]},"t":45,"s":[36.01,-9.217,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.042,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.166,0]},"t":46,"s":[18.977,17.016,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.64,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.028,0.41,0]},"t":47,"s":[50.584,43.433,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,1.026,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.054,0.108,0]},"t":48,"s":[3.2,50.175,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.826,0.687,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.121,0.02,0]},"t":49,"s":[31.978,72.587,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.16,0.114,0]},"t":50,"s":[20.225,43.283,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.531,0.899,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.084,-0.019,0]},"t":51,"s":[7.424,-37.423,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.885,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.101,0.475,0]},"t":52,"s":[13.811,28.463,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.207,0.722,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.872,0.302,0]},"t":53,"s":[43.338,42.467,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.09,0.119,0]},"t":54,"s":[40.761,47.811,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.074,0.996,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.092,-0.177,0]},"t":55,"s":[6.006,60.269,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,2.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.039,-0.004,0]},"t":56,"s":[22.502,56.273,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.991,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.12,0.077,0]},"t":57,"s":[-8.669,60.085,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.158,-0.01,0]},"t":58,"s":[4.137,9.589,100]},{"t":59,"s":[18.516,54.805,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":60,"st":1,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"Shape Layer 26","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":31,"s":[100]},{"t":47,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.589},"o":{"x":0.167,"y":0.167},"t":4,"s":[269.491,306.01,0],"to":[0.367,0.261,0],"ti":[-1.762,-1.355,0]},{"i":{"x":0.833,"y":0.764},"o":{"x":0.167,"y":0.105},"t":5,"s":[271.692,307.579,0],"to":[1.762,1.355,0],"ti":[-4.055,-2.961,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":6,"s":[280.065,314.139,0],"to":[4.055,2.961,0],"ti":[-5.763,-3.712,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":7,"s":[296.024,325.342,0],"to":[5.763,3.712,0],"ti":[-5.909,-3.26,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":8,"s":[314.641,336.411,0],"to":[5.909,3.26,0],"ti":[-5.199,-2.461,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":9,"s":[331.476,344.903,0],"to":[5.199,2.461,0],"ti":[-4.435,-1.834,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":10,"s":[345.833,351.179,0],"to":[4.435,1.834,0],"ti":[-3.802,-1.398,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":11,"s":[358.083,355.908,0],"to":[3.802,1.398,0],"ti":[-3.292,-1.093,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":12,"s":[368.642,359.567,0],"to":[3.292,1.093,0],"ti":[-2.886,-0.867,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":13,"s":[377.836,362.467,0],"to":[2.886,0.867,0],"ti":[-2.566,-0.687,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":14,"s":[385.959,364.771,0],"to":[2.566,0.687,0],"ti":[-2.306,-0.543,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":15,"s":[393.233,366.589,0],"to":[2.306,0.543,0],"ti":[-2.085,-0.431,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":16,"s":[399.792,368.03,0],"to":[2.085,0.431,0],"ti":[-1.895,-0.342,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":17,"s":[405.741,369.174,0],"to":[1.895,0.342,0],"ti":[-1.729,-0.272,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":18,"s":[411.16,370.082,0],"to":[1.729,0.272,0],"ti":[-1.583,-0.217,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":19,"s":[416.115,370.805,0],"to":[1.583,0.217,0],"ti":[-1.452,-0.173,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":20,"s":[420.657,371.382,0],"to":[1.452,0.173,0],"ti":[-1.335,-0.139,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":21,"s":[424.829,371.844,0],"to":[1.335,0.139,0],"ti":[-1.229,-0.113,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":22,"s":[428.668,372.218,0],"to":[1.229,0.113,0],"ti":[-1.131,-0.094,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[432.201,372.525,0],"to":[1.131,0.094,0],"ti":[-1.041,-0.08,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[435.454,372.783,0],"to":[1.041,0.08,0],"ti":[-0.958,-0.071,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[438.448,373.008,0],"to":[0.958,0.071,0],"ti":[-0.88,-0.066,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[441.201,373.211,0],"to":[0.88,0.066,0],"ti":[-0.807,-0.063,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[443.727,373.403,0],"to":[0.807,0.063,0],"ti":[-0.738,-0.063,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":28,"s":[446.042,373.591,0],"to":[0.738,0.063,0],"ti":[-0.673,-0.065,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[448.156,373.783,0],"to":[0.673,0.065,0],"ti":[-0.611,-0.069,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[450.079,373.983,0],"to":[0.611,0.069,0],"ti":[-0.552,-0.073,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":31,"s":[451.822,374.195,0],"to":[0.552,0.073,0],"ti":[-0.495,-0.077,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":32,"s":[453.39,374.419,0],"to":[0.495,0.077,0],"ti":[-0.44,-0.082,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":33,"s":[454.792,374.659,0],"to":[0.44,0.082,0],"ti":[-0.387,-0.086,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":34,"s":[456.031,374.911,0],"to":[0.387,0.086,0],"ti":[-0.336,-0.09,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":35,"s":[457.115,375.176,0],"to":[0.336,0.09,0],"ti":[-0.286,-0.092,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":36,"s":[458.047,375.45,0],"to":[0.286,0.092,0],"ti":[-0.237,-0.093,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":37,"s":[458.831,375.73,0],"to":[0.237,0.093,0],"ti":[-0.19,-0.093,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.186},"t":38,"s":[459.47,376.01,0],"to":[0.19,0.093,0],"ti":[-0.143,-0.09,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.19},"t":39,"s":[459.968,376.286,0],"to":[0.143,0.09,0],"ti":[-0.097,-0.085,0]},{"i":{"x":0.833,"y":0.857},"o":{"x":0.167,"y":0.195},"t":40,"s":[460.328,376.55,0],"to":[0.097,0.085,0],"ti":[-0.052,-0.077,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.2},"t":41,"s":[460.55,376.795,0],"to":[0.052,0.077,0],"ti":[-0.007,-0.066,0]},{"i":{"x":0.833,"y":0.811},"o":{"x":0.167,"y":0.188},"t":42,"s":[460.639,377.012,0],"to":[0.007,0.066,0],"ti":[0.032,-0.061,0]},{"i":{"x":0.833,"y":0.813},"o":{"x":0.167,"y":0.149},"t":43,"s":[460.595,377.193,0],"to":[-0.032,0.061,0],"ti":[0.056,-0.069,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.151},"t":44,"s":[460.445,377.377,0],"to":[-0.056,0.069,0],"ti":[0.06,-0.083,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.159},"t":45,"s":[460.259,377.605,0],"to":[-0.06,0.083,0],"ti":[0.055,-0.097,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":46,"s":[460.084,377.877,0],"to":[-0.055,0.097,0],"ti":[0.049,-0.11,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.161},"t":47,"s":[459.926,378.189,0],"to":[-0.049,0.11,0],"ti":[0.042,-0.121,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":48,"s":[459.788,378.537,0],"to":[-0.042,0.121,0],"ti":[0.034,-0.13,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":49,"s":[459.673,378.915,0],"to":[-0.034,0.13,0],"ti":[0.025,-0.138,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":50,"s":[459.585,379.319,0],"to":[-0.025,0.138,0],"ti":[0.015,-0.145,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":51,"s":[459.525,379.745,0],"to":[-0.015,0.145,0],"ti":[0.004,-0.15,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":52,"s":[459.496,380.189,0],"to":[-0.004,0.15,0],"ti":[-0.006,-0.154,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":53,"s":[459.499,380.647,0],"to":[0.006,0.154,0],"ti":[-0.017,-0.157,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":54,"s":[459.535,381.115,0],"to":[0.017,0.157,0],"ti":[-0.028,-0.158,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":55,"s":[459.603,381.589,0],"to":[0.028,0.158,0],"ti":[-0.039,-0.159,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.166},"t":56,"s":[459.705,382.066,0],"to":[0.039,0.159,0],"ti":[-0.05,-0.158,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":57,"s":[459.838,382.542,0],"to":[0.05,0.158,0],"ti":[-0.059,-0.156,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":58,"s":[460.002,383.013,0],"to":[0.059,0.156,0],"ti":[-0.032,-0.077,0]},{"t":59,"s":[460.195,383.477,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":4,"s":[97.409,66.055,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.753,1.579,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.148,-0.189,0]},"t":5,"s":[44.567,76.147,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.004,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.126,0.073,0]},"t":6,"s":[63.613,73.054,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.971,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.004,0.009,0]},"t":7,"s":[100.946,97.634,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.792,1.619,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.045,0.494,0]},"t":8,"s":[61.805,70.187,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.073,0]},"t":9,"s":[87.307,64.612,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.68,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.12,-0.436,0]},"t":10,"s":[125.487,111.62,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.883,-3.054,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,-0.938,0]},"t":11,"s":[109.816,104.073,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.123,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.289,0.085,0]},"t":12,"s":[65.323,104.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,1.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.05,-0.013,0]},"t":13,"s":[47.252,134.038,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.754,0.996,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.445,0.017,0]},"t":14,"s":[91.917,108.765,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,0.782,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.126,-0.004,0]},"t":15,"s":[102.196,140.322,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.598,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.059,0.135,0]},"t":16,"s":[122.314,110.374,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,0.983,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.105,-0.179,0]},"t":17,"s":[110.56,62.157,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.992,0.811,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.102,-0.022,0]},"t":18,"s":[65.661,77.47,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.964,1.174,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.009,0.149,0]},"t":19,"s":[85.871,65.321,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.389,0.889,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.062,0.056,0]},"t":20,"s":[67.714,49.917,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.983,1.088,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.335,0]},"t":21,"s":[78.115,97.527,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.021,0.043,0]},"t":22,"s":[143.974,113.298,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.034,0.01,0]},"t":23,"s":[91.205,80.878,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.004,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,0.012,0]},"t":24,"s":[128.534,117.961,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,0.878,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.004,-0.04,0]},"t":25,"s":[81.833,74.831,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.701,1.076,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.245,0.261,0]},"t":26,"s":[130.604,103.951,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.848,0.884,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.04,0]},"t":27,"s":[118.24,117.585,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,1.085,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.185,0.297,0]},"t":28,"s":[86.185,91.54,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.239,1.079,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.857,0.042,0]},"t":29,"s":[59.806,81.372,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.06,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,0.041,0]},"t":30,"s":[62.144,101.879,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,1.073,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.035,-1.454,0]},"t":31,"s":[25.053,61.948,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.113,0.614,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.64,0.039,0]},"t":32,"s":[88.839,64.113,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.878,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.048,0.106,0]},"t":33,"s":[98.389,60.046,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.973,1.366,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.265,-0.316,0]},"t":34,"s":[75.918,45.28,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.487,0.892,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.04,0.068,0]},"t":35,"s":[65.601,48.361,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.02,1.735,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.1,0.366,0]},"t":36,"s":[72.571,31.73,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.839,1.002,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,0.075,0]},"t":37,"s":[108.482,26.833,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,0.884,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.173,0.002,0]},"t":38,"s":[64.065,74.946,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.807,1.122,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.226,0.296,0]},"t":39,"s":[22.794,25.686,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.039,1.029,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.147,0.05,0]},"t":40,"s":[33.918,6.407,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,0.021,0]},"t":41,"s":[48.539,53.893,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.843,1.001,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.114,-0.046,0]},"t":42,"s":[27.022,-9.839,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.415,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.001,0]},"t":43,"s":[36.118,31.361,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.042,0.504,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,-0.476,0]},"t":44,"s":[44.181,-10.557,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.028,0.1,0]},"t":45,"s":[-4.037,-4.307,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.945,0.884,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.027,0.248,0]},"t":46,"s":[68.255,26.661,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.863,0.961,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.164,0.298,0]},"t":47,"s":[13.766,42.343,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.171,-1.3,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.213,-0.072,0]},"t":48,"s":[32.121,48.441,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.056,0.086,0]},"t":49,"s":[43.941,45.171,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.907,0.82,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.238,-0.116,0]},"t":50,"s":[7.866,-41.801,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.765,0.908,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.767,0.155,0]},"t":51,"s":[17.231,-5.411,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,0.772,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.087,0.843,0]},"t":52,"s":[18.373,36.907,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.047,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.066,0.131,0]},"t":53,"s":[41.417,41.547,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.142,1.256,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,-0.64,0]},"t":54,"s":[28.526,49.618,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.933,1.594,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.053,0.063,0]},"t":55,"s":[48.627,48.688,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.344,0.073,0]},"t":56,"s":[-5.742,52.477,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,1.011,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,-0.017,0]},"t":57,"s":[4.853,21.683,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.082,0.01,0]},"t":58,"s":[15.758,47.142,100]},{"t":59,"s":[10.26,18.203,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":60,"st":4,"bm":0},{"ddd":0,"ind":27,"ty":4,"nm":"Shape Layer 25","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[100]},{"t":53,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.59},"o":{"x":0.167,"y":0.167},"t":10,"s":[269.753,298.518,0],"to":[0.371,-0.157,0],"ti":[-1.794,0.84,0]},{"i":{"x":0.833,"y":0.764},"o":{"x":0.167,"y":0.105},"t":11,"s":[271.976,297.574,0],"to":[1.794,-0.84,0],"ti":[-3.913,2.158,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":12,"s":[280.516,293.478,0],"to":[3.913,-2.158,0],"ti":[-5.148,3.28,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":13,"s":[295.452,284.625,0],"to":[5.148,-3.28,0],"ti":[-4.973,3.376,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":14,"s":[311.406,273.799,0],"to":[4.973,-3.376,0],"ti":[-4.286,2.798,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":15,"s":[325.289,264.369,0],"to":[4.286,-2.798,0],"ti":[-3.685,2.155,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":16,"s":[337.123,257.014,0],"to":[3.685,-2.155,0],"ti":[-3.222,1.625,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":17,"s":[347.398,251.439,0],"to":[3.222,-1.625,0],"ti":[-2.85,1.213,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":18,"s":[356.453,247.262,0],"to":[2.85,-1.213,0],"ti":[-2.541,0.896,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":19,"s":[364.5,244.163,0],"to":[2.541,-0.896,0],"ti":[-2.276,0.656,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":20,"s":[371.696,241.885,0],"to":[2.276,-0.656,0],"ti":[-2.047,0.474,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":21,"s":[378.157,240.228,0],"to":[2.047,-0.474,0],"ti":[-1.845,0.337,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":22,"s":[383.976,239.042,0],"to":[1.845,-0.337,0],"ti":[-1.666,0.235,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":23,"s":[389.227,238.206,0],"to":[1.666,-0.235,0],"ti":[-1.505,0.161,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":24,"s":[393.971,237.63,0],"to":[1.505,-0.161,0],"ti":[-1.361,0.108,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":25,"s":[398.259,237.241,0],"to":[1.361,-0.108,0],"ti":[-1.229,0.074,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":26,"s":[402.134,236.98,0],"to":[1.229,-0.074,0],"ti":[-1.111,0.051,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":27,"s":[405.636,236.799,0],"to":[1.111,-0.051,0],"ti":[-1.01,0.021,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":28,"s":[408.801,236.672,0],"to":[1.01,-0.021,0],"ti":[-0.926,-0.021,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":29,"s":[411.696,236.673,0],"to":[0.926,0.021,0],"ti":[-0.853,-0.06,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":30,"s":[414.357,236.801,0],"to":[0.853,0.06,0],"ti":[-0.787,-0.092,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":31,"s":[416.812,237.033,0],"to":[0.787,0.092,0],"ti":[-0.729,-0.118,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":32,"s":[419.082,237.352,0],"to":[0.729,0.118,0],"ti":[-0.677,-0.139,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":33,"s":[421.188,237.741,0],"to":[0.677,0.139,0],"ti":[-0.631,-0.156,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":34,"s":[423.146,238.187,0],"to":[0.631,0.156,0],"ti":[-0.589,-0.169,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":35,"s":[424.973,238.678,0],"to":[0.589,0.169,0],"ti":[-0.552,-0.179,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":36,"s":[426.682,239.204,0],"to":[0.552,0.179,0],"ti":[-0.518,-0.186,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":37,"s":[428.285,239.754,0],"to":[0.518,0.186,0],"ti":[-0.488,-0.19,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":38,"s":[429.793,240.32,0],"to":[0.488,0.19,0],"ti":[-0.46,-0.192,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":39,"s":[431.212,240.895,0],"to":[0.46,0.192,0],"ti":[-0.433,-0.191,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":40,"s":[432.55,241.471,0],"to":[0.433,0.191,0],"ti":[-0.408,-0.188,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":41,"s":[433.811,242.041,0],"to":[0.408,0.188,0],"ti":[-0.384,-0.184,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":42,"s":[434.998,242.6,0],"to":[0.384,0.184,0],"ti":[-0.36,-0.177,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":43,"s":[436.114,243.143,0],"to":[0.36,0.177,0],"ti":[-0.337,-0.169,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":44,"s":[437.16,243.663,0],"to":[0.337,0.169,0],"ti":[-0.314,-0.159,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":45,"s":[438.136,244.156,0],"to":[0.314,0.159,0],"ti":[-0.29,-0.148,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":46,"s":[439.041,244.617,0],"to":[0.29,0.148,0],"ti":[-0.265,-0.135,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":47,"s":[439.873,245.043,0],"to":[0.265,0.135,0],"ti":[-0.239,-0.121,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":48,"s":[440.629,245.429,0],"to":[0.239,0.121,0],"ti":[-0.211,-0.106,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.179},"t":49,"s":[441.306,245.771,0],"to":[0.211,0.106,0],"ti":[-0.188,-0.091,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.176},"t":50,"s":[441.897,246.067,0],"to":[0.188,0.091,0],"ti":[-0.176,-0.076,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":51,"s":[442.436,246.318,0],"to":[0.176,0.076,0],"ti":[-0.167,-0.062,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.174},"t":52,"s":[442.952,246.526,0],"to":[0.167,0.062,0],"ti":[-0.154,-0.046,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.177},"t":53,"s":[443.435,246.688,0],"to":[0.154,0.046,0],"ti":[-0.137,-0.029,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.181},"t":54,"s":[443.874,246.8,0],"to":[0.137,0.029,0],"ti":[-0.117,-0.011,0]},{"i":{"x":0.833,"y":0.853},"o":{"x":0.167,"y":0.186},"t":55,"s":[444.258,246.86,0],"to":[0.117,0.011,0],"ti":[-0.092,0.008,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.192},"t":56,"s":[444.574,246.866,0],"to":[0.092,-0.008,0],"ti":[-0.065,0.028,0]},{"i":{"x":0.833,"y":0.809},"o":{"x":0.167,"y":0.188},"t":57,"s":[444.81,246.814,0],"to":[0.065,-0.028,0],"ti":[-0.052,0.051,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.148},"t":58,"s":[444.965,246.7,0],"to":[0.052,-0.051,0],"ti":[-0.027,0.032,0]},{"t":59,"s":[445.124,246.509,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":10,"s":[110.669,116.358,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.04,0.96,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.239,0.011,0]},"t":11,"s":[59.779,98.507,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,1.168,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,-0.078,0]},"t":12,"s":[32.558,118.992,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.283,0.983,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.327,0.056,0]},"t":13,"s":[72.99,108.43,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,0.749,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,-0.022,0]},"t":14,"s":[64.776,140.246,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.471,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.643,0.125,0]},"t":15,"s":[100.849,115.061,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,-0.015,0]},"t":16,"s":[106.224,64.521,100]},{"i":{"x":[0.833,0.833,0.833],"y":[7.839,0.661,1]},"o":{"x":[0.167,0.167,0.167],"y":[-10.254,-0.119,0]},"t":17,"s":[70.46,107.342,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.07,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.082,0.111,0]},"t":18,"s":[70.749,89.722,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,0.875,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,-0.015,0]},"t":19,"s":[46.798,35.679,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.002,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.249,0]},"t":20,"s":[90.882,81.249,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,1.169,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.002,-0.177,0]},"t":21,"s":[140.894,104.127,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.056,1.071,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.196,0.056,0]},"t":22,"s":[89.564,96.8,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.972,0.871,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.034,0.038,0]},"t":23,"s":[104.901,119.028,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.839,1.124,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.041,0.236,0]},"t":24,"s":[79.173,77.868,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.075,0.964,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.172,0.05,0]},"t":25,"s":[96.359,55.376,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.864,0.984,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,-0.064,0]},"t":26,"s":[112.425,111.326,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.964,0.96,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.216,-0.02,0]},"t":27,"s":[81.872,79.606,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.136,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.063,-0.076,0]},"t":28,"s":[62.674,105.212,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.04,0.329,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,0.758,0]},"t":29,"s":[73.611,91.797,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,0.991,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,0.095,0]},"t":30,"s":[44.883,90.141,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.864,1.007,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.445,-0.009,0]},"t":31,"s":[87.448,78.456,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.687,0.817,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.216,0.007,0]},"t":32,"s":[97.261,88.946,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.172,0.78,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,0.153,0]},"t":33,"s":[103.41,77.55,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.025,0.995,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.056,0.134,0]},"t":34,"s":[120.354,63.853,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,0.776,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.019,-0.005,0]},"t":35,"s":[68.478,41.315,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.781,1.002,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.226,0.133,0]},"t":36,"s":[135.85,62.489,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.836,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,0.002,0]},"t":37,"s":[117.729,98.108,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.955,0.732,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.17,0.45,0]},"t":38,"s":[88.261,61.749,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.161,0.879,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.097,0.121,0]},"t":39,"s":[59.775,53.492,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.268,0]},"t":40,"s":[72.912,35.197,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.014,1.011,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.932,0.009,0]},"t":41,"s":[34.35,26.941,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.166,0.799,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,0.01,0]},"t":42,"s":[35.945,36.212,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.01,1.008,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.142,0]},"t":43,"s":[53.22,25.739,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.804,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.009,0.007,0]},"t":44,"s":[1.613,10.927,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.916,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.054,0.145,0]},"t":45,"s":[59.191,27.12,100]},{"i":{"x":[0.833,0.833,0.833],"y":[32.334,1.954,1]},"o":{"x":[0.167,0.167,0.167],"y":[28.082,-2.647,0]},"t":46,"s":[24.376,49.1,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,1.605,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,0.077,0]},"t":47,"s":[24.272,48.429,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.914,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.066,0.073,0]},"t":48,"s":[63.337,56.778,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.402,1.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.325,2.783,0]},"t":49,"s":[41.555,-12.234,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.891,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,0.076,0]},"t":50,"s":[40.094,-14.365,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.348,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.357,0.224,0]},"t":51,"s":[16.969,11.25,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.893,1.059,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,-0.033,0]},"t":52,"s":[9.934,26.464,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.223,1.041,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.372,0.034,0]},"t":53,"s":[46.338,15.586,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.949,0.977,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,0.028,0]},"t":54,"s":[56.833,34.129,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.807,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.133,-0.032,0]},"t":55,"s":[18.206,6.413,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.098,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.239,0.147,0]},"t":56,"s":[33.108,26.401,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.855,-124.032,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,-45.948,0]},"t":57,"s":[41.083,52.674,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.195,0.083,0]},"t":58,"s":[23.746,52.627,100]},{"t":59,"s":[10.82,-18.691,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":60,"st":10,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":"Shape Layer 24","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":34,"s":[100]},{"t":50,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.604},"o":{"x":0.167,"y":0.167},"t":7,"s":[265.04,301.431,0],"to":[-0.341,-0.143,0],"ti":[1.527,0.877,0]},{"i":{"x":0.833,"y":0.765},"o":{"x":0.167,"y":0.106},"t":8,"s":[262.993,300.574,0],"to":[-1.527,-0.877,0],"ti":[3.095,2.404,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":9,"s":[255.881,296.17,0],"to":[-3.095,-2.404,0],"ti":[3.636,3.902,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":10,"s":[244.425,286.149,0],"to":[-3.636,-3.902,0],"ti":[2.978,4.369,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.178},"t":11,"s":[234.064,272.758,0],"to":[-2.978,-4.369,0],"ti":[2.214,3.975,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":12,"s":[226.554,259.936,0],"to":[-2.214,-3.975,0],"ti":[1.769,3.38,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":13,"s":[220.781,248.906,0],"to":[-1.769,-3.38,0],"ti":[1.52,2.839,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":14,"s":[215.943,239.657,0],"to":[-1.52,-2.839,0],"ti":[1.364,2.397,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":15,"s":[211.658,231.874,0],"to":[-1.364,-2.397,0],"ti":[1.247,2.04,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":16,"s":[207.761,225.273,0],"to":[-1.247,-2.04,0],"ti":[1.147,1.749,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":17,"s":[204.179,219.632,0],"to":[-1.147,-1.749,0],"ti":[1.054,1.508,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":18,"s":[200.881,214.781,0],"to":[-1.054,-1.508,0],"ti":[0.966,1.308,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":19,"s":[197.852,210.583,0],"to":[-0.966,-1.308,0],"ti":[0.881,1.139,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":20,"s":[195.083,206.935,0],"to":[-0.881,-1.139,0],"ti":[0.798,0.996,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":21,"s":[192.565,203.748,0],"to":[-0.798,-0.996,0],"ti":[0.718,0.875,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":22,"s":[190.293,200.956,0],"to":[-0.718,-0.875,0],"ti":[0.64,0.771,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":23,"s":[188.258,198.5,0],"to":[-0.64,-0.771,0],"ti":[0.565,0.681,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":24,"s":[186.453,196.332,0],"to":[-0.565,-0.681,0],"ti":[0.494,0.604,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":25,"s":[184.867,194.413,0],"to":[-0.494,-0.604,0],"ti":[0.425,0.537,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":26,"s":[183.491,192.71,0],"to":[-0.425,-0.537,0],"ti":[0.361,0.479,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":27,"s":[182.314,191.193,0],"to":[-0.361,-0.479,0],"ti":[0.301,0.428,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":28,"s":[181.325,189.838,0],"to":[-0.301,-0.428,0],"ti":[0.244,0.384,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":29,"s":[180.511,188.625,0],"to":[-0.244,-0.384,0],"ti":[0.192,0.346,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":30,"s":[179.859,187.534,0],"to":[-0.192,-0.346,0],"ti":[0.145,0.312,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":31,"s":[179.357,186.551,0],"to":[-0.145,-0.312,0],"ti":[0.103,0.284,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":32,"s":[178.99,185.66,0],"to":[-0.103,-0.284,0],"ti":[0.066,0.259,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.177},"t":33,"s":[178.741,184.85,0],"to":[-0.066,-0.259,0],"ti":[0.034,0.238,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":34,"s":[178.596,184.107,0],"to":[-0.034,-0.238,0],"ti":[0.008,0.219,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":35,"s":[178.536,183.424,0],"to":[-0.008,-0.219,0],"ti":[-0.011,0.204,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":36,"s":[178.545,182.791,0],"to":[0.011,-0.204,0],"ti":[-0.025,0.191,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":37,"s":[178.604,182.2,0],"to":[0.025,-0.191,0],"ti":[-0.033,0.18,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":38,"s":[178.696,181.645,0],"to":[0.033,-0.18,0],"ti":[-0.033,0.171,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":39,"s":[178.8,181.121,0],"to":[0.033,-0.171,0],"ti":[-0.027,0.163,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.171},"t":40,"s":[178.897,180.622,0],"to":[0.027,-0.163,0],"ti":[-0.014,0.157,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.17},"t":41,"s":[178.964,180.143,0],"to":[0.014,-0.157,0],"ti":[-0.002,0.154,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.167},"t":42,"s":[178.981,179.68,0],"to":[0.002,-0.154,0],"ti":[-0.011,0.158,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":43,"s":[178.978,179.217,0],"to":[0.011,-0.158,0],"ti":[-0.033,0.162,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"t":44,"s":[179.048,178.732,0],"to":[0.033,-0.162,0],"ti":[-0.051,0.161,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.166},"t":45,"s":[179.179,178.243,0],"to":[0.051,-0.161,0],"ti":[-0.064,0.155,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":46,"s":[179.355,177.765,0],"to":[0.064,-0.155,0],"ti":[-0.069,0.148,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":47,"s":[179.564,177.312,0],"to":[0.069,-0.148,0],"ti":[-0.061,0.142,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":48,"s":[179.767,176.879,0],"to":[0.061,-0.142,0],"ti":[-0.046,0.136,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.174},"t":49,"s":[179.929,176.457,0],"to":[0.046,-0.136,0],"ti":[-0.028,0.126,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.177},"t":50,"s":[180.041,176.061,0],"to":[0.028,-0.126,0],"ti":[-0.009,0.113,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.18},"t":51,"s":[180.098,175.7,0],"to":[0.009,-0.113,0],"ti":[0.012,0.096,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.181},"t":52,"s":[180.095,175.385,0],"to":[-0.012,-0.096,0],"ti":[0.034,0.077,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.176},"t":53,"s":[180.027,175.124,0],"to":[-0.034,-0.077,0],"ti":[0.057,0.055,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.166},"t":54,"s":[179.891,174.924,0],"to":[-0.057,-0.055,0],"ti":[0.08,0.032,0]},{"i":{"x":0.833,"y":0.815},"o":{"x":0.167,"y":0.156},"t":55,"s":[179.687,174.792,0],"to":[-0.08,-0.032,0],"ti":[0.103,0.008,0]},{"i":{"x":0.833,"y":0.815},"o":{"x":0.167,"y":0.152},"t":56,"s":[179.413,174.732,0],"to":[-0.103,-0.008,0],"ti":[0.125,-0.018,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.152},"t":57,"s":[179.07,174.747,0],"to":[-0.125,0.018,0],"ti":[0.147,-0.043,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.153},"t":58,"s":[178.66,174.838,0],"to":[-0.147,0.043,0],"ti":[0.079,-0.028,0]},{"t":59,"s":[178.187,175.006,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.856,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":7,"s":[67.557,101.258,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,0.856,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.076,-0.033,0]},"t":8,"s":[62.081,60.567,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.899,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.062,0.197,0]},"t":9,"s":[123.801,89.604,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.652,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.485,0,0]},"t":10,"s":[88.344,110.822,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.902,1.594,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.11,1.18,0]},"t":11,"s":[80.981,89.674,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.494,0.831,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.569,0.073,0]},"t":12,"s":[57.576,88.067,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.815,1.117,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.164,0]},"t":13,"s":[53.56,101.12,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.152,0.049,0]},"t":14,"s":[81.37,114.583,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,-0.011,0]},"t":15,"s":[115.142,82.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.154,1.445,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.235,0.491,0]},"t":16,"s":[67.083,110.768,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.037,0.85,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.07,0]},"t":17,"s":[79.677,116.611,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,1.062,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.026,0.187,0]},"t":18,"s":[43.885,79.546,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.972,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.301,0.035,0]},"t":19,"s":[95.707,49.721,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.783,0.41,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.043,0.938,0]},"t":20,"s":[115.579,101.629,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.957,0.995,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,0.097,0]},"t":21,"s":[102.439,106.687,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.875,0.793,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.087,-0.005,0]},"t":22,"s":[81.407,137.444,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.844,0.981,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.25,0.14,0]},"t":23,"s":[91.687,108.575,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.4,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.178,-0.024,0]},"t":24,"s":[96.813,65.889,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,1.015,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.009,0]},"t":25,"s":[101.302,98.9,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.186,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.902,0.013,0]},"t":26,"s":[75.267,62.121,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,0.887,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,0.724,0]},"t":27,"s":[77.47,105.409,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.167,2.294,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.393,0.315,0]},"t":28,"s":[70.35,111.04,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.394,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.056,0.078,0]},"t":29,"s":[68.432,113.069,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,1.578,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.097,1.095,0]},"t":30,"s":[74.202,79.548,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,0.073,0]},"t":31,"s":[110.376,76.788,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,0.748,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.029,-0.029,0]},"t":32,"s":[74.587,98.699,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.005,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.125,0]},"t":33,"s":[101.235,82.443,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,1.096,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.004,0.401,0]},"t":34,"s":[51.784,49.555,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.916,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.43,0.045,0]},"t":35,"s":[103.982,40.922,100]},{"i":{"x":[0.833,0.833,0.833],"y":[22.316,1.143,1]},"o":{"x":[0.167,0.167,0.167],"y":[6.077,-0.023,0]},"t":36,"s":[116.519,59.525,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.868,1.051,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,0.053,0]},"t":37,"s":[116.693,44.996,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.915,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.226,0.031,0]},"t":38,"s":[71.936,84.414,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.19,1.045,1]},"o":{"x":[0.167,0.167,0.167],"y":[4.525,-0.385,0]},"t":39,"s":[45.732,21.041,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.945,0.893,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.09,0.029,0]},"t":40,"s":[45.24,32.32,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.147,0.824,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.16,0.379,0]},"t":41,"s":[38.713,14.915,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.02,0.834,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,0.158,0]},"t":42,"s":[40.945,10.011,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.96,1.294,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,0.167,0]},"t":43,"s":[7.998,4.532,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.811,0.925,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.078,0.065,0]},"t":44,"s":[48.948,-0.907,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,2.089,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.149,-0.765,0]},"t":45,"s":[27.778,23.742,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.789,1.036,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.033,0.077,0]},"t":46,"s":[0.947,21.32,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.138,0.025,0]},"t":47,"s":[20.246,55.394,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.839,1.071,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.317,0.568,0]},"t":48,"s":[49.89,6.617,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.533,0.903,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.173,0.038,0]},"t":49,"s":[43.72,-1.776,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,1.723,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.101,0.578,0]},"t":50,"s":[37.975,13.785,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.517,1.043,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.234,0.075,0]},"t":51,"s":[11.499,16.406,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.101,0.028,0]},"t":52,"s":[18.462,-8.949,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.022,0.904,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.068,-0.031,0]},"t":53,"s":[51.821,29.36,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.996,1.698,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,0.617,0]},"t":54,"s":[33.392,1.359,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.888,0.865,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.004,0.074,0]},"t":55,"s":[56.645,-3.016,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.486,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.324,0.219,0]},"t":56,"s":[34.461,37.994,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.009,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,-0.018,0]},"t":57,"s":[26.772,63.226,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.008,0.247,0]},"t":58,"s":[-12.998,42.488,100]},{"t":59,"s":[31.14,31.954,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":60,"st":7,"bm":0},{"ddd":0,"ind":29,"ty":4,"nm":"Shape Layer 23","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100]},{"t":48,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.598},"o":{"x":0.167,"y":0.167},"t":5,"s":[261.789,302.009,0],"to":[-0.181,-0.464,0],"ti":[0.71,2.293,0]},{"i":{"x":0.833,"y":0.765},"o":{"x":0.167,"y":0.105},"t":6,"s":[260.702,299.226,0],"to":[-0.71,-2.293,0],"ti":[1.003,5.268,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":7,"s":[257.531,288.249,0],"to":[-1.003,-5.268,0],"ti":[0.104,7.272,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":8,"s":[254.686,267.621,0],"to":[-0.104,-7.272,0],"ti":[-1.513,7.003,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":9,"s":[256.909,244.618,0],"to":[1.513,-7.003,0],"ti":[-2.58,5.598,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":10,"s":[263.763,225.603,0],"to":[2.58,-5.598,0],"ti":[-2.89,4.322,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":11,"s":[272.387,211.032,0],"to":[2.89,-4.322,0],"ti":[-2.817,3.434,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":12,"s":[281.103,199.67,0],"to":[2.817,-3.434,0],"ti":[-2.604,2.843,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":13,"s":[289.287,190.426,0],"to":[2.604,-2.843,0],"ti":[-2.352,2.444,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":14,"s":[296.729,182.612,0],"to":[2.352,-2.444,0],"ti":[-2.098,2.172,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":15,"s":[303.402,175.762,0],"to":[2.098,-2.172,0],"ti":[-1.847,1.982,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":16,"s":[309.316,169.581,0],"to":[1.847,-1.982,0],"ti":[-1.599,1.847,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[314.483,163.871,0],"to":[1.599,-1.847,0],"ti":[-1.351,1.749,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[318.909,158.499,0],"to":[1.351,-1.749,0],"ti":[-1.1,1.67,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[322.589,153.379,0],"to":[1.1,-1.67,0],"ti":[-0.847,1.597,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":20,"s":[325.509,148.477,0],"to":[0.847,-1.597,0],"ti":[-0.598,1.514,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":21,"s":[327.669,143.798,0],"to":[0.598,-1.514,0],"ti":[-0.368,1.415,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":22,"s":[329.098,139.39,0],"to":[0.368,-1.415,0],"ti":[-0.17,1.301,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":23,"s":[329.877,135.307,0],"to":[0.17,-1.301,0],"ti":[-0.012,1.178,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":24,"s":[330.12,131.586,0],"to":[0.012,-1.178,0],"ti":[0.108,1.057,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":25,"s":[329.95,128.236,0],"to":[-0.108,-1.057,0],"ti":[0.197,0.942,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[329.473,125.245,0],"to":[-0.197,-0.942,0],"ti":[0.245,0.841,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[328.77,122.586,0],"to":[-0.245,-0.841,0],"ti":[0.252,0.756,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":28,"s":[328.003,120.201,0],"to":[-0.252,-0.756,0],"ti":[0.241,0.68,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":29,"s":[327.259,118.051,0],"to":[-0.241,-0.68,0],"ti":[0.227,0.611,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":30,"s":[326.555,116.118,0],"to":[-0.227,-0.611,0],"ti":[0.211,0.546,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":31,"s":[325.898,114.387,0],"to":[-0.211,-0.546,0],"ti":[0.196,0.484,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":32,"s":[325.288,112.845,0],"to":[-0.196,-0.484,0],"ti":[0.183,0.426,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":33,"s":[324.72,111.482,0],"to":[-0.183,-0.426,0],"ti":[0.173,0.371,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":34,"s":[324.187,110.287,0],"to":[-0.173,-0.371,0],"ti":[0.164,0.318,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":35,"s":[323.684,109.255,0],"to":[-0.164,-0.318,0],"ti":[0.159,0.267,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.18},"t":36,"s":[323.201,108.379,0],"to":[-0.159,-0.267,0],"ti":[0.156,0.217,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.18},"t":37,"s":[322.731,107.655,0],"to":[-0.156,-0.217,0],"ti":[0.154,0.168,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":38,"s":[322.267,107.078,0],"to":[-0.154,-0.168,0],"ti":[0.155,0.121,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.179},"t":39,"s":[321.804,106.645,0],"to":[-0.155,-0.121,0],"ti":[0.157,0.075,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.175},"t":40,"s":[321.338,106.352,0],"to":[-0.157,-0.075,0],"ti":[0.16,0.031,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.169},"t":41,"s":[320.863,106.193,0],"to":[-0.16,-0.031,0],"ti":[0.165,-0.011,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.163},"t":42,"s":[320.376,106.164,0],"to":[-0.165,0.011,0],"ti":[0.169,-0.052,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.16},"t":43,"s":[319.875,106.261,0],"to":[-0.169,0.052,0],"ti":[0.172,-0.092,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.158},"t":44,"s":[319.363,106.479,0],"to":[-0.172,0.092,0],"ti":[0.18,-0.125,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.158},"t":45,"s":[318.841,106.814,0],"to":[-0.18,0.125,0],"ti":[0.197,-0.144,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.159},"t":46,"s":[318.282,107.227,0],"to":[-0.197,0.144,0],"ti":[0.217,-0.157,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":47,"s":[317.66,107.68,0],"to":[-0.217,0.157,0],"ti":[0.233,-0.168,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":48,"s":[316.983,108.169,0],"to":[-0.233,0.168,0],"ti":[0.246,-0.177,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.163},"t":49,"s":[316.262,108.687,0],"to":[-0.246,0.177,0],"ti":[0.254,-0.183,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"t":50,"s":[315.509,109.229,0],"to":[-0.254,0.183,0],"ti":[0.259,-0.188,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":51,"s":[314.735,109.788,0],"to":[-0.259,0.188,0],"ti":[0.258,-0.189,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.167},"t":52,"s":[313.957,110.355,0],"to":[-0.258,0.189,0],"ti":[0.251,-0.187,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.169},"t":53,"s":[313.19,110.921,0],"to":[-0.251,0.187,0],"ti":[0.238,-0.182,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":54,"s":[312.452,111.477,0],"to":[-0.238,0.182,0],"ti":[0.219,-0.173,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.174},"t":55,"s":[311.761,112.011,0],"to":[-0.219,0.173,0],"ti":[0.192,-0.16,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.178},"t":56,"s":[311.139,112.513,0],"to":[-0.192,0.16,0],"ti":[0.164,-0.143,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":57,"s":[310.606,112.97,0],"to":[-0.164,0.143,0],"ti":[0.139,-0.125,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.181},"t":58,"s":[310.154,113.373,0],"to":[-0.139,0.125,0],"ti":[0.064,-0.057,0]},{"t":59,"s":[309.77,113.717,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.657,0.977,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":5,"s":[122.178,94.449,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.995,0.673,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.11,-0.032,0]},"t":6,"s":[102.174,113.837,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.918,0.997,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.005,0.112,0]},"t":7,"s":[39.796,99.783,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.373,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[-5.85,-0.003,0]},"t":8,"s":[98.461,58.708,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,-0.182,0]},"t":9,"s":[97.637,98.226,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.861,-0.461,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,2.089,0]},"t":10,"s":[121.922,85.826,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,1.17,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.208,0.088,0]},"t":11,"s":[95.646,85.311,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.37,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.109,0.056,0]},"t":12,"s":[78.043,76.794,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.019,1.331,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,1.985,0]},"t":13,"s":[85.681,102.643,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,1.177,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,0.067,0]},"t":14,"s":[135.804,103.775,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.12,0.057,0]},"t":15,"s":[74.18,98.145,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.067,2.296,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.019,0.418,0]},"t":16,"s":[99.49,115.703,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,0.078,0]},"t":17,"s":[78.946,120.079,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.978,0.68,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,-0.197,0]},"t":18,"s":[115.943,47.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.04,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.029,0.113,0]},"t":19,"s":[90.116,69.173,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.011,1.066,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,0.387,0]},"t":20,"s":[109.209,130.363,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.972,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.01,0.037,0]},"t":21,"s":[80.945,147.149,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.048,0.791,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.043,0.733,0]},"t":22,"s":[112.856,117.083,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.002,0.619,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,0.139,0]},"t":23,"s":[91.758,113.226,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.913,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.002,0.107,0]},"t":24,"s":[124.953,107.402,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.03,0.669,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.871,-0.086,0]},"t":25,"s":[90.896,86.565,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.06,0.86,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,0.111,0]},"t":26,"s":[89.309,96.814,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.994,1.197,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.035,0.207,0]},"t":27,"s":[71.266,127.218,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.064,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.007,0.059,0]},"t":28,"s":[102.251,147.752,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.023,1.152,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,1.009,0]},"t":29,"s":[73.55,78.754,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.89,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.018,0.054,0]},"t":30,"s":[124.448,72.546,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,-191.097,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.347,-188.615,0]},"t":31,"s":[59.508,90.091,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.122,0.759,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.254,0.083,0]},"t":32,"s":[39,90.083,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,0.127,0]},"t":33,"s":[44.062,72.23,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.05,0.825,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.262,-1.141,0]},"t":34,"s":[92.349,38.4,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.058,-0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,0.159,0]},"t":35,"s":[80.711,40.702,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.034,0.087,0]},"t":36,"s":[99.332,43.228,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.945,0.925,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.238,-0.08,0]},"t":37,"s":[67.744,96.178,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.837,1.576,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.16,-0.761,0]},"t":38,"s":[50.721,69.109,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.787,0.792,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.171,0.073,0]},"t":39,"s":[56.555,71.779,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.453,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.137,0.139,0]},"t":40,"s":[62.129,50.654,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,0.889,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,0.169,0]},"t":41,"s":[70.779,19.084,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.921,1.022,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.02,0.334,0]},"t":42,"s":[15.062,-11.663,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.296,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.554,0.018,0]},"t":43,"s":[59.871,-21.902,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,1.249,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,-0.012,0]},"t":44,"s":[57.59,-8.938,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.049,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,0.062,0]},"t":45,"s":[24.406,-20.323,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.841,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,-0.187,0]},"t":46,"s":[-6.116,25.019,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,1.089,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.626,0.175,0]},"t":47,"s":[42.39,11.059,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.274,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,0.043,0]},"t":48,"s":[45.011,-1.68,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.577,1.034,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,0.225,0]},"t":49,"s":[42.735,24.617,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.024,0]},"t":50,"s":[52.491,40.139,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.866,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,-0.326,0]},"t":51,"s":[-24.813,18.208,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.149,1.734,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.154,0.22,0]},"t":52,"s":[29.263,22.673,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.047,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,0.075,0]},"t":53,"s":[33.471,25.402,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.891,0.786,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,-0.07,0]},"t":54,"s":[72.245,-1.354,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.815,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.355,0.137,0]},"t":55,"s":[11.503,13.161,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.127,0.918,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.26,0.152,0]},"t":56,"s":[-7.15,35.893,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,-1.79,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,-4.527,0]},"t":57,"s":[-2.619,63.648,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.867,0.086,0]},"t":58,"s":[40.328,63.147,100]},{"t":59,"s":[44.897,46.852,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":60,"st":5,"bm":0},{"ddd":0,"ind":30,"ty":4,"nm":"Shape Layer 22","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":2,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29,"s":[100]},{"t":45,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.555},"o":{"x":0.167,"y":0.167},"t":2,"s":[263.182,299.465,0],"to":[-0.365,0.027,0],"ti":[1.949,-0.179,0]},{"i":{"x":0.833,"y":0.762},"o":{"x":0.167,"y":0.103},"t":3,"s":[260.99,299.63,0],"to":[-1.949,0.179,0],"ti":[4.498,-0.649,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.128},"t":4,"s":[251.489,300.54,0],"to":[-4.498,0.649,0],"ti":[6.073,-1.426,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":5,"s":[234.001,303.526,0],"to":[-6.073,1.426,0],"ti":[5.777,-2.109,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":6,"s":[215.049,309.096,0],"to":[-5.777,2.109,0],"ti":[4.639,-2.46,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":7,"s":[199.338,316.18,0],"to":[-4.639,2.46,0],"ti":[3.563,-2.581,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":8,"s":[187.213,323.857,0],"to":[-3.563,2.581,0],"ti":[2.716,-2.584,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":9,"s":[177.957,331.668,0],"to":[-2.716,2.584,0],"ti":[2.065,-2.517,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":10,"s":[170.915,339.358,0],"to":[-2.065,2.517,0],"ti":[1.564,-2.411,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":11,"s":[165.569,346.772,0],"to":[-1.564,2.411,0],"ti":[1.165,-2.278,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":12,"s":[161.531,353.821,0],"to":[-1.165,2.278,0],"ti":[0.843,-2.131,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":13,"s":[158.58,360.44,0],"to":[-0.843,2.131,0],"ti":[0.594,-1.982,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":14,"s":[156.475,366.609,0],"to":[-0.594,1.982,0],"ti":[0.404,-1.836,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":15,"s":[155.019,372.333,0],"to":[-0.404,1.836,0],"ti":[0.261,-1.696,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":16,"s":[154.052,377.626,0],"to":[-0.261,1.696,0],"ti":[0.155,-1.565,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":17,"s":[153.453,382.511,0],"to":[-0.155,1.565,0],"ti":[0.078,-1.441,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":18,"s":[153.124,387.013,0],"to":[-0.078,1.441,0],"ti":[0.024,-1.327,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":19,"s":[152.987,391.16,0],"to":[-0.024,1.327,0],"ti":[-0.012,-1.222,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":20,"s":[152.981,394.977,0],"to":[0.012,1.222,0],"ti":[-0.034,-1.124,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":21,"s":[153.059,398.49,0],"to":[0.034,1.124,0],"ti":[-0.044,-1.033,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":22,"s":[153.183,401.72,0],"to":[0.044,1.033,0],"ti":[-0.045,-0.949,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[153.322,404.688,0],"to":[0.045,0.949,0],"ti":[-0.039,-0.87,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[153.452,407.413,0],"to":[0.039,0.87,0],"ti":[-0.028,-0.797,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":25,"s":[153.556,409.91,0],"to":[0.028,0.797,0],"ti":[-0.013,-0.729,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[153.62,412.195,0],"to":[0.013,0.729,0],"ti":[0.005,-0.666,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[153.633,414.284,0],"to":[-0.005,0.666,0],"ti":[0.025,-0.607,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":28,"s":[153.589,416.19,0],"to":[-0.025,0.607,0],"ti":[0.045,-0.552,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[153.484,417.926,0],"to":[-0.045,0.552,0],"ti":[0.066,-0.501,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[153.316,419.502,0],"to":[-0.066,0.501,0],"ti":[0.086,-0.452,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":31,"s":[153.086,420.929,0],"to":[-0.086,0.452,0],"ti":[0.105,-0.407,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":32,"s":[152.797,422.216,0],"to":[-0.105,0.407,0],"ti":[0.122,-0.364,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":33,"s":[152.454,423.37,0],"to":[-0.122,0.364,0],"ti":[0.137,-0.324,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":34,"s":[152.063,424.4,0],"to":[-0.137,0.324,0],"ti":[0.149,-0.286,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":35,"s":[151.631,425.314,0],"to":[-0.149,0.286,0],"ti":[0.157,-0.251,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":36,"s":[151.17,426.118,0],"to":[-0.157,0.251,0],"ti":[0.161,-0.217,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":37,"s":[150.689,426.818,0],"to":[-0.161,0.217,0],"ti":[0.161,-0.186,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":38,"s":[150.202,427.422,0],"to":[-0.161,0.186,0],"ti":[0.156,-0.157,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":39,"s":[149.722,427.936,0],"to":[-0.156,0.157,0],"ti":[0.145,-0.13,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.179},"t":40,"s":[149.266,428.364,0],"to":[-0.145,0.13,0],"ti":[0.13,-0.103,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.184},"t":41,"s":[148.849,428.714,0],"to":[-0.13,0.103,0],"ti":[0.112,-0.075,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.187},"t":42,"s":[148.487,428.98,0],"to":[-0.112,0.075,0],"ti":[0.095,-0.052,0]},{"i":{"x":0.833,"y":0.853},"o":{"x":0.167,"y":0.188},"t":43,"s":[148.176,429.161,0],"to":[-0.095,0.052,0],"ti":[0.076,-0.036,0]},{"i":{"x":0.833,"y":0.858},"o":{"x":0.167,"y":0.193},"t":44,"s":[147.92,429.292,0],"to":[-0.076,0.036,0],"ti":[0.058,-0.02,0]},{"i":{"x":0.833,"y":0.864},"o":{"x":0.167,"y":0.202},"t":45,"s":[147.718,429.375,0],"to":[-0.058,0.02,0],"ti":[0.041,-0.005,0]},{"i":{"x":0.833,"y":0.858},"o":{"x":0.167,"y":0.214},"t":46,"s":[147.57,429.411,0],"to":[-0.041,0.005,0],"ti":[0.024,0.009,0]},{"i":{"x":0.833,"y":0.811},"o":{"x":0.167,"y":0.201},"t":47,"s":[147.473,429.404,0],"to":[-0.024,-0.009,0],"ti":[0.007,0.022,0]},{"i":{"x":0.833,"y":0.791},"o":{"x":0.167,"y":0.149},"t":48,"s":[147.427,429.356,0],"to":[-0.007,-0.022,0],"ti":[-0.008,0.035,0]},{"i":{"x":0.833,"y":0.803},"o":{"x":0.167,"y":0.139},"t":49,"s":[147.429,429.27,0],"to":[0.008,-0.035,0],"ti":[-0.023,0.046,0]},{"i":{"x":0.833,"y":0.812},"o":{"x":0.167,"y":0.144},"t":50,"s":[147.476,429.149,0],"to":[0.023,-0.046,0],"ti":[-0.037,0.056,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.15},"t":51,"s":[147.567,428.995,0],"to":[0.037,-0.056,0],"ti":[-0.05,0.065,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.153},"t":52,"s":[147.698,428.811,0],"to":[0.05,-0.065,0],"ti":[-0.061,0.073,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.156},"t":53,"s":[147.866,428.602,0],"to":[0.061,-0.073,0],"ti":[-0.072,0.08,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.158},"t":54,"s":[148.067,428.371,0],"to":[0.072,-0.08,0],"ti":[-0.081,0.086,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":55,"s":[148.297,428.121,0],"to":[0.081,-0.086,0],"ti":[-0.088,0.09,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":56,"s":[148.552,427.857,0],"to":[0.088,-0.09,0],"ti":[-0.094,0.093,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.163},"t":57,"s":[148.827,427.581,0],"to":[0.094,-0.093,0],"ti":[-0.099,0.094,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":58,"s":[149.118,427.299,0],"to":[0.099,-0.094,0],"ti":[-0.05,0.047,0]},{"t":59,"s":[149.419,427.014,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.986,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":2,"s":[78.01,99.254,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.531,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.017,-0.276,0]},"t":3,"s":[128.233,72.965,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.337,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.687,0.101,0]},"t":4,"s":[86.694,79.056,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.838,1.122,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,0.245,0]},"t":5,"s":[91.188,107.271,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.041,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.172,0.05,0]},"t":6,"s":[68.543,121.799,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.956,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,0.177,0]},"t":7,"s":[47.195,85.924,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.787,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.24,-0.094,0]},"t":8,"s":[79.057,53.992,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.016,0.785,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.137,0.203,0]},"t":9,"s":[95.971,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.013,0.136,0]},"t":10,"s":[122.24,79.447,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.768,0.977,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.111,0.157,0]},"t":11,"s":[91.043,95.99,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.026,0.806,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.13,-0.032,0]},"t":12,"s":[104.449,114.638,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,1.057,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.146,0]},"t":13,"s":[128.392,101.122,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.99,0.907,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,0.034,0]},"t":14,"s":[96.902,83.222,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.026,1.705,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.011,0.803,0]},"t":15,"s":[113.87,113.437,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.96,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.075,0]},"t":16,"s":[98.911,116.933,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.845,1.094,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.077,0.169,0]},"t":17,"s":[118.545,83.843,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.612,0.887,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.18,0.044,0]},"t":18,"s":[108.334,51.632,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.07,1.117,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.106,0.317,0]},"t":19,"s":[99.536,120.079,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.987,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.049,0]},"t":20,"s":[67.373,144.525,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.993,0.851,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.016,-0.19,0]},"t":21,"s":[126.372,85.891,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.008,0.19,0]},"t":22,"s":[76.632,103.785,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.779,0.97,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.349,0.009,0]},"t":23,"s":[122.04,117.809,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.843,1.086,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,-0.046,0]},"t":24,"s":[125.029,102.081,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.135,1.161,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.042,0]},"t":25,"s":[94.09,112.18,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.981,0.983,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,0.055,0]},"t":26,"s":[66.677,91.705,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.885,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.024,-0.021,0]},"t":27,"s":[138.63,151.835,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.1,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.153,0.304,0]},"t":28,"s":[82.794,103.616,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.825,23.963,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,-14.676,0]},"t":29,"s":[102.519,85.419,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.97,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.159,0.083,0]},"t":30,"s":[59.163,85.522,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.781,1.06,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.081,-0.046,0]},"t":31,"s":[11.254,57.108,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.97,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.134,0.035,0]},"t":32,"s":[35.57,75.366,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.047,-0.198,0]},"t":33,"s":[75.263,44.021,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.16,1.441,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.081,-0.038,0]},"t":34,"s":[49.845,53.322,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.019,0.947,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.09,0.07,0]},"t":35,"s":[47.721,46.924,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,-0.142,0]},"t":36,"s":[20.292,87.156,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.992,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.252,-0.131,0]},"t":37,"s":[54.089,72.277,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.683,0.671,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.008,0.009,0]},"t":38,"s":[45.702,78.056,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.156,0.664,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.112,0]},"t":39,"s":[53.33,71.575,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.955,0.899,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.111,0]},"t":40,"s":[74.741,52.442,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.096,0.48,0]},"t":41,"s":[13.206,-5.553,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,1.051,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,-0.015,0]},"t":42,"s":[41.869,-17.736,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.774,1.016,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.027,0.032,0]},"t":43,"s":[71.33,-7.435,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.132,0.013,0]},"t":44,"s":[49.137,-24.086,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.056,0.165,0]},"t":45,"s":[11.219,-4.255,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.797,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.282,-0.239,0]},"t":46,"s":[33.923,16.004,100]},{"i":{"x":[0.833,0.833,0.833],"y":[26.628,1.515,1]},"o":{"x":[0.167,0.167,0.167],"y":[-41.355,0.141,0]},"t":47,"s":[43.431,10.768,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.023,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,0.072,0]},"t":48,"s":[43.412,3.234,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.76,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.077,-0.285,0]},"t":49,"s":[49.311,57.286,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.757,0.888,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.255,0.128,0]},"t":50,"s":[-29.011,45.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.807,1.116,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,0.328,0]},"t":51,"s":[-9.692,22.004,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.012,0.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.147,0.048,0]},"t":52,"s":[27.268,14.157,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.85,0.798,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.01,-0.607,0]},"t":53,"s":[75.93,32.89,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.972,0.796,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.187,0.142,0]},"t":54,"s":[20.351,30.629,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.765,1.805,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.041,0.141,0]},"t":55,"s":[-24.176,27.418,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.129,0.076,0]},"t":56,"s":[5.634,22.754,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.972,0.674,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.092,-0.394,0]},"t":57,"s":[59.79,72.494,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.043,0.112,0]},"t":58,"s":[34.087,63.804,100]},{"t":59,"s":[51.017,38.534,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":2,"op":60,"st":2,"bm":0},{"ddd":0,"ind":31,"ty":4,"nm":"Shape Layer 21","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[100]},{"t":51,"s":[0]}],"ix":11},"r":{"a":0,"k":92,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.611},"o":{"x":0.167,"y":0.167},"t":8,"s":[268.269,306.17,0],"to":[0.003,0.494,0],"ti":[-0.124,-2.305,0]},{"i":{"x":0.833,"y":0.766},"o":{"x":0.167,"y":0.106},"t":9,"s":[268.288,309.137,0],"to":[0.124,2.305,0],"ti":[-0.683,-5.046,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.129},"t":10,"s":[269.014,319.997,0],"to":[0.683,5.046,0],"ti":[-1.89,-6.606,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":11,"s":[272.384,339.414,0],"to":[1.89,6.606,0],"ti":[-3.289,-5.823,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.179},"t":12,"s":[280.355,359.634,0],"to":[3.289,5.823,0],"ti":[-4.111,-3.921,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":13,"s":[292.117,374.353,0],"to":[4.111,3.921,0],"ti":[-4.169,-2.298,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":14,"s":[305.021,383.162,0],"to":[4.169,2.298,0],"ti":[-3.808,-1.326,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":15,"s":[317.131,388.142,0],"to":[3.808,1.326,0],"ti":[-3.36,-0.831,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":16,"s":[327.87,391.116,0],"to":[3.36,0.831,0],"ti":[-2.951,-0.601,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":17,"s":[337.294,393.129,0],"to":[2.951,0.601,0],"ti":[-2.599,-0.51,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":18,"s":[345.577,394.723,0],"to":[2.599,0.51,0],"ti":[-2.295,-0.495,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":19,"s":[352.885,396.19,0],"to":[2.295,0.495,0],"ti":[-2.032,-0.524,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[359.349,397.694,0],"to":[2.032,0.524,0],"ti":[-1.8,-0.577,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":21,"s":[365.075,399.331,0],"to":[1.8,0.577,0],"ti":[-1.589,-0.643,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":22,"s":[370.148,401.158,0],"to":[1.589,0.643,0],"ti":[-1.392,-0.71,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[374.61,403.19,0],"to":[1.392,0.71,0],"ti":[-1.21,-0.771,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":24,"s":[378.501,405.417,0],"to":[1.21,0.771,0],"ti":[-1.047,-0.823,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":25,"s":[381.873,407.817,0],"to":[1.047,0.823,0],"ti":[-0.897,-0.852,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.173},"t":26,"s":[384.78,410.354,0],"to":[0.897,0.852,0],"ti":[-0.758,-0.847,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[387.255,412.931,0],"to":[0.758,0.847,0],"ti":[-0.635,-0.817,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":28,"s":[389.33,415.438,0],"to":[0.635,0.817,0],"ti":[-0.53,-0.777,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[391.063,417.835,0],"to":[0.53,0.777,0],"ti":[-0.442,-0.729,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[392.509,420.098,0],"to":[0.442,0.729,0],"ti":[-0.37,-0.677,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":31,"s":[393.717,422.209,0],"to":[0.37,0.677,0],"ti":[-0.311,-0.623,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":32,"s":[394.73,424.158,0],"to":[0.311,0.623,0],"ti":[-0.263,-0.569,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":33,"s":[395.584,425.945,0],"to":[0.263,0.569,0],"ti":[-0.224,-0.517,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":34,"s":[396.309,427.572,0],"to":[0.224,0.517,0],"ti":[-0.192,-0.467,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":35,"s":[396.928,429.046,0],"to":[0.192,0.467,0],"ti":[-0.166,-0.419,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":36,"s":[397.461,430.372,0],"to":[0.166,0.419,0],"ti":[-0.144,-0.373,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":37,"s":[397.921,431.558,0],"to":[0.144,0.373,0],"ti":[-0.125,-0.33,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":38,"s":[398.322,432.612,0],"to":[0.125,0.33,0],"ti":[-0.11,-0.29,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":39,"s":[398.672,433.54,0],"to":[0.11,0.29,0],"ti":[-0.096,-0.253,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":40,"s":[398.98,434.351,0],"to":[0.096,0.253,0],"ti":[-0.085,-0.219,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":41,"s":[399.251,435.056,0],"to":[0.085,0.219,0],"ti":[-0.075,-0.187,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":42,"s":[399.491,435.663,0],"to":[0.075,0.187,0],"ti":[-0.066,-0.157,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.183},"t":43,"s":[399.701,436.178,0],"to":[0.066,0.157,0],"ti":[-0.058,-0.129,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.185},"t":44,"s":[399.886,436.606,0],"to":[0.058,0.129,0],"ti":[-0.05,-0.103,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.188},"t":45,"s":[400.047,436.953,0],"to":[0.05,0.103,0],"ti":[-0.042,-0.078,0]},{"i":{"x":0.833,"y":0.858},"o":{"x":0.167,"y":0.194},"t":46,"s":[400.184,437.223,0],"to":[0.042,0.078,0],"ti":[-0.035,-0.055,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.203},"t":47,"s":[400.3,437.422,0],"to":[0.035,0.055,0],"ti":[-0.029,-0.04,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.183},"t":48,"s":[400.393,437.552,0],"to":[0.029,0.04,0],"ti":[-0.025,-0.04,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.158},"t":49,"s":[400.471,437.661,0],"to":[0.025,0.04,0],"ti":[-0.022,-0.048,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.158},"t":50,"s":[400.541,437.792,0],"to":[0.022,0.048,0],"ti":[-0.019,-0.055,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.159},"t":51,"s":[400.602,437.946,0],"to":[0.019,0.055,0],"ti":[-0.015,-0.062,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.159},"t":52,"s":[400.653,438.122,0],"to":[0.015,0.062,0],"ti":[-0.012,-0.069,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":53,"s":[400.694,438.32,0],"to":[0.012,0.069,0],"ti":[-0.008,-0.076,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":54,"s":[400.724,438.538,0],"to":[0.008,0.076,0],"ti":[-0.004,-0.082,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.161},"t":55,"s":[400.743,438.775,0],"to":[0.004,0.082,0],"ti":[0.001,-0.09,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.157},"t":56,"s":[400.751,439.03,0],"to":[-0.001,0.09,0],"ti":[0.01,-0.102,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.156},"t":57,"s":[400.737,439.316,0],"to":[-0.01,0.102,0],"ti":[0.019,-0.113,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.16},"t":58,"s":[400.693,439.644,0],"to":[-0.019,0.113,0],"ti":[0.011,-0.059,0]},{"t":59,"s":[400.624,439.996,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[-5.266,0.476,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":8,"s":[101.238,48.218,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.994,0.881,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.084,0.099,0]},"t":9,"s":[100.863,56.49,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.87,1.004,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.006,0.279,0]},"t":10,"s":[73.006,100.241,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.716,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.233,0.004,0]},"t":11,"s":[98.954,118.86,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.692,0.993,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.185,0.118,0]},"t":12,"s":[113.422,99.365,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.95,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,-0.008,0]},"t":13,"s":[108.921,52.336,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.185,0.915,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.07,-0.128,0]},"t":14,"s":[96.758,95.263,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.076,1.566,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.057,3.934,0]},"t":15,"s":[103.361,78.328,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.67,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.073,0]},"t":16,"s":[82.062,77.962,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.435,0.477,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.254,0.111,0]},"t":17,"s":[122.901,80.818,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.986,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,0.099,0]},"t":18,"s":[112.827,89.288,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,0.891,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.016,0.009,0]},"t":19,"s":[54.614,133.963,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,1.123,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.871,0.351,0]},"t":20,"s":[103.222,83.744,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.079,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.032,0.05,0]},"t":21,"s":[108.364,68.125,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.812,-0.393,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,2.172,0]},"t":22,"s":[104.662,106.75,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.481,1.162,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.15,0.089,0]},"t":23,"s":[111.862,108.291,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.008,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.055,0]},"t":24,"s":[120.907,132.514,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.892,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,-0.052,0]},"t":25,"s":[59.613,61.164,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,1.094,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.141,0.365,0]},"t":26,"s":[126.782,105.209,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.044,0]},"t":27,"s":[101.882,118.255,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.119,1.091,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.059,0.024,0]},"t":28,"s":[75.979,90.498,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.983,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.049,0.043,0]},"t":29,"s":[91.099,129.32,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,0.878,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.022,-0.118,0]},"t":30,"s":[54.42,48.147,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.036,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.244,0.263,0]},"t":31,"s":[83.4,81.807,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,2.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,1.369,0]},"t":32,"s":[98.473,97.441,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-4.522,1.004,1]},"o":{"x":[0.167,0.167,0.167],"y":[3.172,0.08,0]},"t":33,"s":[76.975,98.454,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,1.005,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.085,0.004,0]},"t":34,"s":[76.395,75.312,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.837,0.918,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.032,0.005,0]},"t":35,"s":[38.536,99.649,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.978,2.101,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.171,-4.786,0]},"t":36,"s":[65.888,73.73,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.051,1.151,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.03,0.077,0]},"t":37,"s":[91.971,74.174,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.063,1.136,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.032,0.054,0]},"t":38,"s":[72.715,67.868,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.933,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,0.052,0]},"t":39,"s":[103.785,85.634,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.65,1.416,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.353,1.245,0]},"t":40,"s":[49.165,38.912,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.946,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.109,0.069,0]},"t":41,"s":[59.594,35.561,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.678,0.628,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.154,-0.156,0]},"t":42,"s":[92.977,55.629,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.983,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.112,0.107,0]},"t":43,"s":[81.252,48.654,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.985,0.899,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,-0.021,0]},"t":44,"s":[47.617,24.458,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,1.627,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.018,0.474,0]},"t":45,"s":[16.653,43.696,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.225,0.074,0]},"t":46,"s":[42.187,47.804,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.962,0.963,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.07,-0.023,0]},"t":47,"s":[35.289,12.804,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.877,0.815,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.077,-0.066,0]},"t":48,"s":[39.035,40.12,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.027,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.257,0.151,0]},"t":49,"s":[-7.944,24.911,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.741,1.341,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.223,0]},"t":50,"s":[-30.445,6.276,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.123,0.067,0]},"t":51,"s":[-0.773,-4.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.692,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.147,0.394,0]},"t":52,"s":[61.907,51.792,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.468,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,-0.024,0]},"t":53,"s":[39.231,67.006,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.829,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.035,0.099,0]},"t":54,"s":[-21.899,55.157,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.981,0.881,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,-0.053,0]},"t":55,"s":[21.199,-8.63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,1.022,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.025,0.276,0]},"t":56,"s":[66.363,30.41,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.882,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.08,0.018,0]},"t":57,"s":[31.738,47.268,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.182,0.283,0]},"t":58,"s":[49.437,25.928,100]},{"t":59,"s":[43.876,17.029,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":60,"st":8,"bm":0},{"ddd":0,"ind":32,"ty":4,"nm":"Shape Layer 20","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":33,"s":[100]},{"t":49,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.574},"o":{"x":0.167,"y":0.167},"t":6,"s":[273.987,258.212,0],"to":[-0.226,0.261,0],"ti":[1.235,-1.262,0]},{"i":{"x":0.833,"y":0.763},"o":{"x":0.167,"y":0.104},"t":7,"s":[272.634,259.781,0],"to":[-1.235,1.262,0],"ti":[3.172,-2.472,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":8,"s":[266.579,265.787,0],"to":[-3.172,2.472,0],"ti":[4.928,-2.338,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":9,"s":[253.605,274.613,0],"to":[-4.928,2.338,0],"ti":[5.281,-0.789,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":10,"s":[237.011,279.814,0],"to":[-5.281,0.789,0],"ti":[4.495,0.772,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":11,"s":[221.916,279.349,0],"to":[-4.495,-0.772,0],"ti":[3.459,1.674,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":12,"s":[210.041,275.183,0],"to":[-3.459,-1.674,0],"ti":[2.573,2.049,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":13,"s":[201.165,269.307,0],"to":[-2.573,-2.049,0],"ti":[1.908,2.132,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":14,"s":[194.6,262.891,0],"to":[-1.908,-2.132,0],"ti":[1.43,2.079,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":15,"s":[189.714,256.512,0],"to":[-1.43,-2.079,0],"ti":[1.088,1.968,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":16,"s":[186.021,250.417,0],"to":[-1.088,-1.968,0],"ti":[0.842,1.835,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[183.185,244.707,0],"to":[-0.842,-1.835,0],"ti":[0.663,1.699,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[180.968,239.407,0],"to":[-0.663,-1.699,0],"ti":[0.532,1.568,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[179.205,234.511,0],"to":[-0.532,-1.568,0],"ti":[0.434,1.443,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":20,"s":[177.777,230,0],"to":[-0.434,-1.443,0],"ti":[0.361,1.326,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":21,"s":[176.6,225.853,0],"to":[-0.361,-1.326,0],"ti":[0.305,1.218,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[175.612,222.043,0],"to":[-0.305,-1.218,0],"ti":[0.263,1.116,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[174.767,218.548,0],"to":[-0.263,-1.116,0],"ti":[0.231,1.022,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":24,"s":[174.033,215.345,0],"to":[-0.231,-1.022,0],"ti":[0.205,0.934,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":25,"s":[173.383,212.416,0],"to":[-0.205,-0.934,0],"ti":[0.185,0.851,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[172.801,209.743,0],"to":[-0.185,-0.851,0],"ti":[0.169,0.773,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[172.273,207.311,0],"to":[-0.169,-0.773,0],"ti":[0.155,0.7,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[171.79,205.104,0],"to":[-0.155,-0.7,0],"ti":[0.143,0.63,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":29,"s":[171.345,203.111,0],"to":[-0.143,-0.63,0],"ti":[0.131,0.565,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":30,"s":[170.934,201.322,0],"to":[-0.131,-0.565,0],"ti":[0.12,0.503,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":31,"s":[170.557,199.723,0],"to":[-0.12,-0.503,0],"ti":[0.109,0.444,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":32,"s":[170.213,198.306,0],"to":[-0.109,-0.444,0],"ti":[0.097,0.389,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":33,"s":[169.903,197.059,0],"to":[-0.097,-0.389,0],"ti":[0.085,0.336,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":34,"s":[169.629,195.974,0],"to":[-0.085,-0.336,0],"ti":[0.07,0.287,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.182},"t":35,"s":[169.396,195.042,0],"to":[-0.07,-0.287,0],"ti":[0.055,0.24,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.185},"t":36,"s":[169.206,194.254,0],"to":[-0.055,-0.24,0],"ti":[0.037,0.195,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.188},"t":37,"s":[169.067,193.604,0],"to":[-0.037,-0.195,0],"ti":[0.018,0.153,0]},{"i":{"x":0.833,"y":0.856},"o":{"x":0.167,"y":0.193},"t":38,"s":[168.983,193.083,0],"to":[-0.018,-0.153,0],"ti":[-0.004,0.114,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.199},"t":39,"s":[168.961,192.685,0],"to":[0.004,-0.114,0],"ti":[-0.028,0.076,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.195},"t":40,"s":[169.007,192.402,0],"to":[0.028,-0.076,0],"ti":[-0.046,0.036,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.19},"t":41,"s":[169.128,192.228,0],"to":[0.046,-0.036,0],"ti":[-0.055,-0.006,0]},{"i":{"x":0.833,"y":0.805},"o":{"x":0.167,"y":0.156},"t":42,"s":[169.284,192.183,0],"to":[0.055,0.006,0],"ti":[-0.06,-0.042,0]},{"i":{"x":0.833,"y":0.812},"o":{"x":0.167,"y":0.145},"t":43,"s":[169.457,192.261,0],"to":[0.06,0.042,0],"ti":[-0.063,-0.073,0]},{"i":{"x":0.833,"y":0.819},"o":{"x":0.167,"y":0.15},"t":44,"s":[169.642,192.438,0],"to":[0.063,0.073,0],"ti":[-0.065,-0.097,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.154},"t":45,"s":[169.834,192.698,0],"to":[0.065,0.097,0],"ti":[-0.066,-0.11,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.164},"t":46,"s":[170.032,193.022,0],"to":[0.066,0.11,0],"ti":[-0.066,-0.107,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.173},"t":47,"s":[170.231,193.359,0],"to":[0.066,0.107,0],"ti":[-0.066,-0.094,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.176},"t":48,"s":[170.43,193.661,0],"to":[0.066,0.094,0],"ti":[-0.064,-0.077,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.18},"t":49,"s":[170.626,193.92,0],"to":[0.064,0.077,0],"ti":[-0.062,-0.058,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":50,"s":[170.816,194.125,0],"to":[0.062,0.058,0],"ti":[-0.059,-0.037,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.185},"t":51,"s":[170.999,194.269,0],"to":[0.059,0.037,0],"ti":[-0.056,-0.014,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.18},"t":52,"s":[171.172,194.347,0],"to":[0.056,0.014,0],"ti":[-0.052,0.01,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.165},"t":53,"s":[171.335,194.353,0],"to":[0.052,-0.01,0],"ti":[-0.048,0.036,0]},{"i":{"x":0.833,"y":0.811},"o":{"x":0.167,"y":0.153},"t":54,"s":[171.485,194.284,0],"to":[0.048,-0.036,0],"ti":[-0.043,0.061,0]},{"i":{"x":0.833,"y":0.812},"o":{"x":0.167,"y":0.149},"t":55,"s":[171.621,194.138,0],"to":[0.043,-0.061,0],"ti":[-0.038,0.087,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.15},"t":56,"s":[171.743,193.915,0],"to":[0.038,-0.087,0],"ti":[-0.033,0.112,0]},{"i":{"x":0.833,"y":0.819},"o":{"x":0.167,"y":0.152},"t":57,"s":[171.851,193.615,0],"to":[0.033,-0.112,0],"ti":[-0.028,0.137,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.154},"t":58,"s":[171.943,193.241,0],"to":[0.028,-0.137,0],"ti":[-0.013,0.074,0]},{"t":59,"s":[172.02,192.796,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.05,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":6,"s":[113.755,94.294,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,0.226,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,-0.701,0]},"t":7,"s":[142.324,42.5,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.888,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.241,0.093,0]},"t":8,"s":[96.482,48.003,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.204,0.806,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.325,-0.366,0]},"t":9,"s":[72.3,93.591,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.921,0.58,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.059,0.146,0]},"t":10,"s":[63.951,85.144,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.459,0.97,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.529,0.104,0]},"t":11,"s":[92.765,73.936,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.995,0.876,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.088,-0.048,0]},"t":12,"s":[91.276,28.604,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.992,1.032,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.006,0.254,0]},"t":13,"s":[66.684,57.392,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.995,1.013,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.008,0.023,0]},"t":14,"s":[89.679,71.451,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.731,0.864,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.005,0.012,0]},"t":15,"s":[68.777,51.94,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,0.702,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.121,0.214,0]},"t":16,"s":[88.421,74.596,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.935,0.98,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.116,0]},"t":17,"s":[132.23,89.048,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.575,0.845,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.305,-0.027,0]},"t":18,"s":[69.974,126.315,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,0.98,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.104,0.18,0]},"t":19,"s":[83.338,98.135,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.313,0.783,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.391,-0.026,0]},"t":20,"s":[138.117,73.778,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.993,0.847,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.095,0.135,0]},"t":21,"s":[128.488,92.265,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,1.145,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.008,0.183,0]},"t":22,"s":[58.681,121.955,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.815,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.109,0.053,0]},"t":23,"s":[122.512,146.761,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,5.116,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.152,17.285,0]},"t":24,"s":[94.854,78.682,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.02,1.177,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,0.082,0]},"t":25,"s":[61.077,78.352,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,1.017,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,0.057,0]},"t":26,"s":[91.084,94.97,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.068,0.014,0]},"t":27,"s":[53.825,43.095,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.888,0.893,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.186,-0.051,0]},"t":28,"s":[74.356,105.62,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.814,1.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.324,0.371,0]},"t":29,"s":[91.09,66.721,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.498,0.904,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.151,0.053,0]},"t":30,"s":[96.876,55.445,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.992,1.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.645,0]},"t":31,"s":[104.026,86.476,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.986,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.009,0.076,0]},"t":32,"s":[54.137,91.081,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.906,0.944,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.017,-0.393,0]},"t":33,"s":[99.353,40.985,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.666,0.653,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.764,-0.167,0]},"t":34,"s":[61.794,49.744,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.993,0.855,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.11,0]},"t":35,"s":[57.194,46.834,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.011,1.186,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.008,0.195,0]},"t":36,"s":[98.549,37.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,1.031,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.009,0.058,0]},"t":37,"s":[60.683,30.783,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.935,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,0.023,0]},"t":38,"s":[103.351,52.891,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.098,0.657,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.282,-0.288,0]},"t":39,"s":[56.948,22.459,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,0.11,0]},"t":40,"s":[37.48,29.284,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.913,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.106,0.164,0]},"t":41,"s":[79.938,50.562,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-5.816,1.008,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.804,-0.017,0]},"t":42,"s":[61.287,72.597,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,1.042,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.084,0.008,0]},"t":43,"s":[60.383,54.282,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.87,0.901,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.155,0.028,0]},"t":44,"s":[-12.609,74.447,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.795,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.231,0.53,0]},"t":45,"s":[12.933,44.106,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.094,1.748,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,-0.037,0]},"t":46,"s":[27.371,38.441,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.881,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,0.075,0]},"t":47,"s":[48.387,42.359,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.231,0.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.898,0.279,0]},"t":48,"s":[3.703,3.258,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.188,-0.77,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,-0.58,0]},"t":49,"s":[7.498,-13.404,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.899,0.864,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,0.087,0]},"t":50,"s":[-6.825,-11.313,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.382,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.485,0.214,0]},"t":51,"s":[39.727,31.017,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,1.572,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.068,0.386,0]},"t":52,"s":[49.384,58.012,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.795,0.914,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.055,0.073,0]},"t":53,"s":[-4.528,65.442,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,1.691,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,3.173,0]},"t":54,"s":[27.852,6.982,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.907,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,0.074,0]},"t":55,"s":[75.027,5.405,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.463,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.146,0.773,0]},"t":56,"s":[28.477,20.053,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.164,1.39,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.224,0.099,0]},"t":57,"s":[45.412,21.822,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.069,0]},"t":58,"s":[55.436,31.442,100]},{"t":59,"s":[25.653,-23.168,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":60,"st":6,"bm":0},{"ddd":0,"ind":33,"ty":4,"nm":"Shape Layer 19","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":38,"s":[100]},{"t":54,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.51},"o":{"x":0.167,"y":0.167},"t":11,"s":[273.717,253.598,0],"to":[0.28,-0.028,0],"ti":[-1.664,-0.082,0]},{"i":{"x":0.833,"y":0.759},"o":{"x":0.167,"y":0.1},"t":12,"s":[275.395,253.428,0],"to":[1.664,0.082,0],"ti":[-3.922,-0.767,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.127},"t":13,"s":[283.7,254.091,0],"to":[3.922,0.767,0],"ti":[-5.158,-1.975,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":14,"s":[298.929,258.033,0],"to":[5.158,1.975,0],"ti":[-4.6,-2.946,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":15,"s":[314.649,265.939,0],"to":[4.6,2.946,0],"ti":[-3.328,-3.296,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":16,"s":[326.529,275.709,0],"to":[3.328,3.296,0],"ti":[-2.233,-3.252,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":17,"s":[334.618,285.714,0],"to":[2.233,3.252,0],"ti":[-1.455,-3.046,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.18},"t":18,"s":[339.929,295.223,0],"to":[1.455,3.046,0],"ti":[-0.931,-2.79,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":19,"s":[343.35,303.988,0],"to":[0.931,2.79,0],"ti":[-0.582,-2.533,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":20,"s":[345.513,311.964,0],"to":[0.582,2.533,0],"ti":[-0.353,-2.293,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[346.843,319.188,0],"to":[0.353,2.293,0],"ti":[-0.205,-2.077,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[347.63,325.723,0],"to":[0.205,2.077,0],"ti":[-0.115,-1.887,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[348.075,331.651,0],"to":[0.115,1.887,0],"ti":[-0.064,-1.719,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":24,"s":[348.319,337.046,0],"to":[0.064,1.719,0],"ti":[-0.041,-1.573,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":25,"s":[348.461,341.968,0],"to":[0.041,1.573,0],"ti":[-0.028,-1.452,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":26,"s":[348.564,346.482,0],"to":[0.028,1.452,0],"ti":[-0.019,-1.351,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":27,"s":[348.628,350.68,0],"to":[0.019,1.351,0],"ti":[-0.016,-1.256,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":28,"s":[348.676,354.586,0],"to":[0.016,1.256,0],"ti":[-0.018,-1.167,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":29,"s":[348.724,358.218,0],"to":[0.018,1.167,0],"ti":[-0.022,-1.082,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":30,"s":[348.783,361.589,0],"to":[0.022,1.082,0],"ti":[-0.029,-1,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[348.858,364.71,0],"to":[0.029,1,0],"ti":[-0.036,-0.921,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":32,"s":[348.955,367.59,0],"to":[0.036,0.921,0],"ti":[-0.043,-0.844,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":33,"s":[349.073,370.236,0],"to":[0.043,0.844,0],"ti":[-0.05,-0.768,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":34,"s":[349.212,372.652,0],"to":[0.05,0.768,0],"ti":[-0.056,-0.694,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":35,"s":[349.372,374.845,0],"to":[0.056,0.694,0],"ti":[-0.062,-0.622,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":36,"s":[349.55,376.819,0],"to":[0.062,0.622,0],"ti":[-0.067,-0.551,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":37,"s":[349.743,378.577,0],"to":[0.067,0.551,0],"ti":[-0.07,-0.481,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":38,"s":[349.95,380.124,0],"to":[0.07,0.481,0],"ti":[-0.073,-0.413,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":39,"s":[350.166,381.464,0],"to":[0.073,0.413,0],"ti":[-0.075,-0.348,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":40,"s":[350.389,382.603,0],"to":[0.075,0.348,0],"ti":[-0.075,-0.284,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.186},"t":41,"s":[350.614,383.549,0],"to":[0.075,0.284,0],"ti":[-0.075,-0.222,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.19},"t":42,"s":[350.84,384.306,0],"to":[0.075,0.222,0],"ti":[-0.073,-0.163,0]},{"i":{"x":0.833,"y":0.859},"o":{"x":0.167,"y":0.196},"t":43,"s":[351.062,384.882,0],"to":[0.073,0.163,0],"ti":[-0.071,-0.106,0]},{"i":{"x":0.833,"y":0.86},"o":{"x":0.167,"y":0.204},"t":44,"s":[351.279,385.285,0],"to":[0.071,0.106,0],"ti":[-0.068,-0.053,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.205},"t":45,"s":[351.487,385.521,0],"to":[0.068,0.053,0],"ti":[-0.064,-0.002,0]},{"i":{"x":0.833,"y":0.806},"o":{"x":0.167,"y":0.173},"t":46,"s":[351.685,385.601,0],"to":[0.064,0.002,0],"ti":[-0.059,0.045,0]},{"i":{"x":0.833,"y":0.804},"o":{"x":0.167,"y":0.146},"t":47,"s":[351.87,385.535,0],"to":[0.059,-0.045,0],"ti":[-0.054,0.088,0]},{"i":{"x":0.833,"y":0.811},"o":{"x":0.167,"y":0.145},"t":48,"s":[352.04,385.333,0],"to":[0.054,-0.088,0],"ti":[-0.049,0.127,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.149},"t":49,"s":[352.195,385.007,0],"to":[0.049,-0.127,0],"ti":[-0.043,0.161,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.153},"t":50,"s":[352.331,384.571,0],"to":[0.043,-0.161,0],"ti":[-0.035,0.185,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.161},"t":51,"s":[352.45,384.039,0],"to":[0.035,-0.185,0],"ti":[-0.024,0.192,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":52,"s":[352.541,383.461,0],"to":[0.024,-0.192,0],"ti":[-0.013,0.188,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.17},"t":53,"s":[352.596,382.887,0],"to":[0.013,-0.188,0],"ti":[-0.001,0.179,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.172},"t":54,"s":[352.617,382.333,0],"to":[0.001,-0.179,0],"ti":[0.007,0.165,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":55,"s":[352.603,381.814,0],"to":[-0.007,-0.165,0],"ti":[0.003,0.149,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":56,"s":[352.574,381.345,0],"to":[-0.003,-0.149,0],"ti":[-0.011,0.133,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":57,"s":[352.587,380.922,0],"to":[0.011,-0.133,0],"ti":[-0.023,0.117,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.177},"t":58,"s":[352.639,380.546,0],"to":[0.023,-0.117,0],"ti":[-0.014,0.055,0]},{"t":59,"s":[352.724,380.217,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[2.45,-1.622,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":11,"s":[64.676,29.575,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.851,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,0.086,0]},"t":12,"s":[63.619,31.654,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.096,0.849,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.189,-0.115,0]},"t":13,"s":[83.082,94.984,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.044,1.052,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,0.186,0]},"t":14,"s":[98.428,68.346,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.791,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.029,0.032,0]},"t":15,"s":[65.326,46.692,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.846,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.117,0.139,0]},"t":16,"s":[115.976,81.786,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.191,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.181,-0.001,0]},"t":17,"s":[94.867,134.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,1.096,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,0.505,0]},"t":18,"s":[76.907,82.463,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.592,0.774,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.576,0.045,0]},"t":19,"s":[136.087,72.163,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.95,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.132,0]},"t":20,"s":[146.093,94.38,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,1.06,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.126,0.245,0]},"t":21,"s":[64.998,132.461,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.163,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,0.035,0]},"t":22,"s":[97.241,152.104,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.936,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.259,0]},"t":23,"s":[126.81,118.253,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.87,0.449,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.273,0.246,0]},"t":24,"s":[39.419,102.155,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.013,0.912,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.231,0.098,0]},"t":25,"s":[59.845,93.89,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.068,2.263,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.011,1.504,0]},"t":26,"s":[71.34,47.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.87,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,0.078,0]},"t":27,"s":[58.098,44.818,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.848,0.781,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.234,-0.119,0]},"t":28,"s":[82.135,88.74,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.37,1.069,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.185,0.135,0]},"t":29,"s":[95.452,70.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,0.946,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.068,0.038,0]},"t":30,"s":[106.399,41.339,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,0.784,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,-0.156,0]},"t":31,"s":[46.837,95.066,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.417,0.136,0]},"t":32,"s":[100.241,76.371,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.202,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.224,-0.013,0]},"t":33,"s":[91.348,46.624,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.96,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.059,-0.017,0]},"t":34,"s":[86.082,72.273,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.193,0.684,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.069,-0.076,0]},"t":35,"s":[104.113,51.031,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.964,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,0.113,0]},"t":36,"s":[94.281,62.125,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.717,0.85,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.063,-0.012,0]},"t":37,"s":[126.942,93.089,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.99,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.118,0.187,0]},"t":38,"s":[108.331,65.944,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.969,0.494,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.012,-0.318,0]},"t":39,"s":[63.723,44.138,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.903,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.049,0.1,0]},"t":40,"s":[102.921,48.671,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.464,0.113,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.147,0.604,0]},"t":41,"s":[78.268,71.671,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.902,1.068,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.092,0]},"t":42,"s":[87.176,75.352,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.234,0.908,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.554,0.037,0]},"t":43,"s":[28.705,110.854,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.845,1.441,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,0.901,0]},"t":44,"s":[18.357,46.477,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.091,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.181,0.07,0]},"t":45,"s":[57.758,39.913,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.801,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,-0.023,0]},"t":46,"s":[91.489,81.222,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.137,0.143,0]},"t":47,"s":[20.878,48.853,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,0.994,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.108,-0.379,0]},"t":48,"s":[47.568,3.824,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,1.042,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.035,-0.006,0]},"t":49,"s":[35.966,11.947,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.412,0.592,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.165,0.028,0]},"t":50,"s":[44.168,4.41,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.105,0]},"t":51,"s":[52.575,15.778,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.454,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.254,-0.03,0]},"t":52,"s":[2.557,60.137,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,1.407,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,-0.624,0]},"t":53,"s":[14.899,27.604,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,1.066,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.082,0.069,0]},"t":54,"s":[83.445,31.436,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.046,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.186,0.037,0]},"t":55,"s":[48.803,8.908,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,0.694,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,-0.323,0]},"t":56,"s":[20.805,49.183,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.065,0.115,0]},"t":57,"s":[64.315,40.919,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.079,0.165,0]},"t":58,"s":[39.92,18.864,100]},{"t":59,"s":[52.411,-3.555,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":60,"st":11,"bm":0},{"ddd":0,"ind":34,"ty":4,"nm":"Shape Layer 18","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":39,"s":[100]},{"t":55,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.544},"o":{"x":0.167,"y":0.167},"t":12,"s":[267.865,255.269,0],"to":[-0.161,-0.402,0],"ti":[1.026,2.138,0]},{"i":{"x":0.833,"y":0.761},"o":{"x":0.167,"y":0.102},"t":13,"s":[266.901,252.858,0],"to":[-1.026,-2.138,0],"ti":[2.899,4.739,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.128},"t":14,"s":[261.706,242.443,0],"to":[-2.899,-4.739,0],"ti":[4.94,5.799,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":15,"s":[249.506,224.427,0],"to":[-4.94,-5.799,0],"ti":[5.963,4.5,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":16,"s":[232.069,207.647,0],"to":[-5.963,-4.5,0],"ti":[5.888,2.374,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":17,"s":[213.727,197.425,0],"to":[-5.888,-2.374,0],"ti":[5.276,0.563,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":18,"s":[196.743,193.401,0],"to":[-5.276,-0.563,0],"ti":[4.452,-0.741,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":19,"s":[182.074,194.046,0],"to":[-4.452,0.741,0],"ti":[3.589,-1.577,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":20,"s":[170.029,197.845,0],"to":[-3.589,1.577,0],"ti":[2.794,-2.037,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":21,"s":[160.537,203.508,0],"to":[-2.794,2.037,0],"ti":[2.125,-2.229,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":22,"s":[153.265,210.066,0],"to":[-2.125,2.229,0],"ti":[1.595,-2.253,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":23,"s":[147.784,216.885,0],"to":[-1.595,2.253,0],"ti":[1.188,-2.18,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":24,"s":[143.692,223.586,0],"to":[-1.188,2.18,0],"ti":[0.88,-2.056,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":25,"s":[140.657,229.963,0],"to":[-0.88,2.056,0],"ti":[0.65,-1.912,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":26,"s":[138.413,235.924,0],"to":[-0.65,1.912,0],"ti":[0.477,-1.76,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":27,"s":[136.76,241.434,0],"to":[-0.477,1.76,0],"ti":[0.347,-1.607,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[135.553,246.481,0],"to":[-0.347,1.607,0],"ti":[0.25,-1.458,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":29,"s":[134.678,251.075,0],"to":[-0.25,1.458,0],"ti":[0.178,-1.316,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":30,"s":[134.053,255.23,0],"to":[-0.178,1.316,0],"ti":[0.125,-1.182,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":31,"s":[133.611,258.969,0],"to":[-0.125,1.182,0],"ti":[0.088,-1.057,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":32,"s":[133.302,262.321,0],"to":[-0.088,1.057,0],"ti":[0.062,-0.942,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":33,"s":[133.085,265.313,0],"to":[-0.062,0.942,0],"ti":[0.045,-0.835,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":34,"s":[132.931,267.971,0],"to":[-0.045,0.835,0],"ti":[0.035,-0.737,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":35,"s":[132.816,270.322,0],"to":[-0.035,0.737,0],"ti":[0.031,-0.648,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":36,"s":[132.72,272.392,0],"to":[-0.031,0.648,0],"ti":[0.031,-0.567,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":37,"s":[132.63,274.209,0],"to":[-0.031,0.567,0],"ti":[0.035,-0.496,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":38,"s":[132.533,275.797,0],"to":[-0.035,0.496,0],"ti":[0.04,-0.432,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":39,"s":[132.422,277.182,0],"to":[-0.04,0.432,0],"ti":[0.043,-0.377,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":40,"s":[132.291,278.392,0],"to":[-0.043,0.377,0],"ti":[0.036,-0.328,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.18},"t":41,"s":[132.166,279.447,0],"to":[-0.036,0.328,0],"ti":[0.026,-0.282,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.181},"t":42,"s":[132.075,280.359,0],"to":[-0.026,0.282,0],"ti":[0.017,-0.24,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.182},"t":43,"s":[132.011,281.139,0],"to":[-0.017,0.24,0],"ti":[0.01,-0.201,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.184},"t":44,"s":[131.972,281.799,0],"to":[-0.01,0.201,0],"ti":[0.003,-0.166,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.186},"t":45,"s":[131.954,282.347,0],"to":[-0.003,0.166,0],"ti":[-0.002,-0.133,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.189},"t":46,"s":[131.953,282.792,0],"to":[0.002,0.133,0],"ti":[-0.007,-0.102,0]},{"i":{"x":0.833,"y":0.859},"o":{"x":0.167,"y":0.195},"t":47,"s":[131.967,283.142,0],"to":[0.007,0.102,0],"ti":[-0.011,-0.073,0]},{"i":{"x":0.833,"y":0.866},"o":{"x":0.167,"y":0.204},"t":48,"s":[131.994,283.403,0],"to":[0.011,0.073,0],"ti":[-0.014,-0.046,0]},{"i":{"x":0.833,"y":0.869},"o":{"x":0.167,"y":0.222},"t":49,"s":[132.031,283.58,0],"to":[0.014,0.046,0],"ti":[-0.017,-0.02,0]},{"i":{"x":0.833,"y":0.811},"o":{"x":0.167,"y":0.23},"t":50,"s":[132.078,283.677,0],"to":[0.017,0.02,0],"ti":[-0.019,0.004,0]},{"i":{"x":0.833,"y":0.815},"o":{"x":0.167,"y":0.149},"t":51,"s":[132.132,283.7,0],"to":[0.019,-0.004,0],"ti":[-0.021,0.02,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.152},"t":52,"s":[132.193,283.651,0],"to":[0.021,-0.02,0],"ti":[-0.023,0.018,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.18},"t":53,"s":[132.259,283.583,0],"to":[0.023,-0.018,0],"ti":[-0.025,0.008,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.172},"t":54,"s":[132.331,283.544,0],"to":[0.025,-0.008,0],"ti":[-0.026,0,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.164},"t":55,"s":[132.408,283.533,0],"to":[0.026,0,0],"ti":[-0.027,-0.008,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.16},"t":56,"s":[132.487,283.545,0],"to":[0.027,0.008,0],"ti":[-0.027,-0.014,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":57,"s":[132.568,283.579,0],"to":[0.027,0.014,0],"ti":[-0.027,-0.019,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.162},"t":58,"s":[132.649,283.63,0],"to":[0.027,0.019,0],"ti":[-0.013,-0.011,0]},{"t":59,"s":[132.728,283.695,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.085,2.343,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":12,"s":[95.923,97.698,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.042,0.078,0]},"t":13,"s":[119.853,100.809,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.846,0.754,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.082,-0.083,0]},"t":14,"s":[71.61,47.548,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.108,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.182,0.126,0]},"t":15,"s":[95.909,74.187,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.971,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,-0.015,0]},"t":16,"s":[116.529,126.213,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.765,1.081,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.046,0.272,0]},"t":17,"s":[69.282,82.296,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.014,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.129,0.041,0]},"t":18,"s":[99.804,62.944,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.925,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.012,0.16,0]},"t":19,"s":[155.455,101.204,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.797,-29.781,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.787,622.842,0]},"t":20,"s":[90.335,142.892,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.16,1.74,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,0.084,0]},"t":21,"s":[96.569,142.898,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.834,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.075,0]},"t":22,"s":[105.516,144.953,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.994,0.309,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.168,0.547,0]},"t":23,"s":[79.375,124.659,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,0.77,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.007,0.095,0]},"t":24,"s":[53.599,121.011,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.006,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.187,0.131,0]},"t":25,"s":[77.44,94.418,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,0.812,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,-0.044,0]},"t":26,"s":[96.658,47.588,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.869,1.081,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,0.15,0]},"t":27,"s":[75.964,78.236,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.159,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.23,0.041,0]},"t":28,"s":[94.431,116.596,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.918,0.82,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,-0.058,0]},"t":29,"s":[104.908,41.132,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-2.162,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[-4.52,0.155,0]},"t":30,"s":[74.497,85.65,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.955,0.956,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.086,0.011,0]},"t":31,"s":[75.047,137.348,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,1.056,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.097,-0.092,0]},"t":32,"s":[95.389,78.111,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.564,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.248,0.034,0]},"t":33,"s":[85.987,106.338,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.138,0.755,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,-0.133,0]},"t":34,"s":[86.576,59.064,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,0.126,0]},"t":35,"s":[67.887,77.283,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.048,1.699,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.951,0.69,0]},"t":36,"s":[117.559,112.652,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.968,0.892,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,0.074,0]},"t":37,"s":[115.524,117.508,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.028,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.052,0.361,0]},"t":38,"s":[94.322,71.923,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.021,0.226,0]},"t":39,"s":[107.41,58.262,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.313,0.689,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.225,-0.022,0]},"t":40,"s":[89.918,50.26,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,0.965,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.086,0.114,0]},"t":41,"s":[88.641,56.58,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.028,0.486,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.303,-0.061,0]},"t":42,"s":[54.485,73.842,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.806,1.029,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.021,0.099,0]},"t":43,"s":[41.537,63.86,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.052,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.146,0.021,0]},"t":44,"s":[58.89,12.33,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,1.279,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.032,0.455,0]},"t":45,"s":[81.867,81.726,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.858,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.543,0.064,0]},"t":46,"s":[44.5,97.298,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.018,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.202,0.656,0]},"t":47,"s":[49.475,29.648,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.415,-65.882,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.015,34.7,0]},"t":48,"s":[52.978,19.812,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.126,1.189,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.083,0]},"t":49,"s":[48.737,19.789,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,0.939,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.05,0.058,0]},"t":50,"s":[74.095,0.809,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.788,1.031,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.229,-0.233,0]},"t":51,"s":[10.268,62.842,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.913,1.141,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.137,0.023,0]},"t":52,"s":[27.318,46.475,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.588,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.212,0.052,0]},"t":53,"s":[53.611,68.98,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.93,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,-0.069,0]},"t":54,"s":[54.64,8.452,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.974,0.937,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.428,-0.05,0]},"t":55,"s":[21.647,41.626,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.031,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.037,-0.251,0]},"t":56,"s":[27.025,20.873,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.011,0.234,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.023,0.727,0]},"t":57,"s":[23.296,26.051,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.01,0.093,0]},"t":58,"s":[28.415,26.722,100]},{"t":59,"s":[22.608,32.219,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":12,"op":60,"st":12,"bm":0},{"ddd":0,"ind":35,"ty":4,"nm":"Shape Layer 17","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[100]},{"t":51,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.628},"o":{"x":0.167,"y":0.167},"t":8,"s":[275.449,259.557,0],"to":[0.546,0.159,0],"ti":[-2.494,-0.483,0]},{"i":{"x":0.833,"y":0.767},"o":{"x":0.167,"y":0.107},"t":9,"s":[278.724,260.512,0],"to":[2.494,0.483,0],"ti":[-5.49,-0.572,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.13},"t":10,"s":[290.414,262.453,0],"to":[5.49,0.572,0],"ti":[-7.452,0.063,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":11,"s":[311.663,263.943,0],"to":[7.452,-0.063,0],"ti":[-7.172,1.285,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":12,"s":[335.126,262.075,0],"to":[7.172,-1.285,0],"ti":[-5.684,2.429,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":13,"s":[354.697,256.231,0],"to":[5.684,-2.429,0],"ti":[-4.084,3.144,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":14,"s":[369.23,247.5,0],"to":[4.084,-3.144,0],"ti":[-2.734,3.404,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":15,"s":[379.199,237.368,0],"to":[2.734,-3.404,0],"ti":[-1.736,3.345,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":16,"s":[385.634,227.077,0],"to":[1.736,-3.345,0],"ti":[-1.056,3.132,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":17,"s":[389.616,217.298,0],"to":[1.056,-3.132,0],"ti":[-0.604,2.868,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":18,"s":[391.967,208.287,0],"to":[0.604,-2.868,0],"ti":[-0.305,2.608,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":19,"s":[393.24,200.09,0],"to":[0.305,-2.608,0],"ti":[-0.105,2.371,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":20,"s":[393.797,192.641,0],"to":[0.105,-2.371,0],"ti":[0.031,2.158,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":21,"s":[393.871,185.865,0],"to":[-0.031,-2.158,0],"ti":[0.123,1.968,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":22,"s":[393.614,179.691,0],"to":[-0.123,-1.968,0],"ti":[0.186,1.797,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[393.131,174.057,0],"to":[-0.186,-1.797,0],"ti":[0.228,1.644,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[392.497,168.908,0],"to":[-0.228,-1.644,0],"ti":[0.251,1.504,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[391.765,164.196,0],"to":[-0.251,-1.504,0],"ti":[0.261,1.377,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[390.988,159.882,0],"to":[-0.261,-1.377,0],"ti":[0.262,1.261,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[390.199,155.932,0],"to":[-0.262,-1.261,0],"ti":[0.256,1.155,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":28,"s":[389.418,152.313,0],"to":[-0.256,-1.155,0],"ti":[0.246,1.057,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":29,"s":[388.662,149,0],"to":[-0.246,-1.057,0],"ti":[0.233,0.967,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":30,"s":[387.941,145.969,0],"to":[-0.233,-0.967,0],"ti":[0.217,0.882,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":31,"s":[387.264,143.201,0],"to":[-0.217,-0.882,0],"ti":[0.199,0.803,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":32,"s":[386.64,140.677,0],"to":[-0.199,-0.803,0],"ti":[0.18,0.729,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":33,"s":[386.071,138.382,0],"to":[-0.18,-0.729,0],"ti":[0.159,0.659,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":34,"s":[385.563,136.303,0],"to":[-0.159,-0.659,0],"ti":[0.138,0.594,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":35,"s":[385.116,134.426,0],"to":[-0.138,-0.594,0],"ti":[0.117,0.531,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":36,"s":[384.732,132.741,0],"to":[-0.117,-0.531,0],"ti":[0.096,0.473,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":37,"s":[384.411,131.237,0],"to":[-0.096,-0.473,0],"ti":[0.076,0.417,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":38,"s":[384.153,129.905,0],"to":[-0.076,-0.417,0],"ti":[0.055,0.364,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":39,"s":[383.957,128.736,0],"to":[-0.055,-0.364,0],"ti":[0.036,0.314,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":40,"s":[383.821,127.721,0],"to":[-0.036,-0.314,0],"ti":[0.017,0.266,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.183},"t":41,"s":[383.742,126.852,0],"to":[-0.017,-0.266,0],"ti":[0,0.222,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.185},"t":42,"s":[383.718,126.122,0],"to":[0,-0.222,0],"ti":[-0.017,0.179,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.187},"t":43,"s":[383.745,125.523,0],"to":[0.017,-0.179,0],"ti":[-0.032,0.139,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.19},"t":44,"s":[383.819,125.048,0],"to":[0.032,-0.139,0],"ti":[-0.046,0.101,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.19},"t":45,"s":[383.937,124.69,0],"to":[0.046,-0.101,0],"ti":[-0.058,0.066,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.185},"t":46,"s":[384.093,124.442,0],"to":[0.058,-0.066,0],"ti":[-0.068,0.032,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.173},"t":47,"s":[384.283,124.297,0],"to":[0.068,-0.032,0],"ti":[-0.074,0.009,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.166},"t":48,"s":[384.5,124.247,0],"to":[0.074,-0.009,0],"ti":[-0.073,0.002,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":49,"s":[384.725,124.244,0],"to":[0.073,-0.002,0],"ti":[-0.068,0.003,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.174},"t":50,"s":[384.937,124.237,0],"to":[0.068,-0.003,0],"ti":[-0.061,0.006,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.178},"t":51,"s":[385.131,124.223,0],"to":[0.061,-0.006,0],"ti":[-0.052,0.011,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.182},"t":52,"s":[385.302,124.198,0],"to":[0.052,-0.011,0],"ti":[-0.041,0.017,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.184},"t":53,"s":[385.442,124.158,0],"to":[0.041,-0.017,0],"ti":[-0.028,0.024,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.179},"t":54,"s":[385.546,124.097,0],"to":[0.028,-0.024,0],"ti":[-0.026,0.021,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.171},"t":55,"s":[385.612,124.016,0],"to":[0.026,-0.021,0],"ti":[-0.034,0.006,0]},{"i":{"x":0.833,"y":0.813},"o":{"x":0.167,"y":0.153},"t":56,"s":[385.701,123.974,0],"to":[0.034,-0.006,0],"ti":[-0.043,-0.01,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.15},"t":57,"s":[385.818,123.981,0],"to":[0.043,0.01,0],"ti":[-0.048,-0.025,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.153},"t":58,"s":[385.957,124.035,0],"to":[0.048,0.025,0],"ti":[-0.025,-0.016,0]},{"t":59,"s":[386.107,124.13,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.944,0.679,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":8,"s":[49.219,103.811,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.111,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.166,0.113,0]},"t":9,"s":[96.918,92.8,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,29.641,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.048,19.517,0]},"t":10,"s":[80.991,61.448,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.606,1.004,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.607,0.083,0]},"t":11,"s":[118.185,61.313,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.964,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.004,0]},"t":12,"s":[124.101,107.653,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,-0.062,0]},"t":13,"s":[75.181,59.182,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-66.49,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[-62.917,0.413,0]},"t":14,"s":[117.68,86.992,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.5,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,-0.053,0]},"t":15,"s":[117.624,94.022,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.649,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.154,0.1,0]},"t":16,"s":[72.153,89.729,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.994,0.616,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.109,-0.07,0]},"t":17,"s":[88.106,68.252,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.006,0.106,0]},"t":18,"s":[139.441,79.894,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.246,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.681,-0.189,0]},"t":19,"s":[91.59,121.922,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.031,1.095,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,-0.001,0]},"t":20,"s":[96.806,109.051,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.909,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.023,0.044,0]},"t":21,"s":[76.174,121.699,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.265,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.035,-0.029,0]},"t":22,"s":[104.516,94.655,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.009,0.92,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,-0.118,0]},"t":23,"s":[106.997,114.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.918,7.262,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.008,-1.803,0]},"t":24,"s":[66.837,106.412,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-2.408,1.035,1]},"o":{"x":[0.167,0.167,0.167],"y":[-4.987,0.082,0]},"t":25,"s":[111.464,106.778,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,1.046,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.085,0.025,0]},"t":26,"s":[110.731,78.932,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.884,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,0.03,0]},"t":27,"s":[81.464,118.575,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.215,0.686,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.293,-0.158,0]},"t":28,"s":[101.82,56.948,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,0.967,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,0.113,0]},"t":29,"s":[109.895,78.255,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.916,0.979,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.066,-0.056,0]},"t":30,"s":[80.942,137.249,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-6.827,1.076,1]},"o":{"x":[0.167,0.167,0.167],"y":[12.816,-0.028,0]},"t":31,"s":[97.117,101.933,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.453,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.084,0.04,0]},"t":32,"s":[97.223,128.384,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.619,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,-0.935,0]},"t":33,"s":[107.061,77.679,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,0.107,0]},"t":34,"s":[43.764,81.828,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,-1.177,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.143,-0.844,0]},"t":35,"s":[98.569,96.663,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.435,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.31,0.087,0]},"t":36,"s":[78.363,95.331,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,2.861,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,-3.479,0]},"t":37,"s":[79.067,61.85,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.227,0.912,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.407,0.08,0]},"t":38,"s":[66.248,62.633,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.092,-2.126,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,1.726,0]},"t":39,"s":[68.428,44.364,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.901,1.019,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,0.086,0]},"t":40,"s":[86.481,43.437,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.779,1.036,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.541,0.015,0]},"t":41,"s":[48.571,9.591,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.776,1.009,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.134,0.025,0]},"t":42,"s":[41.665,51.149,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.092,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.133,0.008,0]},"t":43,"s":[30.243,-8.194,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.935,9.657,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,20.432,0]},"t":44,"s":[10.976,57.43,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.606,0.758,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.287,0.083,0]},"t":45,"s":[51.537,57.699,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.918,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.106,0.127,0]},"t":46,"s":[42.412,29.51,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-8.496,0.903,1]},"o":{"x":[0.167,0.167,0.167],"y":[-5.253,-0.014,0]},"t":47,"s":[8.401,-24.232,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.961,0.669,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.084,0.582,0]},"t":48,"s":[8.932,21.756,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.072,0.111,0]},"t":49,"s":[68.92,29.447,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.049,0.445,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.094,1.927,0]},"t":50,"s":[36.715,52.274,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.899,1.631,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,0.098,0]},"t":51,"s":[51.861,53.306,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.136,0.908,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.481,0.074,0]},"t":52,"s":[27.738,59.151,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.062,0.322,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,0.928,0]},"t":53,"s":[22.685,9.056,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.979,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.035,0.095,0]},"t":54,"s":[35.966,4.115,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.028,0.812,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.285,-0.029,0]},"t":55,"s":[12.831,-31.117,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.846,0.873,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.021,0.15,0]},"t":56,"s":[3.287,-4.957,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.815,0.964,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.182,0.241,0]},"t":57,"s":[16.066,27.774,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.152,-0.063,0]},"t":58,"s":[26.832,45.045,100]},{"t":59,"s":[39.927,35.232,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":60,"st":8,"bm":0},{"ddd":0,"ind":36,"ty":4,"nm":"Shape Layer 16","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"t":52,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.587},"o":{"x":0.167,"y":0.167},"t":9,"s":[275.519,261.1,0],"to":[-0.307,-0.313,0],"ti":[1.698,1.185,0]},{"i":{"x":0.833,"y":0.774},"o":{"x":0.167,"y":0.104},"t":10,"s":[273.678,259.22,0],"to":[-1.698,-1.185,0],"ti":[1.745,-2.083,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.132},"t":11,"s":[265.331,253.99,0],"to":[-1.745,2.083,0],"ti":[-0.013,-6.364,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.156},"t":12,"s":[263.209,271.718,0],"to":[0.013,6.364,0],"ti":[-0.69,-6.377,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":13,"s":[265.411,292.176,0],"to":[0.69,6.377,0],"ti":[-0.533,-5.437,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":14,"s":[267.35,309.98,0],"to":[0.533,5.437,0],"ti":[-0.321,-4.543,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":15,"s":[268.609,324.8,0],"to":[0.321,4.543,0],"ti":[-0.144,-3.839,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":16,"s":[269.275,337.239,0],"to":[0.144,3.839,0],"ti":[-0.006,-3.291,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":17,"s":[269.475,347.837,0],"to":[0.006,3.291,0],"ti":[0.101,-2.855,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":18,"s":[269.314,356.986,0],"to":[-0.101,2.855,0],"ti":[0.186,-2.499,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":19,"s":[268.867,364.967,0],"to":[-0.186,2.499,0],"ti":[0.253,-2.201,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":20,"s":[268.196,371.978,0],"to":[-0.253,2.201,0],"ti":[0.306,-1.947,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":21,"s":[267.347,378.17,0],"to":[-0.306,1.947,0],"ti":[0.347,-1.728,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":22,"s":[266.36,383.661,0],"to":[-0.347,1.728,0],"ti":[0.377,-1.535,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":23,"s":[265.266,388.537,0],"to":[-0.377,1.535,0],"ti":[0.399,-1.366,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":24,"s":[264.095,392.873,0],"to":[-0.399,1.366,0],"ti":[0.413,-1.215,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":25,"s":[262.872,396.731,0],"to":[-0.413,1.215,0],"ti":[0.42,-1.082,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[261.617,400.166,0],"to":[-0.42,1.082,0],"ti":[0.421,-0.962,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[260.351,403.22,0],"to":[-0.421,0.962,0],"ti":[0.416,-0.854,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":28,"s":[259.092,405.935,0],"to":[-0.416,0.854,0],"ti":[0.407,-0.759,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[257.854,408.347,0],"to":[-0.407,0.759,0],"ti":[0.395,-0.675,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[256.649,410.491,0],"to":[-0.395,0.675,0],"ti":[0.379,-0.6,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":31,"s":[255.487,412.396,0],"to":[-0.379,0.6,0],"ti":[0.361,-0.535,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":32,"s":[254.375,414.092,0],"to":[-0.361,0.535,0],"ti":[0.343,-0.477,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":33,"s":[253.318,415.604,0],"to":[-0.343,0.477,0],"ti":[0.323,-0.427,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":34,"s":[252.319,416.955,0],"to":[-0.323,0.427,0],"ti":[0.304,-0.384,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":35,"s":[251.378,418.167,0],"to":[-0.304,0.384,0],"ti":[0.285,-0.347,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":36,"s":[250.495,419.259,0],"to":[-0.285,0.347,0],"ti":[0.268,-0.316,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":37,"s":[249.666,420.25,0],"to":[-0.268,0.316,0],"ti":[0.252,-0.289,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":38,"s":[248.887,421.154,0],"to":[-0.252,0.289,0],"ti":[0.235,-0.266,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.174},"t":39,"s":[248.153,421.986,0],"to":[-0.235,0.266,0],"ti":[0.208,-0.241,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":40,"s":[247.479,422.749,0],"to":[-0.208,0.241,0],"ti":[0.175,-0.214,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.18},"t":41,"s":[246.907,423.43,0],"to":[-0.175,0.214,0],"ti":[0.145,-0.189,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.181},"t":42,"s":[246.43,424.033,0],"to":[-0.145,0.189,0],"ti":[0.118,-0.164,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.182},"t":43,"s":[246.038,424.562,0],"to":[-0.118,0.164,0],"ti":[0.094,-0.141,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.184},"t":44,"s":[245.721,425.02,0],"to":[-0.094,0.141,0],"ti":[0.073,-0.118,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.186},"t":45,"s":[245.472,425.408,0],"to":[-0.073,0.118,0],"ti":[0.055,-0.096,0]},{"i":{"x":0.833,"y":0.856},"o":{"x":0.167,"y":0.19},"t":46,"s":[245.282,425.73,0],"to":[-0.055,0.096,0],"ti":[0.039,-0.074,0]},{"i":{"x":0.833,"y":0.862},"o":{"x":0.167,"y":0.197},"t":47,"s":[245.143,425.985,0],"to":[-0.039,0.074,0],"ti":[0.025,-0.053,0]},{"i":{"x":0.833,"y":0.853},"o":{"x":0.167,"y":0.211},"t":48,"s":[245.048,426.176,0],"to":[-0.025,0.053,0],"ti":[0.019,-0.036,0]},{"i":{"x":0.833,"y":0.822},"o":{"x":0.167,"y":0.193},"t":49,"s":[244.991,426.303,0],"to":[-0.019,0.036,0],"ti":[0.026,-0.027,0]},{"i":{"x":0.833,"y":0.815},"o":{"x":0.167,"y":0.157},"t":50,"s":[244.933,426.392,0],"to":[-0.026,0.027,0],"ti":[0.039,-0.021,0]},{"i":{"x":0.833,"y":0.814},"o":{"x":0.167,"y":0.152},"t":51,"s":[244.836,426.464,0],"to":[-0.039,0.021,0],"ti":[0.052,-0.016,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.151},"t":52,"s":[244.701,426.519,0],"to":[-0.052,0.016,0],"ti":[0.065,-0.01,0]},{"i":{"x":0.833,"y":0.818},"o":{"x":0.167,"y":0.152},"t":53,"s":[244.525,426.558,0],"to":[-0.065,0.01,0],"ti":[0.079,-0.004,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.154},"t":54,"s":[244.308,426.579,0],"to":[-0.079,0.004,0],"ti":[0.092,0.002,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.156},"t":55,"s":[244.051,426.582,0],"to":[-0.092,-0.002,0],"ti":[0.105,0.007,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.157},"t":56,"s":[243.755,426.569,0],"to":[-0.105,-0.007,0],"ti":[0.117,0.012,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.159},"t":57,"s":[243.422,426.54,0],"to":[-0.117,-0.012,0],"ti":[0.128,0.017,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.16},"t":58,"s":[243.055,426.497,0],"to":[-0.128,-0.017,0],"ti":[0.066,0.01,0]},{"t":59,"s":[242.656,426.439,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.563,1.02,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":9,"s":[92.322,93.922,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.109,0.948,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.103,0.016,0]},"t":10,"s":[95.253,42.092,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.054,0.89,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,-0.14,0]},"t":11,"s":[107.675,106.42,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,0.725,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,0.342,0]},"t":12,"s":[79.026,82.445,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.393,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.475,0.12,0]},"t":13,"s":[126.398,74.729,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.968,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.097,0.024,0]},"t":14,"s":[119.33,57.001,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.834,1.214,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.053,0.26,0]},"t":15,"s":[74.88,81.854,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.042,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.06,0]},"t":16,"s":[102.06,93.554,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,0.977,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.028,-0.035,0]},"t":17,"s":[129.135,51.875,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.863,1.026,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.389,-0.032,0]},"t":18,"s":[88.364,81.23,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.102,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.212,0.02,0]},"t":19,"s":[77.256,59.947,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.698,1.03,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.046,-0.051,0]},"t":20,"s":[70.037,87.966,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.995,1.049,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.022,0]},"t":21,"s":[86.104,70.53,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,1.07,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.006,0.031,0]},"t":22,"s":[128.201,94.177,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.376,0.967,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.627,0.038,0]},"t":23,"s":[88.836,56.66,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,0.977,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.068,-0.054,0]},"t":24,"s":[82.802,125.882,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,1.097,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.002,-0.031,0]},"t":25,"s":[116.041,83.757,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.9,0.955,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.033,0.045,0]},"t":26,"s":[83.397,114.487,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.069,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.508,-0.099,0]},"t":27,"s":[106.769,47.904,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.758,0.953,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.497,0]},"t":28,"s":[111.355,78.308,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.163,1.569,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,-0.106,0]},"t":29,"s":[102.953,84.434,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.9,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.073,0]},"t":30,"s":[86.963,81.742,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.429,1.529,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.493,1.851,0]},"t":31,"s":[134.26,102.822,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,1.156,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,0.072,0]},"t":32,"s":[143.885,103.815,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,1.116,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.171,0.054,0]},"t":33,"s":[84.672,96.517,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.547,0.897,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.171,0.048,0]},"t":34,"s":[104.079,117.449,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.772,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.088,0.439,0]},"t":35,"s":[102.79,67.476,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,1.47,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.131,2.037,0]},"t":36,"s":[80.144,55.767,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,1.082,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,0.071,0]},"t":37,"s":[40.802,55.268,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.966,0.556,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.041,0]},"t":38,"s":[68.335,58.584,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.795,1.044,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.058,0.103,0]},"t":39,"s":[99.544,51.985,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.792,1.038,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,0.029,0]},"t":40,"s":[81.176,23.398,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.994,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.026,0]},"t":41,"s":[54.468,66.977,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.334,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.427,-0.006,0]},"t":42,"s":[14.561,3.526,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.853,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,-0.011,0]},"t":43,"s":[4.89,62.465,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.066,1.037,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.192,-0.037,0]},"t":44,"s":[53.289,10.271,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,0.026,0]},"t":45,"s":[90.493,46.486,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.078,0.738,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.284,-0.203,0]},"t":46,"s":[23.844,-5.784,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.862,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.122,0]},"t":47,"s":[-3.767,9.434,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.96,1.136,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.211,0.454,0]},"t":48,"s":[49.843,42.088,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.76,0.903,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.077,0.052,0]},"t":49,"s":[84.879,49.437,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.214,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.128,0.58,0]},"t":50,"s":[66.624,30.104,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.972,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.222,0.093,0]},"t":51,"s":[32.305,26.858,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.916,1.208,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.117,-0.043,0]},"t":52,"s":[11.683,-0.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.198,0.965,1]},"o":{"x":[0.167,0.167,0.167],"y":[10.387,0.06,0]},"t":53,"s":[20.245,17.535,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.475,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,-0.06,0]},"t":54,"s":[20.314,-45.662,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.442,0.954,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,0.157,0]},"t":55,"s":[19.25,-8.935,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,-0.101,0]},"t":56,"s":[13.603,32.461,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,0.766,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,0.01,0]},"t":57,"s":[49.18,13.788,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,0.129,0]},"t":58,"s":[29.913,35.117,100]},{"t":59,"s":[50.756,73.724,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":9,"op":60,"st":9,"bm":0},{"ddd":0,"ind":37,"ty":4,"nm":"Shape Layer 15","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":33,"s":[100]},{"t":49,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.63},"o":{"x":0.167,"y":0.167},"t":6,"s":[275.485,257.563,0],"to":[-0.11,-0.249,0],"ti":[0.689,1.001,0]},{"i":{"x":0.833,"y":0.767},"o":{"x":0.167,"y":0.108},"t":7,"s":[274.824,256.066,0],"to":[-0.689,-1.001,0],"ti":[1.729,2.01,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.13},"t":8,"s":[271.354,251.559,0],"to":[-1.729,-2.01,0],"ti":[2.505,2.573,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":9,"s":[264.452,244.008,0],"to":[-2.505,-2.573,0],"ti":[2.58,2.412,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":10,"s":[256.321,236.124,0],"to":[-2.58,-2.412,0],"ti":[2.262,1.991,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":11,"s":[248.97,229.538,0],"to":[-2.262,-1.991,0],"ti":[1.91,1.643,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":12,"s":[242.747,224.176,0],"to":[-1.91,-1.643,0],"ti":[1.608,1.404,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":13,"s":[237.508,219.678,0],"to":[-1.608,-1.404,0],"ti":[1.343,1.257,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.179},"t":14,"s":[233.099,215.75,0],"to":[-1.343,-1.257,0],"ti":[1.062,1.209,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":15,"s":[229.447,212.138,0],"to":[-1.062,-1.209,0],"ti":[0.452,1.267,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.177},"t":16,"s":[226.724,208.498,0],"to":[-0.452,-1.267,0],"ti":[-0.52,1.026,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.171},"t":17,"s":[226.732,204.537,0],"to":[0.52,-1.026,0],"ti":[-1.055,0.562,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":18,"s":[229.844,202.343,0],"to":[1.055,-0.562,0],"ti":[-1.033,0.324,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":19,"s":[233.062,201.165,0],"to":[1.033,-0.324,0],"ti":[-0.951,0.215,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[236.043,200.396,0],"to":[0.951,-0.215,0],"ti":[-0.867,0.144,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[238.767,199.873,0],"to":[0.867,-0.144,0],"ti":[-0.789,0.088,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[241.247,199.533,0],"to":[0.789,-0.088,0],"ti":[-0.717,0.039,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":23,"s":[243.501,199.346,0],"to":[0.717,-0.039,0],"ti":[-0.654,0.005,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[245.548,199.298,0],"to":[0.654,-0.005,0],"ti":[-0.601,-0.009,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[247.425,199.317,0],"to":[0.601,0.009,0],"ti":[-0.552,-0.013,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":26,"s":[249.152,199.353,0],"to":[0.552,0.013,0],"ti":[-0.504,-0.015,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[250.734,199.397,0],"to":[0.504,0.015,0],"ti":[-0.457,-0.014,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":28,"s":[252.175,199.441,0],"to":[0.457,0.014,0],"ti":[-0.412,-0.011,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":29,"s":[253.479,199.479,0],"to":[0.412,0.011,0],"ti":[-0.367,-0.007,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":30,"s":[254.647,199.506,0],"to":[0.367,0.007,0],"ti":[-0.324,-0.001,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":31,"s":[255.684,199.519,0],"to":[0.324,0.001,0],"ti":[-0.281,0.005,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.18},"t":32,"s":[256.59,199.514,0],"to":[0.281,-0.005,0],"ti":[-0.238,0.012,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":33,"s":[257.369,199.488,0],"to":[0.238,-0.012,0],"ti":[-0.197,0.019,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.186},"t":34,"s":[258.021,199.442,0],"to":[0.197,-0.019,0],"ti":[-0.156,0.027,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.189},"t":35,"s":[258.548,199.373,0],"to":[0.156,-0.027,0],"ti":[-0.116,0.034,0]},{"i":{"x":0.833,"y":0.856},"o":{"x":0.167,"y":0.194},"t":36,"s":[258.956,199.282,0],"to":[0.116,-0.034,0],"ti":[-0.078,0.042,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.199},"t":37,"s":[259.247,199.167,0],"to":[0.078,-0.042,0],"ti":[-0.042,0.049,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.191},"t":38,"s":[259.427,199.031,0],"to":[0.042,-0.049,0],"ti":[-0.007,0.055,0]},{"i":{"x":0.833,"y":0.809},"o":{"x":0.167,"y":0.164},"t":39,"s":[259.498,198.875,0],"to":[0.007,-0.055,0],"ti":[0.027,0.061,0]},{"i":{"x":0.833,"y":0.808},"o":{"x":0.167,"y":0.148},"t":40,"s":[259.466,198.699,0],"to":[-0.027,-0.061,0],"ti":[0.059,0.066,0]},{"i":{"x":0.833,"y":0.813},"o":{"x":0.167,"y":0.147},"t":41,"s":[259.336,198.506,0],"to":[-0.059,-0.066,0],"ti":[0.089,0.071,0]},{"i":{"x":0.833,"y":0.818},"o":{"x":0.167,"y":0.15},"t":42,"s":[259.112,198.3,0],"to":[-0.089,-0.071,0],"ti":[0.117,0.074,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.153},"t":43,"s":[258.802,198.083,0],"to":[-0.117,-0.074,0],"ti":[0.142,0.075,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.156},"t":44,"s":[258.411,197.859,0],"to":[-0.142,-0.075,0],"ti":[0.165,0.075,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.158},"t":45,"s":[257.947,197.632,0],"to":[-0.165,-0.075,0],"ti":[0.182,0.074,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.163},"t":46,"s":[257.418,197.407,0],"to":[-0.182,-0.074,0],"ti":[0.188,0.072,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.167},"t":47,"s":[256.856,197.186,0],"to":[-0.188,-0.072,0],"ti":[0.188,0.068,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":48,"s":[256.29,196.974,0],"to":[-0.188,-0.068,0],"ti":[0.184,0.062,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":49,"s":[255.73,196.777,0],"to":[-0.184,-0.062,0],"ti":[0.178,0.054,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":50,"s":[255.185,196.601,0],"to":[-0.178,-0.054,0],"ti":[0.168,0.043,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.174},"t":51,"s":[254.664,196.453,0],"to":[-0.168,-0.043,0],"ti":[0.154,0.03,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.177},"t":52,"s":[254.178,196.341,0],"to":[-0.154,-0.03,0],"ti":[0.136,0.014,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.181},"t":53,"s":[253.74,196.272,0],"to":[-0.136,-0.014,0],"ti":[0.114,-0.009,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.185},"t":54,"s":[253.361,196.256,0],"to":[-0.114,0.009,0],"ti":[0.088,-0.039,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.176},"t":55,"s":[253.059,196.325,0],"to":[-0.088,0.039,0],"ti":[0.062,-0.069,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.163},"t":56,"s":[252.835,196.49,0],"to":[-0.062,0.069,0],"ti":[0.038,-0.096,0]},{"i":{"x":0.833,"y":0.82},"o":{"x":0.167,"y":0.156},"t":57,"s":[252.687,196.74,0],"to":[-0.038,0.096,0],"ti":[0.015,-0.119,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.155},"t":58,"s":[252.609,197.066,0],"to":[-0.015,0.119,0],"ti":[0.002,-0.065,0]},{"t":59,"s":[252.597,197.456,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.755,1.005,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":6,"s":[82.502,83.365,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.13,0.857,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.126,0.005,0]},"t":7,"s":[92.567,121.915,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,1.043,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.199,0]},"t":8,"s":[112.053,80.824,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.103,0.029,0]},"t":9,"s":[62.128,51.3,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.612,1.126,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.269,0.247,0]},"t":10,"s":[84.48,96.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.869,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.106,0.05,0]},"t":11,"s":[94.531,118.987,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.7,1.007,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.155,0.229,0]},"t":12,"s":[131.266,61.724,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.907,0.775,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.006,0]},"t":13,"s":[118.417,29.003,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.355,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.826,0.132,0]},"t":14,"s":[85.075,64.302,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.982,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,-0.001,0]},"t":15,"s":[81.335,124.25,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.023,0.465,0]},"t":16,"s":[101.012,65.094,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.675,1.303,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.722,0.245,0]},"t":17,"s":[85.57,52.183,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,0.888,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.086,0.065,0]},"t":18,"s":[84.785,45.511,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.611,0.792,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.406,0.329,0]},"t":19,"s":[60.369,76.428,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,1.274,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.139,0]},"t":20,"s":[54.064,86.903,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.399,0.064,0]},"t":21,"s":[106.629,102.562,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.815,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.186,-0.033,0]},"t":22,"s":[97.556,35.47,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.903,2.194,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.152,-1.466,0]},"t":23,"s":[90.213,83.359,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.319,1.048,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.578,0.078,0]},"t":24,"s":[81.292,80.783,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.967,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.031,0]},"t":25,"s":[79.79,120.257,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.122,-0.054,0]},"t":26,"s":[123.086,57.838,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.232,0.873,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.07,-0.045,0]},"t":27,"s":[105.488,95.827,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.055,0.885,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,0.244,0]},"t":28,"s":[115.025,71.124,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,1.655,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,0.303,0]},"t":29,"s":[78.946,58.294,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.622,0.901,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.606,0.074,0]},"t":30,"s":[138.694,53.428,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.751,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.515,0]},"t":31,"s":[141.965,96.547,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.001,1.291,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,0.125,0]},"t":32,"s":[114.285,104.867,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.034,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.001,0.065,0]},"t":33,"s":[88.923,121.377,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.803,1.172,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,-0.633,0]},"t":34,"s":[114.574,47.291,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.145,0.056,0]},"t":35,"s":[78.466,55.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.8,1.065,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.086,-0.111,0]},"t":36,"s":[29.34,29.523,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.143,0.036,0]},"t":37,"s":[53.468,40.837,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.752,0.669,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.176,-0.016,0]},"t":38,"s":[87.347,20.728,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.766,1.02,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.126,0.111,0]},"t":39,"s":[76.456,37.629,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.129,0.016,0]},"t":40,"s":[54.995,87.783,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.044,1.088,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.403,-0.082,0]},"t":41,"s":[16.235,25.439,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.502,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.029,0.043,0]},"t":42,"s":[22.876,56.837,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,-0.033,0]},"t":43,"s":[12.722,-7.888,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.475,0.348,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.373,-1.253,0]},"t":44,"s":[84.051,38.375,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.949,0.884,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.099,0.096,0]},"t":45,"s":[71.021,35.491,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.795,1.365,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.133,0.294,0]},"t":46,"s":[1.946,15.801,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.93,1.015,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.14,0.068,0]},"t":47,"s":[28.567,8.027,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.248,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.452,0.012,0]},"t":48,"s":[67.532,49.862,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,1.749,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,-1.199,0]},"t":49,"s":[61.469,0.74,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.813,1.078,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.542,0.075,0]},"t":50,"s":[12.831,3.931,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.066,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.15,0.04,0]},"t":51,"s":[19.315,-27.951,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.028,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,-0.035,0]},"t":52,"s":[27.419,33.62,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.067,0.472,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.021,-0.242,0]},"t":53,"s":[12.92,-9.628,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.982,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,0.099,0]},"t":54,"s":[32.326,1.452,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.022,0.009,0]},"t":55,"s":[-2.724,60.543,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,-0.245,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.186,-1.156,0]},"t":56,"s":[24.945,-5.97,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.875,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.035,0.089,0]},"t":57,"s":[47.481,-1.498,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.25,-0.046,0]},"t":58,"s":[31.587,60.823,100]},{"t":59,"s":[23.622,20.517,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[6,32],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":6.599,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.167325382607,0.716982433843,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-7.382,-25.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":60,"st":6,"bm":0},{"ddd":0,"ind":38,"ty":4,"nm":"Shape Layer 14","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":34,"s":[100]},{"t":50,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.588},"o":{"x":0.167,"y":0.167},"t":7,"s":[276.873,250.83,0],"to":[-0.189,-0.223,0],"ti":[1.057,0.986,0]},{"i":{"x":0.833,"y":0.763},"o":{"x":0.167,"y":0.104},"t":8,"s":[275.739,249.492,0],"to":[-1.057,-0.986,0],"ti":[2.736,1.782,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":9,"s":[270.529,244.915,0],"to":[-2.736,-1.782,0],"ti":[4.156,1.618,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":10,"s":[259.324,238.803,0],"to":[-4.156,-1.618,0],"ti":[4.345,0.759,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.179},"t":11,"s":[245.595,235.21,0],"to":[-4.345,-0.759,0],"ti":[3.769,0.09,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":12,"s":[233.251,234.251,0],"to":[-3.769,-0.09,0],"ti":[3.138,-0.25,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.183},"t":13,"s":[222.982,234.672,0],"to":[-3.138,0.25,0],"ti":[2.634,-0.412,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":14,"s":[214.421,235.749,0],"to":[-2.634,0.412,0],"ti":[2.24,-0.491,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":15,"s":[207.179,237.146,0],"to":[-2.24,0.491,0],"ti":[1.931,-0.529,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":16,"s":[200.979,238.697,0],"to":[-1.931,0.529,0],"ti":[1.683,-0.547,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":17,"s":[195.596,240.321,0],"to":[-1.683,0.547,0],"ti":[1.48,-0.555,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":18,"s":[190.881,241.977,0],"to":[-1.48,0.555,0],"ti":[1.309,-0.559,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":19,"s":[186.716,243.649,0],"to":[-1.309,0.559,0],"ti":[1.16,-0.566,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":20,"s":[183.025,245.334,0],"to":[-1.16,0.566,0],"ti":[1.025,-0.581,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":21,"s":[179.755,247.045,0],"to":[-1.025,0.581,0],"ti":[0.884,-0.616,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":22,"s":[176.877,248.822,0],"to":[-0.884,0.616,0],"ti":[0.678,-0.697,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.175},"t":23,"s":[174.448,250.742,0],"to":[-0.678,0.697,0],"ti":[0.181,-0.747,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.183},"t":24,"s":[172.806,253.001,0],"to":[-0.181,0.747,0],"ti":[-0.395,-0.538,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":25,"s":[173.36,255.224,0],"to":[0.395,0.538,0],"ti":[-0.6,-0.241,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":26,"s":[175.177,256.227,0],"to":[0.6,0.241,0],"ti":[-0.564,-0.106,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":27,"s":[176.961,256.669,0],"to":[0.564,0.106,0],"ti":[-0.502,-0.043,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":28,"s":[178.564,256.865,0],"to":[0.502,0.043,0],"ti":[-0.439,-0.008,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":29,"s":[179.975,256.928,0],"to":[0.439,0.008,0],"ti":[-0.38,0.014,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":30,"s":[181.2,256.911,0],"to":[0.38,-0.014,0],"ti":[-0.325,0.028,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.181},"t":31,"s":[182.253,256.843,0],"to":[0.325,-0.028,0],"ti":[-0.275,0.036,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.182},"t":32,"s":[183.148,256.743,0],"to":[0.275,-0.036,0],"ti":[-0.23,0.04,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.183},"t":33,"s":[183.9,256.626,0],"to":[0.23,-0.04,0],"ti":[-0.19,0.041,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.184},"t":34,"s":[184.526,256.502,0],"to":[0.19,-0.041,0],"ti":[-0.155,0.04,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.185},"t":35,"s":[185.04,256.378,0],"to":[0.155,-0.04,0],"ti":[-0.125,0.037,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.187},"t":36,"s":[185.458,256.261,0],"to":[0.125,-0.037,0],"ti":[-0.1,0.031,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.187},"t":37,"s":[185.791,256.158,0],"to":[0.1,-0.031,0],"ti":[-0.082,0.022,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.185},"t":38,"s":[186.06,256.075,0],"to":[0.082,-0.022,0],"ti":[-0.073,0.001,0]},{"i":{"x":0.833,"y":0.822},"o":{"x":0.167,"y":0.172},"t":39,"s":[186.284,256.027,0],"to":[0.073,-0.001,0],"ti":[-0.069,-0.03,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.157},"t":40,"s":[186.495,256.07,0],"to":[0.069,0.03,0],"ti":[-0.067,-0.059,0]},{"i":{"x":0.833,"y":0.818},"o":{"x":0.167,"y":0.153},"t":41,"s":[186.699,256.205,0],"to":[0.067,0.059,0],"ti":[-0.065,-0.084,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.154},"t":42,"s":[186.897,256.422,0],"to":[0.065,0.084,0],"ti":[-0.063,-0.106,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.156},"t":43,"s":[187.09,256.71,0],"to":[0.063,0.106,0],"ti":[-0.062,-0.125,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.158},"t":44,"s":[187.278,257.059,0],"to":[0.062,0.125,0],"ti":[-0.059,-0.141,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":45,"s":[187.46,257.46,0],"to":[0.059,0.141,0],"ti":[-0.057,-0.153,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":46,"s":[187.635,257.904,0],"to":[0.057,0.153,0],"ti":[-0.059,-0.163,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":47,"s":[187.802,258.381,0],"to":[0.059,0.163,0],"ti":[-0.07,-0.168,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":48,"s":[187.988,258.88,0],"to":[0.07,0.168,0],"ti":[-0.084,-0.171,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":49,"s":[188.22,259.391,0],"to":[0.084,0.171,0],"ti":[-0.097,-0.171,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":50,"s":[188.492,259.907,0],"to":[0.097,0.171,0],"ti":[-0.108,-0.169,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":51,"s":[188.799,260.419,0],"to":[0.108,0.169,0],"ti":[-0.117,-0.165,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":52,"s":[189.138,260.923,0],"to":[0.117,0.165,0],"ti":[-0.125,-0.159,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.167},"t":53,"s":[189.502,261.41,0],"to":[0.125,0.159,0],"ti":[-0.13,-0.151,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":54,"s":[189.886,261.876,0],"to":[0.13,0.151,0],"ti":[-0.134,-0.141,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":55,"s":[190.284,262.315,0],"to":[0.134,0.141,0],"ti":[-0.135,-0.13,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":56,"s":[190.69,262.722,0],"to":[0.135,0.13,0],"ti":[-0.135,-0.117,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":57,"s":[191.097,263.093,0],"to":[0.135,0.117,0],"ti":[-0.132,-0.103,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.173},"t":58,"s":[191.499,263.423,0],"to":[0.132,0.103,0],"ti":[-0.065,-0.048,0]},{"t":59,"s":[191.888,263.709,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.973,0.541,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":7,"s":[98.652,70.754,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.848,0.518,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.04,0.102,0]},"t":8,"s":[52.407,72.577,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.779,0.997,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.184,0.101,0]},"t":9,"s":[83.757,80.783,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.134,-0.003,0]},"t":10,"s":[109.776,120.093,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.877,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.028,0.222,0]},"t":11,"s":[152.905,82.158,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.679,0.626,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.257,-0.12,0]},"t":12,"s":[120.66,59.419,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.107,0]},"t":13,"s":[105.207,68.721,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.545,0.804,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.14,-0.083,0]},"t":14,"s":[61.164,101.207,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,1.003,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,0.145,0]},"t":15,"s":[57.69,84.913,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.643,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.256,0.003,0]},"t":16,"s":[83.888,62.79,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.821,0.798,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.109,0.204,0]},"t":17,"s":[77.451,85.785,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.087,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.156,0.142,0]},"t":18,"s":[56.288,101.636,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,1.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.042,0.454,0]},"t":19,"s":[32.111,124.298,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.091,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.178,0.076,0]},"t":20,"s":[81.428,129.386,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.009,0.967,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.043,0.259,0]},"t":21,"s":[65.685,67.723,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.955,0.799,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.008,-0.054,0]},"t":22,"s":[98.593,38.482,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.732,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.096,0.142,0]},"t":23,"s":[62.324,56.222,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.936,0.271,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.121,0.546,0]},"t":24,"s":[79.166,81.278,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.276,0.094,0]},"t":25,"s":[116.554,85.792,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.592,0.744,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.377,-0.236,0]},"t":26,"s":[107.89,120.793,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.083,0.766,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.124,0]},"t":27,"s":[109.46,111.669,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.998,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.042,0.129,0]},"t":28,"s":[96.752,92.8,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.687,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.002,-0.162,0]},"t":29,"s":[122.109,58.72,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.192,0.866,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.084,0.114,0]},"t":30,"s":[97.302,70.284,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.964,1.117,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,0.219,0]},"t":31,"s":[109.621,102.162,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.063,0.049,0]},"t":32,"s":[68.943,121.676,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.514,0.947,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.428,-0.071,0]},"t":33,"s":[92.184,74.87,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,0.654,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,-0.144,0]},"t":34,"s":[97.803,100.145,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.734,0.804,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.175,0.11,0]},"t":35,"s":[57.518,90.885,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.006,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.121,0.145,0]},"t":36,"s":[70.533,61.657,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.907,0.638,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,-0.187,0]},"t":37,"s":[99.011,22.279,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.045,0.875,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.773,0.108,0]},"t":38,"s":[68.391,34.404,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.907,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.029,0.249,0]},"t":39,"s":[64.692,74.939,100]},{"i":{"x":[0.833,0.833,0.833],"y":[8.194,0.523,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.82,-0.051,0]},"t":40,"s":[70.385,95.308,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,0.92,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.082,0.101,0]},"t":41,"s":[71.029,82.647,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.654,0.166,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.168,-2.039,0]},"t":42,"s":[14.793,22.846,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.026,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.11,0.093,0]},"t":43,"s":[33.445,25.195,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,1.479,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.754,0]},"t":44,"s":[92.281,46.336,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.981,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.884,0.071,0]},"t":45,"s":[15.049,48.962,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.761,1.318,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.024,-0.118,0]},"t":46,"s":[7.007,31.245,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.054,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.128,0.066,0]},"t":47,"s":[13.248,38.566,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.957,1.045,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,-0.241,0]},"t":48,"s":[24.888,3.264,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.6,1.009,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.09,0.029,0]},"t":49,"s":[5.738,12.341,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.105,0.008,0]},"t":50,"s":[14.963,-1.634,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,0.639,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.091,-0.275,0]},"t":51,"s":[50.015,13.874,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.185,1.318,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.46,0.108,0]},"t":52,"s":[33.27,10.27,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.869,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.078,0.066,0]},"t":53,"s":[35.84,-1.726,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.164,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.228,-0.049,0]},"t":54,"s":[-3.278,56.039,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,1.064,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.177,0]},"t":55,"s":[-25.859,19.601,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.938,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.139,0.036,0]},"t":56,"s":[41.265,-12.971,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.325,0.731,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.118,-0.247,0]},"t":57,"s":[16.064,44.564,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.066,0.121,0]},"t":58,"s":[26.47,30.06,100]},{"t":59,"s":[-24.557,-2.189,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":60,"st":7,"bm":0},{"ddd":0,"ind":39,"ty":4,"nm":"Shape Layer 13","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[100]},{"t":53,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.569},"o":{"x":0.167,"y":0.167},"t":10,"s":[278.346,255.953,0],"to":[-0.206,-0.234,0],"ti":[0.991,1.248,0]},{"i":{"x":0.833,"y":0.794},"o":{"x":0.167,"y":0.103},"t":11,"s":[277.109,254.547,0],"to":[-0.991,-1.248,0],"ti":[0.533,2.822,0]},{"i":{"x":0.833,"y":0.801},"o":{"x":0.167,"y":0.14},"t":12,"s":[272.4,248.463,0],"to":[-0.533,-2.822,0],"ti":[-2.874,1.607,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.143},"t":13,"s":[273.909,237.613,0],"to":[2.874,-1.607,0],"ti":[-4.877,-0.657,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.18},"t":14,"s":[289.644,238.823,0],"to":[4.877,0.657,0],"ti":[-4.118,-0.868,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":15,"s":[303.171,241.554,0],"to":[4.118,0.868,0],"ti":[-3.424,-0.757,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":16,"s":[314.351,244.031,0],"to":[3.424,0.757,0],"ti":[-2.889,-0.625,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":17,"s":[323.717,246.095,0],"to":[2.889,0.625,0],"ti":[-2.477,-0.51,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":18,"s":[331.687,247.782,0],"to":[2.477,0.51,0],"ti":[-2.154,-0.414,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":19,"s":[338.58,249.155,0],"to":[2.154,0.414,0],"ti":[-1.892,-0.333,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":20,"s":[344.611,250.265,0],"to":[1.892,0.333,0],"ti":[-1.675,-0.265,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":21,"s":[349.933,251.155,0],"to":[1.675,0.265,0],"ti":[-1.493,-0.207,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.177},"t":22,"s":[354.663,251.856,0],"to":[1.493,0.207,0],"ti":[-1.344,-0.162,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.176},"t":23,"s":[358.894,252.395,0],"to":[1.344,0.162,0],"ti":[-1.227,-0.138,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[362.724,252.827,0],"to":[1.227,0.138,0],"ti":[-1.133,-0.127,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":25,"s":[366.255,253.222,0],"to":[1.133,0.127,0],"ti":[-1.051,-0.117,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":26,"s":[369.523,253.587,0],"to":[1.051,0.117,0],"ti":[-0.978,-0.109,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":27,"s":[372.561,253.926,0],"to":[0.978,0.109,0],"ti":[-0.912,-0.101,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":28,"s":[375.391,254.24,0],"to":[0.912,0.101,0],"ti":[-0.852,-0.093,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":29,"s":[378.033,254.529,0],"to":[0.852,0.093,0],"ti":[-0.796,-0.085,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":30,"s":[380.502,254.795,0],"to":[0.796,0.085,0],"ti":[-0.745,-0.076,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":31,"s":[382.812,255.037,0],"to":[0.745,0.076,0],"ti":[-0.697,-0.068,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":32,"s":[384.972,255.253,0],"to":[0.697,0.068,0],"ti":[-0.651,-0.059,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":33,"s":[386.993,255.443,0],"to":[0.651,0.059,0],"ti":[-0.608,-0.05,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":34,"s":[388.881,255.606,0],"to":[0.608,0.05,0],"ti":[-0.567,-0.04,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":35,"s":[390.642,255.741,0],"to":[0.567,0.04,0],"ti":[-0.527,-0.03,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":36,"s":[392.281,255.845,0],"to":[0.527,0.03,0],"ti":[-0.488,-0.019,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":37,"s":[393.801,255.919,0],"to":[0.488,0.019,0],"ti":[-0.45,-0.008,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":38,"s":[395.207,255.96,0],"to":[0.45,0.008,0],"ti":[-0.412,0.002,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":39,"s":[396.499,255.969,0],"to":[0.412,-0.002,0],"ti":[-0.375,0.014,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":40,"s":[397.679,255.945,0],"to":[0.375,-0.014,0],"ti":[-0.338,0.025,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":41,"s":[398.748,255.888,0],"to":[0.338,-0.025,0],"ti":[-0.301,0.036,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":42,"s":[399.706,255.797,0],"to":[0.301,-0.036,0],"ti":[-0.264,0.047,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":43,"s":[400.554,255.673,0],"to":[0.264,-0.047,0],"ti":[-0.227,0.057,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":44,"s":[401.291,255.517,0],"to":[0.227,-0.057,0],"ti":[-0.189,0.067,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":45,"s":[401.915,255.33,0],"to":[0.189,-0.067,0],"ti":[-0.151,0.077,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":46,"s":[402.427,255.112,0],"to":[0.151,-0.077,0],"ti":[-0.113,0.086,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.183},"t":47,"s":[402.824,254.867,0],"to":[0.113,-0.086,0],"ti":[-0.074,0.094,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.18},"t":48,"s":[403.104,254.596,0],"to":[0.074,-0.094,0],"ti":[-0.034,0.101,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.172},"t":49,"s":[403.266,254.302,0],"to":[0.034,-0.101,0],"ti":[0.002,0.108,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.162},"t":50,"s":[403.307,253.989,0],"to":[-0.002,-0.108,0],"ti":[0.028,0.114,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.16},"t":51,"s":[403.256,253.656,0],"to":[-0.028,-0.114,0],"ti":[0.05,0.119,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.159},"t":52,"s":[403.14,253.307,0],"to":[-0.05,-0.119,0],"ti":[0.071,0.117,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.165},"t":53,"s":[402.953,252.945,0],"to":[-0.071,-0.117,0],"ti":[0.081,0.103,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":54,"s":[402.716,252.603,0],"to":[-0.081,-0.103,0],"ti":[0.084,0.081,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":55,"s":[402.468,252.328,0],"to":[-0.084,-0.081,0],"ti":[0.087,0.059,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.175},"t":56,"s":[402.212,252.118,0],"to":[-0.087,-0.059,0],"ti":[0.089,0.038,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.172},"t":57,"s":[401.947,251.973,0],"to":[-0.089,-0.038,0],"ti":[0.091,0.018,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.168},"t":58,"s":[401.676,251.89,0],"to":[-0.091,-0.018,0],"ti":[0.046,0.004,0]},{"t":59,"s":[401.399,251.868,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.884,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":10,"s":[150.023,84.302,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.718,0.778,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.295,-0.001,0]},"t":11,"s":[115.536,94.772,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.118,0.133,0]},"t":12,"s":[101.947,84.391,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,1.291,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.243,0.465,0]},"t":13,"s":[69.48,67.085,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.813,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.065,0]},"t":14,"s":[52.556,63.303,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.856,0.84,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.012,0.15,0]},"t":15,"s":[76.674,80.31,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.805,0.955,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.197,0.174,0]},"t":16,"s":[55.698,101.414,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.152,1.045,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.145,-0.098,0]},"t":17,"s":[40.385,120.878,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,1.219,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.029,0]},"t":18,"s":[19.82,111.938,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.016,0.871,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.102,0.06,0]},"t":19,"s":[78.004,125.754,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.949,0.912,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.013,0.234,0]},"t":20,"s":[51.803,75.606,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.062,0.955,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.135,1.443,0]},"t":21,"s":[82.948,47.853,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,-0.218,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.035,-0.097,0]},"t":22,"s":[71.038,46.152,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.784,0.414,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.302,0.089,0]},"t":23,"s":[91.761,46.937,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.136,0.097,0]},"t":24,"s":[99.655,57.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.883,0.788,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.133,-3.004,0]},"t":25,"s":[112.222,122.076,100]},{"i":{"x":[0.833,0.833,0.833],"y":[4.25,0.248,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.289,0.137,0]},"t":26,"s":[111.361,120.336,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.223,0.834,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.094,0]},"t":27,"s":[111.012,117.65,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,1.003,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,0.167,0]},"t":28,"s":[124.959,96.101,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.488,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.648,0.003,0]},"t":29,"s":[73.624,74.745,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.933,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,-0.053,0]},"t":30,"s":[79.474,96.927,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.44,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.337,-0.086,0]},"t":31,"s":[39.363,83.33,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.955,0.354,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,0.158,0]},"t":32,"s":[47.32,90.031,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.968,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.099,0.096,0]},"t":33,"s":[92.847,97.529,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.719,0.771,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.051,-0.044,0]},"t":34,"s":[72.017,148.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.036,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.118,0.131,0]},"t":35,"s":[84.935,114.918,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,1.042,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,-0.658,0]},"t":36,"s":[115.633,56.769,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-3.33,1.406,1]},"o":{"x":[0.167,0.167,0.167],"y":[-14.6,0.028,0]},"t":37,"s":[71.733,63.301,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,0.897,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.085,0.069,0]},"t":38,"s":[71.982,53.5,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.296,1.262,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.435,0]},"t":39,"s":[84.68,111.004,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,0.865,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.065,0.063,0]},"t":40,"s":[96.026,124.642,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.082,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.241,0.218,0]},"t":41,"s":[44.359,68.117,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,1.947,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,1.94,0]},"t":42,"s":[16.99,33.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.848,0.777,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.028,0.077,0]},"t":43,"s":[71.31,31.618,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,1.037,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.185,0.133,0]},"t":44,"s":[30.563,51.009,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.066,0.026,0]},"t":45,"s":[-2.843,83.398,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.188,0.937,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.084,0.448,0]},"t":46,"s":[15.771,36.624,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,-0.025,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,-0.252,0]},"t":47,"s":[6.523,25.933,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.308,1.025,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.823,0.091,0]},"t":48,"s":[36.606,28.591,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.857,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.066,0.019,0]},"t":49,"s":[33.84,58.624,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.022,0.96,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.199,0.224,0]},"t":50,"s":[46.823,19.638,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.667,0.763,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.018,-0.078,0]},"t":51,"s":[56.147,-3.469,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.868,0.839,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.111,0.129,0]},"t":52,"s":[44.338,8.441,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,1.087,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.227,0.172,0]},"t":53,"s":[8.892,30.372,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.016,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.043,0]},"t":54,"s":[-11.629,50.878,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.012,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.013,-0.049,0]},"t":55,"s":[26.385,8.842,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,1.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.011,0.158,0]},"t":56,"s":[-18.969,35.342,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.244,0.053,0]},"t":57,"s":[33.051,65.059,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,-0.359,0]},"t":58,"s":[19.792,-16.798,100]},{"t":59,"s":[53.472,-1.378,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":60,"st":10,"bm":0},{"ddd":0,"ind":40,"ty":4,"nm":"Shape Layer 12","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":38,"s":[100]},{"t":54,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.583},"o":{"x":0.167,"y":0.167},"t":11,"s":[278.886,263.108,0],"to":[-0.396,0.093,0],"ti":[2.046,0.295,0]},{"i":{"x":0.833,"y":0.762},"o":{"x":0.167,"y":0.104},"t":12,"s":[276.51,263.668,0],"to":[-2.046,-0.295,0],"ti":[4.357,2.028,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.128},"t":13,"s":[266.607,261.339,0],"to":[-4.357,-2.028,0],"ti":[5.491,3.808,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":14,"s":[250.369,251.499,0],"to":[-5.491,-3.808,0],"ti":[5.141,4.15,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":15,"s":[233.659,238.49,0],"to":[-5.141,-4.15,0],"ti":[4.303,3.645,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":16,"s":[219.52,226.601,0],"to":[-4.303,-3.645,0],"ti":[3.589,3.053,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.183},"t":17,"s":[207.84,216.618,0],"to":[-3.589,-3.053,0],"ti":[3.064,2.559,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":18,"s":[197.984,208.283,0],"to":[-3.064,-2.559,0],"ti":[2.675,2.164,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":19,"s":[189.458,201.262,0],"to":[-2.675,-2.164,0],"ti":[2.381,1.843,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":20,"s":[181.933,195.3,0],"to":[-2.381,-1.843,0],"ti":[2.153,1.575,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":21,"s":[175.17,190.206,0],"to":[-2.153,-1.575,0],"ti":[1.971,1.344,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[169.014,185.852,0],"to":[-1.971,-1.344,0],"ti":[1.824,1.14,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[163.346,182.143,0],"to":[-1.824,-1.14,0],"ti":[1.703,0.954,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":24,"s":[158.073,179.012,0],"to":[-1.703,-0.954,0],"ti":[1.601,0.778,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[153.127,176.419,0],"to":[-1.601,-0.778,0],"ti":[1.512,0.605,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[148.464,174.344,0],"to":[-1.512,-0.605,0],"ti":[1.427,0.431,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[144.054,172.787,0],"to":[-1.427,-0.431,0],"ti":[1.341,0.252,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":28,"s":[139.899,171.759,0],"to":[-1.341,-0.252,0],"ti":[1.243,0.072,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[136.007,171.274,0],"to":[-1.243,-0.072,0],"ti":[1.123,-0.099,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":30,"s":[132.443,171.328,0],"to":[-1.123,0.099,0],"ti":[0.987,-0.242,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":31,"s":[129.266,171.868,0],"to":[-0.987,0.242,0],"ti":[0.844,-0.342,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":32,"s":[126.522,172.779,0],"to":[-0.844,0.342,0],"ti":[0.71,-0.397,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":33,"s":[124.202,173.921,0],"to":[-0.71,0.397,0],"ti":[0.594,-0.415,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":34,"s":[122.26,175.163,0],"to":[-0.594,0.415,0],"ti":[0.499,-0.407,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":35,"s":[120.635,176.409,0],"to":[-0.499,0.407,0],"ti":[0.424,-0.386,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":36,"s":[119.263,177.604,0],"to":[-0.424,0.386,0],"ti":[0.362,-0.359,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":37,"s":[118.093,178.724,0],"to":[-0.362,0.359,0],"ti":[0.312,-0.329,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":38,"s":[117.089,179.757,0],"to":[-0.312,0.329,0],"ti":[0.271,-0.298,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":39,"s":[116.22,180.697,0],"to":[-0.271,0.298,0],"ti":[0.237,-0.267,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":40,"s":[115.461,181.543,0],"to":[-0.237,0.267,0],"ti":[0.208,-0.237,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":41,"s":[114.796,182.298,0],"to":[-0.208,0.237,0],"ti":[0.183,-0.208,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":42,"s":[114.21,182.964,0],"to":[-0.183,0.208,0],"ti":[0.161,-0.181,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":43,"s":[113.696,183.547,0],"to":[-0.161,0.181,0],"ti":[0.141,-0.155,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":44,"s":[113.244,184.051,0],"to":[-0.141,0.155,0],"ti":[0.122,-0.131,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.182},"t":45,"s":[112.85,184.48,0],"to":[-0.122,0.131,0],"ti":[0.105,-0.107,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":46,"s":[112.51,184.835,0],"to":[-0.105,0.107,0],"ti":[0.089,-0.086,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.186},"t":47,"s":[112.219,185.124,0],"to":[-0.089,0.086,0],"ti":[0.074,-0.066,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.19},"t":48,"s":[111.973,185.351,0],"to":[-0.074,0.066,0],"ti":[0.06,-0.046,0]},{"i":{"x":0.833,"y":0.861},"o":{"x":0.167,"y":0.197},"t":49,"s":[111.772,185.518,0],"to":[-0.06,0.046,0],"ti":[0.046,-0.026,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.208},"t":50,"s":[111.612,185.626,0],"to":[-0.046,0.026,0],"ti":[0.035,-0.013,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.196},"t":51,"s":[111.493,185.674,0],"to":[-0.035,0.013,0],"ti":[0.027,-0.015,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.171},"t":52,"s":[111.404,185.706,0],"to":[-0.027,0.015,0],"ti":[0.021,-0.022,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.164},"t":53,"s":[111.333,185.761,0],"to":[-0.021,0.022,0],"ti":[0.015,-0.028,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.161},"t":54,"s":[111.28,185.837,0],"to":[-0.015,0.028,0],"ti":[0.01,-0.033,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":55,"s":[111.243,185.929,0],"to":[-0.01,0.033,0],"ti":[0.006,-0.036,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.162},"t":56,"s":[111.219,186.034,0],"to":[-0.006,0.036,0],"ti":[0.003,-0.038,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.164},"t":57,"s":[111.207,186.148,0],"to":[-0.003,0.038,0],"ti":[0,-0.039,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.168},"t":58,"s":[111.203,186.265,0],"to":[0,0.039,0],"ti":[0,-0.019,0]},{"t":59,"s":[111.205,186.381,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.894,0.956,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":11,"s":[70.371,73.099,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.011,0.757,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.387,-0.094,0]},"t":12,"s":[81.451,49.764,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.535,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.009,0.127,0]},"t":13,"s":[84.489,60.747,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.814,1.157,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.102,-0.112,0]},"t":14,"s":[81.065,81.842,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.818,1.017,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.151,0.054,0]},"t":15,"s":[65.388,72.828,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.16,0.963,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.154,0.014,0]},"t":16,"s":[46.083,98.818,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.997,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,-0.066,0]},"t":17,"s":[23.236,67.65,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.086,-0.003,0]},"t":18,"s":[90.073,84.988,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.171,1.805,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.806,1.29,0]},"t":19,"s":[57.21,68.22,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,1.029,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.09,0.076,0]},"t":20,"s":[60.29,67.062,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.774,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.06,0.022,0]},"t":21,"s":[100.479,79.398,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.87,1.114,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,0.132,0]},"t":22,"s":[77.165,62.735,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.904,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.233,0.048,0]},"t":23,"s":[97.376,34.245,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.123,1.029,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.158,0.644,0]},"t":24,"s":[108.611,101.546,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,0.834,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.05,0.021,0]},"t":25,"s":[121.197,111.543,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.983,1.031,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.031,0.167,0]},"t":26,"s":[90.035,98.098,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.835,0.878,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.021,0.023,0]},"t":27,"s":[112.765,84.756,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.751,1.24,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.168,0.262,0]},"t":28,"s":[94.608,103.076,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.906,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.125,0.062,0]},"t":29,"s":[76.78,111.632,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.547,-0.27,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.74,2.198,0]},"t":30,"s":[41.278,78.465,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,1.188,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,0.089,0]},"t":31,"s":[36.77,77.159,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.441,0.893,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.649,0.058,0]},"t":32,"s":[70.888,58.554,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.52,1.21,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,0.377,0]},"t":33,"s":[71.996,119.193,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.101,0.06,0]},"t":34,"s":[78.321,136.39,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.766,1.004,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.031,-0.115,0]},"t":35,"s":[108.467,75.868,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.964,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.129,0.004,0]},"t":36,"s":[86.503,101.319,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.825,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.079,-0.062,0]},"t":37,"s":[46.776,74.608,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.98,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,0.159,0]},"t":38,"s":[67.187,89.94,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.699,3.529,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.027,1.019,0]},"t":39,"s":[85.904,106.857,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.081,0]},"t":40,"s":[71.727,108.364,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.929,0.834,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.984,0.401,0]},"t":41,"s":[34.691,61.105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.084,1.299,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.168,0]},"t":42,"s":[33.627,48.718,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.001,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.042,0.065,0]},"t":43,"s":[59.325,36.458,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.001,-0.001,0]},"t":44,"s":[7.81,92.753,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.889,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.168,-0.538,0]},"t":45,"s":[59.941,37.215,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.33,1.334,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.335,-0.083,0]},"t":46,"s":[42.632,44.663,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.973,0.992,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,0.067,0]},"t":47,"s":[36.89,40.928,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.915,0.649,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.04,-0.009,0]},"t":48,"s":[65.36,59.633,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.366,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[3.347,0.109,0]},"t":49,"s":[46.071,42.784,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.284,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,-0.023,0]},"t":50,"s":[45.578,-11.282,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,-5.807,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,7.457,0]},"t":51,"s":[42.321,31.087,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.98,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.033,0.084,0]},"t":52,"s":[17.582,31.566,100]},{"i":{"x":[0.833,0.833,0.833],"y":[4.784,0.838,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.171,-0.026,0]},"t":53,"s":[35.243,70.197,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.95,1.095,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.082,0.171,0]},"t":54,"s":[36.597,40.776,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.762,1.02,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.123,0.044,0]},"t":55,"s":[-26.212,12.89,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.889,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.128,0.016,0]},"t":56,"s":[-0.792,72.669,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.804,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.335,-0.211,0]},"t":57,"s":[46.469,-1.813,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.145,1.163,0]},"t":58,"s":[62.111,19.267,100]},{"t":59,"s":[83.28,20.895,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":60,"st":11,"bm":0},{"ddd":0,"ind":41,"ty":4,"nm":"Shape Layer 11","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100]},{"t":48,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.595},"o":{"x":0.167,"y":0.167},"t":5,"s":[280.895,263.305,0],"to":[-0.567,0.175,0],"ti":[2.713,-0.992,0]},{"i":{"x":0.833,"y":0.764},"o":{"x":0.167,"y":0.105},"t":6,"s":[277.49,264.357,0],"to":[-2.713,0.992,0],"ti":[6.007,-2.449,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":7,"s":[264.618,269.257,0],"to":[-6.007,2.449,0],"ti":[8.091,-3.591,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":8,"s":[241.447,279.054,0],"to":[-8.091,3.591,0],"ti":[7.873,-3.782,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":9,"s":[216.07,290.801,0],"to":[-7.873,3.782,0],"ti":[6.648,-3.432,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":10,"s":[194.207,301.746,0],"to":[-6.648,3.432,0],"ti":[5.503,-3.025,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":11,"s":[176.185,311.391,0],"to":[-5.503,3.025,0],"ti":[4.615,-2.683,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":12,"s":[161.19,319.898,0],"to":[-4.615,2.683,0],"ti":[3.935,-2.407,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":13,"s":[148.493,327.489,0],"to":[-3.935,2.407,0],"ti":[3.399,-2.181,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":14,"s":[137.583,334.338,0],"to":[-3.399,2.181,0],"ti":[2.966,-1.993,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":15,"s":[128.098,340.575,0],"to":[-2.966,1.993,0],"ti":[2.607,-1.832,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":16,"s":[119.785,346.294,0],"to":[-2.607,1.832,0],"ti":[2.302,-1.693,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":17,"s":[112.455,351.568,0],"to":[-2.302,1.693,0],"ti":[2.037,-1.57,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":18,"s":[105.973,356.452,0],"to":[-2.037,1.57,0],"ti":[1.803,-1.461,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":19,"s":[100.233,360.99,0],"to":[-1.803,1.461,0],"ti":[1.593,-1.362,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[95.155,365.216,0],"to":[-1.593,1.362,0],"ti":[1.401,-1.271,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":21,"s":[90.677,369.16,0],"to":[-1.401,1.271,0],"ti":[1.224,-1.188,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[86.752,372.844,0],"to":[-1.224,1.188,0],"ti":[1.07,-1.108,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[83.332,376.285,0],"to":[-1.07,1.108,0],"ti":[0.937,-1.031,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":24,"s":[80.332,379.49,0],"to":[-0.937,1.031,0],"ti":[0.818,-0.958,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":25,"s":[77.708,382.471,0],"to":[-0.818,0.958,0],"ti":[0.71,-0.889,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":26,"s":[75.425,385.239,0],"to":[-0.71,0.889,0],"ti":[0.612,-0.822,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":27,"s":[73.45,387.804,0],"to":[-0.612,0.822,0],"ti":[0.523,-0.758,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[71.754,390.173,0],"to":[-0.523,0.758,0],"ti":[0.442,-0.696,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":29,"s":[70.313,392.354,0],"to":[-0.442,0.696,0],"ti":[0.369,-0.637,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":30,"s":[69.102,394.352,0],"to":[-0.369,0.637,0],"ti":[0.304,-0.579,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":31,"s":[68.096,396.175,0],"to":[-0.304,0.579,0],"ti":[0.245,-0.524,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":32,"s":[67.277,397.829,0],"to":[-0.245,0.524,0],"ti":[0.193,-0.471,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":33,"s":[66.624,399.32,0],"to":[-0.193,0.471,0],"ti":[0.147,-0.42,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":34,"s":[66.118,400.656,0],"to":[-0.147,0.42,0],"ti":[0.105,-0.37,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":35,"s":[65.744,401.84,0],"to":[-0.105,0.37,0],"ti":[0.069,-0.322,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":36,"s":[65.487,402.877,0],"to":[-0.069,0.322,0],"ti":[0.037,-0.276,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.183},"t":37,"s":[65.332,403.773,0],"to":[-0.037,0.276,0],"ti":[0.009,-0.231,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.185},"t":38,"s":[65.265,404.532,0],"to":[-0.009,0.231,0],"ti":[-0.014,-0.188,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.187},"t":39,"s":[65.276,405.16,0],"to":[0.014,0.188,0],"ti":[-0.034,-0.146,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.189},"t":40,"s":[65.351,405.66,0],"to":[0.034,0.146,0],"ti":[-0.051,-0.106,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.19},"t":41,"s":[65.481,406.037,0],"to":[0.051,0.106,0],"ti":[-0.064,-0.066,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.186},"t":42,"s":[65.655,406.293,0],"to":[0.064,0.066,0],"ti":[-0.074,-0.028,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.172},"t":43,"s":[65.864,406.433,0],"to":[0.074,0.028,0],"ti":[-0.081,0.01,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.158},"t":44,"s":[66.098,406.459,0],"to":[0.081,-0.01,0],"ti":[-0.083,0.038,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.161},"t":45,"s":[66.349,406.373,0],"to":[0.083,-0.038,0],"ti":[-0.078,0.048,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":46,"s":[66.596,406.231,0],"to":[0.078,-0.048,0],"ti":[-0.069,0.051,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":47,"s":[66.819,406.083,0],"to":[0.069,-0.051,0],"ti":[-0.057,0.054,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":48,"s":[67.01,405.928,0],"to":[0.057,-0.054,0],"ti":[-0.042,0.058,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.174},"t":49,"s":[67.16,405.761,0],"to":[0.042,-0.058,0],"ti":[-0.023,0.063,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.168},"t":50,"s":[67.259,405.58,0],"to":[0.023,-0.063,0],"ti":[-0.001,0.07,0]},{"i":{"x":0.833,"y":0.82},"o":{"x":0.167,"y":0.159},"t":51,"s":[67.298,405.38,0],"to":[0.001,-0.07,0],"ti":[0.023,0.076,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.155},"t":52,"s":[67.266,405.158,0],"to":[-0.023,-0.076,0],"ti":[0.046,0.073,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.166},"t":53,"s":[67.158,404.922,0],"to":[-0.046,-0.073,0],"ti":[0.062,0.06,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.166},"t":54,"s":[66.993,404.72,0],"to":[-0.062,-0.06,0],"ti":[0.076,0.046,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.165},"t":55,"s":[66.783,404.561,0],"to":[-0.076,-0.046,0],"ti":[0.086,0.031,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":56,"s":[66.539,404.446,0],"to":[-0.086,-0.031,0],"ti":[0.093,0.016,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.164},"t":57,"s":[66.269,404.376,0],"to":[-0.093,-0.016,0],"ti":[0.097,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"t":58,"s":[65.982,404.352,0],"to":[-0.097,0,0],"ti":[0.049,-0.004,0]},{"t":59,"s":[65.686,404.375,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.938,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":5,"s":[49.45,148.28,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.038,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.246,0.447,0]},"t":6,"s":[96.233,59.296,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.026,0.012,0]},"t":7,"s":[84.39,38.927,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.66,0.535,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.391,-0.32,0]},"t":8,"s":[101.568,62.764,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.102,0]},"t":9,"s":[106.222,57.834,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.162,0.853,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.472,-0.001,0]},"t":10,"s":[64.691,35.274,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.955,0.795,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.193,0]},"t":11,"s":[70.923,57.653,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,1.022,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.098,0.141,0]},"t":12,"s":[127.324,74.727,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,0.018,0]},"t":13,"s":[101.458,99.601,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.386,1.222,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.314,-0.197,0]},"t":14,"s":[73.693,68.044,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.064,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.061,0]},"t":15,"s":[79.522,77.427,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,1.413,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,0.681,0]},"t":16,"s":[46.671,43.016,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.358,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.543,0.069,0]},"t":17,"s":[104.84,38.219,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.006,1.25,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,-0.2,0]},"t":18,"s":[97.095,66.774,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,0.063,0]},"t":19,"s":[45.158,58.378,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,1.295,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.142,0.42,0]},"t":20,"s":[100.992,91.978,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.782,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.105,0.065,0]},"t":21,"s":[80.364,100.301,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.813,0.641,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,-0.451,0]},"t":22,"s":[89.494,62.471,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.187,0.991,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.15,0.109,0]},"t":23,"s":[104.25,68.373,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,0.748,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,-0.01,0]},"t":24,"s":[122.573,87.899,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.546,1.004,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.303,0.124,0]},"t":25,"s":[63.056,70.386,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,0.876,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.088,0.004,0]},"t":26,"s":[66.633,34.869,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.782,0.805,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.233,0.254,0]},"t":27,"s":[129.403,72.011,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.806,1.026,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,0.145,0]},"t":28,"s":[112.863,90.111,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,0.817,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.146,0.02,0]},"t":29,"s":[86.228,114.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,0.937,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.514,0.153,0]},"t":30,"s":[50.891,82.427,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.248,0.388,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,-0.251,0]},"t":31,"s":[55.82,44.045,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,0.096,0]},"t":32,"s":[49.632,53.61,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.992,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.404,-0.058,0]},"t":33,"s":[74.255,114.253,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.123,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.009,1.243,0]},"t":34,"s":[80.651,78.395,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.169,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,-0.398,0]},"t":35,"s":[74.861,75.817,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.802,1.723,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.176,0.093,0]},"t":36,"s":[19.702,76.263,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,1.043,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.144,0.075,0]},"t":37,"s":[37.393,80.265,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.507,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.243,0.028,0]},"t":38,"s":[61.705,41.546,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.85,0.881,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.1,-0.133,0]},"t":39,"s":[55.488,100.178,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.039,0.614,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.187,0.279,0]},"t":40,"s":[24.961,77.623,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.03,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.026,0.106,0]},"t":41,"s":[0.375,68.025,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.01,1.132,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,-0.04,0]},"t":42,"s":[36.365,33.155,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.865,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.009,0.051,0]},"t":43,"s":[-12.521,56.708,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.219,-0.051,0]},"t":44,"s":[42.47,-4.293,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,1.38,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.941,0]},"t":45,"s":[76.363,33.422,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.108,0.068,0]},"t":46,"s":[13.419,37.087,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,1.072,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.028,-0.014,0]},"t":47,"s":[40.835,16.71,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,1.007,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.176,0.039,0]},"t":48,"s":[20.376,34.131,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.32,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.367,0.007,0]},"t":49,"s":[26.948,1.687,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.176,0.438,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.755,0]},"t":50,"s":[27.375,36.914,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.057,0.098,0]},"t":51,"s":[15.071,41.282,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.862,1.428,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.019,0.226,0]},"t":52,"s":[53.354,66.388,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.21,0.07,0]},"t":53,"s":[22.228,81.077,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.145,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.242,-0.12,0]},"t":54,"s":[1.727,-9.051,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.874,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.053,-0.044,0]},"t":55,"s":[-9.032,27.824,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.791,-3.351,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.245,-3.045,0]},"t":56,"s":[20.502,3.731,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.085,0]},"t":57,"s":[35.73,4.373,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,-0.444,0]},"t":58,"s":[58.616,37.243,100]},{"t":59,"s":[30.021,32.047,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":60,"st":5,"bm":0},{"ddd":0,"ind":42,"ty":4,"nm":"Shape Layer 10","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[100]},{"t":51,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.609},"o":{"x":0.167,"y":0.167},"t":8,"s":[272.114,255.071,0],"to":[-0.266,0.053,0],"ti":[1.216,-0.382,0]},{"i":{"x":0.833,"y":0.765},"o":{"x":0.167,"y":0.106},"t":9,"s":[270.517,255.387,0],"to":[-1.216,0.382,0],"ti":[2.644,-1.017,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":10,"s":[264.819,257.361,0],"to":[-2.644,1.017,0],"ti":[3.502,-1.605,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":11,"s":[254.654,261.49,0],"to":[-3.502,1.605,0],"ti":[3.128,-2.062,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.179},"t":12,"s":[243.809,266.989,0],"to":[-3.128,2.062,0],"ti":[0.929,-2.4,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.191},"t":13,"s":[235.889,273.86,0],"to":[-0.929,2.4,0],"ti":[-1.493,-1.834,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.174},"t":14,"s":[238.235,281.389,0],"to":[1.493,1.834,0],"ti":[-2.114,-0.944,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":15,"s":[244.846,284.864,0],"to":[2.114,0.944,0],"ti":[-1.909,-0.642,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":16,"s":[250.917,287.051,0],"to":[1.909,0.642,0],"ti":[-1.697,-0.51,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":17,"s":[256.301,288.717,0],"to":[1.697,0.51,0],"ti":[-1.516,-0.438,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":18,"s":[261.1,290.112,0],"to":[1.516,0.438,0],"ti":[-1.362,-0.392,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":19,"s":[265.397,291.343,0],"to":[1.362,0.392,0],"ti":[-1.229,-0.362,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":20,"s":[269.269,292.467,0],"to":[1.229,0.362,0],"ti":[-1.114,-0.341,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":21,"s":[272.774,293.517,0],"to":[1.114,0.341,0],"ti":[-1.012,-0.326,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":22,"s":[275.955,294.515,0],"to":[1.012,0.326,0],"ti":[-0.921,-0.314,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[278.847,295.472,0],"to":[0.921,0.314,0],"ti":[-0.839,-0.305,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[281.482,296.4,0],"to":[0.839,0.305,0],"ti":[-0.762,-0.298,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[283.879,297.304,0],"to":[0.762,0.298,0],"ti":[-0.69,-0.293,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":26,"s":[286.053,298.19,0],"to":[0.69,0.293,0],"ti":[-0.621,-0.288,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[288.016,299.06,0],"to":[0.621,0.288,0],"ti":[-0.554,-0.284,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":28,"s":[289.778,299.918,0],"to":[0.554,0.284,0],"ti":[-0.486,-0.279,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":29,"s":[291.338,300.763,0],"to":[0.486,0.279,0],"ti":[-0.419,-0.273,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":30,"s":[292.695,301.592,0],"to":[0.419,0.273,0],"ti":[-0.351,-0.266,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.178},"t":31,"s":[293.849,302.402,0],"to":[0.351,0.266,0],"ti":[-0.283,-0.258,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.18},"t":32,"s":[294.801,303.189,0],"to":[0.283,0.258,0],"ti":[-0.215,-0.245,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":33,"s":[295.549,303.949,0],"to":[0.215,0.245,0],"ti":[-0.147,-0.225,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.186},"t":34,"s":[296.09,304.662,0],"to":[0.147,0.225,0],"ti":[-0.082,-0.198,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.19},"t":35,"s":[296.429,305.301,0],"to":[0.082,0.198,0],"ti":[-0.024,-0.164,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.191},"t":36,"s":[296.583,305.847,0],"to":[0.024,0.164,0],"ti":[0.026,-0.131,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.179},"t":37,"s":[296.574,306.285,0],"to":[-0.026,0.131,0],"ti":[0.067,-0.108,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.164},"t":38,"s":[296.425,306.636,0],"to":[-0.067,0.108,0],"ti":[0.097,-0.091,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":39,"s":[296.17,306.934,0],"to":[-0.097,0.091,0],"ti":[0.117,-0.076,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.163},"t":40,"s":[295.842,307.183,0],"to":[-0.117,0.076,0],"ti":[0.129,-0.065,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.165},"t":41,"s":[295.468,307.393,0],"to":[-0.129,0.065,0],"ti":[0.134,-0.057,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.167},"t":42,"s":[295.071,307.574,0],"to":[-0.134,0.057,0],"ti":[0.133,-0.051,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.169},"t":43,"s":[294.667,307.733,0],"to":[-0.133,0.051,0],"ti":[0.128,-0.046,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.171},"t":44,"s":[294.272,307.878,0],"to":[-0.128,0.046,0],"ti":[0.12,-0.044,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.174},"t":45,"s":[293.898,308.012,0],"to":[-0.12,0.044,0],"ti":[0.108,-0.042,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.176},"t":46,"s":[293.554,308.14,0],"to":[-0.108,0.042,0],"ti":[0.094,-0.041,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.179},"t":47,"s":[293.249,308.264,0],"to":[-0.094,0.041,0],"ti":[0.08,-0.044,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.174},"t":48,"s":[292.988,308.385,0],"to":[-0.08,0.044,0],"ti":[0.068,-0.055,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.166},"t":49,"s":[292.767,308.528,0],"to":[-0.068,0.055,0],"ti":[0.056,-0.069,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.164},"t":50,"s":[292.579,308.714,0],"to":[-0.056,0.069,0],"ti":[0.044,-0.082,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.162},"t":51,"s":[292.428,308.941,0],"to":[-0.044,0.082,0],"ti":[0.03,-0.094,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.161},"t":52,"s":[292.318,309.205,0],"to":[-0.03,0.094,0],"ti":[0.016,-0.105,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.161},"t":53,"s":[292.249,309.504,0],"to":[-0.016,0.105,0],"ti":[0.001,-0.114,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.161},"t":54,"s":[292.223,309.833,0],"to":[-0.001,0.114,0],"ti":[-0.013,-0.122,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.161},"t":55,"s":[292.242,310.189,0],"to":[0.013,0.122,0],"ti":[-0.028,-0.128,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":56,"s":[292.304,310.564,0],"to":[0.028,0.128,0],"ti":[-0.042,-0.131,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":57,"s":[292.408,310.955,0],"to":[0.042,0.131,0],"ti":[-0.055,-0.133,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"t":58,"s":[292.554,311.353,0],"to":[0.055,0.133,0],"ti":[-0.031,-0.067,0]},{"t":59,"s":[292.738,311.753,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.866,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":8,"s":[127.438,90.591,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.119,0.935,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.22,-0.014,0]},"t":9,"s":[90.096,28.016,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,1.126,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.049,-0.3,0]},"t":10,"s":[67.312,81.384,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.746,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.141,0.05,0]},"t":11,"s":[122.538,69.77,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,1.165,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.124,-0.191,0]},"t":12,"s":[102.02,98.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.968,1.084,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.21,0.055,0]},"t":13,"s":[60.035,90.043,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.429,0.887,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.051,0.042,0]},"t":14,"s":[71.968,116.451,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.886,0.984,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,0.318,0]},"t":15,"s":[64.586,63.443,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.12,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.307,-0.02,0]},"t":16,"s":[109.991,44.631,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.887,0.933,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.049,0.176,0]},"t":17,"s":[126.937,59.824,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.971,1.735,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.316,-0.347,0]},"t":18,"s":[85.604,73.442,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.945,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.045,0.075,0]},"t":19,"s":[70.771,70.802,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.913,0.639,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,-0.162,0]},"t":20,"s":[80.389,96.73,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.179,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.79,0.108,0]},"t":21,"s":[90.289,87.923,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.589,1.199,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.673,0]},"t":22,"s":[90.772,58.569,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.878,1.108,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.059,0]},"t":23,"s":[95.049,54.421,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.33,0.947,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.262,0.047,0]},"t":24,"s":[60.54,68.48,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.901,0.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,-0.148,0]},"t":25,"s":[44.437,36.222,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,4.165,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.525,-0.607,0]},"t":26,"s":[124.279,47.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.352,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.486,0.081,0]},"t":27,"s":[139.353,46.441,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.883,2.129,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.086,1.924,0]},"t":28,"s":[137.147,101.148,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.914,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.29,0.078,0]},"t":29,"s":[77.097,103.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.16,2.38,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.222,2.472,0]},"t":30,"s":[52.92,67.602,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.876,0.839,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.079,0]},"t":31,"s":[38.391,66.346,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.058,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.255,0.173,0]},"t":32,"s":[80.849,88.417,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,0.752,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.034,-0.04,0]},"t":33,"s":[101.514,109.026,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.242,1.058,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.446,0.126,0]},"t":34,"s":[66.389,95.048,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.892,1.025,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,0.034,0]},"t":35,"s":[58.31,67.448,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.044,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.364,0.019,0]},"t":36,"s":[89.867,114.12,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.587,0.887,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.029,-0.038,0]},"t":37,"s":[99.232,53.341,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,1.104,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.104,0.319,0]},"t":38,"s":[84.926,94.953,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.439,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.495,0.046,0]},"t":39,"s":[28.265,109.679,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,0.952,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,0.223,0]},"t":40,"s":[24.92,76.564,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,1.618,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,-0.113,0]},"t":41,"s":[45.873,56.751,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.603,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.138,0.073,0]},"t":42,"s":[16.102,65.143,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.028,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.105,-0.019,0]},"t":43,"s":[27.313,-5.503,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.923,1.561,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.021,1.347,0]},"t":44,"s":[69.528,52.086,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.395,0.972,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.056,0.073,0]},"t":45,"s":[13.347,55.885,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,0.96,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,-0.041,0]},"t":46,"s":[17.457,26.517,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.906,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,-0.077,0]},"t":47,"s":[-6.114,46.16,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.079,1.13,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.74,-0.013,0]},"t":48,"s":[14.941,35.961,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.225,0.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,0.051,0]},"t":49,"s":[17.614,44.753,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.151,-0.369,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,-0.61,0]},"t":50,"s":[12.402,22.217,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.089,0]},"t":51,"s":[31.658,24.926,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.864,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.115,-0.014,0]},"t":52,"s":[-22.38,66.727,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.835,0.983,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.269,0.215,0]},"t":53,"s":[0.27,30.796,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.829,1.068,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.168,-0.021,0]},"t":54,"s":[10.423,7.981,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.817,0.983,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.162,0.038,0]},"t":55,"s":[20.367,26.148,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.012,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.153,-0.021,0]},"t":56,"s":[30.864,-6.905,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.986,1.056,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.011,0.499,0]},"t":57,"s":[43.453,19.525,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.017,0.034,0]},"t":58,"s":[29.038,24.824,100]},{"t":59,"s":[41.021,15.933,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":60,"st":8,"bm":0},{"ddd":0,"ind":43,"ty":4,"nm":"Shape Layer 9","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[100]},{"t":53,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10,"x":"var $bm_rt;\n$bm_rt = $bm_mul(time, 300);"},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.607},"o":{"x":0.167,"y":0.167},"t":10,"s":[279.864,255.271,0],"to":[-0.343,0.177,0],"ti":[1.691,-0.679,0]},{"i":{"x":0.833,"y":0.764},"o":{"x":0.167,"y":0.106},"t":11,"s":[277.804,256.336,0],"to":[-1.691,0.679,0],"ti":[3.887,-1.09,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.129},"t":12,"s":[269.719,259.347,0],"to":[-3.887,1.09,0],"ti":[3.906,1.153,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.178},"t":13,"s":[254.482,262.875,0],"to":[-3.906,-1.153,0],"ti":[0.302,3.979,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.16},"t":14,"s":[246.284,252.432,0],"to":[-0.302,-3.979,0],"ti":[-2.124,4.016,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":15,"s":[252.67,238.999,0],"to":[2.124,-4.016,0],"ti":[-1.967,3.264,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":16,"s":[259.026,228.335,0],"to":[1.967,-3.264,0],"ti":[-1.669,2.774,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":17,"s":[264.471,219.412,0],"to":[1.669,-2.774,0],"ti":[-1.398,2.426,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":18,"s":[269.041,211.694,0],"to":[1.398,-2.426,0],"ti":[-1.168,2.169,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":19,"s":[272.862,204.857,0],"to":[1.168,-2.169,0],"ti":[-0.974,1.973,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[276.051,198.681,0],"to":[0.974,-1.973,0],"ti":[-0.806,1.82,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":21,"s":[278.705,193.017,0],"to":[0.806,-1.82,0],"ti":[-0.644,1.685,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[280.888,187.764,0],"to":[0.644,-1.685,0],"ti":[-0.482,1.558,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[282.57,182.907,0],"to":[0.482,-1.558,0],"ti":[-0.333,1.443,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":24,"s":[283.781,178.414,0],"to":[0.333,-1.443,0],"ti":[-0.197,1.336,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[284.566,174.251,0],"to":[0.197,-1.336,0],"ti":[-0.074,1.237,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[284.965,170.396,0],"to":[0.074,-1.237,0],"ti":[0.038,1.14,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[285.012,166.831,0],"to":[-0.038,-1.14,0],"ti":[0.139,1.044,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":28,"s":[284.739,163.555,0],"to":[-0.139,-1.044,0],"ti":[0.228,0.947,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":29,"s":[284.178,160.569,0],"to":[-0.228,-0.947,0],"ti":[0.304,0.848,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":30,"s":[283.368,157.874,0],"to":[-0.304,-0.848,0],"ti":[0.363,0.748,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[282.355,155.48,0],"to":[-0.363,-0.748,0],"ti":[0.405,0.649,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":32,"s":[281.189,153.386,0],"to":[-0.405,-0.649,0],"ti":[0.428,0.554,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":33,"s":[279.927,151.584,0],"to":[-0.428,-0.554,0],"ti":[0.433,0.464,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":34,"s":[278.623,150.062,0],"to":[-0.433,-0.464,0],"ti":[0.424,0.383,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":35,"s":[277.326,148.798,0],"to":[-0.424,-0.383,0],"ti":[0.403,0.31,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":36,"s":[276.078,147.765,0],"to":[-0.403,-0.31,0],"ti":[0.372,0.245,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":37,"s":[274.911,146.939,0],"to":[-0.372,-0.245,0],"ti":[0.335,0.19,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":38,"s":[273.847,146.293,0],"to":[-0.335,-0.19,0],"ti":[0.294,0.141,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.183},"t":39,"s":[272.9,145.802,0],"to":[-0.294,-0.141,0],"ti":[0.25,0.1,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.186},"t":40,"s":[272.082,145.445,0],"to":[-0.25,-0.1,0],"ti":[0.205,0.064,0]},{"i":{"x":0.833,"y":0.855},"o":{"x":0.167,"y":0.19},"t":41,"s":[271.398,145.204,0],"to":[-0.205,-0.064,0],"ti":[0.16,0.034,0]},{"i":{"x":0.833,"y":0.861},"o":{"x":0.167,"y":0.196},"t":42,"s":[270.85,145.06,0],"to":[-0.16,-0.034,0],"ti":[0.115,0.009,0]},{"i":{"x":0.833,"y":0.868},"o":{"x":0.167,"y":0.208},"t":43,"s":[270.438,144.999,0],"to":[-0.115,-0.009,0],"ti":[0.071,-0.011,0]},{"i":{"x":0.833,"y":0.86},"o":{"x":0.167,"y":0.226},"t":44,"s":[270.159,145.005,0],"to":[-0.071,0.011,0],"ti":[0.029,-0.027,0]},{"i":{"x":0.833,"y":0.798},"o":{"x":0.167,"y":0.205},"t":45,"s":[270.01,145.067,0],"to":[-0.029,0.027,0],"ti":[-0.01,-0.039,0]},{"i":{"x":0.833,"y":0.789},"o":{"x":0.167,"y":0.142},"t":46,"s":[269.983,145.17,0],"to":[0.01,0.039,0],"ti":[-0.046,-0.046,0]},{"i":{"x":0.833,"y":0.804},"o":{"x":0.167,"y":0.138},"t":47,"s":[270.07,145.3,0],"to":[0.046,0.046,0],"ti":[-0.08,-0.05,0]},{"i":{"x":0.833,"y":0.814},"o":{"x":0.167,"y":0.145},"t":48,"s":[270.262,145.447,0],"to":[0.08,0.05,0],"ti":[-0.111,-0.049,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.151},"t":49,"s":[270.551,145.599,0],"to":[0.111,0.049,0],"ti":[-0.133,-0.043,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.161},"t":50,"s":[270.927,145.744,0],"to":[0.133,0.043,0],"ti":[-0.141,-0.026,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.168},"t":51,"s":[271.347,145.854,0],"to":[0.141,0.026,0],"ti":[-0.142,-0.004,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.166},"t":52,"s":[271.77,145.903,0],"to":[0.142,0.004,0],"ti":[-0.143,0.021,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":53,"s":[272.2,145.876,0],"to":[0.143,-0.021,0],"ti":[-0.142,0.042,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":54,"s":[272.629,145.78,0],"to":[0.142,-0.042,0],"ti":[-0.137,0.061,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.166},"t":55,"s":[273.049,145.622,0],"to":[0.137,-0.061,0],"ti":[-0.13,0.077,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.166},"t":56,"s":[273.452,145.412,0],"to":[0.13,-0.077,0],"ti":[-0.12,0.091,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.167},"t":57,"s":[273.829,145.157,0],"to":[0.12,-0.091,0],"ti":[-0.109,0.102,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.168},"t":58,"s":[274.175,144.866,0],"to":[0.109,-0.102,0],"ti":[-0.051,0.054,0]},{"t":59,"s":[274.483,144.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.838,1.875,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":10,"s":[109.864,70.089,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.856,0.69,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.172,0.076,0]},"t":11,"s":[86.733,68.252,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.028,0.993,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.199,0.114,0]},"t":12,"s":[64.924,89.385,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.797,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.021,-0.008,0]},"t":13,"s":[49.171,146.99,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,0.755,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,0.509,0]},"t":14,"s":[70.147,94.506,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.944,1.08,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.941,0.126,0]},"t":15,"s":[100.345,84.223,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.003,0.981,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.041,0]},"t":16,"s":[99.102,64.322,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.843,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.002,-0.024,0]},"t":17,"s":[129.334,103.257,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.977,-0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,-21.258,0]},"t":18,"s":[98.181,73.031,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.969,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.032,0.087,0]},"t":19,"s":[70.521,73.149,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.819,0.396,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.048,-0.057,0]},"t":20,"s":[90.481,75.792,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.99,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.155,0.097,0]},"t":21,"s":[77.84,74.224,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,0.857,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.269,-0.012,0]},"t":22,"s":[63.067,64.426,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.698,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.2,0]},"t":23,"s":[56.422,72.999,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.807,0.455,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,-0.052,0]},"t":24,"s":[68.741,79.126,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.955,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.147,0.098,0]},"t":25,"s":[101.082,75.355,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.698,0.664,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.265,-0.1,0]},"t":26,"s":[143.609,54.475,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.73,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.111,0]},"t":27,"s":[146.608,63.972,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.888,1.027,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.121,0.012,0]},"t":28,"s":[118.472,92.79,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.05,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.324,0.02,0]},"t":29,"s":[55.394,59.194,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.866,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,-0.051,0]},"t":30,"s":[33.53,103.661,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.028,0.632,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.22,-0.21,0]},"t":31,"s":[68.551,76.112,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.9,1.084,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.021,0.108,0]},"t":32,"s":[89.966,83.951,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.007,1.005,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.497,0.042,0]},"t":33,"s":[61.396,110.752,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.966,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.077,0.004,0]},"t":34,"s":[55.64,56.936,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.058,-0.045,0]},"t":35,"s":[130.926,113.733,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.106,0.944,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.086,-0.085,0]},"t":36,"s":[86.439,76.969,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.866,0.598,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,-0.169,0]},"t":37,"s":[108.294,95.156,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.04,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.221,0.105,0]},"t":38,"s":[58.545,89.141,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.947,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,0.17,0]},"t":39,"s":[28.376,66.139,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.89,1.228,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.148,-0.079,0]},"t":40,"s":[72.983,43.989,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,1.021,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.339,0.061,0]},"t":41,"s":[56.935,55.362,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.199,0.907,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.05,0.017,0]},"t":42,"s":[51.706,12.909,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,1.369,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.059,0.774,0]},"t":43,"s":[64.946,65.932,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.252,1.001,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.238,0.068,0]},"t":44,"s":[20.13,72.328,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.97,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.063,0.001,0]},"t":45,"s":[31.738,37.588,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.893,1.019,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.046,-0.129,0]},"t":46,"s":[-14.966,72.869,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.07,1.207,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.373,0.016,0]},"t":47,"s":[15.041,59.042,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.075,0.894,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.059,0]},"t":48,"s":[23.68,76.032,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.071,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.039,0.396,0]},"t":49,"s":[7.79,16.858,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.941,0.564,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,-0.041,0]},"t":50,"s":[37.924,1.088,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.813,0.957,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.205,0.103,0]},"t":51,"s":[-17.733,11.662,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.814,1.008,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.15,-0.09,0]},"t":52,"s":[-1.626,56.352,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,1.062,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.151,0.008,0]},"t":53,"s":[18.416,34.888,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.817,0.918,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.441,0.035,0]},"t":54,"s":[43.027,58.529,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.877,3.279,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.153,-7.35,0]},"t":55,"s":[48.754,17.354,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.206,0.776,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.259,0.08,0]},"t":56,"s":[55.61,17.816,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.986,1.061,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.059,0.133,0]},"t":57,"s":[58.864,4.732,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.017,0.035,0]},"t":58,"s":[47.582,-17.422,100]},{"t":59,"s":[56.939,20.914,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.012,10.621],[-5.695,5.34],[-2.557,-7.377],[3.15,-2.096]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.8941176470588236,0.11372549019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.421,4.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":60,"st":10,"bm":0},{"ddd":0,"ind":44,"ty":4,"nm":"Shape Layer 8","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"t":52,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.626},"o":{"x":0.167,"y":0.167},"t":9,"s":[278.864,255.82,0],"to":[-0.509,0.141,0],"ti":[2.192,-0.891,0]},{"i":{"x":0.833,"y":0.768},"o":{"x":0.167,"y":0.107},"t":10,"s":[275.812,256.665,0],"to":[-2.192,0.891,0],"ti":[4.157,-2.88,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.13},"t":11,"s":[265.713,261.168,0],"to":[-4.157,2.88,0],"ti":[3.28,-5.54,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.161},"t":12,"s":[250.868,273.944,0],"to":[-3.28,5.54,0],"ti":[-0.211,-6.285,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.179},"t":13,"s":[246.03,294.41,0],"to":[0.211,6.285,0],"ti":[-2.493,-4.913,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.185},"t":14,"s":[252.134,311.655,0],"to":[2.493,4.913,0],"ti":[-2.968,-3.51,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.184},"t":15,"s":[260.991,323.886,0],"to":[2.968,3.51,0],"ti":[-2.895,-2.554,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":16,"s":[269.941,332.712,0],"to":[2.895,2.554,0],"ti":[-2.702,-1.885,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":17,"s":[278.362,339.211,0],"to":[2.702,1.885,0],"ti":[-2.495,-1.387,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":18,"s":[286.152,344.024,0],"to":[2.495,1.387,0],"ti":[-2.299,-0.994,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":19,"s":[293.332,347.535,0],"to":[2.299,0.994,0],"ti":[-2.119,-0.668,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":20,"s":[299.949,349.988,0],"to":[2.119,0.668,0],"ti":[-1.954,-0.387,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[306.048,351.543,0],"to":[1.954,0.387,0],"ti":[-1.795,-0.137,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":22,"s":[311.672,352.309,0],"to":[1.795,0.137,0],"ti":[-1.633,0.088,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":23,"s":[316.816,352.363,0],"to":[1.633,-0.088,0],"ti":[-1.471,0.288,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[321.472,351.78,0],"to":[1.471,-0.288,0],"ti":[-1.306,0.458,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":25,"s":[325.642,350.637,0],"to":[1.306,-0.458,0],"ti":[-1.135,0.591,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[329.308,349.031,0],"to":[1.135,-0.591,0],"ti":[-0.968,0.681,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":27,"s":[332.455,347.089,0],"to":[0.968,-0.681,0],"ti":[-0.817,0.731,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":28,"s":[335.117,344.942,0],"to":[0.817,-0.731,0],"ti":[-0.687,0.746,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":29,"s":[337.355,342.705,0],"to":[0.687,-0.746,0],"ti":[-0.581,0.735,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":30,"s":[339.24,340.468,0],"to":[0.581,-0.735,0],"ti":[-0.497,0.706,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[340.842,338.297,0],"to":[0.497,-0.706,0],"ti":[-0.432,0.666,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":32,"s":[342.224,336.234,0],"to":[0.432,-0.666,0],"ti":[-0.383,0.622,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":33,"s":[343.437,334.299,0],"to":[0.383,-0.622,0],"ti":[-0.345,0.576,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":34,"s":[344.521,332.502,0],"to":[0.345,-0.576,0],"ti":[-0.315,0.529,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":35,"s":[345.505,330.845,0],"to":[0.315,-0.529,0],"ti":[-0.292,0.487,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.173},"t":36,"s":[346.41,329.327,0],"to":[0.292,-0.487,0],"ti":[-0.279,0.457,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.17},"t":37,"s":[347.258,327.924,0],"to":[0.279,-0.457,0],"ti":[-0.273,0.434,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.17},"t":38,"s":[348.086,326.587,0],"to":[0.273,-0.434,0],"ti":[-0.265,0.411,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":39,"s":[348.894,325.317,0],"to":[0.265,-0.411,0],"ti":[-0.255,0.387,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":40,"s":[349.675,324.119,0],"to":[0.255,-0.387,0],"ti":[-0.243,0.361,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.172},"t":41,"s":[350.425,322.996,0],"to":[0.243,-0.361,0],"ti":[-0.229,0.334,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.173},"t":42,"s":[351.135,321.951,0],"to":[0.229,-0.334,0],"ti":[-0.212,0.306,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":43,"s":[351.799,320.989,0],"to":[0.212,-0.306,0],"ti":[-0.194,0.278,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":44,"s":[352.409,320.113,0],"to":[0.194,-0.278,0],"ti":[-0.173,0.249,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.177},"t":45,"s":[352.961,319.322,0],"to":[0.173,-0.249,0],"ti":[-0.15,0.219,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.18},"t":46,"s":[353.448,318.619,0],"to":[0.15,-0.219,0],"ti":[-0.126,0.188,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.183},"t":47,"s":[353.864,318.007,0],"to":[0.126,-0.188,0],"ti":[-0.101,0.156,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.188},"t":48,"s":[354.205,317.489,0],"to":[0.101,-0.156,0],"ti":[-0.075,0.131,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.184},"t":49,"s":[354.467,317.068,0],"to":[0.075,-0.131,0],"ti":[-0.049,0.118,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":50,"s":[354.652,316.704,0],"to":[0.049,-0.118,0],"ti":[-0.024,0.112,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.176},"t":51,"s":[354.762,316.358,0],"to":[0.024,-0.112,0],"ti":[0.001,0.104,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.174},"t":52,"s":[354.797,316.033,0],"to":[-0.001,-0.104,0],"ti":[0.025,0.094,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.17},"t":53,"s":[354.758,315.735,0],"to":[-0.025,-0.094,0],"ti":[0.049,0.084,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.165},"t":54,"s":[354.646,315.467,0],"to":[-0.049,-0.084,0],"ti":[0.071,0.072,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.162},"t":55,"s":[354.465,315.232,0],"to":[-0.071,-0.072,0],"ti":[0.091,0.06,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.16},"t":56,"s":[354.22,315.034,0],"to":[-0.091,-0.06,0],"ti":[0.109,0.047,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":57,"s":[353.918,314.873,0],"to":[-0.109,-0.047,0],"ti":[0.124,0.033,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.161},"t":58,"s":[353.565,314.754,0],"to":[-0.124,-0.033,0],"ti":[0.066,0.013,0]},{"t":59,"s":[353.172,314.677,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,1.101,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":9,"s":[121.274,69.223,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.683,1.187,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.239,0.046,0]},"t":10,"s":[102.389,75.161,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.98,0.955,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.058,0]},"t":11,"s":[92.262,61.994,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.931,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.026,-0.097,0]},"t":12,"s":[63.863,104.769,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.274,0.951,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.401,0.012,0]},"t":13,"s":[85.432,85.001,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.092,1.206,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,-0.118,0]},"t":14,"s":[81.722,108.079,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.993,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,0.059,0]},"t":15,"s":[53.108,98.543,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.078,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.286,-0.008,0]},"t":16,"s":[113.303,131.662,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.226,0]},"t":17,"s":[138.039,101.322,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.209,0.154,0]},"t":18,"s":[90.083,83.561,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.383,0.796,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.061,0.009,0]},"t":19,"s":[86.533,62.73,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,1.025,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,0.141,0]},"t":20,"s":[88.578,85.983,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.633,0.981,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.181,0.019,0]},"t":21,"s":[52.598,119.725,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.913,0.912,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.108,-0.024,0]},"t":22,"s":[63.951,75.737,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.114,2.104,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.9,1.706,0]},"t":23,"s":[102.646,109.959,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.968,0.914,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.09,0.077,0]},"t":24,"s":[104.421,111.717,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.984,1.195,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.051,2.682,0]},"t":25,"s":[126.369,86.671,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.465,2.183,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.02,0.058,0]},"t":26,"s":[112.748,85.867,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,1.029,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,0.078,0]},"t":27,"s":[123.717,88.551,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.153,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.407,0.021,0]},"t":28,"s":[51.588,47.768,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,2.015,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,1.345,0]},"t":29,"s":[33.003,102.64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.199,1.013,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.892,0.077,0]},"t":30,"s":[85.701,106.264,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.078,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.059,0.011,0]},"t":31,"s":[81.198,58.493,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.008,0.991,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,-0.058,0]},"t":32,"s":[96.43,113.732,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.02,0.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,-0.01,0]},"t":33,"s":[67.01,81.239,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.963,0.771,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,-0.605,0]},"t":34,"s":[99.306,110.284,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.301,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.067,0.131,0]},"t":35,"s":[59.341,106.769,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.189,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.158,0.095,0]},"t":36,"s":[81.457,100.615,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.974,1.274,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.058,-1.127,0]},"t":37,"s":[106.222,55.153,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,0.719,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.038,0.064,0]},"t":38,"s":[25.147,58.283,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.061,0.119,0]},"t":39,"s":[80.819,44.863,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.839,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.137,-0.083,0]},"t":40,"s":[48.72,13.108,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.058,0.872,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.173,0]},"t":41,"s":[60.869,29.019,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,1.357,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.034,0.237,0]},"t":42,"s":[73.011,43.835,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.288,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.054,0.068,0]},"t":43,"s":[52.393,51.855,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.906,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.065,0.011,0]},"t":44,"s":[64.871,9.492,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.756,0.775,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.193,0.731,0]},"t":45,"s":[9.336,58.19,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.038,1.229,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,0.132,0]},"t":46,"s":[26.111,64.455,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.014,0.878,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.026,0.061,0]},"t":47,"s":[58.4,75.08,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.98,0.77,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.012,0.262,0]},"t":48,"s":[11.51,35.267,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,1.06,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.026,0.131,0]},"t":49,"s":[66.25,16.716,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.825,0.866,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.377,0.035,0]},"t":50,"s":[24.642,-15.996,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.933,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.159,0.221,0]},"t":51,"s":[32.168,40.121,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.214,0.377,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.193,-0.341,0]},"t":52,"s":[40.464,74.155,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.906,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,0.096,0]},"t":53,"s":[37.96,67.475,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.566,1.064,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.711,-0.084,0]},"t":54,"s":[46.883,24.242,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.073,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.088,0.036,0]},"t":55,"s":[48.067,45.748,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.938,1.019,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.039,0.163,0]},"t":56,"s":[69.141,7.771,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,0.887,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.247,0.016,0]},"t":57,"s":[29.508,-32.064,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,0.316,0]},"t":58,"s":[39.499,17.057,100]},{"t":59,"s":[27.006,34.616,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":9,"op":60,"st":9,"bm":0},{"ddd":0,"ind":45,"ty":4,"nm":"Shape Layer 7","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100]},{"t":48,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.638},"o":{"x":0.167,"y":0.167},"t":5,"s":[269.945,256.942,0],"to":[-0.448,-0.21,0],"ti":[1.991,0.807,0]},{"i":{"x":0.833,"y":0.768},"o":{"x":0.167,"y":0.108},"t":6,"s":[267.255,255.684,0],"to":[-1.991,-0.807,0],"ti":[4.389,1.346,0]},{"i":{"x":0.833,"y":0.825},"o":{"x":0.167,"y":0.13},"t":7,"s":[257.999,252.103,0],"to":[-4.389,-1.346,0],"ti":[6.039,1.363,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":8,"s":[240.923,247.608,0],"to":[-6.039,-1.363,0],"ti":[5.978,1.14,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":9,"s":[221.767,243.923,0],"to":[-5.978,-1.14,0],"ti":[5.09,1.054,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":10,"s":[205.053,240.767,0],"to":[-5.09,-1.054,0],"ti":[4.207,1.095,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.183},"t":11,"s":[191.227,237.6,0],"to":[-4.207,-1.095,0],"ti":[3.481,1.188,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":12,"s":[179.812,234.195,0],"to":[-3.481,-1.188,0],"ti":[2.886,1.294,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.179},"t":13,"s":[170.338,230.471,0],"to":[-2.886,-1.294,0],"ti":[2.378,1.39,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":14,"s":[162.496,226.433,0],"to":[-2.378,-1.39,0],"ti":[1.933,1.462,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":15,"s":[156.068,222.132,0],"to":[-1.933,-1.462,0],"ti":[1.54,1.499,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":16,"s":[150.896,217.662,0],"to":[-1.54,-1.499,0],"ti":[1.198,1.498,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":17,"s":[146.827,213.136,0],"to":[-1.198,-1.498,0],"ti":[0.906,1.46,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":18,"s":[143.71,208.674,0],"to":[-0.906,-1.46,0],"ti":[0.665,1.393,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":19,"s":[141.391,204.376,0],"to":[-0.665,-1.393,0],"ti":[0.471,1.306,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":20,"s":[139.72,200.316,0],"to":[-0.471,-1.306,0],"ti":[0.313,1.216,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":21,"s":[138.565,196.541,0],"to":[-0.313,-1.216,0],"ti":[0.184,1.137,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":22,"s":[137.84,193.02,0],"to":[-0.184,-1.137,0],"ti":[0.081,1.063,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":23,"s":[137.463,189.72,0],"to":[-0.081,-1.063,0],"ti":[0.003,0.99,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":24,"s":[137.352,186.641,0],"to":[-0.003,-0.99,0],"ti":[-0.055,0.919,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":25,"s":[137.442,183.779,0],"to":[0.055,-0.919,0],"ti":[-0.097,0.849,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":26,"s":[137.68,181.129,0],"to":[0.097,-0.849,0],"ti":[-0.126,0.781,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":27,"s":[138.024,178.686,0],"to":[0.126,-0.781,0],"ti":[-0.145,0.716,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":28,"s":[138.439,176.442,0],"to":[0.145,-0.716,0],"ti":[-0.156,0.653,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":29,"s":[138.897,174.391,0],"to":[0.156,-0.653,0],"ti":[-0.159,0.592,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[139.374,172.526,0],"to":[0.159,-0.592,0],"ti":[-0.157,0.533,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":31,"s":[139.853,170.839,0],"to":[0.157,-0.533,0],"ti":[-0.15,0.477,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":32,"s":[140.317,169.325,0],"to":[0.15,-0.477,0],"ti":[-0.139,0.422,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":33,"s":[140.753,167.978,0],"to":[0.139,-0.422,0],"ti":[-0.125,0.37,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":34,"s":[141.152,166.791,0],"to":[0.125,-0.37,0],"ti":[-0.109,0.319,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":35,"s":[141.505,165.76,0],"to":[0.109,-0.319,0],"ti":[-0.091,0.27,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.183},"t":36,"s":[141.806,164.879,0],"to":[0.091,-0.27,0],"ti":[-0.072,0.222,0]},{"i":{"x":0.833,"y":0.853},"o":{"x":0.167,"y":0.187},"t":37,"s":[142.051,164.142,0],"to":[0.072,-0.222,0],"ti":[-0.052,0.176,0]},{"i":{"x":0.833,"y":0.858},"o":{"x":0.167,"y":0.192},"t":38,"s":[142.237,163.545,0],"to":[0.052,-0.176,0],"ti":[-0.032,0.132,0]},{"i":{"x":0.833,"y":0.865},"o":{"x":0.167,"y":0.201},"t":39,"s":[142.363,163.084,0],"to":[0.032,-0.132,0],"ti":[-0.012,0.09,0]},{"i":{"x":0.833,"y":0.873},"o":{"x":0.167,"y":0.218},"t":40,"s":[142.428,162.753,0],"to":[0.012,-0.09,0],"ti":[0.007,0.05,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.243},"t":41,"s":[142.433,162.544,0],"to":[-0.007,-0.05,0],"ti":[0.026,0.012,0]},{"i":{"x":0.833,"y":0.765},"o":{"x":0.167,"y":0.167},"t":42,"s":[142.383,162.452,0],"to":[-0.026,-0.012,0],"ti":[0.042,-0.024,0]},{"i":{"x":0.833,"y":0.791},"o":{"x":0.167,"y":0.129},"t":43,"s":[142.28,162.472,0],"to":[-0.042,0.024,0],"ti":[0.057,-0.059,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.139},"t":44,"s":[142.128,162.599,0],"to":[-0.057,0.059,0],"ti":[0.07,-0.085,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.152},"t":45,"s":[141.935,162.827,0],"to":[-0.07,0.085,0],"ti":[0.078,-0.097,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":46,"s":[141.71,163.111,0],"to":[-0.078,0.097,0],"ti":[0.083,-0.101,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.164},"t":47,"s":[141.466,163.41,0],"to":[-0.083,0.101,0],"ti":[0.085,-0.104,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.166},"t":48,"s":[141.211,163.718,0],"to":[-0.085,0.104,0],"ti":[0.084,-0.104,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.168},"t":49,"s":[140.955,164.031,0],"to":[-0.084,0.104,0],"ti":[0.078,-0.103,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.171},"t":50,"s":[140.709,164.343,0],"to":[-0.078,0.103,0],"ti":[0.08,-0.102,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.163},"t":51,"s":[140.484,164.649,0],"to":[-0.08,0.102,0],"ti":[0.095,-0.103,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.159},"t":52,"s":[140.231,164.956,0],"to":[-0.095,0.103,0],"ti":[0.112,-0.102,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.161},"t":53,"s":[139.917,165.266,0],"to":[-0.112,0.102,0],"ti":[0.125,-0.098,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"t":54,"s":[139.556,165.569,0],"to":[-0.125,0.098,0],"ti":[0.134,-0.092,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.166},"t":55,"s":[139.164,165.856,0],"to":[-0.134,0.092,0],"ti":[0.138,-0.083,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.168},"t":56,"s":[138.753,166.12,0],"to":[-0.138,0.083,0],"ti":[0.139,-0.072,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.17},"t":57,"s":[138.335,166.353,0],"to":[-0.139,0.072,0],"ti":[0.135,-0.059,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.172},"t":58,"s":[137.921,166.55,0],"to":[-0.135,0.059,0],"ti":[0.067,-0.026,0]},{"t":59,"s":[137.522,166.706,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.747,0.81,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":5,"s":[67.084,129.75,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.927,0.854,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.148,0]},"t":6,"s":[62.33,109.198,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.16,1.108,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.593,0.195,0]},"t":7,"s":[109.714,82.895,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.95,1.011,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.047,0]},"t":8,"s":[103.874,63.18,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.652,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.126,0.009,0]},"t":9,"s":[120.913,108.471,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.996,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.11,-0.133,0]},"t":10,"s":[114.137,57.365,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,1.188,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.004,-0.05,0]},"t":11,"s":[92.637,77.058,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.717,0.892,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,0.058,0]},"t":12,"s":[113.058,64.766,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.862,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.118,0.369,0]},"t":13,"s":[94.823,104.736,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.686,1.222,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.095,0.21,0]},"t":14,"s":[51.043,116.383,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.935,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.061,0]},"t":15,"s":[71.52,124.057,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.826,0.869,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.292,0.259,0]},"t":16,"s":[128.168,95.925,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,1.124,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.16,0.23,0]},"t":17,"s":[115.579,82.608,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.512,0.751,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.223,0.05,0]},"t":18,"s":[101.896,75.048,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.973,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.1,0.125,0]},"t":19,"s":[93.758,93.897,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.898,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.041,0.012,0]},"t":20,"s":[54.25,131.368,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.724,0.144,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.465,-1.005,0]},"t":21,"s":[80.758,87.771,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,1.014,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.119,0.092,0]},"t":22,"s":[86.54,91.108,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.904,0.995,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.912,0.012,0]},"t":23,"s":[99.918,122.044,100]},{"i":{"x":[0.833,0.833,0.833],"y":[11.64,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.63,-0.006,0]},"t":24,"s":[98.798,85.895,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.179,0.764,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,-0.058,0]},"t":25,"s":[98.627,119.725,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.057,0.129,0]},"t":26,"s":[120.625,99.715,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.129,0.846,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.428,0,0]},"t":27,"s":[51.46,62.943,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,1.057,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.182,0]},"t":28,"s":[34.76,99.837,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.887,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.176,0.034,0]},"t":29,"s":[77.215,131.147,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.072,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.319,-0.044,0]},"t":30,"s":[115.216,78.51,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.783,0.915,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.039,0,0]},"t":31,"s":[128.632,112.897,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,4.711,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.135,4.172,0]},"t":32,"s":[103.693,78.444,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.008,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.662,0.082,0]},"t":33,"s":[63.665,77.742,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.628,0.82,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,-0.016,0]},"t":34,"s":[68.138,109.713,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.039,0.849,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.074,0.155,0]},"t":35,"s":[63.26,82.764,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.925,1.07,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,0.186,0]},"t":36,"s":[104.89,51.456,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.219,1.029,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.727,0.038,0]},"t":37,"s":[43.633,26.02,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.892,0.966,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,0.022,0]},"t":38,"s":[49.933,72.695,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.243,0.988,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.367,-0.056,0]},"t":39,"s":[27.075,9.722,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.832,0.92,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,-0.015,0]},"t":40,"s":[20.365,47.293,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.936,3.513,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.165,-2.021,0]},"t":41,"s":[46.638,15.298,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.362,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.284,0.081,0]},"t":42,"s":[73.418,16.565,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.887,0.789,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,-0.029,0]},"t":43,"s":[67.341,-22.905,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.174,0.978,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.315,0.138,0]},"t":44,"s":[26.919,6.334,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.904,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.056,-0.031,0]},"t":45,"s":[12.404,51.222,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.142,1.239,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.264,0.63,0]},"t":46,"s":[57.152,18.419,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.933,1.11,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,0.062,0]},"t":47,"s":[46.41,13.418,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,0.964,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.344,0.047,0]},"t":48,"s":[75.422,32.787,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.055,0.769,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.185,-0.063,0]},"t":49,"s":[69.769,-12.086,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.398,0.912,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.033,0.13,0]},"t":50,"s":[65.147,13.473,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.884,2.464,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,1.481,0]},"t":51,"s":[72.836,58.774,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.296,0.079,0]},"t":52,"s":[28.388,61.475,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.369,0.846,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.317,-0.176,0]},"t":53,"s":[10.975,11.341,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.072,1.254,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,0.182,0]},"t":54,"s":[9.799,27.481,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.039,0.063,0]},"t":55,"s":[44.403,41.158,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,-0.052,0]},"t":56,"s":[-20.175,-14.141,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.193,1.424,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.504,-0.402,0]},"t":57,"s":[25.048,19.928,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.07,0]},"t":58,"s":[27.7,14.076,100]},{"t":59,"s":[50.717,49.703,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":60,"st":5,"bm":0},{"ddd":0,"ind":46,"ty":4,"nm":"Shape Layer 6","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":39,"s":[100]},{"t":55,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.603},"o":{"x":0.167,"y":0.167},"t":12,"s":[269.021,253.165,0],"to":[0.334,-0.343,0],"ti":[-1.472,1.743,0]},{"i":{"x":0.833,"y":0.765},"o":{"x":0.167,"y":0.105},"t":13,"s":[271.027,251.106,0],"to":[1.472,-1.743,0],"ti":[-3.01,4.091,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":14,"s":[277.851,242.705,0],"to":[3.01,-4.091,0],"ti":[-3.712,5.823,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":15,"s":[289.088,226.561,0],"to":[3.712,-5.823,0],"ti":[-3.262,5.954,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":16,"s":[300.123,207.765,0],"to":[3.262,-5.954,0],"ti":[-2.491,5.217,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":17,"s":[308.66,190.839,0],"to":[2.491,-5.217,0],"ti":[-1.89,4.434,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":18,"s":[315.071,176.461,0],"to":[1.89,-4.434,0],"ti":[-1.471,3.789,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.181},"t":19,"s":[320.001,164.236,0],"to":[1.471,-3.789,0],"ti":[-1.175,3.273,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":20,"s":[323.898,153.727,0],"to":[1.175,-3.273,0],"ti":[-0.958,2.857,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":21,"s":[327.049,144.595,0],"to":[0.958,-2.857,0],"ti":[-0.794,2.513,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":22,"s":[329.644,136.588,0],"to":[0.794,-2.513,0],"ti":[-0.666,2.226,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":23,"s":[331.811,129.516,0],"to":[0.666,-2.226,0],"ti":[-0.563,1.981,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":24,"s":[333.638,123.235,0],"to":[0.563,-1.981,0],"ti":[-0.48,1.769,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":25,"s":[335.19,117.632,0],"to":[0.48,-1.769,0],"ti":[-0.41,1.586,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":26,"s":[336.516,112.618,0],"to":[0.41,-1.586,0],"ti":[-0.351,1.424,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":27,"s":[337.65,108.119,0],"to":[0.351,-1.424,0],"ti":[-0.3,1.282,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":28,"s":[338.62,104.073,0],"to":[0.3,-1.282,0],"ti":[-0.255,1.156,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":29,"s":[339.448,100.428,0],"to":[0.255,-1.156,0],"ti":[-0.216,1.044,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":30,"s":[340.152,97.139,0],"to":[0.216,-1.044,0],"ti":[-0.181,0.944,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":31,"s":[340.744,94.166,0],"to":[0.181,-0.944,0],"ti":[-0.149,0.856,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":32,"s":[341.237,91.474,0],"to":[0.149,-0.856,0],"ti":[-0.12,0.778,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":33,"s":[341.639,89.031,0],"to":[0.12,-0.778,0],"ti":[-0.094,0.709,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":34,"s":[341.96,86.808,0],"to":[0.094,-0.709,0],"ti":[-0.069,0.648,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":35,"s":[342.205,84.778,0],"to":[0.069,-0.648,0],"ti":[-0.038,0.59,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":36,"s":[342.374,82.918,0],"to":[0.038,-0.59,0],"ti":[-0.003,0.532,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":37,"s":[342.434,81.24,0],"to":[0.003,-0.532,0],"ti":[0.027,0.479,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":38,"s":[342.395,79.728,0],"to":[-0.027,-0.479,0],"ti":[0.051,0.433,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":39,"s":[342.275,78.364,0],"to":[-0.051,-0.433,0],"ti":[0.069,0.392,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":40,"s":[342.091,77.129,0],"to":[-0.069,-0.392,0],"ti":[0.082,0.356,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":41,"s":[341.861,76.01,0],"to":[-0.082,-0.356,0],"ti":[0.091,0.324,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":42,"s":[341.597,74.992,0],"to":[-0.091,-0.324,0],"ti":[0.096,0.296,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":43,"s":[341.314,74.063,0],"to":[-0.096,-0.296,0],"ti":[0.096,0.272,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":44,"s":[341.023,73.213,0],"to":[-0.096,-0.272,0],"ti":[0.094,0.25,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":45,"s":[340.736,72.433,0],"to":[-0.094,-0.25,0],"ti":[0.088,0.23,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":46,"s":[340.462,71.716,0],"to":[-0.088,-0.23,0],"ti":[0.08,0.212,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":47,"s":[340.209,71.055,0],"to":[-0.08,-0.212,0],"ti":[0.069,0.195,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":48,"s":[339.984,70.445,0],"to":[-0.069,-0.195,0],"ti":[0.056,0.18,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":49,"s":[339.795,69.882,0],"to":[-0.056,-0.18,0],"ti":[0.042,0.165,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":50,"s":[339.646,69.365,0],"to":[-0.042,-0.165,0],"ti":[0.027,0.151,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.176},"t":51,"s":[339.542,68.892,0],"to":[-0.027,-0.151,0],"ti":[0.01,0.143,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.168},"t":52,"s":[339.484,68.461,0],"to":[-0.01,-0.143,0],"ti":[-0.008,0.149,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.16},"t":53,"s":[339.48,68.033,0],"to":[0.008,-0.149,0],"ti":[-0.028,0.16,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":54,"s":[339.535,67.568,0],"to":[0.028,-0.16,0],"ti":[-0.047,0.169,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.161},"t":55,"s":[339.647,67.072,0],"to":[0.047,-0.169,0],"ti":[-0.065,0.176,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.162},"t":56,"s":[339.816,66.553,0],"to":[0.065,-0.176,0],"ti":[-0.083,0.179,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.163},"t":57,"s":[340.039,66.018,0],"to":[0.083,-0.179,0],"ti":[-0.099,0.18,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"t":58,"s":[340.312,65.476,0],"to":[0.099,-0.18,0],"ti":[-0.053,0.09,0]},{"t":59,"s":[340.633,64.937,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.887,0.858,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":12,"s":[119.548,103.77,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.117,0.413,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.32,0.202,0]},"t":13,"s":[75.487,97.516,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.839,0.857,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.049,0.097,0]},"t":14,"s":[59.951,93.123,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.919,1.065,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.172,0.2,0]},"t":15,"s":[97.388,66.554,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-2.744,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.464,0.037,0]},"t":16,"s":[132.453,47.628,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.085,0.16,0]},"t":17,"s":[131.306,81.38,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.123,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.42,-0.023,0]},"t":18,"s":[80.905,117.92,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.005,1.294,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.05,-0.217,0]},"t":19,"s":[68.413,89.26,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.919,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.004,0.065,0]},"t":20,"s":[99.306,97.223,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.384,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[-3.282,0,0]},"t":21,"s":[66.686,61.177,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.766,1.087,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,-0.035,0]},"t":22,"s":[67.494,97.2,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.858,0.983,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.129,0.043,0]},"t":23,"s":[80.098,71.917,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.241,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.201,-0.022,0]},"t":24,"s":[102.945,123.537,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,1.252,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,0.427,0]},"t":25,"s":[119.07,82.641,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.957,0.883,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.378,0.063,0]},"t":26,"s":[56.225,72.735,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.764,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.089,0.289,0]},"t":27,"s":[67.587,112.547,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,1.01,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,-0.022,0]},"t":28,"s":[62.103,128.666,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.018,1.194,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.415,0.009,0]},"t":29,"s":[117.871,115.971,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.145,0.86,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.015,0.058,0]},"t":30,"s":[121.362,130.232,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,1.04,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,0.206,0]},"t":31,"s":[117.096,82.77,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,0.027,0]},"t":32,"s":[77.619,50.423,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.856,0.71,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.172,-1.15,0]},"t":33,"s":[120.562,98.344,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,0.484,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.199,0.117,0]},"t":34,"s":[106.534,95.106,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.217,1.063,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0.099,0]},"t":35,"s":[96.391,87.062,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.954,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,0.036,0]},"t":36,"s":[106.476,45.285,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.104,0.996,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.179,-0.103,0]},"t":37,"s":[70.097,118.413,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.008,1.087,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.046,-0.004,0]},"t":38,"s":[81.643,85.768,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,0.043,0]},"t":39,"s":[55.641,116.896,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.011,0.466,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.675,1.402,0]},"t":40,"s":[83.987,53.173,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.17,0.898,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,0.099,0]},"t":41,"s":[85.471,49.147,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.916,1.762,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.056,0.465,0]},"t":42,"s":[102.003,27.383,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.131,1.022,1]},"o":{"x":[0.167,0.167,0.167],"y":[7.85,0.075,0]},"t":43,"s":[51.831,22.635,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.033,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.017,0]},"t":44,"s":[51.293,70.822,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.9,1.802,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.087,1.766,0]},"t":45,"s":[52.676,10.032,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.828,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.491,0.075,0]},"t":46,"s":[85.033,7.021,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.048,0.89,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.162,-0.017,0]},"t":47,"s":[91.644,38.996,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.854,1.128,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,0.341,0]},"t":48,"s":[98.641,12.455,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.425,0.857,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.195,0.05,0]},"t":49,"s":[87.583,3.883,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.84,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.097,0.199,0]},"t":50,"s":[79.333,25.603,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.932,0.756,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.174,-0.018,0]},"t":51,"s":[30.689,41.218,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.381,1.037,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.362,0.127,0]},"t":52,"s":[-14.018,28.37,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.031,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.026,0]},"t":53,"s":[-5.646,3.642,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.941,0.845,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,-0.306,0]},"t":54,"s":[48.164,39.412,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.726,0.492,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.197,0.18,0]},"t":55,"s":[-25.525,31.762,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,1.052,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.12,0.1,0]},"t":56,"s":[-3.614,25.17,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.387,0.994,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.415,0.032,0]},"t":57,"s":[46.515,-8.426,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.079,-0.006,0]},"t":58,"s":[48.307,46.093,100]},{"t":59,"s":[16.689,-4.541,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":12,"op":60,"st":12,"bm":0},{"ddd":0,"ind":47,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[100]},{"t":51,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.549},"o":{"x":0.167,"y":0.167},"t":8,"s":[272.244,257.087,0],"to":[-0.124,-0.32,0],"ti":[0.816,1.673,0]},{"i":{"x":0.833,"y":0.761},"o":{"x":0.167,"y":0.102},"t":9,"s":[271.5,255.164,0],"to":[-0.816,-1.673,0],"ti":[2.219,3.742,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.128},"t":10,"s":[267.351,247.049,0],"to":[-2.219,-3.742,0],"ti":[3.396,4.937,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":11,"s":[258.186,232.713,0],"to":[-3.396,-4.937,0],"ti":[3.5,4.76,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.179},"t":12,"s":[246.972,217.428,0],"to":[-3.5,-4.76,0],"ti":[2.913,4.097,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.184},"t":13,"s":[237.183,204.156,0],"to":[-2.913,-4.097,0],"ti":[2.265,3.524,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":14,"s":[229.496,192.846,0],"to":[-2.265,-3.524,0],"ti":[1.734,3.087,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":15,"s":[223.596,183.013,0],"to":[-1.734,-3.087,0],"ti":[1.325,2.741,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":16,"s":[219.089,174.323,0],"to":[-1.325,-2.741,0],"ti":[1.014,2.455,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":17,"s":[215.647,166.568,0],"to":[-1.014,-2.455,0],"ti":[0.78,2.215,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":18,"s":[213.008,159.593,0],"to":[-0.78,-2.215,0],"ti":[0.606,2.01,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":19,"s":[210.967,153.279,0],"to":[-0.606,-2.01,0],"ti":[0.48,1.83,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":20,"s":[209.371,147.533,0],"to":[-0.48,-1.83,0],"ti":[0.392,1.66,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[208.089,142.301,0],"to":[-0.392,-1.66,0],"ti":[0.329,1.501,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[207.021,137.573,0],"to":[-0.329,-1.501,0],"ti":[0.281,1.36,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[206.115,133.293,0],"to":[-0.281,-1.36,0],"ti":[0.243,1.235,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":24,"s":[205.336,129.411,0],"to":[-0.243,-1.235,0],"ti":[0.212,1.123,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":25,"s":[204.658,125.885,0],"to":[-0.212,-1.123,0],"ti":[0.187,1.022,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[204.062,122.676,0],"to":[-0.187,-1.022,0],"ti":[0.165,0.933,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[203.537,119.751,0],"to":[-0.165,-0.933,0],"ti":[0.145,0.852,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":28,"s":[203.075,117.081,0],"to":[-0.145,-0.852,0],"ti":[0.126,0.779,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":29,"s":[202.67,114.64,0],"to":[-0.126,-0.779,0],"ti":[0.108,0.713,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":30,"s":[202.32,112.406,0],"to":[-0.108,-0.713,0],"ti":[0.09,0.654,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[202.024,110.359,0],"to":[-0.09,-0.654,0],"ti":[0.072,0.599,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":32,"s":[201.781,108.484,0],"to":[-0.072,-0.599,0],"ti":[0.054,0.55,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":33,"s":[201.591,106.763,0],"to":[-0.054,-0.55,0],"ti":[0.036,0.505,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":34,"s":[201.455,105.183,0],"to":[-0.036,-0.505,0],"ti":[0.018,0.464,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":35,"s":[201.374,103.731,0],"to":[-0.018,-0.464,0],"ti":[-0.001,0.427,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":36,"s":[201.348,102.397,0],"to":[0.001,-0.427,0],"ti":[-0.019,0.391,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":37,"s":[201.377,101.171,0],"to":[0.019,-0.391,0],"ti":[-0.037,0.358,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":38,"s":[201.462,100.048,0],"to":[0.037,-0.358,0],"ti":[-0.055,0.327,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":39,"s":[201.6,99.021,0],"to":[0.055,-0.327,0],"ti":[-0.072,0.298,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":40,"s":[201.792,98.084,0],"to":[0.072,-0.298,0],"ti":[-0.089,0.269,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":41,"s":[202.034,97.235,0],"to":[0.089,-0.269,0],"ti":[-0.104,0.241,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":42,"s":[202.325,96.471,0],"to":[0.104,-0.241,0],"ti":[-0.118,0.213,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":43,"s":[202.66,95.791,0],"to":[0.118,-0.213,0],"ti":[-0.131,0.186,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":44,"s":[203.035,95.192,0],"to":[0.131,-0.186,0],"ti":[-0.142,0.158,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":45,"s":[203.446,94.675,0],"to":[0.142,-0.158,0],"ti":[-0.151,0.13,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.172},"t":46,"s":[203.886,94.242,0],"to":[0.151,-0.13,0],"ti":[-0.157,0.102,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.172},"t":47,"s":[204.349,93.894,0],"to":[0.157,-0.102,0],"ti":[-0.161,0.078,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.169},"t":48,"s":[204.827,93.632,0],"to":[0.161,-0.078,0],"ti":[-0.163,0.067,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.167},"t":49,"s":[205.315,93.423,0],"to":[0.163,-0.067,0],"ti":[-0.166,0.057,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.167},"t":50,"s":[205.808,93.233,0],"to":[0.166,-0.057,0],"ti":[-0.172,0.042,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.165},"t":51,"s":[206.31,93.079,0],"to":[0.172,-0.042,0],"ti":[-0.179,0.025,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":52,"s":[206.839,92.979,0],"to":[0.179,-0.025,0],"ti":[-0.182,0.01,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.167},"t":53,"s":[207.382,92.928,0],"to":[0.182,-0.01,0],"ti":[-0.181,-0.005,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.168},"t":54,"s":[207.929,92.922,0],"to":[0.181,0.005,0],"ti":[-0.176,-0.017,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":55,"s":[208.467,92.955,0],"to":[0.176,0.017,0],"ti":[-0.169,-0.028,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.17},"t":56,"s":[208.986,93.024,0],"to":[0.169,0.028,0],"ti":[-0.158,-0.038,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":57,"s":[209.478,93.124,0],"to":[0.158,0.038,0],"ti":[-0.145,-0.046,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.173},"t":58,"s":[209.934,93.25,0],"to":[0.145,0.046,0],"ti":[-0.069,-0.025,0]},{"t":59,"s":[210.348,93.398,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.87,0.772,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":8,"s":[119.453,55.55,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.231,0.131,0]},"t":9,"s":[106.941,69.697,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.287,0.579,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.135,-0.59,0]},"t":10,"s":[99.865,94.324,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,0.86,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.065,0.104,0]},"t":11,"s":[102.566,91.274,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.741,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.301,0.205,0]},"t":12,"s":[90.563,78.91,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.394,1.467,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.123,-0.044,0]},"t":13,"s":[85.972,70.463,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.973,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.071,0]},"t":14,"s":[76.313,75.971,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.334,0.741,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.413,-0.04,0]},"t":15,"s":[131.692,39.582,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.923,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.067,0.123,0]},"t":16,"s":[145.687,64.182,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.286,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.941,-0.085,0]},"t":17,"s":[75.572,116.009,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.026,3.589,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.094,-1.303,0]},"t":18,"s":[81.277,90.372,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.88,0.961,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.081,0]},"t":19,"s":[124.472,91.912,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.062,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.275,-0.072,0]},"t":20,"s":[67.544,42.493,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.861,1.459,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,-0.98,0]},"t":21,"s":[42.728,69.036,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.208,0.071,0]},"t":22,"s":[85.996,66.957,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-1.537,-47.561,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.187,74,0]},"t":23,"s":[114.947,80.491,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.566,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.086,0.083,0]},"t":24,"s":[113.049,80.506,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.925,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.054,0.103,0]},"t":25,"s":[57.15,89.382,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.098,5.726,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.754,-8.491,0]},"t":26,"s":[91.118,126.727,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.09,0.993,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.045,0.082,0]},"t":27,"s":[87.736,126.364,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.043,-0.008,0]},"t":28,"s":[95.097,147.312,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.56,0.516,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.913,0.225,0]},"t":29,"s":[79.819,128.237,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.088,0.101,0]},"t":30,"s":[78.286,116.992,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.612,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,-0.463,0]},"t":31,"s":[51.103,62.981,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.755,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.177,0.106,0]},"t":32,"s":[120.097,71.216,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.78,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.126,-0.07,0]},"t":33,"s":[97.985,101.356,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.958,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.054,0.134,0]},"t":34,"s":[55.144,84.965,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.921,0.999,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.086,-0.43,0]},"t":35,"s":[81.051,58.096,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.51,1.562,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.655,-0.001,0]},"t":36,"s":[68.289,62.454,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.243,1.041,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,0.073,0]},"t":37,"s":[68.9,58.129,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.116,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,0.028,0]},"t":38,"s":[64.548,91.624,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.007,0.943,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.048,-0.49,0]},"t":39,"s":[81.603,41.501,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.027,-0.787,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,-0.185,0]},"t":40,"s":[40.821,48.785,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,0.981,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,0.087,0]},"t":41,"s":[85.22,46.522,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.945,1.024,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.112,-0.025,0]},"t":42,"s":[26.513,0.273,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.915,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.158,0.018,0]},"t":43,"s":[51.537,35.891,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.358,1.609,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.318,4.617,0]},"t":44,"s":[42.897,-9.828,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,0.696,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,0.073,0]},"t":45,"s":[44.69,-10.668,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,0.946,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.095,0.115,0]},"t":46,"s":[72.117,-3.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[2.789,0.815,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.25,-0.156,0]},"t":47,"s":[59.287,14.778,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,0.946,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.08,0.152,0]},"t":48,"s":[60.089,8.351,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.698,-0.404,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,-0.154,0]},"t":49,"s":[42.069,0.529,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.95,0.986,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.089,0]},"t":50,"s":[22.609,3.273,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.627,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.126,-0.016,0]},"t":51,"s":[-28.548,46.76,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.957,0.182,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.107,-0.67,0]},"t":52,"s":[-8.217,10.367,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.796,0.936,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.089,0.093,0]},"t":53,"s":[62.57,14.39,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.988,0.546,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,-0.271,0]},"t":54,"s":[28.321,49.863,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.858,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.015,0.102,0]},"t":55,"s":[-21.183,41.528,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.006,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.202,0,0]},"t":56,"s":[20.981,4.416,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.939,0.899,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.005,-0.071,0]},"t":57,"s":[50.62,41.308,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.223,0.468,0]},"t":58,"s":[18.942,21.34,100]},{"t":59,"s":[27.547,17.011,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":60,"st":8,"bm":0},{"ddd":0,"ind":48,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":2,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29,"s":[100]},{"t":45,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.599},"o":{"x":0.167,"y":0.167},"t":2,"s":[273.94,260.349,0],"to":[-0.179,0.314,0],"ti":[0.915,-1.476,0]},{"i":{"x":0.833,"y":0.765},"o":{"x":0.167,"y":0.105},"t":3,"s":[272.864,262.231,0],"to":[-0.915,1.476,0],"ti":[2.375,-3.065,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":4,"s":[268.451,269.206,0],"to":[-2.375,3.065,0],"ti":[3.841,-3.636,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":5,"s":[258.614,280.62,0],"to":[-3.841,3.636,0],"ti":[4.317,-2.988,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.178},"t":6,"s":[245.406,291.021,0],"to":[-4.317,2.988,0],"ti":[3.939,-2.213,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":7,"s":[232.715,298.549,0],"to":[-3.939,2.213,0],"ti":[3.368,-1.76,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":8,"s":[221.77,304.296,0],"to":[-3.368,1.76,0],"ti":[2.855,-1.514,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":9,"s":[212.51,309.106,0],"to":[-2.855,1.514,0],"ti":[2.434,-1.366,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":10,"s":[204.641,313.381,0],"to":[-2.434,1.366,0],"ti":[2.092,-1.261,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":11,"s":[197.904,317.3,0],"to":[-2.092,1.261,0],"ti":[1.81,-1.177,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":12,"s":[192.09,320.946,0],"to":[-1.81,1.177,0],"ti":[1.575,-1.103,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":13,"s":[187.044,324.36,0],"to":[-1.575,1.103,0],"ti":[1.376,-1.035,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":14,"s":[182.643,327.564,0],"to":[-1.376,1.035,0],"ti":[1.205,-0.972,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":15,"s":[178.791,330.572,0],"to":[-1.205,0.972,0],"ti":[1.057,-0.911,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":16,"s":[175.413,333.393,0],"to":[-1.057,0.911,0],"ti":[0.928,-0.852,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[172.447,336.036,0],"to":[-0.928,0.852,0],"ti":[0.814,-0.797,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":18,"s":[169.845,338.508,0],"to":[-0.814,0.797,0],"ti":[0.712,-0.743,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":19,"s":[167.565,340.816,0],"to":[-0.712,0.743,0],"ti":[0.621,-0.692,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":20,"s":[165.574,342.967,0],"to":[-0.621,0.692,0],"ti":[0.539,-0.642,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":21,"s":[163.841,344.967,0],"to":[-0.539,0.642,0],"ti":[0.464,-0.595,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":22,"s":[162.342,346.821,0],"to":[-0.464,0.595,0],"ti":[0.397,-0.549,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":23,"s":[161.056,348.535,0],"to":[-0.397,0.549,0],"ti":[0.336,-0.504,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":24,"s":[159.962,350.113,0],"to":[-0.336,0.504,0],"ti":[0.28,-0.461,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":25,"s":[159.042,351.559,0],"to":[-0.28,0.461,0],"ti":[0.23,-0.419,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":26,"s":[158.282,352.878,0],"to":[-0.23,0.419,0],"ti":[0.185,-0.378,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":27,"s":[157.663,354.073,0],"to":[-0.185,0.378,0],"ti":[0.145,-0.339,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":28,"s":[157.172,355.149,0],"to":[-0.145,0.339,0],"ti":[0.11,-0.301,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.18},"t":29,"s":[156.793,356.108,0],"to":[-0.11,0.301,0],"ti":[0.08,-0.264,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.181},"t":30,"s":[156.511,356.955,0],"to":[-0.08,0.264,0],"ti":[0.054,-0.227,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.182},"t":31,"s":[156.313,357.691,0],"to":[-0.054,0.227,0],"ti":[0.034,-0.191,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.185},"t":32,"s":[156.184,358.318,0],"to":[-0.034,0.191,0],"ti":[0.018,-0.156,0]},{"i":{"x":0.833,"y":0.854},"o":{"x":0.167,"y":0.188},"t":33,"s":[156.11,358.839,0],"to":[-0.018,0.156,0],"ti":[0.007,-0.122,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.194},"t":34,"s":[156.077,359.255,0],"to":[-0.007,0.122,0],"ti":[-0.009,-0.098,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.177},"t":35,"s":[156.07,359.568,0],"to":[0.009,0.098,0],"ti":[-0.034,-0.089,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.162},"t":36,"s":[156.129,359.841,0],"to":[0.034,0.089,0],"ti":[-0.059,-0.084,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.16},"t":37,"s":[156.271,360.101,0],"to":[0.059,0.084,0],"ti":[-0.08,-0.078,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.16},"t":38,"s":[156.482,360.344,0],"to":[0.08,0.078,0],"ti":[-0.098,-0.071,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.161},"t":39,"s":[156.751,360.569,0],"to":[0.098,0.071,0],"ti":[-0.112,-0.063,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":40,"s":[157.068,360.771,0],"to":[0.112,0.063,0],"ti":[-0.124,-0.054,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.163},"t":41,"s":[157.425,360.948,0],"to":[0.124,0.054,0],"ti":[-0.129,-0.049,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.166},"t":42,"s":[157.811,361.097,0],"to":[0.129,0.049,0],"ti":[-0.126,-0.051,0]},{"i":{"x":0.833,"y":0.837},"o":{"x":0.167,"y":0.169},"t":43,"s":[158.201,361.241,0],"to":[0.126,0.051,0],"ti":[-0.118,-0.056,0]},{"i":{"x":0.833,"y":0.838},"o":{"x":0.167,"y":0.171},"t":44,"s":[158.569,361.404,0],"to":[0.118,0.056,0],"ti":[-0.109,-0.06,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.172},"t":45,"s":[158.91,361.58,0],"to":[0.109,0.06,0],"ti":[-0.098,-0.062,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":46,"s":[159.221,361.765,0],"to":[0.098,0.062,0],"ti":[-0.087,-0.063,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.174},"t":47,"s":[159.499,361.954,0],"to":[0.087,0.063,0],"ti":[-0.074,-0.063,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":48,"s":[159.741,362.144,0],"to":[0.074,0.063,0],"ti":[-0.062,-0.061,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.178},"t":49,"s":[159.945,362.33,0],"to":[0.062,0.061,0],"ti":[-0.049,-0.058,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.18},"t":50,"s":[160.111,362.509,0],"to":[0.049,0.058,0],"ti":[-0.036,-0.053,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.182},"t":51,"s":[160.237,362.677,0],"to":[0.036,0.053,0],"ti":[-0.023,-0.048,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.185},"t":52,"s":[160.325,362.83,0],"to":[0.023,0.048,0],"ti":[-0.011,-0.042,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.187},"t":53,"s":[160.376,362.965,0],"to":[0.011,0.042,0],"ti":[0.001,-0.034,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.187},"t":54,"s":[160.39,363.08,0],"to":[-0.001,0.034,0],"ti":[0.011,-0.026,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.178},"t":55,"s":[160.371,363.171,0],"to":[-0.011,0.026,0],"ti":[0.021,-0.017,0]},{"i":{"x":0.833,"y":0.82},"o":{"x":0.167,"y":0.164},"t":56,"s":[160.322,363.235,0],"to":[-0.021,0.017,0],"ti":[0.029,-0.006,0]},{"i":{"x":0.833,"y":0.816},"o":{"x":0.167,"y":0.155},"t":57,"s":[160.247,363.27,0],"to":[-0.029,0.006,0],"ti":[0.035,0.004,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.152},"t":58,"s":[160.149,363.273,0],"to":[-0.035,-0.004,0],"ti":[0.019,0.005,0]},{"t":59,"s":[160.035,363.244,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.052,0.912,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":2,"s":[91.411,73.902,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,0.39,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.032,1.61,0]},"t":3,"s":[65.83,91.918,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.046,1.571,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,0.097,0]},"t":4,"s":[107.448,92.901,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,0.073,0]},"t":5,"s":[152.078,99.113,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.847,0.674,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.195,-0.969,0]},"t":6,"s":[82.703,50.368,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.029,0.728,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.183,0.112,0]},"t":7,"s":[103.48,54.226,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.79,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.022,0.12,0]},"t":8,"s":[120.884,65.462,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.95,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.138,-0.135,0]},"t":9,"s":[97.362,90.861,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.855,1.74,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.209,-0.125,0]},"t":10,"s":[61.56,81.156,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.023,1.03,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.196,0.075,0]},"t":11,"s":[71.774,85.037,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.369,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.018,0.022,0]},"t":12,"s":[79.328,46.686,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,0.844,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.068,-0.362,0]},"t":13,"s":[69.652,98.9,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.223,1.075,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.384,0.179,0]},"t":14,"s":[122.192,89.119,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.92,0.879,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.061,0.04,0]},"t":15,"s":[136.768,80.556,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.268,1.123,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.772,0.269,0]},"t":16,"s":[83.231,96.867,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.041,0.715,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,0.05,0]},"t":17,"s":[85.636,104.189,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.882,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.028,0.118,0]},"t":18,"s":[119.843,86.028,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.101,-1.337,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.286,-2.378,0]},"t":19,"s":[68.608,42.162,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.862,0.996,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.046,0.086,0]},"t":20,"s":[47.52,43.647,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.979,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.21,-0.004,0]},"t":21,"s":[94.079,83.818,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.63,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.12,-0.028,0]},"t":22,"s":[124.614,45.446,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.867,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.108,0.16,0]},"t":23,"s":[112.121,74.09,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.798,1.043,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.082,0.224,0]},"t":24,"s":[69.17,105.139,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,1.056,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.142,0.028,0]},"t":25,"s":[90.804,123.544,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.836,0.968,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,0.034,0]},"t":26,"s":[121.588,95.744,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.88,0.908,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.17,-0.053,0]},"t":27,"s":[95.051,142.325,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.702,0.553,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.275,0.917,0]},"t":28,"s":[69.508,113.896,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.63,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,0.102,0]},"t":29,"s":[58.415,111.056,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.97,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.069,0.108,0]},"t":30,"s":[29.777,98.67,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.682,0.963,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,-0.046,0]},"t":31,"s":[45.407,56.133,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.99,0.982,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,-0.066,0]},"t":32,"s":[34.491,83.602,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,1.248,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.012,-0.022,0]},"t":33,"s":[3.789,68.283,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,0.862,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.224,0.062,0]},"t":34,"s":[30.69,80.365,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.11,1.012,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,0.211,0]},"t":35,"s":[46.645,32.371,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.919,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,0.011,0]},"t":36,"s":[32.343,1.12,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.962,1.001,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.466,-0.037,0]},"t":37,"s":[65.552,37.014,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.026,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.087,0.001,0]},"t":38,"s":[64.467,12.19,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.059,-0.017,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,-0.473,0]},"t":39,"s":[40,37.362,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.936,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.034,0.091,0]},"t":40,"s":[72.228,33.594,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.744,0.949,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.269,-0.441,0]},"t":41,"s":[17.233,-8.641,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,1.149,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.124,-0.134,0]},"t":42,"s":[30.25,-1.935,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.994,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.017,0.053,0]},"t":43,"s":[57.17,-4.506,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.998,1.452,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.006,-0.034,0]},"t":44,"s":[23.549,2.656,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.864,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.002,0.07,0]},"t":45,"s":[54.911,-2.436,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.044,1.08,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.138,0.216,0]},"t":46,"s":[24.231,30.266,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.98,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.029,0.041,0]},"t":47,"s":[35.767,50.837,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.284,0.351,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.027,-0.49,0]},"t":48,"s":[18.177,10.486,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.93,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,0.096,0]},"t":49,"s":[31.443,16.354,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.369,0.815,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.427,-0.033,0]},"t":50,"s":[-27.024,56.172,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,0.996,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.152,0]},"t":51,"s":[-17.47,27.705,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.145,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.306,-0.005,0]},"t":52,"s":[45.271,-6.879,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.872,1.081,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.053,0.227,0]},"t":53,"s":[68.762,25.916,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.048,1.039,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.239,0.041,0]},"t":54,"s":[4.456,44.914,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,0.026,0]},"t":55,"s":[-30.068,7.408,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.082,0.922,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.101,-0.08,0]},"t":56,"s":[24.371,62.294,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,2.558,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.041,-1.19,0]},"t":57,"s":[-0.235,34.376,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.394,0.079,0]},"t":58,"s":[48.622,36.203,100]},{"t":59,"s":[61.716,0.231,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":2,"op":60,"st":2,"bm":0},{"ddd":0,"ind":49,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":34,"s":[100]},{"t":50,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.551},"o":{"x":0.167,"y":0.167},"t":7,"s":[272.377,258.087,0],"to":[-0.394,0.137,0],"ti":[2.139,-0.681,0]},{"i":{"x":0.833,"y":0.762},"o":{"x":0.167,"y":0.102},"t":8,"s":[270.01,258.906,0],"to":[-2.139,0.681,0],"ti":[5.098,-1.104,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.128},"t":9,"s":[259.541,262.172,0],"to":[-5.098,1.104,0],"ti":[7.13,-0.303,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":10,"s":[239.424,265.531,0],"to":[-7.13,0.303,0],"ti":[6.918,1.295,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":11,"s":[216.76,263.988,0],"to":[-6.918,-1.295,0],"ti":[5.553,2.383,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":12,"s":[197.916,257.762,0],"to":[-5.553,-2.383,0],"ti":[4.294,2.71,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":13,"s":[183.44,249.693,0],"to":[-4.294,-2.71,0],"ti":[3.412,2.643,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":14,"s":[172.149,241.499,0],"to":[-3.412,-2.643,0],"ti":[2.824,2.427,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":15,"s":[162.967,233.838,0],"to":[-2.824,-2.427,0],"ti":[2.43,2.167,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":16,"s":[155.204,226.937,0],"to":[-2.43,-2.167,0],"ti":[2.166,1.903,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":17,"s":[148.386,220.833,0],"to":[-2.166,-1.903,0],"ti":[1.988,1.643,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":18,"s":[142.207,215.519,0],"to":[-1.988,-1.643,0],"ti":[1.866,1.384,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":19,"s":[136.458,210.978,0],"to":[-1.866,-1.384,0],"ti":[1.768,1.113,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":20,"s":[131.01,207.214,0],"to":[-1.768,-1.113,0],"ti":[1.677,0.828,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":21,"s":[125.848,204.301,0],"to":[-1.677,-0.828,0],"ti":[1.589,0.546,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":22,"s":[120.949,202.245,0],"to":[-1.589,-0.546,0],"ti":[1.493,0.277,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":23,"s":[116.315,201.024,0],"to":[-1.493,-0.277,0],"ti":[1.38,0.034,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":24,"s":[111.993,200.584,0],"to":[-1.38,-0.034,0],"ti":[1.254,-0.168,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[108.033,200.82,0],"to":[-1.254,0.168,0],"ti":[1.122,-0.322,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.174},"t":26,"s":[104.469,201.591,0],"to":[-1.122,0.322,0],"ti":[0.991,-0.429,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":27,"s":[101.304,202.75,0],"to":[-0.991,0.429,0],"ti":[0.869,-0.496,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":28,"s":[98.52,204.163,0],"to":[-0.869,0.496,0],"ti":[0.759,-0.533,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.173},"t":29,"s":[96.088,205.725,0],"to":[-0.759,0.533,0],"ti":[0.662,-0.548,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.173},"t":30,"s":[93.965,207.359,0],"to":[-0.662,0.548,0],"ti":[0.577,-0.547,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":31,"s":[92.114,209.011,0],"to":[-0.577,0.547,0],"ti":[0.502,-0.535,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":32,"s":[90.501,210.642,0],"to":[-0.502,0.535,0],"ti":[0.436,-0.515,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":33,"s":[89.1,212.221,0],"to":[-0.436,0.515,0],"ti":[0.376,-0.488,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":34,"s":[87.887,213.729,0],"to":[-0.376,0.488,0],"ti":[0.324,-0.458,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":35,"s":[86.842,215.15,0],"to":[-0.324,0.458,0],"ti":[0.277,-0.424,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":36,"s":[85.945,216.475,0],"to":[-0.277,0.424,0],"ti":[0.234,-0.388,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":37,"s":[85.182,217.694,0],"to":[-0.234,0.388,0],"ti":[0.195,-0.349,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.178},"t":38,"s":[84.541,218.8,0],"to":[-0.195,0.349,0],"ti":[0.16,-0.31,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":39,"s":[84.009,219.79,0],"to":[-0.16,0.31,0],"ti":[0.129,-0.269,0]},{"i":{"x":0.833,"y":0.849},"o":{"x":0.167,"y":0.182},"t":40,"s":[83.578,220.658,0],"to":[-0.129,0.269,0],"ti":[0.099,-0.226,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.186},"t":41,"s":[83.238,221.401,0],"to":[-0.099,0.226,0],"ti":[0.072,-0.183,0]},{"i":{"x":0.833,"y":0.857},"o":{"x":0.167,"y":0.19},"t":42,"s":[82.984,222.016,0],"to":[-0.072,0.183,0],"ti":[0.048,-0.14,0]},{"i":{"x":0.833,"y":0.865},"o":{"x":0.167,"y":0.199},"t":43,"s":[82.806,222.502,0],"to":[-0.048,0.14,0],"ti":[0.026,-0.097,0]},{"i":{"x":0.833,"y":0.882},"o":{"x":0.167,"y":0.219},"t":44,"s":[82.697,222.858,0],"to":[-0.026,0.097,0],"ti":[0.005,-0.052,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.284},"t":45,"s":[82.651,223.082,0],"to":[-0.005,0.052,0],"ti":[-0.014,-0.008,0]},{"i":{"x":0.833,"y":0.751},"o":{"x":0.167,"y":0.174},"t":46,"s":[82.666,223.173,0],"to":[0.014,0.008,0],"ti":[-0.027,0.032,0]},{"i":{"x":0.833,"y":0.805},"o":{"x":0.167,"y":0.125},"t":47,"s":[82.736,223.128,0],"to":[0.027,-0.032,0],"ti":[-0.027,0.062,0]},{"i":{"x":0.833,"y":0.812},"o":{"x":0.167,"y":0.145},"t":48,"s":[82.826,222.979,0],"to":[0.027,-0.062,0],"ti":[-0.023,0.085,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.149},"t":49,"s":[82.9,222.757,0],"to":[0.023,-0.085,0],"ti":[-0.025,0.099,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.161},"t":50,"s":[82.964,222.469,0],"to":[0.025,-0.099,0],"ti":[-0.032,0.102,0]},{"i":{"x":0.833,"y":0.834},"o":{"x":0.167,"y":0.165},"t":51,"s":[83.05,222.164,0],"to":[0.032,-0.102,0],"ti":[-0.036,0.101,0]},{"i":{"x":0.833,"y":0.836},"o":{"x":0.167,"y":0.167},"t":52,"s":[83.155,221.857,0],"to":[0.036,-0.101,0],"ti":[-0.038,0.098,0]},{"i":{"x":0.833,"y":0.839},"o":{"x":0.167,"y":0.17},"t":53,"s":[83.269,221.556,0],"to":[0.038,-0.098,0],"ti":[-0.038,0.093,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.172},"t":54,"s":[83.385,221.268,0],"to":[0.038,-0.093,0],"ti":[-0.035,0.085,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.175},"t":55,"s":[83.497,221,0],"to":[0.035,-0.085,0],"ti":[-0.031,0.076,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.179},"t":56,"s":[83.598,220.758,0],"to":[0.031,-0.076,0],"ti":[-0.024,0.065,0]},{"i":{"x":0.833,"y":0.853},"o":{"x":0.167,"y":0.184},"t":57,"s":[83.682,220.545,0],"to":[0.024,-0.065,0],"ti":[-0.017,0.053,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.192},"t":58,"s":[83.745,220.367,0],"to":[0.017,-0.053,0],"ti":[-0.006,0.023,0]},{"t":59,"s":[83.781,220.227,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.852,3.785,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":7,"s":[121.49,88.737,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.91,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.19,0.081,0]},"t":8,"s":[91.076,88.159,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.429,-3.486,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.162,-1.415,0]},"t":9,"s":[67.412,108.062,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.033,0.953,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.098,0.085,0]},"t":10,"s":[65.583,106.955,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.841,0.807,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,-0.106,0]},"t":11,"s":[54.874,48.475,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.733,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.176,0.146,0]},"t":12,"s":[69.879,74.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.032,1.001,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.121,0.246,0]},"t":13,"s":[83.434,108.14,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.978,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.023,0.001,0]},"t":14,"s":[113.236,125.507,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.937,0.727,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.03,0.227,0]},"t":15,"s":[72.085,108.002,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.63,0.848,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.261,0.12,0]},"t":16,"s":[102.383,97.845,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.922,0.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.108,0.184,0]},"t":17,"s":[95.054,74.753,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.758,1.104,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.116,0.155,0]},"t":18,"s":[69.833,55.593,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.253,0.933,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,0.046,0]},"t":19,"s":[71.585,33.206,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.845,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,-0.336,0]},"t":20,"s":[74.924,83.413,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,1.179,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.069,0.18,0]},"t":21,"s":[121.778,73.433,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.929,0.903,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.41,0.057,0]},"t":22,"s":[96.063,64.842,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-2.344,1.503,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.493,0.61,0]},"t":23,"s":[89.506,91.864,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1.002,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.085,0.071,0]},"t":24,"s":[90.453,96.143,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.913,0.848,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0.002,0]},"t":25,"s":[127.532,66.021,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.203,1.019,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.831,0.185,0]},"t":26,"s":[90.276,96.965,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.094,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.059,0.015,0]},"t":27,"s":[88.5,122.317,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.722,1.067,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.044,-0.049,0]},"t":28,"s":[94.599,91.269,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.905,0.958,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.119,0.037,0]},"t":29,"s":[81.585,110.87,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.81,0.948,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.689,-0.085,0]},"t":30,"s":[51.164,75.568,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.817,1.401,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.148,-0.141,0]},"t":31,"s":[46.977,93.082,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.272,0.996,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.153,0.069,0]},"t":32,"s":[41.615,86.585,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,0.774,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.064,-0.004,0]},"t":33,"s":[35.186,124.337,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.499,0.946,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.532,0.132,0]},"t":34,"s":[62.591,88.269,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.951,0.921,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.071,-0.154,0]},"t":35,"s":[58.881,26.321,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.072,1.831,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.121,-1.508,0]},"t":36,"s":[84.818,48.109,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.946,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.038,0.076,0]},"t":37,"s":[74.254,46.968,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.594,35.497,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.15,12.359,0]},"t":38,"s":[93.883,59.486,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.867,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.105,0.083,0]},"t":39,"s":[86.872,59.571,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.076,0.594,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.224,-0.643,0]},"t":40,"s":[59.763,24.304,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.02,0.969,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.105,0]},"t":41,"s":[43.653,28.352,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,1.059,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,-0.049,0]},"t":42,"s":[74.399,44.017,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.401,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.523,0.034,0]},"t":43,"s":[36.198,34.152,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.943,0.234,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.069,0.557,0]},"t":44,"s":[41.448,50.974,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.109,1.139,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.183,0.094,0]},"t":45,"s":[10.923,53.931,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.042,0.95,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.047,0.052,0]},"t":46,"s":[20.467,78.157,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.003,0.801,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.028,-0.123,0]},"t":47,"s":[-1.575,13.482,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.927,0.974,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.003,0.144,0]},"t":48,"s":[31.467,39.632,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.201,0.662,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.568,-0.037,0]},"t":49,"s":[-2.832,75.796,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,0.948,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.111,0]},"t":50,"s":[1.556,50.773,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.966,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.302,-0.136,0]},"t":51,"s":[39.258,-25.561,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.108,1.032,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.057,0.164,0]},"t":52,"s":[53.602,3.457,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,1.046,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.092,0.023,0]},"t":53,"s":[45.062,33.613,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.964,0.941,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.07,0.03,0]},"t":54,"s":[-37.848,-8.287,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.116,0.998,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.063,-0.206,0]},"t":55,"s":[7.213,56.765,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,1.241,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.049,-0.003,0]},"t":56,"s":[-18.526,38.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.835,0.935,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.416,0.062,0]},"t":57,"s":[43.172,56.215,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.168,-0.296,0]},"t":58,"s":[58.626,-14.531,100]},{"t":59,"s":[73.773,0.993,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3137254901960784,0.8901960784313725,0.7607843137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":60,"st":7,"bm":0},{"ddd":0,"ind":50,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":33,"s":[100]},{"t":49,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.592},"o":{"x":0.167,"y":0.167},"t":6,"s":[272.75,257.654,0],"to":[0.022,0.426,0],"ti":[-0.208,-2.079,0]},{"i":{"x":0.833,"y":0.764},"o":{"x":0.167,"y":0.105},"t":7,"s":[272.88,260.209,0],"to":[0.208,2.079,0],"ti":[-0.762,-4.636,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.129},"t":8,"s":[273.997,270.127,0],"to":[0.762,4.636,0],"ti":[-1.59,-6.205,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.158},"t":9,"s":[277.455,288.025,0],"to":[1.59,6.205,0],"ti":[-2.259,-5.901,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":10,"s":[283.537,307.355,0],"to":[2.259,5.901,0],"ti":[-2.568,-4.763,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":11,"s":[291.011,323.433,0],"to":[2.568,4.763,0],"ti":[-2.65,-3.689,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.182},"t":12,"s":[298.946,335.933,0],"to":[2.65,3.689,0],"ti":[-2.621,-2.842,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":13,"s":[306.911,345.569,0],"to":[2.621,2.842,0],"ti":[-2.532,-2.186,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.179},"t":14,"s":[314.674,352.986,0],"to":[2.532,2.186,0],"ti":[-2.408,-1.678,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.178},"t":15,"s":[322.1,358.684,0],"to":[2.408,1.678,0],"ti":[-2.266,-1.285,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":16,"s":[329.119,363.056,0],"to":[2.266,1.285,0],"ti":[-2.117,-0.981,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":17,"s":[335.695,366.397,0],"to":[2.117,0.981,0],"ti":[-1.968,-0.746,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":18,"s":[341.819,368.944,0],"to":[1.968,0.746,0],"ti":[-1.824,-0.565,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":19,"s":[347.502,370.875,0],"to":[1.824,0.565,0],"ti":[-1.688,-0.424,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":20,"s":[352.764,372.332,0],"to":[1.688,0.424,0],"ti":[-1.56,-0.315,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":21,"s":[357.63,373.419,0],"to":[1.56,0.315,0],"ti":[-1.442,-0.23,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":22,"s":[362.126,374.22,0],"to":[1.442,0.23,0],"ti":[-1.332,-0.163,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[366.28,374.797,0],"to":[1.332,0.163,0],"ti":[-1.23,-0.11,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[370.118,375.198,0],"to":[1.23,0.11,0],"ti":[-1.135,-0.068,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":25,"s":[373.661,375.459,0],"to":[1.135,0.068,0],"ti":[-1.047,-0.035,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":26,"s":[376.93,375.608,0],"to":[1.047,0.035,0],"ti":[-0.963,-0.007,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":27,"s":[379.942,375.666,0],"to":[0.963,0.007,0],"ti":[-0.884,0.016,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":28,"s":[382.71,375.649,0],"to":[0.884,-0.016,0],"ti":[-0.808,0.036,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":29,"s":[385.245,375.569,0],"to":[0.808,-0.036,0],"ti":[-0.736,0.053,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":30,"s":[387.559,375.434,0],"to":[0.736,-0.053,0],"ti":[-0.666,0.068,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":31,"s":[389.659,375.251,0],"to":[0.666,-0.068,0],"ti":[-0.598,0.082,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":32,"s":[391.553,375.025,0],"to":[0.598,-0.082,0],"ti":[-0.531,0.096,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":33,"s":[393.245,374.757,0],"to":[0.531,-0.096,0],"ti":[-0.471,0.106,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.176},"t":34,"s":[394.738,374.451,0],"to":[0.471,-0.106,0],"ti":[-0.425,0.111,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":35,"s":[396.069,374.119,0],"to":[0.425,-0.111,0],"ti":[-0.387,0.11,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":36,"s":[397.286,373.785,0],"to":[0.387,-0.11,0],"ti":[-0.348,0.107,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.176},"t":37,"s":[398.388,373.457,0],"to":[0.348,-0.107,0],"ti":[-0.31,0.102,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.177},"t":38,"s":[399.376,373.143,0],"to":[0.31,-0.102,0],"ti":[-0.272,0.094,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.179},"t":39,"s":[400.249,372.847,0],"to":[0.272,-0.094,0],"ti":[-0.233,0.086,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.181},"t":40,"s":[401.007,372.576,0],"to":[0.233,-0.086,0],"ti":[-0.195,0.076,0]},{"i":{"x":0.833,"y":0.851},"o":{"x":0.167,"y":0.184},"t":41,"s":[401.649,372.333,0],"to":[0.195,-0.076,0],"ti":[-0.156,0.064,0]},{"i":{"x":0.833,"y":0.856},"o":{"x":0.167,"y":0.189},"t":42,"s":[402.175,372.123,0],"to":[0.156,-0.064,0],"ti":[-0.118,0.052,0]},{"i":{"x":0.833,"y":0.864},"o":{"x":0.167,"y":0.198},"t":43,"s":[402.586,371.947,0],"to":[0.118,-0.052,0],"ti":[-0.079,0.039,0]},{"i":{"x":0.833,"y":0.881},"o":{"x":0.167,"y":0.215},"t":44,"s":[402.881,371.81,0],"to":[0.079,-0.039,0],"ti":[-0.041,0.026,0]},{"i":{"x":0.833,"y":0.888},"o":{"x":0.167,"y":0.276},"t":45,"s":[403.061,371.711,0],"to":[0.041,-0.026,0],"ti":[-0.01,0.014,0]},{"i":{"x":0.833,"y":0.805},"o":{"x":0.167,"y":0.327},"t":46,"s":[403.128,371.653,0],"to":[0.01,-0.014,0],"ti":[0.008,0.004,0]},{"i":{"x":0.833,"y":0.754},"o":{"x":0.167,"y":0.145},"t":47,"s":[403.122,371.629,0],"to":[-0.008,-0.004,0],"ti":[0.019,-0.005,0]},{"i":{"x":0.833,"y":0.789},"o":{"x":0.167,"y":0.126},"t":48,"s":[403.083,371.63,0],"to":[-0.019,0.005,0],"ti":[0.031,-0.013,0]},{"i":{"x":0.833,"y":0.805},"o":{"x":0.167,"y":0.138},"t":49,"s":[403.008,371.658,0],"to":[-0.031,0.013,0],"ti":[0.042,-0.022,0]},{"i":{"x":0.833,"y":0.813},"o":{"x":0.167,"y":0.145},"t":50,"s":[402.898,371.711,0],"to":[-0.042,0.022,0],"ti":[0.053,-0.03,0]},{"i":{"x":0.833,"y":0.818},"o":{"x":0.167,"y":0.15},"t":51,"s":[402.755,371.79,0],"to":[-0.053,0.03,0],"ti":[0.064,-0.038,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.154},"t":52,"s":[402.579,371.893,0],"to":[-0.064,0.038,0],"ti":[0.074,-0.045,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.156},"t":53,"s":[402.371,372.019,0],"to":[-0.074,0.045,0],"ti":[0.083,-0.052,0]},{"i":{"x":0.833,"y":0.826},"o":{"x":0.167,"y":0.158},"t":54,"s":[402.135,372.165,0],"to":[-0.083,0.052,0],"ti":[0.091,-0.057,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.16},"t":55,"s":[401.874,372.329,0],"to":[-0.091,0.057,0],"ti":[0.097,-0.062,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.162},"t":56,"s":[401.591,372.509,0],"to":[-0.097,0.062,0],"ti":[0.102,-0.065,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.163},"t":57,"s":[401.29,372.7,0],"to":[-0.102,0.065,0],"ti":[0.106,-0.067,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":58,"s":[400.977,372.899,0],"to":[-0.106,0.067,0],"ti":[0.053,-0.034,0]},{"t":59,"s":[400.657,373.102,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.867,1.088,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":6,"s":[119.144,105.827,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.795,0.877,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.222,0.043,0]},"t":7,"s":[108.917,89.684,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.672,1.179,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.141,0.257,0]},"t":8,"s":[102.765,122.894,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.908,0.844,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.112,0.057,0]},"t":9,"s":[93.801,138.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.347,0.934,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.904,0.179,0]},"t":10,"s":[67.511,88.612,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.047,0.005,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,-0.308,0]},"t":11,"s":[64.842,45.024,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.006,0.93,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.03,0.091,0]},"t":12,"s":[46.604,54.307,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.068,0.682,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,-0.449,0]},"t":13,"s":[75.236,155.919,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.86,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.037,0.113,0]},"t":14,"s":[44.513,140.008,100]},{"i":{"x":[0.833,0.833,0.833],"y":[152.322,0.967,1]},"o":{"x":[0.167,0.167,0.167],"y":[270.204,0.206,0]},"t":15,"s":[100.175,95.172,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.025,0.944,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.083,-0.056,0]},"t":16,"s":[100.192,64.696,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.006,0.462,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,-0.171,0]},"t":17,"s":[68.993,82.975,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.991,1.026,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.006,0.099,0]},"t":18,"s":[109.723,76.983,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.999,0.913,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.01,0.02,0]},"t":19,"s":[65.994,44.292,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.952,2.661,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.001,2.206,0]},"t":20,"s":[105.048,87.05,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.907,0.908,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.115,0.079,0]},"t":21,"s":[66.25,88.729,100]},{"i":{"x":[0.833,0.833,0.833],"y":[-0.395,1.035,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.774,0.85,0]},"t":22,"s":[82.513,53.595,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.013,0.706,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.089,0.024,0]},"t":23,"s":[84.475,49.774,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.914,0.563,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.011,0.116,0]},"t":24,"s":[115.346,55.183,100]},{"i":{"x":[0.833,0.833,0.833],"y":[3.517,0.971,1]},"o":{"x":[0.167,0.167,0.167],"y":[2.433,0.103,0]},"t":25,"s":[79.807,68.878,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.948,0.939,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.081,-0.045,0]},"t":26,"s":[78.547,127.052,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.885,1.131,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.137,-0.23,0]},"t":27,"s":[117.885,89.313,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.672,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.305,0.051,0]},"t":28,"s":[103.035,99.348,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.965,1.107,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.112,0.406,0]},"t":29,"s":[97.463,73.594,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.366,0.923,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.06,0.047,0]},"t":30,"s":[81.079,66.939,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.944,2.315,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.068,-1.035,0]},"t":31,"s":[90.595,82.121,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.794,1.043,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.173,0.078,0]},"t":32,"s":[39.327,80.989,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.967,0.857,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.14,0.028,0]},"t":33,"s":[55.998,99.978,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.774,1.028,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.055,0.199,0]},"t":34,"s":[80.566,71.181,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.053,0.916,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.132,0.021,0]},"t":35,"s":[65.735,50.454,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.93,2.464,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.032,17.741,0]},"t":36,"s":[40.364,78.153,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.919,-0.052,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.444,0.079,0]},"t":37,"s":[81.902,78.284,100]},{"i":{"x":[0.833,0.833,0.833],"y":[8.691,0.931,1]},"o":{"x":[0.167,0.167,0.167],"y":[-2.408,0.091,0]},"t":38,"s":[75.338,75.857,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.423,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.082,-0.405,0]},"t":39,"s":[75.557,47.651,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.151,1.036,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.069,0.097,0]},"t":40,"s":[55.074,52.465,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.832,0.956,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.054,0.025,0]},"t":41,"s":[66.306,80.999,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.912,0.908,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.165,-0.095,0]},"t":42,"s":[34.754,40.269,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.421,1.175,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.584,0.921,0]},"t":43,"s":[2.594,59.324,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.174,-0.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.07,0.056,0]},"t":44,"s":[0.808,61.219,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.039,0.948,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.056,0.09,0]},"t":45,"s":[11.618,55.345,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.955,0.744,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.027,-0.14,0]},"t":46,"s":[-21.777,-19.555,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.083,0.932,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.096,0.123,0]},"t":47,"s":[27.422,8.427,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.349,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.042,-0.359,0]},"t":48,"s":[4.597,66.513,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.087,0.933,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.425,0.096,0]},"t":49,"s":[50.12,55.561,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.784,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.043,-0.354,0]},"t":50,"s":[61.217,-19.054,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.717,1.007,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.186,0.136,0]},"t":51,"s":[38.47,-4.836,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.956,1.072,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.006,0]},"t":52,"s":[45.499,17.824,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.092,0.039,0]},"t":53,"s":[-22.007,-6.623,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.362,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.679,1.237,0]},"t":54,"s":[10.024,38.847,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.873,-34.653,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.068,-2.841,0]},"t":55,"s":[6.522,42.131,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.708,0.925,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.243,0.084,0]},"t":56,"s":[25.242,42.037,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.976,-0.201,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.117,-0.791,0]},"t":57,"s":[35.027,2.106,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.034,0.09,0]},"t":58,"s":[59.478,5.911,100]},{"t":59,"s":[42.168,56.973,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":60,"st":6,"bm":0},{"ddd":0,"ind":51,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":3,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[100]},{"t":46,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.625},"o":{"x":0.167,"y":0.167},"t":3,"s":[273.808,259.665,0],"to":[0.527,-0.068,0],"ti":[-2.371,0.302,0]},{"i":{"x":0.833,"y":0.767},"o":{"x":0.167,"y":0.107},"t":4,"s":[276.968,259.259,0],"to":[2.371,-0.302,0],"ti":[-5.103,0.961,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.13},"t":5,"s":[288.032,257.854,0],"to":[5.103,-0.961,0],"ti":[-6.631,2.225,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.159},"t":6,"s":[307.589,253.495,0],"to":[6.631,-2.225,0],"ti":[-5.809,3.598,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.179},"t":7,"s":[327.818,244.501,0],"to":[5.809,-3.598,0],"ti":[-3.886,4.355,0]},{"i":{"x":0.833,"y":0.847},"o":{"x":0.167,"y":0.183},"t":8,"s":[342.441,231.905,0],"to":[3.886,-4.355,0],"ti":[-2.267,4.355,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.183},"t":9,"s":[351.136,218.373,0],"to":[2.267,-4.355,0],"ti":[-1.31,3.958,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.181},"t":10,"s":[356.042,205.774,0],"to":[1.31,-3.958,0],"ti":[-0.831,3.49,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.18},"t":11,"s":[358.996,194.624,0],"to":[0.831,-3.49,0],"ti":[-0.612,3.067,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.178},"t":12,"s":[361.029,184.836,0],"to":[0.612,-3.067,0],"ti":[-0.528,2.704,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":13,"s":[362.67,176.222,0],"to":[0.528,-2.704,0],"ti":[-0.514,2.391,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.177},"t":14,"s":[364.195,168.613,0],"to":[0.514,-2.391,0],"ti":[-0.538,2.117,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":15,"s":[365.753,161.877,0],"to":[0.538,-2.117,0],"ti":[-0.583,1.874,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":16,"s":[367.425,155.911,0],"to":[0.583,-1.874,0],"ti":[-0.636,1.65,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":17,"s":[369.252,150.634,0],"to":[0.636,-1.65,0],"ti":[-0.685,1.438,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.176},"t":18,"s":[371.238,146.01,0],"to":[0.685,-1.438,0],"ti":[-0.735,1.242,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.175},"t":19,"s":[373.362,142.007,0],"to":[0.735,-1.242,0],"ti":[-0.783,1.066,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":20,"s":[375.646,138.557,0],"to":[0.783,-1.066,0],"ti":[-0.813,0.905,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":21,"s":[378.057,135.612,0],"to":[0.813,-0.905,0],"ti":[-0.823,0.759,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":22,"s":[380.527,133.13,0],"to":[0.823,-0.759,0],"ti":[-0.814,0.633,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":23,"s":[382.995,131.056,0],"to":[0.814,-0.633,0],"ti":[-0.791,0.525,0]},{"i":{"x":0.833,"y":0.84},"o":{"x":0.167,"y":0.174},"t":24,"s":[385.412,129.334,0],"to":[0.791,-0.525,0],"ti":[-0.756,0.434,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.174},"t":25,"s":[387.738,127.909,0],"to":[0.756,-0.434,0],"ti":[-0.712,0.358,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":26,"s":[389.945,126.733,0],"to":[0.712,-0.358,0],"ti":[-0.664,0.295,0]},{"i":{"x":0.833,"y":0.841},"o":{"x":0.167,"y":0.175},"t":27,"s":[392.013,125.763,0],"to":[0.664,-0.295,0],"ti":[-0.613,0.243,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.175},"t":28,"s":[393.931,124.963,0],"to":[0.613,-0.243,0],"ti":[-0.561,0.201,0]},{"i":{"x":0.833,"y":0.842},"o":{"x":0.167,"y":0.176},"t":29,"s":[395.694,124.303,0],"to":[0.561,-0.201,0],"ti":[-0.508,0.165,0]},{"i":{"x":0.833,"y":0.843},"o":{"x":0.167,"y":0.177},"t":30,"s":[397.298,123.76,0],"to":[0.508,-0.165,0],"ti":[-0.456,0.135,0]},{"i":{"x":0.833,"y":0.844},"o":{"x":0.167,"y":0.178},"t":31,"s":[398.744,123.313,0],"to":[0.456,-0.135,0],"ti":[-0.404,0.11,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.179},"t":32,"s":[400.032,122.948,0],"to":[0.404,-0.11,0],"ti":[-0.352,0.089,0]},{"i":{"x":0.833,"y":0.846},"o":{"x":0.167,"y":0.18},"t":33,"s":[401.165,122.652,0],"to":[0.352,-0.089,0],"ti":[-0.302,0.071,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.182},"t":34,"s":[402.144,122.415,0],"to":[0.302,-0.071,0],"ti":[-0.253,0.055,0]},{"i":{"x":0.833,"y":0.85},"o":{"x":0.167,"y":0.184},"t":35,"s":[402.975,122.228,0],"to":[0.253,-0.055,0],"ti":[-0.207,0.041,0]},{"i":{"x":0.833,"y":0.853},"o":{"x":0.167,"y":0.188},"t":36,"s":[403.664,122.085,0],"to":[0.207,-0.041,0],"ti":[-0.163,0.029,0]},{"i":{"x":0.833,"y":0.859},"o":{"x":0.167,"y":0.193},"t":37,"s":[404.217,121.981,0],"to":[0.163,-0.029,0],"ti":[-0.119,0.018,0]},{"i":{"x":0.833,"y":0.868},"o":{"x":0.167,"y":0.203},"t":38,"s":[404.639,121.911,0],"to":[0.119,-0.018,0],"ti":[-0.078,0.008,0]},{"i":{"x":0.833,"y":0.887},"o":{"x":0.167,"y":0.226},"t":39,"s":[404.934,121.872,0],"to":[0.078,-0.008,0],"ti":[-0.038,-0.001,0]},{"i":{"x":0.833,"y":0.82},"o":{"x":0.167,"y":0.317},"t":40,"s":[405.107,121.862,0],"to":[0.038,0.001,0],"ti":[0,-0.01,0]},{"i":{"x":0.833,"y":0.714},"o":{"x":0.167,"y":0.155},"t":41,"s":[405.163,121.879,0],"to":[0,0.01,0],"ti":[0.036,-0.018,0]},{"i":{"x":0.833,"y":0.805},"o":{"x":0.167,"y":0.118},"t":42,"s":[405.107,121.921,0],"to":[-0.036,0.018,0],"ti":[0.064,-0.025,0]},{"i":{"x":0.833,"y":0.829},"o":{"x":0.167,"y":0.146},"t":43,"s":[404.945,121.988,0],"to":[-0.064,0.025,0],"ti":[0.075,-0.028,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.167,"y":0.163},"t":44,"s":[404.725,122.069,0],"to":[-0.075,0.028,0],"ti":[0.078,-0.03,0]},{"i":{"x":0.833,"y":0.832},"o":{"x":0.167,"y":0.164},"t":45,"s":[404.495,122.157,0],"to":[-0.078,0.03,0],"ti":[0.079,-0.032,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.165},"t":46,"s":[404.258,122.252,0],"to":[-0.079,0.032,0],"ti":[0.08,-0.034,0]},{"i":{"x":0.833,"y":0.835},"o":{"x":0.167,"y":0.166},"t":47,"s":[404.019,122.352,0],"to":[-0.08,0.034,0],"ti":[0.078,-0.036,0]},{"i":{"x":0.833,"y":0.852},"o":{"x":0.167,"y":0.169},"t":48,"s":[403.781,122.458,0],"to":[-0.078,0.036,0],"ti":[0.065,-0.038,0]},{"i":{"x":0.833,"y":0.858},"o":{"x":0.167,"y":0.191},"t":49,"s":[403.552,122.57,0],"to":[-0.065,0.038,0],"ti":[0.039,-0.038,0]},{"i":{"x":0.833,"y":0.848},"o":{"x":0.167,"y":0.201},"t":50,"s":[403.392,122.685,0],"to":[-0.039,0.038,0],"ti":[0.013,-0.038,0]},{"i":{"x":0.833,"y":0.823},"o":{"x":0.167,"y":0.184},"t":51,"s":[403.315,122.8,0],"to":[-0.013,0.038,0],"ti":[-0.011,-0.037,0]},{"i":{"x":0.833,"y":0.81},"o":{"x":0.167,"y":0.157},"t":52,"s":[403.314,122.914,0],"to":[0.011,0.037,0],"ti":[-0.033,-0.036,0]},{"i":{"x":0.833,"y":0.812},"o":{"x":0.167,"y":0.148},"t":53,"s":[403.381,123.025,0],"to":[0.033,0.036,0],"ti":[-0.052,-0.035,0]},{"i":{"x":0.833,"y":0.817},"o":{"x":0.167,"y":0.15},"t":54,"s":[403.509,123.131,0],"to":[0.052,0.035,0],"ti":[-0.069,-0.033,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.153},"t":55,"s":[403.692,123.233,0],"to":[0.069,0.033,0],"ti":[-0.084,-0.031,0]},{"i":{"x":0.833,"y":0.824},"o":{"x":0.167,"y":0.156},"t":56,"s":[403.923,123.328,0],"to":[0.084,0.031,0],"ti":[-0.096,-0.028,0]},{"i":{"x":0.833,"y":0.827},"o":{"x":0.167,"y":0.159},"t":57,"s":[404.195,123.417,0],"to":[0.096,0.028,0],"ti":[-0.107,-0.025,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.16},"t":58,"s":[404.501,123.497,0],"to":[0.107,0.025,0],"ti":[-0.056,-0.012,0]},{"t":59,"s":[404.836,123.569,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1.013,0.991,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":3,"s":[94.174,88.68,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.854,0.871,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.011,-0.01,0]},"t":4,"s":[62.657,103.74,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,0.874,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.195,0.236,0]},"t":5,"s":[98.913,90.256,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,1.852,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0.247,0]},"t":6,"s":[126.059,82.91,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.12,0.944,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,0.076,0]},"t":7,"s":[99.016,79.175,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.877,0.719,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.049,-0.167,0]},"t":8,"s":[113.623,121.094,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.808,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.258,0.118,0]},"t":9,"s":[77.907,107.132,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.024,1.089,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.147,0.166,0]},"t":10,"s":[60.895,73.957,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.02,0.864,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.019,0.043,0]},"t":11,"s":[38.746,40.656,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.997,1.04,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,0.216,0]},"t":12,"s":[67.397,109.363,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.787,0.879,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.003,0.027,0]},"t":13,"s":[31.725,152.383,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.983,0.979,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.137,0.27,0]},"t":14,"s":[66.258,88.662,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.996,0.751,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.021,-0.027,0]},"t":15,"s":[119.803,60.228,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.949,1.058,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.004,0.125,0]},"t":16,"s":[76.922,81.625,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.975,0.91,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.135,0.034,0]},"t":17,"s":[117.696,124.097,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.215,1.712,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.036,1.154,0]},"t":18,"s":[102.098,51.832,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.928,0.975,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.06,0.075,0]},"t":19,"s":[113.025,46.206,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.706,0.89,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.543,-0.036,0]},"t":20,"s":[73.843,99.907,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.753,0.976,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,0.341,0]},"t":21,"s":[79.054,62.467,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.064,0.498,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.126,-0.035,0]},"t":22,"s":[92.238,50.379,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.883,0.885,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,0.1,0]},"t":23,"s":[118.149,58.916,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.141,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.287,0.3,0]},"t":24,"s":[72.379,101.804,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.893,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.052,-0.015,0]},"t":25,"s":[53.668,118.311,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.925,1.044,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.378,0.16,0]},"t":26,"s":[103.965,104.335,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.059,1.06,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.756,0.029,0]},"t":27,"s":[118.191,89.162,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.036,0.944,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.091,0.035,0]},"t":28,"s":[116.779,112.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.158,1.215,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,-0.166,0]},"t":29,"s":[102.243,72.439,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,0.987,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.055,0.06,0]},"t":30,"s":[123.077,85.771,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.064,0.868,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.435,-0.015,0]},"t":31,"s":[62.652,37.969,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.949,1.055,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.036,0.226,0]},"t":32,"s":[48.316,78.523,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.545,0.919,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.131,0.033,0]},"t":33,"s":[73.718,102.173,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.979,-0.741,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.102,-2.641,0]},"t":34,"s":[63.843,62.973,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.921,1.048,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.028,0.088,0]},"t":35,"s":[19.791,64.173,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.758,0.937,1]},"o":{"x":[0.167,0.167,0.167],"y":[-1.621,0.03,0]},"t":36,"s":[52.853,88.034,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.306,0.9,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,-0.264,0]},"t":37,"s":[51.236,50.431,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.889,-0.258,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.065,0.495,0]},"t":38,"s":[48.161,59.44,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.538,1.041,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.334,0.089,0]},"t":39,"s":[62.531,61.263,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.759,0.854,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.072,0.027,0]},"t":40,"s":[67.316,86.954,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.954,1.042,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.127,0.194,0]},"t":41,"s":[31.655,48.638,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.875,0.994,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.1,0.028,0]},"t":42,"s":[-35.843,19.827,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.076,0.824,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.249,-0.007,0]},"t":43,"s":[-5.221,63.199,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.027,0.939,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.04,0.158,0]},"t":44,"s":[10.17,23.011,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,0.602,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.02,-0.226,0]},"t":45,"s":[-19.321,-21.801,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.313,0.928,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.321,0.105,0]},"t":46,"s":[19.702,-9.718,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.894,0.502,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.066,-0.533,0]},"t":47,"s":[11.661,35.883,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.021,0.956,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.392,0.1,0]},"t":48,"s":[49.934,29.715,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.685,0.902,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.016,-0.095,0]},"t":49,"s":[60.278,-1.013,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.849,1.927,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.113,0.549,0]},"t":50,"s":[47.382,13.308,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.934,1.073,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.187,0.076,0]},"t":51,"s":[11.559,15.87,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.35,0.905,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.311,0.039,0]},"t":52,"s":[-17.364,-15.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.953,1.167,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.662,0]},"t":53,"s":[-11.255,42.917,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.05,0.864,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.107,0.056,0]},"t":54,"s":[30.321,51.283,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.897,1.071,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.031,0.214,0]},"t":55,"s":[12.149,26.161,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.244,0.929,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.44,0.038,0]},"t":56,"s":[41.324,10.186,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.878,0.901,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.062,-0.468,0]},"t":57,"s":[48.144,39.687,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.262,0.526,0]},"t":58,"s":[21.344,35.23,100]},{"t":59,"s":[8.869,34.392,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[10,10],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.10196078431372549,0.3803921568627451,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":3,"op":60,"st":3,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index e12f6f7c..7c7058ff 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -32,6 +32,7 @@ private val RECT = "files/rect.json" private val ROUND_RECT = "files/roundrect.json" private val ROBOT = "files/robot.json" private val ROBOT_404 = "files/robot_404.json" +private val CONFETTI = "files/confetti.json" private val PRECOMP_WITH_REMAPPING = "files/precomp_with_remapping.json" private val MASK_ADD = "files/mask_add.json" private val DASH = "files/dash.json" @@ -43,7 +44,7 @@ private val REPEATER = "files/repeater.json" fun App() { val json by produceState(null){ - value = Res.readBytes(ROBOT).decodeToString() + value = Res.readBytes(CONFETTI).decodeToString() } if (json != null) { @@ -55,8 +56,7 @@ fun App() { modifier = Modifier.fillMaxSize().background(Color.LightGray), painter = rememberLottiePainter( composition = composition, - iterations = LottieConstants.IterateForever, - onLoadError = { throw it } + iterations = LottieConstants.IterateForever ), contentDescription = null ) From 64637a59cb6829b8cf4b2f23b4ccd7f93afe933f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 3 Jun 2024 01:25:16 +0300 Subject: [PATCH 019/100] keyframe binary search --- .../animation/BaseKeyframeAnimation.kt | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index 9ae82730..448c8a35 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -9,7 +9,14 @@ internal class BaseKeyframeAnimation( private val map : Keyframe.(start : K, end : K, progress: Float, frame: Float) -> T ) : KeyframeAnimation { - private val sortedKeyframes = keyframes//.sortedBy { it.time } + private val sortedKeyframes = keyframes + .sortedBy { it.time } + .takeIf { it != keyframes } + ?: keyframes // ensure keyframes are sorted. don't store extra refs list if so + + private val timeIntervals = (0..( frame >= lastFrame -> targetValue frame <= firstFrame -> initialValue else -> { - var kfIdx = sortedKeyframes.lastIndex - var progress = 1f - - for (i in 0.. 1 + frame > it.endInclusive -> -1 + else -> 0 } } -// println(kfIdx) + require(kfIdx >= 0, InvalidKeyframeError) + + val progress = timeIntervals[kfIdx].let { + (frame - it.start) / (it.endInclusive - it.start) + } sortedKeyframes[kfIdx].run { map( From f5492c79b8244969995aba555cc704b0bbfd25ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 3 Jun 2024 21:25:41 +0300 Subject: [PATCH 020/100] path tangent animation, wip text layer --- .../internal/platform/PlatformText.android.kt | 28 + .../compottie/LottieComposition.kt | 21 +- .../compottie/LottieCompositionSpec.kt | 37 +- .../alexzhirkevich/compottie/LottiePainter.kt | 55 +- .../internal/animation/AnimatedColor.kt | 14 +- .../animation/AnimatedTextDocument.kt | 37 + .../internal/animation/AnimatedVector2.kt | 96 ++- .../animation/BaseKeyframeAnimation.kt | 6 +- .../compottie/internal/animation/Keyframe.kt | 18 +- .../animation/TextDocumentKeyframe.kt | 23 + .../internal/animation/VectorKeyframe.kt | 12 +- .../internal/content/ContentGroup.kt | 9 +- .../internal/content/DrawingContent.kt | 9 +- .../internal/helpers/text/TextAlignment.kt | 10 + .../internal/helpers/text/TextBased.kt | 15 + .../internal/helpers/text/TextCaps.kt | 14 + .../internal/helpers/text/TextData.kt | 23 + .../internal/helpers/text/TextDocument.kt | 50 ++ .../internal/helpers/text/TextFollowPath.kt | 28 + .../internal/helpers/text/TextGrouping.kt | 15 + .../internal/helpers/text/TextJustify.kt | 18 + .../internal/helpers/text/TextRange.kt | 17 + .../helpers/text/TextRangeSelector.kt | 46 ++ .../internal/helpers/text/TextRangeUnits.kt | 13 + .../internal/helpers/text/TextShape.kt | 17 + .../internal/helpers/text/TextStyle.kt | 52 ++ .../internal/layers/BaseCompositionLayer.kt | 44 +- .../compottie/internal/layers/BaseLayer.kt | 17 +- .../internal/layers/CompositionLayer.kt | 6 +- .../compottie/internal/layers/ImageLayer.kt | 19 +- .../compottie/internal/layers/Layer.kt | 21 +- .../compottie/internal/layers/NullLayer.kt | 8 +- .../internal/layers/PrecompositionLayer.kt | 3 +- .../compottie/internal/layers/ShapeLayer.kt | 7 +- .../compottie/internal/layers/TextLayer.kt | 502 +++++++++++++ .../internal/platform/PlatformText.kt | 9 + .../internal/shapes/BaseStrokeShape.kt | 3 +- .../compottie/internal/shapes/FillShape.kt | 6 +- .../internal/shapes/GradientFillShape.kt | 5 +- .../internal/shapes/GradientStrokeShape.kt | 2 +- .../internal/shapes/RepeaterShape.kt | 7 +- .../internal/platform/PlatformText.skiko.kt | 41 ++ .../composeResources/files/test.json | 1 + .../files/text_with_path.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 12 +- gradlew | 0 kotlin-js-store/yarn.lock | 679 ++++++++++++------ 47 files changed, 1645 insertions(+), 431 deletions(-) create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.android.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextBased.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextCaps.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextGrouping.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeUnits.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextShape.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.skiko.kt create mode 100644 example/shared/src/commonMain/composeResources/files/text_with_path.json mode change 100644 => 100755 gradlew diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.android.kt new file mode 100644 index 00000000..6c193c14 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.android.kt @@ -0,0 +1,28 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +internal actual fun CharSequence.codePointAt(index : Int) = + Character.codePointAt(this, index) + + +internal actual fun charCount(codePoint : Int): Int = Character.charCount(codePoint) + + +val modifierSet = setOf( + Character.FORMAT, + Character.MODIFIER_SYMBOL, + Character.NON_SPACING_MARK, + Character.OTHER_SYMBOL, + Character.DIRECTIONALITY_NONSPACING_MARK, + Character.SURROGATE, +) + +internal actual fun isModifier(codePoint : Int): Boolean { + return Character.getType(codePoint).toByte() in modifierSet +} + +internal actual fun StringBuilder.addCodePoint(codePoint : Int) { + this.appendCodePoint(codePoint) +} + + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 0dc78db6..db6b296f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -4,6 +4,8 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalFontFamilyResolver +import androidx.compose.ui.text.font.Font import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.durationMillis @@ -15,17 +17,21 @@ import kotlinx.coroutines.withContext @Stable class LottieComposition internal constructor( internal val lottieData: LottieData, + val fonts : Map = emptyMap(), ) { - val startFrame : Float get() = lottieData.inPoint + val startFrame: Float get() = lottieData.inPoint - val endFrame : Float get() = lottieData.outPoint + val endFrame: Float get() = lottieData.outPoint val duration: Float get() = lottieData.durationMillis val frameRate: Float get() = lottieData.frameRate companion object { - fun parse(json: String) = LottieComposition(LottieJson.decodeFromString(json)) + fun parse(json: String) = + LottieComposition( + lottieData = LottieJson.decodeFromString(json), + ) } } @@ -39,10 +45,12 @@ fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionR LottieCompositionResultImpl() } - LaunchedEffect(spec) { + val fontFamilyResolver = LocalFontFamilyResolver.current + + LaunchedEffect(spec, fontFamilyResolver) { withContext(Dispatchers.Default) { try { - result.complete(spec.load()) + result.complete(spec.load(fontFamilyResolver)) } catch (c: CancellationException) { throw c } catch (t: Throwable) { @@ -52,5 +60,4 @@ fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionR } return result -} - +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index ef413f74..8e962d4e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -2,45 +2,32 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable +import androidx.compose.ui.text.font.FontFamily +import kotlin.jvm.JvmInline @Stable sealed interface LottieCompositionSpec { - suspend fun load() : LottieComposition + suspend fun load(fontFamilyResolver: FontFamily.Resolver) : LottieComposition - companion object + companion object { + @Stable + fun JsonString( + jsonString: String + ): LottieCompositionSpec = JsonStringImpl(jsonString) + } } -@Stable -fun LottieCompositionSpec.Companion.JsonString( - jsonString: String -): LottieCompositionSpec = JsonStringImpl(jsonString) - - @Immutable -private class JsonStringImpl( +@JvmInline +private value class JsonStringImpl( private val jsonString: String ) : LottieCompositionSpec { - override suspend fun load(): LottieComposition { + override suspend fun load(fontFamilyResolver: FontFamily.Resolver): LottieComposition { return LottieComposition.parse(jsonString) } - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false - - other as JsonStringImpl - - if (jsonString != other.jsonString) return false - - return true - } - - override fun hashCode(): Int { - return jsonString.hashCode() - } - override fun toString(): String { return "JsonString(jsonString='$jsonString')" } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 0fa433a7..9ec962c2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -20,6 +20,8 @@ import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalFontFamilyResolver +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed @@ -31,6 +33,7 @@ import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer +import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.utils.preScale @@ -89,6 +92,7 @@ fun rememberLottiePainter( composition : LottieComposition?, progress : () -> Float, maintainOriginalImageBounds: Boolean = false, + clipTextToBoundingBoxes: Boolean = false, assetsFetcher: LottieAssetsFetcher = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, ) : Painter { @@ -97,11 +101,15 @@ fun rememberLottiePainter( val updatedComposition by rememberUpdatedState(composition) + val fontFamilyResolver = LocalFontFamilyResolver.current + val painter by produceState( EmptyPainter, composition, assetsFetcher, - maintainOriginalImageBounds + maintainOriginalImageBounds, + clipTextToBoundingBoxes, + fontFamilyResolver ) { snapshotFlow { updatedComposition } @@ -132,7 +140,9 @@ fun rememberLottiePainter( LottiePainter( composition = it, - maintainOriginalImageBounds = maintainOriginalImageBounds + maintainOriginalImageBounds = maintainOriginalImageBounds, + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + fontFamilyResolver = fontFamilyResolver ) } catch (t: Throwable) { updatedOnLoadError(t) @@ -162,7 +172,9 @@ private object EmptyPainter : Painter() { private class LottiePainter( private val composition: LottieComposition, + private val fontFamilyResolver : FontFamily.Resolver, private val maintainOriginalImageBounds : Boolean, + private val clipTextToBoundingBoxes : Boolean, ) : Painter() { override val intrinsicSize: Size = Size( @@ -182,10 +194,10 @@ private class LottiePainter( p.coerceAtLeast(0f) } - val compositionLayer : BaseCompositionLayer = if ( - composition.lottieData.layers.size == 1 && - composition.lottieData.layers[0] is PrecompositionLayer - ){ + val compositionLayer: BaseCompositionLayer = if ( + composition.lottieData.layers.size == 1 && + composition.lottieData.layers[0] is PrecompositionLayer + ) { composition.lottieData.layers[0] as BaseCompositionLayer } else { CompositionLayer(composition) @@ -193,11 +205,13 @@ private class LottiePainter( init { - compositionLayer.let { - it.assets = composition.lottieData.assets.associateBy(LottieAsset::id) - it.composition = composition - it.maintainOriginalImageBounds = maintainOriginalImageBounds - } + compositionLayer.painterProperties = PainterProperties( + assets = composition.lottieData.assets.associateBy(LottieAsset::id), + composition = composition, + maintainOriginalImageBounds = maintainOriginalImageBounds, + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + fontFamilyResolver = fontFamilyResolver + ) } override fun applyAlpha(alpha: Float): Boolean { @@ -215,7 +229,7 @@ private class LottiePainter( val offset = Alignment.Center.align( IntSize( - (intrinsicSize.width ).roundToInt(), + (intrinsicSize.width).roundToInt(), (intrinsicSize.height).roundToInt() ), IntSize( @@ -227,16 +241,13 @@ private class LottiePainter( matrix.reset() - measureTime { - scale(scale.scaleX, scale.scaleY) { - translate(offset.x.toFloat(), offset.y.toFloat()) { - compositionLayer.density = density - try { - compositionLayer.draw(this, matrix, alpha, currentFrame) - } catch (t: Throwable) { - println("Lottie crashed in draw :(") - t.printStackTrace() - } + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + try { + compositionLayer.draw(this, matrix, alpha, currentFrame) + } catch (t: Throwable) { + println("Lottie crashed in draw :(") + t.printStackTrace() } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index 4c45699e..e9cd85e7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -28,7 +28,7 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { ) : AnimatedColor { @Transient - private val color: Color = value.asColor() + private val color: Color = value.toColor() override fun interpolated(frame: Float) = color } @@ -44,23 +44,17 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { override val expression: String? = null, @SerialName("ix") - override val index: String? = null, - - @SerialName("ti") - val inTangent: FloatArray? = null, - - @SerialName("to") - val outTangent: FloatArray? = null, + override val index: String? = null ) : AnimatedColor, KeyframeAnimation by BaseKeyframeAnimation( keyframes = value, emptyValue = Color.Transparent, map = { s, e, p, _ -> - lerp(s.asColor(), e.asColor(), easingX.transform(p)) + lerp(s.toColor(), e.toColor(), easingX.transform(p)) } ) } -private fun FloatArray.asColor() = Color( +internal fun FloatArray.toColor() = Color( red = get(0), green = get(1), blue = get(2), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt new file mode 100644 index 00000000..232e5057 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt @@ -0,0 +1,37 @@ +package io.github.alexzhirkevich.compottie.internal.animation + +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +internal class AnimatedTextDocument( + + @SerialName("k") + val keyframes : List, + + @SerialName("x") + val expression : String? = null, + + @SerialName("sid") + val slotID : String? = null +) : KeyframeAnimation { + + private val document = TextDocument() + + @Transient + private val delegate = BaseKeyframeAnimation( + keyframes = keyframes, + emptyValue = document, + map = { s, e, p, _ -> + + //TODO: lerp properties? + if (p != 1.0f) s else e + } + ) + + override fun interpolated(frame: Float): TextDocument { + return delegate.interpolated(frame) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 551a50c8..36ca3b0d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -1,14 +1,17 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.util.lerp import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonClassDiscriminator +import kotlin.math.hypot -internal typealias Vec2 = Offset +typealias Vec2 = Offset @OptIn(ExperimentalSerializationApi::class) @Serializable() @@ -37,7 +40,6 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @Serializable @SerialName("1") class Animated( - @SerialName("k") val value: List, @@ -46,34 +48,72 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null, + ) : AnimatedVector2 { - @SerialName("ti") - val inTangent: FloatArray? = null, - - @SerialName("to") - val outTangent: FloatArray? = null, - ) : AnimatedVector2, KeyframeAnimation by BaseKeyframeAnimation( - keyframes = value, - emptyValue = Offset.Zero, - map = { s, e, p, _ -> - Offset( - lerp(s[0], e[0], easingX.transform(p)), - lerp(s[1], e[1], easingY.transform(p)) - ) + private val path by lazy { + Path() } - ) -} -//internal class AnimatedVectorSerializer : JsonContentPolymorphicSerializer( -// AnimatedVector2::class -//) { -// override fun selectDeserializer(element: JsonElement): DeserializationStrategy { -// return when(element.jsonObject["a"]?.jsonPrimitive?.int){ -// 1 -> AnimatedVector2.Keyframed.serializer() -// else -> AnimatedVector2.Default.serializer() -// } -// } -//} -// + private val pathMeasure by lazy { + PathMeasure() + } + @Transient + private val delegate: KeyframeAnimation = BaseKeyframeAnimation( + keyframes = value, + emptyValue = Offset.Zero, + map = { s, e, p, _ -> + + if (inTangent != null && outTangent != null && !s.contentEquals(e)) { + path.reset() + path.createPath(s, e, outTangent, inTangent) + pathMeasure.setPath(path, false) + + val length = pathMeasure.length + + val distance: Float = easingX.transform(p) * length + + val pos = pathMeasure.getPosition(distance) + val tangent = pathMeasure.getTangent(distance) + + when { + distance < 0 -> pos + tangent * distance + distance > length -> pos + tangent * (distance - length) + else -> pos + } + } else { + Offset( + lerp(s[0], e[0], easingX.transform(p)), + lerp(s[1], e[1], easingY.transform(p)) + ) + } + } + ) + + override fun interpolated(frame: Float): Offset { + return delegate.interpolated(frame) + } + } +} + +fun Path.createPath( + startPoint : FloatArray, + endPoint: FloatArray, + cp1: FloatArray, + cp2: FloatArray +) { + moveTo(startPoint[0], startPoint[1]) + + + if ((cp1.hupot() != 0f || cp2.hupot() != 0f)) { + cubicTo( + startPoint[0] + cp1[0], startPoint[1] + cp1[1], + endPoint[0] + cp2[0], endPoint[1] + cp2[1], + endPoint[0], endPoint[1] + ) + } else { + lineTo(endPoint[0], endPoint[0]) + } +} +private fun FloatArray.hupot() = hypot(this[0], this[1]) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index 448c8a35..e5537068 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -3,10 +3,10 @@ package io.github.alexzhirkevich.compottie.internal.animation import kotlin.math.roundToInt -internal class BaseKeyframeAnimation( - keyframes: List>, +internal class BaseKeyframeAnimation>( + keyframes: List, private val emptyValue : T, - private val map : Keyframe.(start : K, end : K, progress: Float, frame: Float) -> T + private val map : KF.(start : K, end : K, progress: Float, frame: Float) -> T ) : KeyframeAnimation { private val sortedKeyframes = keyframes diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt index 5cc64692..ea1a94ff 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt @@ -27,10 +27,10 @@ internal abstract class Keyframe { !o?.x.isNullOrEmpty() && !o?.y.isNullOrEmpty() ) { CubicBezierEasing( - o!!.x[0].coerceIn(0f,1f), - o.y[0].coerceIn(0f,1f), - i!!.x[0].coerceIn(0f,1f), - i.y[0].coerceIn(0f,1f) + o!!.x[0].normalize(), + o.y[0] .normalize(), + i!!.x[0].normalize(), + i.y[0] .normalize() ) } else LinearEasing } @@ -45,10 +45,10 @@ internal abstract class Keyframe { if (i?.x?.size == 2 && i.y.size == 2 && o?.x?.size == 2 && o.y.size == 2) { CubicBezierEasing( - o.x[1].coerceIn(0f,1f), - o.y[1].coerceIn(0f,1f), - i.x[1].coerceIn(0f,1f), - i.y[1].coerceIn(0f,1f) + o.x[1].normalize(), + o.y[1].normalize(), + i.x[1].normalize(), + i.y[1].normalize() ) } else { easingX @@ -57,3 +57,5 @@ internal abstract class Keyframe { } } +private fun Float.normalize() = coerceIn(0f,1f) + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt new file mode 100644 index 00000000..0128672c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt @@ -0,0 +1,23 @@ +package io.github.alexzhirkevich.compottie.internal.animation + +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class TextDocumentKeyframe( + @SerialName("s") + override val start: TextDocument? = null, + + @SerialName("e") + override val end: TextDocument? = null, + + @SerialName("t") + override val time: Float, + + //not used + override val hold: BooleanInt = BooleanInt.No, + override val inValue: BezierInterpolation? = null, + override val outValue: BezierInterpolation? = null +) : Keyframe() \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index 11b815d8..43d1a8b0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -1,11 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.animation +import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable -internal data class VectorKeyframe( +internal class VectorKeyframe( @SerialName("s") override val start : FloatArray? = null, @@ -23,7 +25,13 @@ internal data class VectorKeyframe( override val inValue : BezierInterpolation? = null, @SerialName("o") - override val outValue : BezierInterpolation? = null + override val outValue : BezierInterpolation? = null, + + @SerialName("ti") + val inTangent: FloatArray? = null, + + @SerialName("to") + val outTangent: FloatArray? = null, ) : Keyframe() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 764e38ac..77d7a597 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -14,8 +14,6 @@ import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient internal class ContentGroup( override val name: String?, @@ -71,7 +69,7 @@ internal class ContentGroup( drawScope.drawIntoCanvas { canvas -> if (isRenderingWithOffScreen) { offscreenRect.set(0f, 0f, 0f, 0f) - getBounds(offscreenRect, matrix, true, frame) + getBounds(drawScope, matrix, true, frame, offscreenRect) offscreenPaint.alpha = layerAlpha Utils.saveLayerCompat(canvas, offscreenRect.toRect(), offscreenPaint) } @@ -123,10 +121,11 @@ internal class ContentGroup( } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, frame: Float, + outBounds: MutableRect, ) { matrix.setFrom(parentMatrix) if (transform != null) { @@ -136,7 +135,7 @@ internal class ContentGroup( mContents.fastForEachReversed { if (it is DrawingContent) { - it.getBounds(rect, matrix, applyParents, frame) + it.getBounds(drawScope, matrix, applyParents, frame, rect) outBounds.union(rect) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt index 9fb768fe..8fde4aa8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt @@ -1,12 +1,17 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope internal interface DrawingContent : Content { fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) - fun getBounds(outBounds: MutableRect, parentMatrix: Matrix, applyParents: Boolean, frame: Float) + fun getBounds( + drawScope: DrawScope, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Float, + outBounds: MutableRect + ) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt new file mode 100644 index 00000000..16143ffc --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt @@ -0,0 +1,10 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import kotlinx.serialization.Serializable + +@Serializable +internal class TextAlignment( + val alignment : AnimatedVector2? = null, + val grouping: TextGrouping? = null +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextBased.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextBased.kt new file mode 100644 index 00000000..39a2ef00 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextBased.kt @@ -0,0 +1,15 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@JvmInline +@Serializable +internal value class TextBased(val type : Byte) { + companion object { + val Characters = TextBased(1) + val CharactersExclSpaces = TextBased(2) + val Words = TextBased(3) + val Lines = TextBased(4) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextCaps.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextCaps.kt new file mode 100644 index 00000000..a0ce6dee --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextCaps.kt @@ -0,0 +1,14 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +internal value class TextCaps(val type : Byte) { + companion object { + val Regular = TextCaps(0) + val AllCaps = TextCaps(1) + val SmallCaps = TextCaps(2) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt new file mode 100644 index 00000000..0f7a68bb --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt @@ -0,0 +1,23 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTextDocument +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class TextData( + @SerialName("a") + val ranges : List, + + @SerialName("d") + val document : AnimatedTextDocument, + + @SerialName("m") + val alignment: TextAlignment, + + @SerialName("p") + val followPath : TextFollowPath, +) + + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt new file mode 100644 index 00000000..eb77e438 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt @@ -0,0 +1,50 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class TextDocument( + + @SerialName("f") + var fontFamily : String? = null, + + @SerialName("fc") + var fillColor : FloatArray = floatArrayOf(0f, 0f, 0f), + + @SerialName("sc") + var strokeColor : FloatArray? = null, + + @SerialName("sw") + var strokeWidth : Float = 0f, + + @SerialName("of") + var strokeOverFill : Boolean = false, + + @SerialName("s") + var fontSize : Float = 10f, + + @SerialName("lh") + var lineHeight : Float = 10f, + + @SerialName("sz") + var wrapSize : FloatArray? = null, + + @SerialName("ps") + var wrapPosition : FloatArray? = null, + + @SerialName("t") + var text : String? = null, + + @SerialName("j") + var textJustify : TextJustify = TextJustify.Left, + + @SerialName("ca") + var textCaps : TextCaps = TextCaps.Regular, + + @SerialName("tr") + var textTracking : Float? = null, + + @SerialName("ls") + var baselineShift : Float? = null, +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt new file mode 100644 index 00000000..e30feed2 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt @@ -0,0 +1,28 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class TextFollowPath( + + @SerialName("m") + val mask: Mask? = null, + + @SerialName("f") + val firstMargin : AnimatedValue? = null, + + @SerialName("l") + val lastMargin : AnimatedValue? = null, + + @SerialName("r") + val reversePath : AnimatedValue? = null, + + @SerialName("a") + val forceAlignment : AnimatedValue? = null, + + @SerialName("p") + val perpendicularToPath : AnimatedValue? = null, +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextGrouping.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextGrouping.kt new file mode 100644 index 00000000..5dff67bb --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextGrouping.kt @@ -0,0 +1,15 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +internal value class TextGrouping(val type : Int) { + companion object { + val Characters = TextGrouping(1) + val Word = TextGrouping(2) + val Line = TextGrouping(3) + val All = TextGrouping(4) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt new file mode 100644 index 00000000..315a527a --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt @@ -0,0 +1,18 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +internal value class TextJustify(val type : Byte) { + companion object { + val Left = TextJustify(0) + val Right = TextJustify(1) + val Center = TextJustify(2) + val LastLineLeft = TextJustify(3) + val LastLineRight = TextJustify(4) + val LastLineCenter = TextJustify(5) + val LastLineFull = TextJustify(6) + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt new file mode 100644 index 00000000..b2058843 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt @@ -0,0 +1,17 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class TextRange( + + @SerialName("nm") + val name : String? = null, + + @SerialName("s") + val selector: TextRangeSelector? = null, + + @SerialName("a") + val style : TextStyle? = null +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt new file mode 100644 index 00000000..bf14a9ff --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt @@ -0,0 +1,46 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class TextRangeSelector( + + @SerialName("t") + val expressible : BooleanInt, + + @SerialName("xe") + val maxEase : AnimatedValue? = null, + + @SerialName("ne") + val minEase : AnimatedValue? = null, + + @SerialName("a") + val maxAmount : AnimatedValue? = null, + + @SerialName("b") + val basedOn : TextBased, + + @SerialName("rn") + val randomize : BooleanInt = BooleanInt.No, + + @SerialName("sh") + val shape : TextShape, + + @SerialName("o") + val offset : AnimatedValue? = null, + + @SerialName("r") + val rangeUnits : TextRangeUnits? = null, + + @SerialName("sm") + val smoothness : AnimatedValue? = null, + + @SerialName("s") + val start : AnimatedValue? = null, + + @SerialName("e") + val end : AnimatedValue? = null, +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeUnits.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeUnits.kt new file mode 100644 index 00000000..12dcb5de --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeUnits.kt @@ -0,0 +1,13 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +internal value class TextRangeUnits(val type : Byte) { + companion object { + val Percent = TextRangeUnits(1) + val Index = TextRangeUnits(2) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextShape.kt new file mode 100644 index 00000000..c95cdb79 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextShape.kt @@ -0,0 +1,17 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@JvmInline +@Serializable +internal value class TextShape(val type : Byte) { + companion object { + val Square = TextShape(1) + val RampUp = TextShape(2) + val RampDown = TextShape(3) + val Triangle = TextShape(4) + val Round = TextShape(5) + val Smooth = TextShape(6) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt new file mode 100644 index 00000000..b59d4e26 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt @@ -0,0 +1,52 @@ +package io.github.alexzhirkevich.compottie.internal.helpers.text + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class TextStyle( + + @SerialName("sw") + val strokeWidth : AnimatedValue? = null, + + @SerialName("sc") + val strokeColor : AnimatedColor? = null, + + @SerialName("sh") + val strokeHue : AnimatedValue? = null, + + @SerialName("ss") + val strokeSaturation : AnimatedValue? = null, + + @SerialName("sb") + val strokeBrightness : AnimatedValue? = null, + + @SerialName("o") + val strokeOpacity : AnimatedValue? = null, + + @SerialName("fc") + val fillColor : AnimatedColor? = null, + + @SerialName("fh") + val fillHue : AnimatedValue? = null, + + @SerialName("fs") + val fillSaturation : AnimatedValue? = null, + + @SerialName("fb") + val fillBrightness : AnimatedValue? = null, + + @SerialName("fo") + val fillOpacity : AnimatedValue? = null, + + @SerialName("t") + val letterSpacing : AnimatedValue? = null, + + @SerialName("ls") + val lineSpacing : AnimatedValue? = null, + + @SerialName("bl") + val blur : AnimatedValue? = null, +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 4c0a0203..f3288ec9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -5,6 +5,8 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.LottieComposition @@ -50,35 +52,12 @@ internal abstract class BaseCompositionLayer: BaseLayer() { l } - override var density: Float - get() = super.density + override var painterProperties: PainterProperties? + get() = super.painterProperties set(value) { - super.density = value - layers.fastForEach { it.density = value } - } - - override var maintainOriginalImageBounds: Boolean - get() = super.maintainOriginalImageBounds - set(value) { - super.maintainOriginalImageBounds = value - layers.fastForEach { - it.maintainOriginalImageBounds = value - } - } - - override var assets: Map - get() = super.assets - set(value) { - super.assets = value - layers.fastForEach { it.assets = value } - } - - final override var composition: LottieComposition - get() = super.composition - set(value) { - super.composition = value + super.painterProperties = value layers.fastForEach { - it.composition = value + it.painterProperties = value } } @@ -127,15 +106,16 @@ internal abstract class BaseCompositionLayer: BaseLayer() { } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float + frame: Float, + outBounds: MutableRect ) { - super.getBounds(outBounds, parentMatrix, applyParents, frame) + super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) layers.fastForEachReversed { rect.set(0f, 0f, 0f, 0f) - it.getBounds(rect, boundsMatrix, true,frame) + it.getBounds(drawScope, boundsMatrix, true, frame, rect) outBounds.union(rect) } } @@ -148,6 +128,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { frame / timeStretch } else frame + val composition = checkNotNull(painterProperties?.composition) + return tr.interpolated(f) * composition.frameRate - composition.startFrame } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 885f192a..7b379551 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -4,7 +4,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.geometry.toRect import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Color @@ -12,10 +11,9 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.DrawStyle -import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.isIdentity +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.LottieComposition @@ -43,12 +41,8 @@ internal abstract class BaseLayer() : Layer, DrawingContent { abstract val masks: List? abstract val transform: Transform - override var density by mutableStateOf(1f) - override var assets: Map = emptyMap() - override var maintainOriginalImageBounds = false - - override lateinit var composition : LottieComposition + override var painterProperties: PainterProperties? = null protected val boundsMatrix = Matrix() protected val path = Path() @@ -116,7 +110,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { return } - getBounds(rect, matrix, false, frame) + getBounds(drawScope, matrix, false, frame, rect) // intersectBoundsWithMatte(rect, parentMatrix) @@ -194,10 +188,11 @@ internal abstract class BaseLayer() : Layer, DrawingContent { } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, frame: Float, + outBounds: MutableRect, ) { rect.set(0f, 0f, 0f, 0f) buildParentLayerListIfNeeded() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 7f598213..c960ae45 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -7,13 +7,9 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.Transform internal class CompositionLayer( - composition: LottieComposition + private val composition: LottieComposition ) : BaseCompositionLayer() { - init { - this.composition = composition - } - override val width: Float get() = composition.lottieData.width override val height: Float get() = composition.lottieData.height override val timeRemapping: AnimatedValue? get() = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 0e572768..24006b9a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope @@ -93,7 +92,7 @@ internal class ImageLayer( private val paint = Paint() private val asset : LottieAsset.ImageAsset? by lazy { - assets[refId] as? LottieAsset.ImageAsset + painterProperties?.assets?.get(refId) as? LottieAsset.ImageAsset } override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { @@ -108,6 +107,8 @@ internal class ImageLayer( canvas.concat(parentMatrix) src.set(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat()) + val maintainOriginalImageBounds = painterProperties?.maintainOriginalImageBounds == true + val dstSize = if (maintainOriginalImageBounds) { IntSize( (mAsset.width * drawScope.density).roundToInt(), @@ -136,15 +137,21 @@ internal class ImageLayer( } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float + frame: Float, + outBounds: MutableRect ) { - super.getBounds(outBounds, parentMatrix, applyParents, frame) + super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) asset?.let { - outBounds.set(0f, 0f, it.width * density, it.height * density) + outBounds.set( + left = 0f, + top = 0f, + right = it.width * drawScope.density, + bottom = it.height * drawScope.density + ) boundsMatrix.map(outBounds) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 1cf7cea4..fa718924 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,5 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.layers +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.LayoutDirection import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -28,16 +31,22 @@ internal sealed interface Layer { val name : String? - var composition : LottieComposition + var painterProperties : PainterProperties? +} - var density : Float +internal val Layer.isContainerLayer get() = name == "__container" - var assets: Map +internal class PainterProperties( + val composition : LottieComposition, - var maintainOriginalImageBounds: Boolean -} + val assets: Map = emptyMap(), -internal val Layer.isContainerLayer get() = name == "__container" + val maintainOriginalImageBounds: Boolean = false, + + val clipTextToBoundingBoxes : Boolean = false, + + val fontFamilyResolver: FontFamily.Resolver? = null +) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index c4b836ba..b0fa4081 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode @@ -77,12 +76,13 @@ internal class NullLayer( } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float + frame: Float, + outBounds: MutableRect ) { - super.getBounds(outBounds, parentMatrix, applyParents, frame) + super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) outBounds.set(0f,0f,0f,0f) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index 11a2b23a..d723661e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -66,6 +66,7 @@ internal class PrecompositionLayer( override val transform: Transform = Transform(), ) : BaseCompositionLayer() { override fun loadLayers(): List { - return (assets[refId] as? LottieAsset.PrecompositionAsset?)?.layers.orEmpty() + return (painterProperties?.assets?.get(refId) as? LottieAsset.PrecompositionAsset?) + ?.layers.orEmpty() } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index cb635d48..fc754bae 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -101,12 +101,13 @@ internal class ShapeLayer( } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, frame: Float, + outBounds: MutableRect, ) { - super.getBounds(outBounds, parentMatrix, applyParents, frame) - contentGroup.getBounds(outBounds, boundsMatrix, applyParents, frame) + super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) + contentGroup.getBounds(drawScope, boundsMatrix, applyParents, frame, outBounds) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt new file mode 100644 index 00000000..b6b6d31d --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -0,0 +1,502 @@ +package io.github.alexzhirkevich.compottie.internal.layers + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.DrawStyle +import androidx.compose.ui.graphics.drawscope.Fill +import androidx.compose.ui.graphics.drawscope.Stroke +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.layout.MeasureResult +import androidx.compose.ui.text.TextLayoutResult +import androidx.compose.ui.text.TextMeasurer +import androidx.compose.ui.text.drawText +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.style.BaselineShift +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.sp +import androidx.compose.ui.util.fastForEachIndexed +import io.github.alexzhirkevich.compottie.internal.animation.toColor +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextData +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextJustify +import io.github.alexzhirkevich.compottie.internal.platform.addCodePoint +import io.github.alexzhirkevich.compottie.internal.platform.charCount +import io.github.alexzhirkevich.compottie.internal.platform.codePointAt +import io.github.alexzhirkevich.compottie.internal.platform.isModifier +import io.github.alexzhirkevich.compottie.internal.util.toOffset +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("5") +internal class TextLayer( + + @SerialName("ks") + override val transform: Transform = Transform(), + + @SerialName("ddd") + override val is3d: BooleanInt = BooleanInt.No, + + @SerialName("ind") + override val index: Int? = null, + + @SerialName("ip") + override val inPoint: Float? = null, + + @SerialName("op") + override val outPoint: Float? = null, + + @SerialName("st") + override val startTime: Int? = null, + + @SerialName("nm") + override val name: String? = null, + + @SerialName("sr") + override val timeStretch: Float = 1f, + + @SerialName("parent") + override val parent: Int? = null, + + @SerialName("hd") + override val hidden: Boolean = false, + + @SerialName("masksProperties") + override val masks: List? = null, + + @SerialName("t") + private val textData: TextData +) : BaseLayer() { + + @Transient + private val fillPaint = DrawProperties(Fill) + + @Transient + private val strokePaint = DrawProperties(Stroke(0f)) + + @Transient + private val textAnimation = textData.ranges.firstOrNull() + + @Transient + private var textMeasurer: TextMeasurer? = null + + @Transient + private var lastLayoutDirection: LayoutDirection? = null + + @Transient + private var lastDensity: Density? = null + + @Transient + private val textSubLines: MutableList = ArrayList() + + @Transient + private var textStyle: androidx.compose.ui.text.TextStyle = + androidx.compose.ui.text.TextStyle.Default + + @Transient + private val codePointCache = mutableMapOf() + + @Transient + private val stringBuilder = StringBuilder(2) + + override fun drawLayer( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { + val document = textData.document.interpolated(frame) + + drawScope.drawIntoCanvas { canvas -> + canvas.save() + canvas.concat(parentMatrix) + + configurePaint(document, parentAlpha, frame) + configureTextStyle(drawScope, document, frame) + + canvas.restore() + } + } + + override fun getBounds( + drawScope: DrawScope, + parentMatrix: Matrix, + applyParents: Boolean, + frame: Float, + outBounds: MutableRect + ) { + super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) + + val composition = checkNotNull(painterProperties?.composition) + + outBounds.set(0f, 0f, composition.lottieData.width, composition.lottieData.height) + } + + private fun configurePaint(document: TextDocument, parentAlpha: Float, frame: Float) { + + fillPaint.color = textAnimation?.style?.fillColor?.interpolated(frame) + ?: document.fillColor.toColor() + + strokePaint.color = textAnimation?.style?.strokeColor?.interpolated(frame) + ?: document.strokeColor?.toColor() ?: Color.Transparent + + fillPaint.alpha = transform.opacity?.interpolated(frame) + ?.div(100f)?.times(parentAlpha) + ?: parentAlpha + + if (strokePaint.color != Color.Transparent) { + strokePaint.alpha = fillPaint.alpha + } + + val strokeWidth = textAnimation?.style?.strokeWidth?.interpolated(frame) + ?: document.strokeWidth + + if (strokePaint.style.width != strokeWidth){ + strokePaint.style = Stroke( + width = strokeWidth + ) + } + } + + private fun configureTextStyle(drawScope: DrawScope, document: TextDocument, frame: Float) { + + val fontSize = document.fontSize.sp + val baselineShift = document.baselineShift + ?.let { BaselineShift(it) } + ?: textStyle.baselineShift + + val lineHeight = document.lineHeight.sp + + val fontFamily = checkNotNull(painterProperties?.composition?.fonts) + .get(document.fontFamily)?.let { FontFamily(it) } + + if ( + textStyle.fontSize != fontSize || + textStyle.baselineShift != baselineShift || + textStyle.lineHeight != lineHeight || + textStyle.fontFamily != fontFamily + ) { + textStyle = textStyle.copy( + baselineShift = baselineShift, + fontSize = fontSize, + lineHeight = lineHeight, + fontFamily = fontFamily + ) + } + } + + private fun getTextMeasurer(density: Density, layoutDirection: LayoutDirection): TextMeasurer { + textMeasurer?.let { + if (lastDensity == density && lastLayoutDirection == layoutDirection) { + return it + } + } + + val fontFamilyResolver = checkNotNull( + painterProperties?.fontFamilyResolver + ) + + val tm = TextMeasurer( + defaultDensity = density, + defaultLayoutDirection = layoutDirection, + defaultFontFamilyResolver = fontFamilyResolver + ) + + lastLayoutDirection = layoutDirection + lastDensity = density + textMeasurer = tm + + return tm + } + + private fun drawTextWithFonts(drawScope: DrawScope, document: TextDocument, font: Font) { + val measurer = getTextMeasurer(drawScope, drawScope.layoutDirection) + + var tracking = document.textTracking?.div(10f) ?: 0f + + val text = document.text ?: return + + val allLines = getTextLines(text) + + //TODO: tracking animation? + tracking = drawScope.run { + tracking.sp.toPx() + } + + drawScope.drawIntoCanvas { canvas -> + + allLines.fastForEachIndexed { alLinesIdx, textLine -> + val boxWidth = document.wrapSize?.firstOrNull() ?: 0f + + val lines = splitGlyphTextIntoLines(measurer, textLine, boxWidth, tracking) + + lines.fastForEachIndexed { idx, line -> + + canvas.save() + if (offsetCanvas(canvas, drawScope, document, alLinesIdx + idx, line.width)) { + drawFontTextLine( + line.text, + measurer, + document, + drawScope, + canvas, + tracking + ) + } + + canvas.restore() + } + } + } + } + + private fun getTextLines(text: String): List { + // Split full text by carriage return character + val formattedText = text.replace("\r\n".toRegex(), "\r") + .replace("\u0003".toRegex(), "\r") + .replace("\n".toRegex(), "\r") + return formattedText.split("\r".toRegex()) + .dropLastWhile { it.isEmpty() } + } + + private fun splitGlyphTextIntoLines( + textMeasurer: TextMeasurer, + textLine: String, + boxWidth: Float, + tracking: Float, + ): List { + var lineCount = 0 + + var currentLineWidth = 0f + var currentLineStartIndex = 0 + + var currentWordStartIndex = 0 + var currentWordWidth = 0f + var nextCharacterStartsWord = false + + // The measured size of a space. + var spaceWidth = 0f + + for (i in textLine.indices) { + val c = textLine[i] +// if (usingGlyphs) { +// val characterHash: Int = FontCharacter.hashFor(c, font.getFamily(), font.getStyle()) +// val character: FontCharacter = +// composition.getCharacters().get(characterHash) ?: continue +// currentCharWidth = +// character.getWidth() as Float * fontScale * Utils.dpScale() + tracking +// } else { +// currentCharWidth = fillPaint.measureText(textLine.substring(i, i + 1)) + tracking +// } + + val measureResult = textMeasurer.measure(textLine[i].toString(), textStyle) + + val currentCharWidth = measureResult.size.width + tracking + + if (c == ' ') { + spaceWidth = currentCharWidth + nextCharacterStartsWord = true + } else if (nextCharacterStartsWord) { + nextCharacterStartsWord = false + currentWordStartIndex = i + currentWordWidth = currentCharWidth + } else { + currentWordWidth += currentCharWidth + } + currentLineWidth += currentCharWidth + + if (boxWidth > 0f && currentLineWidth >= boxWidth) { + if (c == ' ') { + // Spaces at the end of a line don't do anything. Ignore it. + // The next non-space character will hit the conditions below. + continue + } + val subLine: TextSubLine = + ensureEnoughSubLines(++lineCount) + if (currentWordStartIndex == currentLineStartIndex) { + // Only word on line is wider than box, start wrapping mid-word. + val substr = textLine.substring(currentLineStartIndex, i) + val trimmed = substr.trim { it <= ' ' } + val trimmedSpace = (trimmed.length - substr.length) * spaceWidth + subLine.set(trimmed, currentLineWidth - currentCharWidth - trimmedSpace) + currentLineStartIndex = i + currentLineWidth = currentCharWidth + currentWordStartIndex = currentLineStartIndex + currentWordWidth = currentCharWidth + } else { + val substr = + textLine.substring(currentLineStartIndex, currentWordStartIndex - 1) + val trimmed = substr.trim { it <= ' ' } + val trimmedSpace = (substr.length - trimmed.length) * spaceWidth + subLine.set( + trimmed, + currentLineWidth - currentWordWidth - trimmedSpace - spaceWidth + ) + currentLineStartIndex = currentWordStartIndex + currentLineWidth = currentWordWidth + } + } + } + if (currentLineWidth > 0f) { + val line = ensureEnoughSubLines(++lineCount) + line.set(textLine.substring(currentLineStartIndex), currentLineWidth) + } + return textSubLines.subList(0, lineCount) + } + + private fun ensureEnoughSubLines(numLines: Int): TextSubLine { + for (i in textSubLines.size until numLines) { + textSubLines.add(TextSubLine()) + } + return textSubLines[numLines - 1] + } + + private fun offsetCanvas( + canvas: Canvas, + density: Density, + document: TextDocument, + lineIndex: Int, + lineWidth: Float + ): Boolean { + val position = document.wrapPosition?.toOffset() + val size = document.wrapSize?.let { Size(it[0], it[1]) } + val lineStartY = if (position == null) { + 0f + } else { + document.lineHeight * density.density + position.y + } + + val lineOffset: Float = (lineIndex * document.lineHeight * density.density) + lineStartY + + + val clip = painterProperties?.clipTextToBoundingBoxes == true + + if (clip && size != null && position != null && lineOffset >= position.y + size.height + document.fontSize) { + return false + } + + val lineStart = position?.x ?: 0f + val boxWidth = size?.width ?: 0f + + when (document.textJustify) { + TextJustify.Left -> canvas.translate(lineStart, lineOffset) + TextJustify.Right -> canvas.translate(lineStart + boxWidth - lineWidth, lineOffset) + TextJustify.Center -> canvas.translate( + lineStart + boxWidth / 2f - lineWidth / 2f, + lineOffset + ) + } + return true + } + + private fun drawFontTextLine( + text: String, + textMeasurer: TextMeasurer, + documentData: TextDocument, + drawScope: DrawScope, + canvas: Canvas, + tracking: Float + ) { + var i = 0 + while (i < text.length) { + val charString: String = codePointToString(text, i) + i += charString.length + val measureResult = textMeasurer.measure(charString, textStyle) + drawCharacterFromFont(measureResult, documentData, drawScope) + val charWidth = measureResult.size.width + val tx = charWidth + tracking + canvas.translate(tx, 0f) + } + } + + private fun codePointToString(text: String, startIndex: Int): String { + val firstCodePoint: Int = text.codePointAt(startIndex) + val firstCodePointLength: Int = charCount(firstCodePoint) + var key = firstCodePoint + var index = startIndex + firstCodePointLength + while (index < text.length) { + val nextCodePoint: Int = text.codePointAt(index) + if (!isModifier(nextCodePoint)) { + break + } + val nextCodePointLength: Int = charCount(nextCodePoint) + index += nextCodePointLength + key = key * 31 + nextCodePoint + } + + codePointCache[key.toLong()]?.let { return it } + + stringBuilder.setLength(0) + var i = startIndex + while (i < index) { + val codePoint: Int = text.codePointAt(i) + stringBuilder.addCodePoint(codePoint) + i += charCount(codePoint) + } + val str: String = stringBuilder.toString() + codePointCache[key.toLong()] = str + return str + } + + private fun drawCharacterFromFont( + character: TextLayoutResult, + documentData: TextDocument, + drawScope: DrawScope + ) { + if (documentData.strokeOverFill) { + drawCharacter(character, fillPaint, drawScope) + drawCharacter(character, strokePaint, drawScope) + } else { + drawCharacter(character, strokePaint, drawScope) + drawCharacter(character, fillPaint, drawScope) + } + } + + private fun drawCharacter( + measureResult: TextLayoutResult, + drawProperties: DrawProperties<*>, + drawScope: DrawScope + ) { + if (drawProperties.color == Color.Transparent || drawProperties.alpha == 0f) { + return + } + + if ((drawProperties.style as? Stroke)?.width == 0f) { + return + } + + drawScope.drawText( + textLayoutResult = measureResult, + color = drawProperties.color, + alpha = drawProperties.alpha, + ) + } +} + +private class DrawProperties( + var style : S, + var color: Color = Color.Transparent, + var alpha: Float = 1f +) + +private class TextSubLine( + var text : String= "", + var width : Float = 0f +) { + fun set(text : String, width : Float){ + this.text = text + this.width = width + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.kt new file mode 100644 index 00000000..2c7715ee --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.kt @@ -0,0 +1,9 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +internal expect fun CharSequence.codePointAt(index : Int) : Int + +internal expect fun charCount(codePoint : Int): Int + +internal expect fun isModifier(codePoint : Int): Boolean + +internal expect fun StringBuilder.addCodePoint(codePoint : Int) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 3b990bfd..b546f808 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -168,10 +168,11 @@ internal abstract class BaseStrokeShape() : DrawingContent { } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, frame: Float, + outBounds: MutableRect, ) { path.reset() pathGroups.fastForEach { pathGroup -> diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 36bb16ff..15b480dc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -83,10 +82,11 @@ internal class FillShape( } } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float + frame: Float, + outBounds: MutableRect ) { path.reset() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index fb134e6b..28f31fea 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -112,10 +112,11 @@ internal class GradientFillShape( } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float + frame: Float, + outBounds: MutableRect ) { path.reset() paths.fastForEach { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index 12a53bbd..222f5c43 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -78,7 +78,7 @@ internal class GradientStrokeShape( override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { - getBounds(boundsRect, parentMatrix, false, frame) + getBounds(drawScope, parentMatrix, false, frame, boundsRect) paint.shader = GradientShader( type = type, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index e625b1c9..aad49a0d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -72,12 +72,13 @@ internal class RepeaterShape( } override fun getBounds( - outBounds: MutableRect, + drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float + frame: Float, + outBounds: MutableRect ) { - contentGroup?.getBounds(outBounds, parentMatrix, applyParents, frame) + contentGroup?.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) } override fun getPath(frame: Float): Path { diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.skiko.kt new file mode 100644 index 00000000..9a9bf29e --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformText.skiko.kt @@ -0,0 +1,41 @@ +package io.github.alexzhirkevich.compottie.internal.platform + +private const val MIN_SUPPLEMENTARY_CODE_POINT: Int = 0x10000 + +private fun Char.Companion.toCodePoint(high: Char, low: Char): Int = + (((high - MIN_HIGH_SURROGATE) shl 10) or (low - MIN_LOW_SURROGATE)) + 0x10000 + +internal actual fun CharSequence.codePointAt(index : Int) : Int { + val high = this[index] + if (high.isHighSurrogate() && index + 1 < this.length) { + val low = this[index + 1] + if (low.isLowSurrogate()) { + return Char.toCodePoint(high, low) + } + } + return high.code +} + +internal actual fun charCount(codePoint : Int): Int = + if (codePoint >= MIN_SUPPLEMENTARY_CODE_POINT) 2 else 1 + +private val modifierSet = setOf( + CharCategory.FORMAT, + CharCategory.MODIFIER_SYMBOL, + CharCategory.NON_SPACING_MARK, + CharCategory.OTHER_SYMBOL, + CharCategory.SURROGATE, +) + +internal actual fun isModifier(codePoint : Int): Boolean { + return modifierSet.any { it.contains(codePoint.toChar()) } +} + +internal actual fun StringBuilder.addCodePoint(codePoint: Int) { + if (codePoint < MIN_SUPPLEMENTARY_CODE_POINT) { + append(codePoint.toChar()) + } else { + append(Char.MIN_HIGH_SURROGATE + ((codePoint - 0x10000) shr 10)) + append(Char.MIN_LOW_SURROGATE + (codePoint and 0x3ff)) + } +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index e69de29b..c4285178 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -0,0 +1 @@ +{"assets":[{"id":"comp_1","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"triangulo5","parent":5,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[100],"e":[0]},{"t":61}]},"r":{"k":[{"i":{"x":[0.833],"y":[0.887]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p887_0p167_0p167"],"t":23,"s":[0],"e":[199]},{"i":{"x":[0.833],"y":[1.167]},"o":{"x":[0.167],"y":[0.597]},"n":["0p833_1p167_0p167_0p597"],"t":29,"s":[199],"e":[224]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0.048]},"n":["0p833_1_0p167_0p048"],"t":33,"s":[224],"e":[-360]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":60,"s":[-360],"e":[-360]},{"t":68}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[120.738,24.875,0],"e":[121.407,-5.924,0],"to":[0.11111907660961,0.38958746194839,0],"ti":[0.06987758725882,0.37998399138451,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":47,"s":[121.407,-5.924,0],"e":[116.481,-38.435,0],"to":[-0.92860811948776,-5.04963350296021,0],"ti":[-0.50151252746582,0.6655296087265,0]},{"t":63}]},"a":{"k":[120.738,24.875,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[7.5,6.163],[-7.5,6.163],[0,-6.163]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[120.682,23.143]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":113,"t":16,"b":30,"r":129},"ip":48,"op":6363,"st":-2586},{"ddd":0,"ind":1,"ty":4,"nm":"triangulo4","parent":5,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[100],"e":[0]},{"t":61}]},"r":{"k":[{"i":{"x":[0.833],"y":[0.887]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p887_0p167_0p167"],"t":23,"s":[0],"e":[199]},{"i":{"x":[0.833],"y":[1.167]},"o":{"x":[0.167],"y":[0.597]},"n":["0p833_1p167_0p167_0p597"],"t":29,"s":[199],"e":[224]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0.048]},"n":["0p833_1_0p167_0p048"],"t":33,"s":[224],"e":[-360]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":60,"s":[-360],"e":[-360]},{"t":68}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[120.738,24.875,0],"e":[121.407,-5.924,0],"to":[0.11111907660961,0.38958746194839,0],"ti":[0.06987758725882,0.37998399138451,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"n":"0p667_0p667_0p167_0p167","t":47,"s":[121.407,-5.924,0],"e":[121.407,-5.924,0],"to":[-0.92860811948776,-5.04963350296021,0],"ti":[0.06987758725882,0.37998399138451,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":50,"s":[121.407,-5.924,0],"e":[119.861,-29.627,0],"to":[-0.92860811948776,-5.04963350296021,0],"ti":[-0.50151252746582,0.6655296087265,0]},{"t":67}]},"a":{"k":[120.738,24.875,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[7.5,6.163],[-7.5,6.163],[0,-6.163]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[88,214,112,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[120.682,23.143]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":113,"t":16,"b":30,"r":129},"ip":18,"op":48,"st":-2586},{"ddd":0,"ind":2,"ty":4,"nm":"triangulo3","parent":7,"ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":58,"s":[100],"e":[0]},{"t":61}]},"r":{"k":[{"i":{"x":[0.833],"y":[0.887]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p887_0p167_0p167"],"t":22,"s":[0],"e":[-199]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.597]},"n":["0p833_0p833_0p167_0p597"],"t":28,"s":[-199],"e":[-224]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[-0.044]},"n":["0p667_1_0p167_-0p044"],"t":32,"s":[-224],"e":[418]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p833_1_0p333_0"],"t":59,"s":[418],"e":[360]},{"t":67}]},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":45,"s":[119.238,153.375,0],"e":[139.238,173.875,0],"to":[3.33333325386047,3.41666674613953,0],"ti":[-3.33333325386047,-3.41666674613953,0]},{"t":67}]},"a":{"k":[119.238,153.375,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[1.891,5.808],[-6.034,-3.266],[6.034,-5.808]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[119.326,153.992]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":113,"t":148,"b":160,"r":126},"ip":22,"op":6363,"st":-2586},{"ddd":0,"ind":3,"ty":4,"nm":"triangulo2","parent":12,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.887]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p887_0p167_0p167"],"t":16,"s":[0],"e":[199]},{"i":{"x":[0.833],"y":[1.167]},"o":{"x":[0.167],"y":[0.597]},"n":["0p833_1p167_0p167_0p597"],"t":22,"s":[199],"e":[224]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0.048]},"n":["0p833_1_0p167_0p048"],"t":26,"s":[224],"e":[-360]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":53,"s":[-360],"e":[-360]},{"t":61}]},"p":{"k":[26.738,154.875,0]},"a":{"k":[26.738,154.875,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-6.008,3.076],[2.087,-5.846],[6.008,5.846]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[26.354,154.298]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":20,"t":148,"b":161,"r":33},"ip":16,"op":47,"st":-2588},{"ddd":0,"ind":4,"ty":4,"nm":"barraCyan 4","parent":9,"ks":{"o":{"k":100},"r":{"k":-37},"p":{"k":[128.738,163.375,0]},"a":{"k":[120.738,163.375,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":47,"s":[{"i":[[0,0],[0,-24.222],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0.006,25.233],[0,0]],"v":[[-15.848,-95.301],[17.605,-95.301],[16.72,59.892],[-16.726,59.892]]}],"e":[{"i":[[0,0],[-1.165,-20.558],[-0.181,0.25],[2.028,16.779]],"o":[[-1.515,-19.735],[0.081,1.428],[-0.62,17.449],[0,0]],"v":[[-13.617,-20.996],[19.836,-20.996],[19.402,-20.102],[-12.546,-19.599]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":51,"s":[{"i":[[0,0],[-1.165,-20.558],[-0.181,0.25],[2.028,16.779]],"o":[[-1.515,-19.735],[0.081,1.428],[-0.62,17.449],[0,0]],"v":[[-13.617,-20.996],[19.836,-20.996],[19.402,-20.102],[-12.546,-19.599]]}],"e":[{"i":[[0,0],[-0.511,-0.224],[-0.181,0.085],[-1.838,0.671]],"o":[[1.744,-0.554],[0.279,0.478],[-0.586,0.834],[0,0]],"v":[[-13.617,-21.236],[19.836,-21.236],[19.402,-20.931],[-12.546,-20.76]]}]},{"t":54}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[120.225,90.181]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":103,"t":-24,"b":170,"r":141},"ip":47,"op":54,"st":-2589},{"ddd":0,"ind":5,"ty":4,"nm":"barraCyan 2","parent":9,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[-37],"e":[11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[11],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":29,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":37,"s":[0],"e":[16]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":42,"s":[16],"e":[-37]},{"t":47}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[122.811,150.897,0],"e":[120.738,163.375,0],"to":[-0.34558996558189,2.07966637611389,0],"ti":[0.17892329394817,-2.41299962997437,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[120.738,163.375,0],"e":[121.738,165.375,0],"to":[-0.17892329394817,2.41299962997437,0],"ti":[-0.16666667163372,-0.33333334326744,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[121.738,165.375,0],"e":[121.738,165.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[121.738,165.375,0],"e":[128.738,163.375,0],"to":[1.16666662693024,-0.33333334326744,0],"ti":[-1.16666662693024,0.33333334326744,0]},{"t":47}]},"a":{"k":[120.738,163.375,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-15.809,-79.669],[17.644,-79.669],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}],"e":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}],"e":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}],"e":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-15.848,-95.301],[17.605,-95.301],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}]},{"t":47}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[120.225,90.181]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":103,"t":-24,"b":170,"r":138},"ip":18,"op":47,"st":-2589},{"ddd":0,"ind":6,"ty":4,"nm":"barraCyan 3","parent":9,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[-37],"e":[11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[11],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":29,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":37,"s":[0],"e":[16]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":42,"s":[16],"e":[-36]},{"t":47}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[122.811,150.897,0],"e":[120.738,163.375,0],"to":[-0.34558996558189,2.07966637611389,0],"ti":[0.17892329394817,-2.41299962997437,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[120.738,163.375,0],"e":[121.738,165.375,0],"to":[-0.17892329394817,2.41299962997437,0],"ti":[1,-0.33333334326744,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[121.738,165.375,0],"e":[114.738,165.375,0],"to":[-1,0.33333334326744,0],"ti":[-1.16666662693024,0.33333334326744,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[114.738,165.375,0],"e":[128.738,163.375,0],"to":[1.16666662693024,-0.33333334326744,0],"ti":[-2.33333325386047,0.33333334326744,0]},{"t":47}]},"a":{"k":[120.738,163.375,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-15.809,-79.669],[17.644,-79.669],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}],"e":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,4.097],[-6.274,15.097],[16.72,33.835],[16.72,50.892],[-16.726,50.892]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,4.097],[-6.274,15.097],[16.72,33.835],[16.72,50.892],[-16.726,50.892]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.528,7.704],[-8.075,18.704],[16.72,33.835],[16.72,50.892],[-16.726,50.892]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.528,7.704],[-8.075,18.704],[16.72,33.835],[16.72,50.892],[-16.726,50.892]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-21.008,12.51],[-10.555,23.51],[16.72,33.835],[16.72,50.892],[-16.726,50.892]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-21.008,12.51],[-10.555,23.51],[16.72,33.835],[16.72,50.892],[-16.726,50.892]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.437,21.71],[-11.117,29.183],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.437,21.71],[-11.117,29.183],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-17.928,26.209],[-10.607,33.682],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-17.928,26.209],[-10.607,33.682],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-20.328,30.538],[-10.123,37.184],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-20.328,30.538],[-10.123,37.184],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-19.615,22.43],[-9.411,29.076],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-19.615,22.43],[-9.411,29.076],[16.72,33.835],[17.311,57.384],[-18.024,58.211]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-19.273,6.402],[-9.114,19.568],[16.72,33.835],[17.311,57.384],[-19.644,59.58]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-19.273,6.402],[-9.114,19.568],[16.72,33.835],[17.311,57.384],[-19.644,59.58]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.729,-20.392],[-8.832,-6.262],[16.72,33.835],[17.311,57.384],[-19.823,56.423]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.729,-20.392],[-8.832,-6.262],[16.72,33.835],[17.311,57.384],[-19.823,56.423]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.092,-62.223],[-8.832,-6.262],[16.72,33.835],[17.311,57.384],[-19.823,56.423]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-18.092,-62.223],[-8.832,-6.262],[16.72,33.835],[17.311,57.384],[-19.823,56.423]]}],"e":[{"i":[[0,0],[0.267,-1.019],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0.184,-0.972],[-0.269,1.028],[0,0],[0.006,25.233],[0,0]],"v":[[-12.906,-56.601],[-8.832,-6.262],[16.72,33.835],[17.311,57.384],[-12.106,50.905]]}]},{"t":47}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[190,82,54,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[120.225,90.181]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":99,"t":-8,"b":170,"r":138},"ip":37,"op":47,"st":-2589},{"ddd":0,"ind":7,"ty":4,"nm":"barraCyan","parent":9,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[-37],"e":[11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[11],"e":[0]},{"t":29}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[122.811,150.897,0],"e":[120.738,163.375,0],"to":[-0.34558996558189,2.07966637611389,0],"ti":[0.17892329394817,-2.41299962997437,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[120.738,163.375,0],"e":[121.738,165.375,0],"to":[-0.17892329394817,2.41299962997437,0],"ti":[-0.16666667163372,-0.33333334326744,0]},{"t":29}]},"a":{"k":[120.738,163.375,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[0,25.733]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-13.829,28.898],[17.416,27.724],[17.493,42.165],[16.911,59.478],[-14.328,60.652]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[3.391,31.039]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-16.859,28.738],[16.933,27.872],[17.01,42.313],[16.428,59.626],[-17.358,60.493]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[3.391,31.039]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-16.859,28.738],[16.933,27.872],[17.01,42.313],[16.428,59.626],[-17.358,60.493]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.13,-19.139],[2.242,26.243]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.207,30.53],[0,0]],"v":[[-16.862,-66.961],[16.45,28.019],[16.527,42.461],[15.945,59.774],[-19.341,59.144]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.13,-19.139],[2.242,26.243]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.207,30.53],[0,0]],"v":[[-16.862,-66.961],[16.45,28.019],[16.527,42.461],[15.945,59.774],[-19.341,59.144]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.276,-19.136],[1.793,26.141]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.393,29.466],[0,0]],"v":[[-17.854,-25.63],[15.967,28.167],[16.044,42.608],[15.462,59.921],[-19.456,59.417]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.276,-19.136],[1.793,26.141]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.393,29.466],[0,0]],"v":[[-17.854,-25.63],[15.967,28.167],[16.044,42.608],[15.462,59.921],[-19.456,59.417]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.423,-19.132],[1.345,26.039]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.579,28.401],[0,0]],"v":[[-18.599,-2.553],[15.484,28.315],[15.561,42.756],[14.979,60.069],[-19.571,59.691]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.423,-19.132],[1.345,26.039]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.579,28.401],[0,0]],"v":[[-18.599,-2.553],[15.484,28.315],[15.561,42.756],[14.979,60.069],[-19.571,59.691]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.57,-19.128],[0.897,25.937]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.766,27.336],[0,0]],"v":[[-18.759,12.982],[15.001,28.463],[15.078,42.904],[14.496,60.217],[-19.686,59.965]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.57,-19.128],[0.897,25.937]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-0.766,27.336],[0,0]],"v":[[-18.759,12.982],[15.001,28.463],[15.078,42.904],[14.496,60.217],[-19.686,59.965]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[0,25.733]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-18.722,27.095],[14.035,28.758],[14.112,43.199],[13.53,60.512],[-19.917,60.512]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[0,25.733]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-18.722,27.095],[14.035,28.758],[14.112,43.199],[13.53,60.512],[-19.917,60.512]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[-0.032,20.578]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-19.47,23.552],[14.035,28.758],[14.112,43.199],[13.53,60.512],[-19.792,61.262]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[-0.032,20.578]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-19.47,23.552],[14.035,28.758],[14.112,43.199],[13.53,60.512],[-19.792,61.262]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[-0.063,15.423]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-20.621,18.367],[14.035,28.758],[14.112,43.199],[13.53,60.512],[-19.667,62.012]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.864,-19.12],[-0.063,15.423]],"o":[[0.451,-1.765],[0.196,6.553],[0,0],[-1.139,25.207],[0,0]],"v":[[-20.621,18.367],[14.035,28.758],[14.112,43.199],[13.53,60.512],[-19.667,62.012]]}],"e":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.265,-19.138],[-0.108,1.519]],"o":[[1.983,1.346],[0.196,6.553],[0,0],[-0.564,0.2],[0,0]],"v":[[-21.356,11.363],[-11.807,22.24],[14.112,43.199],[-12.947,72.046],[-22.646,60.659]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[0,0],[-0.031,-1.031],[0,0],[0.265,-19.138],[-0.108,1.519]],"o":[[1.983,1.346],[0.196,6.553],[0,0],[-0.564,0.2],[0,0]],"v":[[-21.356,11.363],[-11.807,22.24],[14.112,43.199],[-12.947,72.046],[-22.646,60.659]]}],"e":[{"i":[[0,0],[-0.741,-0.717],[0,0],[0.454,-6.921],[0.124,0.613]],"o":[[2.375,1.867],[1.672,1.617],[0,0],[-0.073,1.113],[0,0]],"v":[[-21.668,6.258],[-13.465,16.008],[14.112,43.199],[-13.22,71.012],[-22.917,60.012]]}]},{"t":29}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[190,82,54,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[120.225,90.181]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":97,"t":23,"b":172,"r":138},"ip":18,"op":37,"st":-2589},{"ddd":0,"ind":8,"ty":4,"nm":"triangulo1","parent":12,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.887]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p887_0p167_0p167"],"t":15,"s":[0],"e":[-199]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.597]},"n":["0p833_0p833_0p167_0p597"],"t":21,"s":[-199],"e":[-224]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[-0.044]},"n":["0p833_1_0p167_-0p044"],"t":25,"s":[-224],"e":[418]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":52,"s":[418],"e":[360]},{"t":60}]},"p":{"k":[26.238,26.875,0]},"a":{"k":[26.238,26.875,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.191,5.865],[-5.995,-2.975],[5.995,-5.865]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[25.795,27.684]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":19,"t":21,"b":34,"r":32},"ip":15,"op":47,"st":-2589},{"ddd":0,"ind":9,"ty":4,"nm":"barraRosa","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[36],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[0],"e":[-11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[-11],"e":[0]},{"t":25}]},"p":{"k":[72.555,95.069,0]},"a":{"k":[24.738,23.375,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[5.6,7.908],[-13.997,-19.768],[0,0],[-12.659,-17.87],[14.87,21.001]],"o":[[-14.286,-20.176],[8.668,12.242],[0,0],[14.586,20.589],[-12.387,-17.493]],"v":[[-56.744,-53.746],[-29.442,-73.078],[-12.262,-48.805],[43.138,23.996],[15.841,43.324]]}],"e":[{"i":[[5.6,7.908],[-13.997,-19.768],[0,0],[-12.659,-17.87],[14.87,21.001]],"o":[[-14.286,-20.176],[8.668,12.242],[0,0],[14.586,20.589],[-12.387,-17.493]],"v":[[-56.744,-53.746],[-29.442,-73.078],[-12.262,-48.805],[56.138,43.996],[28.841,63.324]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[5.6,7.908],[-13.997,-19.768],[0,0],[-12.659,-17.87],[14.87,21.001]],"o":[[-14.286,-20.176],[8.668,12.242],[0,0],[14.586,20.589],[-12.387,-17.493]],"v":[[-56.744,-53.746],[-29.442,-73.078],[-12.262,-48.805],[56.138,43.996],[28.841,63.324]]}],"e":[{"i":[[5.6,7.908],[-13.997,-19.768],[0,0],[-12.659,-17.87],[14.87,21.001]],"o":[[-14.286,-20.176],[8.668,12.242],[0,0],[14.586,20.589],[-12.387,-17.493]],"v":[[-59.201,-52.025],[-31.9,-71.357],[-14.72,-47.084],[58.901,50.796],[31.604,70.124]]}]},{"t":22}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[73.737,91.375]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":10,"t":9,"b":171,"r":137},"ip":15,"op":47,"st":-2589},{"ddd":0,"ind":10,"ty":4,"nm":"barraRosa 2","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[36],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[0],"e":[-11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[-11],"e":[0]},{"t":25}]},"p":{"k":[72.555,95.069,0]},"a":{"k":[24.738,23.375,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[6.968,11.877],[-13.997,-19.768],[0,0],[-9.763,-19.603],[4.079,4.513]],"o":[[-12.509,-21.323],[8.668,12.242],[0,0],[0.536,1.076],[-14.372,-15.902]],"v":[[-53.793,-47.954],[-32.762,-68.58],[-15.582,-44.307],[33.141,51.458],[19.133,53.914]]}],"e":[{"i":[[6.512,10.554],[-13.997,-19.768],[0,0],[-10.728,-19.025],[0.351,-1.222]],"o":[[-13.101,-20.941],[8.668,12.242],[0,0],[-0.004,-0.594],[-16.897,-20.327]],"v":[[-54.979,-44.036],[-31.656,-70.079],[-14.475,-45.806],[-1.179,18.451],[4.039,34.617]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[6.512,10.554],[-13.997,-19.768],[0,0],[-10.728,-19.025],[0.351,-1.222]],"o":[[-13.101,-20.941],[8.668,12.242],[0,0],[-0.004,-0.594],[-16.897,-20.327]],"v":[[-54.979,-44.036],[-31.656,-70.079],[-14.475,-45.806],[-1.179,18.451],[4.039,34.617]]}],"e":[{"i":[[6.056,9.231],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-8.555,-13.16]],"v":[[-57.5,-49.644],[-30.549,-71.579],[-13.369,-47.306],[-20.158,-4.261],[-17.345,8.254]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[6.056,9.231],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-8.555,-13.16]],"v":[[-57.5,-49.644],[-30.549,-71.579],[-13.369,-47.306],[-20.158,-4.261],[-17.345,8.254]]}],"e":[{"i":[[5.944,8.075],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-4.71,-4.823]],"v":[[-58,-48.144],[-30.549,-71.579],[-13.369,-47.306],[-29.158,-15.261],[-29.345,-5.746]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[5.944,8.075],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-4.71,-4.823]],"v":[[-58,-48.144],[-30.549,-71.579],[-13.369,-47.306],[-29.158,-15.261],[-29.345,-5.746]]}],"e":[{"i":[[5.944,8.075],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-4.71,-4.823]],"v":[[-59.529,-47.741],[-30.549,-71.579],[-13.369,-47.306],[-32.862,-20.008],[-33.049,-10.493]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[5.944,8.075],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-4.71,-4.823]],"v":[[-59.529,-47.741],[-30.549,-71.579],[-13.369,-47.306],[-32.862,-20.008],[-33.049,-10.493]]}],"e":[{"i":[[5.944,8.075],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-4.71,-4.823]],"v":[[-59.529,-47.741],[-30.549,-71.579],[-13.369,-47.306],[-34.208,-25.222],[-35.706,-13.355]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[5.944,8.075],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-4.71,-4.823]],"v":[[-59.529,-47.741],[-30.549,-71.579],[-13.369,-47.306],[-34.208,-25.222],[-35.706,-13.355]]}],"e":[{"i":[[3.263,3.726],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-5.343,-9.365]],"v":[[-60.687,-44.4],[-38.06,-64.38],[-20.88,-40.107],[-36.594,-31.289],[-39.932,-15.195]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[3.263,3.726],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-5.343,-9.365]],"v":[[-60.687,-44.4],[-38.06,-64.38],[-20.88,-40.107],[-36.594,-31.289],[-39.932,-15.195]]}],"e":[{"i":[[3.263,3.726],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-5.343,-9.365]],"v":[[-60.687,-44.4],[-38.06,-64.38],[-20.88,-40.107],[-33.682,-30.41],[-37.021,-14.316]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[3.263,3.726],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-5.343,-9.365]],"v":[[-60.687,-44.4],[-38.06,-64.38],[-20.88,-40.107],[-33.682,-30.41],[-37.021,-14.316]]}],"e":[{"i":[[3.263,3.726],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.549,-13.763],[8.668,12.242],[0,0],[-0.154,-0.517],[-3.751,-3.123]],"v":[[-60.252,-43.371],[-38.06,-64.38],[-20.88,-40.107],[-30.318,-28.191],[-33.656,-12.097]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[3.263,3.726],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.549,-13.763],[8.668,12.242],[0,0],[-0.154,-0.517],[-3.751,-3.123]],"v":[[-60.252,-43.371],[-38.06,-64.38],[-20.88,-40.107],[-30.318,-28.191],[-33.656,-12.097]]}],"e":[{"i":[[3.263,3.726],[-13.997,-19.768],[0,0],[-11.694,-18.448],[0.392,-1.415]],"o":[[-13.694,-20.558],[8.668,12.242],[0,0],[-0.154,-0.517],[-4.154,-4.652]],"v":[[-58.127,-41.271],[-38.06,-64.38],[-20.88,-40.107],[-30.818,-28.191],[-29.656,-3.097]]}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[77,74,133,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[73.737,91.375]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":8,"t":11,"b":147,"r":107},"ip":16,"op":34,"st":-2589},{"ddd":0,"ind":11,"ty":4,"nm":"barraVioleta 2","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.208]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p208_0p167_0p167"],"t":34,"s":[0],"e":[16]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.054]},"n":["0p833_0p833_0p167_0p054"],"t":41,"s":[16],"e":[-37]},{"t":47}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[74.055,88.569,0],"e":[67.055,92.569,0],"to":[-1.16666662693024,0.66666668653488,0],"ti":[1.16666662693024,-0.66666668653488,0]},{"t":47}]},"a":{"k":[26.238,16.875,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,-24.222],[0,0],[-0.073,-1.464],[0.184,1.233]],"o":[[0,-24.722],[0,15],[0,0],[0.237,4.733],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,-6.108],[-16.726,-52.608]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[77,74,133,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[27.225,91.181]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":10,"t":11,"b":86,"r":44},"ip":34,"op":47,"st":-2592},{"ddd":0,"ind":12,"ty":4,"nm":"000","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.208]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p208_0p167_0p167"],"t":34,"s":[0],"e":[16]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.054]},"n":["0p833_0p833_0p167_0p054"],"t":41,"s":[16],"e":[-37]},{"t":47}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[74.055,88.569,0],"e":[67.055,92.569,0],"to":[-1.16666662693024,0.66666668653488,0],"ti":[1.16666662693024,-0.66666668653488,0]},{"t":47}]},"a":{"k":[26.238,16.875,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,-24.222],[0,0],[-0.005,-21.899],[0,25.733]],"o":[[0,-24.722],[0,15],[0,0],[0.006,25.233],[0,0]],"v":[[-16.726,-60.903],[16.726,-60.903],[16.72,-31.165],[16.72,59.892],[-16.726,59.892]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[27.225,91.181]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":10,"t":11,"b":171,"r":44},"ip":11,"op":47,"st":-2592},{"ddd":0,"ind":13,"ty":4,"nm":"Noriginal 4","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":58,"s":[-35],"e":[-35]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":60,"s":[-35],"e":[-35]},{"i":{"x":[0.833],"y":[0.743]},"o":{"x":[0.167],"y":[0.146]},"n":["0p833_0p743_0p167_0p146"],"t":61,"s":[-35],"e":[0]},{"t":68}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":58,"s":[107.41,157.475,0],"e":[107.41,157.475,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[107.41,157.475,0],"e":[107.41,157.475,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[107.41,157.475,0],"e":[107.41,157.475,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.929},"o":{"x":0.167,"y":0.071},"n":"0p833_0p929_0p167_0p071","t":65,"s":[107.41,157.475,0],"e":[73.41,154.975,0],"to":[-5.66666650772095,-0.41666665673256,0],"ti":[5.66666650772095,0.41666665673256,0]},{"t":68}]},"a":{"k":[1227.727,70.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":54,"s":[{"i":[[0.085,0.235],[0.614,-1.539],[-0.09,-0.823],[3.213,0.858],[0,0],[-0.203,-0.883],[3.169,1.153],[-0.647,0.66],[-3.596,-1.064],[0,0]],"o":[[-0.597,-1.661],[0.432,0.374],[0.085,0.774],[-1.441,-0.385],[0,0],[0.214,0.93],[-1.073,-0.39],[0.856,-0.874],[1.68,0.497],[0,0]],"v":[[-68.861,-5.781],[-35.415,-5.781],[-36.626,-5.362],[-67.794,-5.279],[-40.738,-6.179],[-36.468,-5.543],[-69.136,-5.4],[-68.703,-6.156],[-37.4,-6.156],[-69.367,-5.305]]}],"e":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.099,19.372],[0.534,78.628],[-8.267,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-68.195,-67.872],[-34.749,-67.872],[-36.267,73.749],[-68.212,72.749],[-35.698,-10.975],[-36.108,70.749],[-69.554,70.749],[-68.037,-74.091],[-36.734,-74.091],[-68.302,13.546]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":58,"s":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.099,19.372],[0.534,78.628],[-8.267,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-68.195,-67.872],[-34.749,-67.872],[-36.267,73.749],[-68.212,72.749],[-35.698,-10.975],[-36.108,70.749],[-69.554,70.749],[-68.037,-74.091],[-36.734,-74.091],[-68.302,13.546]]}],"e":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.098,19.372],[0.534,78.628],[-8.268,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-69.302,-61.933],[-35.856,-61.933],[-35.856,67.932],[-67.802,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[-68.302,13.546]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":60,"s":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.098,19.372],[0.534,78.628],[-8.268,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-69.302,-61.933],[-35.856,-61.933],[-35.856,67.932],[-67.802,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[-68.302,13.546]]}],"e":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.099,19.372],[0.534,78.628],[-8.267,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-69.302,-61.933],[-35.856,-61.933],[-35.856,67.932],[-67.802,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[-68.302,13.546]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":61,"s":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.099,19.372],[0.534,78.628],[-8.267,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-69.302,-61.933],[-35.856,-61.933],[-35.856,67.932],[-67.802,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[-68.302,13.546]]}],"e":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.099,19.372],[0.534,78.628],[-8.267,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-69.302,-61.933],[-35.856,-61.933],[-35.856,67.932],[-67.802,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[-68.302,13.546]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":65,"s":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.099,19.372],[0.534,78.628],[-8.267,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-69.302,-61.933],[-35.856,-61.933],[-35.856,67.932],[-67.802,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[-68.302,13.546]]}],"e":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.098,19.372],[0.534,78.628],[-8.268,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[22.698,-61.933],[56.144,-61.933],[56.144,67.932],[24.198,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[21.698,13.546]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":68,"s":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.098,19.372],[0.534,78.628],[-8.268,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[22.698,-61.933],[56.144,-61.933],[56.144,67.932],[24.198,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[21.698,13.546]]}],"e":[{"i":[[0.059,19.493],[-0.636,-11.007],[-1.366,-13.565],[6.06,9.128],[0,0],[0.956,-16.372],[0.652,14.128],[0.402,24.993],[-8.151,-10.132],[0,0]],"o":[[-0.066,-13.757],[0.614,20.493],[0.364,17.878],[-6.44,-7.372],[0,0],[0.081,9.816],[-0.098,-21.372],[0.027,-5.132],[3.609,4.485],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[34.698,73.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":71,"s":[{"i":[[0.059,19.493],[-0.636,-11.007],[-1.366,-13.565],[6.06,9.128],[0,0],[0.956,-16.372],[0.652,14.128],[0.402,24.993],[-8.151,-10.132],[0,0]],"o":[[-0.066,-13.757],[0.614,20.493],[0.364,17.878],[-6.44,-7.372],[0,0],[0.081,9.816],[-0.098,-21.372],[0.027,-5.132],[3.609,4.485],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[34.698,73.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}],"e":[{"i":[[0.059,19.493],[0.114,0.493],[-1.366,-13.565],[0.06,0.628],[0,0],[0.956,-16.372],[-0.098,0.128],[0.402,24.993],[-0.646,-0.807],[0,0]],"o":[[0.559,0.493],[0.614,20.493],[0.114,0.128],[-0.344,-6.523],[0,0],[0.456,-0.872],[-0.098,-21.372],[0.402,-0.007],[3.599,4.493],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[34.698,74.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}]},{"t":75}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1282.059,78.613]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":1212,"t":-10,"b":165,"r":1352},"ip":54,"op":75,"st":27},{"ddd":0,"ind":14,"ty":4,"nm":"Noriginal 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[132.41,164.975,0]},"a":{"k":[1286.727,80.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":1,"s":[{"i":[[0.059,19.493],[0.114,0.493],[-1.366,-13.565],[0.059,0.628],[0,0],[0.956,-16.372],[-0.098,0.128],[0.402,24.993],[-0.646,-0.807],[0,0]],"o":[[0.559,0.493],[0.614,20.493],[0.114,0.128],[-0.344,-6.523],[0,0],[0.456,-0.872],[-0.098,-21.372],[0.402,-0.007],[3.599,4.493],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[37.198,73.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}],"e":[{"i":[[0.059,19.493],[0.114,0.493],[-1.366,-13.565],[19.81,-6.997],[0,0],[0.956,-16.372],[-0.098,0.128],[0.402,24.993],[-14.651,5.743],[0,0]],"o":[[16.934,7.243],[0.614,20.493],[0.114,0.128],[-0.344,-6.523],[0,0],[-18.294,-12.497],[-0.098,-21.372],[0.402,-0.007],[-0.151,-0.132],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[37.198,73.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[0.059,19.493],[0.114,0.493],[-1.366,-13.565],[19.81,-6.997],[0,0],[0.956,-16.372],[-0.098,0.128],[0.402,24.993],[-14.651,5.743],[0,0]],"o":[[16.934,7.243],[0.614,20.493],[0.114,0.128],[-0.344,-6.523],[0,0],[-18.294,-12.497],[-0.098,-21.372],[0.402,-0.007],[-0.151,-0.132],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[37.198,73.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}],"e":[{"i":[[0.059,19.493],[0.114,0.493],[-1.366,-13.565],[19.81,-6.997],[0,0],[0.956,-16.372],[-0.098,0.128],[0.402,24.993],[-14.651,5.743],[0,0]],"o":[[16.934,7.243],[0.614,20.493],[0.114,0.128],[-0.344,-6.523],[0,0],[-18.294,-12.497],[-0.098,-21.372],[0.402,-0.007],[-0.151,-0.132],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[37.198,73.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":4,"s":[{"i":[[0.059,19.493],[0.114,0.493],[-1.366,-13.565],[19.81,-6.997],[0,0],[0.956,-16.372],[-0.098,0.128],[0.402,24.993],[-14.651,5.743],[0,0]],"o":[[16.934,7.243],[0.614,20.493],[0.114,0.128],[-0.344,-6.523],[0,0],[-18.294,-12.497],[-0.098,-21.372],[0.402,-0.007],[-0.151,-0.132],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.932],[37.198,73.932],[-35.698,-18.975],[-35.698,74.932],[-69.144,74.932],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}],"e":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.098,19.372],[0.534,78.628],[-8.268,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[22.698,-61.933],[56.144,-61.933],[56.144,67.932],[24.198,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[21.698,13.546]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.098,19.372],[0.534,78.628],[-8.268,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[22.698,-61.933],[56.144,-61.933],[56.144,67.932],[24.198,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[21.698,13.546]]}],"e":[{"i":[[0.633,18.52],[0.614,-25.507],[0.283,-13.631],[3.213,14.211],[0,0],[0.03,-14.628],[0.098,19.372],[0.534,78.628],[-8.268,-15.991],[0,0]],"o":[[-0.94,-27.507],[0.614,20.493],[-0.386,18.628],[-1.44,-6.372],[0,0],[-0.044,21.628],[-0.098,-19.372],[-0.098,-14.507],[3.099,5.993],[0,0]],"v":[[-69.302,-61.933],[-35.856,-61.933],[-35.856,67.932],[-67.802,66.932],[-35.698,-10.975],[-35.698,64.932],[-69.144,64.932],[-69.144,-68.151],[-37.841,-68.151],[-68.302,13.546]]}]},{"t":11}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1282.059,78.613]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":1212,"t":-4,"b":159,"r":1352},"ip":1,"op":11,"st":-16},{"ddd":0,"ind":15,"ty":4,"nm":"Noriginal 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[132.41,164.975,0]},"a":{"k":[1286.727,80.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.933],[35.698,74.933],[-35.698,-18.975],[-35.698,74.933],[-69.144,74.933],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1282.059,78.613]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":1212,"t":3,"b":154,"r":1352},"ip":75,"op":718,"st":75},{"ddd":0,"ind":16,"ty":4,"nm":"Noriginal","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[132.41,164.975,0]},"a":{"k":[1286.727,80.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[35.698,-74.933],[69.144,-74.933],[69.144,74.933],[35.698,74.933],[-35.698,-18.975],[-35.698,74.933],[-69.144,74.933],[-69.144,-74.933],[-37.841,-74.933],[35.698,21.546]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1282.059,78.613]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":1212,"t":3,"b":154,"r":1352},"ip":0,"op":1,"st":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"I 6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[100.151,90.87,0],"e":[100.151,70.87,0],"to":[0,-0.83333331346512,0],"ti":[-0.13116805255413,-0.56839483976364,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":32,"s":[100.151,70.87,0],"e":[100.151,118.37,0],"to":[0.25,1.08333337306976,0],"ti":[-0.17946662008762,-1.17957735061646,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"n":"0p667_0p667_0p167_0p167","t":41,"s":[100.151,118.37,0],"e":[100.151,118.37,0],"to":[0.02186059206724,0.14368276298046,0],"ti":[-0.17946662008762,-1.17957735061646,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":56,"s":[100.151,118.37,0],"e":[100.151,78.87,0],"to":[0.02186059206724,0.14368276298046,0],"ti":[0,0.83333331346512,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":64,"s":[100.151,78.87,0],"e":[100.151,118.37,0],"to":[0,-0.83333331346512,0],"ti":[-0.17946662008762,-1.17957735061646,0]},{"t":72}]},"a":{"k":[16.974,152.148,0]},"s":{"k":[100,179.277,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.322,137.738],[3.572,151.028],[3.697,150.903],[3.447,137.738]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,137.359],[15.916,152.012],[32.197,150.403],[32.447,137.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,137.359],[15.916,152.012],[32.197,150.403],[32.447,137.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":39,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.02,136.669],[30.145,152.159],[32.447,147.903],[32.447,140.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":40,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.02,136.669],[30.145,152.159],[32.447,147.903],[32.447,140.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24.791,137.812],[24.791,152.37],[35.447,148.681],[34.822,140.284]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24.791,137.812],[24.791,152.37],[35.447,148.681],[34.822,140.284]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.285,136.019],[15.262,152.278],[29.065,148.392],[28.365,138.98]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.285,136.019],[15.262,152.278],[29.065,148.392],[28.365,138.98]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.182,135.976],[12.622,153.468],[24.007,148.864],[23.307,140.857]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.182,135.976],[12.622,153.468],[24.007,148.864],[23.307,140.857]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.98,137.051],[5.33,149.571],[26.322,149.138],[24.86,137.091]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.98,137.051],[5.33,149.571],[26.322,149.138],[24.86,137.091]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.87,136.938],[1.413,147.291],[19.847,149.115],[19.856,135.728]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.87,136.938],[1.413,147.291],[19.847,149.115],[19.856,135.728]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.273,135.946],[4.483,146.205],[20.142,149.605],[20.34,134.129]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":67,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.273,135.946],[4.483,146.205],[20.142,149.605],[20.34,134.129]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.747,136.666],[-0.725,147.897],[1.07,150.085],[0.803,135.684]]}]},{"t":69}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[215,179,29,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[24,143]},"a":{"k":[24,143]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":41,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":56,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":57,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":69,"s":[100],"e":[0]},{"t":70}]}}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.474,8.134],[-12.651,8.384],[-12.651,-5.674],[-13.474,-5.924]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.888,6.372],[-0.813,7.631],[0.687,-6.25],[-3.826,-6.005]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":32,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.888,6.372],[-0.813,7.631],[0.687,-6.25],[-3.826,-6.005]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.439,6.41],[7.2,8.405],[6.865,-7.008],[-14.161,-6.19]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.439,6.41],[7.2,8.405],[6.865,-7.008],[-14.161,-6.19]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":39,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":53,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.153],[-16.724,-6.153]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.153],[-16.724,-6.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.474,8.384],[7.974,8.663],[7.974,-5.874],[-15.474,-6.153]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.474,8.384],[7.974,8.663],[7.974,-5.874],[-15.474,-6.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.971,6.802],[3.793,8.66],[3.918,-6.545],[-14.13,-5.409]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":59,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.971,6.802],[3.793,8.66],[3.918,-6.545],[-14.13,-5.409]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.468,5.219],[-1.638,8.657],[-1.638,-7.635],[-12.787,-4.666]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.468,5.219],[-1.638,8.657],[-1.638,-7.635],[-12.787,-4.666]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.924,5.665],[-2.749,9.138],[-2.738,-7.669],[-12.243,-4.221]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.924,5.665],[-2.749,9.138],[-2.738,-7.669],[-12.243,-4.221]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.225,6.238],[-4.176,9.756],[-3.616,-7.713],[-11.544,-3.648]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.225,6.238],[-4.176,9.756],[-3.616,-7.713],[-11.544,-3.648]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.508,5.234],[-11.44,5.676],[-10.791,-6.641],[-12.184,-4.522]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.508,5.234],[-11.44,5.676],[-10.791,-6.641],[-12.184,-4.522]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.771,5.192],[8.32,3.615],[7.293,-5.681],[2.248,-7.892]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.771,5.192],[8.32,3.615],[7.293,-5.681],[2.248,-7.892]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.055,5.857],[15.419,2],[15.024,-5.653],[3.16,-9.535]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":67,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.055,5.857],[15.419,2],[15.024,-5.653],[3.16,-9.535]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.953,6.209],[13.033,6.435],[12.702,-7.736],[-16.181,-8.004]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.953,6.209],[13.033,6.435],[12.702,-7.736],[-16.181,-8.004]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"t":74}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[16.974,143.662]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[28.166,141.696],[28.041,131.713],[32.822,130.611],[32.822,140.595]]}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 2"},{"ty":"gr","it":[{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":-1,"t":130,"b":154,"r":36},"ip":25,"op":73,"st":18},{"ddd":0,"ind":2,"ty":4,"nm":"I 4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[100.151,141.62,0],"e":[100.151,121.62,0],"to":[0,-0.83333331346512,0],"ti":[-0.13116805255413,-0.56839483976364,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":28,"s":[100.151,121.62,0],"e":[100.151,161.62,0],"to":[0.25,1.08333337306976,0],"ti":[0.48588955402374,1.08973503112793,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"n":"0p667_0p667_0p167_0p167","t":37,"s":[100.151,161.62,0],"e":[100.151,161.62,0],"to":[-0.10313940793276,-0.23131723701954,0],"ti":[0.02984272688627,-0.11984493583441,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":56,"s":[100.151,161.62,0],"e":[100.151,121.62,0],"to":[-0.01183218508959,0.0475166849792,0],"ti":[-0.13116805255413,-0.56839483976364,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":63,"s":[100.151,121.62,0],"e":[100.151,161.62,0],"to":[0.25,1.08333337306976,0],"ti":[0.48588955402374,1.08973503112793,0]},{"t":73}]},"a":{"k":[16.974,152.148,0]},"s":{"k":[100,258.277,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.322,137.738],[3.572,151.028],[3.697,150.903],[3.447,137.738]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,137.359],[15.916,152.012],[32.197,150.403],[32.447,137.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,137.359],[15.916,152.012],[32.197,150.403],[32.447,137.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.02,136.669],[30.145,152.159],[32.447,147.903],[32.447,140.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":36,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.02,136.669],[30.145,152.159],[32.447,147.903],[32.447,140.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24.385,135.262],[24.322,152.093],[30.072,149.043],[29.822,136.674]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24.385,135.262],[24.322,152.093],[30.072,149.043],[29.822,136.674]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.01,135.262],[14.947,152.093],[30.072,149.043],[29.822,136.674]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.01,135.262],[14.947,152.093],[30.072,149.043],[29.822,136.674]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.01,135.262],[9.947,152.093],[30.822,149.721],[29.572,136.286]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.01,135.262],[9.947,152.093],[30.822,149.721],[29.572,136.286]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.26,135.31],[2.197,151.899],[29.822,151.27],[29.572,135.318]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.26,135.31],[2.197,151.899],[29.822,151.27],[29.572,135.318]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.26,137.44],[2.447,148.415],[20.322,152.238],[20.822,135.415]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.26,137.44],[2.447,148.415],[20.322,152.238],[20.822,135.415]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.26,137.44],[2.447,148.415],[16.572,152.044],[17.072,135.222]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":67,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.26,137.44],[2.447,148.415],[16.572,152.044],[17.072,135.222]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.01,137.633],[2.447,148.415],[0.822,152.915],[1.572,136.674]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.01,137.633],[2.447,148.415],[0.822,152.915],[1.572,136.674]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.01,136.665],[2.447,148.415],[0.822,152.915],[1.572,135.706]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.01,136.665],[2.447,148.415],[0.822,152.915],[1.572,135.706]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"t":73}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[79,77,126,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[24,143]},"a":{"k":[24,143]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":37,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":56,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":57,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":70,"s":[100],"e":[0]},{"t":71}]}}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.474,8.134],[-12.651,8.384],[-12.651,-5.674],[-13.474,-5.924]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.888,6.372],[-0.813,7.631],[0.687,-6.25],[-3.826,-6.005]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":28,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.888,6.372],[-0.813,7.631],[0.687,-6.25],[-3.826,-6.005]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":40,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[7.349,8.384],[7.349,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[7.349,8.384],[7.349,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,4.754],[-2.026,8.384],[-2.026,-8.384],[-16.724,-5.964]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,4.754],[-2.026,8.384],[-2.026,-8.384],[-16.724,-5.964]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,4.754],[-7.026,8.384],[-7.026,-8.384],[-16.724,-5.964]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,4.754],[-7.026,8.384],[-7.026,-8.384],[-16.724,-5.964]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.724,4.948],[-14.776,8.19],[-14.776,-8.336],[-12.224,-5.771]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.724,4.948],[-14.776,8.19],[-14.776,-8.336],[-12.224,-5.771]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.776,5.625],[-5.776,5.287],[-5.651,-5.432],[0.526,-5.722]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.776,5.625],[-5.776,5.287],[-5.651,-5.432],[0.526,-5.722]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.276,6.303],[3.224,8.578],[3.474,-7.948],[13.276,-5.674]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.276,6.303],[3.224,8.578],[3.474,-7.948],[13.276,-5.674]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.276,6.303],[-0.526,8.384],[-0.276,-8.142],[13.276,-5.674]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":67,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.276,6.303],[-0.526,8.384],[-0.276,-8.142],[13.276,-5.674]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.151,6.835],[-8.151,8.771],[-7.651,-7.706],[13.026,-6.593]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.151,6.835],[-8.151,8.771],[-7.651,-7.706],[13.026,-6.593]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.276,7.948],[-14.776,9.642],[-15.776,-6.69],[12.026,-6.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.276,7.948],[-14.776,9.642],[-15.776,-6.69],[12.026,-6.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.776,8.529],[-16.526,8.674],[-16.526,-7.852],[16.276,-7.9]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.776,8.529],[-16.526,8.674],[-16.526,-7.852],[16.276,-7.9]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"t":73}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":21,"s":[91,89,130,255],"e":[91,89,130,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[91,89,130,255],"e":[91,89,130,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":58,"s":[91,89,130,255],"e":[91,89,130,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":65,"s":[91,89,130,255],"e":[255,219,67,255]},{"t":66}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[16.974,143.662]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":134,"b":154,"r":34},"ip":21,"op":74,"st":14},{"ddd":0,"ind":3,"ty":4,"nm":"I 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[100.151,186.87,0],"e":[100.151,166.87,0],"to":[0,-3.33333325386047,0],"ti":[0,-1.66666662693024,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[100.151,166.87,0],"e":[100.151,196.87,0],"to":[0,1.66666662693024,0],"ti":[0,-5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"n":"0p667_0p667_0p167_0p167","t":33,"s":[100.151,196.87,0],"e":[100.151,196.87,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":56,"s":[100.151,196.87,0],"e":[100.151,154.87,0],"to":[0,-7,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":63,"s":[100.151,154.87,0],"e":[100.151,196.87,0],"to":[0,0,0],"ti":[0,-7,0]},{"t":73}]},"a":{"k":[16.974,152.148,0]},"s":{"k":[100,211.277,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.322,135.028],[3.572,151.028],[3.697,150.903],[3.447,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,137.429],[15.916,151.883],[32.197,150.403],[32.447,137.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,137.429],[15.916,151.883],[32.197,150.403],[32.447,137.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.02,136.61],[30.145,151.858],[32.447,147.903],[32.447,140.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":32,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.02,136.61],[30.145,151.858],[32.447,147.903],[32.447,140.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[23.322,135.488],[23.822,151.856],[30.572,149.57],[30.572,136.33]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[23.322,135.488],[23.822,151.856],[30.572,149.57],[30.572,136.33]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.447,135.37],[17.447,152.093],[30.572,149.57],[30.572,136.33]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.447,135.37],[17.447,152.093],[30.572,149.57],[30.572,136.33]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.447,135.37],[10.447,152.093],[30.572,149.57],[30.572,136.33]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.447,135.37],[10.447,152.093],[30.572,149.57],[30.572,136.33]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.072,135.37],[1.072,152.093],[30.572,151.345],[30.572,135.146]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.072,135.37],[1.072,152.093],[30.572,151.345],[30.572,135.146]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7.072,137.973],[6.947,149.667],[17.572,151.522],[17.072,135.265]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7.072,137.973],[6.947,149.667],[17.572,151.522],[17.072,135.265]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.822,135.074],[7.072,151.206],[3.822,149.333],[3.822,139.169]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.822,135.074],[7.072,151.206],[3.822,149.333],[3.822,139.169]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.053,137.914],[0.697,150.496],[0.197,152.765],[-0.053,137.75]]}]},{"t":72}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[54,134,147,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[24,143]},"a":{"k":[24,143]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":32,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":56,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":57,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":71,"s":[100],"e":[0]},{"t":72}]}}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.474,8.134],[-12.651,8.384],[-12.651,-8.384],[-13.474,-8.634]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":36,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[6.724,8.384],[6.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[6.724,8.384],[6.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,5.13],[1.099,8.384],[1.099,-8.384],[-16.724,-6.905]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,5.13],[1.099,8.384],[1.099,-8.384],[-16.724,-6.905]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.974,5.544],[-5.901,8.384],[-5.901,-8.384],[-16.224,-6.136]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.974,5.544],[-5.901,8.384],[-5.901,-8.384],[-16.224,-6.136]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.974,5.544],[-15.276,8.384],[-15.276,-8.384],[-16.224,-6.136]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.974,5.544],[-15.276,8.384],[-15.276,-8.384],[-16.224,-6.136]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.8,5.258],[-7.5,3.863],[-7.25,-4.325],[-4.975,-5.671]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.8,5.258],[-7.5,3.863],[-7.25,-4.325],[-4.975,-5.671]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.727,7.09],[4.219,8.137],[3.407,-8.398],[16.932,-6.827]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":67,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.727,7.09],[4.219,8.137],[3.407,-8.398],[16.932,-6.827]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.646,7.419],[0.347,7.64],[0.069,-8.287],[15.016,-7.57]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.646,7.419],[0.347,7.64],[0.069,-8.287],[15.016,-7.57]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.026,7.674],[-9.776,7.674],[-10.526,-8.621],[13.526,-8.147]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.026,7.674],[-9.776,7.674],[-10.526,-8.621],[13.526,-8.147]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.151,9.094],[-17.151,9.094],[-17.151,-8.502],[16.651,-8.147]]}]},{"t":72}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":66,"s":[74,161,175,255],"e":[255,219,67,255]},{"t":67}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[16.974,143.662]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":-1,"t":134,"b":153,"r":34},"ip":17,"op":73,"st":10},{"ddd":0,"ind":4,"ty":4,"nm":"I 9","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":56,"s":[100.151,223.62,0],"e":[100.151,184.12,0],"to":[0.02186059206724,0.14368276298046,0],"ti":[0.02193058468401,0.13852313160896,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":64,"s":[100.151,184.12,0],"e":[100.151,223.62,0],"to":[-0.01030175201595,-0.06507036089897,0],"ti":[-0.05446662008762,-0.11707740277052,0]},{"t":72}]},"a":{"k":[16.974,152.148,0]},"s":{"k":[100,179.277,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24.791,137.812],[24.791,152.37],[35.447,148.681],[34.822,140.284]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24.791,137.812],[24.791,152.37],[35.447,148.681],[34.822,140.284]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.285,136.019],[15.262,152.278],[29.065,148.392],[28.365,138.98]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.285,136.019],[15.262,152.278],[29.065,148.392],[28.365,138.98]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.182,135.976],[12.622,153.468],[24.007,148.864],[23.307,140.857]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.182,135.976],[12.622,153.468],[24.007,148.864],[23.307,140.857]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.98,137.051],[5.33,149.571],[26.322,149.138],[24.86,137.091]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.98,137.051],[5.33,149.571],[26.322,149.138],[24.86,137.091]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.87,136.938],[1.413,147.291],[19.847,149.115],[19.856,135.728]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.87,136.938],[1.413,147.291],[19.847,149.115],[19.856,135.728]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.273,135.946],[4.483,146.205],[20.142,149.605],[20.34,134.129]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":67,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.273,135.946],[4.483,146.205],[20.142,149.605],[20.34,134.129]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.747,136.666],[-0.725,147.897],[1.07,150.085],[0.803,135.684]]}]},{"t":69}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[192,86,59,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[24,143]},"a":{"k":[24,143]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":56,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":57,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":69,"s":[100],"e":[0]},{"t":70}]}}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.902],[-16.724,-6.902]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.474,8.384],[7.974,8.663],[7.974,-5.874],[-15.474,-6.153]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.474,8.384],[7.974,8.663],[7.974,-5.874],[-15.474,-6.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.971,6.802],[3.793,8.66],[3.918,-6.545],[-14.13,-5.409]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":59,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.971,6.802],[3.793,8.66],[3.918,-6.545],[-14.13,-5.409]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.468,5.219],[-1.638,8.657],[-1.638,-7.635],[-12.787,-4.666]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.468,5.219],[-1.638,8.657],[-1.638,-7.635],[-12.787,-4.666]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.924,5.665],[-2.749,9.138],[-2.738,-7.669],[-12.243,-4.221]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.924,5.665],[-2.749,9.138],[-2.738,-7.669],[-12.243,-4.221]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.225,6.238],[-4.176,9.756],[-3.616,-7.713],[-11.544,-3.648]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.225,6.238],[-4.176,9.756],[-3.616,-7.713],[-11.544,-3.648]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.508,5.234],[-11.44,5.676],[-10.791,-6.641],[-12.184,-4.522]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.508,5.234],[-11.44,5.676],[-10.791,-6.641],[-12.184,-4.522]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.771,5.192],[8.32,3.615],[7.293,-5.681],[2.248,-7.892]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.771,5.192],[8.32,3.615],[7.293,-5.681],[2.248,-7.892]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.055,5.857],[15.419,2],[15.024,-5.653],[3.16,-9.535]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":67,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.055,5.857],[15.419,2],[15.024,-5.653],[3.16,-9.535]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.953,6.209],[13.033,6.435],[12.702,-7.736],[-16.181,-8.004]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.953,6.209],[13.033,6.435],[12.702,-7.736],[-16.181,-8.004]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"t":73}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":65,"s":[221,120,94,255],"e":[255,219,67,255]},{"t":66}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[16.974,143.662]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[28.166,141.696],[28.041,131.713],[32.822,130.611],[32.822,140.595]]}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 2"},{"ty":"gr","it":[{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":-1,"t":130,"b":154,"r":36},"ip":56,"op":73,"st":18},{"ddd":0,"ind":5,"ty":4,"nm":"I 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[100.151,217.12,0],"e":[100.151,197.12,0],"to":[0,-3.33333325386047,0],"ti":[0,-1,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[100.151,197.12,0],"e":[100.151,223.12,0],"to":[0,1,0],"ti":[0,-4.33333349227905,0]},{"t":29}]},"a":{"k":[16.974,152.148,0]},"s":{"k":[100,159.277,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.322,135.028],[3.572,151.028],[3.697,150.903],[3.447,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.791,137.484],[15.916,151.999],[32.197,150.403],[32.447,137.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.791,137.484],[15.916,151.999],[32.197,150.403],[32.447,137.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.27,136.523],[30.145,152.282],[32.447,147.903],[32.447,140.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":28,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.27,136.523],[30.145,152.282],[32.447,147.903],[32.447,140.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"t":29}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[192,86,59,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[24,143]},"a":{"k":[24,143]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":28,"s":[100],"e":[0]},{"t":29}]}}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.474,8.134],[-12.651,8.384],[-12.651,-8.384],[-13.474,-8.634]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.974,-6.227],[-12.345,-6.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.974,-6.227],[-12.345,-6.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[16.974,143.662]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":134,"b":153,"r":34},"ip":14,"op":56,"st":6},{"ddd":0,"ind":6,"ty":4,"nm":"I ","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":9,"s":[100.151,239.87,0],"e":[100.151,219.87,0],"to":[0,-0.08333333581686,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[100.151,219.87,0],"e":[100.151,239.87,0],"to":[0,0,0],"ti":[0.0625,-0.14583332836628,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":25,"s":[100.151,239.87,0],"e":[100.151,239.87,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":56,"s":[100.151,239.87,0],"e":[100.151,212.87,0],"to":[0,-4.5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":63,"s":[100.151,212.87,0],"e":[100.151,239.87,0],"to":[0,0,0],"ti":[0.0625,-0.14583332836628,0]},{"t":72}]},"a":{"k":[16.974,152.148,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.322,135.028],[3.572,151.028],[3.697,150.903],[3.447,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.822,134.778],[3.572,151.028],[10.322,152.528],[10.822,135.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.041,136.278],[4.041,150.278],[18.447,152.028],[18.572,135.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.416,137.028],[16.416,151.028],[25.322,152.153],[25.072,136.028]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,136.778],[16.166,151.528],[32.197,150.403],[32.447,137.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.541,136.778],[16.166,151.528],[32.197,150.403],[32.447,137.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[18.916,137.778],[19.541,151.028],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[21.207,137.049],[21.707,151.82],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.499,136.32],[26.874,152.611],[32.447,147.903],[32.447,139.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.541,141.278],[32.416,148.028],[32.447,147.903],[32.447,141.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.072,135.528],[26.072,151.903],[31.822,147.528],[31.572,137.778]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.072,135.528],[26.072,151.903],[31.822,147.528],[31.572,137.778]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[19.197,135.528],[19.197,151.903],[31.822,147.528],[31.572,137.778]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[19.197,135.528],[19.197,151.903],[31.822,147.528],[31.572,137.778]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.26,135.528],[13.26,151.903],[29.635,148.153],[29.385,136.84]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.26,135.528],[13.26,151.903],[29.635,148.153],[29.385,136.84]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.76,135.278],[6.76,151.653],[28.26,151.028],[28.01,135.653]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.76,135.278],[6.76,151.653],[28.26,151.028],[28.01,135.653]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.385,135.028],[3.385,151.403],[25.01,151.778],[24.885,135.403]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.385,135.028],[3.385,151.403],[25.01,151.778],[24.885,135.403]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.385,139.653],[4.885,147.528],[15.01,151.153],[15.01,134.153]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.385,139.653],[4.885,147.528],[15.01,151.153],[15.01,134.153]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.635,138.153],[3.635,146.903],[4.666,150.519],[4.291,133.855]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":70,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.635,138.153],[3.635,146.903],[4.666,150.519],[4.291,133.855]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.385,139.653],[4.885,147.528],[5.385,149.528],[5.385,139.278]]}]},{"t":71}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[149,39,25,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[24,143]},"a":{"k":[24,143]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":56,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":57,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":70,"s":[100],"e":[0]},{"t":71}]}}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.474,8.134],[-13.276,8.385],[-13.276,-8.383],[-13.474,-8.634]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.671,8.176],[16.599,7.759],[16.474,-6.884],[-6.671,-8.592]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.318,8.219],[16.474,6.884],[16.724,-6.884],[1.318,-8.549]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.193,8.594],[15.474,6.134],[15.474,-4.259],[8.193,-8.174]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.47,6.085],[-1.099,8.353],[-0.099,-6.306],[-12.345,-6.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.655,4.185],[3.051,7.604],[2.632,-5.896],[-12.16,-4.246]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.511,5.918],[4.983,7.906],[4.704,-6.684],[-13.119,-5.209]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.367,6.901],[9.916,8.208],[9.776,-7.471],[-15.202,-7.171]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-6.884],[-16.724,-6.884]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":28,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[9.224,8.384],[9.224,-8.384],[-16.724,-8.384]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":58,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[9.224,8.384],[9.224,-8.384],[-16.724,-8.384]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.411,6.197],[2.349,8.384],[2.349,-8.384],[-16.411,-5.259]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.411,6.197],[2.349,8.384],[2.349,-8.384],[-16.411,-5.259]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.255,5.728],[-3.589,8.384],[-3.589,-8.384],[-16.255,-4.947]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":62,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.255,5.728],[-3.589,8.384],[-3.589,-8.384],[-16.255,-4.947]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-11.88,3.603],[-10.089,8.134],[-10.089,-8.634],[-12.13,-2.697]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-11.88,3.603],[-10.089,8.134],[-10.089,-8.634],[-12.13,-2.697]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.745,4.228],[7.536,7.884],[7.286,-8.134],[10.37,-6.072]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.745,4.228],[7.536,7.884],[7.286,-8.134],[10.37,-6.072]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.87,5.478],[-2.464,7.259],[-2.589,-9.384],[10.245,-7.947]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.87,5.478],[-2.464,7.259],[-2.589,-9.384],[10.245,-7.947]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.995,7.603],[-16.589,7.134],[-16.964,-9.759],[15.495,-9.447]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":71,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.995,7.603],[-16.589,7.134],[-16.964,-9.759],[15.495,-9.447]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.724,8.384],[16.724,8.384],[16.724,-8.384],[-16.724,-8.384]]}]},{"t":72}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":66,"s":[204,69,51,255],"e":[255,219,67,255]},{"t":67}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[16.974,143.662]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":133,"b":153,"r":34},"ip":9,"op":73,"st":2},{"ddd":0,"ind":7,"ty":4,"nm":"Ioriginal 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[99.41,168.975,0]},"a":{"k":[1158.727,84.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-74.933],[16.723,-74.933],[16.723,74.933],[-16.723,74.933]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1159.318,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":1142,"t":3,"b":154,"r":1177},"ip":73,"op":5969,"st":-7},{"ddd":0,"ind":8,"ty":4,"nm":"Ioriginal","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[100],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":76,"s":[0],"e":[100]},{"t":77}]},"r":{"k":0},"p":{"k":[99.41,168.975,0]},"a":{"k":[1158.727,84.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-74.933],[16.723,-74.933],[16.723,74.933],[-16.723,74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-84.933],[16.723,-84.933],[16.723,74.933],[-16.723,74.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-84.933],[16.723,-84.933],[16.723,74.933],[-16.723,74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-85.933],[16.723,-85.933],[16.723,74.933],[-16.723,74.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-85.933],[16.723,-85.933],[16.723,74.933],[-16.723,74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,75.068],[16.723,75.068],[16.723,74.933],[-16.723,74.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,75.068],[16.723,75.068],[16.723,74.933],[-16.723,74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,75.068],[16.723,75.068],[16.723,74.933],[-16.723,74.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":76,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,75.068],[16.723,75.068],[16.723,74.933],[-16.723,74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-78.933],[16.723,-78.933],[16.723,74.933],[-16.723,74.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":91.158,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-78.933],[16.723,-78.933],[16.723,74.933],[-16.723,74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-70.933],[16.723,-70.933],[16.723,74.933],[-16.723,74.933]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":99.579,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-70.933],[16.723,-70.933],[16.723,74.933],[-16.723,74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.723,-74.933],[16.723,-74.933],[16.723,74.933],[-16.723,74.933]]}]},{"t":108}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1159.318,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":1142,"t":-8,"b":154,"r":1177},"ip":0,"op":73,"st":-7}]},{"id":"comp_3","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"linea1b","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[120.5,87,0]},"a":{"k":[-5,-49,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-71.5,-49],[59.5,-49]]}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[0],"e":[100]},{"t":47}]},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[0],"e":[100]},{"t":42}]},"o":{"k":0},"m":1,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-74,"t":-51,"b":-47,"r":62},"ip":24,"op":6320,"st":20},{"ddd":0,"ind":1,"ty":4,"nm":"linea1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[81.5,156.5,0]},"a":{"k":[-46,20.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-16.5,94],[-73.5,-48.5]]}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":32,"s":[0],"e":[100]},{"t":40}]},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":26,"s":[0],"e":[100]},{"t":33}]},"o":{"k":0},"m":1,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-42.25,30.25]},"a":{"k":[-42.25,30.25]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-76,"t":-51,"b":96,"r":-14},"ip":24,"op":6320,"st":20},{"ddd":0,"ind":2,"ty":4,"nm":"V_miscelanea9","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":31,"s":[100],"e":[0]},{"t":32}]},"r":{"k":0},"p":{"k":[173.5,77.5,0]},"a":{"k":[48.5,-60,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[48.125,-58.875],[48.375,-58.875]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[48.125,-58.875],[53.625,-69.625]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[48.125,-58.875],[53.625,-69.625]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[53.75,-69.75],[53.625,-69.625]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":46,"t":-72,"b":-56,"r":56},"ip":24,"op":32,"st":20},{"ddd":0,"ind":3,"ty":4,"nm":"V_miscelanea8","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":21,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":30,"s":[100],"e":[0]},{"t":31}]},"r":{"k":-15},"p":{"k":[60.125,64.375,0]},"a":{"k":[-28,-78,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-27.885,-77.396],[-27.846,-77.304]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28,-77.75],[-29.931,-86.728]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28,-77.75],[-29.931,-86.728]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-29.882,-86.666],[-29.931,-86.728]]}]},{"t":31}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-32,"t":-89,"b":-75,"r":-25},"ip":23,"op":31,"st":19},{"ddd":0,"ind":4,"ty":4,"nm":"V_miscelanea7","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":32,"s":[100],"e":[0]},{"t":33}]},"r":{"k":0},"p":{"k":[95.5,60,0]},"a":{"k":[-29.5,-77.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-27.531,-77.125],[-27.656,-77.125]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28,-77.75],[-30.75,-88.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28,-77.75],[-30.75,-88.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-30.906,-88.969],[-30.906,-88.969]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-33,"t":-91,"b":-75,"r":-25},"ip":26,"op":6322,"st":22},{"ddd":0,"ind":5,"ty":4,"nm":"V_miscelanea6","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":28,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":30,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":52,"s":[100],"e":[0]},{"t":55}]},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":28,"s":[0],"e":[-107]},{"t":57}]},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":28,"s":[93.588,88.564,0],"e":[71.088,31.564,0],"to":[-3.75,-9.5,0],"ti":[3.75,9.5,0]},{"t":55}]},"a":{"k":[27.647,13.058,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.621,6.001],[-4.578,-6.001],[5.621,0.933]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[29.493,12.751]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":23,"t":6,"b":19,"r":36},"ip":28,"op":6314,"st":14},{"ddd":0,"ind":6,"ty":4,"nm":"V_miscelanea5","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":23,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":25,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":45,"s":[100],"e":[0]},{"t":48}]},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":23,"s":[0],"e":[-91.625]},{"t":52}]},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":23,"s":[150.088,93.064,0],"e":[170.088,53.064,0],"to":[3.33333325386047,-6.66666650772095,0],"ti":[-3.33333325386047,6.66666650772095,0]},{"t":48}]},"a":{"k":[121.647,30.058,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-7.5,-6.163],[7.5,-6.163],[0,6.163]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[122.058,31.157]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":114,"t":24,"b":38,"r":130},"ip":23,"op":6314,"st":14},{"ddd":0,"ind":7,"ty":4,"nm":"V_miscelanea4","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":23,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":26,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":52,"s":[100],"e":[0]},{"t":55}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":23,"s":[119.588,85.564,0],"e":[119.588,63.064,0],"to":[0,-3.75,0],"ti":[0,3.75,0]},{"t":53}]},"a":{"k":[71.147,4.058,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-1.778],[1.778,0],[0,1.778],[-1.778,0]],"o":[[0,1.778],[-1.778,0],[0,-1.778],[1.778,0]],"v":[[3.22,0],[-0.001,3.22],[-3.22,0],[-0.001,-3.22]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[71.252,3.47]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":68,"t":0,"b":7,"r":75},"ip":23,"op":6314,"st":14},{"ddd":0,"ind":8,"ty":4,"nm":"V_miscelanea3","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":22,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":25,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":51,"s":[100],"e":[0]},{"t":54}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22,"s":[123.088,77.564,0],"e":[124.588,25.564,0],"to":[0.25,-8.66666698455811,0],"ti":[-0.25,8.66666698455811,0]},{"t":54}]},"a":{"k":[74.647,54.558,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-1.778],[1.778,0],[0,1.778],[-1.778,0]],"o":[[0,1.778],[-1.778,0],[0,-1.778],[1.778,0]],"v":[[3.22,0],[-0.001,3.22],[-3.22,0],[-0.001,-3.22]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[74.252,54.47]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":71,"t":51,"b":58,"r":78},"ip":22,"op":6314,"st":14},{"ddd":0,"ind":9,"ty":4,"nm":"V_miscelanea2","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":20,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":22,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":48,"s":[100],"e":[0]},{"t":50}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":20,"s":[84.588,73.064,0],"e":[74.588,43.064,0],"to":[-1.66666662693024,-5,0],"ti":[1.66666662693024,5,0]},{"t":50}]},"a":{"k":[36.147,50.058,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":20,"s":[0,0,100],"e":[105,105,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":26,"s":[105,105,100],"e":[100,100,100]},{"t":29}]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-2.769],[2.769,0],[0,2.769],[-2.769,0]],"o":[[0,2.769],[-2.769,0],[0,-2.769],[2.769,0]],"v":[[5.013,0],[0,5.013],[-5.013,0],[0,-5.013]]}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[36.045,50.264]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 10"}],"bounds":{"l":29,"t":43,"b":57,"r":43},"ip":20,"op":6314,"st":14},{"ddd":0,"ind":10,"ty":4,"nm":"V_miscelanea1","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":21,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":23,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":49,"s":[100],"e":[0]},{"t":51}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[143.588,55.314,0],"e":[146.088,42.814,0],"to":[0.41666665673256,-2.08333325386047,0],"ti":[-0.41666665673256,2.08333325386047,0]},{"t":49}]},"a":{"k":[92.647,25.058,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":21,"s":[0,0,100],"e":[105,105,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":27,"s":[105,105,100],"e":[100,100,100]},{"t":30}]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-2.769],[2.769,0],[0,2.769],[-2.769,0]],"o":[[0,2.769],[-2.769,0],[0,-2.769],[2.769,0]],"v":[[5.013,0],[0,5.013],[-5.013,0],[0,-5.013]]}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[93.045,25.264]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 11"}],"bounds":{"l":86,"t":18,"b":32,"r":100},"ip":21,"op":6314,"st":14},{"ddd":0,"ind":11,"ty":4,"nm":"Voriginal 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.41,148.975,0]},"a":{"k":[1054.727,64.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.257,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.663,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}],"e":[{"i":[[0,0],[26.863,10.402],[-16.87,2.506],[-24.357,2.203],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-35.823,-0.929],[-48.843,-1.006],[-18.637,-6.745],[-18.935,-6.744]],"o":[[0,0],[27.113,-7.098],[15.755,-7.619],[47.643,-2.547],[35.501,-2.081],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[40.177,-1.179],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[11.269,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.837,-74.533],[-6.765,-58.01],[-3.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":55,"s":[{"i":[[0,0],[26.863,10.402],[-16.87,2.506],[-24.357,2.203],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-35.823,-0.929],[-48.843,-1.006],[-18.637,-6.745],[-18.935,-6.744]],"o":[[0,0],[27.113,-7.098],[15.755,-7.619],[47.643,-2.547],[35.501,-2.081],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[40.177,-1.179],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[11.269,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.837,-74.533],[-6.765,-58.01],[-3.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}],"e":[{"i":[[0,0],[37.113,10.902],[-16.87,2.506],[-26.857,2.453],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-54.823,1.071],[-66.843,1.494],[-34.862,-2.656],[-34.685,-6.994]],"o":[[0,0],[45.613,-11.598],[35.379,-0.744],[61.143,-2.547],[48.751,-1.331],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[36.677,2.571],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[9.769,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.838,-74.533],[-2.265,-58.01],[-2.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[0,0],[37.113,10.902],[-16.87,2.506],[-26.857,2.453],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-54.823,1.071],[-66.843,1.494],[-34.862,-2.656],[-34.685,-6.994]],"o":[[0,0],[45.613,-11.598],[35.379,-0.744],[61.143,-2.547],[48.751,-1.331],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[36.677,2.571],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[9.769,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.838,-74.533],[-2.265,-58.01],[-2.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}],"e":[{"i":[[0,0],[-0.628,4.939],[-0.925,1.908],[-0.469,3.03],[-0.478,0.81],[0,0],[0,0],[1.258,-6.606],[1.356,-4.062],[0,0],[0,0],[2.201,6.129],[0.309,0.798],[0.353,0.544],[0,0],[0,0],[-3.921,-7.262],[-4.056,-7.475],[-2.772,-6.655],[-3.296,-7.492]],"o":[[0,0],[0.628,-4.939],[2.451,-5.058],[1.085,-7.006],[1.588,-2.687],[0,0],[0,0],[-0.331,1.738],[-1.356,4.062],[0,0],[0,0],[-2.201,-6.129],[-1.778,-4.597],[-1.847,-2.849],[0,0],[0,0],[1.29,2.389],[1.397,2.574],[1.295,3.109],[3.759,8.543]],"v":[[0.001,20.475],[9.784,-0.001],[15.961,-12.882],[27.327,-39.934],[35.824,-58.252],[43.414,-74.932],[79.647,-74.932],[74.67,-63.545],[63.768,-37.002],[14.15,74.932],[-14.149,74.932],[-62.887,-37.311],[-67.81,-48.842],[-74.241,-63.091],[-79.397,-74.932],[-43.163,-74.932],[-34.01,-54.701],[-23.644,-32.414],[-15.361,-14.595],[-7.332,3.865]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[{"i":[[0,0],[-0.628,4.939],[-0.925,1.908],[-0.469,3.03],[-0.478,0.81],[0,0],[0,0],[1.258,-6.606],[1.356,-4.062],[0,0],[0,0],[2.201,6.129],[0.309,0.798],[0.353,0.544],[0,0],[0,0],[-3.921,-7.262],[-4.056,-7.475],[-2.772,-6.655],[-3.296,-7.492]],"o":[[0,0],[0.628,-4.939],[2.451,-5.058],[1.085,-7.006],[1.588,-2.687],[0,0],[0,0],[-0.331,1.738],[-1.356,4.062],[0,0],[0,0],[-2.201,-6.129],[-1.778,-4.597],[-1.847,-2.849],[0,0],[0,0],[1.29,2.389],[1.397,2.574],[1.295,3.109],[3.759,8.543]],"v":[[0.001,20.475],[9.784,-0.001],[15.961,-12.882],[27.327,-39.934],[35.824,-58.252],[43.414,-74.932],[79.647,-74.932],[74.67,-63.545],[63.768,-37.002],[14.15,74.932],[-14.149,74.932],[-62.887,-37.311],[-67.81,-48.842],[-74.241,-63.091],[-79.397,-74.932],[-43.163,-74.932],[-34.01,-54.701],[-23.644,-32.414],[-15.361,-14.595],[-7.332,3.865]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[11.818,-9.068],[17.702,-23.778],[30.23,-55.098],[35.072,-67.203],[38.164,-74.932],[74.397,-74.932],[73.406,-72.468],[67.806,-58.538],[14.151,74.932],[-14.149,74.932],[-70.15,-64.369],[-71.545,-67.84],[-73.328,-72.273],[-74.397,-74.932],[-38.163,-74.932],[-33.742,-63.882],[-26.543,-45.883],[-19.453,-28.158],[-10.682,-6.231]]}]},{"t":67}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1050.405,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":971,"t":3,"b":154,"r":1131},"ip":50,"op":3751,"st":-6},{"ddd":0,"ind":12,"ty":4,"nm":"Voriginal 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.41,148.975,0]},"a":{"k":[1054.727,64.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.257,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.663,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":55,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,36.475],[-0.491,3.836],[-0.736,-12.417],[-1.256,-47.019],[-1.458,-60.393],[-1.586,-68.932],[74.397,-68.932],[73.406,-66.567],[67.806,-53.194],[14.151,74.932],[-14.149,74.932],[-70.15,-58.792],[-71.545,-62.124],[-73.328,-66.38],[-74.397,-68.932],[-0.662,-68.932],[-0.586,-56.724],[-0.461,-36.839],[-0.337,-17.255],[-0.185,6.97]]}],"e":[{"i":[[0,0],[26.863,10.402],[-16.87,2.506],[-24.357,2.203],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-35.823,-0.929],[-48.843,-1.006],[-18.637,-6.745],[-18.935,-6.744]],"o":[[0,0],[27.113,-7.098],[15.755,-7.619],[47.643,-2.547],[35.501,-2.081],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[40.177,-1.179],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[11.269,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.837,-74.533],[-6.765,-58.01],[-3.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[{"i":[[0,0],[26.863,10.402],[-16.87,2.506],[-24.357,2.203],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-35.823,-0.929],[-48.843,-1.006],[-18.637,-6.745],[-18.935,-6.744]],"o":[[0,0],[27.113,-7.098],[15.755,-7.619],[47.643,-2.547],[35.501,-2.081],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[40.177,-1.179],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[11.269,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.837,-74.533],[-6.765,-58.01],[-3.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}],"e":[{"i":[[0,0],[37.113,10.902],[-16.87,2.506],[-26.857,2.453],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-54.823,1.071],[-66.843,1.494],[-34.862,-2.656],[-34.685,-6.994]],"o":[[0,0],[45.613,-11.598],[35.379,-0.744],[61.143,-2.547],[48.751,-1.331],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[36.677,2.571],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[9.769,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.838,-74.533],[-2.265,-58.01],[-2.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[{"i":[[0,0],[37.113,10.902],[-16.87,2.506],[-26.857,2.453],[-38.999,-1.081],[0,0],[0,0],[0.755,-3.963],[0.814,-2.437],[0,0],[0,0],[1.321,3.677],[0.185,0.479],[0.212,0.326],[0,0],[0,0],[-54.823,1.071],[-66.843,1.494],[-34.862,-2.656],[-34.685,-6.994]],"o":[[0,0],[45.613,-11.598],[35.379,-0.744],[61.143,-2.547],[48.751,-1.331],[0,0],[0,0],[-0.199,1.043],[-0.814,2.437],[0,0],[0,0],[-1.321,-3.677],[-1.067,-2.758],[-1.108,-1.709],[0,0],[0,0],[36.677,2.571],[22.407,-0.506],[11.388,-0.656],[-30.935,13.756]],"v":[[0.001,26.875],[-0.201,6.659],[4.532,-13.696],[9.769,-33.393],[14.161,-57.109],[6.414,-74.533],[77.547,-72.533],[74.164,-64.754],[65.383,-43.479],[14.151,74.933],[-14.149,74.933],[-65.792,-45.903],[-69.304,-54.155],[-73.876,-64.406],[-77.397,-72.533],[6.838,-74.533],[-2.265,-58.01],[-2.246,-32.934],[-2.226,-12.784],[-0.903,6.554]]}],"e":[{"i":[[0,0],[-0.628,4.939],[-0.925,1.908],[-0.469,3.03],[-0.478,0.81],[0,0],[0,0],[-0.38,-6.714],[5.144,-18.938],[0,0],[0,0],[4.779,4.424],[0.629,0.58],[0.433,0.483],[0,0],[0,0],[-3.921,-7.262],[-4.056,-7.475],[-2.772,-6.655],[-3.296,-7.492]],"o":[[0,0],[0.628,-4.939],[2.451,-5.058],[1.085,-7.006],[1.588,-2.687],[0,0],[0,0],[0.742,13.106],[-1.123,4.133],[0,0],[0,0],[-7.701,-7.129],[-8.778,-8.097],[-4.347,-4.849],[0,0],[0,0],[1.29,2.389],[1.397,2.574],[1.295,3.109],[3.759,8.543]],"v":[[0.001,20.475],[9.784,-0.001],[15.961,-12.882],[27.327,-39.934],[35.824,-58.252],[43.414,-74.932],[83.647,-79.932],[78.67,-68.545],[63.768,-37.002],[14.15,74.932],[-14.149,74.932],[-63.387,-36.311],[-67.31,-49.342],[-73.741,-63.591],[-78.897,-75.432],[-43.163,-74.932],[-34.01,-54.701],[-23.644,-32.414],[-15.361,-14.595],[-7.332,3.865]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":66,"s":[{"i":[[0,0],[-0.628,4.939],[-0.925,1.908],[-0.469,3.03],[-0.478,0.81],[0,0],[0,0],[-0.38,-6.714],[5.144,-18.938],[0,0],[0,0],[4.779,4.424],[0.629,0.58],[0.433,0.483],[0,0],[0,0],[-3.921,-7.262],[-4.056,-7.475],[-2.772,-6.655],[-3.296,-7.492]],"o":[[0,0],[0.628,-4.939],[2.451,-5.058],[1.085,-7.006],[1.588,-2.687],[0,0],[0,0],[0.742,13.106],[-1.123,4.133],[0,0],[0,0],[-7.701,-7.129],[-8.778,-8.097],[-4.347,-4.849],[0,0],[0,0],[1.29,2.389],[1.397,2.574],[1.295,3.109],[3.759,8.543]],"v":[[0.001,20.475],[9.784,-0.001],[15.961,-12.882],[27.327,-39.934],[35.824,-58.252],[43.414,-74.932],[83.647,-79.932],[78.67,-68.545],[63.768,-37.002],[14.15,74.932],[-14.149,74.932],[-63.387,-36.311],[-67.31,-49.342],[-73.741,-63.591],[-78.897,-75.432],[-43.163,-74.932],[-34.01,-54.701],[-23.644,-32.414],[-15.361,-14.595],[-7.332,3.865]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[11.818,-9.068],[17.702,-23.778],[30.23,-55.098],[35.072,-67.203],[38.164,-74.932],[74.397,-74.932],[73.406,-72.468],[67.806,-58.538],[14.151,74.932],[-14.149,74.932],[-70.15,-64.369],[-71.545,-67.84],[-73.328,-72.273],[-74.397,-74.932],[-38.163,-74.932],[-33.742,-63.882],[-26.543,-45.883],[-19.453,-28.158],[-10.682,-6.231]]}]},{"t":72}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1050.405,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":971,"t":-2,"b":154,"r":1135},"ip":50,"op":72,"st":-1},{"ddd":0,"ind":13,"ty":4,"nm":"Voriginal","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.41,148.975,0]},"a":{"k":[1054.727,64.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[38.164,-74.932],[74.397,-74.932],[14.151,74.932],[-14.149,74.932],[-74.397,-74.932],[-38.163,-74.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[43.164,-74.932],[79.397,-74.932],[14.151,74.932],[-14.149,74.932],[-79.397,-74.932],[-43.163,-74.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[43.164,-74.932],[79.397,-74.932],[14.151,74.932],[-14.149,74.932],[-79.397,-74.932],[-43.163,-74.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[43.164,-74.932],[79.397,-74.932],[14.151,74.932],[-14.149,74.932],[-79.397,-74.932],[-43.163,-74.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[43.164,-74.932],[79.397,-74.932],[14.151,74.932],[-14.149,74.932],[-79.397,-74.932],[-43.163,-74.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[0.664,-74.932],[8.897,-74.932],[6.151,74.932],[-6.149,74.932],[-6.647,-74.932],[1.588,-74.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[0.664,-74.932],[8.897,-74.932],[6.151,74.932],[-6.149,74.932],[-6.647,-74.932],[1.588,-74.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[0.664,-74.932],[8.897,-74.932],[6.151,74.932],[-6.149,74.932],[-6.647,-74.932],[1.588,-74.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[0.664,-74.932],[8.897,-74.932],[6.151,74.932],[-6.149,74.932],[-6.647,-74.932],[1.588,-74.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[0.664,-54.932],[33.897,-54.932],[11.151,74.932],[-11.149,74.932],[-31.647,-54.932],[1.588,-54.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,20.475],[0.664,-54.932],[33.897,-54.932],[11.151,74.932],[-11.149,74.932],[-31.647,-54.932],[1.588,-54.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.001,29.117],[6.021,-59.575],[39.861,-59.575],[11.579,73.504],[-11.578,73.504],[-37.932,-59.575],[-4.091,-59.575]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.001,29.117],[6.021,-59.575],[39.861,-59.575],[11.579,73.504],[-11.578,73.504],[-37.932,-59.575],[-4.091,-59.575]]}],"e":[{"i":[[-10.92,0.38],[-6.252,-1.007],[0,0],[0,0],[0,0],[0,0],[-15.497,1.63]],"o":[[11.911,-0.414],[10.129,1.632],[0,0],[0,0],[0,0],[0,0],[9.574,-1.007]],"v":[[2.001,-92.025],[39.164,-90.432],[75.647,-87.432],[14.151,64.932],[-14.149,64.932],[-75.647,-87.432],[-38.663,-90.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-10.92,0.38],[-6.252,-1.007],[0,0],[0,0],[0,0],[0,0],[-15.497,1.63]],"o":[[11.911,-0.414],[10.129,1.632],[0,0],[0,0],[0,0],[0,0],[9.574,-1.007]],"v":[[2.001,-92.025],[39.164,-90.432],[75.647,-87.432],[14.151,64.932],[-14.149,64.932],[-75.647,-87.432],[-38.663,-90.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,-64.525],[38.164,-64.932],[74.397,-64.932],[14.151,74.932],[-14.149,74.932],[-74.397,-64.932],[-38.163,-64.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,-64.525],[38.164,-64.932],[74.397,-64.932],[14.151,74.932],[-14.149,74.932],[-74.397,-64.932],[-38.163,-64.932]]}],"e":[{"i":[[-17.411,-0.086],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[17.411,0.086],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.499,-82.025],[38.164,-79.932],[74.397,-74.932],[14.151,74.932],[-14.149,74.932],[-74.397,-74.932],[-38.163,-79.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-17.411,-0.086],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[17.411,0.086],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.499,-82.025],[38.164,-79.932],[74.397,-74.932],[14.151,74.932],[-14.149,74.932],[-74.397,-74.932],[-38.163,-79.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,-66.525],[38.164,-66.932],[74.397,-66.932],[14.151,74.932],[-14.149,74.932],[-74.397,-66.932],[-38.163,-66.932]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,-66.525],[38.164,-66.932],[74.397,-66.932],[14.151,74.932],[-14.149,74.932],[-74.397,-66.932],[-38.163,-66.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,-68.525],[38.164,-68.932],[74.397,-68.932],[14.151,74.932],[-14.149,74.932],[-74.397,-68.932],[-38.163,-68.932]]}]},{"t":50}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1050.405,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":971,"t":-14,"b":154,"r":1130},"ip":0,"op":50,"st":0}]},{"id":"comp_4","layers":[{"ddd":0,"ind":0,"ty":0,"nm":"MiscelaneasO2","refId":"comp_5","ks":{"o":{"k":100},"r":{"k":180},"p":{"k":[134,237.5,0]},"a":{"k":[138.5,90,0]},"s":{"k":[100,100,100]}},"w":277,"h":180,"ip":15,"op":6315,"st":15},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 3","ks":{"o":{"k":100},"r":{"k":25},"p":{"k":[79,83,0]},"a":{"k":[163,-47.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[164.5,-45.75],[164.5,-45.75]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[163,-47.5],[155.5,-60.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[163,-47.5],[155.5,-60.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[154.75,-61.5],[154.75,-61.25]]}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":152,"t":-64,"b":-43,"r":167},"ip":14,"op":22,"st":-12},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","ks":{"o":{"k":100},"r":{"k":-27},"p":{"k":[60.5,94.5,0]},"a":{"k":[163,-47.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[164.5,-45.75],[164.5,-45.75]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[163,-47.5],[155.5,-60.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[163,-47.5],[155.5,-60.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[154.75,-61.5],[154.75,-61.25]]}]},{"t":20}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[79,178,156,255]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":152,"t":-64,"b":-43,"r":167},"ip":12,"op":20,"st":-16},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[69,88,0]},"a":{"k":[163,-47.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[164.5,-45.75],[164.5,-45.75]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[163,-47.5],[155.5,-60.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[163,-47.5],[155.5,-60.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[154.75,-61.5],[154.75,-61.25]]}]},{"t":21}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":152,"t":-64,"b":-43,"r":167},"ip":13,"op":21,"st":-15},{"ddd":0,"ind":4,"ty":0,"nm":"O_mask","refId":"comp_6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"hasMask":true,"masksProperties":[{"cl":true,"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[53.586,0],[0,-49.776],[-52.43,0],[0,49.776]],"o":[[-52.719,0],[0,49.776],[53.875,0],[0,-49.776]],"v":[[128.561,71.553],[38,160.092],[128.272,250.22],[221,160.02]]}],"e":[{"i":[[46.375,0],[0,-43.078],[-45.375,0],[0,43.078]],"o":[[-45.625,0],[0,43.078],[46.625,0],[0,-43.078]],"v":[[126.875,85.344],[48.5,161.969],[126.625,239.969],[206.875,161.906]]}]},{"t":20}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"w":250,"h":275,"ip":0,"op":6300,"st":0}]},{"id":"comp_5","layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Null 1","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[936.5,173,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ip":0,"op":6300,"st":0},{"ddd":0,"ind":1,"ty":4,"nm":"V_miscelanea5","parent":0,"ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":8.865,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":10.108,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":22.541,"s":[100],"e":[0]},{"t":24.4052734375}]},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":8.865,"s":[0],"e":[-91.625]},{"t":26.8916015625}]},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":8.865,"s":[-759.912,-44.436,0],"e":[-739.912,-84.436,0],"to":[3.33333325386047,-6.66666650772095,0],"ti":[-3.33333325386047,6.66666650772095,0]},{"t":24.4052734375}]},"a":{"k":[121.647,30.058,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-7.5,-6.163],[7.5,-6.163],[0,6.163]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[122.058,31.157]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":114,"t":24,"b":38,"r":130},"ip":10,"op":6301,"st":1},{"ddd":0,"ind":2,"ty":4,"nm":"V_miscelanea1","parent":0,"ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":7.622,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":8.865,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":25.027,"s":[100],"e":[0]},{"t":26.2705078125}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7.622,"s":[-766.412,-82.186,0],"e":[-763.912,-94.686,0],"to":[0.41666665673256,-2.08333325386047,0],"ti":[-0.41666665673256,2.08333325386047,0]},{"t":25.02734375}]},"a":{"k":[92.647,25.058,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":7.622,"s":[0,0,100],"e":[105,105,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":11.352,"s":[105,105,100],"e":[100,100,100]},{"t":13.2158203125}]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-2.769],[2.769,0],[0,2.769],[-2.769,0]],"o":[[0,2.769],[-2.769,0],[0,-2.769],[2.769,0]],"v":[[5.013,0],[0,5.013],[-5.013,0],[0,-5.013]]}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[93.045,25.264]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 11"}],"bounds":{"l":86,"t":18,"b":32,"r":100},"ip":8,"op":6301,"st":1},{"ddd":0,"ind":3,"ty":4,"nm":"V_miscelanea4","parent":0,"ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":8.865,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":10.729,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":26.892,"s":[100],"e":[0]},{"t":28.7568359375}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":8.865,"s":[-790.412,-51.936,0],"e":[-790.412,-74.436,0],"to":[0,-3.75,0],"ti":[0,3.75,0]},{"t":27.513671875}]},"a":{"k":[71.147,4.058,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-1.778],[1.778,0],[0,1.778],[-1.778,0]],"o":[[0,1.778],[-1.778,0],[0,-1.778],[1.778,0]],"v":[[3.22,0],[-0.001,3.22],[-3.22,0],[-0.001,-3.22]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[71.252,3.47]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":68,"t":0,"b":7,"r":75},"ip":10,"op":6301,"st":1},{"ddd":0,"ind":4,"ty":4,"nm":"V_miscelanea3","parent":0,"ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":8.243,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":10.108,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":26.271,"s":[100],"e":[0]},{"t":28.134765625}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":8.243,"s":[-786.912,-59.936,0],"e":[-785.412,-111.936,0],"to":[0.25,-8.66666698455811,0],"ti":[-0.25,8.66666698455811,0]},{"t":28.134765625}]},"a":{"k":[74.647,54.558,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-1.778],[1.778,0],[0,1.778],[-1.778,0]],"o":[[0,1.778],[-1.778,0],[0,-1.778],[1.778,0]],"v":[[3.22,0],[-0.001,3.22],[-3.22,0],[-0.001,-3.22]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[74.252,54.47]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":71,"t":51,"b":58,"r":78},"ip":9,"op":6301,"st":1},{"ddd":0,"ind":5,"ty":4,"nm":"V_miscelanea6","parent":0,"ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":17.757,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":19,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":29.892,"s":[100],"e":[0]},{"t":31.7568359375}]},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":17.757,"s":[0],"e":[-107]},{"t":33}]},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":17.757,"s":[-816.412,-48.936,0],"e":[-827.912,-78.936,0],"to":[-1.91666662693024,-5,0],"ti":[1.91666662693024,5,0]},{"t":32}]},"a":{"k":[27.647,13.058,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.621,6.001],[-4.578,-6.001],[5.621,0.933]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[91,89,130,255],"e":[204,69,51,255]},{"t":26}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[29.493,12.751]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":23,"t":6,"b":19,"r":36},"ip":15,"op":6301,"st":1},{"ddd":0,"ind":6,"ty":4,"nm":"V_miscelanea2","parent":0,"ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":7,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_0p667_0p167_0p167"],"t":8.243,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":24.405,"s":[100],"e":[0]},{"t":25.6484375}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":7,"s":[-825.412,-64.436,0],"e":[-835.412,-94.436,0],"to":[-1.66666662693024,-5,0],"ti":[1.66666662693024,5,0]},{"t":25.6484375}]},"a":{"k":[36.147,50.058,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":7,"s":[0,0,100],"e":[105,105,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":10.729,"s":[105,105,100],"e":[100,100,100]},{"t":12.5947265625}]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,-2.769],[2.769,0],[0,2.769],[-2.769,0]],"o":[[0,2.769],[-2.769,0],[0,-2.769],[2.769,0]],"v":[[5.013,0],[0,5.013],[-5.013,0],[0,-5.013]]}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[36.045,50.264]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 10"}],"bounds":{"l":29,"t":43,"b":57,"r":43},"ip":7,"op":6301,"st":1}]},{"id":"comp_6","layers":[{"ddd":0,"ind":2,"ty":4,"nm":"O2 9","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[116.876,163.014,0]},"a":{"k":[89.33,96.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-0.845,0.16],[-0.947,-0.135],[-1.979,-2.778],[3.259,0.883],[-5.808,1.788],[2.317,-0.171],[1.462,-1.617],[0.215,-0.604],[-1.13,-0.345]],"o":[[2.632,-0.384],[0.981,0.399],[1.271,1.472],[-4.532,-1.228],[3.442,-3.462],[-4.725,0.349],[-1.418,1.568],[0.965,2.146],[0.577,0.329]],"v":[[-27.371,-29.27],[-23.019,-30.475],[-18.488,-27.582],[-17.185,-30.882],[-16.159,-35.148],[-21.534,-36.439],[-30.548,-33.428],[-32.431,-30.006],[-30.794,-27.189]]}],"e":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}],"e":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}],"e":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}],"e":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}],"e":[{"i":[[6.905,-16.09],[-7.197,-36.385],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[6.825,6.354],[12.715,-18.354],[4.883,-2.449]],"o":[[-4.883,11.38],[1.898,9.597],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-3.418,-3.182],[-3.285,6.146],[-4.33,2.171]],"v":[[14.629,124.73],[21.73,166.025],[45.513,138.418],[68.566,128.618],[99.841,144.852],[114.966,134.561],[103.952,117.322],[74.818,91.994],[47.206,105.811]]}]},{"t":55}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[122.421,128.515]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":80,"t":86,"b":296,"r":239},"ip":35,"op":72,"st":35},{"ddd":0,"ind":3,"ty":4,"nm":"O2 7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[121.376,164.514,0]},"a":{"k":[90.33,96.669,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-0.845,0.16],[-0.947,-0.135],[-1.979,-2.778],[3.259,0.883],[-5.808,1.788],[2.317,-0.171],[1.462,-1.617],[0.215,-0.604],[-1.13,-0.345]],"o":[[2.632,-0.384],[0.981,0.399],[1.271,1.472],[-4.532,-1.228],[3.442,-3.462],[-4.725,0.349],[-1.418,1.568],[0.965,2.146],[0.577,0.329]],"v":[[-27.371,-29.27],[-23.019,-30.475],[-18.488,-27.582],[-17.185,-30.882],[-16.159,-35.148],[-21.534,-36.439],[-30.548,-33.428],[-32.431,-30.006],[-30.794,-27.189]]}],"e":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}],"e":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}],"e":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[6.618,-0.616],[4.215,-1.854],[4.43,-7.423]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-3.418,0.318],[-4.785,3.146],[-4.673,7.829]],"v":[[29.629,84.23],[15.73,119.025],[42.512,129.418],[55.566,92.618],[82.341,106.852],[65.466,67.061],[46.452,37.822],[31.319,32.494],[30.206,49.811]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":55,"s":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[6.618,-0.616],[4.215,-1.854],[4.43,-7.423]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-3.418,0.318],[-4.785,3.146],[-4.673,7.829]],"v":[[29.629,84.23],[15.73,119.025],[42.512,129.418],[55.566,92.618],[82.341,106.852],[65.466,67.061],[46.452,37.822],[31.319,32.494],[30.206,49.811]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-5.285,5.646],[-2.173,4.329]],"v":[[38.129,104.23],[28.73,136.025],[55.512,146.418],[68.566,109.618],[95.341,123.852],[82.967,99.561],[67.452,80.322],[56.319,71.494],[52.206,82.311]]}]},{"t":56}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[122.421,128.515]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":80,"t":86,"b":275,"r":220},"ip":29,"op":72,"st":29},{"ddd":0,"ind":4,"ty":4,"nm":"O2 12","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.876,167.014,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[-4.893,5.898],[-11.523,-0.558],[-11.589,1.024],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[19.975,0.967],[17.667,-1.562],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-73.687,30.765],[-27.35,30.316],[38.708,25.345],[106.26,19.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":57,"s":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":65,"s":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":69,"s":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.768,13.867],[-29.556,30.034],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[30.475,-23.782],[24.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-58.35,-123.684],[50.708,-144.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"t":73}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[92.83,145.621]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":-10,"t":-8,"b":204,"r":210},"ip":49,"op":72,"st":41},{"ddd":0,"ind":5,"ty":4,"nm":"O2 11","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[118.376,161.014,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-0.845,0.16],[-0.947,-0.135],[-1.979,-2.778],[3.259,0.883],[-5.808,1.788],[2.317,-0.171],[1.462,-1.617],[0.215,-0.604],[-1.13,-0.345]],"o":[[2.632,-0.384],[0.981,0.399],[1.271,1.472],[-4.532,-1.228],[3.442,-3.462],[-4.725,0.349],[-1.418,1.568],[0.965,2.146],[0.577,0.329]],"v":[[-27.371,-29.27],[-23.019,-30.475],[-18.488,-27.582],[-17.185,-30.882],[-16.159,-35.148],[-21.534,-36.439],[-30.548,-33.428],[-32.431,-30.006],[-30.794,-27.189]]}],"e":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}],"e":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}],"e":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-5.285,5.646],[-2.173,4.329]],"v":[[29.629,87.73],[20.23,119.525],[47.012,129.918],[60.066,93.118],[86.841,107.352],[74.467,83.061],[58.952,63.822],[47.819,54.994],[43.706,65.811]]}]},{"t":57}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[122.921,131.015]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":81,"t":88,"b":261,"r":212},"ip":41,"op":73,"st":41},{"ddd":0,"ind":6,"ty":4,"nm":"O2 8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.376,164.514,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[-4.893,5.898],[-11.523,-0.558],[-11.589,1.024],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[19.975,0.967],[17.667,-1.562],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-73.687,30.765],[-27.35,30.316],[38.708,25.345],[106.26,19.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":57,"s":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.768,13.867],[-29.556,30.034],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[30.475,-23.782],[24.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-58.35,-123.684],[50.708,-144.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"t":61}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[92.83,145.621]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":-10,"t":-8,"b":204,"r":210},"ip":37,"op":72,"st":29},{"ddd":0,"ind":7,"ty":4,"nm":"O2 10","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.376,164.514,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-4.893,5.898],[-11.523,-0.558],[-11.589,1.024],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[19.975,0.967],[17.667,-1.562],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-73.687,30.765],[-27.35,30.316],[38.708,25.345],[106.26,19.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":55,"s":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":59,"s":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":63,"s":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.768,13.867],[-29.556,30.034],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[30.475,-23.782],[24.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-58.35,-123.684],[50.708,-144.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"t":67}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[92.83,145.621]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":-10,"t":-8,"b":204,"r":210},"ip":43,"op":72,"st":35},{"ddd":0,"ind":8,"ty":4,"nm":"O2 6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.876,167.014,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-4.893,5.898],[-11.523,-0.558],[-11.589,1.024],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[19.975,0.967],[17.667,-1.562],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-73.687,30.765],[-27.35,30.316],[38.708,25.345],[106.26,19.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.768,13.867],[-29.556,30.034],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[30.475,-23.782],[24.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-58.35,-123.684],[50.708,-144.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"t":55}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[92.83,145.621]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":-10,"t":-8,"b":204,"r":210},"ip":31,"op":72,"st":23},{"ddd":0,"ind":9,"ty":4,"nm":"O2 5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.876,167.014,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.845,0.16],[-0.947,-0.135],[-1.979,-2.778],[3.259,0.883],[-5.808,1.788],[2.317,-0.171],[1.462,-1.617],[0.215,-0.604],[-1.13,-0.345]],"o":[[2.632,-0.384],[0.981,0.399],[1.271,1.472],[-4.532,-1.228],[3.442,-3.462],[-4.725,0.349],[-1.418,1.568],[0.965,2.146],[0.577,0.329]],"v":[[-27.371,-29.27],[-23.019,-30.475],[-18.488,-27.582],[-17.185,-30.882],[-16.159,-35.148],[-21.534,-36.439],[-30.548,-33.428],[-32.431,-30.006],[-30.794,-27.189]]}],"e":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-5.501,-0.331],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[7.401,-0.844],[1.137,-1.492],[-0.636,-0.996]],"o":[[2.655,0.16],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-7.168,0.818],[-2.035,1.396],[1.327,2.079]],"v":[[-25.871,-30.77],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-20.048,-38.928],[-32.931,-33.256],[-34.794,-28.189]]}],"e":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[7.011,-2.729],[-1.18,0.056]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[-4.785,3.646],[3.577,-0.171]],"v":[[-23.121,-24.02],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-0.798,-38.678],[-31.181,-37.506],[-38.044,-29.189]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}],"e":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}],"e":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-5.285,5.646],[-2.173,4.329]],"v":[[8.629,57.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[37.952,33.822],[26.819,24.994],[22.706,35.811]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[122.921,131.015]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":81,"t":88,"b":231,"r":191},"ip":23,"op":72,"st":23},{"ddd":0,"ind":10,"ty":4,"nm":"O2 4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.876,167.014,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-4.893,5.898],[-11.523,-0.558],[-11.589,1.024],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[19.975,0.967],[17.667,-1.562],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-73.687,30.765],[-27.35,30.316],[38.708,25.345],[106.26,19.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-4.893,5.898],[-10.811,-4.028],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[35.475,13.218],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-78.687,12.765],[-32.35,12.316],[39.708,-1.655],[108.26,3.062],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-4.893,5.898],[-22.525,-0.782],[-11.014,3.747],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[37.834,1.314],[49.417,-16.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-85.687,-14.235],[-33.35,-12.684],[45.708,-28.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[-4.893,5.898],[-21.798,-5.73],[-41.583,-6.812],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[46.475,12.217],[53.189,8.713],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-94.687,-26.235],[-45.35,-33.684],[50.708,-44.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-4.893,5.898],[-17.302,14.445],[-34.181,24.642],[-10.385,-1.779],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[34.475,-28.782],[34.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-99.687,-65.235],[-41.35,-60.684],[60.708,-74.655],[116.26,-56.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[-4.893,5.898],[-21.475,-6.844],[-40.914,-10.079],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[41.475,13.218],[45.417,11.188],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-42.35,-99.684],[50.708,-111.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}],"e":[{"i":[[-4.893,5.898],[-17.768,13.867],[-29.556,30.034],[-10.385,-1.778],[8.066,-5.376],[8.404,6.14]],"o":[[3.886,-4.684],[30.475,-23.782],[24.417,-24.812],[0.538,0.092],[-13.402,8.932],[-8.296,-6.063]],"v":[[-101.687,-82.235],[-58.35,-123.684],[50.708,-144.655],[115.26,-127.938],[93.432,53.034],[-41.876,49.2]]}]},{"t":49}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[92.83,145.621]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":-10,"t":-8,"b":204,"r":210},"ip":25,"op":72,"st":17},{"ddd":0,"ind":11,"ty":4,"nm":"O2 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.876,167.014,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-0.845,0.16],[-0.947,-0.135],[-1.979,-2.778],[3.259,0.883],[-5.808,1.788],[2.317,-0.171],[1.462,-1.617],[0.215,-0.604],[-1.13,-0.345]],"o":[[2.632,-0.384],[0.981,0.399],[1.271,1.472],[-4.532,-1.228],[3.442,-3.462],[-4.725,0.349],[-1.418,1.568],[0.965,2.146],[0.577,0.329]],"v":[[-27.371,-29.27],[-23.019,-30.475],[-18.488,-27.582],[-17.185,-30.882],[-16.159,-35.148],[-21.534,-36.439],[-30.548,-33.428],[-32.431,-30.006],[-30.794,-27.189]]}],"e":[{"i":[[-3.72,-0.09],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[2.821,-3.904],[-0.683,-3.497],[1.452,-3.671]],"o":[[2.659,0.064],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-2.668,3.693],[0.59,3.021],[-0.925,2.34]],"v":[[-24.496,-29.895],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-17.798,-40.428],[-25.681,-40.256],[-33.044,-34.064]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-3.72,-0.09],[-2.023,-2.064],[-2.729,-0.278],[-5.532,0.772],[-2.308,3.788],[-0.098,5.39],[2.821,-3.904],[-0.683,-3.497],[1.452,-3.671]],"o":[[2.659,0.064],[3.053,3.115],[4.521,1.472],[3.752,-0.524],[1.942,-3.962],[0.067,-3.671],[-2.668,3.693],[0.59,3.021],[-0.925,2.34]],"v":[[-24.496,-29.895],[-16.769,-27.475],[-11.988,-17.082],[-5.935,-23.632],[-5.659,-31.148],[0.216,-35.939],[-17.798,-40.428],[-25.681,-40.256],[-33.044,-34.064]]}],"e":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[-0.965,-5.521],[0.298,-2.954]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[0.965,5.521],[-0.298,2.954]],"v":[[-22.121,-24.77],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-1.423,-37.553],[-22.556,-38.631],[-30.794,-31.564]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-4.345,-2.84],[-1.947,-7.635],[-3.979,-4.278],[-11.032,-2.978],[-3.558,5.038],[10.567,12.579],[7.332,1.318],[-0.965,-5.521],[0.298,-2.954]],"o":[[4.975,3.252],[2.071,8.123],[15.354,0],[11.593,3.13],[5.442,-4.962],[-8.351,-9.941],[-11.227,-2.018],[0.965,5.521],[-0.298,2.954]],"v":[[-22.121,-24.77],[-13.019,-5.225],[-7.487,19.418],[6.065,5.618],[18.091,-9.398],[25.466,-23.939],[-1.423,-37.553],[-22.556,-38.631],[-30.794,-31.564]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[10.082,3.943],[8.715,4.771],[0.452,-2.796]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.624,-4.155],[-4.43,-2.425],[-0.618,3.822]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.092,7.102],[40.967,-0.939],[1.327,-34.928],[-13.556,-35.756],[-27.044,-32.314]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[10.082,3.943],[8.715,4.771],[0.452,-2.796]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.624,-4.155],[-4.43,-2.425],[-0.618,3.822]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.092,7.102],[40.967,-0.939],[1.327,-34.928],[-13.556,-35.756],[-27.044,-32.314]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[2.215,-1.354],[1.702,-3.046]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-4.213,2.575],[-1.6,2.863]],"v":[[-19.996,-21.645],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[3.077,-36.178],[-11.056,-33.006],[-25.294,-32.814]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[2.215,-1.354],[1.702,-3.046]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-4.213,2.575],[-1.6,2.863]],"v":[[-19.996,-21.645],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[3.077,-36.178],[-11.056,-33.006],[-25.294,-32.814]]}],"e":[{"i":[[-5.72,-4.34],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[3.215,-2.229],[2.077,-4.796]],"o":[[4.911,3.726],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-3.41,2.521],[-2.619,6.048]],"v":[[-19.996,-22.02],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.327,-37.053],[-5.931,-31.006],[-15.294,-28.814]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-5.72,-4.34],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[3.215,-2.229],[2.077,-4.796]],"o":[[4.911,3.726],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-3.41,2.521],[-2.619,6.048]],"v":[[-19.996,-22.02],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.327,-37.053],[-5.931,-31.006],[-15.294,-28.814]]}],"e":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-2.369,-4.349],[-0.241,-5.938],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.179,2.63],[17.609,7.05],[7.011,-2.729],[-1.181,-0.04]],"o":[[2.843,5.219],[0.659,16.26],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-7.76,-17.308],[-10.59,-4.24],[-10.41,5.396],[6.387,0.216]],"v":[[-20.621,-21.52],[-17.019,-4.225],[-19.987,44.418],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[1.702,-40.178],[-33.681,-38.506],[-38.544,-28.689]]}],"e":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-0.595,-7.59],[-1.947,-9.635],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[2.505,1.425],[14.832,13.068],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[3.223,15.951],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-15.683,-8.921],[-8.559,-7.541],[-10.41,5.396],[6.369,-0.533]],"v":[[-20.621,-21.52],[-22.02,3.025],[-19.987,46.918],[17.065,34.118],[44.091,7.102],[40.966,-0.939],[4.952,-37.678],[-33.681,-38.506],[-37.044,-29.939]]}],"e":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-0.595,-7.59],[1.553,-9.385],[2.62,-16.06],[-10.752,5.657],[-5.391,12.294],[1.101,2.664],[15.832,8.818],[7.011,-2.729],[-6.923,0.579]],"o":[[0.482,6.145],[-2.657,16.055],[15.354,0],[11.457,-6.028],[-0.917,-2.724],[-6.683,-16.171],[-9.966,-5.551],[-10.41,5.396],[6.369,-0.533]],"v":[[-22.871,-20.77],[-18.77,3.525],[-19.987,46.918],[17.065,34.118],[44.841,10.852],[36.966,0.061],[4.952,-37.678],[-31.681,-38.506],[-36.294,-29.689]]}],"e":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[12.442,-1.857],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[6.873,1.01]],"o":[[-6.095,0.91],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-18.173,-2.671]],"v":[[-12.371,-7.27],[-9.77,60.525],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.966,33.561],[11.952,-24.178],[-10.181,-39.006],[-5.294,-21.689]]}],"e":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[10.763,-6.512],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[5.082,7.818],[7.715,-3.854],[8.827,0.329]],"o":[[-10.595,6.41],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-4.633,-7.127],[-4.285,6.146],[-20.94,-0.78]],"v":[[-0.371,4.73],[0.23,65.025],[7.513,63.918],[39.066,63.118],[65.841,77.352],[42.967,33.561],[23.452,-0.178],[1.819,-32.006],[3.206,-7.189]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-6.785,1.646],[-2.173,4.329]],"v":[[14.129,37.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[29.452,7.822],[21.319,17.994],[-0.294,12.311]]}],"e":[{"i":[[-5.095,-19.59],[12.303,-48.885],[2.62,-16.06],[-10.752,5.657],[-3.808,-2.712],[4.567,6.079],[7.226,5.894],[4.215,-1.854],[3.878,-7.726]],"o":[[3.117,11.984],[-2.388,9.487],[15.354,0],[11.457,-6.028],[7.192,-8.212],[-9.44,-12.565],[-9.418,-7.682],[-5.285,5.646],[-2.173,4.329]],"v":[[8.629,57.73],[-0.77,89.525],[26.012,99.918],[39.066,63.118],[65.841,77.352],[53.467,53.061],[37.952,33.822],[26.819,24.994],[22.706,35.811]]}]},{"t":42}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[122.921,131.015]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":81,"t":88,"b":231,"r":191},"ip":17,"op":72,"st":17},{"ddd":0,"ind":12,"ty":4,"nm":"gotaRosa2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[150.002,154.023,0]},"a":{"k":[141.817,27.277,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":73,"s":[{"i":[[-3.229,0.044],[-1.486,-1.208]],"o":[[5.379,-0.073],[1.24,1.008]],"v":[[-1.852,12.097],[-3.463,0.016]]}],"e":[{"i":[[-5.621,0.552],[1.84,-0.531]],"o":[[7.972,-0.783],[-1.76,0.508]],"v":[[5.148,21.472],[0.787,-3.984]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":77,"s":[{"i":[[-5.621,0.552],[1.84,-0.531]],"o":[[7.972,-0.783],[-1.76,0.508]],"v":[[5.148,21.472],[0.787,-3.984]]}],"e":[{"i":[[-11.121,1.052],[1.84,-0.531]],"o":[[10.342,-0.978],[-1.76,0.508]],"v":[[6.648,57.472],[1.787,6.516]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":79,"s":[{"i":[[-11.121,1.052],[1.84,-0.531]],"o":[[10.342,-0.978],[-1.76,0.508]],"v":[[6.648,57.472],[1.787,6.516]]}],"e":[{"i":[[-2.121,1.052],[1.84,-0.531]],"o":[[1.684,-0.835],[-1.76,0.508]],"v":[[8.148,83.972],[7.787,74.516]]}]},{"t":82}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[141.289,28.73]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 10"}],"bounds":{"l":137,"t":24,"b":113,"r":152},"ip":73,"op":82,"st":59},{"ddd":0,"ind":13,"ty":4,"nm":"gotaRosa1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[150.002,154.023,0]},"a":{"k":[141.817,27.277,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":70,"s":[{"i":[[0.168,2.349],[-1.915,-0.012]],"o":[[-0.121,-1.698],[1.24,0.008]],"v":[[-2.852,-2.278],[-5.338,-1.609]]}],"e":[{"i":[[-1.1,3.036],[-1.486,-1.208]],"o":[[1.006,-2.777],[1.24,1.008]],"v":[[4.648,6.097],[-3.463,2.516]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":72,"s":[{"i":[[-1.1,3.036],[-1.486,-1.208]],"o":[[1.006,-2.777],[1.24,1.008]],"v":[[4.648,6.097],[-3.463,2.516]]}],"e":[{"i":[[-4.121,2.302],[-0.983,-1.643]],"o":[[6.485,-3.622],[5.24,8.758]],"v":[[14.648,17.972],[5.287,-3.984]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":76,"s":[{"i":[[-4.121,2.302],[-0.983,-1.643]],"o":[[6.485,-3.622],[5.24,8.758]],"v":[[14.648,17.972],[5.287,-3.984]]}],"e":[{"i":[[-4.626,0.943],[-0.98,-1.645]],"o":[[5.879,-1.198],[15.49,26.008]],"v":[[23.398,35.722],[5.287,-3.984]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":78,"s":[{"i":[[-4.626,0.943],[-0.98,-1.645]],"o":[[5.879,-1.198],[15.49,26.008]],"v":[[23.398,35.722],[5.287,-3.984]]}],"e":[{"i":[[-0.556,0.21],[-0.245,-0.438]],"o":[[0.682,-0.258],[0.587,1.05]],"v":[[30.57,44.564],[29.952,43.462]]}]},{"t":81}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[141.289,28.73]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 10"}],"bounds":{"l":135,"t":24,"b":74,"r":173},"ip":70,"op":81,"st":58},{"ddd":0,"ind":14,"ty":4,"nm":"boca","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.876,167.014,0]},"a":{"k":[92.83,99.169,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":14,"s":[{"i":[[0.195,14.013],[0,-25.949]],"o":[[-0.329,-23.692],[0,14.014]],"v":[[46.038,-14.125],[-34.501,-13.425]]}],"e":[{"i":[[2.186,30.918],[-1.025,-24.728]],"o":[[-1.593,-22.542],[2,48.251]],"v":[[55.595,-10.893],[-45.219,-8.225]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[2.186,30.918],[-1.025,-24.728]],"o":[[-1.593,-22.542],[2,48.251]],"v":[[55.595,-10.893],[-45.219,-8.225]]}],"e":[{"i":[[0.581,25.007],[-5,-30.749]],"o":[[-0.814,-35.082],[4.56,28.041]],"v":[[44.595,4.107],[-27.219,9.775]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":20,"s":[{"i":[[0.581,25.007],[-5,-30.749]],"o":[[-0.814,-35.082],[4.56,28.041]],"v":[[44.595,4.107],[-27.219,9.775]]}],"e":[{"i":[[-0.178,25.013],[-5,-26.749]],"o":[[0.186,-26.082],[5.22,27.926]],"v":[[44.595,4.107],[-27.219,9.775]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":23,"s":[{"i":[[-0.178,25.013],[-5,-26.749]],"o":[[0.186,-26.082],[5.22,27.926]],"v":[[44.595,4.107],[-27.219,9.775]]}],"e":[{"i":[[0.581,25.007],[-5,-30.749]],"o":[[-0.814,-35.082],[4.56,28.041]],"v":[[44.595,4.107],[-27.219,9.775]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":26,"s":[{"i":[[0.581,25.007],[-5,-30.749]],"o":[[-0.814,-35.082],[4.56,28.041]],"v":[[44.595,4.107],[-27.219,9.775]]}],"e":[{"i":[[-0.178,25.013],[-5,-26.749]],"o":[[0.186,-26.082],[5.22,27.926]],"v":[[44.595,4.107],[-27.219,9.775]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":29,"s":[{"i":[[-0.178,25.013],[-5,-26.749]],"o":[[0.186,-26.082],[5.22,27.926]],"v":[[44.595,4.107],[-27.219,9.775]]}],"e":[{"i":[[0.581,25.007],[-5,-30.749]],"o":[[-0.814,-35.082],[4.56,28.041]],"v":[[44.595,4.107],[-27.219,9.775]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":32,"s":[{"i":[[0.581,25.007],[-5,-30.749]],"o":[[-0.814,-35.082],[4.56,28.041]],"v":[[44.595,4.107],[-27.219,9.775]]}],"e":[{"i":[[-0.178,25.013],[-5,-26.749]],"o":[[0.186,-26.082],[5.22,27.926]],"v":[[44.595,4.107],[-27.219,9.775]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":35,"s":[{"i":[[-0.178,25.013],[-5,-26.749]],"o":[[0.186,-26.082],[5.22,27.926]],"v":[[44.595,4.107],[-27.219,9.775]]}],"e":[{"i":[[4.078,24.679],[-4,-22.749]],"o":[[-3.814,-23.082],[4.92,27.98]],"v":[[12.595,5.107],[-19.219,8.775]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":39,"s":[{"i":[[4.078,24.679],[-4,-22.749]],"o":[[-3.814,-23.082],[4.92,27.98]],"v":[[12.595,5.107],[-19.219,8.775]]}],"e":[{"i":[[-0.44,-0.32],[-0.092,-3.092]],"o":[[0.56,-1.32],[0.908,-0.092]],"v":[[6.221,0.345],[-1.127,1.117]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":72,"s":[{"i":[[-0.44,-0.32],[-0.092,-3.092]],"o":[[0.56,-1.32],[0.908,-0.092]],"v":[[6.221,0.345],[-1.127,1.117]]}],"e":[{"i":[[-19.757,-0.85],[17.281,-7.049]],"o":[[-23.257,-6.85],[18.281,-0.049]],"v":[[44.038,-6.125],[-36.501,-5.425]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":74,"s":[{"i":[[-19.757,-0.85],[17.281,-7.049]],"o":[[-23.257,-6.85],[18.281,-0.049]],"v":[[44.038,-6.125],[-36.501,-5.425]]}],"e":[{"i":[[-22.257,-6.85],[36.781,-5.549]],"o":[[-32.257,-17.35],[33.781,1.451]],"v":[[41.538,-8.625],[-29.001,-7.425]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":76,"s":[{"i":[[-22.257,-6.85],[36.781,-5.549]],"o":[[-32.257,-17.35],[33.781,1.451]],"v":[[41.538,-8.625],[-29.001,-7.425]]}],"e":[{"i":[[-22.257,-6.85],[36.781,-5.549]],"o":[[-32.257,-17.35],[33.781,1.451]],"v":[[41.538,-8.625],[-29.001,-7.425]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":78,"s":[{"i":[[-22.257,-6.85],[36.781,-5.549]],"o":[[-32.257,-17.35],[33.781,1.451]],"v":[[41.538,-8.625],[-29.001,-7.425]]}],"e":[{"i":[[-25.757,-10.35],[33.281,-7.549]],"o":[[-32.257,-17.35],[32.781,-5.049]],"v":[[41.538,-8.625],[-29.001,-7.425]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":80,"s":[{"i":[[-25.757,-10.35],[33.281,-7.549]],"o":[[-32.257,-17.35],[32.781,-5.049]],"v":[[41.538,-8.625],[-29.001,-7.425]]}],"e":[{"i":[[-25.757,-10.35],[33.281,-7.549]],"o":[[-32.257,-17.35],[32.781,-5.049]],"v":[[41.538,-8.625],[-29.001,-7.425]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":83,"s":[{"i":[[-25.757,-10.35],[33.281,-7.549]],"o":[[-32.257,-17.35],[32.781,-5.049]],"v":[[41.538,-8.625],[-29.001,-7.425]]}],"e":[{"i":[[-3,64.179],[-4.839,-68.033]],"o":[[-1,-65.821],[5.161,53.967]],"v":[[45.781,0.847],[-43.38,5.058]]}]},{"t":88}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":14,"s":[{"i":[[15.886,-15.509],[23.229,0],[15.885,15.509],[0,23.079],[-15.885,15.513],[-23.23,0],[-15.885,-15.513],[0,-23.077]],"o":[[-15.887,15.51],[-23.23,0],[-15.887,-15.511],[0,-23.077],[15.884,-15.511],[23.229,0],[15.884,15.511],[0,23.079]],"v":[[57.952,54.133],[-0.721,77.399],[-59.392,54.133],[-83.219,-3.752],[-59.392,-61.637],[-0.721,-84.904],[57.952,-61.637],[81.781,-3.752]]}],"e":[{"i":[[15.149,-14.794],[22.155,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.156,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.156,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.155,0],[15.149,14.794],[0,22.012]],"v":[[55.958,55.208],[-0.001,77.398],[-55.959,55.208],[-78.685,0.001],[-55.959,-55.207],[-0.001,-77.398],[55.958,-55.207],[78.685,0.001]]}]},{"t":16}]},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[96.174,94.129]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":12,"t":9,"b":172,"r":178},"ip":14,"op":88,"st":12},{"ddd":0,"ind":15,"ty":4,"nm":"O2original 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[130.41,166.975,0]},"a":{"k":[894.727,82.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[44.595,0.107],[31.731,-34.089],[0.107,-48.24],[-31.517,-34.089],[-44.382,0.107],[-31.517,34.197],[0.107,48.241],[31.731,34.197]]}},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[15.149,-14.794],[22.155,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.156,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.156,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.155,0],[15.149,14.794],[0,22.012]],"v":[[55.958,55.208],[-0.001,77.398],[-55.959,55.208],[-78.685,0.001],[-55.959,-55.207],[-0.001,-77.398],[55.958,-55.207],[78.685,0.001]]}},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[891.536,77.648]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":812,"t":0,"b":156,"r":971},"ip":88,"op":2736,"st":74},{"ddd":0,"ind":16,"ty":4,"nm":"O2original","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[130.41,166.975,0]},"a":{"k":[894.727,82.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[44.595,0.107],[31.731,-34.089],[0.107,-48.24],[-31.517,-34.089],[-44.382,0.107],[-31.517,34.197],[0.107,48.241],[31.731,34.197]]}],"e":[{"i":[[0,0.581],[6.11,0.41],[8.91,0],[6.11,-0.41],[0,-0.581],[-6.109,-0.407],[-8.913,0],[-6.111,0.407]],"o":[[0,-0.581],[-6.11,-0.41],[-8.913,0],[-6.11,0.41],[0,0.581],[6.11,0.407],[8.91,0],[6.11,-0.407]],"v":[[38.917,-15.819],[29.752,-17.305],[7.22,-17.92],[-15.312,-17.305],[-24.478,-15.819],[-15.312,-14.338],[7.22,-13.727],[29.752,-14.338]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[0,0.581],[6.11,0.41],[8.91,0],[6.11,-0.41],[0,-0.581],[-6.109,-0.407],[-8.913,0],[-6.111,0.407]],"o":[[0,-0.581],[-6.11,-0.41],[-8.913,0],[-6.11,0.41],[0,0.581],[6.11,0.407],[8.91,0],[6.11,-0.407]],"v":[[38.917,-15.819],[29.752,-17.305],[7.22,-17.92],[-15.312,-17.305],[-24.478,-15.819],[-15.312,-14.338],[7.22,-13.727],[29.752,-14.338]]}],"e":[{"i":[[0,0.581],[5.529,-2.169],[8.608,2.3],[8.593,-2.169],[0,-0.581],[-5.757,2.084],[-9.689,-1.997],[-5.674,2.305]],"o":[[0,-0.581],[-5.701,2.237],[-7.689,-2.054],[-5.938,1.499],[0,0.581],[6.593,-2.387],[8.727,1.799],[4.029,-1.637]],"v":[[38.917,-15.819],[29.752,-17.305],[7.22,-17.92],[-15.312,-17.305],[-24.478,-15.819],[-15.312,-14.338],[7.22,-13.727],[29.752,-14.338]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":5,"s":[{"i":[[0,0.581],[5.529,-2.169],[8.608,2.3],[8.593,-2.169],[0,-0.581],[-5.757,2.084],[-9.689,-1.997],[-5.674,2.305]],"o":[[0,-0.581],[-5.701,2.237],[-7.689,-2.054],[-5.938,1.499],[0,0.581],[6.593,-2.387],[8.727,1.799],[4.029,-1.637]],"v":[[38.917,-15.819],[29.752,-17.305],[7.22,-17.92],[-15.312,-17.305],[-24.478,-15.819],[-15.312,-14.338],[7.22,-13.727],[29.752,-14.338]]}],"e":[{"i":[[0,0.581],[5.812,0.859],[9.061,-2.554],[8.343,0.331],[0,-0.581],[-5.157,-1.387],[-10.689,1.753],[-7.721,-0.137]],"o":[[0,-0.581],[-6.221,-0.919],[-6.189,0.446],[-4.657,-0.669],[0,0.581],[7.593,1.613],[6.811,-2.747],[4.279,0.363]],"v":[[39.167,-16.819],[29.752,-17.305],[7.22,-17.92],[-15.062,-18.055],[-24.478,-15.819],[-15.312,-14.338],[8.22,-14.477],[30.752,-15.088]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":7,"s":[{"i":[[0,0.581],[5.812,0.859],[9.061,-2.554],[8.343,0.331],[0,-0.581],[-5.157,-1.387],[-10.689,1.753],[-7.721,-0.137]],"o":[[0,-0.581],[-6.221,-0.919],[-6.189,0.446],[-4.657,-0.669],[0,0.581],[7.593,1.613],[6.811,-2.747],[4.279,0.363]],"v":[[39.167,-16.819],[29.752,-17.305],[7.22,-17.92],[-15.062,-18.055],[-24.478,-15.819],[-15.312,-14.338],[8.22,-14.477],[30.752,-15.088]]}],"e":[{"i":[[0,0.581],[6.857,0.41],[9.998,0],[6.856,-0.41],[0,-0.581],[-6.855,-0.407],[-10.001,0],[-6.858,0.407]],"o":[[0,-0.581],[-6.857,-0.41],[-10.001,0],[-6.856,0.41],[0,0.581],[6.857,0.407],[9.998,0],[6.856,-0.407]],"v":[[38.917,-13.819],[28.632,-15.305],[3.349,-15.92],[-21.934,-15.305],[-32.219,-13.819],[-21.934,-12.338],[3.349,-11.727],[28.632,-12.338]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":9,"s":[{"i":[[0,0.581],[6.857,0.41],[9.998,0],[6.856,-0.41],[0,-0.581],[-6.855,-0.407],[-10.001,0],[-6.858,0.407]],"o":[[0,-0.581],[-6.857,-0.41],[-10.001,0],[-6.856,0.41],[0,0.581],[6.857,0.407],[9.998,0],[6.856,-0.407]],"v":[[38.917,-13.819],[28.632,-15.305],[3.349,-15.92],[-21.934,-15.305],[-32.219,-13.819],[-21.934,-12.338],[3.349,-11.727],[28.632,-12.338]]}],"e":[{"i":[[0,0.937],[6.884,1.385],[10.732,-4.12],[9.882,0.533],[0,-0.937],[-6.109,-2.237],[-12.661,2.827],[-9.145,-0.221]],"o":[[0,-0.937],[-7.369,-1.483],[-7.331,0.719],[-5.517,-1.079],[0,0.937],[8.993,2.602],[8.067,-4.431],[5.068,0.586]],"v":[[39.167,-14.579],[28.015,-15.363],[1.326,-16.355],[-25.066,-16.572],[-36.219,-12.966],[-25.362,-10.576],[2.511,-10.802],[29.199,-11.786]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":11,"s":[{"i":[[0,0.937],[6.884,1.385],[10.732,-4.12],[9.882,0.533],[0,-0.937],[-6.109,-2.237],[-12.661,2.827],[-9.145,-0.221]],"o":[[0,-0.937],[-7.369,-1.483],[-7.331,0.719],[-5.517,-1.079],[0,0.937],[8.993,2.602],[8.067,-4.431],[5.068,0.586]],"v":[[39.167,-14.579],[28.015,-15.363],[1.326,-16.355],[-25.066,-16.572],[-36.219,-12.966],[-25.362,-10.576],[2.511,-10.802],[29.199,-11.786]]}],"e":[{"i":[[0,4.237],[7.93,2.991],[11.564,0],[7.93,-2.991],[0,-4.238],[-7.929,-2.968],[-11.567,0],[-7.932,2.968]],"o":[[0,-4.237],[-7.93,-2.991],[-11.567,0],[-7.93,2.991],[0,4.238],[7.93,2.969],[11.564,0],[7.93,-2.968]],"v":[[47.017,-17.896],[35.121,-28.739],[5.879,-33.226],[-23.364,-28.739],[-35.261,-17.896],[-23.364,-7.088],[5.879,-2.635],[35.121,-7.088]]}]},{"t":14}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[15.149,-14.794],[22.155,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.156,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.156,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.155,0],[15.149,14.794],[0,22.012]],"v":[[55.958,55.208],[-0.001,77.398],[-55.959,55.208],[-78.685,0.001],[-55.959,-55.207],[-0.001,-77.398],[55.958,-55.207],[78.685,0.001]]}],"e":[{"i":[[13.338,-13.091],[19.504,0],[13.337,13.091],[0,19.481],[-13.338,13.094],[-19.505,0],[-13.338,-13.094],[0,-19.48]],"o":[[-13.339,13.092],[-19.505,0],[-13.339,-13.093],[0,-19.48],[13.337,-13.093],[19.504,0],[13.337,13.093],[0,19.481]],"v":[[49.773,37.387],[0.508,57.025],[-48.755,37.387],[-68.762,-11.474],[-48.755,-60.335],[0.508,-79.975],[49.773,-60.335],[69.781,-11.474]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[13.338,-13.091],[19.504,0],[13.337,13.091],[0,19.481],[-13.338,13.094],[-19.505,0],[-13.338,-13.094],[0,-19.48]],"o":[[-13.339,13.092],[-19.505,0],[-13.339,-13.093],[0,-19.48],[13.337,-13.093],[19.504,0],[13.337,13.093],[0,19.481]],"v":[[49.773,37.387],[0.508,57.025],[-48.755,37.387],[-68.762,-11.474],[-48.755,-60.335],[0.508,-79.975],[49.773,-60.335],[69.781,-11.474]]}],"e":[{"i":[[13.338,-13.091],[19.504,0],[13.337,13.091],[0,19.481],[-13.338,13.094],[-19.505,0],[-13.338,-13.094],[0,-19.48]],"o":[[-13.339,13.092],[-19.505,0],[-13.339,-13.093],[0,-19.48],[13.337,-13.093],[19.504,0],[13.337,13.093],[0,19.481]],"v":[[49.773,37.387],[0.508,57.025],[-48.755,37.387],[-68.762,-11.474],[-48.755,-60.335],[0.508,-79.975],[49.773,-60.335],[69.781,-11.474]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":4,"s":[{"i":[[13.338,-13.091],[19.504,0],[13.337,13.091],[0,19.481],[-13.338,13.094],[-19.505,0],[-13.338,-13.094],[0,-19.48]],"o":[[-13.339,13.092],[-19.505,0],[-13.339,-13.093],[0,-19.48],[13.337,-13.093],[19.504,0],[13.337,13.093],[0,19.481]],"v":[[49.773,37.387],[0.508,57.025],[-48.755,37.387],[-68.762,-11.474],[-48.755,-60.335],[0.508,-79.975],[49.773,-60.335],[69.781,-11.474]]}],"e":[{"i":[[13.338,-13.091],[19.504,0],[13.337,13.091],[0,19.481],[-13.338,13.094],[-19.505,0],[-13.338,-13.094],[0,-19.48]],"o":[[-13.339,13.092],[-19.505,0],[-13.339,-13.093],[0,-19.48],[13.337,-13.093],[19.504,0],[13.337,13.093],[0,19.481]],"v":[[49.773,37.387],[0.508,57.025],[-48.755,37.387],[-68.762,-11.474],[-48.755,-60.335],[0.508,-79.975],[49.773,-60.335],[69.781,-11.474]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[13.338,-13.091],[19.504,0],[13.337,13.091],[0,19.481],[-13.338,13.094],[-19.505,0],[-13.338,-13.094],[0,-19.48]],"o":[[-13.339,13.092],[-19.505,0],[-13.339,-13.093],[0,-19.48],[13.337,-13.093],[19.504,0],[13.337,13.093],[0,19.481]],"v":[[49.773,37.387],[0.508,57.025],[-48.755,37.387],[-68.762,-11.474],[-48.755,-60.335],[0.508,-79.975],[49.773,-60.335],[69.781,-11.474]]}],"e":[{"i":[[15.149,-14.794],[22.155,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.156,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.156,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.155,0],[15.149,14.794],[0,22.012]],"v":[[55.958,55.208],[-0.001,77.398],[-55.959,55.208],[-78.685,0.001],[-55.959,-55.207],[-0.001,-77.398],[55.958,-55.207],[78.685,0.001]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":11,"s":[{"i":[[15.149,-14.794],[22.155,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.156,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.156,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.155,0],[15.149,14.794],[0,22.012]],"v":[[55.958,55.208],[-0.001,77.398],[-55.959,55.208],[-78.685,0.001],[-55.959,-55.207],[-0.001,-77.398],[55.958,-55.207],[78.685,0.001]]}],"e":[{"i":[[15.982,-15.603],[23.37,0],[15.981,15.603],[0,23.219],[-15.981,15.607],[-23.371,0],[-15.981,-15.607],[0,-23.217]],"o":[[-15.983,15.604],[-23.371,0],[-15.983,-15.605],[0,-23.217],[15.98,-15.605],[23.37,0],[15.98,15.605],[0,23.219]],"v":[[58.807,53.992],[-0.221,77.398],[-59.247,53.992],[-83.219,-4.244],[-59.247,-62.479],[-0.221,-85.887],[58.807,-62.479],[82.781,-4.244]]}]},{"t":14}]},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[891.536,77.648]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":808,"t":-9,"b":156,"r":975},"ip":0,"op":14,"st":0}]},{"id":"comp_7","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"corteM4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[129.5,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.25,-51.25],[-36.25,-51]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.25,-51.25],[35.75,102.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.25,-51.25],[35.75,102.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[35.75,102.313],[35.75,102.5]]}]},{"t":34}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[88,214,112,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-38,"t":-53,"b":104,"r":38},"ip":24,"op":34,"st":-5},{"ddd":0,"ind":1,"ty":4,"nm":"corteM3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.75,30.75],[2.75,31]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.25,-51.25],[2.75,31]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.25,-51.25],[2.75,31]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.25,-51.25],[-36.25,-51]]}]},{"t":30}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[88,214,112,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-38,"t":-53,"b":33,"r":5},"ip":24,"op":30,"st":-5},{"ddd":0,"ind":2,"ty":4,"nm":"corteM2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-47.5,101.5],[-47.5,101.25]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-47.5,101.5],[-47.5,6.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-47.5,101.5],[-47.5,6.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-47.5,6.5],[-47.5,6.5]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[88,214,112,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-49,"t":5,"b":103,"r":-46},"ip":23,"op":33,"st":-6},{"ddd":0,"ind":3,"ty":4,"nm":"corteM5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[129,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.5,104.5],[-0.5,104.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-77,-53],[-0.5,104.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-77,-53],[-0.5,104.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-77,-53],[-77,-53.25]]}]},{"t":35}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[88,214,112,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-79,"t":-55,"b":106,"r":1},"ip":22,"op":35,"st":-7},{"ddd":0,"ind":4,"ty":4,"nm":"corteM1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-77,-53],[-77,-53.25]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-77,-53],[-0.5,104.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-77,-53],[-0.5,104.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.5,104.5],[-0.5,104.5]]}]},{"t":34}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[88,214,112,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-79,"t":-55,"b":106,"r":1},"ip":21,"op":34,"st":-8},{"ddd":0,"ind":6,"ty":4,"nm":"Moriginal 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[102.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.487,"y":1},"o":{"x":0.167,"y":0},"n":"0p487_1_0p167_0","t":3,"s":[{"i":[[21.328,-0.064],[0,0],[0,0],[-16.596,0.086],[0,0],[0,0]],"o":[[-21.328,0.064],[0,0],[0,0],[16.596,-0.086],[0,0],[0,0]],"v":[[-10.077,74.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-74.854],[83.83,-74.932],[83.83,74.932]]}],"e":[{"i":[[40.661,0.944],[0,0],[0,0],[-37.451,-0.91],[0,0],[0,0]],"o":[[-40.328,-0.936],[0,0],[0,0],[37.596,0.914],[0,0],[0,0]],"v":[[-0.077,84.996],[-83.83,74.932],[-83.83,-74.932],[2.999,-84.854],[83.83,-74.932],[83.83,74.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.545,"y":0},"n":"0p833_1_0p545_0","t":6,"s":[{"i":[[40.661,0.944],[0,0],[0,0],[-37.451,-0.91],[0,0],[0,0]],"o":[[-40.328,-0.936],[0,0],[0,0],[37.596,0.914],[0,0],[0,0]],"v":[[-0.077,84.996],[-83.83,74.932],[-83.83,-74.932],[2.999,-84.854],[83.83,-74.932],[83.83,74.932]]}],"e":[{"i":[[40.672,-0.064],[0,0],[0,0],[-35.404,0.914],[0,0],[0,0]],"o":[[-40.328,0.064],[0,0],[0,0],[33.602,-0.867],[0,0],[0,0]],"v":[[0.923,72.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-72.854],[83.83,-74.932],[83.83,74.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":9,"s":[{"i":[[40.672,-0.064],[0,0],[0,0],[-35.404,0.914],[0,0],[0,0]],"o":[[-40.328,0.064],[0,0],[0,0],[33.602,-0.867],[0,0],[0,0]],"v":[[0.923,72.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-72.854],[83.83,-74.932],[83.83,74.932]]}],"e":[{"i":[[21.328,-0.064],[0,0],[0,0],[-16.596,0.086],[0,0],[0,0]],"o":[[-21.328,0.064],[0,0],[0,0],[16.596,-0.086],[0,0],[0,0]],"v":[[-10.077,74.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-74.854],[83.83,-74.932],[83.83,74.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":12,"s":[{"i":[[21.328,-0.064],[0,0],[0,0],[-16.596,0.086],[0,0],[0,0]],"o":[[-21.328,0.064],[0,0],[0,0],[16.596,-0.086],[0,0],[0,0]],"v":[[-10.077,74.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-74.854],[83.83,-74.932],[83.83,74.932]]}],"e":[{"i":[[37.174,0.434],[0,0],[0,0],[-31.904,-0.086],[0,0],[0,0]],"o":[[-37.328,-0.436],[0,0],[0,0],[34.096,0.092],[0,0],[0,0]],"v":[[-0.077,77.496],[-83.83,74.932],[-83.83,-74.932],[-0.001,-77.354],[83.83,-74.932],[83.83,74.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":16,"s":[{"i":[[37.174,0.434],[0,0],[0,0],[-31.904,-0.086],[0,0],[0,0]],"o":[[-37.328,-0.436],[0,0],[0,0],[34.096,0.092],[0,0],[0,0]],"v":[[-0.077,77.496],[-83.83,74.932],[-83.83,-74.932],[-0.001,-77.354],[83.83,-74.932],[83.83,74.932]]}],"e":[{"i":[[40.672,-0.064],[0,0],[0,0],[-35.404,0.914],[0,0],[0,0]],"o":[[-40.328,0.064],[0,0],[0,0],[33.602,-0.867],[0,0],[0,0]],"v":[[0.923,72.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-72.854],[83.83,-74.932],[83.83,74.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[40.672,-0.064],[0,0],[0,0],[-35.404,0.914],[0,0],[0,0]],"o":[[-40.328,0.064],[0,0],[0,0],[33.602,-0.867],[0,0],[0,0]],"v":[[0.923,72.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-72.854],[83.83,-74.932],[83.83,74.932]]}],"e":[{"i":[[21.328,-0.064],[0,0],[0,0],[-16.596,0.086],[0,0],[0,0]],"o":[[-21.328,0.064],[0,0],[0,0],[16.596,-0.086],[0,0],[0,0]],"v":[[-10.077,74.997],[-83.83,74.932],[-83.83,-74.932],[-0.001,-74.854],[83.83,-74.932],[83.83,74.932]]}]},{"t":23}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[700.722,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":616,"t":-7,"b":164,"r":785},"ip":3,"op":29,"st":1},{"ddd":0,"ind":8,"ty":4,"nm":"Moriginal 6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[102.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":53,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[50.383,-19.404],[9.862,52.497],[-10.077,52.497],[-50.385,-19.404],[-50.385,64.932],[-79.83,64.932],[-79.83,-64.932],[-38.593,-64.932],[-0.001,9.397],[38.806,-64.932],[80.83,-64.932],[80.83,64.932],[50.383,64.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[50.383,-19.404],[9.862,62.497],[-10.077,62.497],[-50.385,-19.404],[-50.385,74.932],[-83.83,74.932],[-83.83,-74.932],[-38.593,-74.932],[-0.001,7.396],[38.806,-74.932],[83.83,-74.932],[83.83,74.932],[50.383,74.932]]}]},{"t":62}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[700.722,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":616,"t":3,"b":154,"r":785},"ip":55,"op":1256,"st":49},{"ddd":0,"ind":9,"ty":4,"nm":"Moriginal 5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[102.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":53,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[50.383,-19.404],[9.862,52.497],[-10.077,52.497],[-50.385,-19.404],[-50.385,64.932],[-79.83,64.932],[-79.83,-64.932],[-38.593,-64.932],[-0.001,9.397],[38.806,-64.932],[80.83,-64.932],[80.83,64.932],[50.383,64.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[50.383,-19.404],[9.862,62.497],[-10.077,62.497],[-50.385,-19.404],[-50.385,74.932],[-83.83,74.932],[-83.83,-74.932],[-38.593,-74.932],[-0.001,7.396],[38.806,-74.932],[83.83,-74.932],[83.83,74.932],[50.383,74.932]]}]},{"t":62}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[700.722,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":616,"t":3,"b":154,"r":785},"ip":53,"op":55,"st":49},{"ddd":0,"ind":10,"ty":4,"nm":"Moriginal","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[102.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[50.383,-19.404],[9.862,62.497],[-10.077,62.497],[-50.385,-19.404],[-50.385,74.932],[-83.83,74.932],[-83.83,-74.932],[-38.593,-74.932],[-0.001,7.396],[38.806,-74.932],[83.83,-74.932],[83.83,74.932],[50.383,74.932]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[50.383,74.987],[9.862,75.012],[-10.077,74.997],[-50.385,74.971],[-50.385,74.932],[-83.83,74.932],[-83.83,-74.932],[-38.593,-74.932],[-0.001,-74.854],[38.806,-74.932],[83.83,-74.932],[83.83,74.932],[50.383,74.932]]}]},{"t":3}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[700.722,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":616,"t":3,"b":154,"r":785},"ip":0,"op":3,"st":0},{"ddd":0,"ind":12,"ty":4,"nm":"M_bm Outlines 30","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[116,128,0],"to":[-2,-5.83333349227905,0],"ti":[2.16666674613953,6.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[116,128,0],"e":[115,125,0],"to":[-2.16666674613953,-6.33333349227905,0],"ti":[-2,-5.83333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[115,125,0],"e":[128,163,0],"to":[2,5.83333349227905,0],"ti":[-2.16666674613953,-6.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[85.182,122.377]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":43,"t":49,"b":183,"r":131},"ip":38,"op":53,"st":19},{"ddd":0,"ind":13,"ty":4,"nm":"M_bm Outlines 26","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[116,128,0],"to":[-2,-5.83333349227905,0],"ti":[2.16666674613953,6.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[116,128,0],"e":[115,125,0],"to":[-2.16666674613953,-6.33333349227905,0],"ti":[-2,-5.83333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[115,125,0],"e":[128,163,0],"to":[2,5.83333349227905,0],"ti":[-2.16666674613953,-6.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[85.182,122.377]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":43,"t":49,"b":183,"r":131},"ip":35,"op":38,"st":19},{"ddd":0,"ind":14,"ty":4,"nm":"M_bm Outlines 22","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[116,128,0],"to":[-2,-5.83333349227905,0],"ti":[2.16666674613953,6.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[116,128,0],"e":[115,125,0],"to":[-2.16666674613953,-6.33333349227905,0],"ti":[-2,-5.83333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[115,125,0],"e":[128,163,0],"to":[2,5.83333349227905,0],"ti":[-2.16666674613953,-6.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[85.182,122.377]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":43,"t":49,"b":183,"r":131},"ip":32,"op":35,"st":19},{"ddd":0,"ind":15,"ty":4,"nm":"M_bm Outlines 17","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[116,128,0],"to":[-2,-5.83333349227905,0],"ti":[2.16666674613953,6.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[116,128,0],"e":[115,125,0],"to":[-2.16666674613953,-6.33333349227905,0],"ti":[-2,-5.83333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[115,125,0],"e":[128,163,0],"to":[2,5.83333349227905,0],"ti":[-2.16666674613953,-6.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.607,-51.87],[20.631,-57.87],[17.607,6.462],[44.931,25.382],[0.325,17.87],[10.057,-32.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.607,-72.87],[9.631,-54.87],[10.607,-18.538],[26.931,14.382],[-10.675,-3.13],[-2.943,-43.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-33.607,-64.87],[19.964,-43.87],[7.274,-0.537],[33.291,26.627],[-9.008,5.537],[0.917,-37.099]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.607,-68.87],[2.631,-50.87],[3.607,-11.538],[32.931,24.382],[-17.675,3.87],[-9.943,-39.503]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[34.011,31.118],[20.325,59.87],[-4.363,9.708]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[85.182,122.377]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":43,"t":49,"b":183,"r":131},"ip":30,"op":32,"st":19},{"ddd":0,"ind":16,"ty":4,"nm":"M_bm Outlines 33","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,121,0],"to":[3.16666674613953,-7,0],"ti":[-3.5,7.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,121,0],"e":[149,119,0],"to":[3.5,-7.33333349227905,0],"ti":[3.16666674613953,-7,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,119,0],"e":[128,163,0],"to":[-3.16666674613953,7,0],"ti":[3.5,-7.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.885,74.932],[-33.916,74.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[1.44,19.413]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-18.885,61.932],[-33.916,61.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[5.846,11.229]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[153.915,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":106,"t":54,"b":213,"r":203},"ip":43,"op":53,"st":19},{"ddd":0,"ind":17,"ty":4,"nm":"M_bm Outlines 29","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,121,0],"to":[3.16666674613953,-7,0],"ti":[-3.5,7.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,121,0],"e":[149,119,0],"to":[3.5,-7.33333349227905,0],"ti":[3.16666674613953,-7,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,119,0],"e":[128,163,0],"to":[-3.16666674613953,7,0],"ti":[3.5,-7.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.885,74.932],[-33.916,74.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[1.44,19.413]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-18.885,61.932],[-33.916,61.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[5.846,11.229]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[153.915,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":106,"t":54,"b":213,"r":203},"ip":38,"op":53,"st":19},{"ddd":0,"ind":18,"ty":4,"nm":"M_bm Outlines 25","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,121,0],"to":[3.16666674613953,-7,0],"ti":[-3.5,7.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,121,0],"e":[149,119,0],"to":[3.5,-7.33333349227905,0],"ti":[3.16666674613953,-7,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,119,0],"e":[128,163,0],"to":[-3.16666674613953,7,0],"ti":[3.5,-7.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.885,74.932],[-33.916,74.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[1.44,19.413]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-18.885,61.932],[-33.916,61.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[5.846,11.229]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[153.915,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":106,"t":54,"b":213,"r":203},"ip":35,"op":38,"st":19},{"ddd":0,"ind":19,"ty":4,"nm":"M_bm Outlines 21","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,121,0],"to":[3.16666674613953,-7,0],"ti":[-3.5,7.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,121,0],"e":[149,119,0],"to":[3.5,-7.33333349227905,0],"ti":[3.16666674613953,-7,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,119,0],"e":[128,163,0],"to":[-3.16666674613953,7,0],"ti":[3.5,-7.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.885,74.932],[-33.916,74.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[1.44,19.413]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-18.885,61.932],[-33.916,61.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[5.846,11.229]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[153.915,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":106,"t":54,"b":213,"r":203},"ip":32,"op":35,"st":19},{"ddd":0,"ind":20,"ty":4,"nm":"M_bm Outlines 16","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,121,0],"to":[3.16666674613953,-7,0],"ti":[-3.5,7.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,121,0],"e":[149,119,0],"to":[3.5,-7.33333349227905,0],"ti":[3.16666674613953,-7,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,119,0],"e":[128,163,0],"to":[-3.16666674613953,7,0],"ti":[3.5,-7.33333349227905,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.885,74.932],[-33.916,74.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[1.44,19.413]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.636,-21.894],[-10.916,29.106],[-10.874,0.092],[-13.633,-34.682],[22.635,-45.933],[47.874,-77.933],[41.453,-30.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.225,-15.972],[-9.916,40.106],[-9.874,11.092],[-12.633,-29.682],[24.635,-37.933],[48.874,-72.933],[34.453,-24.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.636,-20.894],[-8.916,38.106],[-8.874,9.092],[-8.633,-31.682],[29.635,-43.933],[44.874,-82.933],[45.453,-31.585]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-18.885,61.932],[-33.916,61.932],[-47.874,46.091],[-27.061,1.518],[8.635,-74.933],[47.874,-74.933],[5.846,11.229]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[153.915,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":106,"t":54,"b":213,"r":203},"ip":30,"op":32,"st":19},{"ddd":0,"ind":21,"ty":4,"nm":"M_bm Outlines 10","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":39,"s":[100],"e":[0]},{"t":40}]},"r":{"k":0},"p":{"k":[127.958,142.99,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-12.335,-49.579],[24.512,-37.283],[-7.149,-3.762]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-29.196,-30.103],[-22.629,-45.607],[-9.221,-30.784]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":37,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-29.196,-30.103],[-22.629,-45.607],[-9.221,-30.784]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.183,-38.008],[-28.578,-43.292],[-21.192,-44.306]]}]},{"t":40}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[124,102.334]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":94,"t":52,"b":99,"r":149},"ip":33,"op":40,"st":20},{"ddd":0,"ind":22,"ty":4,"nm":"M_bm Outlines 36","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":42,"s":[100],"e":[0]},{"t":43}]},"r":{"k":0},"p":{"k":[117.958,162.99,0]},"a":{"k":[125,137.5,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":34,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.677,-24.488],[9.243,-10.654],[-8.933,-10.502]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-29.196,-30.103],[-22.629,-45.607],[-9.221,-30.784]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":39,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-29.196,-30.103],[-22.629,-45.607],[-9.221,-30.784]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.183,-38.008],[-28.578,-43.292],[-21.192,-44.306]]}]},{"t":43}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[124,102.334]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":94,"t":56,"b":92,"r":134},"ip":34,"op":43,"st":21},{"ddd":0,"ind":23,"ty":4,"nm":"M_bm Outlines 15","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":37,"s":[100],"e":[0]},{"t":39}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[128,103,0],"to":[0,-10,0],"ti":[-0.16666667163372,10.3333330154419,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[128,103,0],"e":[129,101,0],"to":[0.16666667163372,-10.3333330154419,0],"ti":[0,-10,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":39,"s":[129,101,0],"e":[128,163,0],"to":[0,10,0],"ti":[0.16666667163372,-10.3333330154419,0]},{"t":44}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-37,-39.834],[37,-39.834],[0,39.834]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.683,-34.307],[26.701,-3.778],[-18.175,6.815]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":34,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.683,-34.307],[26.701,-3.778],[-18.175,6.815]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[14.743,-17.499],[4.424,-5.678],[-3.142,-22.699]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":38,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[14.743,-17.499],[4.424,-5.678],[-3.142,-22.699]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[3.764,-4.956],[-2.181,-9.061],[5.211,-13.408]]}]},{"t":41}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[124,102.334]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":87,"t":62,"b":143,"r":161},"ip":30,"op":41,"st":19},{"ddd":0,"ind":24,"ty":4,"nm":"M_bm Outlines 32","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[108,179,0],"to":[-3.33333325386047,2.66666674613953,0],"ti":[0.20848606526852,0.0188069511205,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[108,179,0],"e":[106,179,0],"to":[-0.11774158477783,-0.01062114350498,0],"ti":[-0.03404280915856,-0.05691438168287,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[106,179,0],"e":[128,163,0],"to":[0.23912976682186,0.39978849887848,0],"ti":[-3.66666674613953,2.66666674613953,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.342,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":33,"t":62,"b":221,"r":75},"ip":43,"op":53,"st":19},{"ddd":0,"ind":25,"ty":4,"nm":"M_bm Outlines 28","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[108,179,0],"to":[-3.33333325386047,2.66666674613953,0],"ti":[0.20848606526852,0.0188069511205,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[108,179,0],"e":[106,179,0],"to":[-0.11774158477783,-0.01062114350498,0],"ti":[-0.03404280915856,-0.05691438168287,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[106,179,0],"e":[128,163,0],"to":[0.23912976682186,0.39978849887848,0],"ti":[-3.66666674613953,2.66666674613953,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.342,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":33,"t":62,"b":221,"r":75},"ip":38,"op":53,"st":19},{"ddd":0,"ind":26,"ty":4,"nm":"M_bm Outlines 24","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[108,179,0],"to":[-3.33333325386047,2.66666674613953,0],"ti":[0.20848606526852,0.0188069511205,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[108,179,0],"e":[106,179,0],"to":[-0.11774158477783,-0.01062114350498,0],"ti":[-0.03404280915856,-0.05691438168287,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[106,179,0],"e":[128,163,0],"to":[0.23912976682186,0.39978849887848,0],"ti":[-3.66666674613953,2.66666674613953,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.342,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":33,"t":62,"b":221,"r":75},"ip":35,"op":38,"st":19},{"ddd":0,"ind":27,"ty":4,"nm":"M_bm Outlines 20","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[108,179,0],"to":[-3.33333325386047,2.66666674613953,0],"ti":[0.20848606526852,0.0188069511205,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[108,179,0],"e":[106,179,0],"to":[-0.11774158477783,-0.01062114350498,0],"ti":[-0.03404280915856,-0.05691438168287,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[106,179,0],"e":[128,163,0],"to":[0.23912976682186,0.39978849887848,0],"ti":[-3.66666674613953,2.66666674613953,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.342,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":33,"t":62,"b":221,"r":75},"ip":32,"op":35,"st":19},{"ddd":0,"ind":28,"ty":4,"nm":"M_bm Outlines 14","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[108,179,0],"to":[-3.33333325386047,2.66666674613953,0],"ti":[0.20848606526852,0.0188069511205,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[108,179,0],"e":[106,179,0],"to":[-0.11774158477783,-0.01062114350498,0],"ti":[-0.03404280915856,-0.05691438168287,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[106,179,0],"e":[128,163,0],"to":[0.23912976682186,0.39978849887848,0],"ti":[-3.66666674613953,2.66666674613953,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.773],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,72.932],[0.232,37.932],[-21.768,0.06],[-4.768,-42.933],[-4.676,-42.909],[-3.232,-2.772],[16.725,34.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,82.932],[0.232,48.932],[-13.768,8.06],[5.232,-32.933],[5.324,-32.909],[4.768,5.228],[16.725,45.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-7.322,61.932],[0.232,30.932],[-23.768,-4.94],[-0.768,-48.933],[-0.676,-48.909],[-5.232,-7.772],[16.725,27.063]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,27.974],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773],[16.726,26.057]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.342,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":33,"t":62,"b":221,"r":75},"ip":30,"op":32,"st":19},{"ddd":0,"ind":30,"ty":4,"nm":"M_bm Outlines 35","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,179,0],"to":[3.16666674613953,2.66666674613953,0],"ti":[-3.5,-2.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,179,0],"e":[149,178,0],"to":[3.5,2.5,0],"ti":[3.16666674613953,2.66666674613953,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,178,0],"e":[128,163,0],"to":[-3.16666674613953,-2.66666674613953,0],"ti":[3.5,2.5,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[191.02,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":167,"t":62,"b":213,"r":213},"ip":38,"op":53,"st":19},{"ddd":0,"ind":31,"ty":4,"nm":"M_bm Outlines 23","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,179,0],"to":[3.16666674613953,2.66666674613953,0],"ti":[-3.5,-2.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,179,0],"e":[149,178,0],"to":[3.5,2.5,0],"ti":[3.16666674613953,2.66666674613953,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,178,0],"e":[128,163,0],"to":[-3.16666674613953,-2.66666674613953,0],"ti":[3.5,2.5,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[191.02,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":167,"t":62,"b":213,"r":213},"ip":35,"op":38,"st":19},{"ddd":0,"ind":32,"ty":4,"nm":"M_bm Outlines 19","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,179,0],"to":[3.16666674613953,2.66666674613953,0],"ti":[-3.5,-2.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,179,0],"e":[149,178,0],"to":[3.5,2.5,0],"ti":[3.16666674613953,2.66666674613953,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,178,0],"e":[128,163,0],"to":[-3.16666674613953,-2.66666674613953,0],"ti":[3.5,2.5,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[191.02,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":167,"t":62,"b":213,"r":213},"ip":32,"op":35,"st":19},{"ddd":0,"ind":33,"ty":4,"nm":"M_bm Outlines 13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,179,0],"to":[3.16666674613953,2.66666674613953,0],"ti":[-3.5,-2.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,179,0],"e":[149,178,0],"to":[3.5,2.5,0],"ti":[3.16666674613953,2.66666674613953,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":48,"s":[149,178,0],"e":[128,163,0],"to":[-3.16666674613953,-2.66666674613953,0],"ti":[3.5,2.5,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-23.768,-16.773],[3.675,-55.909],[1.767,-16.932],[16.767,15.933],[-8.678,60.932],[-0.718,16.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.768,-10.773],[10.675,-58.909],[4.767,-10.932],[16.767,23.933],[-5.678,71.932],[-0.718,24.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[9.675,-59.909],[4.767,-19.932],[21.767,13.933],[-16.678,74.932],[5.282,13.162]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[191.02,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":167,"t":62,"b":213,"r":213},"ip":30,"op":32,"st":19},{"ddd":0,"ind":34,"ty":4,"nm":"M_bm Outlines 8","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[100],"e":[0]},{"t":39}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[135,160,0],"e":[131,187,0],"to":[-0.66666668653488,4.5,0],"ti":[0.66666668653488,-4.5,0]},{"t":39}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[15.703,1.148],[3.139,25.532],[-8.642,19.461]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.65,3.548],[13.97,13.681],[5.811,17.808]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.65,3.548],[13.97,13.681],[5.811,17.808]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-4.543,2.112],[11.21,17.587],[2.196,19.121]]}]},{"t":39}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[151.5,168]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":142,"t":169,"b":194,"r":168},"ip":33,"op":39,"st":19},{"ddd":0,"ind":35,"ty":4,"nm":"M_bm Outlines 12","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":47,"s":[100],"e":[0]},{"t":48}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[128,163,0],"e":[130,183,0],"to":[0.33333334326744,3.33333325386047,0],"ti":[-0.5,-4,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[130,183,0],"e":[131,187,0],"to":[0.5,4,0],"ti":[-0.16666667163372,-0.66666668653488,0]},{"t":44}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.5,-44.5],[21.5,44.5],[-21.5,44.5]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[32.428,13.517],[-9.71,34.634],[-19.912,14.275]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[32.428,13.517],[-9.71,34.634],[-19.912,14.275]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.361,40.376],[5.748,38.498],[9.169,31.569]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.361,40.376],[5.748,38.498],[9.169,31.569]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[9.541,39.653],[7.646,37.41],[9.077,37.041]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[151.5,168]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":130,"t":123,"b":213,"r":184},"ip":30,"op":48,"st":19},{"ddd":0,"ind":36,"ty":4,"nm":"M_bm Outlines 9","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[100],"e":[0]},{"t":40}]},"r":{"k":0},"p":{"k":[128.074,176.333,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-15.355,-2.707],[-7.017,26.157],[7.094,22.081]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.926,-5.763],[-18.947,-2.803],[-17.604,7.667]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.926,-5.763],[-18.947,-2.803],[-17.604,7.667]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[3.029,-7.988],[-4.166,-17.556],[-9.268,-13.879]]}]},{"t":40}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97,167.5]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":78,"t":149,"b":194,"r":105},"ip":31,"op":40,"st":19},{"ddd":0,"ind":37,"ty":4,"nm":"M_bm Outlines 18","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":47,"s":[100],"e":[0]},{"t":48}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[128,163,0],"e":[128,183,0],"to":[0,3.33333325386047,0],"ti":[0.16666667163372,-3.66666674613953,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[128,183,0],"e":[127,185,0],"to":[-0.16666667163372,3.66666674613953,0],"ti":[0,3.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[127,185,0],"e":[128,163,0],"to":[0,-3.33333325386047,0],"ti":[-0.16666667163372,3.66666674613953,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-22,-45],[-22,45],[22,45]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-28.827,49.841],[11.116,25.71],[-0.681,6.183]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-28.827,49.841],[11.116,25.71],[-0.681,6.183]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-21.22,43.678],[-16.768,35.906],[-20.567,33.73]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97,167.5]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":68,"t":122,"b":218,"r":119},"ip":32,"op":53,"st":19},{"ddd":0,"ind":38,"ty":4,"nm":"M_bm Outlines 11","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":47,"s":[100],"e":[0]},{"t":48}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[128,163,0],"e":[128,183,0],"to":[0,3.33333325386047,0],"ti":[0.16666667163372,-3.66666674613953,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[128,183,0],"e":[127,185,0],"to":[-0.16666667163372,3.66666674613953,0],"ti":[0,3.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[127,185,0],"e":[128,163,0],"to":[0,-3.33333325386047,0],"ti":[-0.16666667163372,3.66666674613953,0]},{"t":53}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-22,-45],[-22,45],[22,45]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-28.827,49.841],[11.116,25.71],[-0.681,6.183]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-28.827,49.841],[11.116,25.71],[-0.681,6.183]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-21.22,43.678],[-16.768,35.906],[-20.567,33.73]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97,167.5]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":68,"t":122,"b":218,"r":119},"ip":30,"op":32,"st":19},{"ddd":0,"ind":39,"ty":4,"nm":"M_bm Outlines 7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[116,128,0],"to":[-2,-5.83333349227905,0],"ti":[2.16666674613953,6.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[116,128,0],"e":[115,125,0],"to":[-2.16666674613953,-6.33333349227905,0],"ti":[-2,-5.83333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":43,"s":[115,125,0],"e":[128,163,0],"to":[2,5.83333349227905,0],"ti":[-2.16666674613953,-6.33333349227905,0]},{"t":48}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-38.607,-59.87],[0.631,-59.87],[38.607,21.463],[20.325,59.87]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[85.182,122.377]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":46,"t":62,"b":183,"r":124},"ip":29,"op":30,"st":19},{"ddd":0,"ind":40,"ty":4,"nm":"M_bm Outlines 6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,121,0],"to":[3.16666674613953,-7,0],"ti":[-3.5,7.33333349227905,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,121,0],"e":[149,119,0],"to":[3.5,-7.33333349227905,0],"ti":[3.16666674613953,-7,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":43,"s":[149,119,0],"e":[128,163,0],"to":[-3.16666674613953,7,0],"ti":[3.5,-7.33333349227905,0]},{"t":48}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.885,74.932],[-33.916,74.932],[-47.874,46.091],[8.635,-74.933],[47.874,-74.933]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-18.885,61.932],[-33.916,61.932],[-47.874,46.091],[8.635,-74.933],[47.874,-74.933]]}]},{"t":47}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[153.915,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":106,"t":62,"b":213,"r":202},"ip":29,"op":30,"st":19},{"ddd":0,"ind":41,"ty":4,"nm":"M_bm Outlines 5","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":37,"s":[100],"e":[0]},{"t":39}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[128,163,0],"e":[128,103,0],"to":[0,-10,0],"ti":[-0.16666667163372,10.3333330154419,0]},{"i":{"x":0.856,"y":0.856},"o":{"x":0.144,"y":0.144},"n":"0p856_0p856_0p144_0p144","t":33,"s":[128,103,0],"e":[129,101,0],"to":[0.16666667163372,-10.3333330154419,0],"ti":[0,-10,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[129,101,0],"e":[128,163,0],"to":[0,10,0],"ti":[0.16666667163372,-10.3333330154419,0]},{"t":44}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-37,-39.834],[37,-39.834],[0,39.834]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.683,-34.307],[26.701,-3.778],[-18.175,6.815]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.683,-34.307],[26.701,-3.778],[-18.175,6.815]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[14.743,-17.499],[4.424,-5.678],[-3.142,-22.699]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[14.743,-17.499],[4.424,-5.678],[-3.142,-22.699]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[3.764,-4.956],[-2.181,-9.061],[5.211,-13.408]]}]},{"t":41}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[124,102.334]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":87,"t":62,"b":143,"r":161},"ip":29,"op":30,"st":19},{"ddd":0,"ind":42,"ty":4,"nm":"M_bm Outlines 4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[108,179,0],"to":[-3.33333325386047,2.66666674613953,0],"ti":[0.20848606526852,0.0188069511205,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[108,179,0],"e":[106,179,0],"to":[-0.11774158477783,-0.01062114350498,0],"ti":[-0.03404280915856,-0.05691438168287,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":43,"s":[106,179,0],"e":[128,163,0],"to":[0.23912976682186,0.39978849887848,0],"ti":[-3.66666674613953,2.66666674613953,0]},{"t":48}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.678,74.932],[-16.768,74.932],[-16.768,-74.933],[-11.676,-74.909],[16.768,-16.773]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.342,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":40,"t":62,"b":213,"r":75},"ip":29,"op":30,"st":19},{"ddd":0,"ind":43,"ty":4,"nm":"M_bm Outlines 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[128,163,0],"e":[147,179,0],"to":[3.16666674613953,2.66666674613953,0],"ti":[-3.5,-2.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[147,179,0],"e":[149,178,0],"to":[3.5,2.5,0],"ti":[3.16666674613953,2.66666674613953,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":43,"s":[149,178,0],"e":[128,163,0],"to":[-3.16666674613953,-2.66666674613953,0],"ti":[3.5,2.5,0]},{"t":48}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.768,-16.773],[11.675,-74.909],[16.767,-74.932],[16.767,74.932],[-16.678,74.932],[-16.718,34.162]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[191.02,137.44]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":174,"t":62,"b":213,"r":208},"ip":29,"op":30,"st":19},{"ddd":0,"ind":44,"ty":4,"nm":"M_bm Outlines 2","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[100],"e":[0]},{"t":39}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[128,163,0],"e":[130,183,0],"to":[0.33333334326744,3.33333325386047,0],"ti":[-0.5,-4,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[130,183,0],"e":[131,187,0],"to":[0.5,4,0],"ti":[0.33333334326744,3.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[131,187,0],"e":[128,163,0],"to":[-0.33333334326744,-3.33333325386047,0],"ti":[0.5,4,0]},{"t":48}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.5,-44.5],[21.5,44.5],[-21.5,44.5]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[32.428,13.517],[-9.71,34.634],[-19.912,14.275]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[32.428,13.517],[-9.71,34.634],[-19.912,14.275]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.361,40.376],[5.748,38.498],[9.169,31.569]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.361,40.376],[5.748,38.498],[9.169,31.569]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[9.541,39.653],[7.646,37.41],[9.077,37.041]]}]},{"t":39}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[151.5,168]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":130,"t":123,"b":213,"r":184},"ip":29,"op":30,"st":19},{"ddd":0,"ind":45,"ty":4,"nm":"M_bm Outlines","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":42,"s":[100],"e":[0]},{"t":43}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[128,163,0],"e":[128,183,0],"to":[0,3.33333325386047,0],"ti":[0.16666667163372,-3.66666674613953,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[128,183,0],"e":[127,185,0],"to":[-0.16666667163372,3.66666674613953,0],"ti":[0,3.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[127,185,0],"e":[128,163,0],"to":[0,-3.33333325386047,0],"ti":[-0.16666667163372,3.66666674613953,0]},{"t":48}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-22,-45],[-22,45],[22,45]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-28.827,49.841],[11.116,25.71],[-0.681,6.183]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-28.827,49.841],[11.116,25.71],[-0.681,6.183]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-21.22,43.678],[-16.768,35.906],[-20.567,33.73]]}]},{"t":43}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97,167.5]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":68,"t":122,"b":218,"r":119},"ip":29,"op":30,"st":19}]},{"id":"comp_8","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"MisceLinea9","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":41,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":43,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":50,"s":[100],"e":[0]},{"t":52}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[127,166.25,0],"e":[98.5,189.25,0],"to":[-4.75,3.83333325386047,0],"ti":[4.75,-3.83333325386047,0]},{"t":52}]},"a":{"k":[59,75.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":41,"s":[41,41,100],"e":[100,100,100]},{"t":44}]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[8,8]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[8,8]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[222,121,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[58.75,74.75]},"a":{"k":[0,0]},"s":{"k":[113.908,113.908]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":52,"t":68,"b":81,"r":65},"ip":40,"op":6304,"st":4},{"ddd":0,"ind":1,"ty":4,"nm":"MisceLinea8","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":42,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":51,"s":[100],"e":[0]},{"t":55}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[124,153.25,0],"e":[59,178.25,0],"to":[-10.8333330154419,4.16666650772095,0],"ti":[10.8333330154419,-4.16666650772095,0]},{"t":57}]},"a":{"k":[34.5,64.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":40,"s":[0,0,100],"e":[100,100,100]},{"t":42}]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[8,8]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[8,8]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"st","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[35.75,64.25]},"a":{"k":[0,0]},"s":{"k":[133.64,133.64]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":25,"t":53,"b":75,"r":47},"ip":40,"op":6304,"st":4},{"ddd":0,"ind":2,"ty":4,"nm":"MisceLinea7","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":41,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":50,"s":[100],"e":[0]},{"t":52}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[130.25,161.75,0],"e":[160.25,201.75,0],"to":[5,6.66666650772095,0],"ti":[-5,-6.66666650772095,0]},{"t":52}]},"a":{"k":[35.5,64,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":40,"s":[0,0,100],"e":[100,100,100]},{"t":43}]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[8,8]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[8,8]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"st","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[35.75,64.25]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":26,"t":55,"b":74,"r":45},"ip":40,"op":6304,"st":4},{"ddd":0,"ind":3,"ty":4,"nm":"MisceLinea5","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":41,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":42,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":54,"s":[100],"e":[0]},{"t":56}]},"r":{"k":0},"p":{"k":[175.5,121,0]},"a":{"k":[35.5,-6.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0,0],[0.375,-0.125],[0,0]],"o":[[0,0],[-0.125,0.125],[0,0]],"v":[[8.125,1.75],[7.875,1.875],[8,1.75]]}],"e":[{"i":[[0,0],[0.375,-0.125],[0,0]],"o":[[0,0],[-2.909,-2.078],[0,0]],"v":[[13.625,4.5],[13.625,4.125],[8,1.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0.375,-0.125],[0,0]],"o":[[0,0],[-2.909,-2.078],[0,0]],"v":[[13.625,4.5],[13.625,4.125],[8,1.75]]}],"e":[{"i":[[0,0],[2.75,2.75],[0,0]],"o":[[0,0],[-2.528,-2.528],[0,0]],"v":[[15.375,10.5],[13.625,4.125],[8,1.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[0,0],[2.75,2.75],[0,0]],"o":[[0,0],[-2.528,-2.528],[0,0]],"v":[[15.375,10.5],[13.625,4.125],[8,1.75]]}],"e":[{"i":[[0,0],[2.26,3.165],[0,0]],"o":[[0,0],[-0.125,0],[0,0]],"v":[[15.375,10.5],[13.625,4.125],[13.625,4.125]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[0,0],[2.26,3.165],[0,0]],"o":[[0,0],[-0.125,0],[0,0]],"v":[[15.375,10.5],[13.625,4.125],[13.625,4.125]]}],"e":[{"i":[[0,0],[0.25,0.375],[0,0]],"o":[[0,0],[-0.125,0],[0,0]],"v":[[15.375,10.5],[15.375,10.375],[15.375,10.375]]}]},{"t":51}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[75,162,175,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":5,"t":-1,"b":13,"r":18},"ip":41,"op":51,"st":-2},{"ddd":0,"ind":4,"ty":4,"nm":"MisceLinea4","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":52,"s":[100],"e":[0]},{"t":53}]},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":40,"s":[{"i":[[-0.25,0],[0.25,0]],"o":[[0,0],[0.25,0.25]],"v":[[11,-1.5],[11,-1.5]]}],"e":[{"i":[[-0.25,0],[0,-0.5]],"o":[[8,-0.5],[0.25,0.25]],"v":[[11,-1.5],[23,6.5]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":43,"s":[{"i":[[-0.25,0],[0,-0.5]],"o":[[8,-0.5],[0.25,0.25]],"v":[[11,-1.5],[23,6.5]]}],"e":[{"i":[[-0.25,0],[4,-10]],"o":[[10,-0.75],[0.25,0.25]],"v":[[11,-1.5],[26,18.5]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":46,"s":[{"i":[[-0.25,0],[4,-10]],"o":[[10,-0.75],[0.25,0.25]],"v":[[11,-1.5],[26,18.5]]}],"e":[{"i":[[-0.25,0],[2.25,-6.25]],"o":[[2.75,0.75],[0.25,0.25]],"v":[[21.25,0.25],[26,18.5]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":49,"s":[{"i":[[-0.25,0],[2.25,-6.25]],"o":[[2.75,0.75],[0.25,0.25]],"v":[[21.25,0.25],[26,18.5]]}],"e":[{"i":[[-0.25,0],[0.25,-1.5]],"o":[[0,2],[0.25,0.25]],"v":[[25.75,8],[26,18.5]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":51,"s":[{"i":[[-0.25,0],[0.25,-1.5]],"o":[[0,2],[0.25,0.25]],"v":[[25.75,8],[26,18.5]]}],"e":[{"i":[[-0.25,0],[0.25,-1.5]],"o":[[0,2],[0.25,0.25]],"v":[[26.25,17.75],[26,18.5]]}]},{"t":53}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":8,"t":-4,"b":21,"r":29},"ip":40,"op":53,"st":4},{"ddd":0,"ind":5,"ty":4,"nm":"MisceLinea3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.5,-10.188],[-11.5,-10]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.5,-10.188],[-11.5,-58.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.5,-10.188],[-11.5,-58.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.5,-58.438],[-11.5,-58.5]]}]},{"t":51}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-14,"t":-61,"b":-8,"r":-9},"ip":40,"op":51,"st":4},{"ddd":0,"ind":6,"ty":4,"nm":"MisceLinea6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[135,167.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-58.25,32.75],[-58.25,33]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-58.25,32.75],[-65.75,40]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-58.25,32.75],[-65.75,40]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-65.25,39.25],[-65.75,40]]}]},{"t":56}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-68,"t":30,"b":42,"r":-56},"ip":48,"op":56,"st":4},{"ddd":0,"ind":7,"ty":4,"nm":"MisceLinea2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-60.5,34],[-60.5,34]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-60.5,34],[-66,40.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-60.5,34],[-66,40.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-66,40.5],[-66,40.5]]}]},{"t":46}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-68,"t":32,"b":43,"r":-58},"ip":40,"op":46,"st":4},{"ddd":0,"ind":8,"ty":4,"nm":"MisceLinea1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-65,14.75],[-65,15]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-65,14.75],[-57,-7.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-65,14.75],[-57,-7.5]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-57,-7.75],[-57,-7.5]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-67,"t":-10,"b":17,"r":-55},"ip":40,"op":48,"st":4},{"ddd":0,"ind":10,"ty":0,"nm":"flip","refId":"comp_9","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[-100,100,100]}},"w":250,"h":275,"ip":3,"op":81,"st":3},{"ddd":0,"ind":11,"ty":4,"nm":"Yoriginal 8","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[122.41,160.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[28.786,-57.817],[37.642,-73.058],[58.625,-57.933],[60,-58.189],[59.374,-57.933],[28.608,-57.933],[27.723,-57.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.786,-73.817],[38.642,-74.058],[59.625,-58.933],[61,-59.189],[60.374,-58.933],[68.608,-73.933],[67.723,-73.743]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":75,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.786,-73.817],[38.642,-74.058],[59.625,-58.933],[61,-59.189],[60.374,-58.933],[68.608,-73.933],[67.723,-73.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.786,-73.817],[38.642,-74.058],[59.625,-58.933],[61,-59.189],[60.374,-58.933],[68.608,-73.933],[67.723,-73.743]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[255,219,67,255],"e":[255,219,67,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[204,69,51,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[204,69,51,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":560,"t":4,"b":21,"r":602},"ip":72,"op":81,"st":1},{"ddd":0,"ind":12,"ty":4,"nm":"Yoriginal 7","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[122.41,160.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.786,-54.817],[42.642,-29.058],[55.625,-54.933],[57,-55.189],[56.374,-54.933],[25.608,-54.933],[24.723,-54.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[28.786,-56.817],[37.642,-72.058],[58.625,-56.933],[60,-57.189],[59.374,-56.933],[28.608,-56.933],[27.723,-56.743]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[28.786,-56.817],[37.642,-72.058],[58.625,-56.933],[60,-57.189],[59.374,-56.933],[28.608,-56.933],[27.723,-56.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[28.786,-56.817],[37.642,-72.058],[58.625,-56.933],[60,-57.189],[59.374,-56.933],[28.608,-56.933],[27.723,-56.743]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[204,69,51,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[204,69,51,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":557,"t":6,"b":50,"r":593},"ip":69,"op":81,"st":1},{"ddd":0,"ind":13,"ty":4,"nm":"Yoriginal 6","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[122.41,160.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.786,-50.817],[38.642,-25.058],[4.625,-22.933],[6,-23.189],[5.374,-22.933],[21.608,-50.933],[20.723,-50.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.786,-54.817],[42.642,-29.058],[55.625,-54.933],[57,-55.189],[56.374,-54.933],[25.608,-54.933],[24.723,-54.743]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":70,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.786,-54.817],[42.642,-29.058],[55.625,-54.933],[57,-55.189],[56.374,-54.933],[25.608,-54.933],[24.723,-54.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.786,-54.817],[42.642,-29.058],[55.625,-54.933],[57,-55.189],[56.374,-54.933],[25.608,-54.933],[24.723,-54.743]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[204,69,51,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[204,69,51,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":537,"t":23,"b":56,"r":590},"ip":64,"op":81,"st":1},{"ddd":0,"ind":14,"ty":4,"nm":"Yoriginal 5","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[20.786,7.183],[35.642,-22.058],[1.625,-19.933],[3,-20.189],[2.374,-19.933],[20.608,7.067],[19.723,7.257]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.786,-50.817],[38.642,-25.058],[4.625,-22.933],[6,-23.189],[5.374,-22.933],[21.608,-50.933],[20.723,-50.743]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.786,-50.817],[38.642,-25.058],[4.625,-22.933],[6,-23.189],[5.374,-22.933],[21.608,-50.933],[20.723,-50.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.786,-50.817],[38.642,-25.058],[4.625,-22.933],[6,-23.189],[5.374,-22.933],[21.608,-50.933],[20.723,-50.743]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[204,69,51,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[204,69,51,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":534,"t":27,"b":86,"r":572},"ip":60,"op":81,"st":1},{"ddd":0,"ind":15,"ty":4,"nm":"Yoriginal 9","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":32,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":37,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":48,"s":[384],"e":[360]},{"t":55}]},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[17.786,8.183],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[-0.626,-18.933],[17.608,8.067],[16.723,8.257]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[20.786,7.183],[35.642,-22.058],[1.625,-19.933],[3,-20.189],[2.374,-19.933],[20.608,7.067],[19.723,7.257]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[20.786,7.183],[35.642,-22.058],[1.625,-19.933],[3,-20.189],[2.374,-19.933],[20.608,7.067],[19.723,7.257]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[20.786,7.183],[35.642,-22.058],[1.625,-19.933],[3,-20.189],[2.374,-19.933],[20.608,7.067],[19.723,7.257]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":37,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[204,69,51,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[204,69,51,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":516,"t":56,"b":87,"r":569},"ip":56,"op":81,"st":-1},{"ddd":0,"ind":16,"ty":4,"nm":"Yoriginal 13","ks":{"o":{"k":100},"r":{"k":360},"p":{"k":[127.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.286,14.933],[15.392,36.442],[1.625,36.818],[16.108,14.817]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.286,68.558],[15.892,38.442],[2.125,38.818],[15.108,68.442]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.286,68.558],[15.892,38.442],[2.125,38.818],[15.108,68.442]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.286,68.558],[15.892,38.442],[2.125,38.818],[15.108,68.443]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[91,89,130,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":534,"t":93,"b":148,"r":549},"ip":66,"op":81,"st":6},{"ddd":0,"ind":17,"ty":4,"nm":"Yoriginal 11","ks":{"o":{"k":100},"r":{"k":360},"p":{"k":[127.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.786,11.183],[-16.358,10.942],[0.625,36.068],[13.608,11.067]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.286,14.933],[15.392,36.442],[1.625,36.818],[16.108,14.817]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.286,14.933],[15.392,36.442],[1.625,36.818],[16.108,14.817]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.286,14.933],[15.392,36.442],[1.625,36.818],[16.108,14.817]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[91,89,130,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":516,"t":89,"b":116,"r":549},"ip":61,"op":81,"st":4},{"ddd":0,"ind":18,"ty":4,"nm":"Yoriginal 12","ks":{"o":{"k":100},"r":{"k":360},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.036,13.433],[15.392,36.442],[3.875,36.318],[14.858,13.317]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.286,68.933],[15.642,38.442],[4.375,38.318],[16.108,68.817]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.286,68.933],[15.642,38.442],[4.375,38.318],[16.108,68.817]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.286,68.933],[15.642,38.442],[4.375,38.318],[16.108,68.817]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[91,89,130,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":536,"t":91,"b":148,"r":549},"ip":64,"op":81,"st":7},{"ddd":0,"ind":19,"ty":4,"nm":"Yoriginal 10","ks":{"o":{"k":100},"r":{"k":360},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.786,11.183],[-16.358,10.942],[0.625,36.068],[13.608,11.067]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.036,13.433],[15.392,36.442],[3.875,36.318],[14.858,13.317]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.036,13.433],[15.392,36.442],[3.875,36.318],[14.858,13.317]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.036,13.433],[15.392,36.442],[3.875,36.318],[14.858,13.317]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[91,89,130,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":516,"t":89,"b":116,"r":548},"ip":60,"op":81,"st":3},{"ddd":0,"ind":20,"ty":4,"nm":"Yoriginal 14","ks":{"o":{"k":100},"r":{"k":360},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":65,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-16.358,10.942],[2,35.811],[13.608,11.067]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-14.608,72.942],[0.75,37.561],[15.858,73.817]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":69,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-14.608,72.942],[0.75,37.561],[15.858,73.817]]}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-14.608,72.942],[0.75,37.561],[15.858,73.817]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[91,89,130,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":516,"t":89,"b":153,"r":549},"ip":65,"op":81,"st":8},{"ddd":0,"ind":21,"ty":4,"nm":"Yoriginal 3","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":32,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":37,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":48,"s":[384],"e":[360]},{"t":55}]},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[17.786,8.183],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[-0.626,-18.933],[17.608,8.067],[16.723,8.257]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.786,11.183],[-16.358,10.942],[0.625,36.068],[2,35.811],[1.374,36.068],[13.608,11.067],[12.723,11.257]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.786,11.183],[-16.358,10.942],[0.625,36.068],[2,35.811],[1.374,36.068],[13.608,11.067],[12.723,11.257]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.786,11.183],[-16.358,10.942],[0.625,36.068],[2,35.811],[1.374,36.068],[13.608,11.067],[12.723,11.257]]}]},{"t":80}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[91,89,130,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":516,"t":59,"b":115,"r":551},"ip":56,"op":81,"st":-1},{"ddd":0,"ind":22,"ty":4,"nm":"Yoriginal 15","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[128.41,167.975,0]},"a":{"k":[534.727,83.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":81,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[18.022,81.06],[-18.132,81.06],[-18.132,17.094],[-74.219,-80.94],[-35.052,-80.94],[-0.055,-20.683],[34.94,-80.94],[74.108,-80.94],[18.022,17.094]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.723,74.933],[-16.723,74.933],[-16.723,15.758],[-68.608,-74.933],[-32.375,-74.933],[0,-19.189],[32.374,-74.933],[68.608,-74.933],[16.723,15.758]]}]},{"t":85}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":458,"t":-3,"b":160,"r":607},"ip":81,"op":198,"st":81},{"ddd":0,"ind":23,"ty":4,"nm":"Yoriginal 2","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":33,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":38,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":49,"s":[384],"e":[360]},{"t":56}]},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.723,74.933],[-16.723,74.933],[-16.723,15.758],[-68.608,-74.933],[-32.375,-74.933],[0,-19.189],[32.374,-74.933],[68.608,-74.933],[16.723,15.758]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[11.014,72.192],[-20.663,70.114],[-16.986,14.068],[-60.491,-75.051],[-26.174,-72.799],[1.025,-17.992],[35.151,-68.775],[69.469,-66.523],[14.692,16.147]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[11.014,72.192],[-20.663,70.114],[-16.986,14.068],[-60.491,-75.051],[-26.174,-72.799],[1.025,-17.992],[35.151,-68.775],[69.469,-66.523],[14.692,16.147]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.932,70.393],[-9.701,73.067],[-14.432,17.1],[-70.753,-64.525],[-36.484,-67.422],[-1.409,-17.289],[24.754,-72.598],[59.024,-75.494],[17.201,14.427]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.932,70.393],[-9.701,73.067],[-14.432,17.1],[-70.753,-64.525],[-36.484,-67.422],[-1.409,-17.289],[24.754,-72.598],[59.024,-75.494],[17.201,14.427]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[11.014,72.192],[-20.663,70.114],[-16.986,14.068],[-60.491,-75.051],[-26.174,-72.799],[1.025,-17.992],[35.151,-68.775],[69.469,-66.523],[14.692,16.147]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[11.014,72.192],[-20.663,70.114],[-16.986,14.068],[-60.491,-75.051],[-26.174,-72.799],[1.025,-17.992],[35.151,-68.775],[69.469,-66.523],[14.692,16.147]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.932,70.393],[-9.701,73.067],[-14.432,17.1],[-70.753,-64.525],[-36.484,-67.422],[-1.409,-17.289],[24.754,-72.598],[59.024,-75.494],[17.201,14.427]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.932,70.393],[-9.701,73.067],[-14.432,17.1],[-70.753,-64.525],[-36.484,-67.422],[-1.409,-17.289],[24.754,-72.598],[59.024,-75.494],[17.201,14.427]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.723,74.933],[-16.723,74.933],[-16.723,15.758],[-68.608,-74.933],[-32.375,-74.933],[0,-19.189],[32.374,-74.933],[68.608,-74.933],[16.723,15.758]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.723,74.933],[-16.723,74.933],[-16.723,15.758],[-68.608,-74.933],[-32.375,-74.933],[0,-19.189],[32.374,-74.933],[68.608,-74.933],[16.723,15.758]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,83.933],[-17.723,83.933],[-16.723,15.758],[-74.608,-86.933],[-38.375,-86.933],[0,-19.189],[35.374,-79.933],[71.608,-79.933],[16.723,15.758]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,83.933],[-17.723,83.933],[-16.723,15.758],[-74.608,-86.933],[-38.375,-86.933],[0,-19.189],[35.374,-79.933],[71.608,-79.933],[16.723,15.758]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,88.933],[-17.723,88.933],[-16.723,15.757],[-74.608,-91.933],[-38.375,-91.933],[0,-19.189],[35.374,-84.933],[71.608,-84.933],[16.723,15.757]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,88.933],[-17.723,88.933],[-16.723,15.757],[-74.608,-91.933],[-38.375,-91.933],[0,-19.189],[35.374,-84.933],[71.608,-84.933],[16.723,15.757]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,88.933],[-17.723,88.933],[-16.723,15.757],[-74.608,-91.933],[-38.375,-91.933],[0,-19.189],[35.374,-84.933],[71.608,-84.933],[16.723,15.757]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,88.933],[-17.723,88.933],[-16.723,15.757],[-74.608,-91.933],[-38.375,-91.933],[0,-19.189],[35.374,-84.933],[71.608,-84.933],[16.723,15.757]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,83.933],[-17.723,83.933],[-16.723,15.757],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[35.374,-79.933],[71.608,-79.933],[16.723,15.757]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,83.933],[-17.723,83.933],[-16.723,15.757],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[35.374,-79.933],[71.608,-79.933],[16.723,15.757]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,83.933],[-17.723,83.933],[-16.723,15.757],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[-0.626,-18.933],[17.608,8.068],[16.723,15.757]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.723,83.933],[-17.723,83.933],[-16.723,15.757],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[-0.626,-18.933],[17.608,8.068],[16.723,15.757]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.713,1.804],[-12.191,1.804],[-12.918,1.856],[-12.668,0.27],[-2.408,-16.764],[-1.467,-16.94],[-1.895,-16.764],[10.591,1.726],[9.985,1.856]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.713,1.804],[-12.191,1.804],[-12.918,1.856],[-12.668,0.27],[-2.408,-16.764],[-1.467,-16.94],[-1.895,-16.764],[10.591,1.726],[9.985,1.856]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[17.786,8.183],[-15.661,8.183],[-16.723,8.257],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[-0.626,-18.933],[17.608,8.067],[16.723,8.257]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[204,69,51,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":75,"s":[204,69,51,255],"e":[255,219,67,255]},{"t":76}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":457,"t":-14,"b":168,"r":605},"ip":4,"op":6300,"st":0},{"ddd":0,"ind":24,"ty":4,"nm":"Yoriginal","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[128.41,167.975,0]},"a":{"k":[534.727,83.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.723,74.933],[-16.723,74.933],[-16.723,15.758],[-68.608,-74.933],[-32.375,-74.933],[0,-19.189],[32.374,-74.933],[68.608,-74.933],[16.723,15.758]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":463,"t":3,"b":154,"r":602},"ip":0,"op":4,"st":0}]},{"id":"comp_9","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Yoriginal 13","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[122.41,160.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[28.786,-57.817],[37.642,-73.058],[58.625,-57.933],[60,-58.189],[59.374,-57.933],[28.608,-57.933],[27.723,-57.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.786,-73.817],[38.642,-74.058],[59.625,-58.933],[61,-59.189],[60.374,-58.933],[68.608,-73.933],[67.723,-73.743]]}]},{"t":75}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[204,69,51,255],"e":[75,162,175,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":72,"s":[75,162,175,255],"e":[255,219,67,255]},{"t":73}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":560,"t":4,"b":21,"r":602},"ip":72,"op":6301,"st":1},{"ddd":0,"ind":1,"ty":4,"nm":"Yoriginal 12","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[122.41,160.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":69,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.786,-54.817],[42.642,-29.058],[55.625,-54.933],[57,-55.189],[56.374,-54.933],[25.608,-54.933],[24.723,-54.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[28.786,-56.817],[37.642,-72.058],[58.625,-56.933],[60,-57.189],[59.374,-56.933],[28.608,-56.933],[27.723,-56.743]]}]},{"t":72}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":39,"s":[255,219,67,255],"e":[204,69,51,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[204,69,51,255],"e":[75,162,175,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":69,"s":[75,162,175,255],"e":[75,162,175,255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":72,"s":[75,162,175,255],"e":[255,219,67,255]},{"t":73}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":557,"t":6,"b":50,"r":593},"ip":69,"op":6301,"st":1},{"ddd":0,"ind":2,"ty":4,"nm":"Yoriginal 11","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[122.41,160.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.786,-50.817],[38.642,-25.058],[4.625,-22.933],[6,-23.189],[5.374,-22.933],[21.608,-50.933],[20.723,-50.743]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.786,-54.817],[42.642,-29.058],[55.625,-54.933],[57,-55.189],[56.374,-54.933],[25.608,-54.933],[24.723,-54.743]]}]},{"t":70}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":72,"s":[75,162,175,255],"e":[255,219,67,255]},{"t":73}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":537,"t":23,"b":56,"r":590},"ip":64,"op":6301,"st":1},{"ddd":0,"ind":3,"ty":4,"nm":"Yoriginal 10","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":34,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":39,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":50,"s":[384],"e":[360]},{"t":57}]},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[20.786,7.183],[35.642,-22.058],[1.625,-19.933],[3,-20.189],[2.374,-19.933],[20.608,7.067],[19.723,7.257]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[21.786,-50.817],[38.642,-25.058],[4.625,-22.933],[6,-23.189],[5.374,-22.933],[21.608,-50.933],[20.723,-50.743]]}]},{"t":64}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":72,"s":[75,162,175,255],"e":[255,219,67,255]},{"t":73}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":534,"t":27,"b":86,"r":572},"ip":60,"op":6301,"st":1},{"ddd":0,"ind":4,"ty":4,"nm":"Yoriginal 9","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[1.351]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1p351_0p167_0p167"],"t":32,"s":[0],"e":[-57]},{"i":{"x":[0.833],"y":[0.856]},"o":{"x":[0.167],"y":[0.1]},"n":["0p833_0p856_0p167_0p1"],"t":37,"s":[-57],"e":[384]},{"i":{"x":[0.833],"y":[2.689]},"o":{"x":[0.167],"y":[-1.689]},"n":["0p833_2p689_0p167_-1p689"],"t":48,"s":[384],"e":[360]},{"t":55}]},"p":{"k":[125.41,159.975,0]},"a":{"k":[531.727,75.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[17.786,8.183],[-16.358,5.942],[-1.375,-18.933],[0,-19.189],[-0.626,-18.933],[17.608,8.067],[16.723,8.257]]}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[20.786,7.183],[35.642,-22.058],[1.625,-19.933],[3,-20.189],[2.374,-19.933],[20.608,7.067],[19.723,7.257]]}]},{"t":60}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":72,"s":[75,162,175,255],"e":[255,219,67,255]},{"t":73}]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[532.604,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":516,"t":56,"b":87,"r":569},"ip":56,"op":6299,"st":-1}]},{"id":"comp_10","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[110.5,180.75,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[17.125,-18],[17.125,-18]]}],"e":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[17.125,-18],[24.5,-11.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[17.125,-18],[24.5,-11.5]]}],"e":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[24.5,-11.5],[24.5,-11.5]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":14,"t":-21,"b":-9,"r":28},"ip":25,"op":33,"st":-4},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[115.5,173,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[17.125,-18],[17.125,-18]]}],"e":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[17.125,-18],[24.5,-11.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[17.125,-18],[24.5,-11.5]]}],"e":[{"i":[[0,0],[0.25,-0.125]],"o":[[0,0],[-0.125,-0.125]],"v":[[24.5,-11.5],[24.5,-11.5]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":14,"t":-21,"b":-9,"r":28},"ip":24,"op":32,"st":-5},{"ddd":0,"ind":2,"ty":0,"nm":"HumoAdelante","refId":"comp_11","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73,"s":[100],"e":[0]},{"t":84}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":73,"s":[125,137.5,0],"e":[125,97.5,0],"to":[0,-6.66666650772095,0],"ti":[0,6.66666650772095,0]},{"t":89}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":89,"st":0},{"ddd":0,"ind":3,"ty":0,"nm":"Humo1","refId":"comp_12","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":47,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":56,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":76,"s":[100],"e":[0]},{"t":86}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":73,"s":[127.5,238,0],"e":[127.5,208,0],"to":[0,-5,0],"ti":[0,5,0]},{"t":89}]},"a":{"k":[130.5,249,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":47,"s":[52,52,100],"e":[125,125,100]},{"t":56}]}},"w":250,"h":275,"ip":45,"op":89,"st":22},{"ddd":0,"ind":4,"ty":0,"nm":"Humo1","refId":"comp_12","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":42,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":51,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":77,"s":[100],"e":[0]},{"t":86}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":73,"s":[128.5,209,0],"e":[128.5,179,0],"to":[0,-5,0],"ti":[0,5,0]},{"t":89}]},"a":{"k":[130.5,249,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":42,"s":[52,52,100],"e":[105,105,100]},{"t":51}]}},"w":250,"h":275,"ip":40,"op":89,"st":17},{"ddd":0,"ind":5,"ty":0,"nm":"Humo1","refId":"comp_12","ks":{"o":{"k":[{"i":{"x":[0.564],"y":[0.831]},"o":{"x":[0.182],"y":[0]},"n":["0p564_0p831_0p182_0"],"t":67,"s":[0],"e":[100]},{"i":{"x":[0.841],"y":[0.841]},"o":{"x":[0.38],"y":[0.38]},"n":["0p841_0p841_0p38_0p38"],"t":71,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":87,"s":[100],"e":[0]},{"t":92}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":0.78},"o":{"x":0.333,"y":0.22},"n":"0p667_0p78_0p333_0p22","t":67,"s":[167.5,195.232,0],"e":[167.5,130.232,0],"to":[0,-7.35411882400513,0],"ti":[0,1.66666662693024,0]},{"t":92}]},"a":{"k":[130.5,249,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":67,"s":[55,55,100],"e":[75,75,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":83,"s":[75,75,100],"e":[58,58,100]},{"t":92}]}},"w":250,"h":275,"ip":67,"op":92,"st":16},{"ddd":0,"ind":6,"ty":4,"nm":"Doriginal 5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[122.41,167.975,0]},"a":{"k":[386.727,83.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":53,"s":[{"i":[[-2.238,0.354],[0,0.675],[2.237,0.364],[4.63,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[2.237,-0.354],[0,-0.675],[-2.238,-0.364],[0,0],[0,0],[0,0],[0,0],[0,0],[4.163,0]],"v":[[-16.229,73.045],[-12.873,71.501],[-16.229,69.943],[-26.529,69.398],[-31.607,69.398],[-31.607,70.039],[-31.607,72.837],[-31.607,73.576],[-25.829,73.576]]}],"e":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,23.768],[34.304,-9.893],[21.976,-43.875],[-15.866,-55.774],[-34.519,-55.774],[-34.519,-41.788],[-34.519,19.244],[-34.519,35.346],[-13.293,35.346]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":70,"s":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,23.768],[34.304,-9.893],[21.976,-43.875],[-15.866,-55.774],[-34.519,-55.774],[-34.519,-41.788],[-34.519,19.244],[-34.519,35.346],[-13.293,35.346]]}],"e":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,33.768],[34.304,0.108],[21.976,-33.875],[-15.866,-45.774],[-34.519,-45.774],[-34.519,-31.788],[-34.519,29.244],[-34.519,45.346],[-13.293,45.346]]}]},{"t":74}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":53,"s":[{"i":[[-3.891,-0.6],[0,-1.068],[3.794,-0.623],[7.781,0],[0,0],[0,0],[0,0],[0,0]],"o":[[3.89,0.6],[0,1.068],[-3.793,0.623],[0,0],[0,0],[0,0],[0,0],[7.275,0]],"v":[[-9.546,68.96],[-3.71,71.462],[-9.401,73.999],[-26.762,74.932],[-40.71,74.932],[-40.71,71.731],[-40.71,68.061],[-26.296,68.061]]}],"e":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-65.315],[67.965,-10.751],[47.06,44.564],[-16.723,64.932],[-67.965,64.932],[-67.965,-4.875],[-67.965,-84.932],[-15.008,-84.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":70,"s":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-65.315],[67.965,-10.751],[47.06,44.564],[-16.723,64.932],[-67.965,64.932],[-67.965,-4.875],[-67.965,-84.932],[-15.008,-84.932]]}],"e":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-55.315],[67.965,-0.751],[47.06,54.564],[-16.723,74.932],[-67.965,74.932],[-67.965,5.125],[-67.965,-74.932],[-15.008,-74.932]]}]},{"t":74}]},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[393.027,78.613]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":325,"t":-7,"b":154,"r":461},"ip":53,"op":2024,"st":53},{"ddd":0,"ind":7,"ty":0,"nm":"Humo1","refId":"comp_12","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":70,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0.333]},"n":["0p833_0p833_0p333_0p333"],"t":74,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":81,"s":[100],"e":[0]},{"t":86}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":0.266},"o":{"x":0.333,"y":0},"n":"0p667_0p266_0p333_0","t":70,"s":[73.5,164,0],"e":[69.154,128.434,0],"to":[-1.60084545612335,-2.52048015594482,0],"ti":[3.16262006759644,4.97944402694702,0]},{"t":86}]},"a":{"k":[130.5,249,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":70,"s":[39,39,100],"e":[57,57,100]},{"t":86}]}},"w":250,"h":275,"ip":70,"op":92,"st":19},{"ddd":0,"ind":8,"ty":0,"nm":"HumoEstela2","refId":"comp_14","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[115,136.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":1,"op":93,"st":1},{"ddd":0,"ind":9,"ty":0,"nm":"HumoEstela","refId":"comp_15","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":93,"st":0},{"ddd":0,"ind":10,"ty":4,"nm":"Doriginal 4","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[0],"e":[-90]},{"t":15}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[122.41,167.975,0],"e":[122.41,167.975,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":3,"s":[122.41,167.975,0],"e":[122.41,142.975,0],"to":[0,-4.16666650772095,0],"ti":[0,4.5,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":7,"s":[122.41,142.975,0],"e":[122.41,140.975,0],"to":[0,-4.5,0],"ti":[-1.66666662693024,-4.16666650772095,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":11,"s":[122.41,140.975,0],"e":[132.41,167.975,0],"to":[1.66666662693024,4.16666650772095,0],"ti":[-1.66666662693024,-4.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[132.41,167.975,0],"e":[132.41,167.975,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[132.41,167.975,0],"e":[132.41,167.975,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20}]},"a":{"k":[386.727,83.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,33.768],[34.304,0.108],[21.976,-33.875],[-15.866,-45.774],[-34.519,-45.774],[-34.519,-31.788],[-34.519,29.244],[-34.519,45.346],[-13.293,45.346]]}],"e":[{"i":[[-8.219,7],[0.001,13.348],[8.22,7.19],[17.008,-0.001],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.216,-6.998],[-0.001,-13.346],[-8.222,-7.192],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,-0.001]],"v":[[21.972,37.609],[34.297,7.091],[21.966,-23.717],[-15.877,-34.502],[-34.53,-34.501],[-34.529,-21.82],[-34.523,33.512],[-34.522,48.11],[-13.296,48.109]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[-8.219,7],[0.001,13.348],[8.22,7.19],[17.008,-0.001],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.216,-6.998],[-0.001,-13.346],[-8.222,-7.192],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,-0.001]],"v":[[21.972,37.609],[34.297,7.091],[21.966,-23.717],[-15.877,-34.502],[-34.53,-34.501],[-34.529,-21.82],[-34.523,33.512],[-34.522,48.11],[-13.296,48.109]]}],"e":[{"i":[[-8.22,8.133],[0,15.51],[8.219,8.355],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-8.13],[0,-15.508],[-8.221,-8.357],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,31.568],[34.304,-3.89],[21.976,-39.689],[-15.866,-52.224],[-34.519,-52.224],[-34.519,-37.49],[-34.519,26.803],[-34.519,43.765],[-13.293,43.765]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[-8.22,8.133],[0,15.51],[8.219,8.355],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-8.13],[0,-15.508],[-8.221,-8.357],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,31.568],[34.304,-3.89],[21.976,-39.689],[-15.866,-52.224],[-34.519,-52.224],[-34.519,-37.49],[-34.519,26.803],[-34.519,43.765],[-13.293,43.765]]}],"e":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,33.768],[34.304,0.108],[21.976,-33.875],[-15.866,-45.774],[-34.519,-45.774],[-34.519,-31.788],[-34.519,29.244],[-34.519,45.346],[-13.293,45.346]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":11,"s":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[21.976,33.768],[34.304,0.108],[21.976,-33.875],[-15.866,-45.774],[-34.519,-45.774],[-34.519,-31.788],[-34.519,29.244],[-34.519,45.346],[-13.293,45.346]]}],"e":[{"i":[[-7.416,7.72],[0,14.723],[7.415,7.931],[15.345,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[7.414,-7.718],[0,-14.721],[-7.417,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[13.798,0]],"v":[[-14.818,33.768],[-3.696,0.108],[-14.818,-33.875],[-48.96,-45.774],[-65.789,-45.774],[-65.789,-31.788],[-65.789,29.244],[-65.789,45.346],[-46.639,45.346]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[-7.416,7.72],[0,14.723],[7.415,7.931],[15.345,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[7.414,-7.718],[0,-14.721],[-7.417,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[13.798,0]],"v":[[-14.818,33.768],[-3.696,0.108],[-14.818,-33.875],[-48.96,-45.774],[-65.789,-45.774],[-65.789,-31.788],[-65.789,29.244],[-65.789,45.346],[-46.639,45.346]]}],"e":[{"i":[[-7.416,7.72],[0,14.723],[7.415,7.931],[15.345,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[7.414,-7.718],[0,-14.721],[-7.417,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[13.798,0]],"v":[[-14.818,33.768],[-3.696,0.108],[-14.818,-33.875],[-48.96,-45.774],[-65.789,-45.774],[-65.789,-31.788],[-65.789,29.244],[-65.789,45.346],[-46.639,45.346]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[-7.416,7.72],[0,14.723],[7.415,7.931],[15.345,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[7.414,-7.718],[0,-14.721],[-7.417,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[13.798,0]],"v":[[-14.818,33.768],[-3.696,0.108],[-14.818,-33.875],[-48.96,-45.774],[-65.789,-45.774],[-65.789,-31.788],[-65.789,29.244],[-65.789,45.346],[-46.639,45.346]]}],"e":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[-6.024,33.768],[6.304,0.108],[-6.024,-33.875],[-43.866,-45.774],[-62.519,-45.774],[-62.519,-31.788],[-62.519,29.244],[-62.519,45.346],[-41.293,45.346]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[-8.221,7.719],[0,14.723],[8.217,7.933],[17.008,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[8.217,-7.718],[0,-14.721],[-8.221,-7.933],[0,0],[0,0],[0,0],[0,0],[0,0],[15.293,0]],"v":[[-6.024,33.768],[6.304,0.108],[-6.024,-33.875],[-43.866,-45.774],[-62.519,-45.774],[-62.519,-31.788],[-62.519,29.244],[-62.519,45.346],[-41.293,45.346]]}],"e":[{"i":[[-5.887,4.765],[0,9.087],[5.886,4.895],[12.181,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[5.885,-4.764],[0,-9.086],[-5.888,-4.896],[0,0],[0,0],[0,0],[0,0],[0,0],[10.953,0]],"v":[[9.974,21.717],[18.804,0.941],[9.974,-20.034],[-17.129,-27.378],[-23.326,-27.378],[-23.326,-18.745],[-23.326,18.925],[-23.326,28.863],[-15.286,28.863]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":27,"s":[{"i":[[-5.887,4.765],[0,9.087],[5.886,4.895],[12.181,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[5.885,-4.764],[0,-9.086],[-5.888,-4.896],[0,0],[0,0],[0,0],[0,0],[0,0],[10.953,0]],"v":[[9.974,21.717],[18.804,0.941],[9.974,-20.034],[-17.129,-27.378],[-23.326,-27.378],[-23.326,-18.745],[-23.326,18.925],[-23.326,28.863],[-15.286,28.863]]}],"e":[{"i":[[-5.887,5.126],[0,9.775],[5.886,5.265],[12.181,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[5.885,-5.124],[0,-9.774],[-5.888,-5.267],[0,0],[0,0],[0,0],[0,0],[0,0],[10.953,0]],"v":[[9.974,24.294],[18.804,1.946],[9.974,-20.616],[-17.129,-28.516],[-23.326,-28.516],[-23.326,-19.23],[-23.326,21.291],[-23.326,31.981],[-15.286,31.981]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":30,"s":[{"i":[[-5.887,5.126],[0,9.775],[5.886,5.265],[12.181,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[5.885,-5.124],[0,-9.774],[-5.888,-5.267],[0,0],[0,0],[0,0],[0,0],[0,0],[10.953,0]],"v":[[9.974,24.294],[18.804,1.946],[9.974,-20.616],[-17.129,-28.516],[-23.326,-28.516],[-23.326,-19.23],[-23.326,21.291],[-23.326,31.981],[-15.286,31.981]]}],"e":[{"i":[[-5.887,5.126],[0,9.775],[5.886,5.265],[12.181,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[5.885,-5.124],[0,-9.774],[-5.888,-5.267],[0,0],[0,0],[0,0],[0,0],[0,0],[10.953,0]],"v":[[9.974,24.294],[18.804,1.946],[9.974,-20.616],[-17.129,-28.516],[-23.326,-28.516],[-23.326,-19.23],[-23.326,21.291],[-23.326,31.981],[-15.286,31.981]]}]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0},"n":"0p833_0p845_0p167_0","t":37,"s":[{"i":[[-5.887,5.126],[0,9.775],[5.886,5.265],[12.181,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[5.885,-5.124],[0,-9.774],[-5.888,-5.267],[0,0],[0,0],[0,0],[0,0],[0,0],[10.953,0]],"v":[[9.974,24.294],[18.804,1.946],[9.974,-20.616],[-17.129,-28.516],[-23.326,-28.516],[-23.326,-19.23],[-23.326,21.291],[-23.326,31.981],[-15.286,31.981]]}],"e":[{"i":[[-4.039,2.601],[-0.865,5.953],[3.119,3.727],[7.418,1.078],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[4.037,-2.6],[0.865,-5.952],[-3.119,-3.728],[0,0],[0,0],[0,0],[0,0],[0,0],[6.67,0.969]],"v":[[40.697,12.983],[48.051,0.155],[44.671,-14.366],[28.866,-21.575],[25.092,-22.123],[24.27,-16.468],[20.684,8.207],[19.738,14.717],[24.634,15.428]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.155},"n":"0p833_1_0p167_0p155","t":38.077,"s":[{"i":[[-4.039,2.601],[-0.865,5.953],[3.119,3.727],[7.418,1.078],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[4.037,-2.6],[0.865,-5.952],[-3.119,-3.728],[0,0],[0,0],[0,0],[0,0],[0,0],[6.67,0.969]],"v":[[40.697,12.983],[48.051,0.155],[44.671,-14.366],[28.866,-21.575],[25.092,-22.123],[24.27,-16.468],[20.684,8.207],[19.738,14.717],[24.634,15.428]]}],"e":[{"i":[[-3.637,0.801],[-2.234,4.094],[1.262,3.551],[5.102,2.784],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[3.636,-0.801],[2.234,-4.093],[-1.262,-3.552],[0,0],[0,0],[0,0],[0,0],[0,0],[4.587,2.504]],"v":[[66,13.412],[74.806,6.071],[76.266,-5.396],[66.721,-14.899],[64.125,-16.316],[62.003,-12.427],[52.741,4.543],[50.297,9.02],[53.665,10.858]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":39.154,"s":[{"i":[[-3.637,0.801],[-2.234,4.094],[1.262,3.551],[5.102,2.784],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[3.636,-0.801],[2.234,-4.093],[-1.262,-3.552],[0,0],[0,0],[0,0],[0,0],[0,0],[4.587,2.504]],"v":[[66,13.412],[74.806,6.071],[76.266,-5.396],[66.721,-14.899],[64.125,-16.316],[62.003,-12.427],[52.741,4.543],[50.297,9.02],[53.665,10.858]]}],"e":[{"i":[[-2.674,0.162],[-2.046,2.658],[0.498,2.664],[3.312,2.55],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[2.673,-0.161],[2.046,-2.658],[-0.499,-2.665],[0,0],[0,0],[0,0],[0,0],[0,0],[2.978,2.293]],"v":[[89.786,36.69],[96.865,32.461],[99.186,24.478],[93.471,16.657],[91.785,15.36],[89.842,17.885],[81.36,28.903],[79.123,31.809],[81.309,33.492]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":40.23,"s":[{"i":[[-2.674,0.162],[-2.046,2.658],[0.498,2.664],[3.312,2.55],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[2.673,-0.161],[2.046,-2.658],[-0.499,-2.665],[0,0],[0,0],[0,0],[0,0],[0,0],[2.978,2.293]],"v":[[89.786,36.69],[96.865,32.461],[99.186,24.478],[93.471,16.657],[91.785,15.36],[89.842,17.885],[81.36,28.903],[79.123,31.809],[81.309,33.492]]}],"e":[{"i":[[-1.925,-0.922],[-2.453,1.06],[-0.684,2.049],[1.321,3.058],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[1.924,0.922],[2.453,-1.06],[0.684,-2.049],[0,0],[0,0],[0,0],[0,0],[0,0],[1.188,2.75]],"v":[[96.401,54.579],[102.968,54.373],[107.674,49.71],[106.719,42.05],[106.047,40.494],[103.716,41.501],[93.544,45.894],[90.861,47.054],[91.732,49.072]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":41.308,"s":[{"i":[[-1.925,-0.922],[-2.453,1.06],[-0.684,2.049],[1.321,3.058],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[1.924,0.922],[2.453,-1.06],[0.684,-2.049],[0,0],[0,0],[0,0],[0,0],[0,0],[1.188,2.75]],"v":[[96.401,54.579],[102.968,54.373],[107.674,49.71],[106.719,42.05],[106.047,40.494],[103.716,41.501],[93.544,45.894],[90.861,47.054],[91.732,49.072]]}],"e":[{"i":[[-1.207,-1.058],[-1.991,0.271],[-0.91,1.345],[0.337,2.482],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[1.207,1.057],[1.991,-0.271],[0.91,-1.345],[0,0],[0,0],[0,0],[0,0],[0,0],[0.303,2.232]],"v":[[106.638,69.058],[111.436,70.239],[115.788,67.816],[116.648,62.075],[116.476,60.812],[114.584,61.069],[106.328,62.191],[104.15,62.487],[104.373,64.125]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":42.385,"s":[{"i":[[-1.207,-1.058],[-1.991,0.271],[-0.91,1.345],[0.337,2.482],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[1.207,1.057],[1.991,-0.271],[0.91,-1.345],[0,0],[0,0],[0,0],[0,0],[0,0],[0.303,2.232]],"v":[[106.638,69.058],[111.436,70.239],[115.788,67.816],[116.648,62.075],[116.476,60.812],[114.584,61.069],[106.328,62.191],[104.15,62.487],[104.373,64.125]]}],"e":[{"i":[[-0.713,-0.949],[-1.483,-0.107],[-0.864,0.836],[-0.133,1.848],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0.713,0.949],[1.483,0.107],[0.864,-0.836],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.12,1.662]],"v":[[108.122,70.558],[111.416,72.142],[114.936,71.049],[116.432,67.024],[116.5,66.084],[115.091,65.982],[108.943,65.538],[107.321,65.421],[107.233,66.641]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":43.462,"s":[{"i":[[-0.713,-0.949],[-1.483,-0.107],[-0.864,0.836],[-0.133,1.848],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0.713,0.949],[1.483,0.107],[0.864,-0.836],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.12,1.662]],"v":[[108.122,70.558],[111.416,72.142],[114.936,71.049],[116.432,67.024],[116.5,66.084],[115.091,65.982],[108.943,65.538],[107.321,65.421],[107.233,66.641]]}],"e":[{"i":[[-0.35,-0.999],[-1.232,-0.491],[-0.96,0.478],[-0.612,1.535],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0.35,0.999],[1.232,0.491],[0.96,-0.478],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.55,1.381]],"v":[[103.926,80.201],[106.3,82.436],[109.587,82.457],[111.944,79.437],[112.256,78.656],[111.085,78.189],[105.977,76.154],[104.63,75.617],[104.226,76.631]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":45.615,"s":[{"i":[[-0.35,-0.999],[-1.232,-0.491],[-0.96,0.478],[-0.612,1.535],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0.35,0.999],[1.232,0.491],[0.96,-0.478],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.55,1.381]],"v":[[103.926,80.201],[106.3,82.436],[109.587,82.457],[111.944,79.437],[112.256,78.656],[111.085,78.189],[105.977,76.154],[104.63,75.617],[104.226,76.631]]}],"e":[{"i":[[0.039,-0.693],[-0.622,-0.606],[-0.701,0.048],[-0.756,0.776],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.039,0.693],[0.622,0.606],[0.701,-0.048],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.679,0.698]],"v":[[92.556,88.571],[93.432,90.52],[95.416,91.357],[97.601,90.121],[97.985,89.726],[97.394,89.15],[94.813,86.637],[94.132,85.974],[93.633,86.486]]}]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0},"n":"0p833_0p845_0p167_0","t":47.77,"s":[{"i":[[0.039,-0.693],[-0.622,-0.606],[-0.701,0.048],[-0.756,0.776],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.039,0.693],[0.622,0.606],[0.701,-0.048],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.679,0.698]],"v":[[92.556,88.571],[93.432,90.52],[95.416,91.357],[97.601,90.121],[97.985,89.726],[97.394,89.15],[94.813,86.637],[94.132,85.974],[93.633,86.486]]}],"e":[{"i":[[0.208,-0.474],[-0.277,-0.587],[-0.503,-0.149],[-0.731,0.345],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.208,0.474],[0.277,0.587],[0.503,0.149],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.657,0.31]],"v":[[83.196,91.283],[83.3,92.874],[84.469,93.978],[86.32,93.684],[86.692,93.509],[86.429,92.951],[85.28,90.519],[84.977,89.878],[84.495,90.106]]}]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.155},"n":"0p833_0p845_0p167_0p155","t":48.846,"s":[{"i":[[0.208,-0.474],[-0.277,-0.587],[-0.503,-0.149],[-0.731,0.345],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.208,0.474],[0.277,0.587],[0.503,0.149],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.657,0.31]],"v":[[83.196,91.283],[83.3,92.874],[84.469,93.978],[86.32,93.684],[86.692,93.509],[86.429,92.951],[85.28,90.519],[84.977,89.878],[84.495,90.106]]}],"e":[{"i":[[0.147,-0.266],[-0.13,-0.358],[-0.285,-0.115],[-0.446,0.162],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.147,0.266],[0.13,0.358],[0.285,0.115],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.401,0.146]],"v":[[72.388,97.752],[72.361,98.688],[72.984,99.396],[74.082,99.325],[74.308,99.243],[74.185,98.903],[73.647,97.42],[73.505,97.028],[73.21,97.135]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.155},"n":"0p833_1_0p167_0p155","t":49.923,"s":[{"i":[[0.147,-0.266],[-0.13,-0.358],[-0.285,-0.115],[-0.446,0.162],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.147,0.266],[0.13,0.358],[0.285,0.115],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.401,0.146]],"v":[[72.388,97.752],[72.361,98.688],[72.984,99.396],[74.082,99.325],[74.308,99.243],[74.185,98.903],[73.647,97.42],[73.505,97.028],[73.21,97.135]]}],"e":[{"i":[[0.032,-0.047],[-0.018,-0.068],[-0.051,-0.026],[-0.085,0.023],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.032,0.047],[0.018,0.068],[0.051,0.026],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.077,0.02]],"v":[[69.492,100.967],[69.471,101.139],[69.575,101.281],[69.779,101.286],[69.823,101.274],[69.805,101.209],[69.73,100.926],[69.71,100.851],[69.654,100.866]]}]},{"t":51}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-55.315],[67.965,-0.751],[47.06,54.564],[-16.723,74.932],[-67.965,74.932],[-67.965,5.125],[-67.965,-74.932],[-15.008,-74.932]]}],"e":[{"i":[[-14.294,-11.857],[-0.002,-21.12],[13.933,-12.313],[28.585,-0.002],[0,0],[0,0],[0,0],[0,0]],"o":[[14.292,11.856],[0.002,21.124],[-13.935,12.314],[0,0],[0,0],[0,0],[0,0],[26.726,-0.002]],"v":[[46.513,-43.157],[67.958,6.31],[47.058,56.462],[-16.723,74.933],[-67.965,74.937],[-67.971,11.648],[-67.978,-60.933],[-15.021,-60.937]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[-14.294,-11.857],[-0.002,-21.12],[13.933,-12.313],[28.585,-0.002],[0,0],[0,0],[0,0],[0,0]],"o":[[14.292,11.856],[0.002,21.124],[-13.935,12.314],[0,0],[0,0],[0,0],[0,0],[26.726,-0.002]],"v":[[46.513,-43.157],[67.958,6.31],[47.058,56.462],[-16.723,74.933],[-67.965,74.937],[-67.971,11.648],[-67.978,-60.933],[-15.021,-60.937]]}],"e":[{"i":[[-14.293,-13.779],[0,-24.54],[13.934,-14.305],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.777],[0,24.545],[-13.936,14.307],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-62.274],[67.965,-4.795],[47.06,53.476],[-16.723,74.932],[-67.965,74.932],[-67.965,1.395],[-67.965,-82.939],[-15.008,-82.939]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[-14.293,-13.779],[0,-24.54],[13.934,-14.305],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.777],[0,24.545],[-13.936,14.307],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-62.274],[67.965,-4.795],[47.06,53.476],[-16.723,74.932],[-67.965,74.932],[-67.965,1.395],[-67.965,-82.939],[-15.008,-82.939]]}],"e":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-55.315],[67.965,-0.751],[47.06,54.564],[-16.723,74.932],[-67.965,74.932],[-67.965,5.125],[-67.965,-74.932],[-15.008,-74.932]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":11,"s":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[46.525,-55.315],[67.965,-0.751],[47.06,54.564],[-16.723,74.932],[-67.965,74.932],[-67.965,5.125],[-67.965,-74.932],[-15.008,-74.932]]}],"e":[{"i":[[-12.895,-13.08],[0,-23.295],[12.572,-13.579],[25.79,0],[0,0],[0,0],[0,0],[0,0]],"o":[[12.894,13.078],[0,23.3],[-12.573,13.581],[0,0],[0,0],[0,0],[0,0],[24.113,0]],"v":[[7.33,-55.315],[26.674,-0.751],[7.813,54.564],[-49.733,74.932],[-95.965,74.932],[-95.965,5.125],[-95.965,-74.932],[-48.186,-74.932]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[-12.895,-13.08],[0,-23.295],[12.572,-13.579],[25.79,0],[0,0],[0,0],[0,0],[0,0]],"o":[[12.894,13.078],[0,23.3],[-12.573,13.581],[0,0],[0,0],[0,0],[0,0],[24.113,0]],"v":[[7.33,-55.315],[26.674,-0.751],[7.813,54.564],[-49.733,74.932],[-95.965,74.932],[-95.965,5.125],[-95.965,-74.932],[-48.186,-74.932]]}],"e":[{"i":[[-12.895,-13.08],[0,-23.295],[12.572,-13.579],[25.79,0],[0,0],[0,0],[0,0],[0,0]],"o":[[12.894,13.078],[0,23.3],[-12.573,13.581],[0,0],[0,0],[0,0],[0,0],[24.113,0]],"v":[[7.33,-55.315],[26.674,-0.751],[7.813,54.564],[-49.733,74.932],[-95.965,74.932],[-95.965,5.125],[-95.965,-74.932],[-48.186,-74.932]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[-12.895,-13.08],[0,-23.295],[12.572,-13.579],[25.79,0],[0,0],[0,0],[0,0],[0,0]],"o":[[12.894,13.078],[0,23.3],[-12.573,13.581],[0,0],[0,0],[0,0],[0,0],[24.113,0]],"v":[[7.33,-55.315],[26.674,-0.751],[7.813,54.564],[-49.733,74.932],[-95.965,74.932],[-95.965,5.125],[-95.965,-74.932],[-48.186,-74.932]]}],"e":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-55.315],[39.965,-0.751],[19.06,54.564],[-44.723,74.932],[-95.965,74.932],[-95.965,5.125],[-95.965,-74.932],[-43.008,-74.932]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[-14.295,-13.078],[0,-23.295],[13.937,-13.577],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,13.078],[0,23.3],[-13.936,13.581],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-55.315],[39.965,-0.751],[19.06,54.564],[-44.723,74.932],[-95.965,74.932],[-95.965,5.125],[-95.965,-74.932],[-43.008,-74.932]]}],"e":[{"i":[[-14.293,-8.073],[0,-14.378],[13.935,-8.382],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,8.072],[0,14.381],[-13.936,8.383],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-33.267],[39.965,0.411],[19.06,34.554],[-44.723,47.125],[-95.965,47.125],[-79.465,4.538],[-95.965,-45.375],[-43.008,-45.375]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":27,"s":[{"i":[[-14.293,-8.073],[0,-14.378],[13.935,-8.382],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,8.072],[0,14.381],[-13.936,8.383],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-33.267],[39.965,0.411],[19.06,34.554],[-44.723,47.125],[-95.965,47.125],[-79.465,4.538],[-95.965,-45.375],[-43.008,-45.375]]}],"e":[{"i":[[-14.293,-8.684],[0,-15.466],[13.935,-9.016],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,8.683],[0,15.47],[-13.936,9.017],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-34.851],[39.965,1.376],[19.06,38.102],[-44.723,51.625],[-95.965,51.625],[-83.965,5.278],[-95.965,-47.875],[-43.008,-47.875]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":30,"s":[{"i":[[-14.293,-8.684],[0,-15.466],[13.935,-9.016],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,8.683],[0,15.47],[-13.936,9.017],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-34.851],[39.965,1.376],[19.06,38.102],[-44.723,51.625],[-95.965,51.625],[-83.965,5.278],[-95.965,-47.875],[-43.008,-47.875]]}],"e":[{"i":[[-14.293,-8.684],[0,-15.466],[13.935,-9.016],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,8.683],[0,15.47],[-13.936,9.017],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-34.851],[39.965,1.376],[19.06,38.102],[-44.723,51.625],[-95.965,51.625],[-83.965,5.278],[-95.965,-47.875],[-43.008,-47.875]]}]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0},"n":"0p833_0p845_0p167_0","t":37,"s":[{"i":[[-14.293,-8.684],[0,-15.466],[13.935,-9.016],[28.585,0],[0,0],[0,0],[0,0],[0,0]],"o":[[14.291,8.683],[0,15.47],[-13.936,9.017],[0,0],[0,0],[0,0],[0,0],[26.726,0]],"v":[[18.525,-34.851],[39.965,1.376],[19.06,38.102],[-44.723,51.625],[-95.965,51.625],[-83.965,5.278],[-95.965,-47.875],[-43.008,-47.875]]}],"e":[{"i":[[-7.936,-6.553],[1.369,-9.418],[9.284,-4.257],[17.407,2.529],[0,0],[0,0],[0,0],[0,0]],"o":[[7.934,6.552],[-1.369,9.42],[-9.284,4.258],[0,0],[0,0],[0,0],[0,0],[16.275,2.365]],"v":[[51.137,-22.277],[60.988,1.68],[45.008,22.195],[4.97,24.786],[-26.234,20.251],[-14.825,-6.91],[-17.429,-40.34],[14.819,-35.654]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.155},"n":"0p833_1_0p167_0p155","t":38.077,"s":[{"i":[[-7.936,-6.553],[1.369,-9.418],[9.284,-4.257],[17.407,2.529],[0,0],[0,0],[0,0],[0,0]],"o":[[7.934,6.552],[-1.369,9.42],[-9.284,4.258],[0,0],[0,0],[0,0],[0,0],[16.275,2.365]],"v":[[51.137,-22.277],[60.988,1.68],[45.008,22.195],[4.97,24.786],[-26.234,20.251],[-14.825,-6.91],[-17.429,-40.34],[14.819,-35.654]]}],"e":[{"i":[[-4.001,-6.904],[3.535,-6.477],[7.897,-0.591],[11.971,6.534],[0,0],[0,0],[0,0],[0,0]],"o":[[4,6.903],[-3.536,6.479],[-7.897,0.591],[0,0],[0,0],[0,0],[0,0],[11.193,6.109]],"v":[[83.1,-9.403],[83.799,10.669],[66.649,21.271],[36.847,12.356],[15.387,0.643],[31.006,-16.024],[38.13,-41.026],[60.308,-28.922]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":39.154,"s":[{"i":[[-4.001,-6.904],[3.535,-6.477],[7.897,-0.591],[11.971,6.534],[0,0],[0,0],[0,0],[0,0]],"o":[[4,6.903],[-3.536,6.479],[-7.897,0.591],[0,0],[0,0],[0,0],[0,0],[11.193,6.109]],"v":[[83.1,-9.403],[83.799,10.669],[66.649,21.271],[36.847,12.356],[15.387,0.643],[31.006,-16.024],[38.13,-41.026],[60.308,-28.922]]}],"e":[{"i":[[-2.069,-5.353],[3.237,-4.205],[5.676,0.465],[7.772,5.983],[0,0],[0,0],[0,0],[0,0]],"o":[[2.068,5.352],[-3.238,4.206],[-5.677,-0.465],[0,0],[0,0],[0,0],[0,0],[7.267,5.594]],"v":[[104.491,22.397],[102.738,36.735],[89.366,42.346],[69.193,32.672],[55.26,21.946],[68.224,11.856],[76.087,-5.108],[90.486,5.976]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":40.23,"s":[{"i":[[-2.069,-5.353],[3.237,-4.205],[5.676,0.465],[7.772,5.983],[0,0],[0,0],[0,0],[0,0]],"o":[[2.068,5.352],[-3.238,4.206],[-5.677,-0.465],[0,0],[0,0],[0,0],[0,0],[7.267,5.594]],"v":[[104.491,22.397],[102.738,36.735],[89.366,42.346],[69.193,32.672],[55.26,21.946],[68.224,11.856],[76.087,-5.108],[90.486,5.976]]}],"e":[{"i":[[0.63,-4.53],[3.882,-1.677],[3.774,2.521],[3.099,7.176],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.63,4.529],[-3.883,1.677],[-3.774,-2.521],[0,0],[0,0],[0,0],[0,0],[2.898,6.709]],"v":[[112.175,50.313],[105.406,59.623],[93.92,58.357],[83.609,43.812],[78.054,30.949],[90.989,28.936],[103.031,20.161],[108.773,33.454]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":41.308,"s":[{"i":[[0.63,-4.53],[3.882,-1.677],[3.774,2.521],[3.099,7.176],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.63,4.529],[-3.883,1.677],[-3.774,-2.521],[0,0],[0,0],[0,0],[0,0],[2.898,6.709]],"v":[[112.175,50.313],[105.406,59.623],[93.92,58.357],[83.609,43.812],[78.054,30.949],[90.989,28.936],[103.031,20.161],[108.773,33.454]]}],"e":[{"i":[[1.374,-3.152],[3.151,-0.428],[2.223,2.59],[0.791,5.824],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.374,3.152],[-3.152,0.428],[-2.223,-2.59],[0,0],[0,0],[0,0],[0,0],[0.74,5.445]],"v":[[118.925,69.164],[112.138,74.534],[104.076,71.292],[99.556,58.671],[98.138,48.231],[107.913,49.393],[118.41,45.477],[119.876,56.266]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":42.385,"s":[{"i":[[1.374,-3.152],[3.151,-0.428],[2.223,2.59],[0.791,5.824],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.374,3.152],[-3.152,0.428],[-2.223,-2.59],[0,0],[0,0],[0,0],[0,0],[0.74,5.445]],"v":[[118.925,69.164],[112.138,74.534],[104.076,71.292],[99.556,58.671],[98.138,48.231],[107.913,49.393],[118.41,45.477],[119.876,56.266]]}],"e":[{"i":[[1.474,-2.074],[2.347,0.169],[1.215,2.213],[-0.313,4.337],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.474,2.073],[-2.347,-0.169],[-1.215,-2.213],[0,0],[0,0],[0,0],[0,0],[-0.293,4.055]],"v":[[117.002,72.503],[111.271,75.359],[105.928,71.785],[104.575,61.959],[105.136,54.185],[112.037,56.513],[120.232,55.275],[119.652,63.309]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":43.462,"s":[{"i":[[1.474,-2.074],[2.347,0.169],[1.215,2.213],[-0.313,4.337],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.474,2.073],[-2.347,-0.169],[-1.215,-2.213],[0,0],[0,0],[0,0],[0,0],[-0.293,4.055]],"v":[[117.002,72.503],[111.271,75.359],[105.928,71.785],[104.575,61.959],[105.136,54.185],[112.037,56.513],[120.232,55.275],[119.652,63.309]]}],"e":[{"i":[[1.812,-1.365],[1.95,0.777],[0.437,2.21],[-1.436,3.603],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.812,1.365],[-1.95,-0.777],[-0.437,-2.21],[0,0],[0,0],[0,0],[0,0],[-1.342,3.369]],"v":[[110.952,84.249],[105.309,85.132],[101.729,80.653],[103.228,71.933],[105.802,65.474],[111.042,69.315],[118.344,70.472],[115.684,77.147]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":45.615,"s":[{"i":[[1.812,-1.365],[1.95,0.777],[0.437,2.21],[-1.436,3.603],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.812,1.365],[-1.95,-0.777],[-0.437,-2.21],[0,0],[0,0],[0,0],[0,0],[-1.342,3.369]],"v":[[110.952,84.249],[105.309,85.132],[101.729,80.653],[103.228,71.933],[105.802,65.474],[111.042,69.315],[118.344,70.472],[115.684,77.147]]}],"e":[{"i":[[1.439,-0.372],[0.985,0.96],[-0.29,1.447],[-1.773,1.821],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.439,0.372],[-0.985,-0.96],[0.29,-1.447],[0,0],[0,0],[0,0],[0,0],[-1.658,1.702]],"v":[[95.793,92.784],[92.155,91.903],[91.113,88.294],[94.208,83.392],[97.386,80.129],[99.594,83.768],[103.724,86.3],[100.439,89.673]]}]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0},"n":"0p833_0p845_0p167_0","t":47.77,"s":[{"i":[[1.439,-0.372],[0.985,0.96],[-0.29,1.447],[-1.773,1.821],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.439,0.372],[-0.985,-0.96],[0.29,-1.447],[0,0],[0,0],[0,0],[0,0],[-1.658,1.702]],"v":[[95.793,92.784],[92.155,91.903],[91.113,88.294],[94.208,83.392],[97.386,80.129],[99.594,83.768],[103.724,86.3],[100.439,89.673]]}],"e":[{"i":[[1.104,0.116],[0.438,0.928],[-0.581,0.936],[-1.716,0.81],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.104,-0.116],[-0.438,-0.928],[0.581,-0.936],[0,0],[0,0],[0,0],[0,0],[-1.604,0.757]],"v":[[84.36,95.075],[82.046,93.508],[82.26,90.712],[85.705,88.092],[88.78,86.64],[89.374,89.762],[91.6,92.612],[88.422,94.113]]}]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.155},"n":"0p833_0p845_0p167_0p155","t":48.846,"s":[{"i":[[1.104,0.116],[0.438,0.928],[-0.581,0.936],[-1.716,0.81],[0,0],[0,0],[0,0],[0,0]],"o":[[-1.104,-0.116],[-0.438,-0.928],[0.581,-0.936],[0,0],[0,0],[0,0],[0,0],[-1.604,0.757]],"v":[[84.36,95.075],[82.046,93.508],[82.26,90.712],[85.705,88.092],[88.78,86.64],[89.374,89.762],[91.6,92.612],[88.422,94.113]]}],"e":[{"i":[[0.639,0.128],[0.206,0.566],[-0.39,0.515],[-1.046,0.38],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.639,-0.128],[-0.206,-0.566],[0.39,-0.515],[0,0],[0,0],[0,0],[0,0],[-0.978,0.355]],"v":[[72.861,100.031],[71.594,98.99],[71.872,97.368],[74.027,96.025],[75.903,95.344],[76.079,97.2],[77.225,98.987],[75.286,99.69]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.155},"n":"0p833_1_0p167_0p155","t":49.923,"s":[{"i":[[0.639,0.128],[0.206,0.566],[-0.39,0.515],[-1.046,0.38],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.639,-0.128],[-0.206,-0.566],[0.39,-0.515],[0,0],[0,0],[0,0],[0,0],[-0.978,0.355]],"v":[[72.861,100.031],[71.594,98.99],[71.872,97.368],[74.027,96.025],[75.903,95.344],[76.079,97.2],[77.225,98.987],[75.286,99.69]]}],"e":[{"i":[[0.116,0.034],[0.029,0.108],[-0.081,0.089],[-0.2,0.053],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.116,-0.034],[-0.029,-0.108],[0.081,-0.089],[0,0],[0,0],[0,0],[0,0],[-0.187,0.05]],"v":[[69.542,101.396],[69.324,101.183],[69.402,100.887],[69.823,100.674],[70.182,100.579],[70.184,100.925],[70.366,101.275],[69.996,101.373]]}]},{"t":51}]},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[393.027,78.613]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":297,"t":-5,"b":181,"r":514},"ip":0,"op":51,"st":0}]},{"id":"comp_11","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 10","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":46,"s":[0],"e":[100]},{"t":54}]},"r":{"k":0},"p":{"k":[39.5,205.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-43,124]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-75,"t":92,"b":156,"r":-11},"ip":46,"op":416,"st":46},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 9","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":46,"s":[0],"e":[100]},{"t":54}]},"r":{"k":0},"p":{"k":[183.5,229.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":46,"op":416,"st":46},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 8","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":46,"s":[0],"e":[100]},{"t":54}]},"r":{"k":0},"p":{"k":[137.5,226.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":46,"op":416,"st":46},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 7","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":47,"s":[0],"e":[100]},{"t":55}]},"r":{"k":0},"p":{"k":[138.5,209.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-43,124]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-75,"t":92,"b":156,"r":-11},"ip":47,"op":417,"st":47},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 6","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":47,"s":[0],"e":[100]},{"t":55}]},"r":{"k":0},"p":{"k":[89.5,195.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":47,"op":417,"st":47},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 4","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":46,"s":[0],"e":[100]},{"t":54}]},"r":{"k":0},"p":{"k":[68.5,207.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-43,124]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-75,"t":92,"b":156,"r":-11},"ip":46,"op":416,"st":46},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 5","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":46,"s":[0],"e":[100]},{"t":54}]},"r":{"k":0},"p":{"k":[115.5,190.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":46,"op":416,"st":46},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 3","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":46,"s":[0],"e":[100]},{"t":54}]},"r":{"k":0},"p":{"k":[144.5,206.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":46,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":350,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":358,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":366}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":46,"op":416,"st":46},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":47,"s":[0],"e":[100]},{"t":55}]},"r":{"k":0},"p":{"k":[89.5,195.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[36,36],"e":[47,47],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[47,47],"e":[36,36],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-43,124]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-75,"t":92,"b":156,"r":-11},"ip":47,"op":417,"st":47},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":47,"s":[0],"e":[100]},{"t":55}]},"r":{"k":0},"p":{"k":[89.5,195.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":47,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":47,"op":417,"st":47}]},{"id":"comp_12","layers":[{"ddd":0,"ind":0,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[185,250.5,0]},"a":{"k":[28,29.5,0]},"s":{"k":[100,100,100]}},"w":56,"h":59,"ip":20,"op":6320,"st":20},{"ddd":0,"ind":1,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[163,252,0]},"a":{"k":[28,29.5,0]},"s":{"k":[136,136,100]}},"w":56,"h":59,"ip":21,"op":6321,"st":21},{"ddd":0,"ind":2,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[150,241.5,0]},"a":{"k":[28,29.5,0]},"s":{"k":[136,136,100]}},"w":56,"h":59,"ip":19,"op":6319,"st":19},{"ddd":0,"ind":3,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[130.5,251.5,0]},"a":{"k":[28,29.5,0]},"s":{"k":[100,100,100]}},"w":56,"h":59,"ip":20,"op":6320,"st":20},{"ddd":0,"ind":4,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[115.5,237,0]},"a":{"k":[28,29.5,0]},"s":{"k":[136,136,100]}},"w":56,"h":59,"ip":19,"op":6319,"st":19},{"ddd":0,"ind":5,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[102.5,257,0]},"a":{"k":[28,29.5,0]},"s":{"k":[100,100,100]}},"w":56,"h":59,"ip":21,"op":6321,"st":21},{"ddd":0,"ind":6,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[88,243,0]},"a":{"k":[28,29.5,0]},"s":{"k":[136,136,100]}},"w":56,"h":59,"ip":23,"op":6323,"st":23},{"ddd":0,"ind":7,"ty":0,"nm":"Humo","refId":"comp_13","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[64.5,249,0]},"a":{"k":[28,29.5,0]},"s":{"k":[100,100,100]}},"w":56,"h":59,"ip":23,"op":6323,"st":23}]},{"id":"comp_13","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[26.5,27.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":0,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":8,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":16,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":24,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":32,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":40,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":48,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":312,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":320}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_1_0p167_0p167","0p833_1_0p167_0p167"],"t":0,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":8,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":16,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":24,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":32,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":40,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":48,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":312,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":320}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":0,"op":370,"st":0}]},{"id":"comp_14","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 31","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":74,"s":[100],"e":[0]},{"t":80.5791015625}]},"r":{"k":0},"p":{"k":[215.5,72,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":48,"op":81,"st":48},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 30","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":74,"s":[100],"e":[0]},{"t":80.5791015625}]},"r":{"k":0},"p":{"k":[222,81,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":48,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":49,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":48,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":49,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":103,"b":115,"r":-65},"ip":48,"op":81,"st":48},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 29","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":74,"s":[100],"e":[0]},{"t":80.5791015625}]},"r":{"k":0},"p":{"k":[216.5,77.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":48,"op":81,"st":48},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 28","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73.685,"s":[100],"e":[0]},{"t":80.263671875}]},"r":{"k":0},"p":{"k":[208.5,61,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":47,"op":81,"st":47},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 27","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73.685,"s":[100],"e":[0]},{"t":80.263671875}]},"r":{"k":0},"p":{"k":[215,70,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":103,"b":115,"r":-65},"ip":47,"op":81,"st":47},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 26","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73.685,"s":[100],"e":[0]},{"t":80.263671875}]},"r":{"k":0},"p":{"k":[209.5,66.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":47,"op":81,"st":47},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 25","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[178,58,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":44,"op":81,"st":44},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 24","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[201,48.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":47,"op":81,"st":47},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 22","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[207.5,57.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":103,"b":115,"r":-65},"ip":47,"op":81,"st":47},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 32","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[202,54,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.989,0.989]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p989_0p167_0p167","0p833_0p989_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-1.548,-1.548]},"n":["0p833_1_0p167_-1p548","0p833_1_0p167_-1p548"],"t":47,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.989,0.989]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p989_0p167_0p167","0p833_0p989_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-1.548,-1.548]},"n":["0p833_1_0p167_-1p548","0p833_1_0p167_-1p548"],"t":47,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":46,"op":81,"st":44},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 18","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[195.25,54.375,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.99,0.99]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p99_0p167_0p167","0p833_0p99_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.178,-0.178]},"n":["0p833_1_0p167_-0p178","0p833_1_0p167_-0p178"],"t":47,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.99,0.99]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p99_0p167_0p167","0p833_0p99_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.178,-0.178]},"n":["0p833_1_0p167_-0p178","0p833_1_0p167_-0p178"],"t":47,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":46,"op":81,"st":39},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 23","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[174.5,51.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":44,"op":81,"st":44},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 21","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[178,58,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":45,"op":81,"st":45},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 20","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[191.5,48.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":45,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":46,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":45,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":46,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":45,"op":81,"st":45},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 19","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":67.105,"s":[100],"e":[0]},{"t":73.6845703125}]},"r":{"k":0},"p":{"k":[174.5,51.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":45,"op":81,"st":45},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 17","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":67.105,"s":[100],"e":[0]},{"t":73.6845703125}]},"r":{"k":0},"p":{"k":[87.5,165.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":44,"op":81,"st":44},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 16","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":67.105,"s":[100],"e":[0]},{"t":73.6845703125}]},"r":{"k":0},"p":{"k":[103.5,142.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":44,"op":81,"st":44},{"ddd":0,"ind":17,"ty":4,"nm":"Shape Layer 15","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[155.5,64.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":41,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":42,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":41,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":42,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":41,"op":81,"st":41},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 13","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[172.5,51.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":41,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":42,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":41,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":42,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":41,"op":81,"st":41},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 12","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[132.5,84.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":40,"op":81,"st":40},{"ddd":0,"ind":20,"ty":4,"nm":"Shape Layer 10","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[142.5,74.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":40,"op":81,"st":40},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 11","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":61.842,"s":[100],"e":[0]},{"t":68.4208984375}]},"r":{"k":0},"p":{"k":[151.5,75.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":40,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":41,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":40,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":41,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":40,"op":81,"st":40},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 9","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":61.842,"s":[100],"e":[0]},{"t":68.4208984375}]},"r":{"k":0},"p":{"k":[130.5,92.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":39,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":40,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":39,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":40,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":39,"op":81,"st":39},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 8","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":61.842,"s":[100],"e":[0]},{"t":68.4208984375}]},"r":{"k":0},"p":{"k":[116.5,104.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":39,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":40,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":39,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":40,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-96,"t":84,"b":134,"r":-46},"ip":39,"op":81,"st":39},{"ddd":0,"ind":24,"ty":4,"nm":"Shape Layer 4","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":59.211,"s":[100],"e":[0]},{"t":65.7890625}]},"r":{"k":0},"p":{"k":[98.5,124.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":39,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":40,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":39,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":40,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":39,"op":81,"st":39},{"ddd":0,"ind":25,"ty":4,"nm":"Shape Layer 6","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":59.211,"s":[100],"e":[0]},{"t":65.7890625}]},"r":{"k":0},"p":{"k":[93.5,148.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":38,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":39,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":38,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":39,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":38,"op":81,"st":38},{"ddd":0,"ind":26,"ty":4,"nm":"Shape Layer 5","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":59.211,"s":[100],"e":[0]},{"t":65.7890625}]},"r":{"k":0},"p":{"k":[114.5,155.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":38,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":39,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":38,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":39,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-96,"t":84,"b":134,"r":-46},"ip":38,"op":81,"st":38},{"ddd":0,"ind":27,"ty":4,"nm":"Shape Layer 3","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":56.579,"s":[100],"e":[0]},{"t":63.158203125}]},"r":{"k":0},"p":{"k":[141.5,177.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":37,"op":81,"st":37},{"ddd":0,"ind":28,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":56.579,"s":[100],"e":[0]},{"t":63.158203125}]},"r":{"k":0},"p":{"k":[120.5,179.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":37,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":38,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":37,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":38,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-96,"t":84,"b":134,"r":-46},"ip":37,"op":81,"st":37},{"ddd":0,"ind":29,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":56.579,"s":[100],"e":[0]},{"t":63.158203125}]},"r":{"k":0},"p":{"k":[94.5,182.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":37,"op":81,"st":37}]},{"id":"comp_15","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 31","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":74,"s":[100],"e":[0]},{"t":80.5791015625}]},"r":{"k":0},"p":{"k":[215.5,72,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":48,"op":81,"st":48},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 30","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":74,"s":[100],"e":[0]},{"t":80.5791015625}]},"r":{"k":0},"p":{"k":[222,81,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":48,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":49,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":48,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":49,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":103,"b":115,"r":-65},"ip":48,"op":81,"st":48},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 29","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":74,"s":[100],"e":[0]},{"t":80.5791015625}]},"r":{"k":0},"p":{"k":[216.5,77.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":48,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":49,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":352,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":360,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":368}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":48,"op":81,"st":48},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 28","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73.685,"s":[100],"e":[0]},{"t":80.263671875}]},"r":{"k":0},"p":{"k":[208.5,61,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":47,"op":81,"st":47},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 27","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73.685,"s":[100],"e":[0]},{"t":80.263671875}]},"r":{"k":0},"p":{"k":[215,70,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":103,"b":115,"r":-65},"ip":47,"op":81,"st":47},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 26","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73.685,"s":[100],"e":[0]},{"t":80.263671875}]},"r":{"k":0},"p":{"k":[209.5,66.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":47,"op":81,"st":47},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 25","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[178,58,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":44,"op":81,"st":44},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 24","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[201,48.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":47,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":48,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":47,"op":81,"st":47},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 22","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[207.5,57.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.995,0.995]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p995_0p167_0p167","0p833_0p995_0p167_0p167"],"t":47,"s":[0,0],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.156,-0.156]},"n":["0p833_1_0p167_-0p156","0p833_1_0p167_-0p156"],"t":48,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":351,"s":[4,4],"e":[8,8],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":359,"s":[8,8],"e":[4,4],"__fnct":[null,null]},{"t":367}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":103,"b":115,"r":-65},"ip":47,"op":81,"st":47},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 32","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":72.369,"s":[100],"e":[0]},{"t":78.947265625}]},"r":{"k":0},"p":{"k":[202,54,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.989,0.989]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p989_0p167_0p167","0p833_0p989_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-1.548,-1.548]},"n":["0p833_1_0p167_-1p548","0p833_1_0p167_-1p548"],"t":47,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.989,0.989]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p989_0p167_0p167","0p833_0p989_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-1.548,-1.548]},"n":["0p833_1_0p167_-1p548","0p833_1_0p167_-1p548"],"t":47,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[10,10],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[11,11],"e":[10,10],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":46,"op":81,"st":44},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 18","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[195.25,54.375,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.99,0.99]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p99_0p167_0p167","0p833_0p99_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.178,-0.178]},"n":["0p833_1_0p167_-0p178","0p833_1_0p167_-0p178"],"t":47,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.99,0.99]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p99_0p167_0p167","0p833_0p99_0p167_0p167"],"t":46,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.178,-0.178]},"n":["0p833_1_0p167_-0p178","0p833_1_0p167_-0p178"],"t":47,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":46,"op":81,"st":39},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 23","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[174.5,51.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":44,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":45,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":44,"op":81,"st":44},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 21","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[178,58,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":45,"op":81,"st":45},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 20","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69.737,"s":[100],"e":[0]},{"t":76.31640625}]},"r":{"k":0},"p":{"k":[191.5,48.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":45,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":46,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.994,0.994]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p994_0p167_0p167","0p833_0p994_0p167_0p167"],"t":45,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.188,-0.188]},"n":["0p833_1_0p167_-0p188","0p833_1_0p167_-0p188"],"t":46,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[6,6],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[11,11],"e":[6,6],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-79,"t":101,"b":117,"r":-63},"ip":45,"op":81,"st":45},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 19","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":67.105,"s":[100],"e":[0]},{"t":73.6845703125}]},"r":{"k":0},"p":{"k":[174.5,51.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.98,0.98]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p98_0p167_0p167","0p833_0p98_0p167_0p167"],"t":45,"s":[0,0],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.332,0.332]},"n":["0p833_1_0p167_0p332","0p833_1_0p167_0p332"],"t":46,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":349,"s":[17,17],"e":[9,9],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":357,"s":[9,9],"e":[17,17],"__fnct":[null,null]},{"t":365}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-77,"t":90,"b":114,"r":-53},"ip":45,"op":81,"st":45},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 17","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":67.105,"s":[100],"e":[0]},{"t":73.6845703125}]},"r":{"k":0},"p":{"k":[87.5,165.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":44,"op":81,"st":44},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 16","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":67.105,"s":[100],"e":[0]},{"t":73.6845703125}]},"r":{"k":0},"p":{"k":[103.5,142.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":44,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":45,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":60,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":68,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":76,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":84,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":92,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":100,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":108,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":116,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":124,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":132,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":140,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":148,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":156,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":164,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":172,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":180,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":188,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":196,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":204,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":212,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":220,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":228,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":236,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":244,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":252,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":260,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":268,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":276,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":284,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":292,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":300,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":308,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":316,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":324,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":332,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":340,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":348,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":356,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":364}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":44,"op":81,"st":44},{"ddd":0,"ind":17,"ty":4,"nm":"Shape Layer 15","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[155.5,64.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":41,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":42,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":41,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":42,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":41,"op":81,"st":41},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 13","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[172.5,51.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":41,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":42,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":41,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":42,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":57,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":65,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":73,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":81,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":89,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":97,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":105,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":113,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":121,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":129,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":137,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":145,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":153,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":161,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":169,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":177,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":185,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":193,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":201,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":209,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":217,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":225,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":233,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":241,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":249,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":257,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":265,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":273,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":281,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":289,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":297,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":305,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":313,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":321,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":329,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":337,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":345,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":353,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":361}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":41,"op":81,"st":41},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 12","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[132.5,84.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":40,"op":81,"st":40},{"ddd":0,"ind":20,"ty":4,"nm":"Shape Layer 10","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64.474,"s":[100],"e":[0]},{"t":71.052734375}]},"r":{"k":0},"p":{"k":[142.5,74.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.986,0.986]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p986_0p167_0p167","0p833_0p986_0p167_0p167"],"t":40,"s":[0,0],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.558,0.558]},"n":["0p833_1_0p167_0p558","0p833_1_0p167_0p558"],"t":41,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[18,18],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[18,18],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65,102]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-82,"t":85,"b":119,"r":-48},"ip":40,"op":81,"st":40},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 11","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":61.842,"s":[100],"e":[0]},{"t":68.4208984375}]},"r":{"k":0},"p":{"k":[151.5,75.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":40,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":41,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":40,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":41,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":56,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":64,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":72,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":80,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":88,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":96,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":104,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":112,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":120,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":128,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":136,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":144,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":152,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":160,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":168,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":176,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":184,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":192,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":200,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":208,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":216,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":224,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":232,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":240,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":248,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":256,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":264,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":272,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":280,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":288,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":296,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":304,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":312,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":320,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":328,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":336,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":344,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":352,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":360}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":40,"op":81,"st":40},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 9","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":61.842,"s":[100],"e":[0]},{"t":68.4208984375}]},"r":{"k":0},"p":{"k":[130.5,92.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":39,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":40,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":39,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":40,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":39,"op":81,"st":39},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 8","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":61.842,"s":[100],"e":[0]},{"t":68.4208984375}]},"r":{"k":0},"p":{"k":[116.5,104.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":39,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":40,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":39,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":40,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-96,"t":84,"b":134,"r":-46},"ip":39,"op":81,"st":39},{"ddd":0,"ind":24,"ty":4,"nm":"Shape Layer 4","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":59.211,"s":[100],"e":[0]},{"t":65.7890625}]},"r":{"k":0},"p":{"k":[98.5,124.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":39,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":40,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":39,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":40,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":55,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":63,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":71,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":79,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":87,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":95,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":103,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":111,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":119,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":135,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":143,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":151,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":159,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":167,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":175,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":191,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":199,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":207,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":215,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":223,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":231,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":239,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":247,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":255,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":263,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":271,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":279,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":287,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":295,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":303,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":311,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":319,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":327,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":335,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":343,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":351,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":359}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":39,"op":81,"st":39},{"ddd":0,"ind":25,"ty":4,"nm":"Shape Layer 6","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":59.211,"s":[100],"e":[0]},{"t":65.7890625}]},"r":{"k":0},"p":{"k":[93.5,148.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":38,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":39,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.976,0.976]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p976_0p167_0p167","0p833_0p976_0p167_0p167"],"t":38,"s":[0,0],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.279,0.279]},"n":["0p833_1_0p167_0p279","0p833_1_0p167_0p279"],"t":39,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[25,25],"e":[11,11],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[11,11],"e":[25,25],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-88,"t":92,"b":126,"r":-54},"ip":38,"op":81,"st":38},{"ddd":0,"ind":26,"ty":4,"nm":"Shape Layer 5","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":59.211,"s":[100],"e":[0]},{"t":65.7890625}]},"r":{"k":0},"p":{"k":[114.5,155.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":38,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":39,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":38,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":39,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":54,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":62,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":70,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":78,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":86,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":94,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":102,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":110,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":118,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":126,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":134,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":142,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":150,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":158,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":166,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":174,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":182,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":190,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":198,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":206,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":214,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":222,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":230,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":238,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":246,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":254,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":262,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":270,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":278,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":286,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":294,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":302,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":310,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":318,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":326,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":334,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":342,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":350,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":358}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-96,"t":84,"b":134,"r":-46},"ip":38,"op":81,"st":38},{"ddd":0,"ind":27,"ty":4,"nm":"Shape Layer 3","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":56.579,"s":[100],"e":[0]},{"t":63.158203125}]},"r":{"k":0},"p":{"k":[141.5,177.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":37,"op":81,"st":37},{"ddd":0,"ind":28,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":56.579,"s":[100],"e":[0]},{"t":63.158203125}]},"r":{"k":0},"p":{"k":[120.5,179.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":37,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":38,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.984,0.984]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p984_0p167_0p167","0p833_0p984_0p167_0p167"],"t":37,"s":[0,0],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.445,0.445]},"n":["0p833_1_0p167_0p445","0p833_1_0p167_0p445"],"t":38,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[37,37],"e":[24,24],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[24,24],"e":[37,37],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-96,"t":84,"b":134,"r":-46},"ip":37,"op":81,"st":37},{"ddd":0,"ind":29,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":56.579,"s":[100],"e":[0]},{"t":63.158203125}]},"r":{"k":0},"p":{"k":[94.5,182.5,0]},"a":{"k":[-72,108,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.993,0.993]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p993_0p167_0p167","0p833_0p993_0p167_0p167"],"t":37,"s":[0,0],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[-0.391,-0.391]},"n":["0p833_1_0p167_-0p391","0p833_1_0p167_-0p391"],"t":38,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":53,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":61,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":69,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":77,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":85,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":93,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":101,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":109,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":117,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":125,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":133,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":141,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":149,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":157,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":165,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":173,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":181,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":189,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":197,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":205,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":213,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":221,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":229,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":237,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":245,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":253,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":261,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":269,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":277,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":285,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":293,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":301,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":309,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":317,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":325,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":333,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0"],"t":341,"s":[25,25],"e":[35,35],"__fnct":[null,null]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0,0]},"n":["0p833_0p833_0p167_0","0p833_0p833_0p167_0"],"t":349,"s":[35,35],"e":[25,25],"__fnct":[null,null]},{"t":357}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","closed":true},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Ellipse 1"}],"bounds":{"l":-95,"t":85,"b":133,"r":-47},"ip":37,"op":81,"st":37}]},{"id":"comp_16","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"gotaVioleta4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[114.377,116.773,0]},"a":{"k":[80.817,52.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[-0.84,0.659],[-1.316,-1.881]],"o":[[0.841,-0.66],[1.552,2.218]],"v":[[-3.474,-3.702],[-5.044,-4.309]]}],"e":[{"i":[[-2.827,2.641],[-1.316,-1.881]],"o":[[2.585,-2.416],[1.552,2.218]],"v":[[2.526,2.798],[-3.794,-3.559]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[-2.827,2.641],[-1.316,-1.881]],"o":[[2.585,-2.416],[1.552,2.218]],"v":[[2.526,2.798],[-3.794,-3.559]]}],"e":[{"i":[[-2.827,2.641],[-1.757,-1.477]],"o":[[2.585,-2.416],[4.48,3.766]],"v":[[11.526,10.298],[4.456,1.941]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[-2.827,2.641],[-1.757,-1.477]],"o":[[2.585,-2.416],[4.48,3.766]],"v":[[11.526,10.298],[4.456,1.941]]}],"e":[{"i":[[-1.653,1.335],[-1.358,-1.851]],"o":[[1.66,-1.341],[1.48,2.016]],"v":[[13.526,15.048],[11.956,13.191]]}]},{"t":52}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[82.255,52.921]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 13"}],"bounds":{"l":76,"t":47,"b":69,"r":97},"ip":46,"op":52,"st":22},{"ddd":0,"ind":1,"ty":4,"nm":"gotaVioleta3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[-0.746,-1.912],[-2.504,1.276]],"o":[[0.608,1.559],[2.953,-1.504]],"v":[[-3.043,0.836],[-6.664,1.549]]}],"e":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[17.707,-4.914],[7.086,-1.451]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[17.707,-4.914],[7.086,-1.451]]}],"e":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[27.207,-11.914],[11.336,-3.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[27.207,-11.914],[11.336,-3.951]]}],"e":[{"i":[[0.004,-0.662],[-2.504,1.276]],"o":[[1.004,1.588],[2.953,-1.504]],"v":[[31.457,-15.664],[27.336,-12.701]]}]},{"t":52}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[85.229,18.204]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 20"}],"bounds":{"l":78,"t":2,"b":21,"r":117},"ip":46,"op":52,"st":9},{"ddd":0,"ind":2,"ty":4,"nm":"gotaVioleta2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[93.877,166.273,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[-4.749,10.453],[-1.911,6.951],[-3.655,9.729]]}],"e":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[-1.749,2.203],[1.089,-1.299],[-0.655,1.479]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[-1.749,2.203],[1.089,-1.299],[-0.655,1.479]]}],"e":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[0.251,-2.547],[5.589,-9.799],[1.345,-3.271]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[0.251,-2.547],[5.589,-9.799],[1.345,-3.271]]}],"e":[{"i":[[0.213,0.821],[-1.27,-0.846],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.156,0.77],[-1.09,1.176]],"v":[[6.251,-12.047],[8.589,-15.299],[7.345,-12.771]]}]},{"t":49}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[89.371,3.274]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":84,"t":-13,"b":15,"r":99},"ip":43,"op":49,"st":9},{"ddd":0,"ind":3,"ty":4,"nm":"gotaVioleta1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[88.877,163.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0.38,0.486],[-1.8,-0.586],[0.269,-0.767]],"o":[[-0.678,-0.868],[0.959,0.313],[-0.386,1.099]],"v":[[-1.459,8.379],[-0.58,5.221],[-0.939,7.58]]}],"e":[{"i":[[0.38,0.486],[-1.8,-0.586],[0.269,-0.767]],"o":[[-0.678,-0.868],[0.959,0.313],[-0.386,1.099]],"v":[[-0.459,1.629],[0.42,-1.529],[0.061,0.83]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[0.38,0.486],[-1.8,-0.586],[0.269,-0.767]],"o":[[-0.678,-0.868],[0.959,0.313],[-0.386,1.099]],"v":[[-0.459,1.629],[0.42,-1.529],[0.061,0.83]]}],"e":[{"i":[[0.38,0.486],[-1.689,-0.854],[0.269,-0.767]],"o":[[-0.678,-0.868],[2.794,1.413],[-0.386,1.099]],"v":[[2.791,-3.871],[6.17,-10.029],[3.311,-4.67]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0.38,0.486],[-1.689,-0.854],[0.269,-0.767]],"o":[[-0.678,-0.868],[2.794,1.413],[-0.386,1.099]],"v":[[2.791,-3.871],[6.17,-10.029],[3.311,-4.67]]}],"e":[{"i":[[0.102,0.131],[-0.454,-0.23],[0.072,-0.206]],"o":[[-0.182,-0.233],[0.752,0.38],[-0.104,0.296]],"v":[[7.304,-8.997],[8.213,-10.653],[7.444,-9.212]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[75.475,11.745]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":73,"t":1,"b":21,"r":84},"ip":42,"op":48,"st":9},{"ddd":0,"ind":4,"ty":4,"nm":"manchaVioleta 3","ks":{"o":{"k":100},"r":{"k":-136},"p":{"k":[135.877,96.773,0]},"a":{"k":[110.317,33.152,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[51.44,28.046]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 23"},{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[38.888,36.167]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 24"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[5,-0.77],[-0.467,-1.16],[-5.362,-2.946],[-7.097,0.518],[-1.026,5.711],[4.545,3.805],[4.987,-0.888]],"o":[[-5.125,1.23],[0.658,5.215],[11.388,0.929],[7.387,-0.539],[0.751,-4.182],[-2.003,-1.677],[-5.721,1.018]],"v":[[50.047,-31.676],[53.514,-27.286],[45.784,-18.75],[69.894,-15.339],[84.448,-23.407],[80.002,-34.001],[68.393,-35.714]]}],"e":[{"i":[[2.629,-0.001],[2.502,-1.65],[-2.216,-0.443],[-3.574,-2.201],[-2.33,2.728],[2.72,1.457],[2.474,0.656]],"o":[[-4.417,0.002],[-0.36,0.321],[1.975,0.395],[2.933,1.807],[2.381,-2.787],[-2.303,-1.233],[-1.698,-0.45]],"v":[[84.538,-34.666],[72.51,-32.809],[81.876,-32.007],[93.53,-27.951],[103.09,-23.238],[98.706,-31.334],[91.847,-33.803]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[2.629,-0.001],[2.502,-1.65],[-2.216,-0.443],[-3.574,-2.201],[-2.33,2.728],[2.72,1.457],[2.474,0.656]],"o":[[-4.417,0.002],[-0.36,0.321],[1.975,0.395],[2.933,1.807],[2.381,-2.787],[-2.303,-1.233],[-1.698,-0.45]],"v":[[84.538,-34.666],[72.51,-32.809],[81.876,-32.007],[93.53,-27.951],[103.09,-23.238],[98.706,-31.334],[91.847,-33.803]]}],"e":[{"i":[[2.09,0.636],[1.412,-0.387],[-5.578,-5.064],[-2.905,-3.03],[-2.311,1.698],[3.716,2.888],[2.325,1.357]],"o":[[-1.741,-0.53],[-0.36,0.321],[1.878,1.705],[2.642,2.755],[4.707,-3.458],[-4.595,-3.572],[-1.518,-0.886]],"v":[[91.163,-33.541],[82.76,-35.059],[94.751,-28.757],[104.405,-19.326],[115.59,-10.488],[105.706,-25.459],[97.847,-30.678]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[2.09,0.636],[1.412,-0.387],[-5.578,-5.064],[-2.905,-3.03],[-2.311,1.698],[3.716,2.888],[2.325,1.357]],"o":[[-1.741,-0.53],[-0.36,0.321],[1.878,1.705],[2.642,2.755],[4.707,-3.458],[-4.595,-3.572],[-1.518,-0.886]],"v":[[91.163,-33.541],[82.76,-35.059],[94.751,-28.757],[104.405,-19.326],[115.59,-10.488],[105.706,-25.459],[97.847,-30.678]]}],"e":[{"i":[[0.686,0.45],[0.682,-0.084],[-2.248,-2.73],[-1.144,-1.604],[-1.188,0.632],[1.53,1.593],[0.988,0.787]],"o":[[-0.714,-0.469],[-0.189,0.125],[0.757,0.919],[1.041,1.459],[2.42,-1.288],[-1.892,-1.97],[-0.645,-0.514]],"v":[[112.942,-14.779],[109.611,-16.581],[113.756,-12.021],[117.603,-6.987],[123.001,-0.703],[118.622,-9.748],[115.56,-12.762]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":59,"s":[{"i":[[0.686,0.45],[0.682,-0.084],[-2.248,-2.73],[-1.144,-1.604],[-1.188,0.632],[1.53,1.593],[0.988,0.787]],"o":[[-0.714,-0.469],[-0.189,0.125],[0.757,0.919],[1.041,1.459],[2.42,-1.288],[-1.892,-1.97],[-0.645,-0.514]],"v":[[112.942,-14.779],[109.611,-16.581],[113.756,-12.021],[117.603,-6.987],[123.001,-0.703],[118.622,-9.748],[115.56,-12.762]]}],"e":[{"i":[[0.206,0.258],[0.198,0.069],[-0.246,-1.05],[-0.096,-0.593],[-0.41,0.012],[0.203,0.642],[0.164,0.349]],"o":[[-0.163,-0.204],[-0.069,0.009],[0.083,0.354],[0.087,0.539],[0.836,-0.025],[-0.251,-0.794],[-0.107,-0.228]],"v":[[131.599,4.25],[130.931,3.307],[131.57,5.472],[131.941,7.283],[132.512,8.724],[132.645,6.904],[132.163,5.513]]}]},{"t":62}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[43.143,54.45]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 42"}],"bounds":{"l":87,"t":18,"b":64,"r":177},"ip":53,"op":62,"st":30},{"ddd":0,"ind":5,"ty":4,"nm":"manchaVioleta 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[51.44,28.046]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 23"},{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[38.888,36.167]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 24"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":54,"s":[{"i":[[2.75,-0.52],[0.658,-1.285],[-5.362,-2.946],[-1.972,1.268],[1.456,7.088],[-4.825,8.415],[2.91,-0.203]],"o":[[-4.146,2.363],[0.908,8.715],[7.888,1.929],[3.153,-4.107],[-1.651,-8.039],[1.545,-2.695],[-3.846,0.268]],"v":[[39.672,-34.301],[45.014,-26.786],[36.534,-12.25],[54.894,-4.714],[56.823,-20.032],[67.502,-31.251],[60.143,-35.464]]}],"e":[{"i":[[5,-0.77],[-0.467,-1.16],[-5.362,-2.946],[-7.097,0.518],[-1.026,5.711],[4.545,3.805],[4.987,-0.888]],"o":[[-5.125,1.23],[0.658,5.215],[11.388,0.929],[7.387,-0.539],[0.751,-4.182],[-2.003,-1.677],[-5.721,1.018]],"v":[[50.047,-31.676],[53.514,-27.286],[45.784,-18.75],[69.894,-15.339],[84.448,-23.407],[80.002,-34.001],[68.393,-35.714]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[5,-0.77],[-0.467,-1.16],[-5.362,-2.946],[-7.097,0.518],[-1.026,5.711],[4.545,3.805],[4.987,-0.888]],"o":[[-5.125,1.23],[0.658,5.215],[11.388,0.929],[7.387,-0.539],[0.751,-4.182],[-2.003,-1.677],[-5.721,1.018]],"v":[[50.047,-31.676],[53.514,-27.286],[45.784,-18.75],[69.894,-15.339],[84.448,-23.407],[80.002,-34.001],[68.393,-35.714]]}],"e":[{"i":[[2.629,-0.001],[2.502,-1.65],[-2.216,-0.443],[-3.574,-2.201],[-2.33,2.728],[2.72,1.457],[2.474,0.656]],"o":[[-4.417,0.002],[-0.36,0.321],[1.975,0.395],[2.933,1.807],[2.381,-2.787],[-2.303,-1.233],[-1.698,-0.45]],"v":[[84.538,-34.666],[72.51,-32.809],[81.876,-32.007],[93.53,-27.951],[103.09,-23.238],[98.706,-31.334],[91.847,-33.803]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":58,"s":[{"i":[[2.629,-0.001],[2.502,-1.65],[-2.216,-0.443],[-3.574,-2.201],[-2.33,2.728],[2.72,1.457],[2.474,0.656]],"o":[[-4.417,0.002],[-0.36,0.321],[1.975,0.395],[2.933,1.807],[2.381,-2.787],[-2.303,-1.233],[-1.698,-0.45]],"v":[[84.538,-34.666],[72.51,-32.809],[81.876,-32.007],[93.53,-27.951],[103.09,-23.238],[98.706,-31.334],[91.847,-33.803]]}],"e":[{"i":[[2.09,0.636],[1.412,-0.387],[-5.578,-5.064],[-2.905,-3.03],[-2.311,1.698],[3.716,2.888],[2.325,1.357]],"o":[[-1.741,-0.53],[-0.36,0.321],[1.878,1.705],[2.642,2.755],[4.707,-3.458],[-4.595,-3.572],[-1.518,-0.886]],"v":[[91.163,-33.541],[82.76,-35.059],[94.751,-28.757],[104.405,-19.326],[115.59,-10.488],[105.706,-25.459],[97.847,-30.678]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":60,"s":[{"i":[[2.09,0.636],[1.412,-0.387],[-5.578,-5.064],[-2.905,-3.03],[-2.311,1.698],[3.716,2.888],[2.325,1.357]],"o":[[-1.741,-0.53],[-0.36,0.321],[1.878,1.705],[2.642,2.755],[4.707,-3.458],[-4.595,-3.572],[-1.518,-0.886]],"v":[[91.163,-33.541],[82.76,-35.059],[94.751,-28.757],[104.405,-19.326],[115.59,-10.488],[105.706,-25.459],[97.847,-30.678]]}],"e":[{"i":[[0.686,0.45],[0.682,-0.084],[-2.248,-2.73],[-1.144,-1.604],[-1.188,0.632],[1.53,1.593],[0.988,0.787]],"o":[[-0.714,-0.469],[-0.189,0.125],[0.757,0.919],[1.041,1.459],[2.42,-1.288],[-1.892,-1.97],[-0.645,-0.514]],"v":[[112.942,-14.779],[109.611,-16.581],[113.756,-12.021],[117.603,-6.987],[123.001,-0.703],[118.622,-9.748],[115.56,-12.762]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":62,"s":[{"i":[[0.686,0.45],[0.682,-0.084],[-2.248,-2.73],[-1.144,-1.604],[-1.188,0.632],[1.53,1.593],[0.988,0.787]],"o":[[-0.714,-0.469],[-0.189,0.125],[0.757,0.919],[1.041,1.459],[2.42,-1.288],[-1.892,-1.97],[-0.645,-0.514]],"v":[[112.942,-14.779],[109.611,-16.581],[113.756,-12.021],[117.603,-6.987],[123.001,-0.703],[118.622,-9.748],[115.56,-12.762]]}],"e":[{"i":[[0.206,0.258],[0.198,0.069],[-0.246,-1.05],[-0.096,-0.593],[-0.41,0.012],[0.203,0.642],[0.164,0.349]],"o":[[-0.163,-0.204],[-0.069,0.009],[0.083,0.354],[0.087,0.539],[0.836,-0.025],[-0.251,-0.794],[-0.107,-0.228]],"v":[[131.599,4.25],[130.931,3.307],[131.57,5.472],[131.941,7.283],[132.512,8.724],[132.645,6.904],[132.163,5.513]]}]},{"t":64}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[43.143,54.45]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 42"}],"bounds":{"l":78,"t":18,"b":64,"r":177},"ip":54,"op":64,"st":36},{"ddd":0,"ind":6,"ty":4,"nm":"manchaVioleta","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[0.06,0.562],[-0.06,-0.562]],"o":[[-0.06,-0.562],[0.06,0.562]],"v":[[-12.761,129.427],[-13.454,129.545]]}],"e":[{"i":[[0.073,0.543],[-0.073,-0.543]],"o":[[-0.073,-0.543],[0.073,0.543]],"v":[[-26.782,116.956],[-27.623,117.07]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0.073,0.543],[-0.073,-0.543]],"o":[[-0.073,-0.543],[0.073,0.543]],"v":[[-26.782,116.956],[-27.623,117.07]]}],"e":[{"i":[[-0.641,1.637],[0.641,-1.637]],"o":[[0.641,-1.637],[-0.641,1.637]],"v":[[-38.343,78.999],[-40.881,78.005]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-0.641,1.637],[0.641,-1.637]],"o":[[0.641,-1.637],[-0.641,1.637]],"v":[[-38.343,78.999],[-40.881,78.005]]}],"e":[{"i":[[-1.199,1.223],[1.199,-1.223]],"o":[[1.199,-1.223],[-1.199,1.223]],"v":[[-34.752,51.8],[-36.648,49.94]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-1.199,1.223],[1.199,-1.223]],"o":[[1.199,-1.223],[-1.199,1.223]],"v":[[-34.752,51.8],[-36.648,49.94]]}],"e":[{"i":[[-1.758,0.809],[1.758,-0.809]],"o":[[1.758,-0.809],[-1.758,0.809]],"v":[[-23.661,26.601],[-24.916,23.876]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-1.758,0.809],[1.758,-0.809]],"o":[[1.758,-0.809],[-1.758,0.809]],"v":[[-23.661,26.601],[-24.916,23.876]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[2.5,4],[2.5,1]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43.625,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[2.5,4],[2.5,1]]}],"e":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[6.166,3.488],[6.663,0.53]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46.25,"s":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[6.166,3.488],[6.663,0.53]]}],"e":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[15.666,-2.262],[16.163,-5.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[15.666,-2.262],[16.163,-5.22]]}],"e":[{"i":[[-0.996,-0.491],[0.996,0.491]],"o":[[0.996,0.491],[-0.996,-0.491]],"v":[[29.146,-4.802],[29.924,-6.497]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[-0.996,-0.491],[0.996,0.491]],"o":[[0.996,0.491],[-0.996,-0.491]],"v":[[29.146,-4.802],[29.924,-6.497]]}],"e":[{"i":[[-0.321,-0.065],[0.321,0.065]],"o":[[0.321,0.065],[-0.321,-0.065]],"v":[[32.744,-7.101],[32.837,-7.643]]}]},{"t":54}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[51.44,28.046]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 23"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-0.3,-0.426],[-0.711,-0.621],[0.371,0.324],[0.534,0.759]],"o":[[0.572,0.812],[0.369,0.323],[-0.664,-0.58],[-0.297,-0.422]],"v":[[0.503,123.876],[2.406,126.128],[2.83,125.429],[1.054,123.335]]}],"e":[{"i":[[-0.364,-0.411],[-0.863,-0.6],[0.451,0.313],[0.649,0.733]],"o":[[0.694,0.784],[0.448,0.311],[-0.807,-0.56],[-0.361,-0.408]],"v":[[-13.365,111.317],[-11.054,113.492],[-10.539,112.816],[-12.696,110.795]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-0.364,-0.411],[-0.863,-0.6],[0.451,0.313],[0.649,0.733]],"o":[[0.694,0.784],[0.448,0.311],[-0.807,-0.56],[-0.361,-0.408]],"v":[[-13.365,111.317],[-11.054,113.492],[-10.539,112.816],[-12.696,110.795]]}],"e":[{"i":[[-0.38,-1.722],[-1.486,-3.029],[0.776,1.581],[0.677,3.068]],"o":[[0.725,3.282],[0.772,1.574],[-1.389,-2.831],[-0.377,-1.707]],"v":[[-27.238,79.192],[-24.146,88.9],[-21.649,87.808],[-24.545,78.769]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-0.38,-1.722],[-1.486,-3.029],[0.776,1.581],[0.677,3.068]],"o":[[0.725,3.282],[0.772,1.574],[-1.389,-2.831],[-0.377,-1.707]],"v":[[-27.238,79.192],[-24.146,88.9],[-21.649,87.808],[-24.545,78.769]]}],"e":[{"i":[[0.316,-1.689],[-0.177,-3.283],[0.092,1.714],[-0.563,3.009]],"o":[[-0.602,3.219],[0.092,1.706],[-0.165,-3.068],[0.313,-1.674]],"v":[[-26.669,50.581],[-27.601,60.466],[-24.945,60.439],[-24.094,51.23]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0.316,-1.689],[-0.177,-3.283],[0.092,1.714],[-0.563,3.009]],"o":[[-0.602,3.219],[0.092,1.706],[-0.165,-3.068],[0.313,-1.674]],"v":[[-26.669,50.581],[-27.601,60.466],[-24.945,60.439],[-24.094,51.23]]}],"e":[{"i":[[1.012,-1.656],[1.132,-3.537],[-0.591,1.846],[-1.804,2.95]],"o":[[-1.93,3.157],[-0.588,1.838],[1.058,-3.306],[1.003,-1.641]],"v":[[-18.601,23.971],[-23.556,34.031],[-20.741,35.07],[-16.142,25.69]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[1.012,-1.656],[1.132,-3.537],[-0.591,1.846],[-1.804,2.95]],"o":[[-1.93,3.157],[-0.588,1.838],[1.058,-3.306],[1.003,-1.641]],"v":[[-18.601,23.971],[-23.556,34.031],[-20.741,35.07],[-16.142,25.69]]}],"e":[{"i":[[1.612,-1.081],[2.508,-2.739],[-1.309,1.43],[-2.872,1.926]],"o":[[-3.073,2.06],[-1.303,1.423],[2.344,-2.56],[1.598,-1.071]],"v":[[5.95,-2.268],[-2.759,4.798],[-0.637,6.919],[7.464,0.323]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43.625,"s":[{"i":[[1.612,-1.081],[2.508,-2.739],[-1.309,1.43],[-2.872,1.926]],"o":[[-3.073,2.06],[-1.303,1.423],[2.344,-2.56],[1.598,-1.071]],"v":[[5.95,-2.268],[-2.759,4.798],[-0.637,6.919],[7.464,0.323]]}],"e":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[9.434,-4.313],[-0.325,1.212],[1.417,3.655],[10.498,-1.508]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46.25,"s":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[9.434,-4.313],[-0.325,1.212],[1.417,3.655],[10.498,-1.508]]}],"e":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[18.934,-10.063],[9.175,-4.538],[10.917,-2.095],[19.998,-7.258]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[18.934,-10.063],[9.175,-4.538],[10.917,-2.095],[19.998,-7.258]]}],"e":[{"i":[[1.11,-0.202],[2.001,-0.912],[-1.045,0.476],[-1.977,0.359]],"o":[[-2.116,0.385],[-1.04,0.474],[1.87,-0.852],[1.1,-0.2]],"v":[[36.534,-14.184],[30.22,-12.4],[30.762,-10.663],[36.641,-12.336]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[1.11,-0.202],[2.001,-0.912],[-1.045,0.476],[-1.977,0.359]],"o":[[-2.116,0.385],[-1.04,0.474],[1.87,-0.852],[1.1,-0.2]],"v":[[36.534,-14.184],[30.22,-12.4],[30.762,-10.663],[36.641,-12.336]]}],"e":[{"i":[[0.301,-0.141],[0.501,-0.411],[-0.262,0.215],[-0.536,0.252]],"o":[[-0.574,0.269],[-0.26,0.214],[0.468,-0.384],[0.298,-0.14]],"v":[[43.729,-15.192],[42.066,-14.206],[42.351,-13.753],[43.9,-14.673]]}]},{"t":54}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[38.888,36.167]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 24"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-2.247,3.655],[-4.14,2.167],[-3.805,1.354],[-2.528,2.607],[-4.845,1.857],[3.144,4.736],[0.144,1.089],[-1.838,-11.452],[3.984,-1.438],[3.228,-1.096],[3.354,-3.135],[-6.68,-9.162]],"o":[[2.732,-4.443],[2.327,-1.218],[2.413,-0.859],[2.806,-2.893],[3.802,-7.463],[-3.144,-4.736],[-2.156,-16.246],[0.544,3.389],[-4.663,3.74],[-4.198,1.426],[-6.734,-8.312],[2.509,3.991]],"v":[[6.662,114.774],[4.401,99.435],[10.984,103.572],[14.786,93.361],[24.495,95.342],[16,78.377],[12.541,69.175],[4.399,67.488],[5.372,82.068],[-8.269,80.758],[-6.969,95.933],[-6.199,107.656]]}],"e":[{"i":[[-2.729,3.529],[-5.028,2.092],[-4.621,1.308],[-3.07,2.517],[-5.883,1.794],[3.817,4.573],[0.175,1.051],[-2.231,-11.059],[4.838,-1.388],[3.92,-1.059],[4.073,-3.027],[-8.112,-8.847]],"o":[[3.317,-4.291],[2.826,-1.176],[2.931,-0.829],[3.407,-2.794],[4.617,-7.206],[-3.817,-4.573],[-2.618,-15.688],[0.66,3.273],[-5.662,3.612],[-5.098,1.377],[-8.177,-8.027],[3.046,3.854]],"v":[[-4.974,101.9],[-7.719,87.088],[0.275,91.082],[4.89,81.223],[16.68,83.135],[6.364,66.752],[2.165,57.867],[-7.721,56.238],[-6.541,70.317],[-23.105,69.052],[-21.526,83.706],[-20.591,95.026]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-2.729,3.529],[-5.028,2.092],[-4.621,1.308],[-3.07,2.517],[-5.883,1.794],[3.817,4.573],[0.175,1.051],[-2.231,-11.059],[4.838,-1.388],[3.92,-1.059],[4.073,-3.027],[-8.112,-8.847]],"o":[[3.317,-4.291],[2.826,-1.176],[2.931,-0.829],[3.407,-2.794],[4.617,-7.206],[-3.817,-4.573],[-2.618,-15.688],[0.66,3.273],[-5.662,3.612],[-5.098,1.377],[-8.177,-8.027],[3.046,3.854]],"v":[[-4.974,101.9],[-7.719,87.088],[0.275,91.082],[4.89,81.223],[16.68,83.135],[6.364,66.752],[2.165,57.867],[-7.721,56.238],[-6.541,70.317],[-23.105,69.052],[-21.526,83.706],[-20.591,95.026]]}],"e":[{"i":[[-2.729,3.529],[-5.028,2.092],[-4.621,1.308],[-3.07,2.517],[7.117,6.794],[-1.43,6.861],[1.013,-0.33],[4.019,-6.809],[4.433,0.578],[4.402,8.377],[1.995,0.804],[-23.835,-34.037]],"o":[[3.317,-4.291],[2.826,-1.176],[2.931,-0.829],[3.407,-2.794],[-10.633,-18.456],[1.683,-8.073],[-3.477,1.133],[-5.481,9.287],[-4.016,-0.433],[-2.338,-4.448],[-6.177,-0.527],[3.046,3.854]],"v":[[-7.974,100.9],[-12.219,81.588],[-0.225,89.082],[4.39,79.223],[10.43,72.135],[0.364,34.002],[-2.585,29.117],[-9.721,43.238],[-17.541,36.317],[-28.605,36.052],[-32.026,25.956],[-21.591,94.276]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-2.729,3.529],[-5.028,2.092],[-4.621,1.308],[-3.07,2.517],[7.117,6.794],[-1.43,6.861],[1.013,-0.33],[4.019,-6.809],[4.433,0.578],[4.402,8.377],[1.995,0.804],[-23.835,-34.037]],"o":[[3.317,-4.291],[2.826,-1.176],[2.931,-0.829],[3.407,-2.794],[-10.633,-18.456],[1.683,-8.073],[-3.477,1.133],[-5.481,9.287],[-4.016,-0.433],[-2.338,-4.448],[-6.177,-0.527],[3.046,3.854]],"v":[[-7.974,100.9],[-12.219,81.588],[-0.225,89.082],[4.39,79.223],[10.43,72.135],[0.364,34.002],[-2.585,29.117],[-9.721,43.238],[-17.541,36.317],[-28.605,36.052],[-32.026,25.956],[-21.591,94.276]]}],"e":[{"i":[[-1.804,4.53],[-5.119,0.982],[-4.585,0.326],[-3.279,0.847],[3.381,7.771],[-1.767,5.867],[2.422,-2.045],[1.372,1.916],[6.953,-2.23],[0.065,6.884],[1.713,1.142],[-20.311,-37.998]],"o":[[2,-4.784],[2.877,-0.552],[2.908,-0.206],[4.713,-2.923],[-5.536,-23.145],[0.79,-3.327],[-2.859,1.957],[-1.854,-0.43],[-5.03,2.1],[-0.033,-3.658],[-6.027,-2.529],[4.689,9.502]],"v":[[-18.354,83.439],[-18.193,66.84],[-8.557,77.969],[-3.75,64.519],[7.166,63.324],[5.11,21.54],[0.086,18.76],[-7.849,27.557],[-16.291,21.314],[-21.144,17.77],[-23.889,7.908],[-29.642,77.177]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-1.804,4.53],[-5.119,0.982],[-4.585,0.326],[-3.279,0.847],[3.381,7.771],[-1.767,5.867],[2.422,-2.045],[1.372,1.916],[6.953,-2.23],[0.065,6.884],[1.713,1.142],[-20.311,-37.998]],"o":[[2,-4.784],[2.877,-0.552],[2.908,-0.206],[4.713,-2.923],[-5.536,-23.145],[0.79,-3.327],[-2.859,1.957],[-1.854,-0.43],[-5.03,2.1],[-0.033,-3.658],[-6.027,-2.529],[4.689,9.502]],"v":[[-18.354,83.439],[-18.193,66.84],[-8.557,77.969],[-3.75,64.519],[7.166,63.324],[5.11,21.54],[0.086,18.76],[-7.849,27.557],[-16.291,21.314],[-21.144,17.77],[-23.889,7.908],[-29.642,77.177]]}],"e":[{"i":[[-1.341,5.03],[-5.165,0.427],[-4.568,-0.165],[-3.383,0.012],[1.513,8.26],[-1.936,5.37],[3.126,-2.903],[0.048,6.279],[8.213,-3.633],[-2.104,6.137],[1.572,1.311],[-9.036,-51.198]],"o":[[1.341,-5.03],[2.903,-0.24],[2.897,0.105],[5.367,-2.988],[-2.987,-25.49],[0.344,-0.954],[-2.55,2.369],[-0.041,-5.288],[-5.537,3.367],[1.119,-3.263],[-5.952,-3.53],[2.378,13.476]],"v":[[-23.544,74.709],[-21.18,59.466],[-12.723,72.413],[-7.82,57.167],[5.534,58.919],[7.483,15.309],[1.421,13.582],[-6.912,19.717],[-15.666,13.812],[-17.414,8.629],[-19.821,-1.115],[-33.667,68.627]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-1.341,5.03],[-5.165,0.427],[-4.568,-0.165],[-3.383,0.012],[1.513,8.26],[-1.936,5.37],[3.126,-2.903],[0.048,6.279],[8.213,-3.633],[-2.104,6.137],[1.572,1.311],[-9.036,-51.198]],"o":[[1.341,-5.03],[2.903,-0.24],[2.897,0.105],[5.367,-2.988],[-2.987,-25.49],[0.344,-0.954],[-2.55,2.369],[-0.041,-5.288],[-5.537,3.367],[1.119,-3.263],[-5.952,-3.53],[2.378,13.476]],"v":[[-23.544,74.709],[-21.18,59.466],[-12.723,72.413],[-7.82,57.167],[5.534,58.919],[7.483,15.309],[1.421,13.582],[-6.912,19.717],[-15.666,13.812],[-17.414,8.629],[-19.821,-1.115],[-33.667,68.627]]}],"e":[{"i":[[-2.619,2.645],[-4.174,-0.061],[-4.536,-1.038],[-2.27,2.939],[3.359,8.768],[-9.385,4.734],[1.249,-0.132],[-2.416,3.736],[3.984,1.947],[-5.949,4.814],[1.322,1.612],[-4.135,-41.508]],"o":[[6.123,-2.917],[2.97,0.053],[2.877,0.658],[2.929,-4.005],[0.113,-21.129],[0.923,-0.466],[-3.379,-0.392],[5.406,-7.558],[-3.438,-1.688],[3.167,-2.561],[-5.819,-5.309],[0.879,5.704]],"v":[[-28.326,60.374],[-22.045,47.542],[-16.277,63.275],[-9.944,53.06],[2.688,51.411],[13.182,9.195],[11.943,7.042],[1.049,8.075],[-6.407,-0.561],[-6.337,-6.437],[-4.811,-13.38],[-36.379,54.613]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[-2.619,2.645],[-4.174,-0.061],[-4.536,-1.038],[-2.27,2.939],[3.359,8.768],[-9.385,4.734],[1.249,-0.132],[-2.416,3.736],[3.984,1.947],[-5.949,4.814],[1.322,1.612],[-4.135,-41.508]],"o":[[6.123,-2.917],[2.97,0.053],[2.877,0.658],[2.929,-4.005],[0.113,-21.129],[0.923,-0.466],[-3.379,-0.392],[5.406,-7.558],[-3.438,-1.688],[3.167,-2.561],[-5.819,-5.309],[0.879,5.704]],"v":[[-28.326,60.374],[-22.045,47.542],[-16.277,63.275],[-9.944,53.06],[2.688,51.411],[13.182,9.195],[11.943,7.042],[1.049,8.075],[-6.407,-0.561],[-6.337,-6.437],[-4.811,-13.38],[-36.379,54.613]]}],"e":[{"i":[[-4.697,-6.459],[-5.303,-1.239],[-4.514,-1.638],[-1.942,3.463],[-7.091,1.227],[1.446,4.063],[0.71,0.794],[-4.073,5.463],[3.26,3.058],[-8.593,3.904],[1.149,1.818],[0.54,-41.549]],"o":[[3.19,4.386],[2.98,0.696],[2.863,1.039],[2.468,-4.4],[0.909,-44.773],[-0.357,-1.004],[-4.13,-4.617],[8.4,-11.267],[-3.007,-2.698],[4.575,-2.078],[-5.728,-6.532],[0.221,4.908]],"v":[[-31.614,50.519],[-22.64,39.344],[-18.721,56.244],[-10.53,43.612],[2.388,50.202],[18.351,4.366],[17.927,2.046],[5.897,-0.304],[-1.291,-9.693],[1.277,-16.795],[4.384,-22.687],[-38.243,44.978]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-4.697,-6.459],[-5.303,-1.239],[-4.514,-1.638],[-1.942,3.463],[-7.091,1.227],[1.446,4.063],[0.71,0.794],[-4.073,5.463],[3.26,3.058],[-8.593,3.904],[1.149,1.818],[0.54,-41.549]],"o":[[3.19,4.386],[2.98,0.696],[2.863,1.039],[2.468,-4.4],[0.909,-44.773],[-0.357,-1.004],[-4.13,-4.617],[8.4,-11.267],[-3.007,-2.698],[4.575,-2.078],[-5.728,-6.532],[0.221,4.908]],"v":[[-31.614,50.519],[-22.64,39.344],[-18.721,56.244],[-10.53,43.612],[2.388,50.202],[18.351,4.366],[17.927,2.046],[5.897,-0.304],[-1.291,-9.693],[1.277,-16.795],[4.384,-22.687],[-38.243,44.978]]}],"e":[{"i":[[-2.375,-7.625],[-4.625,-2.875],[-3.75,-3],[-2.951,2.656],[-0.25,10.133],[-4.643,1.569],[0.858,0.632],[-3.658,5.749],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[11.384,-35.156]],"o":[[1.613,5.178],[2.599,1.616],[2.378,1.903],[3.75,-3.375],[0.75,-16.117],[1.01,-0.341],[-2.943,-2.171],[5.522,-8.677],[-1.982,-3.52],[5,-0.5],[-3.328,-8.025],[-1.366,4.719]],"v":[[-28.203,20.554],[-19.953,21.054],[-18.953,33.429],[-10.953,27.554],[0.297,33.046],[31.54,-3.179],[31.883,-5.512],[28.547,-17.571],[19.191,-23.264],[27.547,-30.571],[32.38,-35.154],[-32.703,13.179]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43.625,"s":[{"i":[[-2.375,-7.625],[-4.625,-2.875],[-3.75,-3],[-2.951,2.656],[-0.25,10.133],[-4.643,1.569],[0.858,0.632],[-3.658,5.749],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[11.384,-35.156]],"o":[[1.613,5.178],[2.599,1.616],[2.378,1.903],[3.75,-3.375],[0.75,-16.117],[1.01,-0.341],[-2.943,-2.171],[5.522,-8.677],[-1.982,-3.52],[5,-0.5],[-3.328,-8.025],[-1.366,4.719]],"v":[[-28.203,20.554],[-19.953,21.054],[-18.953,33.429],[-10.953,27.554],[0.297,33.046],[31.54,-3.179],[31.883,-5.512],[28.547,-17.571],[19.191,-23.264],[27.547,-30.571],[32.38,-35.154],[-32.703,13.179]]}],"e":[{"i":[[-5,2.875],[-4.625,-2.875],[-3.75,-3],[-3.958,-0.312],[-6,-2.117],[-4.643,1.569],[0.858,0.632],[-1.771,6.58],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[7,-6.75]],"o":[[3.401,-1.956],[2.599,1.616],[2.378,1.903],[4.75,0.375],[15,-14.117],[1.01,-0.341],[-2.943,-2.171],[1.75,-6.5],[-1.982,-3.52],[5,-0.5],[-31.583,2.583],[-12,13.25]],"v":[[-27.703,16.054],[-10.953,6.554],[-13.953,16.429],[-1.453,11.554],[-0.703,23.546],[38.54,-4.679],[38.883,-7.012],[35.547,-19.571],[26.191,-24.764],[34.547,-32.071],[39.38,-36.654],[-23.703,-5.321]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46.25,"s":[{"i":[[-5,2.875],[-4.625,-2.875],[-3.75,-3],[-3.958,-0.312],[-6,-2.117],[-4.643,1.569],[0.858,0.632],[-1.771,6.58],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[7,-6.75]],"o":[[3.401,-1.956],[2.599,1.616],[2.378,1.903],[4.75,0.375],[15,-14.117],[1.01,-0.341],[-2.943,-2.171],[1.75,-6.5],[-1.982,-3.52],[5,-0.5],[-31.583,2.583],[-12,13.25]],"v":[[-27.703,16.054],[-10.953,6.554],[-13.953,16.429],[-1.453,11.554],[-0.703,23.546],[38.54,-4.679],[38.883,-7.012],[35.547,-19.571],[26.191,-24.764],[34.547,-32.071],[39.38,-36.654],[-23.703,-5.321]]}],"e":[{"i":[[-4,-0.292],[-5.595,-2.985],[-4.583,-3.5],[-3.383,-2.078],[-6,-2.117],[-10.043,1.262],[0.858,0.632],[-1.771,6.58],[-2.369,7.019],[-3.13,1.48],[0.946,4.586],[5.167,-4.75]],"o":[[5.25,0.125],[2.366,1.289],[2.526,1.934],[2.917,1.792],[8.833,-13.45],[3.104,-0.354],[-2.943,-2.171],[1.75,-6.5],[2.41,-6.878],[1.667,-3.517],[-20.75,-3.917],[-7.167,7.583]],"v":[[-18.703,0.054],[-13.62,8.054],[-4.953,2.596],[-3.12,16.387],[8.464,14.629],[43.623,-5.179],[42.716,-9.512],[48.88,-18.071],[39.358,-24.431],[38.214,-30.904],[44.38,-35.654],[-12.036,-14.154]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[-4,-0.292],[-5.595,-2.985],[-4.583,-3.5],[-3.383,-2.078],[-6,-2.117],[-10.043,1.262],[0.858,0.632],[-1.771,6.58],[-2.369,7.019],[-3.13,1.48],[0.946,4.586],[5.167,-4.75]],"o":[[5.25,0.125],[2.366,1.289],[2.526,1.934],[2.917,1.792],[8.833,-13.45],[3.104,-0.354],[-2.943,-2.171],[1.75,-6.5],[2.41,-6.878],[1.667,-3.517],[-20.75,-3.917],[-7.167,7.583]],"v":[[-18.703,0.054],[-13.62,8.054],[-4.953,2.596],[-3.12,16.387],[8.464,14.629],[43.623,-5.179],[42.716,-9.512],[48.88,-18.071],[39.358,-24.431],[38.214,-30.904],[44.38,-35.654],[-12.036,-14.154]]}],"e":[{"i":[[-3.5,-1.875],[-6.08,-3.04],[-5,-3.75],[-3.958,-0.312],[-3.5,2.633],[-15.993,-0.142],[0.858,0.632],[-1.771,6.58],[-4.606,8.557],[0,1.75],[1.167,5.833],[4.25,-3.75]],"o":[[3.683,1.973],[2.25,1.125],[2.6,1.95],[4.75,0.375],[7.25,-6.617],[4.166,0.037],[-2.943,-2.171],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-15.333,-7.167],[-4.75,4.75]],"v":[[-14.203,-7.946],[-10.453,3.554],[-0.453,-4.321],[-1.703,15.054],[11.547,11.296],[45.04,-4.929],[44.633,-10.762],[55.547,-17.321],[45.941,-24.264],[40.047,-30.321],[46.88,-35.154],[-6.203,-18.571]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[-3.5,-1.875],[-6.08,-3.04],[-5,-3.75],[-3.958,-0.312],[-3.5,2.633],[-15.993,-0.142],[0.858,0.632],[-1.771,6.58],[-4.606,8.557],[0,1.75],[1.167,5.833],[4.25,-3.75]],"o":[[3.683,1.973],[2.25,1.125],[2.6,1.95],[4.75,0.375],[7.25,-6.617],[4.166,0.037],[-2.943,-2.171],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-15.333,-7.167],[-4.75,4.75]],"v":[[-14.203,-7.946],[-10.453,3.554],[-0.453,-4.321],[-1.703,15.054],[11.547,11.296],[45.04,-4.929],[44.633,-10.762],[55.547,-17.321],[45.941,-24.264],[40.047,-30.321],[46.88,-35.154],[-6.203,-18.571]]}],"e":[{"i":[[-2.99,-2.399],[-4.636,-2.652],[-5,-3.75],[-3.243,-1.386],[-3.167,2.133],[-8.826,0.691],[0.755,0.726],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.75,4.75],[4.667,-1.75]],"o":[[3.288,2.774],[2.171,1.469],[2.6,1.95],[4,1.875],[4.453,-2.999],[4.142,-0.044],[-3.324,-3.717],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-10.083,-5.834],[-6.458,2.422]],"v":[[-6.12,-18.029],[-2.453,-3.613],[9.38,-9.988],[10.047,9.304],[25.964,-0.204],[45.373,-5.512],[44.633,-10.762],[55.297,-16.738],[45.608,-23.847],[40.38,-30.321],[47.297,-34.821],[13.38,-32.571]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[-2.99,-2.399],[-4.636,-2.652],[-5,-3.75],[-3.243,-1.386],[-3.167,2.133],[-8.826,0.691],[0.755,0.726],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.75,4.75],[4.667,-1.75]],"o":[[3.288,2.774],[2.171,1.469],[2.6,1.95],[4,1.875],[4.453,-2.999],[4.142,-0.044],[-3.324,-3.717],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-10.083,-5.834],[-6.458,2.422]],"v":[[-6.12,-18.029],[-2.453,-3.613],[9.38,-9.988],[10.047,9.304],[25.964,-0.204],[45.373,-5.512],[44.633,-10.762],[55.297,-16.738],[45.608,-23.847],[40.38,-30.321],[47.297,-34.821],[13.38,-32.571]]}],"e":[{"i":[[-2.48,-2.923],[-3.193,-2.263],[-5,-3.75],[-2.527,-2.459],[-3.083,1.133],[-4.91,0.275],[0.652,0.82],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.334,3.666],[4.458,-0.875]],"o":[[2.894,3.574],[2.092,1.813],[2.6,1.95],[3.25,3.375],[5.961,-2.19],[4.133,0.273],[-3.705,-5.263],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-4.833,-4.5],[-4.539,0.891]],"v":[[5.214,-25.363],[5.547,-10.779],[19.214,-15.654],[17.547,-0.696],[28.38,-1.204],[43.957,-5.596],[44.633,-10.762],[55.047,-16.154],[45.274,-23.431],[40.714,-30.321],[47.713,-34.487],[23.089,-35.196]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[{"i":[[-2.48,-2.923],[-3.193,-2.263],[-5,-3.75],[-2.527,-2.459],[-3.083,1.133],[-4.91,0.275],[0.652,0.82],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.334,3.666],[4.458,-0.875]],"o":[[2.894,3.574],[2.092,1.813],[2.6,1.95],[3.25,3.375],[5.961,-2.19],[4.133,0.273],[-3.705,-5.263],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-4.833,-4.5],[-4.539,0.891]],"v":[[5.214,-25.363],[5.547,-10.779],[19.214,-15.654],[17.547,-0.696],[28.38,-1.204],[43.957,-5.596],[44.633,-10.762],[55.047,-16.154],[45.274,-23.431],[40.714,-30.321],[47.713,-34.487],[23.089,-35.196]]}],"e":[{"i":[[-1.97,-3.447],[-1.75,-1.875],[-5,-3.75],[-1.812,-3.533],[-6.5,1.883],[-0.993,-0.142],[0.548,0.914],[-1.771,6.58],[-4.606,8.557],[0,1.75],[-0.083,2.583],[3.082,-0.257]],"o":[[2.5,4.375],[2.013,2.157],[2.6,1.95],[2.5,4.875],[2.75,-1.117],[4.125,0.59],[-4.086,-6.809],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[0.417,-3.167],[-3,0.25]],"v":[[19.047,-29.196],[13.547,-17.946],[29.047,-21.321],[24.547,-6.946],[34.547,-3.704],[42.29,-4.179],[45.633,-8.262],[54.797,-15.571],[44.941,-23.014],[41.047,-30.321],[48.13,-34.154],[35.297,-35.071]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[-1.97,-3.447],[-1.75,-1.875],[-5,-3.75],[-1.812,-3.533],[-6.5,1.883],[-0.993,-0.142],[0.548,0.914],[-1.771,6.58],[-4.606,8.557],[0,1.75],[-0.083,2.583],[3.082,-0.257]],"o":[[2.5,4.375],[2.013,2.157],[2.6,1.95],[2.5,4.875],[2.75,-1.117],[4.125,0.59],[-4.086,-6.809],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[0.417,-3.167],[-3,0.25]],"v":[[19.047,-29.196],[13.547,-17.946],[29.047,-21.321],[24.547,-6.946],[34.547,-3.704],[42.29,-4.179],[45.633,-8.262],[54.797,-15.571],[44.941,-23.014],[41.047,-30.321],[48.13,-34.154],[35.297,-35.071]]}],"e":[{"i":[[2.033,-1.245],[-3.047,0.115],[2.742,-5.603],[3.975,-1.844],[-4.469,1.133],[-1.438,0.209],[-0.097,2.393],[1.974,6.961],[-6.634,7.077],[0,1.75],[-0.083,2.583],[1.55,-0.318]],"o":[[-4.146,2.363],[5.083,-0.245],[-3.067,5.955],[-5.124,2.306],[2.75,-1.117],[4.025,-0.585],[-3.097,-3.607],[-1.837,-6.476],[5.317,-5.711],[0,-5.025],[0.417,-2.218],[-1.537,0.325]],"v":[[35.547,-34.176],[35.264,-28.411],[43.799,-24.328],[39.876,-10.367],[33.409,-3.5],[42.735,-4.78],[51.644,-6.214],[54.323,-16.282],[46.127,-23.251],[42.707,-30.795],[48.604,-34.154],[42.518,-35.339]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":54,"s":[{"i":[[2.033,-1.245],[-3.047,0.115],[2.742,-5.603],[3.975,-1.844],[-4.469,1.133],[-1.438,0.209],[-0.097,2.393],[1.974,6.961],[-6.634,7.077],[0,1.75],[-0.083,2.583],[1.55,-0.318]],"o":[[-4.146,2.363],[5.083,-0.245],[-3.067,5.955],[-5.124,2.306],[2.75,-1.117],[4.025,-0.585],[-3.097,-3.607],[-1.837,-6.476],[5.317,-5.711],[0,-5.025],[0.417,-2.218],[-1.537,0.325]],"v":[[35.547,-34.176],[35.264,-28.411],[43.799,-24.328],[39.876,-10.367],[33.409,-3.5],[42.735,-4.78],[51.644,-6.214],[54.323,-16.282],[46.127,-23.251],[42.707,-30.795],[48.604,-34.154],[42.518,-35.339]]}],"e":[{"i":[[2.25,-1.125],[-3.117,0.223],[5,-6.75],[4.548,-0.947],[10,-1.867],[-0.994,-0.134],[0.094,1.062],[-1.771,6.58],[-6.744,6.997],[0,1.75],[-0.083,2.583],[1.471,-0.294]],"o":[[-4.507,2.253],[5.25,-0.375],[-4.193,5.661],[-9,1.875],[2.75,-1.117],[4.507,0.608],[-0.336,-3.809],[1.75,-6.5],[5.356,-5.557],[0,-5.025],[0.417,-2.167],[-1.25,0.25]],"v":[[39.047,-34.446],[39.047,-29.196],[43.297,-22.321],[47.297,-15.946],[38.547,-4.704],[45.04,-5.179],[46.133,-12.262],[54.297,-16.321],[46.191,-23.264],[42.797,-30.821],[48.63,-34.154],[45.297,-35.571]]}]},{"t":55}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[43.143,54.45]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 42"}],"bounds":{"l":4,"t":17,"b":171,"r":99},"ip":31,"op":54,"st":36},{"ddd":0,"ind":7,"ty":4,"nm":"gotaAzul3","ks":{"o":{"k":100},"r":{"k":31},"p":{"k":[183.127,209.898,0]},"a":{"k":[158.567,64.402,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[1.003,0.154],[0.214,-1.36]],"o":[[-0.997,-0.153],[-0.253,1.604]],"v":[[-2.788,7.056],[-3.283,9.049]]}],"e":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}],"e":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}],"e":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}],"e":[{"i":[[-0.497,-1.653],[-0.831,1.097]],"o":[[0.378,1.257],[1.247,-1.646]],"v":[[12.462,-17.444],[10.967,-16.951]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[157.994,65.167]},"a":{"k":[-3.231,8.941]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":157,"t":37,"b":66,"r":174},"ip":24,"op":32,"st":24},{"ddd":0,"ind":8,"ty":4,"nm":"gotaAzul2","ks":{"o":{"k":100},"r":{"k":-70},"p":{"k":[139.627,239.523,0]},"a":{"k":[56.817,156.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-0.455,1.024],[1.726,1.678]],"o":[[0.512,-1.151],[-2.036,-1.978]],"v":[[5.199,5.726],[5.515,5.777]]}],"e":[{"i":[[-2.293,2.922],[1.93,1.438]],"o":[[2.097,-2.672],[-2.276,-1.696]],"v":[[-11.662,-7.638],[-4.972,-0.799]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[-2.293,2.922],[1.93,1.438]],"o":[[2.097,-2.672],[-2.276,-1.696]],"v":[[-11.662,-7.638],[-4.972,-0.799]]}],"e":[{"i":[[-1.353,3.459],[1.447,1.924]],"o":[[1.514,-3.869],[-3.509,-4.665]],"v":[[-19.908,-11.288],[-8.283,-3.318]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.353,3.459],[1.447,1.924]],"o":[[1.514,-3.869],[-3.509,-4.665]],"v":[[-19.908,-11.288],[-8.283,-3.318]]}],"e":[{"i":[[-1.353,3.459],[1.719,1.686]],"o":[[1.514,-3.869],[-3.231,-3.169]],"v":[[-27.512,-11.713],[-19.413,-8.313]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-1.353,3.459],[1.719,1.686]],"o":[[1.514,-3.869],[-3.231,-3.169]],"v":[[-27.512,-11.713],[-19.413,-8.313]]}],"e":[{"i":[[-0.085,1.237],[1.719,1.686]],"o":[[0.019,-0.664],[-3.231,-3.169]],"v":[[-27.512,-11.713],[-23.664,-10.49]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[54.06,153.332]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 15"}],"bounds":{"l":26,"t":140,"b":160,"r":61},"ip":26,"op":33,"st":23},{"ddd":0,"ind":9,"ty":4,"nm":"gotaAzul1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.127,209.523,0]},"a":{"k":[67.317,146.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-0.429,2.405],[-0.331,-0.254]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[3.433,3.647],[5.682,3.801]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-13.817,-1.853],[-3.568,0.051]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-13.817,-1.853],[-3.568,0.051]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-16.317,-0.853],[-13.568,-0.699]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[69,151,160,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[67.589,144.582]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 17"}],"bounds":{"l":51,"t":142,"b":150,"r":74},"ip":27,"op":33,"st":27},{"ddd":0,"ind":10,"ty":4,"nm":"gotaGris6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[58.377,211.773,0]},"a":{"k":[3.817,119.62,0]},"s":{"k":[100,130.464,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-0.762,1.413],[-1.792,-0.578],[0.899,0.325]],"o":[[0.302,-0.274],[1.809,0.583],[-0.994,-0.359]],"v":[[7.946,5.219],[12.12,6.109],[14.547,6.943]]}],"e":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}],"e":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}],"e":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}],"e":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}],"e":[{"i":[[-1.397,-0.501],[-0.564,0.972],[0.066,0.244]],"o":[[0.824,0.436],[0.547,-0.943],[-0.171,-0.337]],"v":[[-18.646,8.639],[-16.619,7.144],[-15.154,5.285]]}]},{"t":43}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[207,211,174,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[4.887,119.15]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 14"}],"bounds":{"l":-15,"t":117,"b":128,"r":20},"ip":35,"op":43,"st":33},{"ddd":0,"ind":11,"ty":4,"nm":"gotaGris5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[34.127,147.898,0]},"a":{"k":[15.817,113.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[-1.026,0.465],[0.227,0.414]],"o":[[0.843,-0.314],[0.102,-0.086]],"v":[[43.432,35.82],[44.173,38.592]]}],"e":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}],"e":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}],"e":[{"i":[[-0.782,0.186],[-0.023,0.914]],"o":[[1.256,-0.074],[-0.023,-0.461]],"v":[[42.182,12.82],[42.548,14.717]]}]},{"t":40}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[207,211,174,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[15.415,113.122]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 19"}],"bounds":{"l":55,"t":125,"b":152,"r":60},"ip":34,"op":40,"st":33},{"ddd":0,"ind":12,"ty":4,"nm":"gotaGris3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[83.377,231.773,0]},"a":{"k":[3.817,119.62,0]},"s":{"k":[100,130.464,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-0.762,1.413],[-1.792,-0.578],[0.899,0.325]],"o":[[0.302,-0.274],[1.809,0.583],[-0.994,-0.359]],"v":[[7.946,5.219],[12.12,6.109],[14.547,6.943]]}],"e":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}],"e":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}],"e":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}],"e":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}],"e":[{"i":[[-1.397,-0.501],[-0.564,0.972],[0.066,0.244]],"o":[[0.824,0.436],[0.547,-0.943],[-0.171,-0.337]],"v":[[-18.646,8.639],[-16.619,7.144],[-15.154,5.285]]}]},{"t":38}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[207,211,174,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[4.887,119.15]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 14"}],"bounds":{"l":-15,"t":117,"b":128,"r":20},"ip":30,"op":38,"st":28},{"ddd":0,"ind":13,"ty":4,"nm":"gotaGris2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[59.127,167.898,0]},"a":{"k":[15.817,113.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-1.026,0.465],[0.227,0.414]],"o":[[0.843,-0.314],[0.102,-0.086]],"v":[[43.432,35.82],[44.173,38.592]]}],"e":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}],"e":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}],"e":[{"i":[[-0.782,0.186],[-0.023,0.914]],"o":[[1.256,-0.074],[-0.023,-0.461]],"v":[[42.182,12.82],[42.548,14.717]]}]},{"t":35}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[207,211,174,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[15.415,113.122]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 19"}],"bounds":{"l":55,"t":125,"b":152,"r":60},"ip":29,"op":35,"st":28},{"ddd":0,"ind":14,"ty":4,"nm":"gotaGris4","ks":{"o":{"k":100},"r":{"k":132},"p":{"k":[139.502,224.523,0]},"a":{"k":[121.017,32.043,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":27,"s":[{"i":[[1.069,-1.904],[3.166,0.708]],"o":[[-1.195,2.13],[-0.793,-0.233]],"v":[[4.681,4.064],[9.043,6.644]]}],"e":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":30,"s":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}],"e":[{"i":[[4.866,-2.442],[2.202,2.382]],"o":[[-5.725,2.873],[-4.81,-5.205]],"v":[[-7.689,-20.584],[0.328,-4.803]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":33,"s":[{"i":[[4.866,-2.442],[2.202,2.382]],"o":[[-5.725,2.873],[-4.81,-5.205]],"v":[[-7.689,-20.584],[0.328,-4.803]]}],"e":[{"i":[[5.434,-0.35],[1.661,2.786]],"o":[[-4.657,0.3],[-3.63,-6.087]],"v":[[-4.829,-30.021],[-3.11,-19.092]]}]},{"t":35}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[207,211,174,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[114.44,29.594]},"a":{"k":[0.5,3.375]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":105,"t":-4,"b":34,"r":124},"ip":27,"op":35,"st":27},{"ddd":0,"ind":15,"ty":4,"nm":"manchaGris","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[-5.211,-2.443],[-0.453,-6.251],[-0.528,-2.354],[3.103,-1.266],[-0.032,-2.98],[-4.042,0.696],[-3.41,0.321],[-0.337,1.771],[-1.957,4.718],[5.745,1.311],[10.53,-8.011],[0.915,-0.19]],"o":[[6.599,3.094],[0.304,4.198],[0.653,2.911],[-4.034,1.645],[1.029,4.295],[4.84,-0.752],[3.529,-0.332],[1.041,-5.465],[0.685,-1.652],[-8.236,-1.879],[-3.303,2.513],[-4.095,1.604]],"v":[[39.5,12.601],[35.863,19.946],[39.695,23.748],[37.064,31.159],[30.638,33.848],[41.146,37.484],[47.886,36.179],[54.529,33.204],[47.774,25.947],[52.871,14.008],[41.97,6.131],[34.012,7.29]]}],"e":[{"i":[[2.964,-7.494],[4.31,-3.508],[3.348,-9.606],[9.744,-2.487],[13.916,-6.871],[-4.244,0.039],[-3.536,-0.247],[-0.64,1.806],[-2.784,4.628],[11.95,-1.524],[10.066,-3.197],[2.777,0.757]],"o":[[-2.845,7.195],[-6.408,5.216],[-2.415,6.928],[-4.376,1.117],[-3.158,6.453],[5.069,0.039],[3.659,0.256],[1.973,-5.57],[0.975,-1.62],[-3.567,0.455],[-3.45,1.096],[-10.676,0.757]],"v":[[15.913,-0.113],[21.028,10.392],[3.582,9.213],[9.015,19.694],[10.534,29.941],[28.694,34.755],[45.625,34.539],[54.976,32.549],[45.145,23.489],[48.717,11.804],[48.595,1.722],[35.643,2.594]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[2.964,-7.494],[4.31,-3.508],[3.348,-9.606],[9.744,-2.487],[13.916,-6.871],[-4.244,0.039],[-3.536,-0.247],[-0.64,1.806],[-2.784,4.628],[11.95,-1.524],[10.066,-3.197],[2.777,0.757]],"o":[[-2.845,7.195],[-6.408,5.216],[-2.415,6.928],[-4.376,1.117],[-3.158,6.453],[5.069,0.039],[3.659,0.256],[1.973,-5.57],[0.975,-1.62],[-3.567,0.455],[-3.45,1.096],[-10.676,0.757]],"v":[[15.913,-0.113],[21.028,10.392],[3.582,9.213],[9.015,19.694],[10.534,29.941],[28.694,34.755],[45.625,34.539],[54.976,32.549],[45.145,23.489],[48.717,11.804],[48.595,1.722],[35.643,2.594]]}],"e":[{"i":[[5.155,-3.047],[5.212,-0.204],[7.923,-5.23],[3.279,-4.611],[-2.202,-4.417],[-10.318,-5.268],[-2.768,-0.176],[-0.691,1.722],[-2.877,4.367],[11.377,4.579],[8.132,-1.291],[14.802,6.277]],"o":[[-3.355,2.148],[-2.82,0.409],[-4.261,2.936],[-2.32,3.649],[3.056,5.45],[10.85,5.539],[3.537,0.225],[2.132,-5.312],[1.007,-1.529],[-3.199,-1.288],[-3.976,1.043],[-14.88,-7.889]],"v":[[-5.31,-16.764],[-9.013,-4.862],[-20.995,-13.522],[-22.356,-4.954],[-24.46,2.691],[3.134,26.335],[34.322,34.239],[49.415,32.635],[43.004,23.581],[47.38,12.434],[45.898,0.64],[17.52,-2.413]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[5.155,-3.047],[5.212,-0.204],[7.923,-5.23],[3.279,-4.611],[-2.202,-4.417],[-10.318,-5.268],[-2.768,-0.176],[-0.691,1.722],[-2.877,4.367],[11.377,4.579],[8.132,-1.291],[14.802,6.277]],"o":[[-3.355,2.148],[-2.82,0.409],[-4.261,2.936],[-2.32,3.649],[3.056,5.45],[10.85,5.539],[3.537,0.225],[2.132,-5.312],[1.007,-1.529],[-3.199,-1.288],[-3.976,1.043],[-14.88,-7.889]],"v":[[-5.31,-16.764],[-9.013,-4.862],[-20.995,-13.522],[-22.356,-4.954],[-24.46,2.691],[3.134,26.335],[34.322,34.239],[49.415,32.635],[43.004,23.581],[47.38,12.434],[45.898,0.64],[17.52,-2.413]]}],"e":[{"i":[[1.93,-0.431],[3.793,-0.097],[4.362,-1.309],[1.81,-0.938],[-0.725,-3.901],[-7.148,-6.169],[-3.486,4.386],[-0.622,1.752],[-2.708,4.492],[-2.87,-0.259],[-0.086,4.254],[11.76,14.7]],"o":[[-3.682,0.822],[-2.459,0.063],[-4.898,1.47],[-3.916,2.029],[4.477,18.676],[6.44,5.728],[3.261,-4.102],[1.919,-5.406],[0.948,-1.572],[4.754,0.429],[0.167,-8.247],[-8.371,-10.128]],"v":[[-9.38,-36.675],[-17.49,-29.066],[-23.387,-35.382],[-29.175,-24.176],[-39.776,-31.817],[-16.072,11.131],[12.98,28.507],[12.009,17.783],[23.585,17.783],[19.51,6.959],[36,0.796],[8.806,-12.324]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[1.93,-0.431],[3.793,-0.097],[4.362,-1.309],[1.81,-0.938],[-0.725,-3.901],[-7.148,-6.169],[-3.486,4.386],[-0.622,1.752],[-2.708,4.492],[-2.87,-0.259],[-0.086,4.254],[11.76,14.7]],"o":[[-3.682,0.822],[-2.459,0.063],[-4.898,1.47],[-3.916,2.029],[4.477,18.676],[6.44,5.728],[3.261,-4.102],[1.919,-5.406],[0.948,-1.572],[4.754,0.429],[0.167,-8.247],[-8.371,-10.128]],"v":[[-9.38,-36.675],[-17.49,-29.066],[-23.387,-35.382],[-29.175,-24.176],[-39.776,-31.817],[-16.072,11.131],[12.98,28.507],[12.009,17.783],[23.585,17.783],[19.51,6.959],[36,0.796],[8.806,-12.324]]}],"e":[{"i":[[2.133,-0.303],[4.14,0.182],[4.846,-1.032],[2.038,-0.837],[1.695,-9.519],[-17.534,-23.237],[-4.11,4.286],[-0.802,1.77],[-0.64,5.167],[-2.315,2.076],[-0.026,4.42],[13.054,13.503]],"o":[[-4.071,0.578],[-2.684,-0.118],[-5.441,1.159],[-4.41,1.811],[1.127,6.866],[6.613,6.415],[3.844,-4.008],[2.474,-5.459],[0.615,-4.959],[2.991,-2.682],[0.035,-5.891],[-10.214,-16.896]],"v":[[-7.23,-41.334],[-16.771,-35.679],[-24.999,-42.009],[-31.496,-31.594],[-40.916,-39.385],[-19.46,6.256],[14.038,25.828],[8.311,13.463],[21.126,11.377],[16.885,4.126],[30.482,0.793],[5.963,-15.618]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[2.133,-0.303],[4.14,0.182],[4.846,-1.032],[2.038,-0.837],[1.695,-9.519],[-17.534,-23.237],[-4.11,4.286],[-0.802,1.77],[-0.64,5.167],[-2.315,2.076],[-0.026,4.42],[13.054,13.503]],"o":[[-4.071,0.578],[-2.684,-0.118],[-5.441,1.159],[-4.41,1.811],[1.127,6.866],[6.613,6.415],[3.844,-4.008],[2.474,-5.459],[0.615,-4.959],[2.991,-2.682],[0.035,-5.891],[-10.214,-16.896]],"v":[[-7.23,-41.334],[-16.771,-35.679],[-24.999,-42.009],[-31.496,-31.594],[-40.916,-39.385],[-19.46,6.256],[14.038,25.828],[8.311,13.463],[21.126,11.377],[16.885,4.126],[30.482,0.793],[5.963,-15.618]]}],"e":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-2.929,2.547],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[3.547,-4.237],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-33.293,-10.058],[-16.904,5.346],[-22.38,-6.869],[-8.703,-6.003],[4.699,-10.341],[-1.794,-37.741]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-2.929,2.547],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[3.547,-4.237],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-33.293,-10.058],[-16.904,5.346],[-22.38,-6.869],[-8.703,-6.003],[4.699,-10.341],[-1.794,-37.741]]}],"e":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-6.929,0.047],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[7.41,-4.073],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-32.793,-16.058],[-23.904,-0.654],[-24.38,-17.869],[-12.203,-13.503],[2.699,-15.841],[-1.794,-37.741]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-6.929,0.047],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[7.41,-4.073],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-32.793,-16.058],[-23.904,-0.654],[-24.38,-17.869],[-12.203,-13.503],[2.699,-15.841],[-1.794,-37.741]]}],"e":[{"i":[[5.169,-4.24],[3.729,0.405],[4.442,-0.675],[3.172,2.572],[6.484,-4.277],[2.037,-12.404],[1.261,-8.285],[-6.865,-0.942],[-1.151,0.945],[-7.254,5.248],[-6.628,-0.092],[2.345,4.859]],"o":[[-6.416,4.013],[-2.418,-0.263],[-4.988,0.758],[-3.024,-2.273],[-3.102,1.954],[0.339,-2.389],[1.934,4.797],[3.996,-2.011],[7.916,-2.974],[7.246,-24.752],[5.288,0.366],[-1.697,-7.593]],"v":[[-0.514,-69.914],[-10.063,-72.03],[-14.325,-68.293],[-13.584,-83.363],[-28.92,-79.719],[-36.172,-65.218],[-39.594,-36.321],[-32.994,-22.307],[-30.508,-38.414],[-19.079,-28.855],[-2.996,-27.043],[-5.319,-57.36]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[5.169,-4.24],[3.729,0.405],[4.442,-0.675],[3.172,2.572],[6.484,-4.277],[2.037,-12.404],[1.261,-8.285],[-6.865,-0.942],[-1.151,0.945],[-7.254,5.248],[-6.628,-0.092],[2.345,4.859]],"o":[[-6.416,4.013],[-2.418,-0.263],[-4.988,0.758],[-3.024,-2.273],[-3.102,1.954],[0.339,-2.389],[1.934,4.797],[3.996,-2.011],[7.916,-2.974],[7.246,-24.752],[5.288,0.366],[-1.697,-7.593]],"v":[[-0.514,-69.914],[-10.063,-72.03],[-14.325,-68.293],[-13.584,-83.363],[-28.92,-79.719],[-36.172,-65.218],[-39.594,-36.321],[-32.994,-22.307],[-30.508,-38.414],[-19.079,-28.855],[-2.996,-27.043],[-5.319,-57.36]]}],"e":[{"i":[[5.169,-4.24],[3.729,0.405],[4.442,-0.675],[3.172,2.572],[6.484,-4.277],[2.339,-4.889],[1.261,-7.285],[-6.865,-0.942],[-1.151,0.945],[-7.254,5.248],[-6.628,-0.092],[2.345,4.859]],"o":[[-6.416,4.013],[-2.418,-0.263],[-4.988,0.758],[-3.024,-2.273],[-3.102,1.954],[0.339,-2.389],[-0.239,6.215],[3.996,-2.011],[7.916,-2.974],[7.246,-24.752],[5.288,0.366],[-1.697,-7.593]],"v":[[-0.514,-69.914],[-10.063,-72.03],[-7.825,-82.793],[-13.584,-83.363],[-28.92,-79.719],[-33.672,-74.718],[-39.094,-55.821],[-36.494,-41.807],[-30.008,-53.414],[-19.579,-41.355],[-5.496,-40.543],[-5.319,-57.36]]}]},{"t":44}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[207,211,174,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[46.273,142.485]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 32"}],"bounds":{"l":5,"t":58,"b":181,"r":102},"ip":28,"op":43,"st":30},{"ddd":0,"ind":16,"ty":4,"nm":"manchaAzul 5","ks":{"o":{"k":100},"r":{"k":-28},"p":{"k":[-10.123,170.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0.04,-0.183],[-0.051,0.174]],"o":[[-0.084,0.163],[0.084,-0.285]],"v":[[-57.803,-24.394],[-57.317,-24.258]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[88.107,171.712]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 21"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-0.094,-0.156],[-0.339,-0.267],[0.138,0.109],[0.2,0.332]],"o":[[0.228,0.378],[0.139,0.11],[-0.298,-0.235],[-0.094,-0.156]],"v":[[-47.751,-25.357],[-46.902,-24.396],[-46.774,-24.644],[-47.52,-25.498]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[76.944,171.413]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 22"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[-0.264,-0.147],[-2.124,3.807],[4.137,4.027],[0.269,-6.566]],"o":[[-0.014,0.103],[5.754,-10.311],[-3.296,-3.208],[-0.402,9.818]],"v":[[-63.632,-29.007],[-60.751,-54.312],[-53.845,-76.276],[-65.848,-56.192]]}],"e":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}],"e":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49.333,"s":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}],"e":[{"i":[[-0.264,-0.147],[-4.337,-0.437],[-2,5.118],[8.691,-1.621]],"o":[[-0.014,0.103],[7.015,0.706],[0.949,-2.429],[-3.243,0.605]],"v":[[-55.735,-70.226],[-46.016,-74.118],[-31.808,-68.848],[-46.907,-76.172]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[{"i":[[-0.264,-0.147],[-4.337,-0.437],[-2,5.118],[8.691,-1.621]],"o":[[-0.014,0.103],[7.015,0.706],[0.949,-2.429],[-3.243,0.605]],"v":[[-55.735,-70.226],[-46.016,-74.118],[-31.808,-68.848],[-46.907,-76.172]]}],"e":[{"i":[[-0.264,-0.147],[-3.377,-3.395],[-2.188,3.251],[6.336,6.165]],"o":[[-0.014,0.103],[3.175,3.192],[1.456,-2.163],[-3.087,-3.003]],"v":[[-43.718,-72.652],[-34.207,-62.559],[-22.212,-51.865],[-33.919,-66.656]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[-0.264,-0.147],[-3.377,-3.395],[-2.188,3.251],[6.336,6.165]],"o":[[-0.014,0.103],[3.175,3.192],[1.456,-2.163],[-3.087,-3.003]],"v":[[-43.718,-72.652],[-34.207,-62.559],[-22.212,-51.865],[-33.919,-66.656]]}],"e":[{"i":[[-0.099,-0.087],[-1.123,-1.762],[-1.236,1.182],[2.126,3.219]],"o":[[-0.016,0.043],[1.056,1.657],[0.822,-0.786],[-1.036,-1.568]],"v":[[-19.336,-40.837],[-16.223,-35.648],[-12.107,-29.97],[-15.718,-37.367]]}]},{"t":55}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97.44,158.252]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 34"}],"bounds":{"l":29,"t":75,"b":148,"r":86},"ip":44,"op":55,"st":24},{"ddd":0,"ind":17,"ty":4,"nm":"manchaAzul 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0.04,-0.183],[-0.051,0.174]],"o":[[-0.084,0.163],[0.084,-0.285]],"v":[[-57.803,-24.394],[-57.317,-24.258]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[88.107,171.712]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 21"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-0.094,-0.156],[-0.339,-0.267],[0.138,0.109],[0.2,0.332]],"o":[[0.228,0.378],[0.139,0.11],[-0.298,-0.235],[-0.094,-0.156]],"v":[[-47.751,-25.357],[-46.902,-24.396],[-46.774,-24.644],[-47.52,-25.498]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[76.944,171.413]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 22"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[-0.264,-0.147],[-1.271,4.17],[5.699,1.571],[0.269,-6.566]],"o":[[-0.014,0.103],[3.752,-12.31],[-4.434,-1.222],[-0.402,9.818]],"v":[[-62.235,-40.226],[-61.751,-54.063],[-59.198,-75.694],[-65.848,-56.192]]}],"e":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46.667,"s":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}],"e":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49.333,"s":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}],"e":[{"i":[[0.008,-0.073],[-0.388,-0.469],[-0.509,0.473],[0.656,0.599]],"o":[[-0.019,0.025],[0.541,0.653],[0.497,-0.462],[-0.332,-0.304]],"v":[[-37.859,-66.821],[-37.194,-65.777],[-36.432,-64.358],[-36.864,-66.576]]}]},{"t":52}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97.44,158.252]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 34"}],"bounds":{"l":29,"t":75,"b":148,"r":62},"ip":44,"op":52,"st":24},{"ddd":0,"ind":18,"ty":4,"nm":"manchaAzul 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[0.193,-0.895],[-0.251,0.852]],"o":[[-0.408,0.798],[0.41,-1.391]],"v":[[-53.124,-18.344],[-50.752,-17.68]]}],"e":[{"i":[[0.04,-0.183],[-0.051,0.174]],"o":[[-0.084,0.163],[0.084,-0.285]],"v":[[-57.803,-24.394],[-57.317,-24.258]]}]},{"t":44}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[88.107,171.712]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 21"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[-0.458,-0.76],[-1.656,-1.304],[0.674,0.531],[0.977,1.621]],"o":[[1.112,1.846],[0.68,0.536],[-1.456,-1.148],[-0.458,-0.759]],"v":[[-47.387,-24.208],[-43.244,-19.515],[-42.617,-20.724],[-46.26,-24.894]]}],"e":[{"i":[[-0.094,-0.156],[-0.339,-0.267],[0.138,0.109],[0.2,0.332]],"o":[[0.228,0.378],[0.139,0.11],[-0.298,-0.235],[-0.094,-0.156]],"v":[[-47.751,-25.357],[-46.902,-24.396],[-46.774,-24.644],[-47.52,-25.498]]}]},{"t":44}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[76.944,171.413]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 22"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[-1.514,2.603],[-3.887,5.927],[0.803,5.402],[5.106,10.685],[1.877,-3.935],[3.449,-3.554],[6.598,-5.682],[-0.203,-5.986],[-3.867,-1.329]],"o":[[-0.346,-3.232],[2.113,-6.323],[-0.948,-5.974],[-4.787,-10.018],[-6.141,12.875],[-3.203,3.301],[-1.539,1.325],[-0.541,3.254],[5.57,2.381]],"v":[[-35.235,-4.976],[-44.862,-13.3],[-25.738,-17.197],[-42.462,-28.855],[-55.876,-39.438],[-67.698,-31.569],[-68.848,-17.442],[-76.406,-17.268],[-58.657,0.194]]}],"e":[{"i":[[-3.889,4.353],[-1.262,3.552],[0.609,4.167],[2.232,6.19],[2.814,6.503],[-4.301,-7.866],[2.723,-4.307],[-0.344,-10.355],[-5.467,-7.442]],"o":[[2.111,-5.897],[-1.564,-5.683],[-0.48,-5.075],[-1.537,-7.268],[-4.686,-5.247],[3.199,8.134],[-3.527,7.193],[0.808,3.949],[4.533,6.308]],"v":[[-44.86,1.774],[-47.237,-14.3],[-39.238,-26.447],[-50.337,-31.605],[-54.064,-49.876],[-63.948,-47.507],[-72.973,-38.817],[-82.156,-29.768],[-72.532,-13.181]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-3.889,4.353],[-1.262,3.552],[0.609,4.167],[2.232,6.19],[2.814,6.503],[-4.301,-7.866],[2.723,-4.307],[-0.344,-10.355],[-5.467,-7.442]],"o":[[2.111,-5.897],[-1.564,-5.683],[-0.48,-5.075],[-1.537,-7.268],[-4.686,-5.247],[3.199,8.134],[-3.527,7.193],[0.808,3.949],[4.533,6.308]],"v":[[-44.86,1.774],[-47.237,-14.3],[-39.238,-26.447],[-50.337,-31.605],[-54.064,-49.876],[-63.948,-47.507],[-72.973,-38.817],[-82.156,-29.768],[-72.532,-13.181]]}],"e":[{"i":[[-0.264,-0.147],[1.363,1.177],[0.416,2.932],[-0.643,1.695],[1.533,4.081],[1.949,-2.929],[1.098,-5.432],[-1.594,-7.605],[-4.842,-3.317]],"o":[[-0.014,0.103],[-5.241,-5.043],[-0.012,-4.176],[1.713,-4.518],[-4.248,-11.31],[-2.548,3.829],[-0.402,1.99],[2.156,4.645],[5.57,2.381]],"v":[[-42.985,-7.976],[-49.612,-15.3],[-56.738,-29.197],[-55.212,-39.355],[-54.251,-54.313],[-70.198,-53.944],[-73.598,-41.692],[-71.406,-27.768],[-62.907,-16.556]]}]},{"t":44}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97.44,158.252]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 34"}],"bounds":{"l":15,"t":98,"b":161,"r":72},"ip":42,"op":44,"st":24},{"ddd":0,"ind":19,"ty":4,"nm":"manchaAzul","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.199,0.232],[0.199,-0.232]],"o":[[0.199,-0.232],[-0.199,0.232]],"v":[[56.93,-18.589],[56.571,-18.898]]}],"e":[{"i":[[-0.553,0.182],[0.553,-0.182]],"o":[[0.553,-0.182],[-0.553,0.182]],"v":[[42.185,-5.897],[41.903,-6.754]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.553,0.182],[0.553,-0.182]],"o":[[0.553,-0.182],[-0.553,0.182]],"v":[[42.185,-5.897],[41.903,-6.754]]}],"e":[{"i":[[-1.512,0.497],[1.512,-0.497]],"o":[[1.512,-0.497],[-1.512,0.497]],"v":[[41.226,-3.374],[40.456,-5.718]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.512,0.497],[1.512,-0.497]],"o":[[1.512,-0.497],[-1.512,0.497]],"v":[[41.226,-3.374],[40.456,-5.718]]}],"e":[{"i":[[-1.881,0.453],[1.881,-0.453]],"o":[[1.881,-0.453],[-1.881,0.453]],"v":[[37.796,-3.16],[37.093,-6.076]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.881,0.453],[1.881,-0.453]],"o":[[1.881,-0.453],[-1.881,0.453]],"v":[[37.796,-3.16],[37.093,-6.076]]}],"e":[{"i":[[-1.888,0.423],[1.888,-0.423]],"o":[[1.888,-0.423],[-1.888,0.423]],"v":[[32.175,-0.762],[31.52,-3.689]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-1.888,0.423],[1.888,-0.423]],"o":[[1.888,-0.423],[-1.888,0.423]],"v":[[32.175,-0.762],[31.52,-3.689]]}],"e":[{"i":[[-1.881,0.452],[1.882,-0.452]],"o":[[1.881,-0.452],[-1.882,0.452]],"v":[[24.675,-2.399],[23.975,-5.316]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-1.881,0.452],[1.882,-0.452]],"o":[[1.881,-0.452],[-1.882,0.452]],"v":[[24.675,-2.399],[23.975,-5.316]]}],"e":[{"i":[[-1.931,0.125],[1.931,-0.125]],"o":[[1.931,-0.125],[-1.931,0.125]],"v":[[12.179,0.891],[11.986,-2.103]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-1.931,0.125],[1.931,-0.125]],"o":[[1.931,-0.125],[-1.931,0.125]],"v":[[12.179,0.891],[11.986,-2.103]]}],"e":[{"i":[[-1.932,-0.11],[1.932,0.11]],"o":[[1.932,0.11],[-1.932,-0.11]],"v":[[5.357,1.95],[5.529,-1.045]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[-1.932,-0.11],[1.932,0.11]],"o":[[1.932,0.11],[-1.932,-0.11]],"v":[[5.357,1.95],[5.529,-1.045]]}],"e":[{"i":[[-1.181,-0.483],[1.181,0.483]],"o":[[1.181,0.483],[-1.181,-0.483]],"v":[[-24.077,-5.841],[-23.328,-7.673]]}]},{"t":42}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[88.107,171.712]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 21"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.246,0.181],[-0.399,0.624],[0.163,-0.254],[0.525,-0.385]],"o":[[0.598,-0.439],[0.164,-0.257],[-0.351,0.549],[-0.246,0.181]],"v":[[66.143,-16.206],[67.628,-17.797],[67.2,-18],[65.879,-16.6]]}],"e":[{"i":[[-0.579,0.053],[-1.264,0.626],[0.515,-0.255],[1.235,-0.113]],"o":[[1.406,-0.128],[0.52,-0.257],[-1.113,0.551],[-0.579,0.053]],"v":[[48.119,-4.115],[52.104,-5.251],[51.604,-6.002],[48.075,-5.016]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.579,0.053],[-1.264,0.626],[0.515,-0.255],[1.235,-0.113]],"o":[[1.406,-0.128],[0.52,-0.257],[-1.113,0.551],[-0.579,0.053]],"v":[[48.119,-4.115],[52.104,-5.251],[51.604,-6.002],[48.075,-5.016]]}],"e":[{"i":[[-1.584,0.144],[-3.458,1.713],[1.409,-0.697],[3.378,-0.308]],"o":[[3.846,-0.35],[1.421,-0.704],[-3.043,1.506],[-1.582,0.144]],"v":[[38.089,0.981],[48.987,-2.126],[47.621,-4.181],[37.97,-1.484]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.584,0.144],[-3.458,1.713],[1.409,-0.697],[3.378,-0.308]],"o":[[3.846,-0.35],[1.421,-0.704],[-3.043,1.506],[-1.582,0.144]],"v":[[38.089,0.981],[48.987,-2.126],[47.621,-4.181],[37.97,-1.484]]}],"e":[{"i":[[-1.934,0.019],[-4.359,1.736],[1.776,-0.706],[4.124,-0.041]],"o":[[4.696,-0.046],[1.792,-0.714],[-3.836,1.526],[-1.932,0.019]],"v":[[31.228,0.649],[44.743,-2.045],[43.289,-4.67],[31.326,-2.35]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.934,0.019],[-4.359,1.736],[1.776,-0.706],[4.124,-0.041]],"o":[[4.696,-0.046],[1.792,-0.714],[-3.836,1.526],[-1.932,0.019]],"v":[[31.228,0.649],[44.743,-2.045],[43.289,-4.67],[31.326,-2.35]]}],"e":[{"i":[[-1.934,-0.012],[-4.387,1.666],[1.787,-0.678],[4.124,0.026]],"o":[[4.696,0.029],[1.803,-0.685],[-3.86,1.464],[-1.932,-0.012]],"v":[[25.553,2.761],[39.11,0.285],[37.699,-2.363],[25.699,-0.236]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-1.934,-0.012],[-4.387,1.666],[1.787,-0.678],[4.124,0.026]],"o":[[4.696,0.029],[1.803,-0.685],[-3.86,1.464],[-1.932,-0.012]],"v":[[25.553,2.761],[39.11,0.285],[37.699,-2.363],[25.699,-0.236]]}],"e":[{"i":[[-1.934,0.018],[-4.361,1.733],[1.776,-0.705],[4.124,-0.038]],"o":[[4.696,-0.043],[1.792,-0.712],[-3.837,1.523],[-1.932,0.018]],"v":[[18.105,1.397],[31.621,-1.287],[30.17,-3.914],[18.205,-1.602]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-1.934,0.018],[-4.361,1.733],[1.776,-0.705],[4.124,-0.038]],"o":[[4.696,-0.043],[1.792,-0.712],[-3.837,1.523],[-1.932,0.018]],"v":[[18.105,1.397],[31.621,-1.287],[30.17,-3.914],[18.205,-1.602]]}],"e":[{"i":[[-1.909,-0.312],[-4.592,0.965],[1.871,-0.392],[4.07,0.666]],"o":[[4.634,0.758],[1.887,-0.396],[-4.041,0.847],[-1.907,-0.312]],"v":[[5.272,1.614],[19.048,1.272],[18.066,-1.563],[5.882,-1.325]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-1.909,-0.312],[-4.592,0.965],[1.871,-0.392],[4.07,0.666]],"o":[[4.634,0.758],[1.887,-0.396],[-4.041,0.847],[-1.907,-0.312]],"v":[[5.272,1.614],[19.048,1.272],[18.066,-1.563],[5.882,-1.325]]}],"e":[{"i":[[-1.857,-0.541],[-4.675,0.4],[1.904,-0.162],[3.96,1.154]],"o":[[4.508,1.315],[1.922,-0.165],[-4.114,0.351],[-1.855,-0.541]],"v":[[-1.468,0.478],[12.249,1.81],[11.617,-1.124],[-0.506,-2.365]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[-1.857,-0.541],[-4.675,0.4],[1.904,-0.162],[3.96,1.154]],"o":[[4.508,1.315],[1.922,-0.165],[-4.114,0.351],[-1.855,-0.541]],"v":[[-1.468,0.478],[12.249,1.81],[11.617,-1.124],[-0.506,-2.365]]}],"e":[{"i":[[-1.042,-0.736],[-3.002,-0.752],[1.223,0.307],[2.223,1.569]],"o":[[2.53,1.786],[1.234,0.309],[-2.641,-0.663],[-1.041,-0.735]],"v":[[-23.755,-10.503],[-15.484,-6.732],[-15.249,-8.697],[-22.545,-12.07]]}]},{"t":42}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[76.944,171.413]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 22"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-2.396,1.474],[5.978,-0.547],[0.398,4.481],[2.673,2.672],[3.225,-0.829],[2.157,-1.277],[0.509,0.129],[0.32,-0.482],[-4.246,2.108],[-2.155,0.917],[1.141,-2.364],[-4.199,1.606],[-2.337,0.28],[-0.507,-2.324]],"o":[[9.11,-5.606],[-5.18,0.474],[-0.368,-4.146],[-2.17,-2.169],[-2.602,0.669],[-1.474,0.873],[-0.439,0.607],[-5.561,6.596],[5.239,-5.657],[6.503,-2.766],[-2.284,4.73],[3.57,-1.365],[2.2,-0.264],[0.32,1.465]],"v":[[42.168,-0.597],[47.512,-8.982],[40.878,-17.92],[38.39,-30.543],[28.992,-32.018],[21.805,-28.191],[18.005,-25.714],[15.312,-22.967],[24.261,-16.217],[31.156,-24.29],[36.052,-17.768],[36.14,-11.786],[38.309,-9.087],[43.784,-6.67]]}],"e":[{"i":[[-2.302,1.453],[5.744,-0.54],[-3.718,2.262],[3.111,2.316],[1.594,2.876],[1.771,2.223],[0.489,0.128],[2.963,-2.382],[-1.857,-1.342],[-0.65,-2.518],[-2.357,-3.692],[-1.859,1.161],[-0.83,-2.159],[-1.044,-5.613]],"o":[[8.754,-5.526],[-4.978,0.468],[5.225,-3.178],[-4.516,-3.361],[-2.091,-3.773],[-2.043,-2.563],[-2.281,1.689],[-5.473,4.399],[1.862,3.017],[1.739,6.734],[2.044,3.203],[3.137,-1.959],[1.052,2.737],[0.573,3.079]],"v":[[35.235,6.317],[37.714,-1.131],[37.792,-7.534],[34.261,-19.114],[22.307,-20.023],[22.041,-26.06],[14.14,-21.439],[5.973,-15.461],[4.419,-8.599],[18.885,-8.24],[13.684,2.198],[23.598,0.193],[29.933,1.218],[16.865,12.047]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-2.302,1.453],[5.744,-0.54],[-3.718,2.262],[3.111,2.316],[1.594,2.876],[1.771,2.223],[0.489,0.128],[2.963,-2.382],[-1.857,-1.342],[-0.65,-2.518],[-2.357,-3.692],[-1.859,1.161],[-0.83,-2.159],[-1.044,-5.613]],"o":[[8.754,-5.526],[-4.978,0.468],[5.225,-3.178],[-4.516,-3.361],[-2.091,-3.773],[-2.043,-2.563],[-2.281,1.689],[-5.473,4.399],[1.862,3.017],[1.739,6.734],[2.044,3.203],[3.137,-1.959],[1.052,2.737],[0.573,3.079]],"v":[[35.235,6.317],[37.714,-1.131],[37.792,-7.534],[34.261,-19.114],[22.307,-20.023],[22.041,-26.06],[14.14,-21.439],[5.973,-15.461],[4.419,-8.599],[18.885,-8.24],[13.684,2.198],[23.598,0.193],[29.933,1.218],[16.865,12.047]]}],"e":[{"i":[[-2.316,1.425],[5.777,-0.529],[-3.74,2.218],[3.129,2.271],[1.603,2.82],[2.171,2.417],[0.492,0.125],[2.179,-0.733],[0.804,-3.186],[-0.045,-2.249],[0.836,-4.689],[0.106,-3.068],[0.524,-1.057],[-11.447,2.218]],"o":[[8.805,-5.418],[-5.007,0.458],[5.255,-3.116],[-4.542,-3.296],[-2.103,-3.7],[-3.562,-3.966],[-2.294,1.656],[-6.629,2.229],[-0.067,2.176],[0.147,7.416],[-0.659,3.696],[-0.075,2.17],[-0.812,1.348],[5.305,-1.028]],"v":[[39.935,7.265],[31.741,1.299],[28.802,-5.47],[33.344,-18.204],[16.78,-12.416],[19.184,-20.74],[8.833,-17.278],[-0.984,-13.286],[-12.432,-10.298],[-2.959,-1.13],[-11.128,3.227],[-8.906,11.146],[-7.076,16.426],[13.711,17.159]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-2.316,1.425],[5.777,-0.529],[-3.74,2.218],[3.129,2.271],[1.603,2.82],[2.171,2.417],[0.492,0.125],[2.179,-0.733],[0.804,-3.186],[-0.045,-2.249],[0.836,-4.689],[0.106,-3.068],[0.524,-1.057],[-11.447,2.218]],"o":[[8.805,-5.418],[-5.007,0.458],[5.255,-3.116],[-4.542,-3.296],[-2.103,-3.7],[-3.562,-3.966],[-2.294,1.656],[-6.629,2.229],[-0.067,2.176],[0.147,7.416],[-0.659,3.696],[-0.075,2.17],[-0.812,1.348],[5.305,-1.028]],"v":[[39.935,7.265],[31.741,1.299],[28.802,-5.47],[33.344,-18.204],[16.78,-12.416],[19.184,-20.74],[8.833,-17.278],[-0.984,-13.286],[-12.432,-10.298],[-2.959,-1.13],[-11.128,3.227],[-8.906,11.146],[-7.076,16.426],[13.711,17.159]]}],"e":[{"i":[[-2.31,1.341],[5.687,-0.374],[-3.729,2.083],[3.016,2.309],[1.503,2.81],[2.071,2.428],[0.48,0.135],[6.763,-2.956],[0.87,-3.109],[1.345,-1.753],[5.819,-2.805],[0.181,-3.01],[1.443,-5.464],[-14.296,-0.92]],"o":[[8.784,-5.098],[-4.928,0.324],[5.239,-2.928],[-4.377,-3.351],[-1.972,-3.686],[-3.398,-3.984],[-5.457,2.012],[-8.324,3.639],[-0.121,2.135],[-5.283,6.889],[-3.322,1.601],[-0.128,2.13],[-1.168,4.183],[16.465,1.059]],"v":[[37.305,9.255],[32.06,2.206],[29.345,-4.515],[35.163,-16.355],[18.245,-11.89],[21.328,-19.465],[10.598,-18.176],[-5.262,-11.417],[-21.327,-7.938],[-15,-4.279],[-19.595,5.135],[-11.496,9.974],[-26.813,11.881],[-9.715,18.818]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-2.31,1.341],[5.687,-0.374],[-3.729,2.083],[3.016,2.309],[1.503,2.81],[2.071,2.428],[0.48,0.135],[6.763,-2.956],[0.87,-3.109],[1.345,-1.753],[5.819,-2.805],[0.181,-3.01],[1.443,-5.464],[-14.296,-0.92]],"o":[[8.784,-5.098],[-4.928,0.324],[5.239,-2.928],[-4.377,-3.351],[-1.972,-3.686],[-3.398,-3.984],[-5.457,2.012],[-8.324,3.639],[-0.121,2.135],[-5.283,6.889],[-3.322,1.601],[-0.128,2.13],[-1.168,4.183],[16.465,1.059]],"v":[[37.305,9.255],[32.06,2.206],[29.345,-4.515],[35.163,-16.355],[18.245,-11.89],[21.328,-19.465],[10.598,-18.176],[-5.262,-11.417],[-21.327,-7.938],[-15,-4.279],[-19.595,5.135],[-11.496,9.974],[-26.813,11.881],[-9.715,18.818]]}],"e":[{"i":[[-2.167,1.412],[5.406,-0.524],[-3.499,2.198],[2.928,2.251],[1.5,2.795],[3.066,0.691],[0.46,0.124],[5.835,0],[5.396,2.134],[2.388,-5.89],[1.962,-6.177],[0.099,-3.041],[-0.26,-6.344],[-14.711,-3.17]],"o":[[8.239,-5.37],[-4.685,0.454],[4.917,-3.089],[-4.25,-3.267],[-1.968,-3.667],[-3.333,-0.751],[-4.933,1.712],[-6.544,0],[-0.063,2.157],[-2.685,6.623],[-1.468,4.621],[-0.07,2.151],[-0.51,3.455],[18.856,4.064]],"v":[[34.501,10.579],[32.833,1.752],[30.083,-5.222],[32.333,-14.136],[18.333,-11.842],[18.583,-21.872],[6.897,-16.866],[-9.038,-13.234],[-35.001,-14.687],[-29.887,-5.422],[-42.781,-5.87],[-37.452,7.805],[-47.49,6.419],[-9.538,17.797]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-2.167,1.412],[5.406,-0.524],[-3.499,2.198],[2.928,2.251],[1.5,2.795],[3.066,0.691],[0.46,0.124],[5.835,0],[5.396,2.134],[2.388,-5.89],[1.962,-6.177],[0.099,-3.041],[-0.26,-6.344],[-14.711,-3.17]],"o":[[8.239,-5.37],[-4.685,0.454],[4.917,-3.089],[-4.25,-3.267],[-1.968,-3.667],[-3.333,-0.751],[-4.933,1.712],[-6.544,0],[-0.063,2.157],[-2.685,6.623],[-1.468,4.621],[-0.07,2.151],[-0.51,3.455],[18.856,4.064]],"v":[[34.501,10.579],[32.833,1.752],[30.083,-5.222],[32.333,-14.136],[18.333,-11.842],[18.583,-21.872],[6.897,-16.866],[-9.038,-13.234],[-35.001,-14.687],[-29.887,-5.422],[-42.781,-5.87],[-37.452,7.805],[-47.49,6.419],[-9.538,17.797]]}],"e":[{"i":[[-2.33,1.376],[5.701,-0.336],[-0.082,4.453],[7.372,-2.564],[1.472,2.944],[2.98,-1.213],[5.421,-0.132],[1.342,0.393],[1.503,-5.129],[2.73,-5.993],[2.293,-6.305],[0.217,-3.137],[-0.036,-6.561],[-10.16,-1.654]],"o":[[8.86,-5.233],[-4.941,0.291],[0.091,-4.926],[-5.243,1.823],[-1.931,-3.862],[-11.838,4.818],[-5.421,0.132],[-6.621,-1.937],[-2.61,6.772],[-3.069,6.738],[-1.715,4.717],[-0.154,2.219],[-0.665,3.548],[20.034,3.262]],"v":[[24.875,10.057],[20.746,2.971],[26.39,-7.597],[14.504,-6.292],[3.744,-7.047],[5.396,-16.341],[-15.472,-12.177],[-25.329,-14.193],[-38.073,-18.184],[-33.245,-9.139],[-46.78,-10.091],[-41.689,4.235],[-53.076,3.25],[-23.303,17.088]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-2.33,1.376],[5.701,-0.336],[-0.082,4.453],[7.372,-2.564],[1.472,2.944],[2.98,-1.213],[5.421,-0.132],[1.342,0.393],[1.503,-5.129],[2.73,-5.993],[2.293,-6.305],[0.217,-3.137],[-0.036,-6.561],[-10.16,-1.654]],"o":[[8.86,-5.233],[-4.941,0.291],[0.091,-4.926],[-5.243,1.823],[-1.931,-3.862],[-11.838,4.818],[-5.421,0.132],[-6.621,-1.937],[-2.61,6.772],[-3.069,6.738],[-1.715,4.717],[-0.154,2.219],[-0.665,3.548],[20.034,3.262]],"v":[[24.875,10.057],[20.746,2.971],[26.39,-7.597],[14.504,-6.292],[3.744,-7.047],[5.396,-16.341],[-15.472,-12.177],[-25.329,-14.193],[-38.073,-18.184],[-33.245,-9.139],[-46.78,-10.091],[-41.689,4.235],[-53.076,3.25],[-23.303,17.088]]}],"e":[{"i":[[-2.327,1.116],[1.536,1.635],[4.027,4.857],[1.067,4.255],[1.224,2.37],[4.758,-0.891],[1.953,0.521],[3.14,1.926],[1.092,-1.231],[3.558,-5.224],[1.759,-2.659],[1.453,-2.572],[0.269,-6.348],[-9.574,-2.049]],"o":[[13.067,-6.266],[-3.304,-3.516],[-2.956,-3.566],[-1.433,-5.714],[-2.34,-4.531],[-6.009,1.125],[-4.071,-1.085],[-1.766,-1.083],[-2.213,2.494],[-1.844,2.707],[-2.655,4.012],[-2.411,4.269],[-0.796,3.403],[18.879,4.04]],"v":[[16.477,12.559],[13.166,5.135],[13.491,-4.767],[1.214,-4.95],[5.067,-15.044],[-9.717,-15.256],[-29.627,-16.397],[-38.603,-19.29],[-43.377,-21.767],[-43.478,-13.182],[-51.556,-14.306],[-50.562,-4.214],[-58.986,0.073],[-26.704,15.465]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-2.327,1.116],[1.536,1.635],[4.027,4.857],[1.067,4.255],[1.224,2.37],[4.758,-0.891],[1.953,0.521],[3.14,1.926],[1.092,-1.231],[3.558,-5.224],[1.759,-2.659],[1.453,-2.572],[0.269,-6.348],[-9.574,-2.049]],"o":[[13.067,-6.266],[-3.304,-3.516],[-2.956,-3.566],[-1.433,-5.714],[-2.34,-4.531],[-6.009,1.125],[-4.071,-1.085],[-1.766,-1.083],[-2.213,2.494],[-1.844,2.707],[-2.655,4.012],[-2.411,4.269],[-0.796,3.403],[18.879,4.04]],"v":[[16.477,12.559],[13.166,5.135],[13.491,-4.767],[1.214,-4.95],[5.067,-15.044],[-9.717,-15.256],[-29.627,-16.397],[-38.603,-19.29],[-43.377,-21.767],[-43.478,-13.182],[-51.556,-14.306],[-50.562,-4.214],[-58.986,0.073],[-26.704,15.465]]}],"e":[{"i":[[-2.646,0.242],[7.484,1.531],[0.958,5.133],[1.48,2.881],[1.48,2.702],[4.612,-0.228],[5.851,2.215],[0.988,1.005],[2.091,-2.952],[2.494,-6.009],[2.049,-6.302],[0.103,-3.102],[-0.271,-6.472],[-10.063,-1.815]],"o":[[16.707,-1.531],[-4.819,-0.986],[-0.891,-4.775],[-2.741,-5.337],[-1.29,-2.355],[-2.836,0.14],[-5.056,-1.914],[-1.526,-1.551],[-2.086,2.721],[-2.804,6.757],[-1.533,4.714],[-0.073,2.195],[-0.533,3.524],[9.439,1.702]],"v":[[-3.207,17.632],[3.406,7.006],[9.932,-2.541],[-4.687,0.792],[2.623,-13.618],[-9.647,-13.119],[-25.504,-15.596],[-37.99,-22.827],[-45.033,-25.421],[-41.204,-13.281],[-52.579,-12.118],[-48.58,1.834],[-53.841,4.742],[-26.47,16.255]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[-2.646,0.242],[7.484,1.531],[0.958,5.133],[1.48,2.881],[1.48,2.702],[4.612,-0.228],[5.851,2.215],[0.988,1.005],[2.091,-2.952],[2.494,-6.009],[2.049,-6.302],[0.103,-3.102],[-0.271,-6.472],[-10.063,-1.815]],"o":[[16.707,-1.531],[-4.819,-0.986],[-0.891,-4.775],[-2.741,-5.337],[-1.29,-2.355],[-2.836,0.14],[-5.056,-1.914],[-1.526,-1.551],[-2.086,2.721],[-2.804,6.757],[-1.533,4.714],[-0.073,2.195],[-0.533,3.524],[9.439,1.702]],"v":[[-3.207,17.632],[3.406,7.006],[9.932,-2.541],[-4.687,0.792],[2.623,-13.618],[-9.647,-13.119],[-25.504,-15.596],[-37.99,-22.827],[-45.033,-25.421],[-41.204,-13.281],[-52.579,-12.118],[-48.58,1.834],[-53.841,4.742],[-26.47,16.255]]}],"e":[{"i":[[-10.34,-1.777],[4.013,4.286],[2.617,3.248],[1.013,3.059],[1.173,4.812],[7.218,0.854],[3.352,3.087],[2.276,-1.505],[6.879,-0.385],[1.916,-3.032],[5.678,-5.857],[1.438,-2.757],[-0.281,-6.483],[-6.357,-1.557]],"o":[[9.41,1.223],[-2.001,-2.638],[-2.783,-3.133],[-1.736,-4.749],[-0.327,-3.04],[-8.48,-3.476],[-4.106,-3.781],[-1.85,1.223],[-3.621,-0.885],[-2.459,3.891],[-3.468,3.578],[-1.173,2.249],[-0.552,3.531],[2.868,1.474]],"v":[[-18.409,19.153],[-17.262,9.341],[-11.127,-0.152],[-23.37,-2.143],[-10.172,-10.333],[-22.682,-14.747],[-37.852,-23.21],[-47.776,-32.619],[-52.628,-23.988],[-61.166,-23.091],[-59.427,-10.016],[-49.326,2.877],[-57.737,1.919],[-38.367,14.153]]}]},{"t":42}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97.44,158.252]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 34"}],"bounds":{"l":35,"t":125,"b":178,"r":149},"ip":23,"op":42,"st":25},{"ddd":0,"ind":20,"ty":4,"nm":"gotaRoja3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[1.547,-0.956],[0.433,0.989]],"o":[[-1.415,0.874],[-0.51,-1.166]],"v":[[-0.671,-1.774],[1.653,1.741]]}],"e":[{"i":[[2.915,-2.435],[0.433,0.989]],"o":[[-2.733,2.282],[-0.51,-1.166]],"v":[[-6.421,-8.774],[-1.347,-2.259]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[2.915,-2.435],[0.433,0.989]],"o":[[-2.733,2.282],[-0.51,-1.166]],"v":[[-6.421,-8.774],[-1.347,-2.259]]}],"e":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-16.171,-14.774],[-8.597,-6.259]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-16.171,-14.774],[-8.597,-6.259]]}],"e":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-20.171,-19.274],[-15.847,-15.259]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-20.171,-19.274],[-15.847,-15.259]]}],"e":[{"i":[[0.017,0.032],[-0.196,1]],"o":[[-0.221,1.008],[-0.057,-0.733]],"v":[[-24.171,-22.024],[-22.097,-20.259]]}]},{"t":28}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[131.844,112.371]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 11"}],"bounds":{"l":107,"t":90,"b":115,"r":134},"ip":20,"op":28,"st":20},{"ddd":0,"ind":21,"ty":4,"nm":"gotaRoja2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[1.764,0.191],[-1.084,2.023]],"o":[[-1.814,-0.197],[0.124,0.084]],"v":[[-2.782,1.893],[-2.72,3.861]]}],"e":[{"i":[[3.186,-0.447],[-0.626,0.835]],"o":[[-3.504,0.491],[1.624,-2.166]],"v":[[-0.782,-10.358],[-2.47,1.111]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[3.186,-0.447],[-0.626,0.835]],"o":[[-3.504,0.491],[1.624,-2.166]],"v":[[-0.782,-10.358],[-2.47,1.111]]}],"e":[{"i":[[2.436,0.053],[0.374,0.584]],"o":[[-3.1,-0.068],[-0.535,-4.677]],"v":[[-3.782,-23.108],[-3.22,-9.639]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[2.436,0.053],[0.374,0.584]],"o":[[-3.1,-0.068],[-0.535,-4.677]],"v":[[-3.782,-23.108],[-3.22,-9.639]]}],"e":[{"i":[[1.613,-0.492],[0.374,0.584]],"o":[[-1.814,0.553],[-0.535,-4.677]],"v":[[-6.032,-25.358],[-5.47,-19.639]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[1.613,-0.492],[0.374,0.584]],"o":[[-1.814,0.553],[-0.535,-4.677]],"v":[[-6.032,-25.358],[-5.47,-19.639]]}],"e":[{"i":[[1.613,-0.492],[0.374,0.584]],"o":[[-1.814,0.553],[0.374,-0.916]],"v":[[-6.032,-25.358],[-5.97,-23.139]]}]},{"t":28}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[142.286,111.183]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 12"}],"bounds":{"l":135,"t":85,"b":116,"r":143},"ip":20,"op":28,"st":20},{"ddd":0,"ind":22,"ty":4,"nm":"gotaRoja1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[-3.424,4.479],[-1.269,2.378],[-2.44,4.243]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[-1.174,1.479],[0.731,-0.872],[-0.44,0.993]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[-1.174,1.479],[0.731,-0.872],[-0.44,0.993]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[0.576,-1.021],[6.981,-7.872],[5.81,-6.007]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[0.576,-1.021],[6.981,-7.872],[5.81,-6.007]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[5.826,-7.521],[10.981,-12.622],[9.81,-10.757]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[5.826,-7.521],[10.981,-12.622],[9.81,-10.757]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.696,0.279]],"o":[[-0.255,-0.984],[0.698,0.618],[-1.778,-0.712]],"v":[[8.826,-9.521],[18.731,-11.372],[17.81,-9.257]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.696,0.279]],"o":[[-0.255,-0.984],[0.698,0.618],[-1.778,-0.712]],"v":[[8.826,-9.521],[18.731,-11.372],[17.81,-9.257]]}],"e":[{"i":[[0.045,0.567],[-1.088,-1.367],[0.637,0.395]],"o":[[-0.081,-1.013],[0.58,0.73],[-1.628,-1.009]],"v":[[16.258,-7.918],[23.049,-3.78],[21.776,-1.857]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[0.045,0.567],[-1.088,-1.367],[0.637,0.395]],"o":[[-0.081,-1.013],[0.58,0.73],[-1.628,-1.009]],"v":[[16.258,-7.918],[23.049,-3.78],[21.776,-1.857]]}],"e":[{"i":[[0.024,0.268],[-0.577,-0.646],[0.338,0.187]],"o":[[-0.043,-0.479],[0.308,0.345],[-0.864,-0.477]],"v":[[24.739,-0.24],[25.822,-0.057],[25.146,0.852]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[170.158,114.348]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":166,"t":101,"b":120,"r":197},"ip":21,"op":33,"st":21},{"ddd":0,"ind":23,"ty":4,"nm":"manchaRoja","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.257,0.062],[0.257,-0.062]],"o":[[0.257,-0.062],[-0.257,0.062]],"v":[[8.309,-18.138],[8.212,-18.537]]}],"e":[{"i":[[-0.844,0.205],[0.844,-0.205]],"o":[[0.844,-0.205],[-0.844,0.205]],"v":[[4.721,-10.585],[4.403,-11.894]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-0.844,0.205],[0.844,-0.205]],"o":[[0.844,-0.205],[-0.844,0.205]],"v":[[4.721,-10.585],[4.403,-11.894]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-4.25,-1.5],[-4.25,-4.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-4.25,-1.5],[-4.25,-4.5]]}],"e":[{"i":[[-1.763,0],[1.763,0]],"o":[[1.763,0],[-1.763,0]],"v":[[-6.513,0.487],[-6.513,-2.247]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[-1.763,0],[1.763,0]],"o":[[1.763,0],[-1.763,0]],"v":[[-6.513,0.487],[-6.513,-2.247]]}],"e":[{"i":[[-1.685,-0.045],[1.685,0.045]],"o":[[1.685,0.045],[-1.685,-0.045]],"v":[[-8.698,2.408],[-8.627,-0.205]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.685,-0.045],[1.685,0.045]],"o":[[1.685,0.045],[-1.685,-0.045]],"v":[[-8.698,2.408],[-8.627,-0.205]]}],"e":[{"i":[[-1.388,-0.176],[1.388,0.176]],"o":[[1.388,0.176],[-1.388,-0.176]],"v":[[-12.703,10.13],[-12.43,7.978]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-1.388,-0.176],[1.388,0.176]],"o":[[1.388,0.176],[-1.388,-0.176]],"v":[[-12.703,10.13],[-12.43,7.978]]}],"e":[{"i":[[-1.082,-0.137],[1.082,0.137]],"o":[[1.082,0.137],[-1.082,-0.137]],"v":[[-18.272,13.815],[-18.059,12.137]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-1.082,-0.137],[1.082,0.137]],"o":[[1.082,0.137],[-1.082,-0.137]],"v":[[-18.272,13.815],[-18.059,12.137]]}],"e":[{"i":[[-0.869,-0.382],[0.869,0.382]],"o":[[0.869,0.382],[-0.869,-0.382]],"v":[[-33.945,24.078],[-33.361,22.637]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-0.869,-0.382],[0.869,0.382]],"o":[[0.869,0.382],[-0.869,-0.382]],"v":[[-33.945,24.078],[-33.361,22.637]]}],"e":[{"i":[[-0.407,-0.398],[0.407,0.398]],"o":[[0.407,0.398],[-0.407,-0.398]],"v":[[-68.649,29.659],[-68.017,28.974]]}]},{"t":41}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[157.94,140.879]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 29"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.207,0.16],[-0.379,0.901],[0.101,-0.241],[0.734,-0.566]],"o":[[0.789,-0.608],[0.103,-0.244],[-0.353,0.839],[-0.209,0.161]],"v":[[17.792,-26.521],[19.407,-28.896],[19.014,-29.013],[17.508,-26.816]]}],"e":[{"i":[[-0.682,0.526],[-1.244,2.959],[0.333,-0.791],[2.411,-1.86]],"o":[[2.593,-1.999],[0.337,-0.802],[-1.159,2.757],[-0.687,0.53]],"v":[[10.064,-12.161],[15.37,-19.963],[14.079,-20.349],[9.129,-13.131]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-0.682,0.526],[-1.244,2.959],[0.333,-0.791],[2.411,-1.86]],"o":[[2.593,-1.999],[0.337,-0.802],[-1.159,2.757],[-0.687,0.53]],"v":[[10.064,-12.161],[15.37,-19.963],[14.079,-20.349],[9.129,-13.131]]}],"e":[{"i":[[-1.751,0.779],[-4.246,5.751],[1.136,-1.538],[6.196,-2.756]],"o":[[6.66,-2.963],[1.151,-1.559],[-3.956,5.356],[-1.765,0.785]],"v":[[-10.976,5.184],[4.604,-8.911],[2.014,-10.425],[-12.49,2.594]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-1.751,0.779],[-4.246,5.751],[1.136,-1.538],[6.196,-2.756]],"o":[[6.66,-2.963],[1.151,-1.559],[-3.956,5.356],[-1.765,0.785]],"v":[[-10.976,5.184],[4.604,-8.911],[2.014,-10.425],[-12.49,2.594]]}],"e":[{"i":[[-1.596,0.71],[-3.869,5.241],[1.035,-1.401],[5.646,-2.511]],"o":[[6.069,-2.7],[1.049,-1.421],[-3.605,4.881],[-1.608,0.715]],"v":[[-12.267,6.253],[1.931,-6.591],[-0.429,-7.971],[-13.647,3.893]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[-1.596,0.71],[-3.869,5.241],[1.035,-1.401],[5.646,-2.511]],"o":[[6.069,-2.7],[1.049,-1.421],[-3.605,4.881],[-1.608,0.715]],"v":[[-12.267,6.253],[1.931,-6.591],[-0.429,-7.971],[-13.647,3.893]]}],"e":[{"i":[[-1.543,0.637],[-3.832,4.908],[1.025,-1.312],[5.46,-2.254]],"o":[[5.869,-2.424],[1.039,-1.331],[-3.571,4.571],[-1.555,0.642]],"v":[[-13.52,6.338],[0.379,-5.571],[-1.841,-6.95],[-14.777,4.047]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.543,0.637],[-3.832,4.908],[1.025,-1.312],[5.46,-2.254]],"o":[[5.869,-2.424],[1.039,-1.331],[-3.571,4.571],[-1.555,0.642]],"v":[[-13.52,6.338],[0.379,-5.571],[-1.841,-6.95],[-14.777,4.047]]}],"e":[{"i":[[-1.327,0.399],[-3.57,3.739],[0.955,-1],[4.696,-1.413]],"o":[[5.048,-1.519],[0.968,-1.014],[-3.326,3.482],[-1.338,0.402]],"v":[[-16.541,10.549],[-4.08,1.856],[-5.801,0.534],[-17.391,8.553]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-1.327,0.399],[-3.57,3.739],[0.955,-1],[4.696,-1.413]],"o":[[5.048,-1.519],[0.968,-1.014],[-3.326,3.482],[-1.338,0.402]],"v":[[-16.541,10.549],[-4.08,1.856],[-5.801,0.534],[-17.391,8.553]]}],"e":[{"i":[[-1.035,0.311],[-2.783,2.915],[0.744,-0.779],[3.66,-1.101]],"o":[[3.935,-1.184],[0.754,-0.79],[-2.592,2.714],[-1.043,0.314]],"v":[[-18.773,11.637],[-9.06,4.86],[-10.401,3.83],[-19.436,10.081]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-1.035,0.311],[-2.783,2.915],[0.744,-0.779],[3.66,-1.101]],"o":[[3.935,-1.184],[0.754,-0.79],[-2.592,2.714],[-1.043,0.314]],"v":[[-18.773,11.637],[-9.06,4.86],[-10.401,3.83],[-19.436,10.081]]}],"e":[{"i":[[-0.938,0.029],[-3.026,1.925],[0.809,-0.514],[3.319,-0.101]],"o":[[3.568,-0.109],[0.82,-0.522],[-2.819,1.792],[-0.946,0.029]],"v":[[-34.711,18.053],[-24.97,14.357],[-25.839,13.119],[-34.887,16.51]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[-0.938,0.029],[-3.026,1.925],[0.809,-0.514],[3.319,-0.101]],"o":[[3.568,-0.109],[0.82,-0.522],[-2.819,1.792],[-0.946,0.029]],"v":[[-34.711,18.053],[-24.97,14.357],[-25.839,13.119],[-34.887,16.51]]}],"e":[{"i":[[-0.532,-0.182],[-2.104,0.44],[0.562,-0.118],[1.883,0.644]],"o":[[2.024,0.692],[0.57,-0.119],[-1.959,0.41],[-0.536,-0.184]],"v":[[-65.245,18.744],[-59.001,18.728],[-59.227,17.85],[-65.018,17.842]]}]},{"t":41}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[146.645,152.24]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 30"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[7,2.25],[6.604,0.521],[3.323,-0.801],[0.918,-4.833],[1.88,-2.317],[-2.563,3.496],[-9.586,-5.942],[-1.624,12.638]],"o":[[-3.911,-1.257],[-7.926,-0.625],[-3.839,0.926],[-1.082,7.917],[7.38,-3.317],[15.648,-21.339],[5.664,3.558],[-2.124,-3.737]],"v":[[18.378,-22.033],[9.752,-36.908],[0.874,-27.658],[-9.665,-30.576],[-14.878,-17.342],[-1.146,-16.32],[16.089,-12.966],[28.626,-22.046]]}],"e":[{"i":[[7.301,2.347],[6.888,0.543],[3.466,-0.836],[3.815,-7.196],[5.351,-7.371],[-4.028,-2.054],[-7.755,-4.22],[2.348,7.576]],"o":[[-4.079,-1.311],[-8.267,-0.652],[-4.004,0.966],[-3.215,5.911],[5.872,8.796],[9.02,4.601],[15.556,3.972],[-2.215,-3.898]],"v":[[15.493,-18.015],[8.843,-39.007],[-0.938,-25.186],[-8.281,-31.097],[-23.105,-4.256],[-8.521,-9.97],[6.847,7.87],[28.53,-23.505]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[7.301,2.347],[6.888,0.543],[3.466,-0.836],[3.815,-7.196],[5.351,-7.371],[-4.028,-2.054],[-7.755,-4.22],[2.348,7.576]],"o":[[-4.079,-1.311],[-8.267,-0.652],[-4.004,0.966],[-3.215,5.911],[5.872,8.796],[9.02,4.601],[15.556,3.972],[-2.215,-3.898]],"v":[[15.493,-18.015],[8.843,-39.007],[-0.938,-25.186],[-8.281,-31.097],[-23.105,-4.256],[-8.521,-9.97],[6.847,7.87],[28.53,-23.505]]}],"e":[{"i":[[7.09,2.279],[6.689,0.527],[3.366,-0.812],[3.705,-6.988],[8.15,-4.054],[-11.498,4.974],[-6.671,-5.765],[2.28,7.357]],"o":[[-3.961,-1.273],[-8.028,-0.633],[-3.888,0.938],[-5.023,10.232],[-9.491,9.048],[6.976,-3.018],[10.548,10.441],[-2.151,-3.785]],"v":[[14.937,-18.231],[6.454,-31.525],[-3.045,-18.105],[-12.707,-20.806],[-33.687,0.195],[-27.628,6.801],[-20.807,26.151],[27.597,-20.017]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[7.09,2.279],[6.689,0.527],[3.366,-0.812],[3.705,-6.988],[8.15,-4.054],[-11.498,4.974],[-6.671,-5.765],[2.28,7.357]],"o":[[-3.961,-1.273],[-8.028,-0.633],[-3.888,0.938],[-5.023,10.232],[-9.491,9.048],[6.976,-3.018],[10.548,10.441],[-2.151,-3.785]],"v":[[14.937,-18.231],[6.454,-31.525],[-3.045,-18.105],[-12.707,-20.806],[-33.687,0.195],[-27.628,6.801],[-20.807,26.151],[27.597,-20.017]]}],"e":[{"i":[[7.032,2.541],[6.692,0.769],[3.406,-0.694],[6.526,-6.974],[8.322,-3.775],[-11.715,4.579],[-6.486,-6.024],[3.317,10.435]],"o":[[-3.929,-1.419],[-8.032,-0.923],[-3.935,0.802],[-5.407,10.086],[-11.752,5.108],[7.108,-2.778],[10.209,10.854],[-2.023,-3.875]],"v":[[11.814,-13.682],[5.648,-29.801],[-5.207,-14.417],[-14.524,-18.227],[-36.907,4.106],[-31.065,10.951],[-25.904,29.811],[24.162,-17.578]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[7.032,2.541],[6.692,0.769],[3.406,-0.694],[6.526,-6.974],[8.322,-3.775],[-11.715,4.579],[-6.486,-6.024],[3.317,10.435]],"o":[[-3.929,-1.419],[-8.032,-0.923],[-3.935,0.802],[-5.407,10.086],[-11.752,5.108],[7.108,-2.778],[10.209,10.854],[-2.023,-3.875]],"v":[[11.814,-13.682],[5.648,-29.801],[-5.207,-14.417],[-14.524,-18.227],[-36.907,4.106],[-31.065,10.951],[-25.904,29.811],[24.162,-17.578]]}],"e":[{"i":[[6.941,2.593],[6.623,0.834],[3.382,-0.651],[2.673,-8.888],[8.287,-3.651],[-11.657,4.412],[-6.363,-6.038],[1.654,13.962]],"o":[[-3.878,-1.449],[-7.949,-1.001],[-3.908,0.752],[-5.465,9.937],[-9.851,8.553],[7.073,-2.677],[10,10.865],[-1.963,-3.861]],"v":[[11.934,-11.432],[5.369,-25.786],[-4.943,-13.388],[-13.921,-19.02],[-35.742,0.881],[-30.027,7.726],[-24.143,27.272],[25.349,-13.871]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[6.941,2.593],[6.623,0.834],[3.382,-0.651],[2.673,-8.888],[8.287,-3.651],[-11.657,4.412],[-6.363,-6.038],[1.654,13.962]],"o":[[-3.878,-1.449],[-7.949,-1.001],[-3.908,0.752],[-5.465,9.937],[-9.851,8.553],[7.073,-2.677],[10,10.865],[-1.963,-3.861]],"v":[[11.934,-11.432],[5.369,-25.786],[-4.943,-13.388],[-13.921,-19.02],[-35.742,0.881],[-30.027,7.726],[-24.143,27.272],[25.349,-13.871]]}],"e":[{"i":[[6.421,3.861],[6.43,2.053],[3.483,-0.022],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-0.135,16.929]],"o":[[-3.587,-2.157],[-7.717,-2.465],[-4.024,0.025],[-7.083,10.166],[-12.504,2.904],[7.526,-1.353],[7.932,12.649],[-1.237,-4.201]],"v":[[7.033,-5.192],[4.057,-22.173],[-9.548,-9.257],[-17.944,-14.876],[-44.235,2.666],[-39.819,10.528],[-38.371,30.11],[19.962,-6.567]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[6.421,3.861],[6.43,2.053],[3.483,-0.022],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-0.135,16.929]],"o":[[-3.587,-2.157],[-7.717,-2.465],[-4.024,0.025],[-7.083,10.166],[-12.504,2.904],[7.526,-1.353],[7.932,12.649],[-1.237,-4.201]],"v":[[7.033,-5.192],[4.057,-22.173],[-9.548,-9.257],[-17.944,-14.876],[-44.235,2.666],[-39.819,10.528],[-38.371,30.11],[19.962,-6.567]]}],"e":[{"i":[[6.421,3.861],[8.696,3.515],[6.551,1.348],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-1.709,14.159]],"o":[[-3.587,-2.157],[-7.511,-3.036],[-3.941,-0.811],[-6.303,5.468],[-12.504,2.904],[7.526,-1.353],[7.123,10.481],[-1.237,-4.201]],"v":[[0.783,2.558],[0.307,-15.423],[-11.798,-9.507],[-25.944,-4.876],[-50.235,5.416],[-45.819,12.778],[-38.371,30.11],[13.462,0.433]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[6.421,3.861],[8.696,3.515],[6.551,1.348],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-1.709,14.159]],"o":[[-3.587,-2.157],[-7.511,-3.036],[-3.941,-0.811],[-6.303,5.468],[-12.504,2.904],[7.526,-1.353],[7.123,10.481],[-1.237,-4.201]],"v":[[0.783,2.558],[0.307,-15.423],[-11.798,-9.507],[-25.944,-4.876],[-50.235,5.416],[-45.819,12.778],[-38.371,30.11],[13.462,0.433]]}],"e":[{"i":[[6.508,2.797],[4.922,1.376],[4.88,-3.324],[1.323,-0.423],[9.141,-0.539],[-12.602,0.108],[-3.925,-7.954],[3.349,9.004]],"o":[[-7.237,-3.111],[-3.752,-1.049],[-7.747,5.277],[-7.134,4.328],[-12.814,0.756],[7.646,-0.066],[5.256,11.532],[-0.512,-4.35]],"v":[[-16.556,14.825],[-21.445,-9.114],[-30.831,-1.137],[-43.248,4.916],[-60.075,8.335],[-53.462,12.336],[-49.04,30.675],[-4.551,16.826]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[6.508,2.797],[4.922,1.376],[4.88,-3.324],[1.323,-0.423],[9.141,-0.539],[-12.602,0.108],[-3.925,-7.954],[3.349,9.004]],"o":[[-7.237,-3.111],[-3.752,-1.049],[-7.747,5.277],[-7.134,4.328],[-12.814,0.756],[7.646,-0.066],[5.256,11.532],[-0.512,-4.35]],"v":[[-16.556,14.825],[-21.445,-9.114],[-30.831,-1.137],[-43.248,4.916],[-60.075,8.335],[-53.462,12.336],[-49.04,30.675],[-4.551,16.826]]}],"e":[{"i":[[6.508,2.797],[4.683,-2.046],[4.88,-3.324],[1.323,-0.423],[3.077,-3.494],[-12.602,0.108],[-3.925,-7.954],[6.803,7.765]],"o":[[-7.237,-3.111],[-9.052,3.955],[-7.747,5.277],[-7.134,4.328],[-8.484,9.633],[7.646,-0.066],[5.256,11.532],[-0.512,-4.35]],"v":[[-37.056,14.325],[-36.445,2.636],[-52.331,8.113],[-66.248,8.916],[-80.575,10.335],[-72.462,17.586],[-49.04,30.675],[-42.551,24.576]]}]},{"t":41}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[140.188,140.037]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 36"}],"bounds":{"l":55,"t":101,"b":176,"r":170},"ip":20,"op":41,"st":21},{"ddd":0,"ind":24,"ty":4,"nm":"gotaCyan3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-2.654,2.598],[1.508,1.877]],"o":[[2.427,-2.376],[-0.206,-0.628]],"v":[[4.343,8.022],[7.585,12.925]]}],"e":[{"i":[[-2.654,2.598],[1.296,2.029]],"o":[[2.427,-2.376],[-2.956,-4.628]],"v":[[-2.407,-3.478],[7.585,12.925]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-2.654,2.598],[1.296,2.029]],"o":[[2.427,-2.376],[-2.956,-4.628]],"v":[[-2.407,-3.478],[7.585,12.925]]}],"e":[{"i":[[-2.654,2.598],[1.726,1.678]],"o":[[2.427,-2.376],[-2.036,-1.978]],"v":[[-4.407,-5.478],[1.335,2.175]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-2.654,2.598],[1.726,1.678]],"o":[[2.427,-2.376],[-2.036,-1.978]],"v":[[-4.407,-5.478],[1.335,2.175]]}],"e":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-9.157,-5.478],[-1.665,-0.825]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-9.157,-5.478],[-1.665,-0.825]]}],"e":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-14.407,-3.228],[-7.415,-1.825]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-14.407,-3.228],[-7.415,-1.825]]}],"e":[{"i":[[-0.317,1.078],[2.238,0.886]],"o":[[0.287,-0.975],[0.294,-0.378]],"v":[[-16.657,-1.728],[-15.415,-2.325]]}]},{"t":27}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[118,196,181,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[134.06,55.332]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 16"}],"bounds":{"l":117,"t":49,"b":69,"r":143},"ip":18,"op":27,"st":17},{"ddd":0,"ind":25,"ty":4,"nm":"gotaCyan2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[-0.422,1.503],[0.388,-1.411],[0.057,0.766]]}],"e":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.138,-4.661],[0.807,-2.484]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.138,-4.661],[0.807,-2.484]]}],"e":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.888,-6.161],[0.807,-2.484]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.888,-6.161],[0.807,-2.484]]}],"e":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[1.328,-7.247],[2.888,-11.661],[1.807,-7.984]]}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[118,196,181,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[140.926,50.579]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":140,"t":38,"b":53,"r":145},"ip":16,"op":21,"st":16},{"ddd":0,"ind":26,"ty":4,"nm":"gotaCyan1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[1.003,0.154],[0.214,-1.36]],"o":[[-0.997,-0.153],[-0.253,1.604]],"v":[[-2.788,7.056],[-3.283,9.049]]}],"e":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}],"e":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}],"e":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}],"e":[{"i":[[-0.497,-1.653],[-0.831,1.097]],"o":[[0.378,1.257],[1.247,-1.646]],"v":[[12.462,-17.444],[10.967,-16.951]]}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[118,196,181,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[161.225,56.226]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":157,"t":37,"b":66,"r":174},"ip":17,"op":25,"st":17},{"ddd":0,"ind":27,"ty":4,"nm":"manchaCyan","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-0.624,0.328],[0.624,-0.328]],"o":[[0.624,-0.328],[-0.624,0.328]],"v":[[17.347,-22.833],[16.838,-23.801]]}],"e":[{"i":[[-0.992,0.182],[0.992,-0.182]],"o":[[0.992,-0.182],[-0.992,0.182]],"v":[[20.156,-17.33],[19.873,-18.867]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-0.992,0.182],[0.992,-0.182]],"o":[[0.992,-0.182],[-0.992,0.182]],"v":[[20.156,-17.33],[19.873,-18.867]]}],"e":[{"i":[[-1.451,0],[1.451,0]],"o":[[1.451,0],[-1.451,0]],"v":[[21.416,-12.7],[21.416,-14.95]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-1.451,0],[1.451,0]],"o":[[1.451,0],[-1.451,0]],"v":[[21.416,-12.7],[21.416,-14.95]]}],"e":[{"i":[[-1.668,-0.116],[1.668,0.116]],"o":[[1.668,0.116],[-1.668,-0.116]],"v":[[21.912,-6.327],[22.092,-8.913]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.668,-0.116],[1.668,0.116]],"o":[[1.668,0.116],[-1.668,-0.116]],"v":[[21.912,-6.327],[22.092,-8.913]]}],"e":[{"i":[[-1.668,-0.116],[1.668,0.116]],"o":[[1.668,0.116],[-1.668,-0.116]],"v":[[22.412,1.423],[22.592,-1.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.668,-0.116],[1.668,0.116]],"o":[[1.668,0.116],[-1.668,-0.116]],"v":[[22.412,1.423],[22.592,-1.163]]}],"e":[{"i":[[-1.796,-0.721],[1.796,0.721]],"o":[[1.796,0.721],[-1.796,-0.721]],"v":[[23.43,12.151],[24.548,9.367]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-1.796,-0.721],[1.796,0.721]],"o":[[1.796,0.721],[-1.796,-0.721]],"v":[[23.43,12.151],[24.548,9.367]]}],"e":[{"i":[[-1.577,-0.645],[1.577,0.645]],"o":[[1.577,0.645],[-1.577,-0.645]],"v":[[22.214,19.802],[23.215,17.357]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.577,-0.645],[1.577,0.645]],"o":[[1.577,0.645],[-1.577,-0.645]],"v":[[22.214,19.802],[23.215,17.357]]}],"e":[{"i":[[-1.379,-0.564],[1.379,0.564]],"o":[[1.379,0.564],[-1.379,-0.564]],"v":[[21.496,24.078],[22.371,21.94]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-1.379,-0.564],[1.379,0.564]],"o":[[1.379,0.564],[-1.379,-0.564]],"v":[[21.496,24.078],[22.371,21.94]]}],"e":[{"i":[[-1.133,-0.464],[1.133,0.464]],"o":[[1.133,0.464],[-1.133,-0.464]],"v":[[19.165,31.471],[19.884,29.714]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-1.133,-0.464],[1.133,0.464]],"o":[[1.133,0.464],[-1.133,-0.464]],"v":[[19.165,31.471],[19.884,29.714]]}],"e":[{"i":[[-0.562,-0.577],[0.562,0.577]],"o":[[0.562,0.577],[-0.562,-0.577]],"v":[[16.578,47.746],[17.472,46.875]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[141.44,84.379]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 27"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0.214,0.598],[0.588,0.651],[-0.427,-0.473],[-0.233,-0.65]],"o":[[-0.295,-0.824],[-0.427,-0.472],[0.461,0.511],[0.212,0.592]],"v":[[18.233,-28.468],[16.93,-30.676],[16.21,-30],[17.268,-28.257]]}],"e":[{"i":[[0.033,0.939],[0.537,1.184],[-0.39,-0.86],[-0.035,-1.023]],"o":[[-0.045,-1.296],[-0.389,-0.858],[0.421,0.929],[0.032,0.931]],"v":[[20.807,-20.558],[19.962,-24.26],[18.641,-23.63],[19.35,-20.694]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0.033,0.939],[0.537,1.184],[-0.39,-0.86],[-0.035,-1.023]],"o":[[-0.045,-1.296],[-0.389,-0.858],[0.421,0.929],[0.032,0.931]],"v":[[20.807,-20.558],[19.962,-24.26],[18.641,-23.63],[19.35,-20.694]]}],"e":[{"i":[[-0.193,1.367],[0.472,1.849],[-0.343,-1.343],[0.211,-1.488]],"o":[[0.267,-1.886],[-0.343,-1.341],[0.37,1.451],[-0.192,1.355]],"v":[[21.774,-12.92],[21.501,-18.489],[19.43,-17.918],[19.703,-13.491]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-0.193,1.367],[0.472,1.849],[-0.343,-1.343],[0.211,-1.488]],"o":[[0.267,-1.886],[-0.343,-1.341],[0.37,1.451],[-0.192,1.355]],"v":[[21.774,-12.92],[21.501,-18.489],[19.43,-17.918],[19.703,-13.491]]}],"e":[{"i":[[-0.347,1.597],[0.398,2.224],[-0.288,-1.615],[0.378,-1.738]],"o":[[0.478,-2.203],[-0.289,-1.613],[0.311,1.745],[-0.344,1.582]],"v":[[22.211,-5.155],[22.371,-11.752],[19.877,-11.257],[19.815,-6.008]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.347,1.597],[0.398,2.224],[-0.288,-1.615],[0.378,-1.738]],"o":[[0.478,-2.203],[-0.289,-1.613],[0.311,1.745],[-0.344,1.582]],"v":[[22.211,-5.155],[22.371,-11.752],[19.877,-11.257],[19.815,-6.008]]}],"e":[{"i":[[-0.347,1.597],[0.398,2.224],[-0.288,-1.615],[0.378,-1.738]],"o":[[0.478,-2.203],[-0.289,-1.613],[0.311,1.745],[-0.344,1.582]],"v":[[22.711,2.595],[22.871,-4.002],[20.377,-3.507],[20.315,1.742]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.347,1.597],[0.398,2.224],[-0.288,-1.615],[0.378,-1.738]],"o":[[0.478,-2.203],[-0.289,-1.613],[0.311,1.745],[-0.344,1.582]],"v":[[22.711,2.595],[22.871,-4.002],[20.377,-3.507],[20.315,1.742]]}],"e":[{"i":[[-0.962,1.671],[-0.349,2.643],[0.255,-1.919],[1.047,-1.819]],"o":[[1.328,-2.305],[0.253,-1.917],[-0.276,2.074],[-0.954,1.656]],"v":[[20.54,15.093],[23.085,7.732],[20.103,7.395],[18.153,13.275]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-0.962,1.671],[-0.349,2.643],[0.255,-1.919],[1.047,-1.819]],"o":[[1.328,-2.305],[0.253,-1.917],[-0.276,2.074],[-0.954,1.656]],"v":[[20.54,15.093],[23.085,7.732],[20.103,7.395],[18.153,13.275]]}],"e":[{"i":[[-0.857,1.466],[-0.323,2.325],[0.236,-1.689],[0.933,-1.596]],"o":[[1.183,-2.022],[0.234,-1.686],[-0.255,1.825],[-0.85,1.453]],"v":[[19.35,21.291],[21.635,14.824],[19.011,14.51],[17.259,19.676]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-0.857,1.466],[-0.323,2.325],[0.236,-1.689],[0.933,-1.596]],"o":[[1.183,-2.022],[0.234,-1.686],[-0.255,1.825],[-0.85,1.453]],"v":[[19.35,21.291],[21.635,14.824],[19.011,14.51],[17.259,19.676]]}],"e":[{"i":[[-0.749,1.282],[-0.283,2.033],[0.206,-1.477],[0.816,-1.395]],"o":[[1.034,-1.768],[0.205,-1.475],[-0.223,1.595],[-0.743,1.27]],"v":[[18.731,24.225],[20.728,18.571],[18.434,18.296],[16.902,22.813]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-0.749,1.282],[-0.283,2.033],[0.206,-1.477],[0.816,-1.395]],"o":[[1.034,-1.768],[0.205,-1.475],[-0.223,1.595],[-0.743,1.27]],"v":[[18.731,24.225],[20.728,18.571],[18.434,18.296],[16.902,22.813]]}],"e":[{"i":[[-0.616,1.053],[-0.232,1.671],[0.169,-1.213],[0.67,-1.146]],"o":[[0.85,-1.453],[0.168,-1.212],[-0.183,1.311],[-0.61,1.044]],"v":[[16.523,29.954],[18.164,25.307],[16.278,25.081],[15.02,28.793]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-0.616,1.053],[-0.232,1.671],[0.169,-1.213],[0.67,-1.146]],"o":[[0.85,-1.453],[0.168,-1.212],[-0.183,1.311],[-0.61,1.044]],"v":[[16.523,29.954],[18.164,25.307],[16.278,25.081],[15.02,28.793]]}],"e":[{"i":[[-0.647,0.474],[-0.578,0.947],[0.42,-0.687],[0.705,-0.515]],"o":[[0.893,-0.653],[0.419,-0.686],[-0.454,0.742],[-0.642,0.469]],"v":[[12.148,43.034],[14.356,40.662],[13.278,40.031],[11.546,41.94]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[143.517,93.571]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 28"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-7.228,0.382],[-4.464,1.244],[-0.426,2.934],[-3.365,-11.014],[6.093,-4.87],[8.168,-0.609],[11.396,-1.447],[-1.45,-0.948]],"o":[[3.763,-0.017],[1.992,-0.555],[1.074,-3.316],[1.55,1.827],[-5.696,4.552],[-6.035,0.45],[-5.028,1.29],[1.252,4.989]],"v":[[-12.74,-34.322],[0.656,-29.694],[2.074,-36.182],[13.337,-31.768],[6.48,-42.319],[-8.609,-47.557],[-25.324,-37.205],[-20.336,-23.994]]}],"e":[{"i":[[-7.605,-0.343],[-7.835,2.856],[-8.31,-0.074],[-5.703,-7.928],[6.878,-4.471],[8.612,0.202],[12.896,0.344],[0.055,-3.085]],"o":[[3.94,0.369],[6.786,-2.473],[8.197,-0.59],[1.469,2.042],[-6.43,4.179],[-6.363,-0.15],[-8.171,-0.218],[-0.21,11.882]],"v":[[-10.733,-26.202],[-2.168,-20.719],[7.77,-14.349],[16.253,-24.808],[11.152,-36.776],[-7.59,-46.849],[-18.768,-31.618],[-19.417,-20.63]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-7.605,-0.343],[-7.835,2.856],[-8.31,-0.074],[-5.703,-7.928],[6.878,-4.471],[8.612,0.202],[12.896,0.344],[0.055,-3.085]],"o":[[3.94,0.369],[6.786,-2.473],[8.197,-0.59],[1.469,2.042],[-6.43,4.179],[-6.363,-0.15],[-8.171,-0.218],[-0.21,11.882]],"v":[[-10.733,-26.202],[-2.168,-20.719],[7.77,-14.349],[16.253,-24.808],[11.152,-36.776],[-7.59,-46.849],[-18.768,-31.618],[-19.417,-20.63]]}],"e":[{"i":[[-5.41,0.334],[-8.471,-0.376],[-5.978,1.326],[0.656,17.806],[11.259,-11.204],[8.375,-2.524],[13.907,2.673],[-0.231,-2.828]],"o":[[7.094,-0.518],[7.286,0.324],[5.747,-0.631],[-1.824,-8.098],[-6.112,4.861],[-6.377,1.922],[-8.398,-1.614],[1.571,15.961]],"v":[[-13.936,9.367],[1.358,0.155],[15.056,19.438],[21.345,-12.083],[7.109,-35.453],[-8.423,-48.15],[-18.421,-30.324],[-17.613,-12.692]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-5.41,0.334],[-8.471,-0.376],[-5.978,1.326],[0.656,17.806],[11.259,-11.204],[8.375,-2.524],[13.907,2.673],[-0.231,-2.828]],"o":[[7.094,-0.518],[7.286,0.324],[5.747,-0.631],[-1.824,-8.098],[-6.112,4.861],[-6.377,1.922],[-8.398,-1.614],[1.571,15.961]],"v":[[-13.936,9.367],[1.358,0.155],[15.056,19.438],[21.345,-12.083],[7.109,-35.453],[-8.423,-48.15],[-18.421,-30.324],[-17.613,-12.692]]}],"e":[{"i":[[-5.579,-3.171],[-6.902,-2.195],[-8.134,-4.983],[-1.908,19.509],[12.043,-14.489],[8.312,-0.672],[12.812,2.355],[-0.132,-2.821]],"o":[[7.934,5.522],[6.377,2.132],[8.448,3.823],[0.355,-10.422],[-5.994,4.659],[-6.233,0.504],[-7.923,-1.456],[0.632,13.491]],"v":[[-17.577,20.444],[-1.526,15.81],[6.014,35.325],[20.038,-3.747],[9.355,-31.009],[-4.247,-45.147],[-16.726,-30.452],[-16.39,-9.199]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-5.579,-3.171],[-6.902,-2.195],[-8.134,-4.983],[-1.908,19.509],[12.043,-14.489],[8.312,-0.672],[12.812,2.355],[-0.132,-2.821]],"o":[[7.934,5.522],[6.377,2.132],[8.448,3.823],[0.355,-10.422],[-5.994,4.659],[-6.233,0.504],[-7.923,-1.456],[0.632,13.491]],"v":[[-17.577,20.444],[-1.526,15.81],[6.014,35.325],[20.038,-3.747],[9.355,-31.009],[-4.247,-45.147],[-16.726,-30.452],[-16.39,-9.199]]}],"e":[{"i":[[-5.579,-3.171],[-6.902,-2.195],[-8.134,-4.983],[-1.908,19.509],[8.543,-21.489],[8.312,-0.672],[8.29,10.048],[-0.132,-2.821]],"o":[[7.934,5.522],[6.377,2.132],[8.448,3.823],[0.355,-10.422],[-2.957,8.011],[-6.233,0.504],[-7.876,-9.547],[0.632,13.491]],"v":[[-17.577,24.444],[-1.526,19.81],[6.014,39.325],[20.038,0.253],[9.105,-20.759],[-6.747,-38.147],[-16.226,-20.202],[-17.64,4.551]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-5.579,-3.171],[-6.902,-2.195],[-8.134,-4.983],[-1.908,19.509],[8.543,-21.489],[8.312,-0.672],[8.29,10.048],[-0.132,-2.821]],"o":[[7.934,5.522],[6.377,2.132],[8.448,3.823],[0.355,-10.422],[-2.957,8.011],[-6.233,0.504],[-7.876,-9.547],[0.632,13.491]],"v":[[-17.577,24.444],[-1.526,19.81],[6.014,39.325],[20.038,0.253],[9.105,-20.759],[-6.747,-38.147],[-16.226,-20.202],[-17.64,4.551]]}],"e":[{"i":[[9.1,-15.295],[-5.657,-3.318],[-0.02,-8.589],[-3.314,20.235],[8.405,-11.582],[8.328,-0.591],[13.35,5.509],[0.426,-10.86]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[1.979,-12.085],[-4.366,6.016],[-10.735,0.762],[-11.578,-4.778],[-0.5,12.76]],"v":[[-29.684,33.007],[-17.283,46.484],[-5.315,44.384],[19.977,10.409],[12.036,-22],[0.159,-31.02],[-13.663,-19.596],[-17.762,-4.172]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[9.1,-15.295],[-5.657,-3.318],[-0.02,-8.589],[-3.314,20.235],[8.405,-11.582],[8.328,-0.591],[13.35,5.509],[0.426,-10.86]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[1.979,-12.085],[-4.366,6.016],[-10.735,0.762],[-11.578,-4.778],[-0.5,12.76]],"v":[[-29.684,33.007],[-17.283,46.484],[-5.315,44.384],[19.977,10.409],[12.036,-22],[0.159,-31.02],[-13.663,-19.596],[-17.762,-4.172]]}],"e":[{"i":[[1.332,-1.505],[-5.657,-3.318],[-0.02,-8.589],[-3.329,11.342],[9.016,-3.331],[6.239,0.022],[5.812,2.348],[0.426,-10.86]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[3.449,-11.75],[-14.888,5.501],[-4.517,-0.016],[-9.28,-3.749],[-0.5,12.76]],"v":[[-30.684,34.757],[-25.033,51.984],[-9.565,50.884],[15.977,20.659],[12.786,-10.5],[-0.091,-19.27],[-10.413,-9.346],[-18.012,5.828]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[1.332,-1.505],[-5.657,-3.318],[-0.02,-8.589],[-3.329,11.342],[9.016,-3.331],[6.239,0.022],[5.812,2.348],[0.426,-10.86]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[3.449,-11.75],[-14.888,5.501],[-4.517,-0.016],[-9.28,-3.749],[-0.5,12.76]],"v":[[-30.684,34.757],[-25.033,51.984],[-9.565,50.884],[15.977,20.659],[12.786,-10.5],[-0.091,-19.27],[-10.413,-9.346],[-18.012,5.828]]}],"e":[{"i":[[15.332,-14.255],[-5.657,-3.318],[-0.02,-8.589],[-3.329,11.342],[9.027,-3.302],[6.239,0.022],[6.812,-4.152],[1.764,-6.269]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[3.449,-11.75],[-8.888,3.251],[-4.517,-0.016],[-4.414,2.69],[-4.34,15.423]],"v":[[-37.184,42.507],[-25.033,51.984],[-9.565,50.884],[15.977,20.659],[12.036,-5.75],[-0.591,-10.02],[-15.163,-3.346],[-18.762,13.828]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[15.332,-14.255],[-5.657,-3.318],[-0.02,-8.589],[-3.329,11.342],[9.027,-3.302],[6.239,0.022],[6.812,-4.152],[1.764,-6.269]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[3.449,-11.75],[-8.888,3.251],[-4.517,-0.016],[-4.414,2.69],[-4.34,15.423]],"v":[[-37.184,42.507],[-25.033,51.984],[-9.565,50.884],[15.977,20.659],[12.036,-5.75],[-0.591,-10.02],[-15.163,-3.346],[-18.762,13.828]]}],"e":[{"i":[[15.332,-14.255],[-5.657,-3.318],[-0.02,-8.589],[-3.329,11.342],[6.335,-7.229],[5.977,-1.789],[0.312,-15.402],[3.41,-4.827]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[3.449,-11.75],[-7.888,9.001],[-9.261,2.772],[-0.044,2.171],[-2.954,4.181]],"v":[[-37.184,42.507],[-25.033,51.984],[-9.565,50.884],[15.227,24.409],[11.036,3],[-2.341,1.23],[-17.413,4.654],[-23.262,22.328]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[15.332,-14.255],[-5.657,-3.318],[-0.02,-8.589],[-3.329,11.342],[6.335,-7.229],[5.977,-1.789],[0.312,-15.402],[3.41,-4.827]],"o":[[8.446,3.2],[5.714,3.351],[-2.123,17.079],[3.449,-11.75],[-7.888,9.001],[-9.261,2.772],[-0.044,2.171],[-2.954,4.181]],"v":[[-37.184,42.507],[-25.033,51.984],[-9.565,50.884],[15.227,24.409],[11.036,3],[-2.341,1.23],[-17.413,4.654],[-23.262,22.328]]}],"e":[{"i":[[2.082,-3.005],[-5.657,-3.318],[-0.02,-8.589],[-3.329,11.342],[6.335,-7.229],[7.239,3.272],[6.312,10.098],[3.41,-4.827]],"o":[[8.446,3.2],[5.714,3.351],[-1.537,3.117],[3.449,-11.75],[-7.888,9.001],[-8.809,-3.982],[-1.151,-1.842],[-2.954,4.181]],"v":[[-42.184,48.507],[-25.033,51.984],[-9.565,50.884],[10.977,34.159],[5.536,29],[-2.841,11.23],[-22.163,18.654],[-29.012,31.578]]}]},{"t":33}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[118,196,181,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[148.292,101.127]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 38"}],"bounds":{"l":106,"t":52,"b":157,"r":170},"ip":16,"op":33,"st":12},{"ddd":0,"ind":28,"ty":4,"nm":"gotaRosa5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[0.303,-0.037],[0.191,0.598],[-0.058,0.536]],"o":[[0.928,-0.162],[-0.559,0.223],[-1.321,-2.125]],"v":[[-16.926,-8.013],[-16.814,-9.023],[-15.94,-7.711]]}],"e":[{"i":[[0.303,-0.037],[1.995,-1.301],[2.817,1.911]],"o":[[0.928,-0.162],[-1.684,1.098],[-2.071,-1.405]],"v":[[-13.801,-7.388],[-4.189,-0.273],[-9.065,-3.461]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[0.303,-0.037],[1.995,-1.301],[2.817,1.911]],"o":[[0.928,-0.162],[-1.684,1.098],[-2.071,-1.405]],"v":[[-13.801,-7.388],[-4.189,-0.273],[-9.065,-3.461]]}],"e":[{"i":[[-0.769,-0.103],[2.135,-1.056],[0.432,0.926]],"o":[[1.374,0.184],[-1.138,0.563],[-0.621,-1.329]],"v":[[-1.051,-1.013],[0.936,2.602],[-0.815,0.164]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-0.769,-0.103],[2.135,-1.056],[0.432,0.926]],"o":[[1.374,0.184],[-1.138,0.563],[-0.621,-1.329]],"v":[[-1.051,-1.013],[0.936,2.602],[-0.815,0.164]]}],"e":[{"i":[[-0.282,-0.038],[0.782,-0.387],[0.158,0.339]],"o":[[0.503,0.067],[-0.417,0.206],[-0.227,-0.487]],"v":[[0.367,2.131],[1.094,3.455],[0.453,2.562]]}]},{"t":38}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[177.939,79.053]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":160,"t":70,"b":83,"r":180},"ip":29,"op":38,"st":11},{"ddd":0,"ind":29,"ty":4,"nm":"gotaRosa4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[-0.332,0.4],[-0.081,-0.504]],"o":[[0.293,-0.725],[-0.206,0.371]],"v":[[7.308,2.022],[9.432,2.676]]}],"e":[{"i":[[-1.832,1.775],[-0.081,-0.504]],"o":[[1.343,-1.301],[-0.206,0.371]],"v":[[1.683,0.772],[9.432,2.676]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[-1.832,1.775],[-0.081,-0.504]],"o":[[1.343,-1.301],[-0.206,0.371]],"v":[[1.683,0.772],[9.432,2.676]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}],"e":[{"i":[[0.983,2.237],[1.565,0.239]],"o":[[-1.582,-3.6],[-1.846,-0.281]],"v":[[-7.442,3.897],[0.307,0.676]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0.983,2.237],[1.565,0.239]],"o":[[-1.582,-3.6],[-1.846,-0.281]],"v":[[-7.442,3.897],[0.307,0.676]]}],"e":[{"i":[[1.543,1.525],[-0.081,0.121]],"o":[[-2.797,-2.764],[0.544,0.246]],"v":[[-7.942,9.022],[-3.193,2.051]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":26,"s":[{"i":[[1.543,1.525],[-0.081,0.121]],"o":[[-2.797,-2.764],[0.544,0.246]],"v":[[-7.942,9.022],[-3.193,2.051]]}],"e":[{"i":[[3.168,0.4],[-0.081,0.121]],"o":[[-2.071,-0.261],[-0.956,3.496]],"v":[[-9.067,17.647],[-5.193,4.051]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":30,"s":[{"i":[[3.168,0.4],[-0.081,0.121]],"o":[[-2.071,-0.261],[-0.956,3.496]],"v":[[-9.067,17.647],[-5.193,4.051]]}],"e":[{"i":[[1.677,0.931],[-0.081,0.121]],"o":[[-1.082,-0.6],[-0.331,1.371]],"v":[[-9.317,20.522],[-8.318,16.801]]}]},{"t":34}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[94.589,44.582]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 18"}],"bounds":{"l":84,"t":43,"b":66,"r":105},"ip":13,"op":34,"st":13},{"ddd":0,"ind":30,"ty":4,"nm":"gotaRosa3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[0.234,0.077],[-0.557,0.86],[-0.462,-0.806]],"o":[[-1.318,-0.435],[0.287,-0.444],[0.232,0.404]],"v":[[25.826,15.523],[23.658,14.011],[25.783,15.569]]}],"e":[{"i":[[0.541,0.179],[-1.286,1.987],[-1.068,-1.861]],"o":[[-3.043,-1.005],[0.664,-1.026],[0.536,0.933]],"v":[[17.77,9.684],[12.762,6.192],[17.67,9.79]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[0.541,0.179],[-1.286,1.987],[-1.068,-1.861]],"o":[[-3.043,-1.005],[0.664,-1.026],[0.536,0.933]],"v":[[17.77,9.684],[12.762,6.192],[17.67,9.79]]}],"e":[{"i":[[0.541,0.179],[-2.933,4.008],[-1.068,-1.861]],"o":[[-3.043,-1.005],[1.839,-2.513],[0.536,0.933]],"v":[[13.02,7.559],[4.387,0.317],[12.92,7.665]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[0.541,0.179],[-2.933,4.008],[-1.068,-1.861]],"o":[[-3.043,-1.005],[1.839,-2.513],[0.536,0.933]],"v":[[13.02,7.559],[4.387,0.317],[12.92,7.665]]}],"e":[{"i":[[0.52,-0.232],[-0.927,1.481],[-0.627,-0.412]],"o":[[-0.929,0.414],[0.494,-0.79],[0.899,0.591]],"v":[[1.52,0.934],[-1.113,-0.558],[0.92,0.29]]}]},{"t":26}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[98.589,26.45]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":97,"t":25,"b":43,"r":125},"ip":15,"op":26,"st":15},{"ddd":0,"ind":31,"ty":4,"nm":"gotaRosa2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[1.069,-1.904],[3.166,0.708]],"o":[[-1.195,2.13],[-0.793,-0.233]],"v":[[4.681,4.064],[9.043,6.644]]}],"e":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}],"e":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-23.069,-12.686],[-7.457,-6.107]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-23.069,-12.686],[-7.457,-6.107]]}],"e":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-26.569,-11.436],[-15.457,-10.857]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":25,"s":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-26.569,-11.436],[-15.457,-10.857]]}],"e":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-29.319,-6.936],[-15.457,-10.857]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":28,"s":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-29.319,-6.936],[-15.457,-10.857]]}],"e":[{"i":[[-0.181,-1.154],[-0.543,0.267]],"o":[[0.412,2.625],[-0.293,-0.733]],"v":[[-29.319,-6.936],[-27.707,-7.607]]}]},{"t":31}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[113.94,26.219]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":84,"t":12,"b":34,"r":124},"ip":13,"op":31,"st":13},{"ddd":0,"ind":32,"ty":4,"nm":"gotaRosa1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[177.502,96.273,0]},"a":{"k":[141.817,27.277,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0.168,2.349],[-1.915,-0.012]],"o":[[-0.121,-1.698],[1.24,0.008]],"v":[[-2.852,-2.278],[-5.338,-1.609]]}],"e":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[3.898,0.097],[-3.213,-2.234]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[3.898,0.097],[-3.213,-2.234]]}],"e":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[8.648,3.472],[-3.213,-2.234]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[8.648,3.472],[-3.213,-2.234]]}],"e":[{"i":[[-0.003,1.104],[-0.01,-0.492]],"o":[[0.004,-1.198],[-0.135,0.383]],"v":[[10.523,5.722],[9.912,5.516]]}]},{"t":34}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[141.289,28.73]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 10"}],"bounds":{"l":135,"t":25,"b":35,"r":152},"ip":24,"op":34,"st":12},{"ddd":0,"ind":33,"ty":4,"nm":"manchaRosa","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-1.007,0.038],[1.007,-0.038]],"o":[[1.007,-0.038],[-1.007,0.038]],"v":[[-7.646,-0.999],[-7.706,-2.559]]}],"e":[{"i":[[-1.931,0.129],[1.931,-0.129]],"o":[[1.931,-0.129],[-1.931,0.129]],"v":[[-8.755,-1.45],[-8.955,-4.444]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.931,0.129],[1.931,-0.129]],"o":[[1.931,-0.129],[-1.931,0.129]],"v":[[-8.755,-1.45],[-8.955,-4.444]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-1.75,0.75],[-1.75,-2.25]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-1.75,0.75],[-1.75,-2.25]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[0,1.5],[0,-1.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.125,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[0,1.5],[0,-1.5]]}],"e":[{"i":[[-1.816,-0.142],[1.816,0.142]],"o":[[1.816,0.142],[-1.816,-0.142]],"v":[[5.625,9.42],[5.846,6.605]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.816,-0.142],[1.816,0.142]],"o":[[1.816,0.142],[-1.816,-0.142]],"v":[[5.625,9.42],[5.846,6.605]]}],"e":[{"i":[[-1.927,-0.447],[1.927,0.447]],"o":[[1.927,0.446],[-1.927,-0.447]],"v":[[7.734,12.285],[8.426,9.297]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.927,-0.447],[1.927,0.447]],"o":[[1.927,0.446],[-1.927,-0.447]],"v":[[7.734,12.285],[8.426,9.297]]}],"e":[{"i":[[-1.929,-0.152],[1.929,0.152]],"o":[[1.929,0.152],[-1.929,-0.152]],"v":[[11.691,17.779],[11.927,14.788]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.929,-0.152],[1.929,0.152]],"o":[[1.929,0.152],[-1.929,-0.152]],"v":[[11.691,17.779],[11.927,14.788]]}],"e":[{"i":[[-1.66,-1.076],[1.66,1.076]],"o":[[1.66,1.076],[-1.66,-1.076]],"v":[[22.881,34.083],[24.55,31.509]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-1.66,-1.076],[1.66,1.076]],"o":[[1.66,1.076],[-1.66,-1.076]],"v":[[22.881,34.083],[24.55,31.509]]}],"e":[{"i":[[-1.622,-1.055],[1.622,1.055]],"o":[[1.622,1.055],[-1.622,-1.055]],"v":[[26.65,58.898],[28.286,56.383]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-1.622,-1.055],[1.622,1.055]],"o":[[1.622,1.055],[-1.622,-1.055]],"v":[[26.65,58.898],[28.286,56.383]]}],"e":[{"i":[[-1.397,-0.912],[1.397,0.912]],"o":[[1.397,0.912],[-1.397,-0.912]],"v":[[22.501,93.192],[24.355,92.863]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[134.44,33.379]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 25"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-0.823,-0.588],[-0.987,-1.061],[0.687,0.738],[1.179,0.843]],"o":[[1.179,0.843],[0.692,0.743],[-0.987,-1.061],[-0.813,-0.581]],"v":[[-12.369,-4.583],[-9.118,-1.728],[-8.051,-2.881],[-11.301,-5.736]]}],"e":[{"i":[[-1.603,-1.077],[-1.942,-1.971],[1.351,1.371],[2.297,1.544]],"o":[[2.296,1.543],[1.36,1.38],[-1.942,-1.971],[-1.584,-1.065]],"v":[[-13.74,-5.092],[-7.382,0.179],[-5.408,-2.08],[-11.766,-7.35]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.603,-1.077],[-1.942,-1.971],[1.351,1.371],[2.297,1.544]],"o":[[2.296,1.543],[1.36,1.38],[-1.942,-1.971],[-1.584,-1.065]],"v":[[-13.74,-5.092],[-7.382,0.179],[-5.408,-2.08],[-11.766,-7.35]]}],"e":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.188,1.694]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-7.67,-2.682],[-1.678,3.003],[0.443,0.88],[-5.549,-4.803]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.188,1.694]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-7.67,-2.682],[-1.678,3.003],[0.443,0.88],[-5.549,-4.803]]}],"e":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.189,1.693]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-3.92,-1.932],[2.072,3.753],[4.193,1.63],[-1.799,-4.053]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.125,"s":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.189,1.693]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-3.92,-1.932],[2.072,3.753],[4.193,1.63],[-1.799,-4.053]]}],"e":[{"i":[[-1.347,-1.222],[-1.54,-2.099],[1.071,1.46],[1.929,1.75]],"o":[[1.928,1.749],[1.079,1.47],[-1.54,-2.099],[-1.33,-1.207]],"v":[[1.229,6.127],[6.433,11.901],[8.579,10.066],[3.375,4.293]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.347,-1.222],[-1.54,-2.099],[1.071,1.46],[1.929,1.75]],"o":[[1.928,1.749],[1.079,1.47],[-1.54,-2.099],[-1.33,-1.207]],"v":[[1.229,6.127],[6.433,11.901],[8.579,10.066],[3.375,4.293]]}],"e":[{"i":[[-1.249,-1.53],[-1.315,-2.504],[0.915,1.742],[1.789,2.192]],"o":[[1.789,2.191],[0.921,1.754],[-1.315,-2.504],[-1.234,-1.512]],"v":[[3.136,9.833],[7.792,16.877],[10.395,15.253],[5.738,8.21]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.249,-1.53],[-1.315,-2.504],[0.915,1.742],[1.789,2.192]],"o":[[1.789,2.191],[0.921,1.754],[-1.315,-2.504],[-1.234,-1.512]],"v":[[3.136,9.833],[7.792,16.877],[10.395,15.253],[5.738,8.21]]}],"e":[{"i":[[-1.161,-1.544],[-1.188,-2.499],[0.826,1.738],[1.663,2.212]],"o":[[1.663,2.211],[0.832,1.75],[-1.188,-2.499],[-1.147,-1.525]],"v":[[5.446,14.812],[9.724,21.877],[12.33,20.39],[8.052,13.327]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.161,-1.544],[-1.188,-2.499],[0.826,1.738],[1.663,2.212]],"o":[[1.663,2.211],[0.832,1.75],[-1.188,-2.499],[-1.147,-1.525]],"v":[[5.446,14.812],[9.724,21.877],[12.33,20.39],[8.052,13.327]]}],"e":[{"i":[[-0.653,-1.864],[-0.383,-2.803],[0.267,1.949],[0.935,2.67]],"o":[[0.935,2.67],[0.269,1.963],[-0.383,-2.803],[-0.645,-1.841]],"v":[[16.756,32.634],[18.734,40.843],[21.734,40.202],[19.756,31.994]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-0.653,-1.864],[-0.383,-2.803],[0.267,1.949],[0.935,2.67]],"o":[[0.935,2.67],[0.269,1.963],[-0.383,-2.803],[-0.645,-1.841]],"v":[[16.756,32.634],[18.734,40.843],[21.734,40.202],[19.756,31.994]]}],"e":[{"i":[[-0.283,-1.911],[0.15,-2.763],[-0.104,1.922],[0.404,2.738]],"o":[[0.405,2.737],[-0.105,1.935],[0.15,-2.763],[-0.279,-1.888]],"v":[[18.575,56.468],[18.958,64.718],[21.957,64.657],[21.574,56.408]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-0.283,-1.911],[0.15,-2.763],[-0.104,1.922],[0.404,2.738]],"o":[[0.405,2.737],[-0.105,1.935],[0.15,-2.763],[-0.279,-1.888]],"v":[[18.575,56.468],[18.958,64.718],[21.957,64.657],[21.574,56.408]]}],"e":[{"i":[[-0.029,-0.762],[0.484,-0.914],[-0.337,0.636],[0.041,1.091]],"o":[[0.042,1.091],[-0.339,0.64],[0.484,-0.914],[-0.028,-0.752]],"v":[[13.938,88.292],[13.274,91.3],[16.108,92.284],[16.77,89.277]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[142.656,39.675]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 26"},{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[204,107,88,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[114.908,60.096]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 39"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[5.557,1.702],[-2.308,-2.705],[21.515,14.611],[-12.126,-5.401],[-1.014,-5.177],[-15.081,-10.146],[-0.96,1.782],[-5.609,-0.566],[-4.301,2.151]],"o":[[-10.616,-3.963],[7.144,8.373],[-7.737,-5.254],[2.392,1.065],[1.607,5.837],[7.043,4.739],[2.597,-4.822],[6.608,0.667],[6.175,-3.198]],"v":[[1.215,-25.196],[-2.697,-20.504],[-20.681,-17.79],[-31.347,-11.996],[-33.777,-5.444],[-17.437,1.435],[-22.214,-11.37],[-4.383,-6.796],[8.658,-13.832]]}],"e":[{"i":[[5.382,1.481],[-2.291,-2.534],[21.059,13.434],[-11.791,-4.851],[-1.117,-4.942],[-5.815,-7.326],[-0.872,1.737],[-4.435,3.106],[-4.069,2.184]],"o":[[-10.302,-3.512],[7.09,7.842],[-7.573,-4.831],[2.326,0.957],[12.416,1.113],[5.069,6.386],[2.36,-4.702],[3.463,-2.425],[5.84,-3.24]],"v":[[-1.085,-26.946],[-4.712,-22.333],[-21.904,-19.232],[-31.984,-13.374],[-33.137,-4.551],[-4.905,11.888],[-13.867,-8.389],[3.41,-7.748],[15.804,-10.107]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[5.382,1.481],[-2.291,-2.534],[21.059,13.434],[-11.791,-4.851],[-1.117,-4.942],[-5.815,-7.326],[-0.872,1.737],[-4.435,3.106],[-4.069,2.184]],"o":[[-10.302,-3.512],[7.09,7.842],[-7.573,-4.831],[2.326,0.957],[12.416,1.113],[5.069,6.386],[2.36,-4.702],[3.463,-2.425],[5.84,-3.24]],"v":[[-1.085,-26.946],[-4.712,-22.333],[-21.904,-19.232],[-31.984,-13.374],[-33.137,-4.551],[-4.905,11.888],[-13.867,-8.389],[3.41,-7.748],[15.804,-10.107]]}],"e":[{"i":[[10.271,3.587],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-5.352,-14.79],[-4.918,0.735],[-4.633,2.802],[-8.956,-8.093]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.829,6.911],[2.775,7.667],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[3.009,-28.025],[-2.668,-23.415],[-23.779,-23.469],[-30.478,-16.298],[-28.049,-4.849],[2.632,24.352],[11.266,16.137],[29.961,22.68],[35.986,15.155]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[10.271,3.587],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-5.352,-14.79],[-4.918,0.735],[-4.633,2.802],[-8.956,-8.093]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.829,6.911],[2.775,7.667],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[3.009,-28.025],[-2.668,-23.415],[-23.779,-23.469],[-30.478,-16.298],[-28.049,-4.849],[2.632,24.352],[11.266,16.137],[29.961,22.68],[35.986,15.155]]}],"e":[{"i":[[17.349,7.827],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-16.437,-25.651],[-4.918,0.735],[-4.633,2.802],[-4.773,-5.022]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.956,3.924],[4.399,6.865],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[5.009,-27.025],[-0.668,-22.415],[-22.529,-21.219],[-29.228,-14.048],[-31.549,-0.099],[5.882,24.352],[12.516,16.137],[30.211,18.93],[39.986,14.905]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.125,"s":[{"i":[[17.349,7.827],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-16.437,-25.651],[-4.918,0.735],[-4.633,2.802],[-4.773,-5.022]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.956,3.924],[4.399,6.865],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[5.009,-27.025],[-0.668,-22.415],[-22.529,-21.219],[-29.228,-14.048],[-31.549,-0.099],[5.882,24.352],[12.516,16.137],[30.211,18.93],[39.986,14.905]]}],"e":[{"i":[[15.573,9.327],[-1.788,-2.671],[10.507,8.169],[-9.59,-7.212],[-0.368,-4.755],[-2.611,-31.528],[-4.668,0.327],[-4.553,2.289],[-4.109,-5.063]],"o":[[-9.116,-4.672],[5.535,8.267],[-6.674,-5.189],[13.035,9.803],[0.608,3.752],[0.159,1.917],[4.939,-0.346],[3.555,-1.787],[-1.658,-9.939]],"v":[[14.024,-15.811],[4.569,-11.728],[-14.833,-15.424],[-21.646,-9.188],[-21.493,3.048],[6.62,41.145],[15.3,22.202],[31.698,26.124],[41.165,23.066]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[15.573,9.327],[-1.788,-2.671],[10.507,8.169],[-9.59,-7.212],[-0.368,-4.755],[-2.611,-31.528],[-4.668,0.327],[-4.553,2.289],[-4.109,-5.063]],"o":[[-9.116,-4.672],[5.535,8.267],[-6.674,-5.189],[13.035,9.803],[0.608,3.752],[0.159,1.917],[4.939,-0.346],[3.555,-1.787],[-1.658,-9.939]],"v":[[14.024,-15.811],[4.569,-11.728],[-14.833,-15.424],[-21.646,-9.188],[-21.493,3.048],[6.62,41.145],[15.3,22.202],[31.698,26.124],[41.165,23.066]]}],"e":[{"i":[[12.158,11.525],[-1.489,-3.159],[16.617,19.394],[-8.75,-9.663],[0.374,-5.167],[-4.357,-24.351],[-5.068,-0.403],[-5.261,1.722],[-3.595,-6.104]],"o":[[-9.037,-6.493],[4.609,9.777],[-5.975,-6.974],[16.753,18.499],[0.047,4.129],[1.468,8.206],[5.362,0.427],[4.108,-1.345],[-0.173,-10.946]],"v":[[16.621,-13.463],[9.903,-10.181],[-8.647,-14.034],[-11.474,-7.437],[-20.005,0.921],[3.636,34.413],[12.139,27.761],[29.121,34.626],[39.785,32.872]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[12.158,11.525],[-1.489,-3.159],[16.617,19.394],[-8.75,-9.663],[0.374,-5.167],[-4.357,-24.351],[-5.068,-0.403],[-5.261,1.722],[-3.595,-6.104]],"o":[[-9.037,-6.493],[4.609,9.777],[-5.975,-6.974],[16.753,18.499],[0.047,4.129],[1.468,8.206],[5.362,0.427],[4.108,-1.345],[-0.173,-10.946]],"v":[[16.621,-13.463],[9.903,-10.181],[-8.647,-14.034],[-11.474,-7.437],[-20.005,0.921],[3.636,34.413],[12.139,27.761],[29.121,34.626],[39.785,32.872]]}],"e":[{"i":[[12.311,15.855],[9.696,6.761],[12.464,8.037],[-10.186,-7.669],[-0.388,-5.052],[-3.377,-12.124],[-4.961,0.345],[-10.559,-1.634],[-7.262,-5.933]],"o":[[-9.096,-8.405],[-8.671,-6.047],[-7.549,-4.868],[13.844,10.424],[0.644,3.987],[2.188,7.854],[5.248,-0.365],[4.716,0.73],[0.152,-24.762]],"v":[[19.399,-11.569],[6.917,-8.181],[3.27,-1.502],[-10.151,-2.39],[-8.992,7.431],[4.657,31.186],[14.417,65.019],[31.338,54.196],[41.128,43.824]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[12.311,15.855],[9.696,6.761],[12.464,8.037],[-10.186,-7.669],[-0.388,-5.052],[-3.377,-12.124],[-4.961,0.345],[-10.559,-1.634],[-7.262,-5.933]],"o":[[-9.096,-8.405],[-8.671,-6.047],[-7.549,-4.868],[13.844,10.424],[0.644,3.987],[2.188,7.854],[5.248,-0.365],[4.716,0.73],[0.152,-24.762]],"v":[[19.399,-11.569],[6.917,-8.181],[3.27,-1.502],[-10.151,-2.39],[-8.992,7.431],[4.657,31.186],[14.417,65.019],[31.338,54.196],[41.128,43.824]]}],"e":[{"i":[[7.504,14.978],[-0.324,-3.477],[9.015,23.895],[-4.935,-12.066],[2.112,-4.73],[2.411,-21.576],[-2.322,0.481],[-5.533,-0.173],[-1.301,-6.963]],"o":[[-6.284,-9.184],[1.003,10.762],[-3.242,-8.593],[9.448,23.1],[-1.363,3.898],[-0.157,1.407],[5.267,-1.09],[4.32,0.135],[7.247,-10.253]],"v":[[33.541,8.86],[26.107,9.657],[9.98,-0.286],[5.074,4.953],[-5.795,9.905],[5.748,52.04],[14.746,51.062],[28.909,58.331],[36.532,62.815]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[7.504,14.978],[-0.324,-3.477],[9.015,23.895],[-4.935,-12.066],[2.112,-4.73],[2.411,-21.576],[-2.322,0.481],[-5.533,-0.173],[-1.301,-6.963]],"o":[[-6.284,-9.184],[1.003,10.762],[-3.242,-8.593],[9.448,23.1],[-1.363,3.898],[-0.157,1.407],[5.267,-1.09],[4.32,0.135],[7.247,-10.253]],"v":[[33.541,8.86],[26.107,9.657],[9.98,-0.286],[5.074,4.953],[-5.795,9.905],[5.748,52.04],[14.746,51.062],[28.909,58.331],[36.532,62.815]]}],"e":[{"i":[[3.24,19.81],[5.287,10.572],[7.109,13.015],[-5.284,-11.604],[2.073,-4.623],[2.825,-12.264],[-4.523,-2.067],[-8.495,-6.48],[-3.545,-8.681]],"o":[[-3.975,-11.729],[-4.729,-9.455],[-4.306,-7.883],[7.182,15.772],[-1.339,3.81],[-1.83,7.945],[4.785,2.187],[3.794,2.894],[11.963,-21.68]],"v":[[38.684,30.36],[26.1,27.372],[19.705,31.498],[8.339,24.306],[4.665,33.487],[5.306,60.876],[-8.283,87.261],[12.752,91.337],[26.808,87.903]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[3.24,19.81],[5.287,10.572],[7.109,13.015],[-5.284,-11.604],[2.073,-4.623],[2.825,-12.264],[-4.523,-2.067],[-8.495,-6.48],[-3.545,-8.681]],"o":[[-3.975,-11.729],[-4.729,-9.455],[-4.306,-7.883],[7.182,15.772],[-1.339,3.81],[-1.83,7.945],[4.785,2.187],[3.794,2.894],[11.963,-21.68]],"v":[[38.684,30.36],[26.1,27.372],[19.705,31.498],[8.339,24.306],[4.665,33.487],[5.306,60.876],[-8.283,87.261],[12.752,91.337],[26.808,87.903]]}],"e":[{"i":[[0.595,5.702],[2.679,-9.31],[3.307,0.964],[3.94,3.256],[1.114,-8.424],[2.973,-6.814],[-4.523,-2.067],[-8.495,-6.48],[-3.545,-8.681]],"o":[[2.095,-5.798],[-0.648,2.25],[-4.926,-1.436],[-2.803,-2.317],[-1.386,9.076],[-3.26,7.473],[4.785,2.187],[3.794,2.894],[2.971,-1.841]],"v":[[39.184,55.86],[34.1,48.372],[28.205,58.998],[17.339,43.806],[4.165,49.987],[2.306,73.876],[-8.283,87.261],[12.752,91.337],[26.808,87.903]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[221,120,94,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[126.161,53.817]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 40"}],"bounds":{"l":89,"t":24,"b":146,"r":168},"ip":13,"op":32,"st":13},{"ddd":0,"ind":34,"ty":0,"nm":"yellow","refId":"comp_17","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[125,135,0],"e":[125,135,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[125,135,0],"e":[125,138.266,0],"to":[0,0.06294004619122,0],"ti":[0,-0.11136794090271,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[125,138.266,0],"e":[125,137.5,0],"to":[0,0.62589412927628,0],"ti":[0,-0.3537266254425,0]},{"t":42}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":9,"op":6296,"st":-4},{"ddd":0,"ind":35,"ty":4,"nm":"Ooriginal 6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[120.41,157.974,0]},"a":{"k":[217.726,73.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[1.569,0.504],[0.897,0.253],[1.129,-0.175],[1.638,-0.455],[1.61,-2.335],[-4.685,1.971],[-6.224,1.558],[-2.721,-0.348],[-1.304,-1.001],[-0.063,-1.302],[1.063,-0.239]],"o":[[-1.883,-0.605],[-1.408,-0.396],[-2.589,0.401],[-1.203,0.334],[-1.229,1.782],[2.153,-0.906],[2.382,-0.596],[1.366,0.175],[0.879,0.675],[0.035,0.723],[-1.361,0.307]],"v":[[19.062,-63.32],[15.062,-64.583],[11.913,-64.824],[1.319,-60.57],[-4.085,-58.091],[-4.851,-59.682],[12.284,-68.795],[19.564,-68.987],[24.087,-67.389],[25.658,-64.476],[23.903,-63.029]]}],"e":[{"i":[[3.817,2.898],[4.562,-1.669],[7.239,5.775],[4.963,-0.428],[0.725,2.608],[-9.404,3.287],[-12.432,-1.896],[-6.877,-7.207],[-1.646,-4.877],[0.412,-2.463],[6.866,-1.028]],"o":[[-3.682,-2.795],[-12.501,4.573],[-10.291,-8.21],[-9.925,0.856],[-0.968,-3.481],[11.31,-3.953],[3.983,0.608],[1.892,1.982],[1.068,3.166],[-0.479,2.86],[-6.359,0.952]],"v":[[73.312,-35.359],[67.238,-49.547],[51.847,-62.275],[29.519,-65.527],[4.377,-64.188],[15.107,-71.944],[58.437,-76.211],[81.386,-62.79],[87.682,-51.118],[88.938,-42.296],[79.097,-42.927]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[3.817,2.898],[4.562,-1.669],[7.239,5.775],[4.963,-0.428],[0.725,2.608],[-9.404,3.287],[-12.432,-1.896],[-6.877,-7.207],[-1.646,-4.877],[0.412,-2.463],[6.866,-1.028]],"o":[[-3.682,-2.795],[-12.501,4.573],[-10.291,-8.21],[-9.925,0.856],[-0.968,-3.481],[11.31,-3.953],[3.983,0.608],[1.892,1.982],[1.068,3.166],[-0.479,2.86],[-6.359,0.952]],"v":[[73.312,-35.359],[67.238,-49.547],[51.847,-62.275],[29.519,-65.527],[4.377,-64.188],[15.107,-71.944],[58.437,-76.211],[81.386,-62.79],[87.682,-51.118],[88.938,-42.296],[79.097,-42.927]]}],"e":[{"i":[[3.048,4.016],[-0.201,9.556],[6.595,9.748],[6.269,0.049],[1.045,3.243],[-11.659,4.615],[-14.275,-6.838],[-9.018,-8.712],[-4.883,-11.062],[-5.749,-10.465],[5.768,-3.53]],"o":[[-4.52,-5.954],[0.316,-14.999],[-13.253,-19.589],[-3.08,-0.024],[-1.395,-4.329],[14.022,-5.55],[8.019,3.841],[2.444,2.361],[3.292,7.457],[6.936,12.626],[-7.384,4.519]],"v":[[75.258,2.98],[64.363,-6.894],[56.503,-47.756],[17.244,-70.98],[-13.413,-67.412],[-0.315,-77.716],[46.328,-82.385],[70.571,-66.862],[84.939,-47.061],[81.302,-18.601],[78.82,20.277]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":54,"s":[{"i":[[3.048,4.016],[-0.201,9.556],[6.595,9.748],[6.269,0.049],[1.045,3.243],[-11.659,4.615],[-14.275,-6.838],[-9.018,-8.712],[-4.883,-11.062],[-5.749,-10.465],[5.768,-3.53]],"o":[[-4.52,-5.954],[0.316,-14.999],[-13.253,-19.589],[-3.08,-0.024],[-1.395,-4.329],[14.022,-5.55],[8.019,3.841],[2.444,2.361],[3.292,7.457],[6.936,12.626],[-7.384,4.519]],"v":[[75.258,2.98],[64.363,-6.894],[56.503,-47.756],[17.244,-70.98],[-13.413,-67.412],[-0.315,-77.716],[46.328,-82.385],[70.571,-66.862],[84.939,-47.061],[81.302,-18.601],[78.82,20.277]]}],"e":[{"i":[[13.15,1.556],[-8.525,10.321],[10.847,17.964],[18.967,1.104],[17.41,-5.379],[-11.753,4.889],[-14.487,-6.654],[-7.202,-10.547],[-4.103,-16.945],[6.182,-9.548],[4.596,7.789]],"o":[[-17.35,10.056],[13.382,-16.201],[-8.743,-11.092],[-3.406,-0.422],[-1.358,-4.805],[13.553,-5.865],[8.4,3.738],[4.516,6.614],[2.766,11.423],[-19.632,30.322],[-3.499,-5.93]],"v":[[56.588,25.47],[47.927,12.291],[64.98,-41.383],[21.271,-71.579],[-20.673,-67.095],[-2.815,-79.109],[47.579,-79.75],[72.677,-57.048],[91.362,-17.392],[88.002,15.387],[45.737,55.956]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[13.15,1.556],[-8.525,10.321],[10.847,17.964],[18.967,1.104],[17.41,-5.379],[-11.753,4.889],[-14.487,-6.654],[-7.202,-10.547],[-4.103,-16.945],[6.182,-9.548],[4.596,7.789]],"o":[[-17.35,10.056],[13.382,-16.201],[-8.743,-11.092],[-3.406,-0.422],[-1.358,-4.805],[13.553,-5.865],[8.4,3.738],[4.516,6.614],[2.766,11.423],[-19.632,30.322],[-3.499,-5.93]],"v":[[56.588,25.47],[47.927,12.291],[64.98,-41.383],[21.271,-71.579],[-20.673,-67.095],[-2.815,-79.109],[47.579,-79.75],[72.677,-57.048],[91.362,-17.392],[88.002,15.387],[45.737,55.956]]}],"e":[{"i":[[-1.48,9.782],[-14.17,-2.982],[-4.403,14.78],[27.26,16.962],[16.636,-1.855],[-10.803,3.518],[-14.98,-6.227],[-6.431,-11.598],[0.188,-19.57],[5.785,-9.504],[19.314,5.313]],"o":[[2.033,-13.442],[54.192,11.405],[1.597,-16.72],[-6.531,-3.214],[-1.27,-5.91],[12.632,-2.733],[9.283,3.498],[5.556,10.327],[-0.127,13.193],[-18.372,28.995],[-35.273,-9.48]],"v":[[-16.283,47.244],[-21.455,27.621],[46.641,0.246],[26.644,-58.769],[-11.398,-62.12],[2.605,-75.741],[40.523,-71.599],[71.603,-43.93],[81.658,6.099],[73.404,41.732],[-11.49,67.506]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":58,"s":[{"i":[[-1.48,9.782],[-14.17,-2.982],[-4.403,14.78],[27.26,16.962],[16.636,-1.855],[-10.803,3.518],[-14.98,-6.227],[-6.431,-11.598],[0.188,-19.57],[5.785,-9.504],[19.314,5.313]],"o":[[2.033,-13.442],[54.192,11.405],[1.597,-16.72],[-6.531,-3.214],[-1.27,-5.91],[12.632,-2.733],[9.283,3.498],[5.556,10.327],[-0.127,13.193],[-18.372,28.995],[-35.273,-9.48]],"v":[[-16.283,47.244],[-21.455,27.621],[46.641,0.246],[26.644,-58.769],[-11.398,-62.12],[2.605,-75.741],[40.523,-71.599],[71.603,-43.93],[81.658,6.099],[73.404,41.732],[-11.49,67.506]]}],"e":[{"i":[[-17.589,-7.278],[-9.984,-12.909],[-9.173,9.184],[31.406,24.89],[15.733,-2.741],[-10.328,2.832],[-15.226,-6.013],[-6.046,-12.123],[2.333,-20.882],[5.586,-9.482],[26.688,3.971]],"o":[[22.706,9.395],[29.383,37.99],[15.017,-15.034],[-8.094,-4.61],[-1.227,-6.463],[12.172,-1.168],[9.725,3.378],[6.076,12.183],[-1.573,14.077],[-17.741,28.331],[-57.16,-8.505]],"v":[[-71.468,38.63],[-45.145,21.035],[26.221,13.56],[29.331,-52.365],[-11.261,-59.632],[0.066,-74.807],[38.496,-70.524],[71.066,-37.371],[76.805,17.845],[66.105,54.905],[-7.103,86.031]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":59,"s":[{"i":[[-17.589,-7.278],[-9.984,-12.909],[-9.173,9.184],[31.406,24.89],[15.733,-2.741],[-10.328,2.832],[-15.226,-6.013],[-6.046,-12.123],[2.333,-20.882],[5.586,-9.482],[26.688,3.971]],"o":[[22.706,9.395],[29.383,37.99],[15.017,-15.034],[-8.094,-4.61],[-1.227,-6.463],[12.172,-1.168],[9.725,3.378],[6.076,12.183],[-1.573,14.077],[-17.741,28.331],[-57.16,-8.505]],"v":[[-71.468,38.63],[-45.145,21.035],[26.221,13.56],[29.331,-52.365],[-11.261,-59.632],[0.066,-74.807],[38.496,-70.524],[71.066,-37.371],[76.805,17.845],[66.105,54.905],[-7.103,86.031]]}],"e":[{"i":[[-16.794,-18.105],[-18.688,-21.185],[-18.315,-3.686],[14.406,24.39],[20.499,2.657],[-19.828,4.332],[-11.754,-9.27],[-5.329,-33.104],[17.293,-17.65],[18.779,-0.365],[10.476,23.915]],"o":[[16.706,27.395],[12.027,13.634],[20.832,4.193],[-6.594,-7.61],[-42.466,-5.505],[19.172,-1.168],[12.742,10.049],[4.296,26.687],[-11.658,11.898],[-36.562,0.711],[-14.559,-33.236]],"v":[[-71.968,-22.87],[-45.575,-12.79],[-0.779,22.56],[31.331,-26.865],[1.739,-44.132],[-4.934,-70.807],[44.496,-60.524],[78.066,-10.371],[56.802,61.015],[10.605,80.905],[-66.204,41.761]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":61,"s":[{"i":[[-16.794,-18.105],[-18.688,-21.185],[-18.315,-3.686],[14.406,24.39],[20.499,2.657],[-19.828,4.332],[-11.754,-9.27],[-5.329,-33.104],[17.293,-17.65],[18.779,-0.365],[10.476,23.915]],"o":[[16.706,27.395],[12.027,13.634],[20.832,4.193],[-6.594,-7.61],[-42.466,-5.505],[19.172,-1.168],[12.742,10.049],[4.296,26.687],[-11.658,11.898],[-36.562,0.711],[-14.559,-33.236]],"v":[[-71.968,-22.87],[-45.575,-12.79],[-0.779,22.56],[31.331,-26.865],[1.739,-44.132],[-4.934,-70.807],[44.496,-60.524],[78.066,-10.371],[56.802,61.015],[10.605,80.905],[-66.204,41.761]]}],"e":[{"i":[[-11.294,40.895],[3.88,-10.795],[-11.226,-19.251],[-0.594,49.39],[16.499,4.157],[-29.828,-0.168],[-11.758,-28.451],[9.663,-12.529],[24.016,-2.744],[16.5,8.973],[-1.511,25.556]],"o":[[13.206,-13.105],[-6.091,16.945],[16.017,27.466],[0.277,-23.07],[-28.619,-7.211],[13.688,0.077],[9.415,22.782],[-14.233,18.455],[-16.19,1.85],[-24.502,-13.324],[4.189,-70.841]],"v":[[-40.968,-49.37],[-31.599,-27.889],[-39.779,27.56],[39.331,10.135],[16.739,-41.132],[19.066,-68.807],[71.996,-26.024],[66.066,47.629],[5.974,81.848],[-43.895,71.905],[-77.452,6.367]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":63,"s":[{"i":[[-11.294,40.895],[3.88,-10.795],[-11.226,-19.251],[-0.594,49.39],[16.499,4.157],[-29.828,-0.168],[-11.758,-28.451],[9.663,-12.529],[24.016,-2.744],[16.5,8.973],[-1.511,25.556]],"o":[[13.206,-13.105],[-6.091,16.945],[16.017,27.466],[0.277,-23.07],[-28.619,-7.211],[13.688,0.077],[9.415,22.782],[-14.233,18.455],[-16.19,1.85],[-24.502,-13.324],[4.189,-70.841]],"v":[[-40.968,-49.37],[-31.599,-27.889],[-39.779,27.56],[39.331,10.135],[16.739,-41.132],[19.066,-68.807],[71.996,-26.024],[66.066,47.629],[5.974,81.848],[-43.895,71.905],[-77.452,6.367]]}],"e":[{"i":[[-22.903,-15.498],[9.979,-7.396],[0.01,-27.203],[-0.594,49.39],[16.333,4.768],[-29.173,-6.218],[-12.865,-27.968],[9.854,-12.379],[30.715,10.456],[5.958,17.812],[-13.299,20.657]],"o":[[10.198,8.326],[-15.664,11.61],[-0.012,31.795],[0.277,-23.07],[-32.001,-9.343],[22.672,4.832],[14.742,32.049],[-22.297,28.012],[-20.706,-7.049],[-9.152,-27.358],[17.025,-26.444]],"v":[[5.032,-63.369],[0.198,-41.198],[-43.279,11.56],[39.331,10.135],[16.739,-41.132],[14.566,-72.807],[73.996,-29.524],[61.566,54.629],[-30.158,76.549],[-73.895,37.905],[-63.537,-38.26]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":65,"s":[{"i":[[-22.903,-15.498],[9.979,-7.396],[0.01,-27.203],[-0.594,49.39],[16.333,4.768],[-29.173,-6.218],[-12.865,-27.968],[9.854,-12.379],[30.715,10.456],[5.958,17.812],[-13.299,20.657]],"o":[[10.198,8.326],[-15.664,11.61],[-0.012,31.795],[0.277,-23.07],[-32.001,-9.343],[22.672,4.832],[14.742,32.049],[-22.297,28.012],[-20.706,-7.049],[-9.152,-27.358],[17.025,-26.444]],"v":[[5.032,-63.369],[0.198,-41.198],[-43.279,11.56],[39.331,10.135],[16.739,-41.132],[14.566,-72.807],[73.996,-29.524],[61.566,54.629],[-30.158,76.549],[-73.895,37.905],[-63.537,-38.26]]}],"e":[{"i":[[-1.569,-16.902],[11.192,-4.522],[-1.211,-40.642],[-23.594,66.89],[16.999,6.157],[-46.328,13.832],[-12.865,-27.968],[9.854,-12.379],[31.435,11.605],[5.952,17.814],[-21.13,18.114]],"o":[[-0.309,12.023],[-17.568,7.098],[0.947,31.781],[7.675,-21.758],[-31.344,-11.354],[22.212,-6.632],[14.742,32.049],[-22.297,28.012],[-21.192,-7.823],[-13.537,-40.515],[27.049,-23.188]],"v":[[12.032,-64.869],[-8.82,-44.161],[-47.279,11.56],[43.331,10.635],[16.739,-41.132],[-0.434,-77.307],[73.996,-29.524],[61.566,54.629],[-31.775,73.974],[-76.395,33.905],[-53.995,-54.491]]}]},{"t":67}]},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[218.079,77.648]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":136,"t":-8,"b":165,"r":312},"ip":50,"op":66,"st":50},{"ddd":0,"ind":36,"ty":4,"nm":"Ooriginal 7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[120.41,157.974,0]},"a":{"k":[217.726,73.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":66,"s":[{"i":[[-5.266,12.285],[8.576,9.433],[12.923,-3.783],[11.254,-5.263],[5.325,-12.753],[-11.396,-5.594],[-14.37,9.736],[-12.029,4.064]],"o":[[4.52,-10.546],[-8.576,-9.434],[-12.005,3.515],[-11.548,5.401],[-5.15,12.334],[10.754,5.28],[10.354,-7.014],[12.384,-4.184]],"v":[[43.717,1.571],[32.024,-32.04],[-0.185,-46.191],[-31.516,-33.211],[-44.088,1.279],[-31.516,36.246],[0.107,50.29],[30.853,37.71]]}],"e":[{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[43.095,2.607],[32.231,-30.589],[-0.393,-44.74],[-31.516,-32.589],[-43.881,2.107],[-31.516,37.697],[0.107,51.741],[30.231,40.197]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":70,"s":[{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[43.095,2.607],[32.231,-30.589],[-0.393,-44.74],[-31.516,-32.589],[-43.881,2.107],[-31.516,37.697],[0.107,51.741],[30.231,40.197]]}],"e":[{"i":[[-5.266,12.285],[8.576,9.433],[12.923,-3.783],[11.254,-5.263],[5.325,-12.753],[-11.396,-5.594],[-14.37,9.736],[-12.029,4.064]],"o":[[4.52,-10.546],[-8.576,-9.434],[-12.005,3.515],[-11.548,5.401],[-5.15,12.334],[10.754,5.28],[10.354,-7.014],[12.384,-4.184]],"v":[[43.717,1.571],[32.024,-32.04],[-0.185,-46.191],[-31.516,-33.211],[-44.088,1.279],[-31.516,36.246],[0.107,50.29],[30.853,37.71]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":74,"s":[{"i":[[-5.266,12.285],[8.576,9.433],[12.923,-3.783],[11.254,-5.263],[5.325,-12.753],[-11.396,-5.594],[-14.37,9.736],[-12.029,4.064]],"o":[[4.52,-10.546],[-8.576,-9.434],[-12.005,3.515],[-11.548,5.401],[-5.15,12.334],[10.754,5.28],[10.354,-7.014],[12.384,-4.184]],"v":[[43.717,1.571],[32.024,-32.04],[-0.185,-46.191],[-31.516,-33.211],[-44.088,1.279],[-31.516,36.246],[0.107,50.29],[30.853,37.71]]}],"e":[{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[43.095,2.607],[32.231,-30.589],[-0.393,-44.74],[-31.516,-32.589],[-43.881,2.107],[-31.516,37.697],[0.107,51.741],[30.231,40.197]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":78,"s":[{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[43.095,2.607],[32.231,-30.589],[-0.393,-44.74],[-31.516,-32.589],[-43.881,2.107],[-31.516,37.697],[0.107,51.741],[30.231,40.197]]}],"e":[{"i":[[-5.266,12.285],[8.576,9.433],[12.923,-3.783],[11.254,-5.263],[5.325,-12.753],[-11.396,-5.594],[-14.37,9.736],[-12.029,4.064]],"o":[[4.52,-10.546],[-8.576,-9.434],[-12.005,3.515],[-11.548,5.401],[-5.15,12.334],[10.754,5.28],[10.354,-7.014],[12.384,-4.184]],"v":[[43.717,1.571],[32.024,-32.04],[-0.185,-46.191],[-31.516,-33.211],[-44.088,1.279],[-31.516,36.246],[0.107,50.29],[30.853,37.71]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":82,"s":[{"i":[[-5.266,12.285],[8.576,9.433],[12.923,-3.783],[11.254,-5.263],[5.325,-12.753],[-11.396,-5.594],[-14.37,9.736],[-12.029,4.064]],"o":[[4.52,-10.546],[-8.576,-9.434],[-12.005,3.515],[-11.548,5.401],[-5.15,12.334],[10.754,5.28],[10.354,-7.014],[12.384,-4.184]],"v":[[43.717,1.571],[32.024,-32.04],[-0.185,-46.191],[-31.516,-33.211],[-44.088,1.279],[-31.516,36.246],[0.107,50.29],[30.853,37.71]]}],"e":[{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[44.595,0.107],[31.731,-34.089],[0.107,-48.24],[-31.516,-34.089],[-44.381,0.107],[-31.516,34.197],[0.107,48.241],[31.731,34.197]]}]},{"t":87}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":66,"s":[{"i":[[19.157,-6.696],[19.737,7.078],[8.696,22.768],[-11.15,18.979],[-19.101,9.143],[-21.308,-6.074],[-19.18,-8.976],[-5.38,-21.342]],"o":[[-19.99,6.987],[-20.857,-7.479],[-7.556,-19.783],[12.129,-20.646],[21.196,-10.145],[22.237,6.338],[17.486,8.184],[4.931,19.561]],"v":[[55.08,58.722],[0.001,79.448],[-55.959,57.258],[-78.392,1.172],[-55.959,-54.329],[0.001,-76.813],[56.251,-53.158],[77.806,1.464]]}],"e":[{"i":[[15.149,-14.794],[22.153,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.157,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.157,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.153,0],[15.149,14.794],[0,22.012]],"v":[[54.458,61.208],[0,80.898],[-55.959,58.708],[-78.184,2.001],[-55.959,-53.707],[0,-76.398],[56.458,-51.707],[77.184,2.501]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":70,"s":[{"i":[[15.149,-14.794],[22.153,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.157,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.157,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.153,0],[15.149,14.794],[0,22.012]],"v":[[54.458,61.208],[0,80.898],[-55.959,58.708],[-78.184,2.001],[-55.959,-53.707],[0,-76.398],[56.458,-51.707],[77.184,2.501]]}],"e":[{"i":[[19.157,-6.696],[19.737,7.078],[8.696,22.768],[-11.15,18.979],[-19.101,9.143],[-21.308,-6.074],[-19.18,-8.976],[-5.38,-21.342]],"o":[[-19.99,6.987],[-20.857,-7.479],[-7.556,-19.783],[12.129,-20.646],[21.196,-10.145],[22.237,6.338],[17.486,8.184],[4.931,19.561]],"v":[[55.08,58.722],[0.001,79.448],[-55.959,57.258],[-78.392,1.172],[-55.959,-54.329],[0.001,-76.813],[56.251,-53.158],[77.806,1.464]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":74,"s":[{"i":[[19.157,-6.696],[19.737,7.078],[8.696,22.768],[-11.15,18.979],[-19.101,9.143],[-21.308,-6.074],[-19.18,-8.976],[-5.38,-21.342]],"o":[[-19.99,6.987],[-20.857,-7.479],[-7.556,-19.783],[12.129,-20.646],[21.196,-10.145],[22.237,6.338],[17.486,8.184],[4.931,19.561]],"v":[[55.08,58.722],[0.001,79.448],[-55.959,57.258],[-78.392,1.172],[-55.959,-54.329],[0.001,-76.813],[56.251,-53.158],[77.806,1.464]]}],"e":[{"i":[[15.149,-14.794],[22.153,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.157,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.157,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.153,0],[15.149,14.794],[0,22.012]],"v":[[54.458,61.208],[0,80.898],[-55.959,58.708],[-78.184,2.001],[-55.959,-53.707],[0,-76.398],[56.458,-51.707],[77.184,2.501]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":78,"s":[{"i":[[15.149,-14.794],[22.153,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.157,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.157,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.153,0],[15.149,14.794],[0,22.012]],"v":[[54.458,61.208],[0,80.898],[-55.959,58.708],[-78.184,2.001],[-55.959,-53.707],[0,-76.398],[56.458,-51.707],[77.184,2.501]]}],"e":[{"i":[[19.157,-6.696],[19.737,7.078],[8.696,22.768],[-11.15,18.979],[-19.101,9.143],[-21.308,-6.074],[-19.18,-8.976],[-5.38,-21.342]],"o":[[-19.99,6.987],[-20.857,-7.479],[-7.556,-19.783],[12.129,-20.646],[21.196,-10.145],[22.237,6.338],[17.486,8.184],[4.931,19.561]],"v":[[55.08,58.722],[0.001,79.448],[-55.959,57.258],[-78.392,1.172],[-55.959,-54.329],[0.001,-76.813],[56.251,-53.158],[77.806,1.464]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":82,"s":[{"i":[[19.157,-6.696],[19.737,7.078],[8.696,22.768],[-11.15,18.979],[-19.101,9.143],[-21.308,-6.074],[-19.18,-8.976],[-5.38,-21.342]],"o":[[-19.99,6.987],[-20.857,-7.479],[-7.556,-19.783],[12.129,-20.646],[21.196,-10.145],[22.237,6.338],[17.486,8.184],[4.931,19.561]],"v":[[55.08,58.722],[0.001,79.448],[-55.959,57.258],[-78.392,1.172],[-55.959,-54.329],[0.001,-76.813],[56.251,-53.158],[77.806,1.464]]}],"e":[{"i":[[15.149,-14.794],[22.153,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.157,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.157,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.153,0],[15.149,14.794],[0,22.012]],"v":[[55.958,55.208],[0,77.398],[-55.959,55.208],[-78.684,0.001],[-55.959,-55.207],[0,-77.398],[55.958,-55.207],[78.684,0.001]]}]},{"t":87}]},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[218.079,77.648]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":136,"t":-1,"b":159,"r":298},"ip":66,"op":1234,"st":41},{"ddd":0,"ind":37,"ty":4,"nm":"Ooriginal 4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[120.41,157.974,0]},"a":{"k":[217.726,73.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":3,"s":[{"i":[[0,13.366],[8.576,9.433],[12.506,0],[8.576,-9.434],[0,-13.363],[-8.576,-9.36],[-12.509,0],[-8.576,9.363]],"o":[[0,-13.363],[-8.576,-9.434],[-12.509,0],[-8.576,9.433],[0,13.366],[8.576,9.363],[12.506,0],[8.576,-9.36]],"v":[[44.595,0.107],[31.731,-34.089],[0.107,-48.24],[-31.516,-34.089],[-44.381,0.107],[-31.516,34.197],[0.107,48.241],[31.731,34.197]]}],"e":[{"i":[[-0.025,7.777],[5.014,5.524],[7.337,0.051],[5.049,-5.455],[0.025,-7.776],[-5.045,-5.481],[-8.949,-7.162],[-7.321,-0.985]],"o":[[0.025,-7.776],[-5.014,-5.524],[-7.338,-0.051],[-5.049,5.454],[-0.025,7.777],[5.055,5.488],[5.742,4.596],[6.485,0.872]],"v":[[38.305,-27.606],[30.822,-47.557],[12.296,-55.919],[-6.283,-47.813],[-3.893,-53.966],[11.626,-43.078],[28.186,-30.812],[32.753,-16.847]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":6,"s":[{"i":[[-0.025,7.777],[5.014,5.524],[7.337,0.051],[5.049,-5.455],[0.025,-7.776],[-5.045,-5.481],[-8.949,-7.162],[-7.321,-0.985]],"o":[[0.025,-7.776],[-5.014,-5.524],[-7.338,-0.051],[-5.049,5.454],[-0.025,7.777],[5.055,5.488],[5.742,4.596],[6.485,0.872]],"v":[[38.305,-27.606],[30.822,-47.557],[12.296,-55.919],[-6.283,-47.813],[-3.893,-53.966],[11.626,-43.078],[28.186,-30.812],[32.753,-16.847]]}],"e":[{"i":[[-0.06,-0.007],[0.051,0.078],[0.136,0.121],[0.135,0.088],[0.06,0.007],[-0.127,-0.077],[-0.145,-0.106],[-0.105,-0.11]],"o":[[0.06,0.007],[-0.051,-0.078],[-0.136,-0.121],[-0.135,-0.088],[-0.06,-0.007],[0.15,0.091],[0.18,0.132],[0.121,0.128]],"v":[[29.543,-66.209],[29.555,-66.315],[29.274,-66.615],[28.866,-66.929],[28.574,-67.072],[28.649,-66.963],[29.012,-66.747],[29.389,-66.411]]}]},{"t":9}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":3,"s":[{"i":[[15.149,-14.794],[22.153,0],[15.149,14.793],[0,22.012],[-15.152,14.794],[-22.157,0],[-15.152,-14.794],[0,-22.01]],"o":[[-15.152,14.793],[-22.157,0],[-15.152,-14.794],[0,-22.01],[15.149,-14.794],[22.153,0],[15.149,14.794],[0,22.012]],"v":[[55.958,55.208],[0,77.398],[-55.959,55.208],[-78.684,0.001],[-55.959,-55.207],[0,-77.398],[55.958,-55.207],[78.684,0.001]]}],"e":[{"i":[[11.781,-9.646],[10.299,13.677],[11.157,8.803],[-6.163,11.82],[-14.1,6.193],[-17.014,-3.952],[-9.311,-12.552],[3.296,-13.746]],"o":[[-12.735,9.978],[-7.701,-9.323],[-14.832,-9.105],[26.28,-7.595],[14.58,-5.972],[18.384,5.27],[9.235,11.952],[-4.417,14.065]],"v":[[47.489,15.737],[24.939,-4.652],[7.241,-32.964],[-42.042,-45.38],[-15.05,-66.68],[23.789,-70.523],[55.763,-53.1],[64.349,-20.209]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":6,"s":[{"i":[[11.781,-9.646],[10.299,13.677],[11.157,8.803],[-6.163,11.82],[-14.1,6.193],[-17.014,-3.952],[-9.311,-12.552],[3.296,-13.746]],"o":[[-12.735,9.978],[-7.701,-9.323],[-14.832,-9.105],[26.28,-7.595],[14.58,-5.972],[18.384,5.27],[9.235,11.952],[-4.417,14.065]],"v":[[47.489,15.737],[24.939,-4.652],[7.241,-32.964],[-42.042,-45.38],[-15.05,-66.68],[23.789,-70.523],[55.763,-53.1],[64.349,-20.209]]}],"e":[{"i":[[7.091,-2.476],[11.085,-4.709],[5.596,0.459],[-14.749,-2.376],[-12.635,-5.789],[-9.849,-9.457],[-1.175,-9.429],[7.888,-2.235]],"o":[[-9.368,3.271],[-7.912,3.361],[-14.386,-1.181],[24.525,3.951],[13.788,6.317],[13.134,12.611],[0.996,7.994],[-10.57,2.996]],"v":[[35.691,-39.246],[16.604,-44.763],[4.342,-50.493],[-12.539,-60.733],[13.218,-65.911],[28.21,-70.517],[55.49,-50.165],[44.38,-48.361]]}]},{"t":9}]},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[218.079,77.648]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":139,"t":0,"b":156,"r":297},"ip":0,"op":9,"st":0}]},{"id":"comp_17","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"gotaVioleta8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[114.377,116.773,0]},"a":{"k":[80.817,52.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[-0.84,0.659],[-1.316,-1.881]],"o":[[0.841,-0.66],[1.552,2.218]],"v":[[-3.474,-3.702],[-5.044,-4.309]]}],"e":[{"i":[[-2.827,2.641],[-1.316,-1.881]],"o":[[2.585,-2.416],[1.552,2.218]],"v":[[2.526,2.798],[-3.794,-3.559]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[-2.827,2.641],[-1.316,-1.881]],"o":[[2.585,-2.416],[1.552,2.218]],"v":[[2.526,2.798],[-3.794,-3.559]]}],"e":[{"i":[[-2.827,2.641],[-1.757,-1.477]],"o":[[2.585,-2.416],[4.48,3.766]],"v":[[11.526,10.298],[4.456,1.941]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[-2.827,2.641],[-1.757,-1.477]],"o":[[2.585,-2.416],[4.48,3.766]],"v":[[11.526,10.298],[4.456,1.941]]}],"e":[{"i":[[-1.653,1.335],[-1.358,-1.851]],"o":[[1.66,-1.341],[1.48,2.016]],"v":[[13.526,15.048],[11.956,13.191]]}]},{"t":46}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[82.255,52.921]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 13"}],"bounds":{"l":76,"t":47,"b":69,"r":97},"ip":40,"op":46,"st":16},{"ddd":0,"ind":1,"ty":4,"nm":"gotaVioleta7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[-0.746,-1.912],[-2.504,1.276]],"o":[[0.608,1.559],[2.953,-1.504]],"v":[[-3.043,0.836],[-6.664,1.549]]}],"e":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[17.707,-4.914],[7.086,-1.451]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[17.707,-4.914],[7.086,-1.451]]}],"e":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[27.207,-11.914],[11.336,-3.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[-1.871,-3.912],[-2.504,1.276]],"o":[[1.711,3.577],[2.953,-1.504]],"v":[[27.207,-11.914],[11.336,-3.951]]}],"e":[{"i":[[0.004,-0.662],[-2.504,1.276]],"o":[[1.004,1.588],[2.953,-1.504]],"v":[[31.457,-15.664],[27.336,-12.701]]}]},{"t":46}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[85.229,18.204]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 20"}],"bounds":{"l":78,"t":2,"b":21,"r":117},"ip":40,"op":46,"st":3},{"ddd":0,"ind":2,"ty":4,"nm":"gotaVioleta6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[93.877,166.273,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[-4.749,10.453],[-1.911,6.951],[-3.655,9.729]]}],"e":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[-1.749,2.203],[1.089,-1.299],[-0.655,1.479]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[-1.749,2.203],[1.089,-1.299],[-0.655,1.479]]}],"e":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[0.251,-2.547],[5.589,-9.799],[1.345,-3.271]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0.213,0.821],[-1.949,-1.725],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.04,0.92],[-1.09,1.176]],"v":[[0.251,-2.547],[5.589,-9.799],[1.345,-3.271]]}],"e":[{"i":[[0.213,0.821],[-1.27,-0.846],[0.759,-0.819]],"o":[[-0.38,-1.466],[1.156,0.77],[-1.09,1.176]],"v":[[6.251,-12.047],[8.589,-15.299],[7.345,-12.771]]}]},{"t":43}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[89.371,3.274]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":84,"t":-13,"b":15,"r":99},"ip":37,"op":43,"st":3},{"ddd":0,"ind":3,"ty":4,"nm":"gotaVioleta5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[88.877,163.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[0.38,0.486],[-1.8,-0.586],[0.269,-0.767]],"o":[[-0.678,-0.868],[0.959,0.313],[-0.386,1.099]],"v":[[-1.459,8.379],[-0.58,5.221],[-0.939,7.58]]}],"e":[{"i":[[0.38,0.486],[-1.8,-0.586],[0.269,-0.767]],"o":[[-0.678,-0.868],[0.959,0.313],[-0.386,1.099]],"v":[[-0.459,1.629],[0.42,-1.529],[0.061,0.83]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0.38,0.486],[-1.8,-0.586],[0.269,-0.767]],"o":[[-0.678,-0.868],[0.959,0.313],[-0.386,1.099]],"v":[[-0.459,1.629],[0.42,-1.529],[0.061,0.83]]}],"e":[{"i":[[0.38,0.486],[-1.689,-0.854],[0.269,-0.767]],"o":[[-0.678,-0.868],[2.794,1.413],[-0.386,1.099]],"v":[[2.791,-3.871],[6.17,-10.029],[3.311,-4.67]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[0.38,0.486],[-1.689,-0.854],[0.269,-0.767]],"o":[[-0.678,-0.868],[2.794,1.413],[-0.386,1.099]],"v":[[2.791,-3.871],[6.17,-10.029],[3.311,-4.67]]}],"e":[{"i":[[0.102,0.131],[-0.454,-0.23],[0.072,-0.206]],"o":[[-0.182,-0.233],[0.752,0.38],[-0.104,0.296]],"v":[[7.304,-8.997],[8.213,-10.653],[7.444,-9.212]]}]},{"t":42}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[75.475,11.745]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":73,"t":1,"b":21,"r":84},"ip":36,"op":42,"st":3},{"ddd":0,"ind":4,"ty":4,"nm":"manchaVioleta 5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[51.44,28.046]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 23"},{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[38.888,36.167]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 24"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[2.75,-0.52],[0.658,-1.285],[-5.362,-2.946],[-1.972,1.268],[1.456,7.088],[-4.825,8.415],[2.91,-0.203]],"o":[[-4.146,2.363],[0.908,8.715],[7.888,1.929],[3.153,-4.107],[-1.651,-8.039],[1.545,-2.695],[-3.846,0.268]],"v":[[39.672,-34.301],[45.014,-26.786],[36.534,-12.25],[54.894,-4.714],[56.823,-20.032],[67.502,-31.251],[60.143,-35.464]]}],"e":[{"i":[[5,-0.77],[-0.467,-1.16],[-5.362,-2.946],[-7.097,0.518],[-1.026,5.711],[4.545,3.805],[4.987,-0.888]],"o":[[-5.125,1.23],[0.658,5.215],[11.388,0.929],[7.387,-0.539],[0.751,-4.182],[-2.003,-1.677],[-5.721,1.018]],"v":[[50.047,-31.676],[53.514,-27.286],[45.784,-18.75],[69.894,-15.339],[84.448,-23.407],[80.002,-34.001],[68.393,-35.714]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[5,-0.77],[-0.467,-1.16],[-5.362,-2.946],[-7.097,0.518],[-1.026,5.711],[4.545,3.805],[4.987,-0.888]],"o":[[-5.125,1.23],[0.658,5.215],[11.388,0.929],[7.387,-0.539],[0.751,-4.182],[-2.003,-1.677],[-5.721,1.018]],"v":[[50.047,-31.676],[53.514,-27.286],[45.784,-18.75],[69.894,-15.339],[84.448,-23.407],[80.002,-34.001],[68.393,-35.714]]}],"e":[{"i":[[2.629,-0.001],[2.502,-1.65],[-2.216,-0.443],[-3.574,-2.201],[-2.33,2.728],[2.72,1.457],[2.474,0.656]],"o":[[-4.417,0.002],[-0.36,0.321],[1.975,0.395],[2.933,1.807],[2.381,-2.787],[-2.303,-1.233],[-1.698,-0.45]],"v":[[84.538,-34.666],[72.51,-32.809],[81.876,-32.007],[93.53,-27.951],[103.09,-23.238],[98.706,-31.334],[91.847,-33.803]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[2.629,-0.001],[2.502,-1.65],[-2.216,-0.443],[-3.574,-2.201],[-2.33,2.728],[2.72,1.457],[2.474,0.656]],"o":[[-4.417,0.002],[-0.36,0.321],[1.975,0.395],[2.933,1.807],[2.381,-2.787],[-2.303,-1.233],[-1.698,-0.45]],"v":[[84.538,-34.666],[72.51,-32.809],[81.876,-32.007],[93.53,-27.951],[103.09,-23.238],[98.706,-31.334],[91.847,-33.803]]}],"e":[{"i":[[2.09,0.636],[1.412,-0.387],[-5.578,-5.064],[-2.905,-3.03],[-2.311,1.698],[3.716,2.888],[2.325,1.357]],"o":[[-1.741,-0.53],[-0.36,0.321],[1.878,1.705],[2.642,2.755],[4.707,-3.458],[-4.595,-3.572],[-1.518,-0.886]],"v":[[91.163,-33.541],[82.76,-35.059],[94.751,-28.757],[104.405,-19.326],[115.59,-10.488],[105.706,-25.459],[97.847,-30.678]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":54,"s":[{"i":[[2.09,0.636],[1.412,-0.387],[-5.578,-5.064],[-2.905,-3.03],[-2.311,1.698],[3.716,2.888],[2.325,1.357]],"o":[[-1.741,-0.53],[-0.36,0.321],[1.878,1.705],[2.642,2.755],[4.707,-3.458],[-4.595,-3.572],[-1.518,-0.886]],"v":[[91.163,-33.541],[82.76,-35.059],[94.751,-28.757],[104.405,-19.326],[115.59,-10.488],[105.706,-25.459],[97.847,-30.678]]}],"e":[{"i":[[0.686,0.45],[0.682,-0.084],[-2.248,-2.73],[-1.144,-1.604],[-1.188,0.632],[1.53,1.593],[0.988,0.787]],"o":[[-0.714,-0.469],[-0.189,0.125],[0.757,0.919],[1.041,1.459],[2.42,-1.288],[-1.892,-1.97],[-0.645,-0.514]],"v":[[112.942,-14.779],[109.611,-16.581],[113.756,-12.021],[117.603,-6.987],[123.001,-0.703],[118.622,-9.748],[115.56,-12.762]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[0.686,0.45],[0.682,-0.084],[-2.248,-2.73],[-1.144,-1.604],[-1.188,0.632],[1.53,1.593],[0.988,0.787]],"o":[[-0.714,-0.469],[-0.189,0.125],[0.757,0.919],[1.041,1.459],[2.42,-1.288],[-1.892,-1.97],[-0.645,-0.514]],"v":[[112.942,-14.779],[109.611,-16.581],[113.756,-12.021],[117.603,-6.987],[123.001,-0.703],[118.622,-9.748],[115.56,-12.762]]}],"e":[{"i":[[0.206,0.258],[0.198,0.069],[-0.246,-1.05],[-0.096,-0.593],[-0.41,0.012],[0.203,0.642],[0.164,0.349]],"o":[[-0.163,-0.204],[-0.069,0.009],[0.083,0.354],[0.087,0.539],[0.836,-0.025],[-0.251,-0.794],[-0.107,-0.228]],"v":[[131.599,4.25],[130.931,3.307],[131.57,5.472],[131.941,7.283],[132.512,8.724],[132.645,6.904],[132.163,5.513]]}]},{"t":58}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[43.143,54.45]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 42"}],"bounds":{"l":78,"t":18,"b":64,"r":177},"ip":48,"op":57,"st":30},{"ddd":0,"ind":5,"ty":4,"nm":"manchaVioleta 4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[0.073,0.543],[-0.073,-0.543]],"o":[[-0.073,-0.543],[0.073,0.543]],"v":[[-26.782,116.956],[-27.623,117.07]]}],"e":[{"i":[[-0.641,1.637],[0.641,-1.637]],"o":[[0.641,-1.637],[-0.641,1.637]],"v":[[-38.343,78.999],[-40.881,78.005]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-0.641,1.637],[0.641,-1.637]],"o":[[0.641,-1.637],[-0.641,1.637]],"v":[[-38.343,78.999],[-40.881,78.005]]}],"e":[{"i":[[-1.199,1.223],[1.199,-1.223]],"o":[[1.199,-1.223],[-1.199,1.223]],"v":[[-34.752,51.8],[-36.648,49.94]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-1.199,1.223],[1.199,-1.223]],"o":[[1.199,-1.223],[-1.199,1.223]],"v":[[-34.752,51.8],[-36.648,49.94]]}],"e":[{"i":[[-1.758,0.809],[1.758,-0.809]],"o":[[1.758,-0.809],[-1.758,0.809]],"v":[[-23.661,26.601],[-24.916,23.876]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-1.758,0.809],[1.758,-0.809]],"o":[[1.758,-0.809],[-1.758,0.809]],"v":[[-23.661,26.601],[-24.916,23.876]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[2.5,4],[2.5,1]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37.625,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[2.5,4],[2.5,1]]}],"e":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[6.166,3.488],[6.663,0.53]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40.25,"s":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[6.166,3.488],[6.663,0.53]]}],"e":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[15.666,-2.262],[16.163,-5.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-1.908,-0.321],[1.908,0.321]],"o":[[1.908,0.321],[-1.908,-0.321]],"v":[[15.666,-2.262],[16.163,-5.22]]}],"e":[{"i":[[-0.996,-0.491],[0.996,0.491]],"o":[[0.996,0.491],[-0.996,-0.491]],"v":[[29.146,-4.802],[29.924,-6.497]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[-0.996,-0.491],[0.996,0.491]],"o":[[0.996,0.491],[-0.996,-0.491]],"v":[[29.146,-4.802],[29.924,-6.497]]}],"e":[{"i":[[-0.321,-0.065],[0.321,0.065]],"o":[[0.321,0.065],[-0.321,-0.065]],"v":[[32.744,-7.101],[32.837,-7.643]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[51.44,28.046]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 23"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-0.364,-0.411],[-0.863,-0.6],[0.451,0.313],[0.649,0.733]],"o":[[0.694,0.784],[0.448,0.311],[-0.807,-0.56],[-0.361,-0.408]],"v":[[-13.365,111.317],[-11.054,113.492],[-10.539,112.816],[-12.696,110.795]]}],"e":[{"i":[[-0.38,-1.722],[-1.486,-3.029],[0.776,1.581],[0.677,3.068]],"o":[[0.725,3.282],[0.772,1.574],[-1.389,-2.831],[-0.377,-1.707]],"v":[[-27.238,79.192],[-24.146,88.9],[-21.649,87.808],[-24.545,78.769]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-0.38,-1.722],[-1.486,-3.029],[0.776,1.581],[0.677,3.068]],"o":[[0.725,3.282],[0.772,1.574],[-1.389,-2.831],[-0.377,-1.707]],"v":[[-27.238,79.192],[-24.146,88.9],[-21.649,87.808],[-24.545,78.769]]}],"e":[{"i":[[0.316,-1.689],[-0.177,-3.283],[0.092,1.714],[-0.563,3.009]],"o":[[-0.602,3.219],[0.092,1.706],[-0.165,-3.068],[0.313,-1.674]],"v":[[-26.669,50.581],[-27.601,60.466],[-24.945,60.439],[-24.094,51.23]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[0.316,-1.689],[-0.177,-3.283],[0.092,1.714],[-0.563,3.009]],"o":[[-0.602,3.219],[0.092,1.706],[-0.165,-3.068],[0.313,-1.674]],"v":[[-26.669,50.581],[-27.601,60.466],[-24.945,60.439],[-24.094,51.23]]}],"e":[{"i":[[1.012,-1.656],[1.132,-3.537],[-0.591,1.846],[-1.804,2.95]],"o":[[-1.93,3.157],[-0.588,1.838],[1.058,-3.306],[1.003,-1.641]],"v":[[-18.601,23.971],[-23.556,34.031],[-20.741,35.07],[-16.142,25.69]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[1.012,-1.656],[1.132,-3.537],[-0.591,1.846],[-1.804,2.95]],"o":[[-1.93,3.157],[-0.588,1.838],[1.058,-3.306],[1.003,-1.641]],"v":[[-18.601,23.971],[-23.556,34.031],[-20.741,35.07],[-16.142,25.69]]}],"e":[{"i":[[1.612,-1.081],[2.508,-2.739],[-1.309,1.43],[-2.872,1.926]],"o":[[-3.073,2.06],[-1.303,1.423],[2.344,-2.56],[1.598,-1.071]],"v":[[5.95,-2.268],[-2.759,4.798],[-0.637,6.919],[7.464,0.323]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37.625,"s":[{"i":[[1.612,-1.081],[2.508,-2.739],[-1.309,1.43],[-2.872,1.926]],"o":[[-3.073,2.06],[-1.303,1.423],[2.344,-2.56],[1.598,-1.071]],"v":[[5.95,-2.268],[-2.759,4.798],[-0.637,6.919],[7.464,0.323]]}],"e":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[9.434,-4.313],[-0.325,1.212],[1.417,3.655],[10.498,-1.508]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40.25,"s":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[9.434,-4.313],[-0.325,1.212],[1.417,3.655],[10.498,-1.508]]}],"e":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[18.934,-10.063],[9.175,-4.538],[10.917,-2.095],[19.998,-7.258]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[1.769,-0.799],[2.927,-2.286],[-1.528,1.193],[-3.152,1.423]],"o":[[-3.372,1.523],[-1.521,1.188],[2.736,-2.136],[1.753,-0.792]],"v":[[18.934,-10.063],[9.175,-4.538],[10.917,-2.095],[19.998,-7.258]]}],"e":[{"i":[[1.11,-0.202],[2.001,-0.912],[-1.045,0.476],[-1.977,0.359]],"o":[[-2.116,0.385],[-1.04,0.474],[1.87,-0.852],[1.1,-0.2]],"v":[[36.534,-14.184],[30.22,-12.4],[30.762,-10.663],[36.641,-12.336]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[1.11,-0.202],[2.001,-0.912],[-1.045,0.476],[-1.977,0.359]],"o":[[-2.116,0.385],[-1.04,0.474],[1.87,-0.852],[1.1,-0.2]],"v":[[36.534,-14.184],[30.22,-12.4],[30.762,-10.663],[36.641,-12.336]]}],"e":[{"i":[[0.301,-0.141],[0.501,-0.411],[-0.262,0.215],[-0.536,0.252]],"o":[[-0.574,0.269],[-0.26,0.214],[0.468,-0.384],[0.298,-0.14]],"v":[[43.729,-15.192],[42.066,-14.206],[42.351,-13.753],[43.9,-14.673]]}]},{"t":48}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[38.888,36.167]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 24"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-2.729,3.529],[-5.028,2.092],[-4.621,1.308],[-3.07,2.517],[-5.883,1.794],[3.817,4.573],[0.175,1.051],[-2.231,-11.059],[4.838,-1.388],[3.92,-1.059],[4.073,-3.027],[-8.112,-8.847]],"o":[[3.317,-4.291],[2.826,-1.176],[2.931,-0.829],[3.407,-2.794],[4.617,-7.206],[-3.817,-4.573],[-2.618,-15.688],[0.66,3.273],[-5.662,3.612],[-5.098,1.377],[-8.177,-8.027],[3.046,3.854]],"v":[[-4.974,101.9],[-7.719,87.088],[0.275,91.082],[4.89,81.223],[16.68,83.135],[6.364,66.752],[2.165,57.867],[-7.721,56.238],[-6.541,70.317],[-23.105,69.052],[-21.526,83.706],[-20.591,95.026]]}],"e":[{"i":[[-2.729,3.529],[-5.028,2.092],[-4.621,1.308],[-3.07,2.517],[7.117,6.794],[-1.43,6.861],[1.013,-0.33],[4.019,-6.809],[4.433,0.578],[4.402,8.377],[1.995,0.804],[-23.835,-34.037]],"o":[[3.317,-4.291],[2.826,-1.176],[2.931,-0.829],[3.407,-2.794],[-10.633,-18.456],[1.683,-8.073],[-3.477,1.133],[-5.481,9.287],[-4.016,-0.433],[-2.338,-4.448],[-6.177,-0.527],[3.046,3.854]],"v":[[-7.974,100.9],[-12.219,81.588],[-0.225,89.082],[4.39,79.223],[10.43,72.135],[0.364,34.002],[-2.585,29.117],[-9.721,43.238],[-17.541,36.317],[-28.605,36.052],[-32.026,25.956],[-21.591,94.276]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-2.729,3.529],[-5.028,2.092],[-4.621,1.308],[-3.07,2.517],[7.117,6.794],[-1.43,6.861],[1.013,-0.33],[4.019,-6.809],[4.433,0.578],[4.402,8.377],[1.995,0.804],[-23.835,-34.037]],"o":[[3.317,-4.291],[2.826,-1.176],[2.931,-0.829],[3.407,-2.794],[-10.633,-18.456],[1.683,-8.073],[-3.477,1.133],[-5.481,9.287],[-4.016,-0.433],[-2.338,-4.448],[-6.177,-0.527],[3.046,3.854]],"v":[[-7.974,100.9],[-12.219,81.588],[-0.225,89.082],[4.39,79.223],[10.43,72.135],[0.364,34.002],[-2.585,29.117],[-9.721,43.238],[-17.541,36.317],[-28.605,36.052],[-32.026,25.956],[-21.591,94.276]]}],"e":[{"i":[[-1.804,4.53],[-5.119,0.982],[-4.585,0.326],[-3.279,0.847],[3.381,7.771],[-1.767,5.867],[2.422,-2.045],[1.372,1.916],[6.953,-2.23],[0.065,6.884],[1.713,1.142],[-20.311,-37.998]],"o":[[2,-4.784],[2.877,-0.552],[2.908,-0.206],[4.713,-2.923],[-5.536,-23.145],[0.79,-3.327],[-2.859,1.957],[-1.854,-0.43],[-5.03,2.1],[-0.033,-3.658],[-6.027,-2.529],[4.689,9.502]],"v":[[-18.354,83.439],[-18.193,66.84],[-8.557,77.969],[-3.75,64.519],[7.166,63.324],[5.11,21.54],[0.086,18.76],[-7.849,27.557],[-16.291,21.314],[-21.144,17.77],[-23.889,7.908],[-29.642,77.177]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-1.804,4.53],[-5.119,0.982],[-4.585,0.326],[-3.279,0.847],[3.381,7.771],[-1.767,5.867],[2.422,-2.045],[1.372,1.916],[6.953,-2.23],[0.065,6.884],[1.713,1.142],[-20.311,-37.998]],"o":[[2,-4.784],[2.877,-0.552],[2.908,-0.206],[4.713,-2.923],[-5.536,-23.145],[0.79,-3.327],[-2.859,1.957],[-1.854,-0.43],[-5.03,2.1],[-0.033,-3.658],[-6.027,-2.529],[4.689,9.502]],"v":[[-18.354,83.439],[-18.193,66.84],[-8.557,77.969],[-3.75,64.519],[7.166,63.324],[5.11,21.54],[0.086,18.76],[-7.849,27.557],[-16.291,21.314],[-21.144,17.77],[-23.889,7.908],[-29.642,77.177]]}],"e":[{"i":[[-1.341,5.03],[-5.165,0.427],[-4.568,-0.165],[-3.383,0.012],[1.513,8.26],[-1.936,5.37],[3.126,-2.903],[0.048,6.279],[8.213,-3.633],[-2.104,6.137],[1.572,1.311],[-9.036,-51.198]],"o":[[1.341,-5.03],[2.903,-0.24],[2.897,0.105],[5.367,-2.988],[-2.987,-25.49],[0.344,-0.954],[-2.55,2.369],[-0.041,-5.288],[-5.537,3.367],[1.119,-3.263],[-5.952,-3.53],[2.378,13.476]],"v":[[-23.544,74.709],[-21.18,59.466],[-12.723,72.413],[-7.82,57.167],[5.534,58.919],[7.483,15.309],[1.421,13.582],[-6.912,19.717],[-15.666,13.812],[-17.414,8.629],[-19.821,-1.115],[-33.667,68.627]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-1.341,5.03],[-5.165,0.427],[-4.568,-0.165],[-3.383,0.012],[1.513,8.26],[-1.936,5.37],[3.126,-2.903],[0.048,6.279],[8.213,-3.633],[-2.104,6.137],[1.572,1.311],[-9.036,-51.198]],"o":[[1.341,-5.03],[2.903,-0.24],[2.897,0.105],[5.367,-2.988],[-2.987,-25.49],[0.344,-0.954],[-2.55,2.369],[-0.041,-5.288],[-5.537,3.367],[1.119,-3.263],[-5.952,-3.53],[2.378,13.476]],"v":[[-23.544,74.709],[-21.18,59.466],[-12.723,72.413],[-7.82,57.167],[5.534,58.919],[7.483,15.309],[1.421,13.582],[-6.912,19.717],[-15.666,13.812],[-17.414,8.629],[-19.821,-1.115],[-33.667,68.627]]}],"e":[{"i":[[-2.619,2.645],[-4.174,-0.061],[-4.536,-1.038],[-2.27,2.939],[3.359,8.768],[-9.385,4.734],[1.249,-0.132],[-2.416,3.736],[3.984,1.947],[-5.949,4.814],[1.322,1.612],[-4.135,-41.508]],"o":[[6.123,-2.917],[2.97,0.053],[2.877,0.658],[2.929,-4.005],[0.113,-21.129],[0.923,-0.466],[-3.379,-0.392],[5.406,-7.558],[-3.438,-1.688],[3.167,-2.561],[-5.819,-5.309],[0.879,5.704]],"v":[[-28.326,60.374],[-22.045,47.542],[-16.277,63.275],[-9.944,53.06],[2.688,51.411],[13.182,9.195],[11.943,7.042],[1.049,8.075],[-6.407,-0.561],[-6.337,-6.437],[-4.811,-13.38],[-36.379,54.613]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[-2.619,2.645],[-4.174,-0.061],[-4.536,-1.038],[-2.27,2.939],[3.359,8.768],[-9.385,4.734],[1.249,-0.132],[-2.416,3.736],[3.984,1.947],[-5.949,4.814],[1.322,1.612],[-4.135,-41.508]],"o":[[6.123,-2.917],[2.97,0.053],[2.877,0.658],[2.929,-4.005],[0.113,-21.129],[0.923,-0.466],[-3.379,-0.392],[5.406,-7.558],[-3.438,-1.688],[3.167,-2.561],[-5.819,-5.309],[0.879,5.704]],"v":[[-28.326,60.374],[-22.045,47.542],[-16.277,63.275],[-9.944,53.06],[2.688,51.411],[13.182,9.195],[11.943,7.042],[1.049,8.075],[-6.407,-0.561],[-6.337,-6.437],[-4.811,-13.38],[-36.379,54.613]]}],"e":[{"i":[[-4.697,-6.459],[-5.303,-1.239],[-4.514,-1.638],[-1.942,3.463],[-7.091,1.227],[1.446,4.063],[0.71,0.794],[-4.073,5.463],[3.26,3.058],[-8.593,3.904],[1.149,1.818],[0.54,-41.549]],"o":[[3.19,4.386],[2.98,0.696],[2.863,1.039],[2.468,-4.4],[0.909,-44.773],[-0.357,-1.004],[-4.13,-4.617],[8.4,-11.267],[-3.007,-2.698],[4.575,-2.078],[-5.728,-6.532],[0.221,4.908]],"v":[[-31.614,50.519],[-22.64,39.344],[-18.721,56.244],[-10.53,43.612],[2.388,50.202],[18.351,4.366],[17.927,2.046],[5.897,-0.304],[-1.291,-9.693],[1.277,-16.795],[4.384,-22.687],[-38.243,44.978]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-4.697,-6.459],[-5.303,-1.239],[-4.514,-1.638],[-1.942,3.463],[-7.091,1.227],[1.446,4.063],[0.71,0.794],[-4.073,5.463],[3.26,3.058],[-8.593,3.904],[1.149,1.818],[0.54,-41.549]],"o":[[3.19,4.386],[2.98,0.696],[2.863,1.039],[2.468,-4.4],[0.909,-44.773],[-0.357,-1.004],[-4.13,-4.617],[8.4,-11.267],[-3.007,-2.698],[4.575,-2.078],[-5.728,-6.532],[0.221,4.908]],"v":[[-31.614,50.519],[-22.64,39.344],[-18.721,56.244],[-10.53,43.612],[2.388,50.202],[18.351,4.366],[17.927,2.046],[5.897,-0.304],[-1.291,-9.693],[1.277,-16.795],[4.384,-22.687],[-38.243,44.978]]}],"e":[{"i":[[-2.375,-7.625],[-4.625,-2.875],[-3.75,-3],[-2.951,2.656],[-0.25,10.133],[-4.643,1.569],[0.858,0.632],[-3.658,5.749],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[11.384,-35.156]],"o":[[1.613,5.178],[2.599,1.616],[2.378,1.903],[3.75,-3.375],[0.75,-16.117],[1.01,-0.341],[-2.943,-2.171],[5.522,-8.677],[-1.982,-3.52],[5,-0.5],[-3.328,-8.025],[-1.366,4.719]],"v":[[-28.203,20.554],[-19.953,21.054],[-18.953,33.429],[-10.953,27.554],[0.297,33.046],[31.54,-3.179],[31.883,-5.512],[28.547,-17.571],[19.191,-23.264],[27.547,-30.571],[32.38,-35.154],[-32.703,13.179]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37.625,"s":[{"i":[[-2.375,-7.625],[-4.625,-2.875],[-3.75,-3],[-2.951,2.656],[-0.25,10.133],[-4.643,1.569],[0.858,0.632],[-3.658,5.749],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[11.384,-35.156]],"o":[[1.613,5.178],[2.599,1.616],[2.378,1.903],[3.75,-3.375],[0.75,-16.117],[1.01,-0.341],[-2.943,-2.171],[5.522,-8.677],[-1.982,-3.52],[5,-0.5],[-3.328,-8.025],[-1.366,4.719]],"v":[[-28.203,20.554],[-19.953,21.054],[-18.953,33.429],[-10.953,27.554],[0.297,33.046],[31.54,-3.179],[31.883,-5.512],[28.547,-17.571],[19.191,-23.264],[27.547,-30.571],[32.38,-35.154],[-32.703,13.179]]}],"e":[{"i":[[-5,2.875],[-4.625,-2.875],[-3.75,-3],[-3.958,-0.312],[-6,-2.117],[-4.643,1.569],[0.858,0.632],[-1.771,6.58],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[7,-6.75]],"o":[[3.401,-1.956],[2.599,1.616],[2.378,1.903],[4.75,0.375],[15,-14.117],[1.01,-0.341],[-2.943,-2.171],[1.75,-6.5],[-1.982,-3.52],[5,-0.5],[-31.583,2.583],[-12,13.25]],"v":[[-27.703,16.054],[-10.953,6.554],[-13.953,16.429],[-1.453,11.554],[-0.703,23.546],[38.54,-4.679],[38.883,-7.012],[35.547,-19.571],[26.191,-24.764],[34.547,-32.071],[39.38,-36.654],[-23.703,-5.321]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40.25,"s":[{"i":[[-5,2.875],[-4.625,-2.875],[-3.75,-3],[-3.958,-0.312],[-6,-2.117],[-4.643,1.569],[0.858,0.632],[-1.771,6.58],[2.106,3.943],[-9.391,0.939],[0.505,2.091],[7,-6.75]],"o":[[3.401,-1.956],[2.599,1.616],[2.378,1.903],[4.75,0.375],[15,-14.117],[1.01,-0.341],[-2.943,-2.171],[1.75,-6.5],[-1.982,-3.52],[5,-0.5],[-31.583,2.583],[-12,13.25]],"v":[[-27.703,16.054],[-10.953,6.554],[-13.953,16.429],[-1.453,11.554],[-0.703,23.546],[38.54,-4.679],[38.883,-7.012],[35.547,-19.571],[26.191,-24.764],[34.547,-32.071],[39.38,-36.654],[-23.703,-5.321]]}],"e":[{"i":[[-4,-0.292],[-5.595,-2.985],[-4.583,-3.5],[-3.383,-2.078],[-6,-2.117],[-10.043,1.262],[0.858,0.632],[-1.771,6.58],[-2.369,7.019],[-3.13,1.48],[0.946,4.586],[5.167,-4.75]],"o":[[5.25,0.125],[2.366,1.289],[2.526,1.934],[2.917,1.792],[8.833,-13.45],[3.104,-0.354],[-2.943,-2.171],[1.75,-6.5],[2.41,-6.878],[1.667,-3.517],[-20.75,-3.917],[-7.167,7.583]],"v":[[-18.703,0.054],[-13.62,8.054],[-4.953,2.596],[-3.12,16.387],[8.464,14.629],[43.623,-5.179],[42.716,-9.512],[48.88,-18.071],[39.358,-24.431],[38.214,-30.904],[44.38,-35.654],[-12.036,-14.154]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[-4,-0.292],[-5.595,-2.985],[-4.583,-3.5],[-3.383,-2.078],[-6,-2.117],[-10.043,1.262],[0.858,0.632],[-1.771,6.58],[-2.369,7.019],[-3.13,1.48],[0.946,4.586],[5.167,-4.75]],"o":[[5.25,0.125],[2.366,1.289],[2.526,1.934],[2.917,1.792],[8.833,-13.45],[3.104,-0.354],[-2.943,-2.171],[1.75,-6.5],[2.41,-6.878],[1.667,-3.517],[-20.75,-3.917],[-7.167,7.583]],"v":[[-18.703,0.054],[-13.62,8.054],[-4.953,2.596],[-3.12,16.387],[8.464,14.629],[43.623,-5.179],[42.716,-9.512],[48.88,-18.071],[39.358,-24.431],[38.214,-30.904],[44.38,-35.654],[-12.036,-14.154]]}],"e":[{"i":[[-3.5,-1.875],[-6.08,-3.04],[-5,-3.75],[-3.958,-0.312],[-3.5,2.633],[-15.993,-0.142],[0.858,0.632],[-1.771,6.58],[-4.606,8.557],[0,1.75],[1.167,5.833],[4.25,-3.75]],"o":[[3.683,1.973],[2.25,1.125],[2.6,1.95],[4.75,0.375],[7.25,-6.617],[4.166,0.037],[-2.943,-2.171],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-15.333,-7.167],[-4.75,4.75]],"v":[[-14.203,-7.946],[-10.453,3.554],[-0.453,-4.321],[-1.703,15.054],[11.547,11.296],[45.04,-4.929],[44.633,-10.762],[55.547,-17.321],[45.941,-24.264],[40.047,-30.321],[46.88,-35.154],[-6.203,-18.571]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[-3.5,-1.875],[-6.08,-3.04],[-5,-3.75],[-3.958,-0.312],[-3.5,2.633],[-15.993,-0.142],[0.858,0.632],[-1.771,6.58],[-4.606,8.557],[0,1.75],[1.167,5.833],[4.25,-3.75]],"o":[[3.683,1.973],[2.25,1.125],[2.6,1.95],[4.75,0.375],[7.25,-6.617],[4.166,0.037],[-2.943,-2.171],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-15.333,-7.167],[-4.75,4.75]],"v":[[-14.203,-7.946],[-10.453,3.554],[-0.453,-4.321],[-1.703,15.054],[11.547,11.296],[45.04,-4.929],[44.633,-10.762],[55.547,-17.321],[45.941,-24.264],[40.047,-30.321],[46.88,-35.154],[-6.203,-18.571]]}],"e":[{"i":[[-2.99,-2.399],[-4.636,-2.652],[-5,-3.75],[-3.243,-1.386],[-3.167,2.133],[-8.826,0.691],[0.755,0.726],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.75,4.75],[4.667,-1.75]],"o":[[3.288,2.774],[2.171,1.469],[2.6,1.95],[4,1.875],[4.453,-2.999],[4.142,-0.044],[-3.324,-3.717],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-10.083,-5.834],[-6.458,2.422]],"v":[[-6.12,-18.029],[-2.453,-3.613],[9.38,-9.988],[10.047,9.304],[25.964,-0.204],[45.373,-5.512],[44.633,-10.762],[55.297,-16.738],[45.608,-23.847],[40.38,-30.321],[47.297,-34.821],[13.38,-32.571]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[-2.99,-2.399],[-4.636,-2.652],[-5,-3.75],[-3.243,-1.386],[-3.167,2.133],[-8.826,0.691],[0.755,0.726],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.75,4.75],[4.667,-1.75]],"o":[[3.288,2.774],[2.171,1.469],[2.6,1.95],[4,1.875],[4.453,-2.999],[4.142,-0.044],[-3.324,-3.717],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-10.083,-5.834],[-6.458,2.422]],"v":[[-6.12,-18.029],[-2.453,-3.613],[9.38,-9.988],[10.047,9.304],[25.964,-0.204],[45.373,-5.512],[44.633,-10.762],[55.297,-16.738],[45.608,-23.847],[40.38,-30.321],[47.297,-34.821],[13.38,-32.571]]}],"e":[{"i":[[-2.48,-2.923],[-3.193,-2.263],[-5,-3.75],[-2.527,-2.459],[-3.083,1.133],[-4.91,0.275],[0.652,0.82],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.334,3.666],[4.458,-0.875]],"o":[[2.894,3.574],[2.092,1.813],[2.6,1.95],[3.25,3.375],[5.961,-2.19],[4.133,0.273],[-3.705,-5.263],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-4.833,-4.5],[-4.539,0.891]],"v":[[5.214,-25.363],[5.547,-10.779],[19.214,-15.654],[17.547,-0.696],[28.38,-1.204],[43.957,-5.596],[44.633,-10.762],[55.047,-16.154],[45.274,-23.431],[40.714,-30.321],[47.713,-34.487],[23.089,-35.196]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[-2.48,-2.923],[-3.193,-2.263],[-5,-3.75],[-2.527,-2.459],[-3.083,1.133],[-4.91,0.275],[0.652,0.82],[-1.771,6.58],[-4.606,8.557],[0,1.75],[0.334,3.666],[4.458,-0.875]],"o":[[2.894,3.574],[2.092,1.813],[2.6,1.95],[3.25,3.375],[5.961,-2.19],[4.133,0.273],[-3.705,-5.263],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[-4.833,-4.5],[-4.539,0.891]],"v":[[5.214,-25.363],[5.547,-10.779],[19.214,-15.654],[17.547,-0.696],[28.38,-1.204],[43.957,-5.596],[44.633,-10.762],[55.047,-16.154],[45.274,-23.431],[40.714,-30.321],[47.713,-34.487],[23.089,-35.196]]}],"e":[{"i":[[-1.97,-3.447],[-1.75,-1.875],[-5,-3.75],[-1.812,-3.533],[-6.5,1.883],[-0.993,-0.142],[0.548,0.914],[-1.771,6.58],[-4.606,8.557],[0,1.75],[-0.083,2.583],[3.082,-0.257]],"o":[[2.5,4.375],[2.013,2.157],[2.6,1.95],[2.5,4.875],[2.75,-1.117],[4.125,0.59],[-4.086,-6.809],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[0.417,-3.167],[-3,0.25]],"v":[[19.047,-29.196],[13.547,-17.946],[29.047,-21.321],[24.547,-6.946],[34.547,-3.704],[42.29,-4.179],[45.633,-8.262],[54.797,-15.571],[44.941,-23.014],[41.047,-30.321],[48.13,-34.154],[35.297,-35.071]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[-1.97,-3.447],[-1.75,-1.875],[-5,-3.75],[-1.812,-3.533],[-6.5,1.883],[-0.993,-0.142],[0.548,0.914],[-1.771,6.58],[-4.606,8.557],[0,1.75],[-0.083,2.583],[3.082,-0.257]],"o":[[2.5,4.375],[2.013,2.157],[2.6,1.95],[2.5,4.875],[2.75,-1.117],[4.125,0.59],[-4.086,-6.809],[1.75,-6.5],[4.606,-8.557],[0,-5.025],[0.417,-3.167],[-3,0.25]],"v":[[19.047,-29.196],[13.547,-17.946],[29.047,-21.321],[24.547,-6.946],[34.547,-3.704],[42.29,-4.179],[45.633,-8.262],[54.797,-15.571],[44.941,-23.014],[41.047,-30.321],[48.13,-34.154],[35.297,-35.071]]}],"e":[{"i":[[2.033,-1.245],[-3.047,0.115],[2.742,-5.603],[3.975,-1.844],[-4.469,1.133],[-1.438,0.209],[-0.097,2.393],[1.974,6.961],[-6.634,7.077],[0,1.75],[-0.083,2.583],[1.55,-0.318]],"o":[[-4.146,2.363],[5.083,-0.245],[-3.067,5.955],[-5.124,2.306],[2.75,-1.117],[4.025,-0.585],[-3.097,-3.607],[-1.837,-6.476],[5.317,-5.711],[0,-5.025],[0.417,-2.218],[-1.537,0.325]],"v":[[35.547,-34.176],[35.264,-28.411],[43.799,-24.328],[39.876,-10.367],[33.409,-3.5],[42.735,-4.78],[51.644,-6.214],[54.323,-16.282],[46.127,-23.251],[42.707,-30.795],[48.604,-34.154],[42.518,-35.339]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[2.033,-1.245],[-3.047,0.115],[2.742,-5.603],[3.975,-1.844],[-4.469,1.133],[-1.438,0.209],[-0.097,2.393],[1.974,6.961],[-6.634,7.077],[0,1.75],[-0.083,2.583],[1.55,-0.318]],"o":[[-4.146,2.363],[5.083,-0.245],[-3.067,5.955],[-5.124,2.306],[2.75,-1.117],[4.025,-0.585],[-3.097,-3.607],[-1.837,-6.476],[5.317,-5.711],[0,-5.025],[0.417,-2.218],[-1.537,0.325]],"v":[[35.547,-34.176],[35.264,-28.411],[43.799,-24.328],[39.876,-10.367],[33.409,-3.5],[42.735,-4.78],[51.644,-6.214],[54.323,-16.282],[46.127,-23.251],[42.707,-30.795],[48.604,-34.154],[42.518,-35.339]]}],"e":[{"i":[[2.25,-1.125],[-3.117,0.223],[5,-6.75],[4.548,-0.947],[10,-1.867],[-0.994,-0.134],[0.094,1.062],[-1.771,6.58],[-6.744,6.997],[0,1.75],[-0.083,2.583],[1.471,-0.294]],"o":[[-4.507,2.253],[5.25,-0.375],[-4.193,5.661],[-9,1.875],[2.75,-1.117],[4.507,0.608],[-0.336,-3.809],[1.75,-6.5],[5.356,-5.557],[0,-5.025],[0.417,-2.167],[-1.25,0.25]],"v":[[39.047,-34.446],[39.047,-29.196],[43.297,-22.321],[47.297,-15.946],[38.547,-4.704],[45.04,-5.179],[46.133,-12.262],[54.297,-16.321],[46.191,-23.264],[42.797,-30.821],[48.63,-34.154],[45.297,-35.571]]}]},{"t":49}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[43.143,54.45]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 42"}],"bounds":{"l":4,"t":17,"b":158,"r":99},"ip":27,"op":48,"st":30},{"ddd":0,"ind":6,"ty":4,"nm":"gotaAzul6","ks":{"o":{"k":100},"r":{"k":31},"p":{"k":[183.127,209.898,0]},"a":{"k":[158.567,64.402,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[1.003,0.154],[0.214,-1.36]],"o":[[-0.997,-0.153],[-0.253,1.604]],"v":[[-2.788,7.056],[-3.283,9.049]]}],"e":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}],"e":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}],"e":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}],"e":[{"i":[[-0.497,-1.653],[-0.831,1.097]],"o":[[0.378,1.257],[1.247,-1.646]],"v":[[12.462,-17.444],[10.967,-16.951]]}]},{"t":26}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[157.994,65.167]},"a":{"k":[-3.231,8.941]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":157,"t":37,"b":66,"r":174},"ip":18,"op":26,"st":18},{"ddd":0,"ind":7,"ty":4,"nm":"gotaAzul5","ks":{"o":{"k":100},"r":{"k":-70},"p":{"k":[139.627,239.523,0]},"a":{"k":[56.817,156.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.455,1.024],[1.726,1.678]],"o":[[0.512,-1.151],[-2.036,-1.978]],"v":[[5.199,5.726],[5.515,5.777]]}],"e":[{"i":[[-2.293,2.922],[1.93,1.438]],"o":[[2.097,-2.672],[-2.276,-1.696]],"v":[[-11.662,-7.638],[-4.972,-0.799]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-2.293,2.922],[1.93,1.438]],"o":[[2.097,-2.672],[-2.276,-1.696]],"v":[[-11.662,-7.638],[-4.972,-0.799]]}],"e":[{"i":[[-1.353,3.459],[1.447,1.924]],"o":[[1.514,-3.869],[-3.509,-4.665]],"v":[[-19.908,-11.288],[-8.283,-3.318]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.353,3.459],[1.447,1.924]],"o":[[1.514,-3.869],[-3.509,-4.665]],"v":[[-19.908,-11.288],[-8.283,-3.318]]}],"e":[{"i":[[-1.353,3.459],[1.719,1.686]],"o":[[1.514,-3.869],[-3.231,-3.169]],"v":[[-27.512,-11.713],[-19.413,-8.313]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-1.353,3.459],[1.719,1.686]],"o":[[1.514,-3.869],[-3.231,-3.169]],"v":[[-27.512,-11.713],[-19.413,-8.313]]}],"e":[{"i":[[-0.085,1.237],[1.719,1.686]],"o":[[0.019,-0.664],[-3.231,-3.169]],"v":[[-27.512,-11.713],[-23.664,-10.49]]}]},{"t":27}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[54.06,153.332]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 15"}],"bounds":{"l":26,"t":140,"b":160,"r":61},"ip":20,"op":27,"st":17},{"ddd":0,"ind":8,"ty":4,"nm":"gotaAzul4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.127,209.523,0]},"a":{"k":[67.317,146.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.429,2.405],[-0.331,-0.254]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[3.433,3.647],[5.682,3.801]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-13.817,-1.853],[-3.568,0.051]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-13.817,-1.853],[-3.568,0.051]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-16.317,-0.853],[-13.568,-0.699]]}]},{"t":27}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[67.589,144.582]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 17"}],"bounds":{"l":51,"t":142,"b":150,"r":74},"ip":21,"op":27,"st":21},{"ddd":0,"ind":9,"ty":4,"nm":"gotaGris11","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[58.377,211.773,0]},"a":{"k":[3.817,119.62,0]},"s":{"k":[100,130.464,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[{"i":[[-0.762,1.413],[-1.792,-0.578],[0.899,0.325]],"o":[[0.302,-0.274],[1.809,0.583],[-0.994,-0.359]],"v":[[7.946,5.219],[12.12,6.109],[14.547,6.943]]}],"e":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}],"e":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}],"e":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}],"e":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":35,"s":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}],"e":[{"i":[[-1.397,-0.501],[-0.564,0.972],[0.066,0.244]],"o":[[0.824,0.436],[0.547,-0.943],[-0.171,-0.337]],"v":[[-18.646,8.639],[-16.619,7.144],[-15.154,5.285]]}]},{"t":37}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[4.887,119.15]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 14"}],"bounds":{"l":-15,"t":117,"b":128,"r":20},"ip":29,"op":37,"st":27},{"ddd":0,"ind":10,"ty":4,"nm":"gotaGris10","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[34.127,147.898,0]},"a":{"k":[15.817,113.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[-1.026,0.465],[0.227,0.414]],"o":[[0.843,-0.314],[0.102,-0.086]],"v":[[43.432,35.82],[44.173,38.592]]}],"e":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}],"e":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}],"e":[{"i":[[-0.782,0.186],[-0.023,0.914]],"o":[[1.256,-0.074],[-0.023,-0.461]],"v":[[42.182,12.82],[42.548,14.717]]}]},{"t":34}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[15.415,113.122]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 19"}],"bounds":{"l":55,"t":125,"b":152,"r":60},"ip":28,"op":34,"st":27},{"ddd":0,"ind":11,"ty":4,"nm":"gotaGris9","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[83.377,231.773,0]},"a":{"k":[3.817,119.62,0]},"s":{"k":[100,130.464,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.762,1.413],[-1.792,-0.578],[0.899,0.325]],"o":[[0.302,-0.274],[1.809,0.583],[-0.994,-0.359]],"v":[[7.946,5.219],[12.12,6.109],[14.547,6.943]]}],"e":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-0.333,2.916],[-1.991,-1.413],[0.799,0.524]],"o":[[0.151,-1.327],[2.01,1.426],[-3.551,-2.332]],"v":[[-4.304,-1.105],[0.054,0.183],[3.047,2.727]]}],"e":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-0.268,-1.413],[-1.208,-0.056],[0.414,0.388]],"o":[[0.232,1.078],[1.292,0.04],[-1.835,-1.345]],"v":[[-11.679,-0.434],[-7.489,0.029],[-4.016,0.141]]}],"e":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28,"s":[{"i":[[-2.019,-1.369],[-2.726,1.476],[0.066,0.244]],"o":[[1.668,1.131],[1.649,-0.892],[-0.171,-0.337]],"v":[[-15.521,3.466],[-11.244,1.491],[-8.029,-0.368]]}],"e":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-2.019,-1.369],[-0.703,0.877],[0.066,0.244]],"o":[[1.668,1.131],[1.176,-1.468],[-0.171,-0.337]],"v":[[-18.021,7.777],[-15.119,5.515],[-12.154,2.315]]}],"e":[{"i":[[-1.397,-0.501],[-0.564,0.972],[0.066,0.244]],"o":[[0.824,0.436],[0.547,-0.943],[-0.171,-0.337]],"v":[[-18.646,8.639],[-16.619,7.144],[-15.154,5.285]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[4.887,119.15]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 14"}],"bounds":{"l":-15,"t":117,"b":128,"r":20},"ip":24,"op":32,"st":22},{"ddd":0,"ind":12,"ty":4,"nm":"gotaGris8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[59.127,167.898,0]},"a":{"k":[15.817,113.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.026,0.465],[0.227,0.414]],"o":[[0.843,-0.314],[0.102,-0.086]],"v":[[43.432,35.82],[44.173,38.592]]}],"e":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-4.252,0.85],[-0.109,2.807]],"o":[[3.889,-0.778],[0.227,-5.836]],"v":[[41.807,21.82],[42.298,34.592]]}],"e":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-2.032,0.311],[-0.101,2.807]],"o":[[3.92,-0.6],[0.102,-2.836]],"v":[[42.182,14.945],[42.673,23.342]]}],"e":[{"i":[[-0.782,0.186],[-0.023,0.914]],"o":[[1.256,-0.074],[-0.023,-0.461]],"v":[[42.182,12.82],[42.548,14.717]]}]},{"t":29}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[15.415,113.122]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 19"}],"bounds":{"l":55,"t":125,"b":152,"r":60},"ip":23,"op":29,"st":22},{"ddd":0,"ind":13,"ty":4,"nm":"gotaGris7","ks":{"o":{"k":100},"r":{"k":132},"p":{"k":[139.502,224.523,0]},"a":{"k":[121.017,32.043,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[1.069,-1.904],[3.166,0.708]],"o":[[-1.195,2.13],[-0.793,-0.233]],"v":[[4.681,4.064],[9.043,6.644]]}],"e":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":24,"s":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}],"e":[{"i":[[4.866,-2.442],[2.202,2.382]],"o":[[-5.725,2.873],[-4.81,-5.205]],"v":[[-7.689,-20.584],[0.328,-4.803]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":27,"s":[{"i":[[4.866,-2.442],[2.202,2.382]],"o":[[-5.725,2.873],[-4.81,-5.205]],"v":[[-7.689,-20.584],[0.328,-4.803]]}],"e":[{"i":[[5.434,-0.35],[1.661,2.786]],"o":[[-4.657,0.3],[-3.63,-6.087]],"v":[[-4.829,-30.021],[-3.11,-19.092]]}]},{"t":29}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[114.44,29.594]},"a":{"k":[0.5,3.375]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":105,"t":-4,"b":34,"r":124},"ip":21,"op":29,"st":21},{"ddd":0,"ind":14,"ty":4,"nm":"manchaGris 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-5.211,-2.443],[-0.453,-6.251],[-0.528,-2.354],[3.103,-1.266],[-0.032,-2.98],[-4.042,0.696],[-3.41,0.321],[-0.337,1.771],[-1.957,4.718],[5.745,1.311],[10.53,-8.011],[0.915,-0.19]],"o":[[6.599,3.094],[0.304,4.198],[0.653,2.911],[-4.034,1.645],[1.029,4.295],[4.84,-0.752],[3.529,-0.332],[1.041,-5.465],[0.685,-1.652],[-8.236,-1.879],[-3.303,2.513],[-4.095,1.604]],"v":[[39.5,12.601],[35.863,19.946],[39.695,23.748],[37.064,31.159],[30.638,33.848],[41.146,37.484],[47.886,36.179],[54.529,33.204],[47.774,25.947],[52.871,14.008],[41.97,6.131],[34.012,7.29]]}],"e":[{"i":[[2.964,-7.494],[4.31,-3.508],[3.348,-9.606],[9.744,-2.487],[13.916,-6.871],[-4.244,0.039],[-3.536,-0.247],[-0.64,1.806],[-2.784,4.628],[11.95,-1.524],[10.066,-3.197],[2.777,0.757]],"o":[[-2.845,7.195],[-6.408,5.216],[-2.415,6.928],[-4.376,1.117],[-3.158,6.453],[5.069,0.039],[3.659,0.256],[1.973,-5.57],[0.975,-1.62],[-3.567,0.455],[-3.45,1.096],[-10.676,0.757]],"v":[[15.913,-0.113],[21.028,10.392],[3.582,9.213],[9.015,19.694],[10.534,29.941],[28.694,34.755],[45.625,34.539],[54.976,32.549],[45.145,23.489],[48.717,11.804],[48.595,1.722],[35.643,2.594]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[2.964,-7.494],[4.31,-3.508],[3.348,-9.606],[9.744,-2.487],[13.916,-6.871],[-4.244,0.039],[-3.536,-0.247],[-0.64,1.806],[-2.784,4.628],[11.95,-1.524],[10.066,-3.197],[2.777,0.757]],"o":[[-2.845,7.195],[-6.408,5.216],[-2.415,6.928],[-4.376,1.117],[-3.158,6.453],[5.069,0.039],[3.659,0.256],[1.973,-5.57],[0.975,-1.62],[-3.567,0.455],[-3.45,1.096],[-10.676,0.757]],"v":[[15.913,-0.113],[21.028,10.392],[3.582,9.213],[9.015,19.694],[10.534,29.941],[28.694,34.755],[45.625,34.539],[54.976,32.549],[45.145,23.489],[48.717,11.804],[48.595,1.722],[35.643,2.594]]}],"e":[{"i":[[5.155,-3.047],[5.212,-0.204],[7.923,-5.23],[3.279,-4.611],[-2.202,-4.417],[-10.318,-5.268],[-2.768,-0.176],[-0.691,1.722],[-2.877,4.367],[11.377,4.579],[8.132,-1.291],[14.802,6.277]],"o":[[-3.355,2.148],[-2.82,0.409],[-4.261,2.936],[-2.32,3.649],[3.056,5.45],[10.85,5.539],[3.537,0.225],[2.132,-5.312],[1.007,-1.529],[-3.199,-1.288],[-3.976,1.043],[-14.88,-7.889]],"v":[[-5.31,-16.764],[-9.013,-4.862],[-20.995,-13.522],[-22.356,-4.954],[-24.46,2.691],[3.134,26.335],[34.322,34.239],[49.415,32.635],[43.004,23.581],[47.38,12.434],[45.898,0.64],[17.52,-2.413]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[5.155,-3.047],[5.212,-0.204],[7.923,-5.23],[3.279,-4.611],[-2.202,-4.417],[-10.318,-5.268],[-2.768,-0.176],[-0.691,1.722],[-2.877,4.367],[11.377,4.579],[8.132,-1.291],[14.802,6.277]],"o":[[-3.355,2.148],[-2.82,0.409],[-4.261,2.936],[-2.32,3.649],[3.056,5.45],[10.85,5.539],[3.537,0.225],[2.132,-5.312],[1.007,-1.529],[-3.199,-1.288],[-3.976,1.043],[-14.88,-7.889]],"v":[[-5.31,-16.764],[-9.013,-4.862],[-20.995,-13.522],[-22.356,-4.954],[-24.46,2.691],[3.134,26.335],[34.322,34.239],[49.415,32.635],[43.004,23.581],[47.38,12.434],[45.898,0.64],[17.52,-2.413]]}],"e":[{"i":[[1.93,-0.431],[3.793,-0.097],[4.362,-1.309],[1.81,-0.938],[-0.725,-3.901],[-7.148,-6.169],[-3.486,4.386],[-0.622,1.752],[-2.708,4.492],[-2.87,-0.259],[-0.086,4.254],[11.76,14.7]],"o":[[-3.682,0.822],[-2.459,0.063],[-4.898,1.47],[-3.916,2.029],[4.477,18.676],[6.44,5.728],[3.261,-4.102],[1.919,-5.406],[0.948,-1.572],[4.754,0.429],[0.167,-8.247],[-8.371,-10.128]],"v":[[-9.38,-36.675],[-17.49,-29.066],[-23.387,-35.382],[-29.175,-24.176],[-39.776,-31.817],[-16.072,11.131],[12.98,28.507],[12.009,17.783],[23.585,17.783],[19.51,6.959],[36,0.796],[8.806,-12.324]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[1.93,-0.431],[3.793,-0.097],[4.362,-1.309],[1.81,-0.938],[-0.725,-3.901],[-7.148,-6.169],[-3.486,4.386],[-0.622,1.752],[-2.708,4.492],[-2.87,-0.259],[-0.086,4.254],[11.76,14.7]],"o":[[-3.682,0.822],[-2.459,0.063],[-4.898,1.47],[-3.916,2.029],[4.477,18.676],[6.44,5.728],[3.261,-4.102],[1.919,-5.406],[0.948,-1.572],[4.754,0.429],[0.167,-8.247],[-8.371,-10.128]],"v":[[-9.38,-36.675],[-17.49,-29.066],[-23.387,-35.382],[-29.175,-24.176],[-39.776,-31.817],[-16.072,11.131],[12.98,28.507],[12.009,17.783],[23.585,17.783],[19.51,6.959],[36,0.796],[8.806,-12.324]]}],"e":[{"i":[[2.133,-0.303],[4.14,0.182],[4.846,-1.032],[2.038,-0.837],[1.695,-9.519],[-17.534,-23.237],[-4.11,4.286],[-0.802,1.77],[-0.64,5.167],[-2.315,2.076],[-0.026,4.42],[13.054,13.503]],"o":[[-4.071,0.578],[-2.684,-0.118],[-5.441,1.159],[-4.41,1.811],[1.127,6.866],[6.613,6.415],[3.844,-4.008],[2.474,-5.459],[0.615,-4.959],[2.991,-2.682],[0.035,-5.891],[-10.214,-16.896]],"v":[[-7.23,-41.334],[-16.771,-35.679],[-24.999,-42.009],[-31.496,-31.594],[-40.916,-39.385],[-19.46,6.256],[14.038,25.828],[8.311,13.463],[21.126,11.377],[16.885,4.126],[30.482,0.793],[5.963,-15.618]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[{"i":[[2.133,-0.303],[4.14,0.182],[4.846,-1.032],[2.038,-0.837],[1.695,-9.519],[-17.534,-23.237],[-4.11,4.286],[-0.802,1.77],[-0.64,5.167],[-2.315,2.076],[-0.026,4.42],[13.054,13.503]],"o":[[-4.071,0.578],[-2.684,-0.118],[-5.441,1.159],[-4.41,1.811],[1.127,6.866],[6.613,6.415],[3.844,-4.008],[2.474,-5.459],[0.615,-4.959],[2.991,-2.682],[0.035,-5.891],[-10.214,-16.896]],"v":[[-7.23,-41.334],[-16.771,-35.679],[-24.999,-42.009],[-31.496,-31.594],[-40.916,-39.385],[-19.46,6.256],[14.038,25.828],[8.311,13.463],[21.126,11.377],[16.885,4.126],[30.482,0.793],[5.963,-15.618]]}],"e":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-2.929,2.547],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[3.547,-4.237],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-33.293,-10.058],[-16.904,5.346],[-22.38,-6.869],[-8.703,-6.003],[4.699,-10.341],[-1.794,-37.741]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-2.929,2.547],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[3.547,-4.237],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-33.293,-10.058],[-16.904,5.346],[-22.38,-6.869],[-8.703,-6.003],[4.699,-10.341],[-1.794,-37.741]]}],"e":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-6.929,0.047],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[7.41,-4.073],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-32.793,-16.058],[-23.904,-0.654],[-24.38,-17.869],[-12.203,-13.503],[2.699,-15.841],[-1.794,-37.741]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[4.511,-4.934],[3.749,-0.131],[4.3,-1.302],[3.506,2.094],[5.807,-5.158],[0.246,-12.568],[-2.545,-7.046],[-6.929,0.047],[-1.005,1.099],[-6.13,2.896],[-6.573,0.854],[3.015,4.474]],"o":[[-5.777,4.887],[-2.431,0.085],[-4.828,1.462],[-3.318,-1.818],[-2.792,2.377],[0.236,3.825],[2.598,4.472],[3.668,-2.561],[7.41,-4.073],[4.87,-15.604],[5.286,-0.392],[-2.764,-7.273]],"v":[[-2.174,-67.041],[-11.928,-67.773],[-15.613,-63.466],[-17.029,-78.487],[-31.689,-72.693],[-38.33,-39.908],[-32.793,-16.058],[-23.904,-0.654],[-24.38,-17.869],[-12.203,-13.503],[2.699,-15.841],[-1.794,-37.741]]}],"e":[{"i":[[5.169,-4.24],[3.729,0.405],[4.442,-0.675],[3.172,2.572],[6.484,-4.277],[2.037,-12.404],[1.261,-8.285],[-6.865,-0.942],[-1.151,0.945],[-7.254,5.248],[-6.628,-0.092],[2.345,4.859]],"o":[[-6.416,4.013],[-2.418,-0.263],[-4.988,0.758],[-3.024,-2.273],[-3.102,1.954],[0.339,-2.389],[1.934,4.797],[3.996,-2.011],[7.916,-2.974],[7.246,-24.752],[5.288,0.366],[-1.697,-7.593]],"v":[[-0.514,-69.914],[-10.063,-72.03],[-14.325,-68.293],[-13.584,-83.363],[-28.92,-79.719],[-36.172,-65.218],[-39.594,-36.321],[-32.994,-22.307],[-30.508,-38.414],[-19.079,-28.855],[-2.996,-27.043],[-5.319,-57.36]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[5.169,-4.24],[3.729,0.405],[4.442,-0.675],[3.172,2.572],[6.484,-4.277],[2.037,-12.404],[1.261,-8.285],[-6.865,-0.942],[-1.151,0.945],[-7.254,5.248],[-6.628,-0.092],[2.345,4.859]],"o":[[-6.416,4.013],[-2.418,-0.263],[-4.988,0.758],[-3.024,-2.273],[-3.102,1.954],[0.339,-2.389],[1.934,4.797],[3.996,-2.011],[7.916,-2.974],[7.246,-24.752],[5.288,0.366],[-1.697,-7.593]],"v":[[-0.514,-69.914],[-10.063,-72.03],[-14.325,-68.293],[-13.584,-83.363],[-28.92,-79.719],[-36.172,-65.218],[-39.594,-36.321],[-32.994,-22.307],[-30.508,-38.414],[-19.079,-28.855],[-2.996,-27.043],[-5.319,-57.36]]}],"e":[{"i":[[5.169,-4.24],[3.729,0.405],[4.442,-0.675],[3.172,2.572],[6.484,-4.277],[2.339,-4.889],[1.261,-7.285],[-6.865,-0.942],[-1.151,0.945],[-7.254,5.248],[-6.628,-0.092],[2.345,4.859]],"o":[[-6.416,4.013],[-2.418,-0.263],[-4.988,0.758],[-3.024,-2.273],[-3.102,1.954],[0.339,-2.389],[-0.239,6.215],[3.996,-2.011],[7.916,-2.974],[7.246,-24.752],[5.288,0.366],[-1.697,-7.593]],"v":[[-0.514,-69.914],[-10.063,-72.03],[-7.825,-82.793],[-13.584,-83.363],[-28.92,-79.719],[-33.672,-74.718],[-39.094,-55.821],[-36.494,-41.807],[-30.008,-53.414],[-19.579,-41.355],[-5.496,-40.543],[-5.319,-57.36]]}]},{"t":38}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[46.273,142.485]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 32"}],"bounds":{"l":5,"t":58,"b":181,"r":102},"ip":22,"op":37,"st":24},{"ddd":0,"ind":15,"ty":4,"nm":"manchaAzul 9","ks":{"o":{"k":100},"r":{"k":-28},"p":{"k":[-10.123,170.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[-100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0.04,-0.183],[-0.051,0.174]],"o":[[-0.084,0.163],[0.084,-0.285]],"v":[[-57.803,-24.394],[-57.317,-24.258]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[88.107,171.712]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 21"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-0.094,-0.156],[-0.339,-0.267],[0.138,0.109],[0.2,0.332]],"o":[[0.228,0.378],[0.139,0.11],[-0.298,-0.235],[-0.094,-0.156]],"v":[[-47.751,-25.357],[-46.902,-24.396],[-46.774,-24.644],[-47.52,-25.498]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[76.944,171.413]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 22"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-0.264,-0.147],[-2.124,3.807],[4.137,4.027],[0.269,-6.566]],"o":[[-0.014,0.103],[5.754,-10.311],[-3.296,-3.208],[-0.402,9.818]],"v":[[-63.632,-29.007],[-60.751,-54.312],[-53.845,-76.276],[-65.848,-56.192]]}],"e":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}],"e":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43.333,"s":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}],"e":[{"i":[[-0.264,-0.147],[-4.337,-0.437],[-2,5.118],[8.691,-1.621]],"o":[[-0.014,0.103],[7.015,0.706],[0.949,-2.429],[-3.243,0.605]],"v":[[-55.735,-70.226],[-46.016,-74.118],[-31.808,-68.848],[-46.907,-76.172]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[-0.264,-0.147],[-4.337,-0.437],[-2,5.118],[8.691,-1.621]],"o":[[-0.014,0.103],[7.015,0.706],[0.949,-2.429],[-3.243,0.605]],"v":[[-55.735,-70.226],[-46.016,-74.118],[-31.808,-68.848],[-46.907,-76.172]]}],"e":[{"i":[[-0.264,-0.147],[-3.377,-3.395],[-2.188,3.251],[6.336,6.165]],"o":[[-0.014,0.103],[3.175,3.192],[1.456,-2.163],[-3.087,-3.003]],"v":[[-43.718,-72.652],[-34.207,-62.559],[-22.212,-51.865],[-33.919,-66.656]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[-0.264,-0.147],[-3.377,-3.395],[-2.188,3.251],[6.336,6.165]],"o":[[-0.014,0.103],[3.175,3.192],[1.456,-2.163],[-3.087,-3.003]],"v":[[-43.718,-72.652],[-34.207,-62.559],[-22.212,-51.865],[-33.919,-66.656]]}],"e":[{"i":[[-0.099,-0.087],[-1.123,-1.762],[-1.236,1.182],[2.126,3.219]],"o":[[-0.016,0.043],[1.056,1.657],[0.822,-0.786],[-1.036,-1.568]],"v":[[-19.336,-40.837],[-16.223,-35.648],[-12.107,-29.97],[-15.718,-37.367]]}]},{"t":49}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97.44,158.252]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 34"}],"bounds":{"l":29,"t":75,"b":148,"r":86},"ip":38,"op":49,"st":18},{"ddd":0,"ind":16,"ty":4,"nm":"manchaAzul 8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0.04,-0.183],[-0.051,0.174]],"o":[[-0.084,0.163],[0.084,-0.285]],"v":[[-57.803,-24.394],[-57.317,-24.258]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[88.107,171.712]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 21"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-0.094,-0.156],[-0.339,-0.267],[0.138,0.109],[0.2,0.332]],"o":[[0.228,0.378],[0.139,0.11],[-0.298,-0.235],[-0.094,-0.156]],"v":[[-47.751,-25.357],[-46.902,-24.396],[-46.774,-24.644],[-47.52,-25.498]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[76.944,171.413]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 22"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[-0.264,-0.147],[-1.271,4.17],[5.699,1.571],[0.269,-6.566]],"o":[[-0.014,0.103],[3.752,-12.31],[-4.434,-1.222],[-0.402,9.818]],"v":[[-62.235,-40.226],[-61.751,-54.063],[-59.198,-75.694],[-65.848,-56.192]]}],"e":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40.667,"s":[{"i":[[-0.264,-0.147],[-2.442,3.611],[2.601,4.841],[1.348,-5.182]],"o":[[-0.014,0.103],[3.252,-4.81],[-3.051,-5.679],[-2.475,9.51]],"v":[[-63.235,-55.726],[-55.001,-69.813],[-44.948,-80.944],[-58.848,-72.442]]}],"e":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43.333,"s":[{"i":[[-0.264,-0.147],[-4.011,1.707],[-2,5.118],[5.182,-2.801]],"o":[[-0.014,0.103],[4.252,-1.81],[0.949,-2.429],[-2.902,1.568]],"v":[[-55.735,-70.226],[-49.251,-73.813],[-38.198,-73.944],[-50.598,-76.192]]}],"e":[{"i":[[0.008,-0.073],[-0.388,-0.469],[-0.509,0.473],[0.656,0.599]],"o":[[-0.019,0.025],[0.541,0.653],[0.497,-0.462],[-0.332,-0.304]],"v":[[-37.859,-66.821],[-37.194,-65.777],[-36.432,-64.358],[-36.864,-66.576]]}]},{"t":46}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97.44,158.252]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 34"}],"bounds":{"l":29,"t":75,"b":148,"r":62},"ip":38,"op":46,"st":18},{"ddd":0,"ind":17,"ty":4,"nm":"manchaAzul 7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[0.193,-0.895],[-0.251,0.852]],"o":[[-0.408,0.798],[0.41,-1.391]],"v":[[-53.124,-18.344],[-50.752,-17.68]]}],"e":[{"i":[[0.04,-0.183],[-0.051,0.174]],"o":[[-0.084,0.163],[0.084,-0.285]],"v":[[-57.803,-24.394],[-57.317,-24.258]]}]},{"t":38}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[88.107,171.712]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 21"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-0.458,-0.76],[-1.656,-1.304],[0.674,0.531],[0.977,1.621]],"o":[[1.112,1.846],[0.68,0.536],[-1.456,-1.148],[-0.458,-0.759]],"v":[[-47.387,-24.208],[-43.244,-19.515],[-42.617,-20.724],[-46.26,-24.894]]}],"e":[{"i":[[-0.094,-0.156],[-0.339,-0.267],[0.138,0.109],[0.2,0.332]],"o":[[0.228,0.378],[0.139,0.11],[-0.298,-0.235],[-0.094,-0.156]],"v":[[-47.751,-25.357],[-46.902,-24.396],[-46.774,-24.644],[-47.52,-25.498]]}]},{"t":38}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[76.944,171.413]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":0}}],"nm":"Group 22"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":36,"s":[{"i":[[-1.514,2.603],[-3.887,5.927],[0.803,5.402],[5.106,10.685],[1.877,-3.935],[3.449,-3.554],[6.598,-5.682],[-0.203,-5.986],[-3.867,-1.329]],"o":[[-0.346,-3.232],[2.113,-6.323],[-0.948,-5.974],[-4.787,-10.018],[-6.141,12.875],[-3.203,3.301],[-1.539,1.325],[-0.541,3.254],[5.57,2.381]],"v":[[-35.235,-4.976],[-44.862,-13.3],[-25.738,-17.197],[-42.462,-28.855],[-55.876,-39.438],[-67.698,-31.569],[-68.848,-17.442],[-76.406,-17.268],[-58.657,0.194]]}],"e":[{"i":[[-3.889,4.353],[-1.262,3.552],[0.609,4.167],[2.232,6.19],[2.814,6.503],[-4.301,-7.866],[2.723,-4.307],[-0.344,-10.355],[-5.467,-7.442]],"o":[[2.111,-5.897],[-1.564,-5.683],[-0.48,-5.075],[-1.537,-7.268],[-4.686,-5.247],[3.199,8.134],[-3.527,7.193],[0.808,3.949],[4.533,6.308]],"v":[[-44.86,1.774],[-47.237,-14.3],[-39.238,-26.447],[-50.337,-31.605],[-54.064,-49.876],[-63.948,-47.507],[-72.973,-38.817],[-82.156,-29.768],[-72.532,-13.181]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":37,"s":[{"i":[[-3.889,4.353],[-1.262,3.552],[0.609,4.167],[2.232,6.19],[2.814,6.503],[-4.301,-7.866],[2.723,-4.307],[-0.344,-10.355],[-5.467,-7.442]],"o":[[2.111,-5.897],[-1.564,-5.683],[-0.48,-5.075],[-1.537,-7.268],[-4.686,-5.247],[3.199,8.134],[-3.527,7.193],[0.808,3.949],[4.533,6.308]],"v":[[-44.86,1.774],[-47.237,-14.3],[-39.238,-26.447],[-50.337,-31.605],[-54.064,-49.876],[-63.948,-47.507],[-72.973,-38.817],[-82.156,-29.768],[-72.532,-13.181]]}],"e":[{"i":[[-0.264,-0.147],[1.363,1.177],[0.416,2.932],[-0.643,1.695],[1.533,4.081],[1.949,-2.929],[1.098,-5.432],[-1.594,-7.605],[-4.842,-3.317]],"o":[[-0.014,0.103],[-5.241,-5.043],[-0.012,-4.176],[1.713,-4.518],[-4.248,-11.31],[-2.548,3.829],[-0.402,1.99],[2.156,4.645],[5.57,2.381]],"v":[[-42.985,-7.976],[-49.612,-15.3],[-56.738,-29.197],[-55.212,-39.355],[-54.251,-54.313],[-70.198,-53.944],[-73.598,-41.692],[-71.406,-27.768],[-62.907,-16.556]]}]},{"t":38}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[97.44,158.252]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 34"}],"bounds":{"l":15,"t":98,"b":161,"r":72},"ip":36,"op":38,"st":18},{"ddd":0,"ind":18,"ty":4,"nm":"gotaRoja6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[1.547,-0.956],[0.433,0.989]],"o":[[-1.415,0.874],[-0.51,-1.166]],"v":[[-0.671,-1.774],[1.653,1.741]]}],"e":[{"i":[[2.915,-2.435],[0.433,0.989]],"o":[[-2.733,2.282],[-0.51,-1.166]],"v":[[-6.421,-8.774],[-1.347,-2.259]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[2.915,-2.435],[0.433,0.989]],"o":[[-2.733,2.282],[-0.51,-1.166]],"v":[[-6.421,-8.774],[-1.347,-2.259]]}],"e":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-16.171,-14.774],[-8.597,-6.259]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-16.171,-14.774],[-8.597,-6.259]]}],"e":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-20.171,-19.274],[-15.847,-15.259]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0.988,-2.546],[-0.196,1]],"o":[[-0.983,2.532],[-0.057,-0.733]],"v":[[-20.171,-19.274],[-15.847,-15.259]]}],"e":[{"i":[[0.017,0.032],[-0.196,1]],"o":[[-0.221,1.008],[-0.057,-0.733]],"v":[[-24.171,-22.024],[-22.097,-20.259]]}]},{"t":22}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[131.844,112.371]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 11"}],"bounds":{"l":107,"t":90,"b":115,"r":134},"ip":14,"op":22,"st":14},{"ddd":0,"ind":19,"ty":4,"nm":"gotaRoja5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[1.764,0.191],[-1.084,2.023]],"o":[[-1.814,-0.197],[0.124,0.084]],"v":[[-2.782,1.893],[-2.72,3.861]]}],"e":[{"i":[[3.186,-0.447],[-0.626,0.835]],"o":[[-3.504,0.491],[1.624,-2.166]],"v":[[-0.782,-10.358],[-2.47,1.111]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[3.186,-0.447],[-0.626,0.835]],"o":[[-3.504,0.491],[1.624,-2.166]],"v":[[-0.782,-10.358],[-2.47,1.111]]}],"e":[{"i":[[2.436,0.053],[0.374,0.584]],"o":[[-3.1,-0.068],[-0.535,-4.677]],"v":[[-3.782,-23.108],[-3.22,-9.639]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[2.436,0.053],[0.374,0.584]],"o":[[-3.1,-0.068],[-0.535,-4.677]],"v":[[-3.782,-23.108],[-3.22,-9.639]]}],"e":[{"i":[[1.613,-0.492],[0.374,0.584]],"o":[[-1.814,0.553],[-0.535,-4.677]],"v":[[-6.032,-25.358],[-5.47,-19.639]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[1.613,-0.492],[0.374,0.584]],"o":[[-1.814,0.553],[-0.535,-4.677]],"v":[[-6.032,-25.358],[-5.47,-19.639]]}],"e":[{"i":[[1.613,-0.492],[0.374,0.584]],"o":[[-1.814,0.553],[0.374,-0.916]],"v":[[-6.032,-25.358],[-5.97,-23.139]]}]},{"t":22}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[142.286,111.183]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 12"}],"bounds":{"l":135,"t":85,"b":116,"r":143},"ip":14,"op":22,"st":14},{"ddd":0,"ind":20,"ty":4,"nm":"gotaRoja4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[-3.424,4.479],[-1.269,2.378],[-2.44,4.243]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[-1.174,1.479],[0.731,-0.872],[-0.44,0.993]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[-1.174,1.479],[0.731,-0.872],[-0.44,0.993]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[0.576,-1.021],[6.981,-7.872],[5.81,-6.007]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[0.576,-1.021],[6.981,-7.872],[5.81,-6.007]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[5.826,-7.521],[10.981,-12.622],[9.81,-10.757]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.51,-0.55]],"o":[[-0.255,-0.984],[0.698,0.618],[-0.731,0.79]],"v":[[5.826,-7.521],[10.981,-12.622],[9.81,-10.757]]}],"e":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.696,0.279]],"o":[[-0.255,-0.984],[0.698,0.618],[-1.778,-0.712]],"v":[[8.826,-9.521],[18.731,-11.372],[17.81,-9.257]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0.143,0.551],[-1.308,-1.158],[0.696,0.279]],"o":[[-0.255,-0.984],[0.698,0.618],[-1.778,-0.712]],"v":[[8.826,-9.521],[18.731,-11.372],[17.81,-9.257]]}],"e":[{"i":[[0.045,0.567],[-1.088,-1.367],[0.637,0.395]],"o":[[-0.081,-1.013],[0.58,0.73],[-1.628,-1.009]],"v":[[16.258,-7.918],[23.049,-3.78],[21.776,-1.857]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0.045,0.567],[-1.088,-1.367],[0.637,0.395]],"o":[[-0.081,-1.013],[0.58,0.73],[-1.628,-1.009]],"v":[[16.258,-7.918],[23.049,-3.78],[21.776,-1.857]]}],"e":[{"i":[[0.024,0.268],[-0.577,-0.646],[0.338,0.187]],"o":[[-0.043,-0.479],[0.308,0.345],[-0.864,-0.477]],"v":[[24.739,-0.24],[25.822,-0.057],[25.146,0.852]]}]},{"t":27}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[170.158,114.348]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":166,"t":101,"b":120,"r":197},"ip":15,"op":27,"st":15},{"ddd":0,"ind":21,"ty":4,"nm":"manchaRoja 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-0.257,0.062],[0.257,-0.062]],"o":[[0.257,-0.062],[-0.257,0.062]],"v":[[8.309,-18.138],[8.212,-18.537]]}],"e":[{"i":[[-0.844,0.205],[0.844,-0.205]],"o":[[0.844,-0.205],[-0.844,0.205]],"v":[[4.721,-10.585],[4.403,-11.894]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-0.844,0.205],[0.844,-0.205]],"o":[[0.844,-0.205],[-0.844,0.205]],"v":[[4.721,-10.585],[4.403,-11.894]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-4.25,-1.5],[-4.25,-4.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-4.25,-1.5],[-4.25,-4.5]]}],"e":[{"i":[[-1.763,0],[1.763,0]],"o":[[1.763,0],[-1.763,0]],"v":[[-6.513,0.487],[-6.513,-2.247]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-1.763,0],[1.763,0]],"o":[[1.763,0],[-1.763,0]],"v":[[-6.513,0.487],[-6.513,-2.247]]}],"e":[{"i":[[-1.685,-0.045],[1.685,0.045]],"o":[[1.685,0.045],[-1.685,-0.045]],"v":[[-8.698,2.408],[-8.627,-0.205]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.685,-0.045],[1.685,0.045]],"o":[[1.685,0.045],[-1.685,-0.045]],"v":[[-8.698,2.408],[-8.627,-0.205]]}],"e":[{"i":[[-1.388,-0.176],[1.388,0.176]],"o":[[1.388,0.176],[-1.388,-0.176]],"v":[[-12.703,10.13],[-12.43,7.978]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.388,-0.176],[1.388,0.176]],"o":[[1.388,0.176],[-1.388,-0.176]],"v":[[-12.703,10.13],[-12.43,7.978]]}],"e":[{"i":[[-1.082,-0.137],[1.082,0.137]],"o":[[1.082,0.137],[-1.082,-0.137]],"v":[[-18.272,13.815],[-18.059,12.137]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.082,-0.137],[1.082,0.137]],"o":[[1.082,0.137],[-1.082,-0.137]],"v":[[-18.272,13.815],[-18.059,12.137]]}],"e":[{"i":[[-0.869,-0.382],[0.869,0.382]],"o":[[0.869,0.382],[-0.869,-0.382]],"v":[[-33.945,24.078],[-33.361,22.637]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-0.869,-0.382],[0.869,0.382]],"o":[[0.869,0.382],[-0.869,-0.382]],"v":[[-33.945,24.078],[-33.361,22.637]]}],"e":[{"i":[[-0.407,-0.398],[0.407,0.398]],"o":[[0.407,0.398],[-0.407,-0.398]],"v":[[-68.649,29.659],[-68.017,28.974]]}]},{"t":35}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[157.94,140.879]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 29"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-0.207,0.16],[-0.379,0.901],[0.101,-0.241],[0.734,-0.566]],"o":[[0.789,-0.608],[0.103,-0.244],[-0.353,0.839],[-0.209,0.161]],"v":[[17.792,-26.521],[19.407,-28.896],[19.014,-29.013],[17.508,-26.816]]}],"e":[{"i":[[-0.682,0.526],[-1.244,2.959],[0.333,-0.791],[2.411,-1.86]],"o":[[2.593,-1.999],[0.337,-0.802],[-1.159,2.757],[-0.687,0.53]],"v":[[10.064,-12.161],[15.37,-19.963],[14.079,-20.349],[9.129,-13.131]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-0.682,0.526],[-1.244,2.959],[0.333,-0.791],[2.411,-1.86]],"o":[[2.593,-1.999],[0.337,-0.802],[-1.159,2.757],[-0.687,0.53]],"v":[[10.064,-12.161],[15.37,-19.963],[14.079,-20.349],[9.129,-13.131]]}],"e":[{"i":[[-1.751,0.779],[-4.246,5.751],[1.136,-1.538],[6.196,-2.756]],"o":[[6.66,-2.963],[1.151,-1.559],[-3.956,5.356],[-1.765,0.785]],"v":[[-10.976,5.184],[4.604,-8.911],[2.014,-10.425],[-12.49,2.594]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-1.751,0.779],[-4.246,5.751],[1.136,-1.538],[6.196,-2.756]],"o":[[6.66,-2.963],[1.151,-1.559],[-3.956,5.356],[-1.765,0.785]],"v":[[-10.976,5.184],[4.604,-8.911],[2.014,-10.425],[-12.49,2.594]]}],"e":[{"i":[[-1.596,0.71],[-3.869,5.241],[1.035,-1.401],[5.646,-2.511]],"o":[[6.069,-2.7],[1.049,-1.421],[-3.605,4.881],[-1.608,0.715]],"v":[[-12.267,6.253],[1.931,-6.591],[-0.429,-7.971],[-13.647,3.893]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-1.596,0.71],[-3.869,5.241],[1.035,-1.401],[5.646,-2.511]],"o":[[6.069,-2.7],[1.049,-1.421],[-3.605,4.881],[-1.608,0.715]],"v":[[-12.267,6.253],[1.931,-6.591],[-0.429,-7.971],[-13.647,3.893]]}],"e":[{"i":[[-1.543,0.637],[-3.832,4.908],[1.025,-1.312],[5.46,-2.254]],"o":[[5.869,-2.424],[1.039,-1.331],[-3.571,4.571],[-1.555,0.642]],"v":[[-13.52,6.338],[0.379,-5.571],[-1.841,-6.95],[-14.777,4.047]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.543,0.637],[-3.832,4.908],[1.025,-1.312],[5.46,-2.254]],"o":[[5.869,-2.424],[1.039,-1.331],[-3.571,4.571],[-1.555,0.642]],"v":[[-13.52,6.338],[0.379,-5.571],[-1.841,-6.95],[-14.777,4.047]]}],"e":[{"i":[[-1.327,0.399],[-3.57,3.739],[0.955,-1],[4.696,-1.413]],"o":[[5.048,-1.519],[0.968,-1.014],[-3.326,3.482],[-1.338,0.402]],"v":[[-16.541,10.549],[-4.08,1.856],[-5.801,0.534],[-17.391,8.553]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.327,0.399],[-3.57,3.739],[0.955,-1],[4.696,-1.413]],"o":[[5.048,-1.519],[0.968,-1.014],[-3.326,3.482],[-1.338,0.402]],"v":[[-16.541,10.549],[-4.08,1.856],[-5.801,0.534],[-17.391,8.553]]}],"e":[{"i":[[-1.035,0.311],[-2.783,2.915],[0.744,-0.779],[3.66,-1.101]],"o":[[3.935,-1.184],[0.754,-0.79],[-2.592,2.714],[-1.043,0.314]],"v":[[-18.773,11.637],[-9.06,4.86],[-10.401,3.83],[-19.436,10.081]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-1.035,0.311],[-2.783,2.915],[0.744,-0.779],[3.66,-1.101]],"o":[[3.935,-1.184],[0.754,-0.79],[-2.592,2.714],[-1.043,0.314]],"v":[[-18.773,11.637],[-9.06,4.86],[-10.401,3.83],[-19.436,10.081]]}],"e":[{"i":[[-0.938,0.029],[-3.026,1.925],[0.809,-0.514],[3.319,-0.101]],"o":[[3.568,-0.109],[0.82,-0.522],[-2.819,1.792],[-0.946,0.029]],"v":[[-34.711,18.053],[-24.97,14.357],[-25.839,13.119],[-34.887,16.51]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[-0.938,0.029],[-3.026,1.925],[0.809,-0.514],[3.319,-0.101]],"o":[[3.568,-0.109],[0.82,-0.522],[-2.819,1.792],[-0.946,0.029]],"v":[[-34.711,18.053],[-24.97,14.357],[-25.839,13.119],[-34.887,16.51]]}],"e":[{"i":[[-0.532,-0.182],[-2.104,0.44],[0.562,-0.118],[1.883,0.644]],"o":[[2.024,0.692],[0.57,-0.119],[-1.959,0.41],[-0.536,-0.184]],"v":[[-65.245,18.744],[-59.001,18.728],[-59.227,17.85],[-65.018,17.842]]}]},{"t":35}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[146.645,152.24]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 30"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7,2.25],[6.604,0.521],[3.323,-0.801],[0.918,-4.833],[1.88,-2.317],[-2.563,3.496],[-9.586,-5.942],[-1.624,12.638]],"o":[[-3.911,-1.257],[-7.926,-0.625],[-3.839,0.926],[-1.082,7.917],[7.38,-3.317],[15.648,-21.339],[5.664,3.558],[-2.124,-3.737]],"v":[[18.378,-22.033],[9.752,-36.908],[0.874,-27.658],[-9.665,-30.576],[-14.878,-17.342],[-1.146,-16.32],[16.089,-12.966],[28.626,-22.046]]}],"e":[{"i":[[7.301,2.347],[6.888,0.543],[3.466,-0.836],[3.815,-7.196],[5.351,-7.371],[-4.028,-2.054],[-7.755,-4.22],[2.348,7.576]],"o":[[-4.079,-1.311],[-8.267,-0.652],[-4.004,0.966],[-3.215,5.911],[5.872,8.796],[9.02,4.601],[15.556,3.972],[-2.215,-3.898]],"v":[[15.493,-18.015],[8.843,-39.007],[-0.938,-25.186],[-8.281,-31.097],[-23.105,-4.256],[-8.521,-9.97],[6.847,7.87],[28.53,-23.505]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[7.301,2.347],[6.888,0.543],[3.466,-0.836],[3.815,-7.196],[5.351,-7.371],[-4.028,-2.054],[-7.755,-4.22],[2.348,7.576]],"o":[[-4.079,-1.311],[-8.267,-0.652],[-4.004,0.966],[-3.215,5.911],[5.872,8.796],[9.02,4.601],[15.556,3.972],[-2.215,-3.898]],"v":[[15.493,-18.015],[8.843,-39.007],[-0.938,-25.186],[-8.281,-31.097],[-23.105,-4.256],[-8.521,-9.97],[6.847,7.87],[28.53,-23.505]]}],"e":[{"i":[[7.09,2.279],[6.689,0.527],[3.366,-0.812],[3.705,-6.988],[8.15,-4.054],[-11.498,4.974],[-6.671,-5.765],[2.28,7.357]],"o":[[-3.961,-1.273],[-8.028,-0.633],[-3.888,0.938],[-5.023,10.232],[-9.491,9.048],[6.976,-3.018],[10.548,10.441],[-2.151,-3.785]],"v":[[14.937,-18.231],[6.454,-31.525],[-3.045,-18.105],[-12.707,-20.806],[-33.687,0.195],[-27.628,6.801],[-20.807,26.151],[27.597,-20.017]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[7.09,2.279],[6.689,0.527],[3.366,-0.812],[3.705,-6.988],[8.15,-4.054],[-11.498,4.974],[-6.671,-5.765],[2.28,7.357]],"o":[[-3.961,-1.273],[-8.028,-0.633],[-3.888,0.938],[-5.023,10.232],[-9.491,9.048],[6.976,-3.018],[10.548,10.441],[-2.151,-3.785]],"v":[[14.937,-18.231],[6.454,-31.525],[-3.045,-18.105],[-12.707,-20.806],[-33.687,0.195],[-27.628,6.801],[-20.807,26.151],[27.597,-20.017]]}],"e":[{"i":[[7.032,2.541],[6.692,0.769],[3.406,-0.694],[6.526,-6.974],[8.322,-3.775],[-11.715,4.579],[-6.486,-6.024],[3.317,10.435]],"o":[[-3.929,-1.419],[-8.032,-0.923],[-3.935,0.802],[-5.407,10.086],[-11.752,5.108],[7.108,-2.778],[10.209,10.854],[-2.023,-3.875]],"v":[[11.814,-13.682],[5.648,-29.801],[-5.207,-14.417],[-14.524,-18.227],[-36.907,4.106],[-31.065,10.951],[-25.904,29.811],[24.162,-17.578]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[7.032,2.541],[6.692,0.769],[3.406,-0.694],[6.526,-6.974],[8.322,-3.775],[-11.715,4.579],[-6.486,-6.024],[3.317,10.435]],"o":[[-3.929,-1.419],[-8.032,-0.923],[-3.935,0.802],[-5.407,10.086],[-11.752,5.108],[7.108,-2.778],[10.209,10.854],[-2.023,-3.875]],"v":[[11.814,-13.682],[5.648,-29.801],[-5.207,-14.417],[-14.524,-18.227],[-36.907,4.106],[-31.065,10.951],[-25.904,29.811],[24.162,-17.578]]}],"e":[{"i":[[6.941,2.593],[6.623,0.834],[3.382,-0.651],[2.673,-8.888],[8.287,-3.651],[-11.657,4.412],[-6.363,-6.038],[1.654,13.962]],"o":[[-3.878,-1.449],[-7.949,-1.001],[-3.908,0.752],[-5.465,9.937],[-9.851,8.553],[7.073,-2.677],[10,10.865],[-1.963,-3.861]],"v":[[11.934,-11.432],[5.369,-25.786],[-4.943,-13.388],[-13.921,-19.02],[-35.742,0.881],[-30.027,7.726],[-24.143,27.272],[25.349,-13.871]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[6.941,2.593],[6.623,0.834],[3.382,-0.651],[2.673,-8.888],[8.287,-3.651],[-11.657,4.412],[-6.363,-6.038],[1.654,13.962]],"o":[[-3.878,-1.449],[-7.949,-1.001],[-3.908,0.752],[-5.465,9.937],[-9.851,8.553],[7.073,-2.677],[10,10.865],[-1.963,-3.861]],"v":[[11.934,-11.432],[5.369,-25.786],[-4.943,-13.388],[-13.921,-19.02],[-35.742,0.881],[-30.027,7.726],[-24.143,27.272],[25.349,-13.871]]}],"e":[{"i":[[6.421,3.861],[6.43,2.053],[3.483,-0.022],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-0.135,16.929]],"o":[[-3.587,-2.157],[-7.717,-2.465],[-4.024,0.025],[-7.083,10.166],[-12.504,2.904],[7.526,-1.353],[7.932,12.649],[-1.237,-4.201]],"v":[[7.033,-5.192],[4.057,-22.173],[-9.548,-9.257],[-17.944,-14.876],[-44.235,2.666],[-39.819,10.528],[-38.371,30.11],[19.962,-6.567]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[6.421,3.861],[6.43,2.053],[3.483,-0.022],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-0.135,16.929]],"o":[[-3.587,-2.157],[-7.717,-2.465],[-4.024,0.025],[-7.083,10.166],[-12.504,2.904],[7.526,-1.353],[7.932,12.649],[-1.237,-4.201]],"v":[[7.033,-5.192],[4.057,-22.173],[-9.548,-9.257],[-17.944,-14.876],[-44.235,2.666],[-39.819,10.528],[-38.371,30.11],[19.962,-6.567]]}],"e":[{"i":[[6.421,3.861],[8.696,3.515],[6.551,1.348],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-1.709,14.159]],"o":[[-3.587,-2.157],[-7.511,-3.036],[-3.941,-0.811],[-6.303,5.468],[-12.504,2.904],[7.526,-1.353],[7.123,10.481],[-1.237,-4.201]],"v":[[0.783,2.558],[0.307,-15.423],[-11.798,-9.507],[-25.944,-4.876],[-50.235,5.416],[-45.819,12.778],[-38.371,30.11],[13.462,0.433]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[6.421,3.861],[8.696,3.515],[6.551,1.348],[5.461,-7.551],[8.919,-2.072],[-12.404,2.23],[-5.209,-7.179],[-1.709,14.159]],"o":[[-3.587,-2.157],[-7.511,-3.036],[-3.941,-0.811],[-6.303,5.468],[-12.504,2.904],[7.526,-1.353],[7.123,10.481],[-1.237,-4.201]],"v":[[0.783,2.558],[0.307,-15.423],[-11.798,-9.507],[-25.944,-4.876],[-50.235,5.416],[-45.819,12.778],[-38.371,30.11],[13.462,0.433]]}],"e":[{"i":[[6.508,2.797],[4.922,1.376],[4.88,-3.324],[1.323,-0.423],[9.141,-0.539],[-12.602,0.108],[-3.925,-7.954],[3.349,9.004]],"o":[[-7.237,-3.111],[-3.752,-1.049],[-7.747,5.277],[-7.134,4.328],[-12.814,0.756],[7.646,-0.066],[5.256,11.532],[-0.512,-4.35]],"v":[[-16.556,14.825],[-21.445,-9.114],[-30.831,-1.137],[-43.248,4.916],[-60.075,8.335],[-53.462,12.336],[-49.04,30.675],[-4.551,16.826]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[{"i":[[6.508,2.797],[4.922,1.376],[4.88,-3.324],[1.323,-0.423],[9.141,-0.539],[-12.602,0.108],[-3.925,-7.954],[3.349,9.004]],"o":[[-7.237,-3.111],[-3.752,-1.049],[-7.747,5.277],[-7.134,4.328],[-12.814,0.756],[7.646,-0.066],[5.256,11.532],[-0.512,-4.35]],"v":[[-16.556,14.825],[-21.445,-9.114],[-30.831,-1.137],[-43.248,4.916],[-60.075,8.335],[-53.462,12.336],[-49.04,30.675],[-4.551,16.826]]}],"e":[{"i":[[6.508,2.797],[4.683,-2.046],[4.88,-3.324],[1.323,-0.423],[3.077,-3.494],[-12.602,0.108],[-3.925,-7.954],[6.803,7.765]],"o":[[-7.237,-3.111],[-9.052,3.955],[-7.747,5.277],[-7.134,4.328],[-8.484,9.633],[7.646,-0.066],[5.256,11.532],[-0.512,-4.35]],"v":[[-37.056,14.325],[-36.445,2.636],[-52.331,8.113],[-66.248,8.916],[-80.575,10.335],[-72.462,17.586],[-49.04,30.675],[-42.551,24.576]]}]},{"t":35}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[140.188,140.037]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 36"}],"bounds":{"l":55,"t":101,"b":176,"r":170},"ip":14,"op":35,"st":15},{"ddd":0,"ind":22,"ty":4,"nm":"gotaCyan6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-2.654,2.598],[1.508,1.877]],"o":[[2.427,-2.376],[-0.206,-0.628]],"v":[[4.343,8.022],[7.585,12.925]]}],"e":[{"i":[[-2.654,2.598],[1.296,2.029]],"o":[[2.427,-2.376],[-2.956,-4.628]],"v":[[-2.407,-3.478],[7.585,12.925]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-2.654,2.598],[1.296,2.029]],"o":[[2.427,-2.376],[-2.956,-4.628]],"v":[[-2.407,-3.478],[7.585,12.925]]}],"e":[{"i":[[-2.654,2.598],[1.726,1.678]],"o":[[2.427,-2.376],[-2.036,-1.978]],"v":[[-4.407,-5.478],[1.335,2.175]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-2.654,2.598],[1.726,1.678]],"o":[[2.427,-2.376],[-2.036,-1.978]],"v":[[-4.407,-5.478],[1.335,2.175]]}],"e":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-9.157,-5.478],[-1.665,-0.825]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-9.157,-5.478],[-1.665,-0.825]]}],"e":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-14.407,-3.228],[-7.415,-1.825]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.82,3.622],[1.736,1.667]],"o":[[0.787,-3.475],[-1.956,-1.878]],"v":[[-14.407,-3.228],[-7.415,-1.825]]}],"e":[{"i":[[-0.317,1.078],[2.238,0.886]],"o":[[0.287,-0.975],[0.294,-0.378]],"v":[[-16.657,-1.728],[-15.415,-2.325]]}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[134.06,55.332]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 16"}],"bounds":{"l":117,"t":49,"b":69,"r":143},"ip":12,"op":21,"st":11},{"ddd":0,"ind":23,"ty":4,"nm":"gotaCyan5","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[-0.422,1.503],[0.388,-1.411],[0.057,0.766]]}],"e":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.138,-4.661],[0.807,-2.484]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.138,-4.661],[0.807,-2.484]]}],"e":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.888,-6.161],[0.807,-2.484]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[0.328,-1.747],[1.888,-6.161],[0.807,-2.484]]}],"e":[{"i":[[0.351,0.449],[-1.661,-0.541],[0.248,-0.708]],"o":[[-0.626,-0.801],[0.886,0.288],[-0.356,1.015]],"v":[[1.328,-7.247],[2.888,-11.661],[1.807,-7.984]]}]},{"t":15}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[140.926,50.579]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 2"}],"bounds":{"l":140,"t":38,"b":53,"r":145},"ip":10,"op":15,"st":10},{"ddd":0,"ind":24,"ty":4,"nm":"gotaCyan4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[1.003,0.154],[0.214,-1.36]],"o":[[-0.997,-0.153],[-0.253,1.604]],"v":[[-2.788,7.056],[-3.283,9.049]]}],"e":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[2.396,0.621],[0.038,1.376]],"o":[[-2.819,-0.731],[-0.083,-3.007]],"v":[[0.212,-3.944],[-1.783,3.299]]}],"e":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[3.753,1.347],[0.038,1.376]],"o":[[-3.781,-1.357],[-0.083,-3.007]],"v":[[3.212,-9.944],[0.217,-1.951]]}],"e":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[2.753,2.097],[-0.638,1.22]],"o":[[-2.723,-2.074],[3.997,-7.646]],"v":[[8.462,-16.694],[1.217,-5.951]]}],"e":[{"i":[[-0.497,-1.653],[-0.831,1.097]],"o":[[0.378,1.257],[1.247,-1.646]],"v":[[12.462,-17.444],[10.967,-16.951]]}]},{"t":19}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[161.225,56.226]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"}],"bounds":{"l":157,"t":37,"b":66,"r":174},"ip":11,"op":19,"st":11},{"ddd":0,"ind":25,"ty":4,"nm":"gotaRosa10","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0.303,-0.037],[0.191,0.598],[-0.058,0.536]],"o":[[0.928,-0.162],[-0.559,0.223],[-1.321,-2.125]],"v":[[-16.926,-8.013],[-16.814,-9.023],[-15.94,-7.711]]}],"e":[{"i":[[0.303,-0.037],[1.995,-1.301],[2.817,1.911]],"o":[[0.928,-0.162],[-1.684,1.098],[-2.071,-1.405]],"v":[[-13.801,-7.388],[-4.189,-0.273],[-9.065,-3.461]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[0.303,-0.037],[1.995,-1.301],[2.817,1.911]],"o":[[0.928,-0.162],[-1.684,1.098],[-2.071,-1.405]],"v":[[-13.801,-7.388],[-4.189,-0.273],[-9.065,-3.461]]}],"e":[{"i":[[-0.769,-0.103],[2.135,-1.056],[0.432,0.926]],"o":[[1.374,0.184],[-1.138,0.563],[-0.621,-1.329]],"v":[[-1.051,-1.013],[0.936,2.602],[-0.815,0.164]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[-0.769,-0.103],[2.135,-1.056],[0.432,0.926]],"o":[[1.374,0.184],[-1.138,0.563],[-0.621,-1.329]],"v":[[-1.051,-1.013],[0.936,2.602],[-0.815,0.164]]}],"e":[{"i":[[-0.282,-0.038],[0.782,-0.387],[0.158,0.339]],"o":[[0.503,0.067],[-0.417,0.206],[-0.227,-0.487]],"v":[[0.367,2.131],[1.094,3.455],[0.453,2.562]]}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[177.939,79.053]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 3"}],"bounds":{"l":160,"t":70,"b":83,"r":180},"ip":23,"op":32,"st":5},{"ddd":0,"ind":26,"ty":4,"nm":"gotaRosa9","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[-0.332,0.4],[-0.081,-0.504]],"o":[[0.293,-0.725],[-0.206,0.371]],"v":[[7.308,2.022],[9.432,2.676]]}],"e":[{"i":[[-1.832,1.775],[-0.081,-0.504]],"o":[[1.343,-1.301],[-0.206,0.371]],"v":[[1.683,0.772],[9.432,2.676]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":10,"s":[{"i":[[-1.832,1.775],[-0.081,-0.504]],"o":[[1.343,-1.301],[-0.206,0.371]],"v":[[1.683,0.772],[9.432,2.676]]}],"e":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[-0.429,2.405],[1.565,0.239]],"o":[[0.392,-2.2],[-1.846,-0.281]],"v":[[-3.567,-0.103],[2.432,1.801]]}],"e":[{"i":[[0.983,2.237],[1.565,0.239]],"o":[[-1.582,-3.6],[-1.846,-0.281]],"v":[[-7.442,3.897],[0.307,0.676]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0.983,2.237],[1.565,0.239]],"o":[[-1.582,-3.6],[-1.846,-0.281]],"v":[[-7.442,3.897],[0.307,0.676]]}],"e":[{"i":[[1.543,1.525],[-0.081,0.121]],"o":[[-2.797,-2.764],[0.544,0.246]],"v":[[-7.942,9.022],[-3.193,2.051]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[1.543,1.525],[-0.081,0.121]],"o":[[-2.797,-2.764],[0.544,0.246]],"v":[[-7.942,9.022],[-3.193,2.051]]}],"e":[{"i":[[3.168,0.4],[-0.081,0.121]],"o":[[-2.071,-0.261],[-0.956,3.496]],"v":[[-9.067,17.647],[-5.193,4.051]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[3.168,0.4],[-0.081,0.121]],"o":[[-2.071,-0.261],[-0.956,3.496]],"v":[[-9.067,17.647],[-5.193,4.051]]}],"e":[{"i":[[1.677,0.931],[-0.081,0.121]],"o":[[-1.082,-0.6],[-0.331,1.371]],"v":[[-9.317,20.522],[-8.318,16.801]]}]},{"t":28}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[94.589,44.582]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 18"}],"bounds":{"l":84,"t":43,"b":66,"r":105},"ip":7,"op":28,"st":7},{"ddd":0,"ind":27,"ty":4,"nm":"gotaRosa8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":9,"s":[{"i":[[0.234,0.077],[-0.557,0.86],[-0.462,-0.806]],"o":[[-1.318,-0.435],[0.287,-0.444],[0.232,0.404]],"v":[[25.826,15.523],[23.658,14.011],[25.783,15.569]]}],"e":[{"i":[[0.541,0.179],[-1.286,1.987],[-1.068,-1.861]],"o":[[-3.043,-1.005],[0.664,-1.026],[0.536,0.933]],"v":[[17.77,9.684],[12.762,6.192],[17.67,9.79]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":14,"s":[{"i":[[0.541,0.179],[-1.286,1.987],[-1.068,-1.861]],"o":[[-3.043,-1.005],[0.664,-1.026],[0.536,0.933]],"v":[[17.77,9.684],[12.762,6.192],[17.67,9.79]]}],"e":[{"i":[[0.541,0.179],[-2.933,4.008],[-1.068,-1.861]],"o":[[-3.043,-1.005],[1.839,-2.513],[0.536,0.933]],"v":[[13.02,7.559],[4.387,0.317],[12.92,7.665]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0.541,0.179],[-2.933,4.008],[-1.068,-1.861]],"o":[[-3.043,-1.005],[1.839,-2.513],[0.536,0.933]],"v":[[13.02,7.559],[4.387,0.317],[12.92,7.665]]}],"e":[{"i":[[0.52,-0.232],[-0.927,1.481],[-0.627,-0.412]],"o":[[-0.929,0.414],[0.494,-0.79],[0.899,0.591]],"v":[[1.52,0.934],[-1.113,-0.558],[0.92,0.29]]}]},{"t":20}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[98.589,26.45]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":97,"t":25,"b":43,"r":125},"ip":9,"op":20,"st":9},{"ddd":0,"ind":28,"ty":4,"nm":"gotaRosa7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[1.069,-1.904],[3.166,0.708]],"o":[[-1.195,2.13],[-0.793,-0.233]],"v":[[4.681,4.064],[9.043,6.644]]}],"e":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[2.279,-4.945],[3.207,0.487]],"o":[[-2.681,5.818],[-7.007,-1.066]],"v":[[-8.319,-1.436],[7.793,5.894]]}],"e":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-23.069,-12.686],[-7.457,-6.107]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-23.069,-12.686],[-7.457,-6.107]]}],"e":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-26.569,-11.436],[-15.457,-10.857]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":19,"s":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-26.569,-11.436],[-15.457,-10.857]]}],"e":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-29.319,-6.936],[-15.457,-10.857]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[0.069,-3.404],[-0.543,0.267]],"o":[[-0.054,2.657],[-0.293,-0.733]],"v":[[-29.319,-6.936],[-15.457,-10.857]]}],"e":[{"i":[[-0.181,-1.154],[-0.543,0.267]],"o":[[0.412,2.625],[-0.293,-0.733]],"v":[[-29.319,-6.936],[-27.707,-7.607]]}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[113.94,26.219]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 9"}],"bounds":{"l":84,"t":12,"b":34,"r":124},"ip":7,"op":25,"st":7},{"ddd":0,"ind":29,"ty":4,"nm":"gotaRosa6","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[177.502,96.273,0]},"a":{"k":[141.817,27.277,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0.168,2.349],[-1.915,-0.012]],"o":[[-0.121,-1.698],[1.24,0.008]],"v":[[-2.852,-2.278],[-5.338,-1.609]]}],"e":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[3.898,0.097],[-3.213,-2.234]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[3.898,0.097],[-3.213,-2.234]]}],"e":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[8.648,3.472],[-3.213,-2.234]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.1,3.036],[-1.691,-0.899]],"o":[[1.006,-2.777],[1.996,1.061]],"v":[[8.648,3.472],[-3.213,-2.234]]}],"e":[{"i":[[-0.003,1.104],[-0.01,-0.492]],"o":[[0.004,-1.198],[-0.135,0.383]],"v":[[10.523,5.722],[9.912,5.516]]}]},{"t":28}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[141.289,28.73]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 10"}],"bounds":{"l":135,"t":25,"b":35,"r":152},"ip":18,"op":28,"st":6},{"ddd":0,"ind":30,"ty":4,"nm":"manchaRosa 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[123.877,153.773,0]},"a":{"k":[90.317,89.152,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-1.007,0.038],[1.007,-0.038]],"o":[[1.007,-0.038],[-1.007,0.038]],"v":[[-7.646,-0.999],[-7.706,-2.559]]}],"e":[{"i":[[-1.931,0.129],[1.931,-0.129]],"o":[[1.931,-0.129],[-1.931,0.129]],"v":[[-8.755,-1.45],[-8.955,-4.444]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-1.931,0.129],[1.931,-0.129]],"o":[[1.931,-0.129],[-1.931,0.129]],"v":[[-8.755,-1.45],[-8.955,-4.444]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-1.75,0.75],[-1.75,-2.25]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-1.75,0.75],[-1.75,-2.25]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[0,1.5],[0,-1.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13.125,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[0,1.5],[0,-1.5]]}],"e":[{"i":[[-1.816,-0.142],[1.816,0.142]],"o":[[1.816,0.142],[-1.816,-0.142]],"v":[[5.625,9.42],[5.846,6.605]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.816,-0.142],[1.816,0.142]],"o":[[1.816,0.142],[-1.816,-0.142]],"v":[[5.625,9.42],[5.846,6.605]]}],"e":[{"i":[[-1.927,-0.447],[1.927,0.447]],"o":[[1.927,0.446],[-1.927,-0.447]],"v":[[7.734,12.285],[8.426,9.297]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-1.927,-0.447],[1.927,0.447]],"o":[[1.927,0.446],[-1.927,-0.447]],"v":[[7.734,12.285],[8.426,9.297]]}],"e":[{"i":[[-1.929,-0.152],[1.929,0.152]],"o":[[1.929,0.152],[-1.929,-0.152]],"v":[[11.691,17.779],[11.927,14.788]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.929,-0.152],[1.929,0.152]],"o":[[1.929,0.152],[-1.929,-0.152]],"v":[[11.691,17.779],[11.927,14.788]]}],"e":[{"i":[[-1.66,-1.076],[1.66,1.076]],"o":[[1.66,1.076],[-1.66,-1.076]],"v":[[22.881,34.083],[24.55,31.509]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.66,-1.076],[1.66,1.076]],"o":[[1.66,1.076],[-1.66,-1.076]],"v":[[22.881,34.083],[24.55,31.509]]}],"e":[{"i":[[-1.622,-1.055],[1.622,1.055]],"o":[[1.622,1.055],[-1.622,-1.055]],"v":[[26.65,58.898],[28.286,56.383]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-1.622,-1.055],[1.622,1.055]],"o":[[1.622,1.055],[-1.622,-1.055]],"v":[[26.65,58.898],[28.286,56.383]]}],"e":[{"i":[[-1.397,-0.912],[1.397,0.912]],"o":[[1.397,0.912],[-1.397,-0.912]],"v":[[22.501,93.192],[24.355,92.863]]}]},{"t":26}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[134.44,33.379]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 25"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-0.823,-0.588],[-0.987,-1.061],[0.687,0.738],[1.179,0.843]],"o":[[1.179,0.843],[0.692,0.743],[-0.987,-1.061],[-0.813,-0.581]],"v":[[-12.369,-4.583],[-9.118,-1.728],[-8.051,-2.881],[-11.301,-5.736]]}],"e":[{"i":[[-1.603,-1.077],[-1.942,-1.971],[1.351,1.371],[2.297,1.544]],"o":[[2.296,1.543],[1.36,1.38],[-1.942,-1.971],[-1.584,-1.065]],"v":[[-13.74,-5.092],[-7.382,0.179],[-5.408,-2.08],[-11.766,-7.35]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-1.603,-1.077],[-1.942,-1.971],[1.351,1.371],[2.297,1.544]],"o":[[2.296,1.543],[1.36,1.38],[-1.942,-1.971],[-1.584,-1.065]],"v":[[-13.74,-5.092],[-7.382,0.179],[-5.408,-2.08],[-11.766,-7.35]]}],"e":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.188,1.694]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-7.67,-2.682],[-1.678,3.003],[0.443,0.88],[-5.549,-4.803]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.188,1.694]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-7.67,-2.682],[-1.678,3.003],[0.443,0.88],[-5.549,-4.803]]}],"e":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.189,1.693]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-3.92,-1.932],[2.072,3.753],[4.193,1.63],[-1.799,-4.053]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13.125,"s":[{"i":[[-1.528,-1.182],[-1.806,-2.096],[1.256,1.458],[2.189,1.693]],"o":[[2.188,1.693],[1.265,1.468],[-1.806,-2.096],[-1.509,-1.168]],"v":[[-3.92,-1.932],[2.072,3.753],[4.193,1.63],[-1.799,-4.053]]}],"e":[{"i":[[-1.347,-1.222],[-1.54,-2.099],[1.071,1.46],[1.929,1.75]],"o":[[1.928,1.749],[1.079,1.47],[-1.54,-2.099],[-1.33,-1.207]],"v":[[1.229,6.127],[6.433,11.901],[8.579,10.066],[3.375,4.293]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.347,-1.222],[-1.54,-2.099],[1.071,1.46],[1.929,1.75]],"o":[[1.928,1.749],[1.079,1.47],[-1.54,-2.099],[-1.33,-1.207]],"v":[[1.229,6.127],[6.433,11.901],[8.579,10.066],[3.375,4.293]]}],"e":[{"i":[[-1.249,-1.53],[-1.315,-2.504],[0.915,1.742],[1.789,2.192]],"o":[[1.789,2.191],[0.921,1.754],[-1.315,-2.504],[-1.234,-1.512]],"v":[[3.136,9.833],[7.792,16.877],[10.395,15.253],[5.738,8.21]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-1.249,-1.53],[-1.315,-2.504],[0.915,1.742],[1.789,2.192]],"o":[[1.789,2.191],[0.921,1.754],[-1.315,-2.504],[-1.234,-1.512]],"v":[[3.136,9.833],[7.792,16.877],[10.395,15.253],[5.738,8.21]]}],"e":[{"i":[[-1.161,-1.544],[-1.188,-2.499],[0.826,1.738],[1.663,2.212]],"o":[[1.663,2.211],[0.832,1.75],[-1.188,-2.499],[-1.147,-1.525]],"v":[[5.446,14.812],[9.724,21.877],[12.33,20.39],[8.052,13.327]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.161,-1.544],[-1.188,-2.499],[0.826,1.738],[1.663,2.212]],"o":[[1.663,2.211],[0.832,1.75],[-1.188,-2.499],[-1.147,-1.525]],"v":[[5.446,14.812],[9.724,21.877],[12.33,20.39],[8.052,13.327]]}],"e":[{"i":[[-0.653,-1.864],[-0.383,-2.803],[0.267,1.949],[0.935,2.67]],"o":[[0.935,2.67],[0.269,1.963],[-0.383,-2.803],[-0.645,-1.841]],"v":[[16.756,32.634],[18.734,40.843],[21.734,40.202],[19.756,31.994]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.653,-1.864],[-0.383,-2.803],[0.267,1.949],[0.935,2.67]],"o":[[0.935,2.67],[0.269,1.963],[-0.383,-2.803],[-0.645,-1.841]],"v":[[16.756,32.634],[18.734,40.843],[21.734,40.202],[19.756,31.994]]}],"e":[{"i":[[-0.283,-1.911],[0.15,-2.763],[-0.104,1.922],[0.404,2.738]],"o":[[0.405,2.737],[-0.105,1.935],[0.15,-2.763],[-0.279,-1.888]],"v":[[18.575,56.468],[18.958,64.718],[21.957,64.657],[21.574,56.408]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[-0.283,-1.911],[0.15,-2.763],[-0.104,1.922],[0.404,2.738]],"o":[[0.405,2.737],[-0.105,1.935],[0.15,-2.763],[-0.279,-1.888]],"v":[[18.575,56.468],[18.958,64.718],[21.957,64.657],[21.574,56.408]]}],"e":[{"i":[[-0.029,-0.762],[0.484,-0.914],[-0.337,0.636],[0.041,1.091]],"o":[[0.042,1.091],[-0.339,0.64],[0.484,-0.914],[-0.028,-0.752]],"v":[[13.938,88.292],[13.274,91.3],[16.108,92.284],[16.77,89.277]]}]},{"t":26}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,255,255,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[142.656,39.675]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 26"},{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[204,107,88,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[114.908,60.096]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 39"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.557,1.702],[-2.308,-2.705],[21.515,14.611],[-12.126,-5.401],[-1.014,-5.177],[-15.081,-10.146],[-0.96,1.782],[-5.609,-0.566],[-4.301,2.151]],"o":[[-10.616,-3.963],[7.144,8.373],[-7.737,-5.254],[2.392,1.065],[1.607,5.837],[7.043,4.739],[2.597,-4.822],[6.608,0.667],[6.175,-3.198]],"v":[[1.215,-25.196],[-2.697,-20.504],[-20.681,-17.79],[-31.347,-11.996],[-33.777,-5.444],[-17.437,1.435],[-22.214,-11.37],[-4.383,-6.796],[8.658,-13.832]]}],"e":[{"i":[[5.382,1.481],[-2.291,-2.534],[21.059,13.434],[-11.791,-4.851],[-1.117,-4.942],[-5.815,-7.326],[-0.872,1.737],[-4.435,3.106],[-4.069,2.184]],"o":[[-10.302,-3.512],[7.09,7.842],[-7.573,-4.831],[2.326,0.957],[12.416,1.113],[5.069,6.386],[2.36,-4.702],[3.463,-2.425],[5.84,-3.24]],"v":[[-1.085,-26.946],[-4.712,-22.333],[-21.904,-19.232],[-31.984,-13.374],[-33.137,-4.551],[-4.905,11.888],[-13.867,-8.389],[3.41,-7.748],[15.804,-10.107]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[5.382,1.481],[-2.291,-2.534],[21.059,13.434],[-11.791,-4.851],[-1.117,-4.942],[-5.815,-7.326],[-0.872,1.737],[-4.435,3.106],[-4.069,2.184]],"o":[[-10.302,-3.512],[7.09,7.842],[-7.573,-4.831],[2.326,0.957],[12.416,1.113],[5.069,6.386],[2.36,-4.702],[3.463,-2.425],[5.84,-3.24]],"v":[[-1.085,-26.946],[-4.712,-22.333],[-21.904,-19.232],[-31.984,-13.374],[-33.137,-4.551],[-4.905,11.888],[-13.867,-8.389],[3.41,-7.748],[15.804,-10.107]]}],"e":[{"i":[[10.271,3.587],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-5.352,-14.79],[-4.918,0.735],[-4.633,2.802],[-8.956,-8.093]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.829,6.911],[2.775,7.667],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[3.009,-28.025],[-2.668,-23.415],[-23.779,-23.469],[-30.478,-16.298],[-28.049,-4.849],[2.632,24.352],[11.266,16.137],[29.961,22.68],[35.986,15.155]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[10.271,3.587],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-5.352,-14.79],[-4.918,0.735],[-4.633,2.802],[-8.956,-8.093]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.829,6.911],[2.775,7.667],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[3.009,-28.025],[-2.668,-23.415],[-23.779,-23.469],[-30.478,-16.298],[-28.049,-4.849],[2.632,24.352],[11.266,16.137],[29.961,22.68],[35.986,15.155]]}],"e":[{"i":[[17.349,7.827],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-16.437,-25.651],[-4.918,0.735],[-4.633,2.802],[-4.773,-5.022]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.956,3.924],[4.399,6.865],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[5.009,-27.025],[-0.668,-22.415],[-22.529,-21.219],[-29.228,-14.048],[-31.549,-0.099],[5.882,24.352],[12.516,16.137],[30.211,18.93],[39.986,14.905]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13.125,"s":[{"i":[[17.349,7.827],[-2.116,-2.681],[20.115,14.81],[-10.758,-6.843],[-0.784,-5.006],[-16.437,-25.651],[-4.918,0.735],[-4.633,2.802],[-4.773,-5.022]],"o":[[-10.044,-4.192],[6.55,8.298],[-7.233,-5.326],[14.622,9.302],[0.956,3.924],[4.399,6.865],[5.203,-0.777],[3.617,-2.188],[-2.581,-10.391]],"v":[[5.009,-27.025],[-0.668,-22.415],[-22.529,-21.219],[-29.228,-14.048],[-31.549,-0.099],[5.882,24.352],[12.516,16.137],[30.211,18.93],[39.986,14.905]]}],"e":[{"i":[[15.573,9.327],[-1.788,-2.671],[10.507,8.169],[-9.59,-7.212],[-0.368,-4.755],[-2.611,-31.528],[-4.668,0.327],[-4.553,2.289],[-4.109,-5.063]],"o":[[-9.116,-4.672],[5.535,8.267],[-6.674,-5.189],[13.035,9.803],[0.608,3.752],[0.159,1.917],[4.939,-0.346],[3.555,-1.787],[-1.658,-9.939]],"v":[[14.024,-15.811],[4.569,-11.728],[-14.833,-15.424],[-21.646,-9.188],[-21.493,3.048],[6.62,41.145],[15.3,22.202],[31.698,26.124],[41.165,23.066]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[15.573,9.327],[-1.788,-2.671],[10.507,8.169],[-9.59,-7.212],[-0.368,-4.755],[-2.611,-31.528],[-4.668,0.327],[-4.553,2.289],[-4.109,-5.063]],"o":[[-9.116,-4.672],[5.535,8.267],[-6.674,-5.189],[13.035,9.803],[0.608,3.752],[0.159,1.917],[4.939,-0.346],[3.555,-1.787],[-1.658,-9.939]],"v":[[14.024,-15.811],[4.569,-11.728],[-14.833,-15.424],[-21.646,-9.188],[-21.493,3.048],[6.62,41.145],[15.3,22.202],[31.698,26.124],[41.165,23.066]]}],"e":[{"i":[[12.158,11.525],[-1.489,-3.159],[16.617,19.394],[-8.75,-9.663],[0.374,-5.167],[-4.357,-24.351],[-5.068,-0.403],[-5.261,1.722],[-3.595,-6.104]],"o":[[-9.037,-6.493],[4.609,9.777],[-5.975,-6.974],[16.753,18.499],[0.047,4.129],[1.468,8.206],[5.362,0.427],[4.108,-1.345],[-0.173,-10.946]],"v":[[16.621,-13.463],[9.903,-10.181],[-8.647,-14.034],[-11.474,-7.437],[-20.005,0.921],[3.636,34.413],[12.139,27.761],[29.121,34.626],[39.785,32.872]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[12.158,11.525],[-1.489,-3.159],[16.617,19.394],[-8.75,-9.663],[0.374,-5.167],[-4.357,-24.351],[-5.068,-0.403],[-5.261,1.722],[-3.595,-6.104]],"o":[[-9.037,-6.493],[4.609,9.777],[-5.975,-6.974],[16.753,18.499],[0.047,4.129],[1.468,8.206],[5.362,0.427],[4.108,-1.345],[-0.173,-10.946]],"v":[[16.621,-13.463],[9.903,-10.181],[-8.647,-14.034],[-11.474,-7.437],[-20.005,0.921],[3.636,34.413],[12.139,27.761],[29.121,34.626],[39.785,32.872]]}],"e":[{"i":[[12.311,15.855],[9.696,6.761],[12.464,8.037],[-10.186,-7.669],[-0.388,-5.052],[-3.377,-12.124],[-4.961,0.345],[-10.559,-1.634],[-7.262,-5.933]],"o":[[-9.096,-8.405],[-8.671,-6.047],[-7.549,-4.868],[13.844,10.424],[0.644,3.987],[2.188,7.854],[5.248,-0.365],[4.716,0.73],[0.152,-24.762]],"v":[[19.399,-11.569],[6.917,-8.181],[3.27,-1.502],[-10.151,-2.39],[-8.992,7.431],[4.657,31.186],[14.417,65.019],[31.338,54.196],[41.128,43.824]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[12.311,15.855],[9.696,6.761],[12.464,8.037],[-10.186,-7.669],[-0.388,-5.052],[-3.377,-12.124],[-4.961,0.345],[-10.559,-1.634],[-7.262,-5.933]],"o":[[-9.096,-8.405],[-8.671,-6.047],[-7.549,-4.868],[13.844,10.424],[0.644,3.987],[2.188,7.854],[5.248,-0.365],[4.716,0.73],[0.152,-24.762]],"v":[[19.399,-11.569],[6.917,-8.181],[3.27,-1.502],[-10.151,-2.39],[-8.992,7.431],[4.657,31.186],[14.417,65.019],[31.338,54.196],[41.128,43.824]]}],"e":[{"i":[[7.504,14.978],[-0.324,-3.477],[9.015,23.895],[-4.935,-12.066],[2.112,-4.73],[2.411,-21.576],[-2.322,0.481],[-5.533,-0.173],[-1.301,-6.963]],"o":[[-6.284,-9.184],[1.003,10.762],[-3.242,-8.593],[9.448,23.1],[-1.363,3.898],[-0.157,1.407],[5.267,-1.09],[4.32,0.135],[7.247,-10.253]],"v":[[33.541,8.86],[26.107,9.657],[9.98,-0.286],[5.074,4.953],[-5.795,9.905],[5.748,52.04],[14.746,51.062],[28.909,58.331],[36.532,62.815]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[7.504,14.978],[-0.324,-3.477],[9.015,23.895],[-4.935,-12.066],[2.112,-4.73],[2.411,-21.576],[-2.322,0.481],[-5.533,-0.173],[-1.301,-6.963]],"o":[[-6.284,-9.184],[1.003,10.762],[-3.242,-8.593],[9.448,23.1],[-1.363,3.898],[-0.157,1.407],[5.267,-1.09],[4.32,0.135],[7.247,-10.253]],"v":[[33.541,8.86],[26.107,9.657],[9.98,-0.286],[5.074,4.953],[-5.795,9.905],[5.748,52.04],[14.746,51.062],[28.909,58.331],[36.532,62.815]]}],"e":[{"i":[[3.24,19.81],[5.287,10.572],[7.109,13.015],[-5.284,-11.604],[2.073,-4.623],[2.825,-12.264],[-4.523,-2.067],[-8.495,-6.48],[-3.545,-8.681]],"o":[[-3.975,-11.729],[-4.729,-9.455],[-4.306,-7.883],[7.182,15.772],[-1.339,3.81],[-1.83,7.945],[4.785,2.187],[3.794,2.894],[11.963,-21.68]],"v":[[38.684,30.36],[26.1,27.372],[19.705,31.498],[8.339,24.306],[4.665,33.487],[5.306,60.876],[-8.283,87.261],[12.752,91.337],[26.808,87.903]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[3.24,19.81],[5.287,10.572],[7.109,13.015],[-5.284,-11.604],[2.073,-4.623],[2.825,-12.264],[-4.523,-2.067],[-8.495,-6.48],[-3.545,-8.681]],"o":[[-3.975,-11.729],[-4.729,-9.455],[-4.306,-7.883],[7.182,15.772],[-1.339,3.81],[-1.83,7.945],[4.785,2.187],[3.794,2.894],[11.963,-21.68]],"v":[[38.684,30.36],[26.1,27.372],[19.705,31.498],[8.339,24.306],[4.665,33.487],[5.306,60.876],[-8.283,87.261],[12.752,91.337],[26.808,87.903]]}],"e":[{"i":[[0.595,5.702],[2.679,-9.31],[3.307,0.964],[3.94,3.256],[1.114,-8.424],[2.973,-6.814],[-4.523,-2.067],[-8.495,-6.48],[-3.545,-8.681]],"o":[[2.095,-5.798],[-0.648,2.25],[-4.926,-1.436],[-2.803,-2.317],[-1.386,9.076],[-3.26,7.473],[4.785,2.187],[3.794,2.894],[2.971,-1.841]],"v":[[39.184,55.86],[34.1,48.372],[28.205,58.998],[17.339,43.806],[4.165,49.987],[2.306,73.876],[-8.283,87.261],[12.752,91.337],[26.808,87.903]]}]},{"t":26}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[126.161,53.817]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 40"}],"bounds":{"l":89,"t":24,"b":146,"r":168},"ip":7,"op":26,"st":7}]},{"id":"comp_18","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"miscelanea12","ks":{"o":{"k":100},"r":{"k":158},"p":{"k":[172.75,177.5,0]},"a":{"k":[-58,23.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":54,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-54,19],[-54,19]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-57,22],[-66.5,31]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":59,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-57,22],[-66.5,31]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-66,30.5],[-66.5,31]]}]},{"t":64}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[222,121,94,255]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-68,"t":17,"b":33,"r":-52},"ip":54,"op":64,"st":13},{"ddd":0,"ind":1,"ty":4,"nm":"miscelanea11","ks":{"o":{"k":100},"r":{"k":78},"p":{"k":[77,203.75,0]},"a":{"k":[-58,23.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-54,19],[-54,19]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-57,22],[-66.5,31]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":55,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-57,22],[-66.5,31]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-66,30.5],[-66.5,31]]}]},{"t":60}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[222,121,94,255]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-68,"t":17,"b":33,"r":-52},"ip":50,"op":60,"st":9},{"ddd":0,"ind":2,"ty":4,"nm":"miscelanea8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[67,161,0]},"a":{"k":[-58,23.5,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":false,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-54,19],[-54,19]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-57,22],[-66.5,31]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-57,22],[-66.5,31]]}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-66,30.5],[-66.5,31]]}]},{"t":51}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-68,"t":17,"b":33,"r":-52},"ip":41,"op":51,"st":0},{"ddd":0,"ind":3,"ty":4,"nm":"miscelanea7","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":26,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[100],"e":[0]},{"t":41}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[93.023,233.338,0],"e":[113.023,255.338,0],"to":[3.33333325386047,3.66666674613953,0],"ti":[-3.33333325386047,-3.66666674613953,0]},{"t":41}]},"a":{"k":[33.851,198.962,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":24,"s":[0,0,100],"e":[100,100,100]},{"t":26}]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-1.557,-1.116],[-2.131,1.778],[1.825,2.262],[2.365,-1.849],[-1.275,-2.372],[0.915,1.704],[-0.903,0.981],[-1.044,-1.091],[2.478,1.776]],"o":[[2.369,1.698],[2.5,-2.085],[-2.009,-2.491],[-2.21,1.728],[0.916,1.705],[-0.658,-1.223],[1.173,-1.275],[2.527,2.642],[-1.576,-1.13]],"v":[[-3.63,4.66],[3.952,4.005],[4.052,-3.867],[-3.786,-4.505],[-5.177,2.974],[-2.586,1.46],[-1.933,-2.135],[1.931,-1.746],[-2.116,2.07]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[34.001,199.3]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 4"}],"bounds":{"l":28,"t":193,"b":205,"r":40},"ip":24,"op":6308,"st":8},{"ddd":0,"ind":4,"ty":4,"nm":"miscelanea6","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":28,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":30,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":41,"s":[100],"e":[0]},{"t":43}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":28,"s":[69.523,81.838,0],"e":[49.523,71.838,0],"to":[-3.33333325386047,-1.66666662693024,0],"ti":[3.33333325386047,1.66666662693024,0]},{"t":43}]},"a":{"k":[10.351,27.462,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":28,"s":[10,10,100],"e":[100,100,100]},{"t":31}]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-1.557,-1.116],[-2.131,1.778],[1.825,2.262],[2.365,-1.849],[-1.275,-2.372],[0.915,1.704],[-0.903,0.981],[-1.044,-1.091],[2.478,1.776]],"o":[[2.369,1.698],[2.5,-2.085],[-2.009,-2.491],[-2.21,1.728],[0.916,1.705],[-0.658,-1.223],[1.173,-1.275],[2.527,2.642],[-1.576,-1.13]],"v":[[-3.63,4.66],[3.952,4.005],[4.053,-3.867],[-3.786,-4.505],[-5.177,2.974],[-2.586,1.46],[-1.933,-2.135],[1.932,-1.746],[-2.116,2.07]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[11.001,28.3]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 5"}],"bounds":{"l":5,"t":22,"b":34,"r":17},"ip":28,"op":6312,"st":12},{"ddd":0,"ind":5,"ty":4,"nm":"miscelanea4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[132.023,256.838,0]},"a":{"k":[72.851,202.462,0]},"s":{"k":[100,100,100]}},"hasMask":true,"masksProperties":[{"cl":true,"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-1.402,1.711],[2.211,3.403]],"o":[[-1.91,3.153],[1.59,2.357],[1.961,-2.393],[-6.312,-9.717]],"v":[[59.738,179.22],[62.488,190.266],[69.868,192.016],[68.118,185.22]]}],"e":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-2.039,0.857],[2.211,3.403]],"o":[[-1.91,3.153],[1.59,2.357],[3.295,-1.385],[-6.312,-9.717]],"v":[[59.738,179.22],[61.238,194.516],[73.618,198.016],[74.868,181.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-2.039,0.857],[2.211,3.403]],"o":[[-1.91,3.153],[1.59,2.357],[3.295,-1.385],[-6.312,-9.717]],"v":[[59.738,179.22],[61.238,194.516],[73.618,198.016],[74.868,181.22]]}],"e":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-4.039,-1.143],[2.211,3.403]],"o":[[-1.91,3.153],[1.59,2.357],[5.84,1.652],[-6.312,-9.717]],"v":[[59.738,179.22],[61.238,194.516],[73.368,202.766],[74.868,181.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":49,"s":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-4.039,-1.143],[2.211,3.403]],"o":[[-1.91,3.153],[1.59,2.357],[5.84,1.652],[-6.312,-9.717]],"v":[[59.738,179.22],[61.238,194.516],[73.368,202.766],[74.868,181.22]]}],"e":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-2.289,2.857],[2.211,3.403]],"o":[[-1.91,3.153],[1.59,2.357],[1.495,-1.866],[-6.312,-9.717]],"v":[[64.488,187.97],[67.488,204.516],[75.618,208.016],[76.118,192.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-2.289,2.857],[2.211,3.403]],"o":[[-1.91,3.153],[1.59,2.357],[1.495,-1.866],[-6.312,-9.717]],"v":[[64.488,187.97],[67.488,204.516],[75.618,208.016],[76.118,192.22]]}],"e":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-3.289,4.857],[-0.289,2.153]],"o":[[-1.91,3.153],[1.59,2.357],[1.843,-2.721],[1.71,-12.736]],"v":[[68.238,191.72],[68.488,209.016],[83.868,213.516],[78.618,202.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[1.91,-3.153],[-1.59,-2.357],[-3.289,4.857],[-0.289,2.153]],"o":[[-1.91,3.153],[1.59,2.357],[1.843,-2.721],[1.71,-12.736]],"v":[[68.238,191.72],[68.488,209.016],[83.868,213.516],[78.618,202.22]]}],"e":[{"i":[[1.59,-2.597],[-1.59,-2.357],[-3.289,4.857],[-0.217,2.162]],"o":[[-1.42,2.318],[1.59,2.357],[1.843,-2.721],[0.711,-7.097]],"v":[[72.488,195.47],[71.488,210.266],[83.868,213.516],[78.618,202.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":54,"s":[{"i":[[1.59,-2.597],[-1.59,-2.357],[-3.289,4.857],[-0.217,2.162]],"o":[[-1.42,2.318],[1.59,2.357],[1.843,-2.721],[0.711,-7.097]],"v":[[72.488,195.47],[71.488,210.266],[83.868,213.516],[78.618,202.22]]}],"e":[{"i":[[2.34,0.903],[-3.16,-4.643],[-3.289,4.857],[0.466,2.122]],"o":[[-2.536,-0.979],[1.6,2.351],[1.843,-2.721],[-0.789,-3.597]],"v":[[73.988,198.47],[70.988,212.516],[90.118,215.016],[78.368,204.47]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":55,"s":[{"i":[[2.34,0.903],[-3.16,-4.643],[-3.289,4.857],[0.466,2.122]],"o":[[-2.536,-0.979],[1.6,2.351],[1.843,-2.721],[-0.789,-3.597]],"v":[[73.988,198.47],[70.988,212.516],[90.118,215.016],[78.368,204.47]]}],"e":[{"i":[[2.09,0.403],[-3.16,-4.643],[-3.289,4.857],[1.711,1.903]],"o":[[-2.669,-0.515],[1.6,2.351],[1.843,-2.721],[-2.462,-2.738]],"v":[[72.488,203.47],[73.238,214.766],[90.118,215.016],[79.118,207.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":56,"s":[{"i":[[2.09,0.403],[-3.16,-4.643],[-3.289,4.857],[1.711,1.903]],"o":[[-2.669,-0.515],[1.6,2.351],[1.843,-2.721],[-2.462,-2.738]],"v":[[72.488,203.47],[73.238,214.766],[90.118,215.016],[79.118,207.22]]}],"e":[{"i":[[1.404,-2.88],[-9.91,-0.643],[-3.289,4.857],[6.461,1.653]],"o":[[-1.66,3.403],[2.838,0.184],[1.843,-2.721],[-3.567,-0.913]],"v":[[75.738,209.47],[88.488,217.266],[102.118,213.766],[84.118,209.22]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":58,"s":[{"i":[[1.404,-2.88],[-9.91,-0.643],[-3.289,4.857],[6.461,1.653]],"o":[[-1.66,3.403],[2.838,0.184],[1.843,-2.721],[-3.567,-0.913]],"v":[[75.738,209.47],[88.488,217.266],[102.118,213.766],[84.118,209.22]]}],"e":[{"i":[[1.404,-2.88],[-9.91,-0.643],[-3.289,4.857],[6.461,1.653]],"o":[[-1.66,3.403],[2.838,0.184],[1.843,-2.721],[-3.567,-0.913]],"v":[[84.738,211.47],[97.488,219.266],[111.118,215.766],[93.118,211.22]]}]},{"t":59}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-1.903,-0.337],[-0.804,-2.362],[-2.808,-1.313],[1.751,0.819],[0.332,2.67],[-0.178,1.846],[2.488,0.441]],"o":[[3.533,0.626],[1.036,3.049],[1.742,0.813],[-2.108,-0.985],[-0.228,-1.827],[0.24,-2.471],[-1.892,-0.335]],"v":[[-4.183,-6.652],[-3.469,3.176],[2.82,9.068],[4.335,6.477],[-0.648,1.768],[0.414,-4.007],[-3.385,-9.546]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[75.257,202.793]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 7"}],"bounds":{"l":69,"t":193,"b":213,"r":81},"ip":46,"op":6330,"st":30},{"ddd":0,"ind":6,"ty":4,"nm":"miscelanea3","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":65,"s":[100],"e":[0]},{"t":68}]},"r":{"k":0},"p":{"k":[94.523,73.338,0]},"a":{"k":[35.351,18.962,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[{"i":[[-1.301,0],[1.301,0]],"o":[[1.301,0],[-1.301,0]],"v":[[-0.634,17.75],[-0.634,15.733]]}],"e":[{"i":[[-2.551,0],[2.551,0]],"o":[[2.551,0],[-2.551,0]],"v":[[-4.384,-4.75],[-4.384,-8.705]]}]},{"t":68}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[36.162,18.624]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 8"},{"ty":"gr","it":[{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":34,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":38,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64,"s":[100],"e":[0]},{"t":68}]}}],"nm":"Group 9"}],"bounds":{"l":31,"t":9,"b":37,"r":37},"ip":34,"op":6318,"st":18},{"ddd":0,"ind":7,"ty":4,"nm":"miscelanea2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[141.523,71.838,0]},"a":{"k":[82.351,17.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":33,"s":[{"i":[[-0.426,0],[0.426,0]],"o":[[0.426,0],[-0.426,0]],"v":[[-2.759,14.625],[-2.759,13.965]]}],"e":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-1.25,14.625],[-1.25,11.625]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":34,"s":[{"i":[[-1.935,0],[1.935,0]],"o":[[1.935,0],[-1.935,0]],"v":[[-1.25,14.625],[-1.25,11.625]]}],"e":[{"i":[[-2.801,0],[2.801,0]],"o":[[2.801,0],[-2.801,0]],"v":[[3.616,4.375],[3.616,0.033]]}]},{"t":70}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[74,161,175,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[82.162,17.957]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":33,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":43,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":61,"s":[100],"e":[0]},{"t":73}]}}],"nm":"Group 9"}],"bounds":{"l":79,"t":17,"b":33,"r":88},"ip":33,"op":6317,"st":17},{"ddd":0,"ind":8,"ty":0,"nm":"BPliegue1","refId":"comp_19","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[125,137.5,0],"e":[75,137.5,0],"to":[-8.33333301544189,0,0],"ti":[8.33333301544189,0,0]},{"t":12}]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":9,"ty":0,"nm":"miscelanea1","refId":"comp_20","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"hasMask":true,"masksProperties":[{"cl":true,"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":39,"s":[{"i":[[2.75,-0.25],[0.25,-10.25],[-5.25,0],[-0.25,2.75],[-1.25,7.75]],"o":[[-2.682,0.244],[-0.497,20.369],[5.25,0],[0.25,-2.75],[1.309,-8.119]],"v":[[159.25,88],[149.75,91.75],[164.25,104],[166.5,97],[163.5,98.75]]}],"e":[{"i":[[2.75,-0.25],[0.25,-10.25],[-5.25,0],[-0.25,2.75],[-1.25,7.75]],"o":[[-2.682,0.244],[-0.497,20.369],[5.25,0],[0.25,-2.75],[1.309,-8.119]],"v":[[156.75,75.75],[149.75,91.75],[164.25,104],[166.5,97],[162.25,89.25]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":40,"s":[{"i":[[2.75,-0.25],[0.25,-10.25],[-5.25,0],[-0.25,2.75],[-1.25,7.75]],"o":[[-2.682,0.244],[-0.497,20.369],[5.25,0],[0.25,-2.75],[1.309,-8.119]],"v":[[156.75,75.75],[149.75,91.75],[164.25,104],[166.5,97],[162.25,89.25]]}],"e":[{"i":[[1.45,3.626],[1.25,-23],[-5.25,0],[-0.25,2.75],[-1.25,7.75]],"o":[[-1,-2.5],[-1.106,20.345],[5.25,0],[0.25,-2.75],[1.309,-8.119]],"v":[[161.75,72.25],[149.75,91.75],[164.25,104],[166.5,97],[162.25,89.25]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":41,"s":[{"i":[[1.45,3.626],[1.25,-23],[-5.25,0],[-0.25,2.75],[-1.25,7.75]],"o":[[-1,-2.5],[-1.106,20.345],[5.25,0],[0.25,-2.75],[1.309,-8.119]],"v":[[161.75,72.25],[149.75,91.75],[164.25,104],[166.5,97],[162.25,89.25]]}],"e":[{"i":[[2.28,1.71],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[-1.25,7.75]],"o":[[-4,-3],[-2.25,20.25],[5.25,0],[0.25,-2.75],[1.309,-8.119]],"v":[[165,70],[148.75,90.5],[164.25,104],[166.5,97],[168.5,81.5]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[{"i":[[2.28,1.71],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[-1.25,7.75]],"o":[[-4,-3],[-2.25,20.25],[5.25,0],[0.25,-2.75],[1.309,-8.119]],"v":[[165,70],[148.75,90.5],[164.25,104],[166.5,97],[168.5,81.5]]}],"e":[{"i":[[3.466,-0.547],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[2.347,6.614]],"o":[[-4.75,0.75],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-2.75,-7.75]],"v":[[164,66.75],[148.75,90.5],[164.25,104],[167.75,88],[174,73.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":43,"s":[{"i":[[3.466,-0.547],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[2.347,6.614]],"o":[[-4.75,0.75],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-2.75,-7.75]],"v":[[164,66.75],[148.75,90.5],[164.25,104],[167.75,88],[174,73.75]]}],"e":[{"i":[[3.466,-0.547],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[2.347,6.614]],"o":[[-4.75,0.75],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-2.75,-7.75]],"v":[[163.75,62.5],[148.75,90.5],[164.25,104],[167.75,88],[174,73.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":44,"s":[{"i":[[3.466,-0.547],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[2.347,6.614]],"o":[[-4.75,0.75],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-2.75,-7.75]],"v":[[163.75,62.5],[148.75,90.5],[164.25,104],[167.75,88],[174,73.75]]}],"e":[{"i":[[2.25,2],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[2.347,6.614]],"o":[[-4.905,-4.36],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-2.75,-7.75]],"v":[[164.75,61.25],[147,74.25],[158,93.75],[167.75,88],[174,73.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[2.25,2],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[2.347,6.614]],"o":[[-4.905,-4.36],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-2.75,-7.75]],"v":[[164.75,61.25],[147,74.25],[158,93.75],[167.75,88],[174,73.75]]}],"e":[{"i":[[-1,5.25],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[0.5,7]],"o":[[1,-5.25],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-0.5,-7]],"v":[[176.5,56.5],[151,62.25],[158,86],[161.75,81],[171.75,70]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[{"i":[[-1,5.25],[2.25,-20.25],[-5.25,0],[-0.25,2.75],[0.5,7]],"o":[[1,-5.25],[-2.25,20.25],[5.25,0],[0.25,-2.75],[-0.5,-7]],"v":[[176.5,56.5],[151,62.25],[158,86],[161.75,81],[171.75,70]]}],"e":[{"i":[[-1,5.25],[8.593,-18.474],[-3,-0.25],[-0.75,2.5],[0.5,7]],"o":[[1,-5.25],[-10,21.5],[4.58,0.382],[0.793,-2.645],[-0.5,-7]],"v":[[191.25,39.75],[160,51.5],[156.75,77.25],[169.75,69.5],[179.25,56.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[{"i":[[-1,5.25],[8.593,-18.474],[-3,-0.25],[-0.75,2.5],[0.5,7]],"o":[[1,-5.25],[-10,21.5],[4.58,0.382],[0.793,-2.645],[-0.5,-7]],"v":[[191.25,39.75],[160,51.5],[156.75,77.25],[169.75,69.5],[179.25,56.75]]}],"e":[{"i":[[-1,5.25],[8.593,-18.474],[-1,-1.25],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-10,21.5],[1.746,2.183],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[161,51.5],[159.25,74.25],[171.75,68.5],[179.25,56.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":50,"s":[{"i":[[-1,5.25],[8.593,-18.474],[-1,-1.25],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-10,21.5],[1.746,2.183],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[161,51.5],[159.25,74.25],[171.75,68.5],[179.25,56.75]]}],"e":[{"i":[[-1,5.25],[6.235,-19.397],[-3.25,-0.75],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-2.25,7],[2.841,0.656],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[160,51.5],[164.25,71.25],[177.5,55.25],[179.25,56.75]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[{"i":[[-1,5.25],[6.235,-19.397],[-3.25,-0.75],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-2.25,7],[2.841,0.656],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[160,51.5],[164.25,71.25],[177.5,55.25],[179.25,56.75]]}],"e":[{"i":[[-1,5.25],[6.235,-19.397],[-3.75,3],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-2.25,7],[2.954,-2.363],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[158,53],[165,67.5],[181.75,46.25],[188.5,38.25]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":52,"s":[{"i":[[-1,5.25],[6.235,-19.397],[-3.75,3],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-2.25,7],[2.954,-2.363],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[158,53],[165,67.5],[181.75,46.25],[188.5,38.25]]}],"e":[{"i":[[-1,5.25],[6.235,-19.397],[-3.396,-3.396],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-2.25,7],[2.25,2.25],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[167.5,46],[162.25,63],[181.75,46.25],[188.5,38.25]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":53,"s":[{"i":[[-1,5.25],[6.235,-19.397],[-3.396,-3.396],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-2.25,7],[2.25,2.25],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[167.5,46],[162.25,63],[181.75,46.25],[188.5,38.25]]}],"e":[{"i":[[-1,5.25],[6.235,-19.397],[-3.396,-3.396],[-0.75,7.75],[0.5,7]],"o":[[1,-5.25],[-2.25,7],[2.25,2.25],[0.266,-2.749],[-0.5,-7]],"v":[[191.25,39.75],[177,36.5],[170.75,55],[186.5,38.75],[188.5,38.25]]}]},{"t":55}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"w":250,"h":275,"ip":38,"op":6293,"st":-7},{"ddd":0,"ind":10,"ty":0,"nm":"B3_yellow","refId":"comp_21","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":11,"op":6311,"st":11},{"ddd":0,"ind":11,"ty":4,"nm":"miscelanea5","ks":{"o":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":36,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":38,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":51,"s":[100],"e":[0]},{"t":53}]},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":36,"s":[164.273,105.588,0],"e":[188.023,84.838,0],"to":[3.95833325386047,-3.45833325386047,0],"ti":[-3.95833325386047,3.45833325386047,0]},{"t":55}]},"a":{"k":[128.851,30.462,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":36,"s":[16,16,100],"e":[100,100,100]},{"t":42}]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-1.557,-1.116],[-2.131,1.778],[1.825,2.262],[2.365,-1.849],[-1.275,-2.372],[0.915,1.704],[-0.903,0.981],[-1.044,-1.091],[2.478,1.776]],"o":[[2.369,1.698],[2.5,-2.085],[-2.009,-2.491],[-2.21,1.728],[0.916,1.705],[-0.658,-1.223],[1.173,-1.275],[2.527,2.642],[-1.576,-1.13]],"v":[[-3.629,4.66],[3.952,4.005],[4.052,-3.867],[-3.785,-4.505],[-5.177,2.974],[-2.586,1.46],[-1.932,-2.135],[1.931,-1.746],[-2.116,2.07]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[129.001,31.3]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 6"}],"bounds":{"l":123,"t":25,"b":37,"r":135},"ip":36,"op":6320,"st":20},{"ddd":0,"ind":12,"ty":0,"nm":"B2_red","refId":"comp_22","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":9,"op":63,"st":9},{"ddd":0,"ind":13,"ty":0,"nm":"B1_yellow","refId":"comp_23","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":9,"op":52,"st":9}]},{"id":"comp_19","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[125,137.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[0,0],[0,-39],[-1.736,-13.904],[0,0],[1,40],[0.816,16.41]],"o":[[0,0],[0,24.876],[1.461,0.915],[0,0],[-0.217,-8.687],[-0.948,-14.066]],"v":[[-50.5,-49],[-51.5,25],[-50.461,101.585],[-45,100.75],[-49.25,26.75],[-46.578,-23.525]]}],"e":[{"i":[[0,0],[0,-39],[-2.013,-13.914],[0,0],[-0.25,48.25],[1.394,16.184]],"o":[[0,0],[0,23.955],[1.122,3.104],[0,0],[0.588,-30.586],[-1.558,-14.417]],"v":[[-46,-48.875],[-46.75,23.25],[-45.721,99.703],[-36,95.375],[-41.875,27.875],[-35.594,-24.084]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,-39],[-2.013,-13.914],[0,0],[-0.25,48.25],[1.394,16.184]],"o":[[0,0],[0,23.955],[1.122,3.104],[0,0],[0.588,-30.586],[-1.558,-14.417]],"v":[[-46,-48.875],[-46.75,23.25],[-45.721,99.703],[-36,95.375],[-41.875,27.875],[-35.594,-24.084]]}],"e":[{"i":[[0,0],[0,-39],[-2.29,-13.924],[0,0],[-1.5,56.5],[1.973,15.959]],"o":[[0,0],[0,23.034],[0.783,5.294],[0,0],[1.393,-52.484],[-0.39,-5.857]],"v":[[-34.5,-48.5],[-42,21.5],[-40.982,97.822],[-27,90],[-34.5,29],[-23.11,-43.643]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,-39],[-2.29,-13.924],[0,0],[-1.5,56.5],[1.973,15.959]],"o":[[0,0],[0,23.034],[0.783,5.294],[0,0],[1.393,-52.484],[-0.39,-5.857]],"v":[[-34.5,-48.5],[-42,21.5],[-40.982,97.822],[-27,90],[-34.5,29],[-23.11,-43.643]]}],"e":[{"i":[[0,0],[0,-39],[-1.703,1.281],[0,0],[8,30],[2.674,21.378]],"o":[[0,0],[0,19.351],[13.023,-9.794],[0,0],[-15.257,-57.212],[-2.122,-16.961]],"v":[[-33,-49.5],[-35,20.5],[-28.023,101.294],[-9.5,94],[-15,31.5],[-5.674,-36.878]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,-39],[-1.703,1.281],[0,0],[8,30],[2.674,21.378]],"o":[[0,0],[0,19.351],[13.023,-9.794],[0,0],[-15.257,-57.212],[-2.122,-16.961]],"v":[[-33,-49.5],[-35,20.5],[-28.023,101.294],[-9.5,94],[-15,31.5],[-5.674,-36.878]]}],"e":[{"i":[[0,0],[-1.147,-38.983],[0.023,-0.294],[0,0],[-8.25,19.5],[11.674,8.378]],"o":[[0,0],[1,34],[4.023,-14.794],[0,0],[15.156,-35.823],[-9.302,-6.676]],"v":[[0,-48.5],[-11,25.5],[0.977,101.294],[20.5,91.5],[11,26.5],[20.326,-45.878]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[-1.147,-38.983],[0.023,-0.294],[0,0],[-8.25,19.5],[11.674,8.378]],"o":[[0,0],[1,34],[4.023,-14.794],[0,0],[15.156,-35.823],[-9.302,-6.676]],"v":[[0,-48.5],[-11,25.5],[0.977,101.294],[20.5,91.5],[11,26.5],[20.326,-45.878]]}],"e":[{"i":[[0,0],[-1.147,-38.983],[0.023,-0.294],[0,0],[14.75,32.375],[11.174,9.628]],"o":[[0,0],[1,34],[9.523,-14.794],[0,0],[-14.75,-33.125],[-7.326,-2.372]],"v":[[15.625,-47.5],[5.25,27.375],[16.102,99.044],[34.75,97.25],[25.25,26.625],[28.326,-45.128]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[-1.147,-38.983],[0.023,-0.294],[0,0],[14.75,32.375],[11.174,9.628]],"o":[[0,0],[1,34],[9.523,-14.794],[0,0],[-14.75,-33.125],[-7.326,-2.372]],"v":[[15.625,-47.5],[5.25,27.375],[16.102,99.044],[34.75,97.25],[25.25,26.625],[28.326,-45.128]]}],"e":[{"i":[[0,0],[-4,-62.25],[0.023,-0.294],[0,0],[12,34.25],[9.174,3.378]],"o":[[0,0],[2.181,33.945],[3.773,-9.294],[0,0],[-10,-31.75],[-2.826,-3.622]],"v":[[29.25,-47],[16.5,29.25],[31.227,96.794],[45,95.5],[37.5,19.75],[36.326,-44.378]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[-4,-62.25],[0.023,-0.294],[0,0],[12,34.25],[9.174,3.378]],"o":[[0,0],[2.181,33.945],[3.773,-9.294],[0,0],[-10,-31.75],[-2.826,-3.622]],"v":[[29.25,-47],[16.5,29.25],[31.227,96.794],[45,95.5],[37.5,19.75],[36.326,-44.378]]}],"e":[{"i":[[0,0],[-1.147,-38.983],[0.023,-0.294],[0,0],[-4.917,18.122],[4.924,0.128]],"o":[[0,0],[1,34],[11.648,-8.294],[0,0],[6.75,-24.875],[-5.076,-1.872]],"v":[[29.375,-44.25],[27.75,21.625],[29.852,92.294],[49.25,91.25],[42.25,15.375],[44.076,-40.128]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-1.147,-38.983],[0.023,-0.294],[0,0],[-4.917,18.122],[4.924,0.128]],"o":[[0,0],[1,34],[11.648,-8.294],[0,0],[6.75,-24.875],[-5.076,-1.872]],"v":[[29.375,-44.25],[27.75,21.625],[29.852,92.294],[49.25,91.25],[42.25,15.375],[44.076,-40.128]]}],"e":[{"i":[[0,0],[-3.5,-58],[0.023,-0.294],[0,0],[19.5,41.5],[2.392,4.026]],"o":[[0,0],[2.049,33.953],[3.523,-23.794],[0,0],[-9.628,-20.489],[-4.826,-8.122]],"v":[[41,-48],[39,14],[42.477,95.794],[59.5,90.5],[47,11],[53.326,-40.378]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[-3.5,-58],[0.023,-0.294],[0,0],[19.5,41.5],[2.392,4.026]],"o":[[0,0],[2.049,33.953],[3.523,-23.794],[0,0],[-9.628,-20.489],[-4.826,-8.122]],"v":[[41,-48],[39,14],[42.477,95.794],[59.5,90.5],[47,11],[53.326,-40.378]]}],"e":[{"i":[[0,0],[-7.5,-41],[0.023,-0.294],[0,0],[20,33],[5.278,-7.071]],"o":[[0,0],[22.5,48],[5.523,-7.544],[0,0],[-12.078,-18.926],[-0.076,-0.122]],"v":[[54.5,-44],[46,11.5],[58.977,93.044],[60.25,92],[47.25,11.75],[54.576,-44.378]]}]},{"t":13}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[210,175,26,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Shape 1"}],"bounds":{"l":-52,"t":-50,"b":102,"r":62},"ip":1,"op":13,"st":0},{"ddd":0,"ind":1,"ty":4,"nm":"B_yellowComienzo","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[744.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[-26.372,46.632],[-3.431,46.632],[18.116,43.094],[25.298,29.158],[17.688,15.437],[-6.647,12.113],[-26.372,12.113]]}],"e":[{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[-18.086,46.632],[-3.931,40.632],[18.116,43.094],[25.298,29.158],[17.688,15.437],[-4.861,5.255],[-19.229,11.255]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[-18.086,46.632],[-3.931,40.632],[18.116,43.094],[25.298,29.158],[17.688,15.437],[-4.861,5.255],[-19.229,11.255]]}],"e":[{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[6.062,5.624],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-4.059,-3.766],[0,0],[0,0]],"v":[[2.629,46.632],[-3.431,46.632],[18.116,43.094],[25.298,29.158],[16.187,19.437],[1.353,9.113],[-1.372,9.113]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[6.062,5.624],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-4.059,-3.766],[0,0],[0,0]],"v":[[2.629,46.632],[-3.431,46.632],[18.116,43.094],[25.298,29.158],[16.187,19.437],[1.353,9.113],[-1.372,9.113]]}],"e":[{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[24.129,44.632],[26.069,44.632],[26.116,43.594],[33.298,29.658],[25.687,15.937],[18.353,7.613],[15.629,7.613]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[24.129,44.632],[26.069,44.632],[26.116,43.594],[33.298,29.658],[25.687,15.937],[18.353,7.613],[15.629,7.613]]}],"e":[{"i":[[0,0],[0,0],[-1.793,2.359],[0,6.935],[1.901,2.215],[4.174,0],[0,0]],"o":[[0,0],[3.584,0],[1.792,-2.358],[0,-6.93],[-1.9,-2.214],[0,0],[0,0]],"v":[[39.537,46.632],[37.268,46.632],[41.966,45.094],[44.654,31.158],[41.805,17.437],[39.059,9.113],[38.039,9.113]]}]},{"t":11}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[9.862,0],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[-26.372,-14.258],[-10.506,-14.258],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-10.292,-46.633],[-26.372,-46.633]]}],"e":[{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[10.683,0.264],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[-4.35,-0.108],[0,0]],"v":[[-19.229,-15.116],[-6.934,-21.473],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-7.934,-50.204],[-19.229,-47.49]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[10.683,0.264],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[-4.35,-0.108],[0,0]],"v":[[-19.229,-15.116],[-6.934,-21.473],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-7.934,-50.204],[-19.229,-47.49]]}],"e":[{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[0.541,0.193],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[-1.372,-17.258],[-1.506,-16.758],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-0.292,-48.633],[-1.372,-49.633]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[0.541,0.193],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[-1.372,-17.258],[-1.506,-16.758],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-0.292,-48.633],[-1.372,-49.633]]}],"e":[{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[0.541,0.193],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[25.129,-20.258],[24.995,-19.758],[18.184,-16.76],[34.438,-31.23],[28.219,-44.417],[26.208,-51.633],[25.129,-52.633]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[0.541,0.193],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[25.129,-20.258],[24.995,-19.758],[18.184,-16.76],[34.438,-31.23],[28.219,-44.417],[26.208,-51.633],[25.129,-52.633]]}],"e":[{"i":[[0,0],[0,0],[-1.688,2.002],[0,6.646],[1.552,2.143],[0.202,0.193],[0,0]],"o":[[0,0],[3.478,0],[1.686,-2],[0,-6.647],[-1.553,-2.144],[0,0],[0,0]],"v":[[38.039,-17.258],[37.989,-16.758],[38.996,-15.26],[41.524,-28.23],[39.196,-41.417],[38.444,-48.633],[38.039,-49.633]]}]},{"t":11}]},"nm":"Path 2"},{"ind":2,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[20.582,0],[0,0],[0,0],[0,0],[-7.363,-2.429],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[0,-9.434],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[10.147,0],[7.36,2.432],[6.717,7.719],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0,10.436],[-8.291,9.292]],"v":[[5.788,74.933],[-59.818,74.933],[-59.818,-74.933],[-1.501,-74.933],[24.762,-71.288],[41.379,-61.426],[51.456,-35.269],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}],"e":[{"i":[[22.461,5.128],[0,0],[0,0],[-12.907,0.012],[-11.013,-3.151],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-7.016,-4.639],[-3.14,-8.896],[6.152,-10.436]],"o":[[-14.976,-3.419],[0,0],[0,0],[7.75,-0.007],[7.452,2.132],[6.717,7.719],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[8.186,5.413],[3.432,9.722],[-6.324,10.728]],"v":[[5.288,69.433],[-48.818,74.933],[-48.818,-74.933],[-1.501,-72.933],[24.762,-71.288],[41.379,-63.426],[51.456,-37.268],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[22.461,5.128],[0,0],[0,0],[-12.907,0.012],[-11.013,-3.151],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-7.016,-4.639],[-3.14,-8.896],[6.152,-10.436]],"o":[[-14.976,-3.419],[0,0],[0,0],[7.75,-0.007],[7.452,2.132],[6.717,7.719],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[8.186,5.413],[3.432,9.722],[-6.324,10.728]],"v":[[5.288,69.433],[-48.818,74.933],[-48.818,-74.933],[-1.501,-72.933],[24.762,-71.288],[41.379,-63.426],[51.456,-37.268],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}],"e":[{"i":[[21.461,-4.372],[0,0],[0,0],[0,0],[-7.246,-2.757],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[0,-9.434],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[10.147,0],[7.487,2.849],[7.871,4.487],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0,10.436],[-8.291,9.292]],"v":[[5.288,71.932],[-28.818,75.932],[-28.818,-73.933],[-1.501,-74.933],[24.762,-71.288],[41.379,-61.426],[49.456,-35.268],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[61.318,34.339],[48.098,58.996]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[21.461,-4.372],[0,0],[0,0],[0,0],[-7.246,-2.757],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[0,-9.434],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[10.147,0],[7.487,2.849],[7.871,4.487],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0,10.436],[-8.291,9.292]],"v":[[5.288,71.932],[-28.818,75.932],[-28.818,-73.933],[-1.501,-74.933],[24.762,-71.288],[41.379,-61.426],[49.456,-35.268],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[61.318,34.339],[48.098,58.996]]}],"e":[{"i":[[19.961,8.628],[0,0],[0,0],[0,0],[-7.363,-2.429],[-5.371,-5.987],[-0.294,-6.329],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[-0.932,-6.722],[4.348,-5.064]],"o":[[-5.021,-2.17],[0,0],[0,0],[12.25,2.993],[7.36,2.432],[5.371,5.987],[0.294,6.329],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0.932,6.722],[-4.348,5.064]],"v":[[7.788,68.433],[-2.817,74.433],[-2.318,-68.933],[-0.001,-66.933],[24.762,-71.288],[41.378,-61.426],[51.456,-35.268],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.648],[58.318,33.839],[47.598,63.997]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[19.961,8.628],[0,0],[0,0],[0,0],[-7.363,-2.429],[-5.371,-5.987],[-0.294,-6.329],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[-0.932,-6.722],[4.348,-5.064]],"o":[[-5.021,-2.17],[0,0],[0,0],[12.25,2.993],[7.36,2.432],[5.371,5.987],[0.294,6.329],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0.932,6.722],[-4.348,5.064]],"v":[[7.788,68.433],[-2.817,74.433],[-2.318,-68.933],[-0.001,-66.933],[24.762,-71.288],[41.378,-61.426],[51.456,-35.268],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.648],[58.318,33.839],[47.598,63.997]]}],"e":[{"i":[[15.824,4.471],[0,0],[0,0],[0,0],[-6.211,-2.43],[-4.544,-5.065],[-0.147,-8.024],[7.575,-5.715],[0.902,-0.829],[2.171,-1.143],[-5.505,-6.359],[0.282,-8.377],[5.747,-6.534]],"o":[[-2.511,-1.085],[0,0],[0,0],[6.726,0.743],[6.209,2.432],[6.044,6.853],[0.147,9.025],[-2.573,2.004],[-0.724,0.665],[7.837,2.003],[5.5,6.362],[-0.318,9.472],[-6.32,7.178]],"v":[[16.851,70.058],[11.683,73.558],[11.074,-71.558],[13.029,-69.558],[28.937,-68.288],[41.379,-61.426],[52.206,-35.768],[40.092,-9.113],[36.347,-5.736],[32.826,-2.52],[51.564,9.648],[59.068,33.589],[48.348,62.497]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[15.824,4.471],[0,0],[0,0],[0,0],[-6.211,-2.43],[-4.544,-5.065],[-0.147,-8.024],[7.575,-5.715],[0.902,-0.829],[2.171,-1.143],[-5.505,-6.359],[0.282,-8.377],[5.747,-6.534]],"o":[[-2.511,-1.085],[0,0],[0,0],[6.726,0.743],[6.209,2.432],[6.044,6.853],[0.147,9.025],[-2.573,2.004],[-0.724,0.665],[7.837,2.003],[5.5,6.362],[-0.318,9.472],[-6.32,7.178]],"v":[[16.851,70.058],[11.683,73.558],[11.074,-71.558],[13.029,-69.558],[28.937,-68.288],[41.379,-61.426],[52.206,-35.768],[40.092,-9.113],[36.347,-5.736],[32.826,-2.52],[51.564,9.648],[59.068,33.589],[48.348,62.497]]}],"e":[{"i":[[11.688,0.314],[0,0],[0,0],[0,0],[-4.861,-3.651],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.287,-0.454],[-0.029,-0.295],[-5.505,-6.359],[-0.604,-10.113],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[1.202,-1.507],[1.475,1.108],[6.717,7.719],[0,11.721],[-3.718,2.923],[0.037,0.046],[6.384,2.003],[5.5,6.362],[0.432,7.222],[-8.291,9.292]],"v":[[25.913,71.683],[26.184,72.683],[24.466,-74.183],[26.058,-72.183],[33.111,-69.288],[41.379,-61.426],[52.956,-36.268],[40.092,-9.113],[35.962,-2.861],[36.279,-2.145],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[11.688,0.314],[0,0],[0,0],[0,0],[-4.861,-3.651],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.287,-0.454],[-0.029,-0.295],[-5.505,-6.359],[-0.604,-10.113],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[1.202,-1.507],[1.475,1.108],[6.717,7.719],[0,11.721],[-3.718,2.923],[0.037,0.046],[6.384,2.003],[5.5,6.362],[0.432,7.222],[-8.291,9.292]],"v":[[25.913,71.683],[26.184,72.683],[24.466,-74.183],[26.058,-72.183],[33.111,-69.288],[41.379,-61.426],[52.956,-36.268],[40.092,-9.113],[35.962,-2.861],[36.279,-2.145],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}],"e":[{"i":[[10.024,2.503],[0,0],[0,0],[0,0],[-3.907,-2.431],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.53,-0.499],[1.366,-1.143],[-5.505,-6.359],[-2.034,-9.356],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[0.929,-1.507],[3.907,2.432],[6.717,7.719],[0,11.721],[-2.573,2.004],[-0.531,0.503],[4.931,2.003],[5.5,6.362],[2.095,9.997],[-8.291,9.292]],"v":[[26.225,66.558],[26.434,67.558],[25.607,-68.808],[26.837,-66.808],[37.285,-62.288],[41.379,-61.426],[52.206,-35.768],[40.092,-9.113],[32.702,-3.986],[39.732,-1.77],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[10.024,2.503],[0,0],[0,0],[0,0],[-3.907,-2.431],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.53,-0.499],[1.366,-1.143],[-5.505,-6.359],[-2.034,-9.356],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[0.929,-1.507],[3.907,2.432],[6.717,7.719],[0,11.721],[-2.573,2.004],[-0.531,0.503],[4.931,2.003],[5.5,6.362],[2.095,9.997],[-8.291,9.292]],"v":[[26.225,66.558],[26.434,67.558],[25.607,-68.808],[26.837,-66.808],[37.285,-62.288],[41.379,-61.426],[52.206,-35.768],[40.092,-9.113],[32.702,-3.986],[39.732,-1.77],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}],"e":[{"i":[[2.793,0.628],[0,0],[0,0],[0,0],[-2.755,-2.431],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.374,-0.499],[0.963,-1.143],[-5.505,-6.359],[0,-9.434],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[0.655,-1.507],[2.755,2.432],[6.717,7.719],[0,11.721],[-2.573,2.004],[-0.375,0.503],[3.478,2.003],[5.5,6.362],[0,10.436],[-8.291,9.292]],"v":[[37.538,72.433],[37.685,73.433],[36.749,-73.433],[37.617,-71.433],[41.459,-59.288],[41.379,-61.426],[51.456,-35.268],[40.092,-9.113],[43.191,-1.861],[43.185,-1.395],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}]},{"t":11}]},"nm":"Path 3"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[60.067,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":3,"b":155,"r":122},"ip":0,"op":12,"st":0}]},{"id":"comp_20","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"miscelanea11","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[163.023,70.838,0]},"a":{"k":[103.851,16.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0.848,1.73],[-2.429,1.948],[-0.819,0.585],[-0.447,1.273],[0.483,1.703],[-1.376,3.219],[-1.537,0.734],[1.736,-0.83],[1.266,-2.963],[3.623,-1.176],[0.707,-2.576],[-1.225,-2.5]],"o":[[-1.62,-2.142],[0.93,-0.234],[1.03,-0.735],[0.586,-1.671],[-0.6,-2.116],[0.701,-1.64],[1.745,-0.834],[-2.829,1.353],[-1.115,2.607],[-2.002,0.649],[-0.756,2.751],[0.851,1.737]],"v":[[-3.69,11.511],[-2.476,5.376],[0.558,4.545],[3.05,1.861],[3.187,-2.679],[1.839,-7.976],[6.574,-11.341],[5.06,-13.932],[-1.278,-8.257],[-1.903,2.227],[-7.562,5.498],[-6.281,13.025]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[91,89,130,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[103.805,15.012]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 10"}],"bounds":{"l":95,"t":0,"b":29,"r":112},"ip":46,"op":6332,"st":32}]},{"id":"comp_21","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"sombraRed 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[69.023,162.838,0]},"a":{"k":[6.851,109.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-0.609,-10.588],[6.732,-46.911],[-1.622,32.611],[0.01,0.659]],"o":[[0.666,11.583],[3.732,-7.411],[0.764,-15.371],[-2.006,0.928]],"v":[[-75.89,-30.068],[-75.956,20.426],[-60.988,-31.614],[-68.967,-62.913]]}],"e":[{"i":[[-5.334,-9.167],[21.982,-38.911],[-15.236,28.879],[0.01,0.659]],"o":[[7.423,12.759],[11.232,0.089],[14.957,-28.351],[-27.006,3.428]],"v":[[-69.64,-37.318],[-75.956,19.176],[-48.488,-17.364],[-47.967,-57.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-5.334,-9.167],[21.982,-38.911],[-15.236,28.879],[0.01,0.659]],"o":[[7.423,12.759],[11.232,0.089],[14.957,-28.351],[-27.006,3.428]],"v":[[-69.64,-37.318],[-75.956,19.176],[-48.488,-17.364],[-47.967,-57.163]]}],"e":[{"i":[[13.898,-29.258],[23.732,-10.411],[-15.236,28.879],[0.01,0.659]],"o":[[-6.334,13.333],[16.482,-0.161],[14.957,-28.351],[-2.506,23.428]],"v":[[-59.14,-18.818],[-62.956,19.926],[-8.488,0.386],[-16.717,-52.913]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[13.898,-29.258],[23.732,-10.411],[-15.236,28.879],[0.01,0.659]],"o":[[-6.334,13.333],[16.482,-0.161],[14.957,-28.351],[-2.506,23.428]],"v":[[-59.14,-18.818],[-62.956,19.926],[-8.488,0.386],[-16.717,-52.913]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-15.702,18.195],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[13.265,-15.371],[0.744,11.678]],"v":[[-35.39,-11.068],[-53.956,19.426],[-5.738,10.136],[3.283,-26.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-15.702,18.195],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[13.265,-15.371],[0.744,11.678]],"v":[[-35.39,-11.068],[-53.956,19.426],[-5.738,10.136],[3.283,-26.163]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-5.39,-5.068],[-32.706,17.176],[9.762,12.386],[13.783,-26.663]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-5.39,-5.068],[-32.706,17.176],[9.762,12.386],[13.783,-26.663]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-6.64,-5.068],[-21.456,14.926],[10.262,13.136],[16.533,-21.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-6.64,-5.068],[-21.456,14.926],[10.262,13.136],[16.533,-21.163]]}],"e":[{"i":[[5.222,-6.272],[9.61,1.599],[-14.735,15.879],[0.01,0.659]],"o":[[-5.89,7.073],[-0.357,1.13],[11.437,-12.325],[-4.104,7.346]],"v":[[7.61,2.182],[-20.956,14.926],[12.762,12.386],[20.783,-19.663]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[5.222,-6.272],[9.61,1.599],[-14.735,15.879],[0.01,0.659]],"o":[[-5.89,7.073],[-0.357,1.13],[11.437,-12.325],[-4.104,7.346]],"v":[[7.61,2.182],[-20.956,14.926],[12.762,12.386],[20.783,-19.663]]}],"e":[{"i":[[5.219,-6.275],[14.915,5.331],[-13.853,12.7],[0.01,0.659]],"o":[[-5.886,7.077],[0.056,0.721],[9.26,-8.489],[-4.742,9.065]],"v":[[6.49,6.8],[-25.824,16.314],[11.267,13.754],[21.769,-15.55]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[5.219,-6.275],[14.915,5.331],[-13.853,12.7],[0.01,0.659]],"o":[[-5.886,7.077],[0.056,0.721],[9.26,-8.489],[-4.742,9.065]],"v":[[6.49,6.8],[-25.824,16.314],[11.267,13.754],[21.769,-15.55]]}],"e":[{"i":[[5.215,-6.278],[20.219,9.063],[-12.244,18.143],[0.011,0.659]],"o":[[-5.882,7.08],[0.469,0.313],[9.406,-13.937],[1.76,13.676]],"v":[[11.37,9.418],[-24.693,15.702],[11.771,9.122],[17.755,-20.937]]}]},{"t":28}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[210,175,26,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[82.052,165.109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 12"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-0.264,-5.336],[0.555,-15.505],[-2.639,-8.138],[2.695,12.744],[4.067,-0.057]],"o":[[0.175,3.521],[-0.432,12.092],[2.611,-1.888],[-0.333,-1.577],[-1.683,-1.557]],"v":[[-81.496,-11.618],[-82.139,18.061],[-75.682,41.041],[-73.488,-15.77],[-81.888,-25.04]]}],"e":[{"i":[[-8.575,-11.229],[0.818,-7.408],[-9.389,-24.888],[2.695,12.744],[18.067,2.443]],"o":[[7.595,9.944],[-1.861,16.862],[2.611,-1.888],[-0.333,-1.577],[-13.183,0.193]],"v":[[-75.996,-12.368],[-80.139,16.561],[-51.682,35.291],[-49.488,1.98],[-65.138,-25.29]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-8.575,-11.229],[0.818,-7.408],[-9.389,-24.888],[2.695,12.744],[18.067,2.443]],"o":[[7.595,9.944],[-1.861,16.862],[2.611,-1.888],[-0.333,-1.577],[-13.183,0.193]],"v":[[-75.996,-12.368],[-80.139,16.561],[-51.682,35.291],[-49.488,1.98],[-65.138,-25.29]]}],"e":[{"i":[[4.425,-5.979],[-1.695,-4.426],[-39.139,-22.888],[3.917,12.423],[18.067,2.443]],"o":[[-7.444,10.058],[6.068,15.842],[0.611,-6.138],[-3.511,-11.135],[-13.183,0.193]],"v":[[-77.246,-17.868],[-80.139,16.561],[-24.432,38.791],[-23.738,-7.52],[-49.888,-27.29]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[4.425,-5.979],[-1.695,-4.426],[-39.139,-22.888],[3.917,12.423],[18.067,2.443]],"o":[[-7.444,10.058],[6.068,15.842],[0.611,-6.138],[-3.511,-11.135],[-13.183,0.193]],"v":[[-77.246,-17.868],[-80.139,16.561],[-24.432,38.791],[-23.738,-7.52],[-49.888,-27.29]]}],"e":[{"i":[[4.425,-5.979],[-2.682,-3.908],[-15.389,-19.388],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[7.339,10.693],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-64.996,-18.368],[-66.139,5.311],[-16.932,25.041],[-14.238,-4.02],[-40.388,-28.54]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[4.425,-5.979],[-2.682,-3.908],[-15.389,-19.388],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[7.339,10.693],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-64.996,-18.368],[-66.139,5.311],[-16.932,25.041],[-14.238,-4.02],[-40.388,-28.54]]}],"e":[{"i":[[4.425,-5.979],[-5.706,-2.579],[-4.639,-12.138],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[11.818,5.342],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-39.996,-15.868],[-34.389,3.811],[-0.932,29.541],[0.262,-3.52],[-25.888,-28.04]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[4.425,-5.979],[-5.706,-2.579],[-4.639,-12.138],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[11.818,5.342],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-39.996,-15.868],[-34.389,3.811],[-0.932,29.541],[0.262,-3.52],[-25.888,-28.04]]}],"e":[{"i":[[1.732,-4.409],[-1.377,-2.052],[0.54,-13.855],[0.667,8.673],[11.493,0.324]],"o":[[-4.575,11.646],[7.193,10.717],[3.111,-5.388],[-0.945,-12.292],[-4.683,1.193]],"v":[[-18.746,-20.618],[-14.139,-0.939],[-0.432,28.291],[3.012,-2.27],[-8.638,-29.79]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[1.732,-4.409],[-1.377,-2.052],[0.54,-13.855],[0.667,8.673],[11.493,0.324]],"o":[[-4.575,11.646],[7.193,10.717],[3.111,-5.388],[-0.945,-12.292],[-4.683,1.193]],"v":[[-18.746,-20.618],[-14.139,-0.939],[-0.432,28.291],[3.012,-2.27],[-8.638,-29.79]]}],"e":[{"i":[[-0.965,-0.629],[-1.814,-6.586],[0.54,-13.855],[-0.079,15.386],[11.493,0.324]],"o":[[5.804,3.783],[3.724,13.522],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[-5.621,-28.243],[5.486,-11.814],[7.568,29.791],[11.512,2.23],[-8.638,-29.79]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-0.965,-0.629],[-1.814,-6.586],[0.54,-13.855],[-0.079,15.386],[11.493,0.324]],"o":[[5.804,3.783],[3.724,13.522],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[-5.621,-28.243],[5.486,-11.814],[7.568,29.791],[11.512,2.23],[-8.638,-29.79]]}],"e":[{"i":[[-1.03,-0.494],[-1.814,-6.586],[2.611,-12.263],[0.198,15.385],[11.493,0.324]],"o":[[6.927,3.215],[3.724,13.522],[1.835,-5.644],[-0.333,-25.952],[1.041,0.415]],"v":[[-5.871,-27.243],[7.486,-10.814],[9.068,29.666],[13.012,4.855],[-7.388,-27.665]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":27,"s":[{"i":[[-1.03,-0.494],[-1.814,-6.586],[2.611,-12.263],[0.198,15.385],[11.493,0.324]],"o":[[6.927,3.215],[3.724,13.522],[1.835,-5.644],[-0.333,-25.952],[1.041,0.415]],"v":[[-5.871,-27.243],[7.486,-10.814],[9.068,29.666],[13.012,4.855],[-7.388,-27.665]]}],"e":[{"i":[[-1.094,-0.36],[-2.051,-6.516],[3.611,-13.138],[-0.078,15.386],[11.493,0.324]],"o":[[8.05,2.646],[2.193,6.967],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[0.379,-24.744],[12.736,-8.565],[11.568,33.541],[15.512,5.98],[-4.388,-25.791]]}]},{"t":28}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[210,175,26,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[89.15,59.721]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 13"}],"bounds":{"l":6,"t":29,"b":188,"r":105},"ip":14,"op":28,"st":14},{"ddd":0,"ind":1,"ty":4,"nm":"B_yellow3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[744.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[-26.372,46.632],[-3.431,46.632],[18.116,43.094],[25.298,29.158],[17.688,15.437],[-6.647,12.113],[-26.372,12.113]]}},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[9.862,0],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[-26.372,-14.258],[-10.506,-14.258],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-10.292,-46.633],[-26.372,-46.633]]}},"nm":"Path 2"},{"ind":2,"ty":"sh","closed":true,"ks":{"k":{"i":[[20.582,0],[0,0],[0,0],[0,0],[-7.363,-2.429],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[0,-9.434],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[10.147,0],[7.36,2.432],[6.717,7.719],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0,10.436],[-8.291,9.292]],"v":[[5.788,74.933],[-59.818,74.933],[-59.818,-74.933],[-1.501,-74.933],[24.762,-71.288],[41.379,-61.426],[51.456,-35.269],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}},"nm":"Path 3"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[60.067,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":3,"b":154,"r":120},"ip":49,"op":6330,"st":-29},{"ddd":0,"ind":2,"ty":4,"nm":"B_yellow2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.023,160.838,0]},"a":{"k":[67.851,106.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":14,"s":[{"i":[[0,0],[-0.433,1.731],[0.142,3.939],[1.004,1.232],[0,0]],"o":[[0.553,0.038],[0.653,-2.61],[-0.159,-4.417],[-0.591,-0.726],[0,0]],"v":[[-39.329,46.697],[-38.401,46.697],[-37.54,33.902],[-39.088,21.003],[-39.944,21.679]]}],"e":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-26.444,38.947],[-23.428,38.947],[-20.63,26.152],[-25.66,13.253],[-28.444,13.929]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":16,"s":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-26.444,38.947],[-23.428,38.947],[-20.63,26.152],[-25.66,13.253],[-28.444,13.929]]}],"e":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-13.694,45.197],[-2.428,39.947],[0.37,27.152],[-4.66,14.253],[-13.444,11.179]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":18,"s":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-13.694,45.197],[-2.428,39.947],[0.37,27.152],[-4.66,14.253],[-13.444,11.179]]}],"e":[{"i":[[0,0],[-5.47,5.788],[-1.088,13.248],[12.142,-3.71],[0,0]],"o":[[0,0],[7.271,-7.694],[0.732,-8.917],[-6.488,1.982],[0,0]],"v":[[-14.194,49.197],[0.572,43.697],[16.62,27.152],[2.09,19.503],[-13.944,15.179]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[0,0],[-5.47,5.788],[-1.088,13.248],[12.142,-3.71],[0,0]],"o":[[0,0],[7.271,-7.694],[0.732,-8.917],[-6.488,1.982],[0,0]],"v":[[-14.194,49.197],[0.572,43.697],[16.62,27.152],[2.09,19.503],[-13.944,15.179]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[-1.088,13.248],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0.732,-8.917],[-12.639,5.221],[0,0]],"v":[[-10.444,46.947],[10.322,44.447],[28.12,27.152],[9.34,19.753],[-10.444,12.429]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[0,0],[-8.351,-6.505],[-1.088,13.248],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0.732,-8.917],[-12.639,5.221],[0,0]],"v":[[-10.444,46.947],[10.322,44.447],[28.12,27.152],[9.34,19.753],[-10.444,12.429]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[17.322,45.447],[36.12,29.652],[12.84,17.753],[-7.194,12.429]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[17.322,45.447],[36.12,29.652],[12.84,17.753],[-7.194,12.429]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[20.822,46.947],[43.12,29.152],[17.84,15.753],[-7.194,12.429]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":26,"s":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[20.822,46.947],[43.12,29.152],[17.84,15.753],[-7.194,12.429]]}],"e":[{"i":[[0,0],[-8.652,5.496],[0,13.293],[11.512,-5.518],[0,0]],"o":[[0,0],[9.78,-6.212],[0,-14.365],[-12.332,5.911],[0,0]],"v":[[-3.444,46.447],[27.572,43.947],[50.87,29.652],[18.34,11.753],[-2.944,10.929]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[0,0],[-8.652,5.496],[0,13.293],[11.512,-5.518],[0,0]],"o":[[0,0],[9.78,-6.212],[0,-14.365],[-12.332,5.911],[0,0]],"v":[[-3.444,46.447],[27.572,43.947],[50.87,29.652],[18.34,11.753],[-2.944,10.929]]}],"e":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-11.194,46.448],[21.822,43.947],[50.37,27.152],[12.59,11.753],[-10.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":36,"s":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-11.194,46.448],[21.822,43.947],[50.37,27.152],[12.59,11.753],[-10.694,10.93]]}],"e":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-12.194,46.448],[16.322,44.447],[40.87,29.152],[7.09,12.253],[-11.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":39,"s":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-12.194,46.448],[16.322,44.447],[40.87,29.152],[7.09,12.253],[-11.694,10.93]]}],"e":[{"i":[[0,0],[-9.716,3.266],[0,13.293],[15.762,-2.018],[0,0]],"o":[[0,0],[12.53,-4.212],[0,-14.365],[-13.564,1.737],[0,0]],"v":[[-12.194,46.448],[11.822,42.947],[35.87,27.652],[7.59,10.753],[-11.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":42,"s":[{"i":[[0,0],[-9.716,3.266],[0,13.293],[15.762,-2.018],[0,0]],"o":[[0,0],[12.53,-4.212],[0,-14.365],[-13.564,1.737],[0,0]],"v":[[-12.194,46.448],[11.822,42.947],[35.87,27.652],[7.59,10.753],[-11.694,10.93]]}],"e":[{"i":[[0,0],[-10.034,4.574],[0,13.293],[15.262,-4.518],[0,0]],"o":[[0,0],[12.53,-5.712],[0,-14.365],[-13.112,3.882],[0,0]],"v":[[-11.694,40.948],[13.322,39.447],[36.37,19.652],[7.59,10.753],[-11.194,9.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":44,"s":[{"i":[[0,0],[-10.034,4.574],[0,13.293],[15.262,-4.518],[0,0]],"o":[[0,0],[12.53,-5.712],[0,-14.365],[-13.112,3.882],[0,0]],"v":[[-11.694,40.948],[13.322,39.447],[36.37,19.652],[7.59,10.753],[-11.194,9.93]]}],"e":[{"i":[[0,0],[-10.249,0.161],[0,13.293],[11.262,0.482],[0,0]],"o":[[0,0],[13.53,-0.212],[0,-14.365],[-13.662,-0.585],[0,0]],"v":[[-10.194,45.948],[15.822,46.447],[41.37,29.652],[14.59,11.753],[-9.694,12.43]]}]},{"t":49}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":14,"s":[{"i":[[0,0],[-0.692,2.11],[0.058,5.864],[0.866,1.732],[0,0]],"o":[[0,0],[0.591,-1.802],[-0.081,-8.134],[-0.969,-1.939],[0,0]],"v":[[-42.194,-29.872],[-39.601,-35.625],[-38.957,-48.631],[-39.903,-61.247],[-41.776,-62.247]]}],"e":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-31.944,-18.622],[-25.746,-24.375],[-24.206,-37.381],[-26.467,-49.997],[-30.944,-50.997]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":16,"s":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-31.944,-18.622],[-25.746,-24.375],[-24.206,-37.381],[-26.467,-49.997],[-30.944,-50.997]]}],"e":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-15.694,-15.872],[-5.996,-21.125],[-1.456,-33.631],[-6.717,-46.747],[-15.194,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":18,"s":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-15.694,-15.872],[-5.996,-21.125],[-1.456,-33.631],[-6.717,-46.747],[-15.194,-48.247]]}],"e":[{"i":[[0,0],[-2.844,6.53],[-1.693,5.616],[10.069,-5.018],[0,0]],"o":[[0,0],[2.347,-5.39],[2.054,-6.814],[-8.016,3.995],[0,0]],"v":[[-15.194,-15.372],[0.254,-21.125],[9.294,-29.631],[0.033,-44.247],[-14.194,-47.747]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[0,0],[-2.844,6.53],[-1.693,5.616],[10.069,-5.018],[0,0]],"o":[[0,0],[2.347,-5.39],[2.054,-6.814],[-8.016,3.995],[0,0]],"v":[[-15.194,-15.372],[0.254,-21.125],[9.294,-29.631],[0.033,-44.247],[-14.194,-47.747]]}],"e":[{"i":[[0,0],[-3.065,11.673],[-4.193,2.116],[7.045,-7.388],[0,0]],"o":[[0,0],[2.597,-9.89],[11.293,-5.7],[-6.181,6.482],[0,0]],"v":[[-10.444,-15.872],[10.754,-18.875],[22.044,-30.381],[8.033,-46.747],[-10.444,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[0,0],[-3.065,11.673],[-4.193,2.116],[7.045,-7.388],[0,0]],"o":[[0,0],[2.597,-9.89],[11.293,-5.7],[-6.181,6.482],[0,0]],"v":[[-10.444,-15.872],[10.754,-18.875],[22.044,-30.381],[8.033,-46.747],[-10.444,-48.247]]}],"e":[{"i":[[0,0],[-3.065,11.673],[1.307,10.616],[6.319,-8.018],[0,0]],"o":[[0,0],[2.597,-9.89],[-1.546,-12.555],[-7.387,9.373],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[29.544,-32.381],[13.533,-48.247],[-7.194,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[0,0],[-3.065,11.673],[1.307,10.616],[6.319,-8.018],[0,0]],"o":[[0,0],[2.597,-9.89],[-1.546,-12.555],[-7.387,9.373],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[29.544,-32.381],[13.533,-48.247],[-7.194,-48.247]]}],"e":[{"i":[[0,0],[-7.132,9.736],[0,12.221],[10.692,-5.3],[0,0]],"o":[[0,0],[5.418,-7.395],[0,-12.65],[-10.693,5.3],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[36.044,-32.381],[13.533,-48.247],[-7.194,-48.247]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":26,"s":[{"i":[[0,0],[-7.132,9.736],[0,12.221],[10.692,-5.3],[0,0]],"o":[[0,0],[5.418,-7.395],[0,-12.65],[-10.693,5.3],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[36.044,-32.381],[13.533,-48.247],[-7.194,-48.247]]}],"e":[{"i":[[0,0],[-9.374,7.601],[0.557,12.616],[18.319,-6.518],[0,0]],"o":[[0,0],[10.347,-8.39],[-0.657,-14.87],[-11.244,4.001],[0,0]],"v":[[-3.319,-16.372],[21.004,-15.375],[46.795,-31.881],[18.033,-47.247],[-3.319,-48.265]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[0,0],[-9.374,7.601],[0.557,12.616],[18.319,-6.518],[0,0]],"o":[[0,0],[10.347,-8.39],[-0.657,-14.87],[-11.244,4.001],[0,0]],"v":[[-3.319,-16.372],[21.004,-15.375],[46.795,-31.881],[18.033,-47.247],[-3.319,-48.265]]}],"e":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-11.069,-16.371],[15.255,-15.375],[46.795,-34.381],[12.283,-47.247],[-11.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":36,"s":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-11.069,-16.371],[15.255,-15.375],[46.795,-34.381],[12.283,-47.247],[-11.069,-48.264]]}],"e":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-12.069,-16.371],[9.755,-14.875],[34.795,-33.881],[6.783,-46.747],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":39,"s":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-12.069,-16.371],[9.755,-14.875],[34.795,-33.881],[6.783,-46.747],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-12.069,-16.371],[6.755,-16.375],[31.795,-35.381],[4.783,-47.247],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":42,"s":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-12.069,-16.371],[6.755,-16.375],[31.795,-35.381],[4.783,-47.247],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-13.569,-20.371],[6.755,-16.375],[29.795,-39.881],[4.783,-47.247],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":44,"s":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-13.569,-20.371],[6.755,-16.375],[29.795,-39.881],[4.783,-47.247],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-12.068,-0.119],[0.557,12.616],[10.069,0.482],[0,0]],"o":[[0,0],[11.097,0.11],[-0.657,-14.87],[-5.029,-0.241],[0,0]],"v":[[-9.819,-15.121],[11.755,-14.875],[33.795,-31.381],[9.283,-47.747],[-8.569,-47.764]]}]},{"t":49}]},"nm":"Path 2"},{"ind":2,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":14,"s":[{"i":[[-1.81,1.749],[-0.86,-0.217],[-1.22,-9.917],[-2.482,-13.756],[0,0],[1.583,-5.417],[7.316,-11.263],[0.492,0.237]],"o":[[0.242,0.033],[7.39,-1.467],[0.667,5.423],[0,0],[3.268,16.065],[-2.041,6.984],[0.316,-0.513],[-0.698,-2.846]],"v":[[-43.64,-75.798],[-43.038,-75.798],[-32.816,-52.188],[-36.417,-6.759],[-36.417,-6.33],[-28.981,34.402],[-43.715,75.248],[-43.64,75.248]]}],"e":[{"i":[[-1.81,1.749],[-2.36,0.033],[-3.6,-9.32],[-2.482,-13.756],[0,0],[2.423,-6.614],[8.066,-0.763],[0.492,0.237]],"o":[[0.242,0.033],[7.779,-0.109],[14.167,36.673],[0,0],[3.268,16.065],[-6.167,16.833],[-1.943,0.184],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-36.288,-76.048],[-16.816,-54.188],[-14.667,-0.009],[-14.667,0.42],[-15.732,34.902],[-40.715,74.998],[-43.64,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":16,"s":[{"i":[[-1.81,1.749],[-2.36,0.033],[-3.6,-9.32],[-2.482,-13.756],[0,0],[2.423,-6.614],[8.066,-0.763],[0.492,0.237]],"o":[[0.242,0.033],[7.779,-0.109],[14.167,36.673],[0,0],[3.268,16.065],[-6.167,16.833],[-1.943,0.184],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-36.288,-76.048],[-16.816,-54.188],[-14.667,-0.009],[-14.667,0.42],[-15.732,34.902],[-40.715,74.998],[-43.64,75.248]]}],"e":[{"i":[[-2.26,1.108],[-12.797,2.457],[-3.583,-9.327],[-2.482,-13.756],[0,0],[-3.167,-7.667],[20.066,-1.013],[0.492,0.237]],"o":[[2.992,-1.467],[7.64,-1.467],[9.719,25.301],[0,0],[3.268,16.065],[6.551,15.86],[-19.927,1.006],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-14.288,-76.298],[11.934,-60.688],[14.833,-1.259],[14.833,-0.83],[21.018,23.152],[-2.464,75.248],[-43.64,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":18,"s":[{"i":[[-2.26,1.108],[-12.797,2.457],[-3.583,-9.327],[-2.482,-13.756],[0,0],[-3.167,-7.667],[20.066,-1.013],[0.492,0.237]],"o":[[2.992,-1.467],[7.64,-1.467],[9.719,25.301],[0,0],[3.268,16.065],[6.551,15.86],[-19.927,1.006],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-14.288,-76.298],[11.934,-60.688],[14.833,-1.259],[14.833,-0.83],[21.018,23.152],[-2.464,75.248],[-43.64,75.248]]}],"e":[{"i":[[-2.284,1.057],[-12.61,3.283],[-3.333,-14.827],[-2.482,-13.756],[0,0],[-3.167,-7.667],[27.816,2.987],[2.186,1.951]],"o":[[7.492,-3.467],[18.213,-4.742],[5.944,26.444],[0,0],[3.268,16.065],[6.551,15.86],[-19.838,-2.13],[-2.187,-1.951]],"v":[[-43.64,-76.548],[-14.288,-76.298],[21.934,-58.438],[21.833,-1.259],[21.833,-0.83],[34.268,28.402],[-1.964,76.998],[-43.64,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[-2.284,1.057],[-12.61,3.283],[-3.333,-14.827],[-2.482,-13.756],[0,0],[-3.167,-7.667],[27.816,2.987],[2.186,1.951]],"o":[[7.492,-3.467],[18.213,-4.742],[5.944,26.444],[0,0],[3.268,16.065],[6.551,15.86],[-19.838,-2.13],[-2.187,-1.951]],"v":[[-43.64,-76.548],[-14.288,-76.298],[21.934,-58.438],[21.833,-1.259],[21.833,-0.83],[34.268,28.402],[-1.964,76.998],[-43.64,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[-3.333,-14.827],[2.518,-18.006],[0,0],[-3.831,-19.346],[26.503,4.393],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[5.944,26.444],[0,0],[-1.149,21.088],[3.333,16.833],[-19.684,-3.263],[-2.187,-1.951]],"v":[[-41.39,-76.548],[-2.288,-76.798],[34.184,-57.438],[35.833,-4.259],[35.833,-3.83],[44.768,25.902],[20.036,75.498],[-41.39,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[-3.333,-14.827],[2.518,-18.006],[0,0],[-3.831,-19.346],[26.503,4.393],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[5.944,26.444],[0,0],[-1.149,21.088],[3.333,16.833],[-19.684,-3.263],[-2.187,-1.951]],"v":[[-41.39,-76.548],[-2.288,-76.798],[34.184,-57.438],[35.833,-4.259],[35.833,-3.83],[44.768,25.902],[20.036,75.498],[-41.39,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[-4.333,-30.827],[0.518,-15.696],[0,0],[-0.27,-19.72],[25.863,7.267],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[3.772,26.84],[0,0],[-1.149,21.088],[0.333,24.325],[-25.863,-7.268],[-2.187,-1.951]],"v":[[-42.14,-76.548],[13.961,-76.548],[40.185,-50.938],[35.833,-5.009],[35.833,-4.58],[48.518,32.902],[19.535,75.248],[-42.14,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[-4.333,-30.827],[0.518,-15.696],[0,0],[-0.27,-19.72],[25.863,7.267],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[3.772,26.84],[0,0],[-1.149,21.088],[0.333,24.325],[-25.863,-7.268],[-2.187,-1.951]],"v":[[-42.14,-76.548],[13.961,-76.548],[40.185,-50.938],[35.833,-5.009],[35.833,-4.58],[48.518,32.902],[19.535,75.248],[-42.14,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[0.182,-35.577],[0.518,-15.696],[0,0],[-0.27,-19.72],[20.316,5.987],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[-0.138,27.103],[0,0],[-1.149,21.088],[0.333,24.325],[-25.769,-7.594],[-2.187,-1.951]],"v":[[-41.89,-74.548],[13.961,-76.548],[50.185,-46.938],[43.333,-4.509],[43.333,-4.08],[52.518,32.402],[19.535,75.248],[-42.89,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":26,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[0.182,-35.577],[0.518,-15.696],[0,0],[-0.27,-19.72],[20.316,5.987],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[-0.138,27.103],[0,0],[-1.149,21.088],[0.333,24.325],[-25.769,-7.594],[-2.187,-1.951]],"v":[[-41.89,-74.548],[13.961,-76.548],[50.185,-46.938],[43.333,-4.509],[43.333,-4.08],[52.518,32.402],[19.535,75.248],[-42.89,75.248]]}],"e":[{"i":[[10.992,53.783],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.557,2.877]],"o":[[-0.714,-3.493],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-7.258,-37.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.935,-35.188],[52.583,-4.759],[52.583,-4.33],[79.269,35.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[10.992,53.783],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.557,2.877]],"o":[[-0.714,-3.493],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-7.258,-37.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.935,-35.188],[52.583,-4.759],[52.583,-4.33],[79.269,35.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[5.992,48.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.433,2.898]],"o":[[-0.439,-3.538],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.758,-38.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.685,-35.188],[52.583,-4.759],[52.583,-4.33],[79.019,35.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":36,"s":[{"i":[[5.992,48.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.433,2.898]],"o":[[-0.439,-3.538],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.758,-38.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.685,-35.188],[52.583,-4.759],[52.583,-4.33],[79.019,35.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[-4.008,47.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.284,2.916]],"o":[[0.301,-3.552],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[4.242,-43.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[66.685,-34.188],[47.083,-4.259],[47.083,-3.83],[75.019,36.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":39,"s":[{"i":[[-4.008,47.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.284,2.916]],"o":[[0.301,-3.552],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[4.242,-43.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[66.685,-34.188],[47.083,-4.259],[47.083,-3.83],[75.019,36.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[7.992,47.783],[-23.325,-3.498],[0.795,-21.872],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.34,2.91]],"o":[[-0.588,-3.516],[21.89,3.283],[-0.833,22.923],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.258,-45.013]],"v":[[-43.14,-75.548],[25.962,-75.048],[63.685,-37.688],[44.083,-5.259],[44.083,-4.83],[71.019,37.402],[24.035,75.248],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":42,"s":[{"i":[[7.992,47.783],[-23.325,-3.498],[0.795,-21.872],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.34,2.91]],"o":[[-0.588,-3.516],[21.89,3.283],[-0.833,22.923],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.258,-45.013]],"v":[[-43.14,-75.548],[25.962,-75.048],[63.685,-37.688],[44.083,-5.259],[44.083,-4.83],[71.019,37.402],[24.035,75.248],[-42.89,75.248]]}],"e":[{"i":[[11.992,50.283],[-23.514,1.844],[0.795,-21.872],[-1.107,-6.756],[0,0],[2.104,-37.626],[24.436,-1.757],[0.608,2.866]],"o":[[-0.827,-3.468],[21.89,-1.717],[-0.833,22.923],[0,0],[-0.232,9.565],[-1.417,25.333],[-20.684,1.487],[-9.758,-46.013]],"v":[[-43.14,-75.548],[22.962,-78.548],[61.685,-42.188],[44.333,-6.759],[44.333,-6.33],[72.519,33.902],[24.035,72.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":44,"s":[{"i":[[11.992,50.283],[-23.514,1.844],[0.795,-21.872],[-1.107,-6.756],[0,0],[2.104,-37.626],[24.436,-1.757],[0.608,2.866]],"o":[[-0.827,-3.468],[21.89,-1.717],[-0.833,22.923],[0,0],[-0.232,9.565],[-1.417,25.333],[-20.684,1.487],[-9.758,-46.013]],"v":[[-43.14,-75.548],[22.962,-78.548],[61.685,-42.188],[44.333,-6.759],[44.333,-6.33],[72.519,33.902],[24.035,72.748],[-42.89,75.248]]}],"e":[{"i":[[-0.008,1.283],[-23.583,-0.378],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.008,0.487]],"o":[[0.242,-0.467],[17.64,0.283],[-1.583,25.173],[0,0],[-0.232,-0.935],[-1.417,25.333],[-20.684,1.487],[0.014,-2.145]],"v":[[-43.14,-75.548],[32.462,-75.548],[68.685,-34.688],[47.083,-2.759],[47.083,-2.33],[76.519,37.402],[27.035,75.748],[-42.89,75.248]]}]},{"t":49}]},"nm":"Path 3"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[52.977,108.888]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 14"}],"bounds":{"l":7,"t":29,"b":187,"r":133},"ip":14,"op":49,"st":14}]},{"id":"comp_22","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"sombraRed","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[69.023,162.838,0]},"a":{"k":[6.851,109.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-0.609,-10.588],[6.732,-46.911],[-1.622,32.611],[0.01,0.659]],"o":[[0.666,11.583],[3.732,-7.411],[0.764,-15.371],[-2.006,0.928]],"v":[[-75.89,-30.068],[-75.956,20.426],[-60.988,-31.614],[-68.967,-62.913]]}],"e":[{"i":[[-5.334,-9.167],[21.982,-38.911],[-15.236,28.879],[0.01,0.659]],"o":[[7.423,12.759],[11.232,0.089],[14.957,-28.351],[-27.006,3.428]],"v":[[-69.64,-37.318],[-75.956,19.176],[-48.488,-17.364],[-47.967,-57.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-5.334,-9.167],[21.982,-38.911],[-15.236,28.879],[0.01,0.659]],"o":[[7.423,12.759],[11.232,0.089],[14.957,-28.351],[-27.006,3.428]],"v":[[-69.64,-37.318],[-75.956,19.176],[-48.488,-17.364],[-47.967,-57.163]]}],"e":[{"i":[[13.898,-29.258],[23.732,-10.411],[-15.236,28.879],[0.01,0.659]],"o":[[-6.334,13.333],[16.482,-0.161],[14.957,-28.351],[-2.506,23.428]],"v":[[-59.14,-18.818],[-62.956,19.926],[-8.488,0.386],[-16.717,-52.913]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[13.898,-29.258],[23.732,-10.411],[-15.236,28.879],[0.01,0.659]],"o":[[-6.334,13.333],[16.482,-0.161],[14.957,-28.351],[-2.506,23.428]],"v":[[-59.14,-18.818],[-62.956,19.926],[-8.488,0.386],[-16.717,-52.913]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-15.702,18.195],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[13.265,-15.371],[0.744,11.678]],"v":[[-35.39,-11.068],[-53.956,19.426],[-5.738,10.136],[3.283,-26.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-15.702,18.195],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[13.265,-15.371],[0.744,11.678]],"v":[[-35.39,-11.068],[-53.956,19.426],[-5.738,10.136],[3.283,-26.163]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-5.39,-5.068],[-32.706,17.176],[9.762,12.386],[13.783,-26.663]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-5.39,-5.068],[-32.706,17.176],[9.762,12.386],[13.783,-26.663]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-6.64,-5.068],[-21.456,14.926],[10.262,13.136],[16.533,-21.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-6.64,-5.068],[-21.456,14.926],[10.262,13.136],[16.533,-21.163]]}],"e":[{"i":[[5.222,-6.272],[9.732,0.589],[-15.236,14.129],[0.01,0.659]],"o":[[-5.89,7.073],[2.732,1.339],[12.329,-11.433],[-1.256,9.428]],"v":[[9.11,2.932],[-22.956,15.926],[13.262,13.136],[20.533,-21.413]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[5.222,-6.272],[9.732,0.589],[-15.236,14.129],[0.01,0.659]],"o":[[-5.89,7.073],[2.732,1.339],[12.329,-11.433],[-1.256,9.428]],"v":[[9.11,2.932],[-22.956,15.926],[13.262,13.136],[20.533,-21.413]]}],"e":[{"i":[[5.219,-6.275],[14.915,5.331],[-15.367,15.336],[0.01,0.659]],"o":[[-5.886,7.077],[0.056,0.721],[10.26,-10.239],[-2.742,8.065]],"v":[[6.49,6.8],[-25.824,16.314],[11.767,13.004],[22.519,-18.8]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[5.219,-6.275],[14.915,5.331],[-15.367,15.336],[0.01,0.659]],"o":[[-5.886,7.077],[0.056,0.721],[10.26,-10.239],[-2.742,8.065]],"v":[[6.49,6.8],[-25.824,16.314],[11.767,13.004],[22.519,-18.8]]}],"e":[{"i":[[8.407,-10.403],[6.219,0.563],[-12.244,18.143],[0.011,0.659]],"o":[[-11.914,14.743],[0.469,0.313],[9.406,-13.937],[-1.728,8.702]],"v":[[15.87,8.168],[-16.693,17.952],[17.271,8.622],[27.255,-18.937]]}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[171,51,38,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[82.052,165.109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 12"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-0.264,-5.336],[0.555,-15.505],[-2.639,-8.138],[2.695,12.744],[4.067,-0.057]],"o":[[0.175,3.521],[-0.432,12.092],[2.611,-1.888],[-0.333,-1.577],[-1.683,-1.557]],"v":[[-81.496,-11.618],[-82.139,18.061],[-75.682,41.041],[-73.488,-15.77],[-81.888,-25.04]]}],"e":[{"i":[[-8.575,-11.229],[0.818,-7.408],[-9.389,-24.888],[2.695,12.744],[18.067,2.443]],"o":[[7.595,9.944],[-1.861,16.862],[2.611,-1.888],[-0.333,-1.577],[-13.183,0.193]],"v":[[-75.996,-12.368],[-80.139,16.561],[-51.682,35.291],[-49.488,1.98],[-65.138,-25.29]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-8.575,-11.229],[0.818,-7.408],[-9.389,-24.888],[2.695,12.744],[18.067,2.443]],"o":[[7.595,9.944],[-1.861,16.862],[2.611,-1.888],[-0.333,-1.577],[-13.183,0.193]],"v":[[-75.996,-12.368],[-80.139,16.561],[-51.682,35.291],[-49.488,1.98],[-65.138,-25.29]]}],"e":[{"i":[[4.425,-5.979],[-1.695,-4.426],[-39.139,-22.888],[3.917,12.423],[18.067,2.443]],"o":[[-7.444,10.058],[6.068,15.842],[0.611,-6.138],[-3.511,-11.135],[-13.183,0.193]],"v":[[-77.246,-17.868],[-80.139,16.561],[-24.432,38.791],[-23.738,-7.52],[-49.888,-27.29]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[4.425,-5.979],[-1.695,-4.426],[-39.139,-22.888],[3.917,12.423],[18.067,2.443]],"o":[[-7.444,10.058],[6.068,15.842],[0.611,-6.138],[-3.511,-11.135],[-13.183,0.193]],"v":[[-77.246,-17.868],[-80.139,16.561],[-24.432,38.791],[-23.738,-7.52],[-49.888,-27.29]]}],"e":[{"i":[[4.425,-5.979],[-2.682,-3.908],[-15.389,-19.388],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[7.339,10.693],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-64.996,-18.368],[-66.139,5.311],[-16.932,25.041],[-14.238,-4.02],[-40.388,-28.54]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.425,-5.979],[-2.682,-3.908],[-15.389,-19.388],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[7.339,10.693],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-64.996,-18.368],[-66.139,5.311],[-16.932,25.041],[-14.238,-4.02],[-40.388,-28.54]]}],"e":[{"i":[[4.425,-5.979],[-5.706,-2.579],[-4.639,-12.138],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[11.818,5.342],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-39.996,-15.868],[-34.389,3.811],[-0.932,29.541],[0.262,-3.52],[-25.888,-28.04]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[4.425,-5.979],[-5.706,-2.579],[-4.639,-12.138],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[11.818,5.342],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-39.996,-15.868],[-34.389,3.811],[-0.932,29.541],[0.262,-3.52],[-25.888,-28.04]]}],"e":[{"i":[[1.732,-4.409],[-1.377,-2.052],[0.54,-13.855],[0.667,8.673],[11.493,0.324]],"o":[[-4.575,11.646],[7.193,10.717],[3.111,-5.388],[-0.945,-12.292],[-4.683,1.193]],"v":[[-18.746,-20.618],[-14.139,-0.939],[-0.432,28.291],[3.012,-2.27],[-8.638,-29.79]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[1.732,-4.409],[-1.377,-2.052],[0.54,-13.855],[0.667,8.673],[11.493,0.324]],"o":[[-4.575,11.646],[7.193,10.717],[3.111,-5.388],[-0.945,-12.292],[-4.683,1.193]],"v":[[-18.746,-20.618],[-14.139,-0.939],[-0.432,28.291],[3.012,-2.27],[-8.638,-29.79]]}],"e":[{"i":[[-0.904,-0.714],[-1.814,-6.586],[0.54,-13.855],[-0.079,15.386],[13.067,-0.307]],"o":[[4.3,3.396],[3.724,13.522],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[-4.871,-26.493],[5.486,-11.814],[7.568,29.791],[12.262,1.73],[-10.638,-28.79]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-0.904,-0.714],[-1.814,-6.586],[0.54,-13.855],[-0.079,15.386],[13.067,-0.307]],"o":[[4.3,3.396],[3.724,13.522],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[-4.871,-26.493],[5.486,-11.814],[7.568,29.791],[12.262,1.73],[-10.638,-28.79]]}],"e":[{"i":[[-1.03,-0.494],[-1.814,-6.586],[0.861,-13.263],[0.886,15.361],[16.817,0.068]],"o":[[6.927,3.215],[3.724,13.522],[1.835,-5.644],[-1.583,-27.452],[1.041,0.415]],"v":[[-6.621,-25.993],[7.486,-10.814],[8.568,30.416],[13.762,4.355],[-13.138,-28.165]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.03,-0.494],[-1.814,-6.586],[0.861,-13.263],[0.886,15.361],[16.817,0.068]],"o":[[6.927,3.215],[3.724,13.522],[1.835,-5.644],[-1.583,-27.452],[1.041,0.415]],"v":[[-6.621,-25.993],[7.486,-10.814],[8.568,30.416],[13.762,4.355],[-13.138,-28.165]]}],"e":[{"i":[[-1.094,-0.36],[-1.339,-6.699],[3.611,-13.138],[-0.079,15.386],[11.493,0.324]],"o":[[8.05,2.646],[1.693,8.467],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[0.879,-23.744],[12.986,-6.815],[11.068,31.791],[16.512,6.98],[-4.138,-25.041]]}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[171,51,38,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[89.15,59.721]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 13"}],"bounds":{"l":6,"t":29,"b":188,"r":110},"ip":10,"op":24,"st":10},{"ddd":0,"ind":1,"ty":4,"nm":"00","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[744.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[-26.372,46.632],[-3.431,46.632],[18.116,43.094],[25.298,29.158],[17.688,15.437],[-6.647,12.113],[-26.372,12.113]]}},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[9.862,0],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[-26.372,-14.258],[-10.506,-14.258],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-10.292,-46.633],[-26.372,-46.633]]}},"nm":"Path 2"},{"ind":2,"ty":"sh","closed":true,"ks":{"k":{"i":[[20.582,0],[0,0],[0,0],[0,0],[-7.363,-2.429],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[0,-9.434],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[10.147,0],[7.36,2.432],[6.717,7.719],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0,10.436],[-8.291,9.292]],"v":[[5.788,74.933],[-59.818,74.933],[-59.818,-74.933],[-1.501,-74.933],[24.762,-71.288],[41.379,-61.426],[51.456,-35.269],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}},"nm":"Path 3"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[60.067,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":3,"b":154,"r":120},"ip":45,"op":6267,"st":-33},{"ddd":0,"ind":2,"ty":4,"nm":"B_red 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.023,160.838,0]},"a":{"k":[67.851,106.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":10,"s":[{"i":[[0,0],[-0.433,1.731],[0.142,3.939],[1.004,1.232],[0,0]],"o":[[0.553,0.038],[0.653,-2.61],[-0.159,-4.417],[-0.591,-0.726],[0,0]],"v":[[-39.329,46.697],[-38.401,46.697],[-37.54,33.902],[-39.088,21.003],[-39.944,21.679]]}],"e":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-26.444,38.947],[-23.428,38.947],[-20.63,26.152],[-25.66,13.253],[-28.444,13.929]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":12,"s":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-26.444,38.947],[-23.428,38.947],[-20.63,26.152],[-25.66,13.253],[-28.444,13.929]]}],"e":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-13.694,45.197],[-2.428,39.947],[0.37,27.152],[-4.66,14.253],[-13.444,11.179]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":14,"s":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-13.694,45.197],[-2.428,39.947],[0.37,27.152],[-4.66,14.253],[-13.444,11.179]]}],"e":[{"i":[[0,0],[-5.47,5.788],[-1.088,13.248],[12.142,-3.71],[0,0]],"o":[[0,0],[7.271,-7.694],[0.732,-8.917],[-6.488,1.982],[0,0]],"v":[[-14.194,49.197],[0.572,43.697],[16.62,27.152],[2.09,19.503],[-13.944,15.179]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[0,0],[-5.47,5.788],[-1.088,13.248],[12.142,-3.71],[0,0]],"o":[[0,0],[7.271,-7.694],[0.732,-8.917],[-6.488,1.982],[0,0]],"v":[[-14.194,49.197],[0.572,43.697],[16.62,27.152],[2.09,19.503],[-13.944,15.179]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[-1.088,13.248],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0.732,-8.917],[-12.639,5.221],[0,0]],"v":[[-10.444,46.947],[10.322,44.447],[28.12,27.152],[9.34,19.753],[-10.444,12.429]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[0,0],[-8.351,-6.505],[-1.088,13.248],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0.732,-8.917],[-12.639,5.221],[0,0]],"v":[[-10.444,46.947],[10.322,44.447],[28.12,27.152],[9.34,19.753],[-10.444,12.429]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[17.322,45.447],[36.12,29.652],[12.84,17.753],[-7.194,12.429]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[17.322,45.447],[36.12,29.652],[12.84,17.753],[-7.194,12.429]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[20.822,46.947],[43.12,29.152],[17.84,15.753],[-7.194,12.429]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":22,"s":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[20.822,46.947],[43.12,29.152],[17.84,15.753],[-7.194,12.429]]}],"e":[{"i":[[0,0],[-8.652,5.496],[0,13.293],[11.512,-5.518],[0,0]],"o":[[0,0],[9.78,-6.212],[0,-14.365],[-12.332,5.911],[0,0]],"v":[[-3.444,46.447],[27.572,43.947],[50.87,29.652],[18.34,11.753],[-2.944,10.929]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":28,"s":[{"i":[[0,0],[-8.652,5.496],[0,13.293],[11.512,-5.518],[0,0]],"o":[[0,0],[9.78,-6.212],[0,-14.365],[-12.332,5.911],[0,0]],"v":[[-3.444,46.447],[27.572,43.947],[50.87,29.652],[18.34,11.753],[-2.944,10.929]]}],"e":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-11.194,46.448],[21.822,43.947],[50.37,27.152],[12.59,11.753],[-10.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-11.194,46.448],[21.822,43.947],[50.37,27.152],[12.59,11.753],[-10.694,10.93]]}],"e":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-12.194,46.448],[16.322,44.447],[40.87,29.152],[7.09,12.253],[-11.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":35,"s":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-12.194,46.448],[16.322,44.447],[40.87,29.152],[7.09,12.253],[-11.694,10.93]]}],"e":[{"i":[[0,0],[-9.716,3.266],[0,13.293],[15.762,-2.018],[0,0]],"o":[[0,0],[12.53,-4.212],[0,-14.365],[-13.564,1.737],[0,0]],"v":[[-12.194,46.448],[11.822,42.947],[35.87,27.652],[7.59,10.753],[-11.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":38,"s":[{"i":[[0,0],[-9.716,3.266],[0,13.293],[15.762,-2.018],[0,0]],"o":[[0,0],[12.53,-4.212],[0,-14.365],[-13.564,1.737],[0,0]],"v":[[-12.194,46.448],[11.822,42.947],[35.87,27.652],[7.59,10.753],[-11.694,10.93]]}],"e":[{"i":[[0,0],[-10.034,4.574],[0,13.293],[15.262,-4.518],[0,0]],"o":[[0,0],[12.53,-5.712],[0,-14.365],[-13.112,3.882],[0,0]],"v":[[-11.694,40.948],[13.322,39.447],[36.37,19.652],[7.59,10.753],[-11.194,9.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":40,"s":[{"i":[[0,0],[-10.034,4.574],[0,13.293],[15.262,-4.518],[0,0]],"o":[[0,0],[12.53,-5.712],[0,-14.365],[-13.112,3.882],[0,0]],"v":[[-11.694,40.948],[13.322,39.447],[36.37,19.652],[7.59,10.753],[-11.194,9.93]]}],"e":[{"i":[[0,0],[-10.249,0.161],[0,13.293],[11.262,0.482],[0,0]],"o":[[0,0],[13.53,-0.212],[0,-14.365],[-13.662,-0.585],[0,0]],"v":[[-10.194,45.948],[15.822,46.447],[41.37,29.652],[14.59,11.753],[-9.694,12.43]]}]},{"t":45}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":10,"s":[{"i":[[0,0],[-0.692,2.11],[0.058,5.864],[0.866,1.732],[0,0]],"o":[[0,0],[0.591,-1.802],[-0.081,-8.134],[-0.969,-1.939],[0,0]],"v":[[-42.194,-29.872],[-39.601,-35.625],[-38.957,-48.631],[-39.903,-61.247],[-41.776,-62.247]]}],"e":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-31.944,-18.622],[-25.746,-24.375],[-24.206,-37.381],[-26.467,-49.997],[-30.944,-50.997]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":12,"s":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-31.944,-18.622],[-25.746,-24.375],[-24.206,-37.381],[-26.467,-49.997],[-30.944,-50.997]]}],"e":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-15.694,-15.872],[-5.996,-21.125],[-1.456,-33.631],[-6.717,-46.747],[-15.194,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":14,"s":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-15.694,-15.872],[-5.996,-21.125],[-1.456,-33.631],[-6.717,-46.747],[-15.194,-48.247]]}],"e":[{"i":[[0,0],[-2.844,6.53],[-1.693,5.616],[10.069,-5.018],[0,0]],"o":[[0,0],[2.347,-5.39],[2.054,-6.814],[-8.016,3.995],[0,0]],"v":[[-15.194,-15.372],[0.254,-21.125],[9.294,-29.631],[0.033,-44.247],[-14.194,-47.747]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[0,0],[-2.844,6.53],[-1.693,5.616],[10.069,-5.018],[0,0]],"o":[[0,0],[2.347,-5.39],[2.054,-6.814],[-8.016,3.995],[0,0]],"v":[[-15.194,-15.372],[0.254,-21.125],[9.294,-29.631],[0.033,-44.247],[-14.194,-47.747]]}],"e":[{"i":[[0,0],[-3.065,11.673],[-4.193,2.116],[7.045,-7.388],[0,0]],"o":[[0,0],[2.597,-9.89],[11.293,-5.7],[-6.181,6.482],[0,0]],"v":[[-10.444,-15.872],[10.754,-18.875],[22.044,-30.381],[8.033,-46.747],[-10.444,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[0,0],[-3.065,11.673],[-4.193,2.116],[7.045,-7.388],[0,0]],"o":[[0,0],[2.597,-9.89],[11.293,-5.7],[-6.181,6.482],[0,0]],"v":[[-10.444,-15.872],[10.754,-18.875],[22.044,-30.381],[8.033,-46.747],[-10.444,-48.247]]}],"e":[{"i":[[0,0],[-3.065,11.673],[1.307,10.616],[6.319,-8.018],[0,0]],"o":[[0,0],[2.597,-9.89],[-1.546,-12.555],[-7.387,9.373],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[29.544,-32.381],[13.533,-48.247],[-7.194,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[0,0],[-3.065,11.673],[1.307,10.616],[6.319,-8.018],[0,0]],"o":[[0,0],[2.597,-9.89],[-1.546,-12.555],[-7.387,9.373],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[29.544,-32.381],[13.533,-48.247],[-7.194,-48.247]]}],"e":[{"i":[[0,0],[-7.132,9.736],[0,12.221],[10.692,-5.3],[0,0]],"o":[[0,0],[5.418,-7.395],[0,-12.65],[-10.693,5.3],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[36.044,-32.381],[13.533,-48.247],[-7.194,-48.247]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":22,"s":[{"i":[[0,0],[-7.132,9.736],[0,12.221],[10.692,-5.3],[0,0]],"o":[[0,0],[5.418,-7.395],[0,-12.65],[-10.693,5.3],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[36.044,-32.381],[13.533,-48.247],[-7.194,-48.247]]}],"e":[{"i":[[0,0],[-9.374,7.601],[0.557,12.616],[18.319,-6.518],[0,0]],"o":[[0,0],[10.347,-8.39],[-0.657,-14.87],[-11.244,4.001],[0,0]],"v":[[-3.319,-16.372],[21.004,-15.375],[46.795,-31.881],[18.033,-47.247],[-3.319,-48.265]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":28,"s":[{"i":[[0,0],[-9.374,7.601],[0.557,12.616],[18.319,-6.518],[0,0]],"o":[[0,0],[10.347,-8.39],[-0.657,-14.87],[-11.244,4.001],[0,0]],"v":[[-3.319,-16.372],[21.004,-15.375],[46.795,-31.881],[18.033,-47.247],[-3.319,-48.265]]}],"e":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-11.069,-16.371],[15.255,-15.375],[46.795,-34.381],[12.283,-47.247],[-11.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-11.069,-16.371],[15.255,-15.375],[46.795,-34.381],[12.283,-47.247],[-11.069,-48.264]]}],"e":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-12.069,-16.371],[9.755,-14.875],[34.795,-33.881],[6.783,-46.747],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":35,"s":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-12.069,-16.371],[9.755,-14.875],[34.795,-33.881],[6.783,-46.747],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-12.069,-16.371],[6.755,-16.375],[31.795,-35.381],[4.783,-47.247],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":38,"s":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-12.069,-16.371],[6.755,-16.375],[31.795,-35.381],[4.783,-47.247],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-13.569,-20.371],[6.755,-16.375],[29.795,-39.881],[4.783,-47.247],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":40,"s":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-13.569,-20.371],[6.755,-16.375],[29.795,-39.881],[4.783,-47.247],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-12.068,-0.119],[0.557,12.616],[10.069,0.482],[0,0]],"o":[[0,0],[11.097,0.11],[-0.657,-14.87],[-5.029,-0.241],[0,0]],"v":[[-9.819,-15.121],[11.755,-14.875],[33.795,-31.381],[9.283,-47.747],[-8.569,-47.764]]}]},{"t":45}]},"nm":"Path 2"},{"ind":2,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":10,"s":[{"i":[[-1.81,1.749],[-0.86,-0.217],[-1.22,-9.917],[-2.482,-13.756],[0,0],[1.583,-5.417],[7.316,-11.263],[0.492,0.237]],"o":[[0.242,0.033],[7.39,-1.467],[0.667,5.423],[0,0],[3.268,16.065],[-2.041,6.984],[0.316,-0.513],[-0.698,-2.846]],"v":[[-43.64,-75.798],[-43.038,-75.798],[-32.816,-52.188],[-36.417,-6.759],[-36.417,-6.33],[-28.981,34.402],[-43.715,75.248],[-43.64,75.248]]}],"e":[{"i":[[-1.81,1.749],[-2.36,0.033],[-3.6,-9.32],[-2.482,-13.756],[0,0],[2.423,-6.614],[8.066,-0.763],[0.492,0.237]],"o":[[0.242,0.033],[7.779,-0.109],[14.167,36.673],[0,0],[3.268,16.065],[-6.167,16.833],[-1.943,0.184],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-36.288,-76.048],[-16.816,-54.188],[-14.667,-0.009],[-14.667,0.42],[-15.732,34.902],[-40.715,74.998],[-43.64,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":12,"s":[{"i":[[-1.81,1.749],[-2.36,0.033],[-3.6,-9.32],[-2.482,-13.756],[0,0],[2.423,-6.614],[8.066,-0.763],[0.492,0.237]],"o":[[0.242,0.033],[7.779,-0.109],[14.167,36.673],[0,0],[3.268,16.065],[-6.167,16.833],[-1.943,0.184],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-36.288,-76.048],[-16.816,-54.188],[-14.667,-0.009],[-14.667,0.42],[-15.732,34.902],[-40.715,74.998],[-43.64,75.248]]}],"e":[{"i":[[-2.26,1.108],[-12.797,2.457],[-3.583,-9.327],[-2.482,-13.756],[0,0],[-3.167,-7.667],[20.066,-1.013],[0.492,0.237]],"o":[[2.992,-1.467],[7.64,-1.467],[9.719,25.301],[0,0],[3.268,16.065],[6.551,15.86],[-19.927,1.006],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-14.288,-76.298],[11.934,-60.688],[14.833,-1.259],[14.833,-0.83],[21.018,23.152],[-2.464,75.248],[-43.64,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":14,"s":[{"i":[[-2.26,1.108],[-12.797,2.457],[-3.583,-9.327],[-2.482,-13.756],[0,0],[-3.167,-7.667],[20.066,-1.013],[0.492,0.237]],"o":[[2.992,-1.467],[7.64,-1.467],[9.719,25.301],[0,0],[3.268,16.065],[6.551,15.86],[-19.927,1.006],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-14.288,-76.298],[11.934,-60.688],[14.833,-1.259],[14.833,-0.83],[21.018,23.152],[-2.464,75.248],[-43.64,75.248]]}],"e":[{"i":[[-2.284,1.057],[-12.61,3.283],[-3.333,-14.827],[-2.482,-13.756],[0,0],[-3.167,-7.667],[27.816,2.987],[2.186,1.951]],"o":[[7.492,-3.467],[18.213,-4.742],[5.944,26.444],[0,0],[3.268,16.065],[6.551,15.86],[-19.838,-2.13],[-2.187,-1.951]],"v":[[-43.64,-76.548],[-14.288,-76.298],[21.934,-58.438],[21.833,-1.259],[21.833,-0.83],[34.268,28.402],[-1.964,76.998],[-43.64,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[-2.284,1.057],[-12.61,3.283],[-3.333,-14.827],[-2.482,-13.756],[0,0],[-3.167,-7.667],[27.816,2.987],[2.186,1.951]],"o":[[7.492,-3.467],[18.213,-4.742],[5.944,26.444],[0,0],[3.268,16.065],[6.551,15.86],[-19.838,-2.13],[-2.187,-1.951]],"v":[[-43.64,-76.548],[-14.288,-76.298],[21.934,-58.438],[21.833,-1.259],[21.833,-0.83],[34.268,28.402],[-1.964,76.998],[-43.64,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[-3.333,-14.827],[2.518,-18.006],[0,0],[-3.831,-19.346],[26.503,4.393],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[5.944,26.444],[0,0],[-1.149,21.088],[3.333,16.833],[-19.684,-3.263],[-2.187,-1.951]],"v":[[-41.39,-76.548],[-2.288,-76.798],[34.184,-57.438],[35.833,-4.259],[35.833,-3.83],[44.768,25.902],[20.036,75.498],[-41.39,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[-3.333,-14.827],[2.518,-18.006],[0,0],[-3.831,-19.346],[26.503,4.393],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[5.944,26.444],[0,0],[-1.149,21.088],[3.333,16.833],[-19.684,-3.263],[-2.187,-1.951]],"v":[[-41.39,-76.548],[-2.288,-76.798],[34.184,-57.438],[35.833,-4.259],[35.833,-3.83],[44.768,25.902],[20.036,75.498],[-41.39,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[-4.333,-30.827],[0.518,-15.696],[0,0],[-0.27,-19.72],[25.863,7.267],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[3.772,26.84],[0,0],[-1.149,21.088],[0.333,24.325],[-25.863,-7.268],[-2.187,-1.951]],"v":[[-42.14,-76.548],[13.961,-76.548],[40.185,-50.938],[35.833,-5.009],[35.833,-4.58],[48.518,32.902],[19.535,75.248],[-42.14,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[-4.333,-30.827],[0.518,-15.696],[0,0],[-0.27,-19.72],[25.863,7.267],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[3.772,26.84],[0,0],[-1.149,21.088],[0.333,24.325],[-25.863,-7.268],[-2.187,-1.951]],"v":[[-42.14,-76.548],[13.961,-76.548],[40.185,-50.938],[35.833,-5.009],[35.833,-4.58],[48.518,32.902],[19.535,75.248],[-42.14,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[0.182,-35.577],[0.518,-15.696],[0,0],[-0.27,-19.72],[20.316,5.987],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[-0.138,27.103],[0,0],[-1.149,21.088],[0.333,24.325],[-25.769,-7.594],[-2.187,-1.951]],"v":[[-41.89,-74.548],[13.961,-76.548],[50.185,-46.938],[43.333,-4.509],[43.333,-4.08],[52.518,32.402],[19.535,75.248],[-42.89,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[0.182,-35.577],[0.518,-15.696],[0,0],[-0.27,-19.72],[20.316,5.987],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[-0.138,27.103],[0,0],[-1.149,21.088],[0.333,24.325],[-25.769,-7.594],[-2.187,-1.951]],"v":[[-41.89,-74.548],[13.961,-76.548],[50.185,-46.938],[43.333,-4.509],[43.333,-4.08],[52.518,32.402],[19.535,75.248],[-42.89,75.248]]}],"e":[{"i":[[10.992,53.783],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.557,2.877]],"o":[[-0.714,-3.493],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-7.258,-37.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.935,-35.188],[52.583,-4.759],[52.583,-4.33],[79.269,35.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":28,"s":[{"i":[[10.992,53.783],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.557,2.877]],"o":[[-0.714,-3.493],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-7.258,-37.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.935,-35.188],[52.583,-4.759],[52.583,-4.33],[79.269,35.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[5.992,48.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.433,2.898]],"o":[[-0.439,-3.538],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.758,-38.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.685,-35.188],[52.583,-4.759],[52.583,-4.33],[79.019,35.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[5.992,48.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.433,2.898]],"o":[[-0.439,-3.538],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.758,-38.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.685,-35.188],[52.583,-4.759],[52.583,-4.33],[79.019,35.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[-4.008,47.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.284,2.916]],"o":[[0.301,-3.552],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[4.242,-43.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[66.685,-34.188],[47.083,-4.259],[47.083,-3.83],[75.019,36.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":35,"s":[{"i":[[-4.008,47.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.284,2.916]],"o":[[0.301,-3.552],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[4.242,-43.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[66.685,-34.188],[47.083,-4.259],[47.083,-3.83],[75.019,36.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[7.992,47.783],[-23.325,-3.498],[0.795,-21.872],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.34,2.91]],"o":[[-0.588,-3.516],[21.89,3.283],[-0.833,22.923],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.258,-45.013]],"v":[[-43.14,-75.548],[25.962,-75.048],[63.685,-37.688],[44.083,-5.259],[44.083,-4.83],[71.019,37.402],[24.035,75.248],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":38,"s":[{"i":[[7.992,47.783],[-23.325,-3.498],[0.795,-21.872],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.34,2.91]],"o":[[-0.588,-3.516],[21.89,3.283],[-0.833,22.923],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.258,-45.013]],"v":[[-43.14,-75.548],[25.962,-75.048],[63.685,-37.688],[44.083,-5.259],[44.083,-4.83],[71.019,37.402],[24.035,75.248],[-42.89,75.248]]}],"e":[{"i":[[11.992,50.283],[-23.514,1.844],[0.795,-21.872],[-1.107,-6.756],[0,0],[2.104,-37.626],[24.436,-1.757],[0.608,2.866]],"o":[[-0.827,-3.468],[21.89,-1.717],[-0.833,22.923],[0,0],[-0.232,9.565],[-1.417,25.333],[-20.684,1.487],[-9.758,-46.013]],"v":[[-43.14,-75.548],[22.962,-78.548],[61.685,-42.188],[44.333,-6.759],[44.333,-6.33],[72.519,33.902],[24.035,72.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":40,"s":[{"i":[[11.992,50.283],[-23.514,1.844],[0.795,-21.872],[-1.107,-6.756],[0,0],[2.104,-37.626],[24.436,-1.757],[0.608,2.866]],"o":[[-0.827,-3.468],[21.89,-1.717],[-0.833,22.923],[0,0],[-0.232,9.565],[-1.417,25.333],[-20.684,1.487],[-9.758,-46.013]],"v":[[-43.14,-75.548],[22.962,-78.548],[61.685,-42.188],[44.333,-6.759],[44.333,-6.33],[72.519,33.902],[24.035,72.748],[-42.89,75.248]]}],"e":[{"i":[[-0.008,1.283],[-23.583,-0.378],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.008,0.487]],"o":[[0.242,-0.467],[17.64,0.283],[-1.583,25.173],[0,0],[-0.232,-0.935],[-1.417,25.333],[-20.684,1.487],[0.014,-2.145]],"v":[[-43.14,-75.548],[32.462,-75.548],[68.685,-34.688],[47.083,-2.759],[47.083,-2.33],[76.519,37.402],[27.035,75.748],[-42.89,75.248]]}]},{"t":45}]},"nm":"Path 3"},{"ty":"fl","fillEnabled":true,"c":{"k":[204,69,51,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[52.977,108.888]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 14"}],"bounds":{"l":7,"t":29,"b":187,"r":133},"ip":10,"op":45,"st":10}]},{"id":"comp_23","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"sombraRed 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[69.023,162.838,0]},"a":{"k":[6.851,109.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[-0.609,-10.588],[6.732,-46.911],[-1.622,32.611],[0.01,0.659]],"o":[[0.666,11.583],[3.732,-7.411],[0.764,-15.371],[-2.006,0.928]],"v":[[-75.89,-30.068],[-75.956,20.426],[-60.988,-31.614],[-68.967,-62.913]]}],"e":[{"i":[[-5.334,-9.167],[21.982,-38.911],[-15.236,28.879],[0.01,0.659]],"o":[[7.423,12.759],[11.232,0.089],[14.957,-28.351],[-27.006,3.428]],"v":[[-69.64,-37.318],[-75.956,19.176],[-48.488,-17.364],[-47.967,-57.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-5.334,-9.167],[21.982,-38.911],[-15.236,28.879],[0.01,0.659]],"o":[[7.423,12.759],[11.232,0.089],[14.957,-28.351],[-27.006,3.428]],"v":[[-69.64,-37.318],[-75.956,19.176],[-48.488,-17.364],[-47.967,-57.163]]}],"e":[{"i":[[13.898,-29.258],[23.732,-10.411],[-15.236,28.879],[0.01,0.659]],"o":[[-6.334,13.333],[16.482,-0.161],[14.957,-28.351],[-2.506,23.428]],"v":[[-59.14,-18.818],[-62.956,19.926],[-8.488,0.386],[-16.717,-52.913]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[13.898,-29.258],[23.732,-10.411],[-15.236,28.879],[0.01,0.659]],"o":[[-6.334,13.333],[16.482,-0.161],[14.957,-28.351],[-2.506,23.428]],"v":[[-59.14,-18.818],[-62.956,19.926],[-8.488,0.386],[-16.717,-52.913]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-15.702,18.195],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[13.265,-15.371],[0.744,11.678]],"v":[[-35.39,-11.068],[-53.956,19.426],[-5.738,10.136],[3.283,-26.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-15.702,18.195],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[13.265,-15.371],[0.744,11.678]],"v":[[-35.39,-11.068],[-53.956,19.426],[-5.738,10.136],[3.283,-26.163]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-5.39,-5.068],[-32.706,17.176],[9.762,12.386],[13.783,-26.663]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-5.39,-5.068],[-32.706,17.176],[9.762,12.386],[13.783,-26.663]]}],"e":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-6.64,-5.068],[-21.456,14.926],[10.262,13.136],[16.533,-21.163]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[12.417,-9.167],[11.483,-4.661],[-9.485,14.629],[0.01,0.659]],"o":[[-7.405,5.467],[-0.357,1.13],[9.147,-14.108],[-0.506,16.428]],"v":[[-6.64,-5.068],[-21.456,14.926],[10.262,13.136],[16.533,-21.163]]}],"e":[{"i":[[5.222,-6.272],[9.61,1.599],[-14.735,15.879],[0.01,0.659]],"o":[[-5.89,7.073],[-0.357,1.13],[11.437,-12.325],[-4.104,7.346]],"v":[[7.61,2.182],[-20.956,14.926],[12.762,12.386],[20.783,-19.663]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[5.222,-6.272],[9.61,1.599],[-14.735,15.879],[0.01,0.659]],"o":[[-5.89,7.073],[-0.357,1.13],[11.437,-12.325],[-4.104,7.346]],"v":[[7.61,2.182],[-20.956,14.926],[12.762,12.386],[20.783,-19.663]]}],"e":[{"i":[[5.219,-6.275],[14.915,5.331],[-13.853,12.7],[0.01,0.659]],"o":[[-5.886,7.077],[0.056,0.721],[9.26,-8.489],[-4.742,9.065]],"v":[[6.49,6.8],[-25.824,16.314],[11.267,13.754],[21.769,-15.55]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[5.219,-6.275],[14.915,5.331],[-13.853,12.7],[0.01,0.659]],"o":[[-5.886,7.077],[0.056,0.721],[9.26,-8.489],[-4.742,9.065]],"v":[[6.49,6.8],[-25.824,16.314],[11.267,13.754],[21.769,-15.55]]}],"e":[{"i":[[5.215,-6.278],[20.219,9.063],[-12.244,18.143],[0.011,0.659]],"o":[[-5.882,7.08],[0.469,0.313],[9.406,-13.937],[1.76,13.676]],"v":[[11.37,9.418],[-24.693,15.702],[11.771,9.122],[17.755,-20.937]]}]},{"t":16}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[210,175,26,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[82.052,165.109]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 12"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[-0.264,-5.336],[0.555,-15.505],[-2.639,-8.138],[2.695,12.744],[4.067,-0.057]],"o":[[0.175,3.521],[-0.432,12.092],[2.611,-1.888],[-0.333,-1.577],[-1.683,-1.557]],"v":[[-81.496,-11.618],[-82.139,18.061],[-75.682,41.041],[-73.488,-15.77],[-81.888,-25.04]]}],"e":[{"i":[[-8.575,-11.229],[0.818,-7.408],[-9.389,-24.888],[2.695,12.744],[18.067,2.443]],"o":[[7.595,9.944],[-1.861,16.862],[2.611,-1.888],[-0.333,-1.577],[-13.183,0.193]],"v":[[-75.996,-12.368],[-80.139,16.561],[-51.682,35.291],[-49.488,1.98],[-65.138,-25.29]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-8.575,-11.229],[0.818,-7.408],[-9.389,-24.888],[2.695,12.744],[18.067,2.443]],"o":[[7.595,9.944],[-1.861,16.862],[2.611,-1.888],[-0.333,-1.577],[-13.183,0.193]],"v":[[-75.996,-12.368],[-80.139,16.561],[-51.682,35.291],[-49.488,1.98],[-65.138,-25.29]]}],"e":[{"i":[[4.425,-5.979],[-1.695,-4.426],[-39.139,-22.888],[3.917,12.423],[18.067,2.443]],"o":[[-7.444,10.058],[6.068,15.842],[0.611,-6.138],[-3.511,-11.135],[-13.183,0.193]],"v":[[-77.246,-17.868],[-80.139,16.561],[-24.432,38.791],[-23.738,-7.52],[-49.888,-27.29]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[4.425,-5.979],[-1.695,-4.426],[-39.139,-22.888],[3.917,12.423],[18.067,2.443]],"o":[[-7.444,10.058],[6.068,15.842],[0.611,-6.138],[-3.511,-11.135],[-13.183,0.193]],"v":[[-77.246,-17.868],[-80.139,16.561],[-24.432,38.791],[-23.738,-7.52],[-49.888,-27.29]]}],"e":[{"i":[[4.425,-5.979],[-2.682,-3.908],[-15.389,-19.388],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[7.339,10.693],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-64.996,-18.368],[-66.139,5.311],[-16.932,25.041],[-14.238,-4.02],[-40.388,-28.54]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[4.425,-5.979],[-2.682,-3.908],[-15.389,-19.388],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[7.339,10.693],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-64.996,-18.368],[-66.139,5.311],[-16.932,25.041],[-14.238,-4.02],[-40.388,-28.54]]}],"e":[{"i":[[4.425,-5.979],[-5.706,-2.579],[-4.639,-12.138],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[11.818,5.342],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-39.996,-15.868],[-34.389,3.811],[-0.932,29.541],[0.262,-3.52],[-25.888,-28.04]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.425,-5.979],[-5.706,-2.579],[-4.639,-12.138],[2.111,8.439],[13.567,1.943]],"o":[[-7.444,10.058],[11.818,5.342],[0.611,-6.138],[-2.833,-11.327],[-4.683,1.193]],"v":[[-39.996,-15.868],[-34.389,3.811],[-0.932,29.541],[0.262,-3.52],[-25.888,-28.04]]}],"e":[{"i":[[1.732,-4.409],[-1.377,-2.052],[0.54,-13.855],[0.667,8.673],[11.493,0.324]],"o":[[-4.575,11.646],[7.193,10.717],[3.111,-5.388],[-0.945,-12.292],[-4.683,1.193]],"v":[[-18.746,-20.618],[-14.139,-0.939],[-0.432,28.291],[3.012,-2.27],[-8.638,-29.79]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[1.732,-4.409],[-1.377,-2.052],[0.54,-13.855],[0.667,8.673],[11.493,0.324]],"o":[[-4.575,11.646],[7.193,10.717],[3.111,-5.388],[-0.945,-12.292],[-4.683,1.193]],"v":[[-18.746,-20.618],[-14.139,-0.939],[-0.432,28.291],[3.012,-2.27],[-8.638,-29.79]]}],"e":[{"i":[[-0.965,-0.629],[-1.814,-6.586],[0.54,-13.855],[-0.079,15.386],[11.493,0.324]],"o":[[5.804,3.783],[3.724,13.522],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[-5.621,-28.243],[5.486,-11.814],[7.568,29.791],[11.512,2.23],[-8.638,-29.79]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-0.965,-0.629],[-1.814,-6.586],[0.54,-13.855],[-0.079,15.386],[11.493,0.324]],"o":[[5.804,3.783],[3.724,13.522],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[-5.621,-28.243],[5.486,-11.814],[7.568,29.791],[11.512,2.23],[-8.638,-29.79]]}],"e":[{"i":[[-1.03,-0.494],[-1.814,-6.586],[2.611,-12.263],[0.198,15.385],[11.493,0.324]],"o":[[6.927,3.215],[3.724,13.522],[1.835,-5.644],[-0.333,-25.952],[1.041,0.415]],"v":[[-5.871,-27.243],[7.486,-10.814],[9.068,29.666],[13.012,4.855],[-7.388,-27.665]]}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.03,-0.494],[-1.814,-6.586],[2.611,-12.263],[0.198,15.385],[11.493,0.324]],"o":[[6.927,3.215],[3.724,13.522],[1.835,-5.644],[-0.333,-25.952],[1.041,0.415]],"v":[[-5.871,-27.243],[7.486,-10.814],[9.068,29.666],[13.012,4.855],[-7.388,-27.665]]}],"e":[{"i":[[-1.094,-0.36],[-2.051,-6.516],[3.611,-13.138],[-0.078,15.386],[11.493,0.324]],"o":[[8.05,2.646],[2.193,6.967],[1.835,-5.644],[0.126,-24.769],[1.041,0.415]],"v":[[0.379,-24.744],[12.736,-8.565],[11.568,33.541],[15.512,5.98],[-4.388,-25.791]]}]},{"t":16}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[210,175,26,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[89.15,59.721]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 13"}],"bounds":{"l":6,"t":29,"b":188,"r":105},"ip":2,"op":16,"st":2},{"ddd":0,"ind":1,"ty":4,"nm":"B_yellow3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[744.41,161.975,0]},"a":{"k":[675.727,77.648,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[-4.79,2.358],[0,6.935],[5.072,2.217],[11.149,0],[0,0]],"o":[[0,0],[9.574,0],[4.787,-2.358],[0,-6.93],[-5.075,-2.214],[0,0],[0,0]],"v":[[-26.372,46.632],[-3.431,46.632],[18.116,43.094],[25.298,29.158],[17.688,15.437],[-6.647,12.113],[-26.372,12.113]]}},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[-4.502,2.004],[0,6.646],[4.144,2.144],[9.862,0],[0,0]],"o":[[0,0],[9.289,0],[4.503,-2],[0,-6.647],[-4.147,-2.144],[0,0],[0,0]],"v":[[-26.372,-14.258],[-10.506,-14.258],[10.184,-17.26],[16.938,-30.23],[10.719,-43.417],[-10.292,-46.633],[-26.372,-46.633]]}},"nm":"Path 2"},{"ind":2,"ty":"sh","closed":true,"ks":{"k":{"i":[[20.582,0],[0,0],[0,0],[0,0],[-7.363,-2.429],[-3.718,-4.143],[0,-9.719],[7.575,-5.715],[0.999,-0.499],[2.573,-1.143],[-5.505,-6.359],[0,-9.434],[7.145,-8.004]],"o":[[0,0],[0,0],[0,0],[10.147,0],[7.36,2.432],[6.717,7.719],[0,11.721],[-2.573,2.004],[-1.001,0.503],[9.29,2.003],[5.5,6.362],[0,10.436],[-8.291,9.292]],"v":[[5.788,74.933],[-59.818,74.933],[-59.818,-74.933],[-1.501,-74.933],[24.762,-71.288],[41.379,-61.426],[51.456,-35.269],[40.092,-9.113],[34.732,-5.361],[29.372,-2.895],[51.564,9.647],[59.818,33.339],[49.098,60.997]]}},"nm":"Path 3"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[60.067,78.614]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":3,"b":154,"r":120},"ip":37,"op":42,"st":-41},{"ddd":0,"ind":2,"ty":4,"nm":"B_yellow2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[127.023,160.838,0]},"a":{"k":[67.851,106.462,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":2,"s":[{"i":[[0,0],[-0.433,1.731],[0.142,3.939],[1.004,1.232],[0,0]],"o":[[0.553,0.038],[0.653,-2.61],[-0.159,-4.417],[-0.591,-0.726],[0,0]],"v":[[-39.329,46.697],[-38.401,46.697],[-37.54,33.902],[-39.088,21.003],[-39.944,21.679]]}],"e":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-26.444,38.947],[-23.428,38.947],[-20.63,26.152],[-25.66,13.253],[-28.444,13.929]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":4,"s":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-26.444,38.947],[-23.428,38.947],[-20.63,26.152],[-25.66,13.253],[-28.444,13.929]]}],"e":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-13.694,45.197],[-2.428,39.947],[0.37,27.152],[-4.66,14.253],[-13.444,11.179]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":6,"s":[{"i":[[0,0],[-1.408,1.731],[0.462,3.939],[3.262,1.232],[0,0]],"o":[[1.796,0.038],[2.123,-2.61],[-0.518,-4.417],[-1.922,-0.726],[0,0]],"v":[[-13.694,45.197],[-2.428,39.947],[0.37,27.152],[-4.66,14.253],[-13.444,11.179]]}],"e":[{"i":[[0,0],[-5.47,5.788],[-1.088,13.248],[12.142,-3.71],[0,0]],"o":[[0,0],[7.271,-7.694],[0.732,-8.917],[-6.488,1.982],[0,0]],"v":[[-14.194,49.197],[0.572,43.697],[16.62,27.152],[2.09,19.503],[-13.944,15.179]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":8,"s":[{"i":[[0,0],[-5.47,5.788],[-1.088,13.248],[12.142,-3.71],[0,0]],"o":[[0,0],[7.271,-7.694],[0.732,-8.917],[-6.488,1.982],[0,0]],"v":[[-14.194,49.197],[0.572,43.697],[16.62,27.152],[2.09,19.503],[-13.944,15.179]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[-1.088,13.248],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0.732,-8.917],[-12.639,5.221],[0,0]],"v":[[-10.444,46.947],[10.322,44.447],[28.12,27.152],[9.34,19.753],[-10.444,12.429]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":10,"s":[{"i":[[0,0],[-8.351,-6.505],[-1.088,13.248],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0.732,-8.917],[-12.639,5.221],[0,0]],"v":[[-10.444,46.947],[10.322,44.447],[28.12,27.152],[9.34,19.753],[-10.444,12.429]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[17.322,45.447],[36.12,29.652],[12.84,17.753],[-7.194,12.429]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":12,"s":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[17.322,45.447],[36.12,29.652],[12.84,17.753],[-7.194,12.429]]}],"e":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[20.822,46.947],[43.12,29.152],[17.84,15.753],[-7.194,12.429]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":14,"s":[{"i":[[0,0],[-8.351,-6.505],[0,13.293],[11.734,-4.848],[0,0]],"o":[[0,0],[8.351,6.505],[0,-14.365],[-12.639,5.221],[0,0]],"v":[[-7.194,46.947],[20.822,46.947],[43.12,29.152],[17.84,15.753],[-7.194,12.429]]}],"e":[{"i":[[0,0],[-8.652,5.496],[0,13.293],[11.512,-5.518],[0,0]],"o":[[0,0],[9.78,-6.212],[0,-14.365],[-12.332,5.911],[0,0]],"v":[[-3.444,46.447],[27.572,43.947],[50.87,29.652],[18.34,11.753],[-2.944,10.929]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[0,0],[-8.652,5.496],[0,13.293],[11.512,-5.518],[0,0]],"o":[[0,0],[9.78,-6.212],[0,-14.365],[-12.332,5.911],[0,0]],"v":[[-3.444,46.447],[27.572,43.947],[50.87,29.652],[18.34,11.753],[-2.944,10.929]]}],"e":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-11.194,46.448],[21.822,43.947],[50.37,27.152],[12.59,11.753],[-10.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":24,"s":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-11.194,46.448],[21.822,43.947],[50.37,27.152],[12.59,11.753],[-10.694,10.93]]}],"e":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-12.194,46.448],[16.322,44.447],[40.87,29.152],[7.09,12.253],[-11.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":27,"s":[{"i":[[0,0],[-10.084,-1.841],[0,13.293],[13.762,3.482],[0,0]],"o":[[0,0],[12.53,2.288],[0,-14.365],[-13.257,-3.354],[0,0]],"v":[[-12.194,46.448],[16.322,44.447],[40.87,29.152],[7.09,12.253],[-11.694,10.93]]}],"e":[{"i":[[0,0],[-9.716,3.266],[0,13.293],[15.762,-2.018],[0,0]],"o":[[0,0],[12.53,-4.212],[0,-14.365],[-13.564,1.737],[0,0]],"v":[[-12.194,46.448],[11.822,42.947],[35.87,27.652],[7.59,10.753],[-11.694,10.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":30,"s":[{"i":[[0,0],[-9.716,3.266],[0,13.293],[15.762,-2.018],[0,0]],"o":[[0,0],[12.53,-4.212],[0,-14.365],[-13.564,1.737],[0,0]],"v":[[-12.194,46.448],[11.822,42.947],[35.87,27.652],[7.59,10.753],[-11.694,10.93]]}],"e":[{"i":[[0,0],[-10.034,4.574],[0,13.293],[15.262,-4.518],[0,0]],"o":[[0,0],[12.53,-5.712],[0,-14.365],[-13.112,3.882],[0,0]],"v":[[-11.694,40.948],[13.322,39.447],[36.37,19.652],[7.59,10.753],[-11.194,9.93]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[0,0],[-10.034,4.574],[0,13.293],[15.262,-4.518],[0,0]],"o":[[0,0],[12.53,-5.712],[0,-14.365],[-13.112,3.882],[0,0]],"v":[[-11.694,40.948],[13.322,39.447],[36.37,19.652],[7.59,10.753],[-11.194,9.93]]}],"e":[{"i":[[0,0],[-10.249,0.161],[0,13.293],[11.262,0.482],[0,0]],"o":[[0,0],[13.53,-0.212],[0,-14.365],[-13.662,-0.585],[0,0]],"v":[[-10.194,45.948],[15.822,46.447],[41.37,29.652],[14.59,11.753],[-9.694,12.43]]}]},{"t":37}]},"nm":"Path 1"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":2,"s":[{"i":[[0,0],[-0.692,2.11],[0.058,5.864],[0.866,1.732],[0,0]],"o":[[0,0],[0.591,-1.802],[-0.081,-8.134],[-0.969,-1.939],[0,0]],"v":[[-42.194,-29.872],[-39.601,-35.625],[-38.957,-48.631],[-39.903,-61.247],[-41.776,-62.247]]}],"e":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-31.944,-18.622],[-25.746,-24.375],[-24.206,-37.381],[-26.467,-49.997],[-30.944,-50.997]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":4,"s":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-31.944,-18.622],[-25.746,-24.375],[-24.206,-37.381],[-26.467,-49.997],[-30.944,-50.997]]}],"e":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-15.694,-15.872],[-5.996,-21.125],[-1.456,-33.631],[-6.717,-46.747],[-15.194,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":6,"s":[{"i":[[0,0],[-1.653,2.11],[0.139,5.864],[2.069,1.732],[0,0]],"o":[[0,0],[1.412,-1.802],[-0.193,-8.134],[-2.316,-1.939],[0,0]],"v":[[-15.694,-15.872],[-5.996,-21.125],[-1.456,-33.631],[-6.717,-46.747],[-15.194,-48.247]]}],"e":[{"i":[[0,0],[-2.844,6.53],[-1.693,5.616],[10.069,-5.018],[0,0]],"o":[[0,0],[2.347,-5.39],[2.054,-6.814],[-8.016,3.995],[0,0]],"v":[[-15.194,-15.372],[0.254,-21.125],[9.294,-29.631],[0.033,-44.247],[-14.194,-47.747]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":8,"s":[{"i":[[0,0],[-2.844,6.53],[-1.693,5.616],[10.069,-5.018],[0,0]],"o":[[0,0],[2.347,-5.39],[2.054,-6.814],[-8.016,3.995],[0,0]],"v":[[-15.194,-15.372],[0.254,-21.125],[9.294,-29.631],[0.033,-44.247],[-14.194,-47.747]]}],"e":[{"i":[[0,0],[-3.065,11.673],[-4.193,2.116],[7.045,-7.388],[0,0]],"o":[[0,0],[2.597,-9.89],[11.293,-5.7],[-6.181,6.482],[0,0]],"v":[[-10.444,-15.872],[10.754,-18.875],[22.044,-30.381],[8.033,-46.747],[-10.444,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":10,"s":[{"i":[[0,0],[-3.065,11.673],[-4.193,2.116],[7.045,-7.388],[0,0]],"o":[[0,0],[2.597,-9.89],[11.293,-5.7],[-6.181,6.482],[0,0]],"v":[[-10.444,-15.872],[10.754,-18.875],[22.044,-30.381],[8.033,-46.747],[-10.444,-48.247]]}],"e":[{"i":[[0,0],[-3.065,11.673],[1.307,10.616],[6.319,-8.018],[0,0]],"o":[[0,0],[2.597,-9.89],[-1.546,-12.555],[-7.387,9.373],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[29.544,-32.381],[13.533,-48.247],[-7.194,-48.247]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":12,"s":[{"i":[[0,0],[-3.065,11.673],[1.307,10.616],[6.319,-8.018],[0,0]],"o":[[0,0],[2.597,-9.89],[-1.546,-12.555],[-7.387,9.373],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[29.544,-32.381],[13.533,-48.247],[-7.194,-48.247]]}],"e":[{"i":[[0,0],[-7.132,9.736],[0,12.221],[10.692,-5.3],[0,0]],"o":[[0,0],[5.418,-7.395],[0,-12.65],[-10.693,5.3],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[36.044,-32.381],[13.533,-48.247],[-7.194,-48.247]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":14,"s":[{"i":[[0,0],[-7.132,9.736],[0,12.221],[10.692,-5.3],[0,0]],"o":[[0,0],[5.418,-7.395],[0,-12.65],[-10.693,5.3],[0,0]],"v":[[-7.194,-15.872],[16.254,-18.875],[36.044,-32.381],[13.533,-48.247],[-7.194,-48.247]]}],"e":[{"i":[[0,0],[-9.374,7.601],[0.557,12.616],[18.319,-6.518],[0,0]],"o":[[0,0],[10.347,-8.39],[-0.657,-14.87],[-11.244,4.001],[0,0]],"v":[[-3.319,-16.372],[21.004,-15.375],[46.795,-31.881],[18.033,-47.247],[-3.319,-48.265]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[0,0],[-9.374,7.601],[0.557,12.616],[18.319,-6.518],[0,0]],"o":[[0,0],[10.347,-8.39],[-0.657,-14.87],[-11.244,4.001],[0,0]],"v":[[-3.319,-16.372],[21.004,-15.375],[46.795,-31.881],[18.033,-47.247],[-3.319,-48.265]]}],"e":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-11.069,-16.371],[15.255,-15.375],[46.795,-34.381],[12.283,-47.247],[-11.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":24,"s":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-11.069,-16.371],[15.255,-15.375],[46.795,-34.381],[12.283,-47.247],[-11.069,-48.264]]}],"e":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-12.069,-16.371],[9.755,-14.875],[34.795,-33.881],[6.783,-46.747],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":27,"s":[{"i":[[0,0],[-11.376,-4.031],[0.557,12.616],[17.569,5.482],[0,0]],"o":[[0,0],[11.597,4.11],[-0.657,-14.87],[-11.393,-3.555],[0,0]],"v":[[-12.069,-16.371],[9.755,-14.875],[34.795,-33.881],[6.783,-46.747],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-12.069,-16.371],[6.755,-16.375],[31.795,-35.381],[4.783,-47.247],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":30,"s":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-12.069,-16.371],[6.755,-16.375],[31.795,-35.381],[4.783,-47.247],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-13.569,-20.371],[6.755,-16.375],[29.795,-39.881],[4.783,-47.247],[-12.069,-48.264]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[0,0],[-11.738,2.805],[0.557,12.616],[15.069,-0.518],[0,0]],"o":[[0,0],[12.097,-2.89],[-0.657,-14.87],[-11.927,0.41],[0,0]],"v":[[-13.569,-20.371],[6.755,-16.375],[29.795,-39.881],[4.783,-47.247],[-12.069,-48.264]]}],"e":[{"i":[[0,0],[-12.068,-0.119],[0.557,12.616],[10.069,0.482],[0,0]],"o":[[0,0],[11.097,0.11],[-0.657,-14.87],[-5.029,-0.241],[0,0]],"v":[[-9.819,-15.121],[11.755,-14.875],[33.795,-31.381],[9.283,-47.747],[-8.569,-47.764]]}]},{"t":37}]},"nm":"Path 2"},{"ind":2,"ty":"sh","closed":true,"ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":2,"s":[{"i":[[-1.81,1.749],[-0.86,-0.217],[-1.22,-9.917],[-2.482,-13.756],[0,0],[1.583,-5.417],[7.316,-11.263],[0.492,0.237]],"o":[[0.242,0.033],[7.39,-1.467],[0.667,5.423],[0,0],[3.268,16.065],[-2.041,6.984],[0.316,-0.513],[-0.698,-2.846]],"v":[[-43.64,-75.798],[-43.038,-75.798],[-32.816,-52.188],[-36.417,-6.759],[-36.417,-6.33],[-28.981,34.402],[-43.715,75.248],[-43.64,75.248]]}],"e":[{"i":[[-1.81,1.749],[-2.36,0.033],[-3.6,-9.32],[-2.482,-13.756],[0,0],[2.423,-6.614],[8.066,-0.763],[0.492,0.237]],"o":[[0.242,0.033],[7.779,-0.109],[14.167,36.673],[0,0],[3.268,16.065],[-6.167,16.833],[-1.943,0.184],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-36.288,-76.048],[-16.816,-54.188],[-14.667,-0.009],[-14.667,0.42],[-15.732,34.902],[-40.715,74.998],[-43.64,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":4,"s":[{"i":[[-1.81,1.749],[-2.36,0.033],[-3.6,-9.32],[-2.482,-13.756],[0,0],[2.423,-6.614],[8.066,-0.763],[0.492,0.237]],"o":[[0.242,0.033],[7.779,-0.109],[14.167,36.673],[0,0],[3.268,16.065],[-6.167,16.833],[-1.943,0.184],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-36.288,-76.048],[-16.816,-54.188],[-14.667,-0.009],[-14.667,0.42],[-15.732,34.902],[-40.715,74.998],[-43.64,75.248]]}],"e":[{"i":[[-2.26,1.108],[-12.797,2.457],[-3.583,-9.327],[-2.482,-13.756],[0,0],[-3.167,-7.667],[20.066,-1.013],[0.492,0.237]],"o":[[2.992,-1.467],[7.64,-1.467],[9.719,25.301],[0,0],[3.268,16.065],[6.551,15.86],[-19.927,1.006],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-14.288,-76.298],[11.934,-60.688],[14.833,-1.259],[14.833,-0.83],[21.018,23.152],[-2.464,75.248],[-43.64,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":6,"s":[{"i":[[-2.26,1.108],[-12.797,2.457],[-3.583,-9.327],[-2.482,-13.756],[0,0],[-3.167,-7.667],[20.066,-1.013],[0.492,0.237]],"o":[[2.992,-1.467],[7.64,-1.467],[9.719,25.301],[0,0],[3.268,16.065],[6.551,15.86],[-19.927,1.006],[-0.698,-2.846]],"v":[[-43.64,-76.548],[-14.288,-76.298],[11.934,-60.688],[14.833,-1.259],[14.833,-0.83],[21.018,23.152],[-2.464,75.248],[-43.64,75.248]]}],"e":[{"i":[[-2.284,1.057],[-12.61,3.283],[-3.333,-14.827],[-2.482,-13.756],[0,0],[-3.167,-7.667],[27.816,2.987],[2.186,1.951]],"o":[[7.492,-3.467],[18.213,-4.742],[5.944,26.444],[0,0],[3.268,16.065],[6.551,15.86],[-19.838,-2.13],[-2.187,-1.951]],"v":[[-43.64,-76.548],[-14.288,-76.298],[21.934,-58.438],[21.833,-1.259],[21.833,-0.83],[34.268,28.402],[-1.964,76.998],[-43.64,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":8,"s":[{"i":[[-2.284,1.057],[-12.61,3.283],[-3.333,-14.827],[-2.482,-13.756],[0,0],[-3.167,-7.667],[27.816,2.987],[2.186,1.951]],"o":[[7.492,-3.467],[18.213,-4.742],[5.944,26.444],[0,0],[3.268,16.065],[6.551,15.86],[-19.838,-2.13],[-2.187,-1.951]],"v":[[-43.64,-76.548],[-14.288,-76.298],[21.934,-58.438],[21.833,-1.259],[21.833,-0.83],[34.268,28.402],[-1.964,76.998],[-43.64,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[-3.333,-14.827],[2.518,-18.006],[0,0],[-3.831,-19.346],[26.503,4.393],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[5.944,26.444],[0,0],[-1.149,21.088],[3.333,16.833],[-19.684,-3.263],[-2.187,-1.951]],"v":[[-41.39,-76.548],[-2.288,-76.798],[34.184,-57.438],[35.833,-4.259],[35.833,-3.83],[44.768,25.902],[20.036,75.498],[-41.39,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":10,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[-3.333,-14.827],[2.518,-18.006],[0,0],[-3.831,-19.346],[26.503,4.393],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[5.944,26.444],[0,0],[-1.149,21.088],[3.333,16.833],[-19.684,-3.263],[-2.187,-1.951]],"v":[[-41.39,-76.548],[-2.288,-76.798],[34.184,-57.438],[35.833,-4.259],[35.833,-3.83],[44.768,25.902],[20.036,75.498],[-41.39,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[-4.333,-30.827],[0.518,-15.696],[0,0],[-0.27,-19.72],[25.863,7.267],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[3.772,26.84],[0,0],[-1.149,21.088],[0.333,24.325],[-25.863,-7.268],[-2.187,-1.951]],"v":[[-42.14,-76.548],[13.961,-76.548],[40.185,-50.938],[35.833,-5.009],[35.833,-4.58],[48.518,32.902],[19.535,75.248],[-42.14,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":12,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[-4.333,-30.827],[0.518,-15.696],[0,0],[-0.27,-19.72],[25.863,7.267],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[3.772,26.84],[0,0],[-1.149,21.088],[0.333,24.325],[-25.863,-7.268],[-2.187,-1.951]],"v":[[-42.14,-76.548],[13.961,-76.548],[40.185,-50.938],[35.833,-5.009],[35.833,-4.58],[48.518,32.902],[19.535,75.248],[-42.14,75.248]]}],"e":[{"i":[[-2.211,1.203],[-18.212,4.75],[0.182,-35.577],[0.518,-15.696],[0,0],[-0.27,-19.72],[20.316,5.987],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[-0.138,27.103],[0,0],[-1.149,21.088],[0.333,24.325],[-25.769,-7.594],[-2.187,-1.951]],"v":[[-41.89,-74.548],[13.961,-76.548],[50.185,-46.938],[43.333,-4.509],[43.333,-4.08],[52.518,32.402],[19.535,75.248],[-42.89,75.248]]}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":14,"s":[{"i":[[-2.211,1.203],[-18.212,4.75],[0.182,-35.577],[0.518,-15.696],[0,0],[-0.27,-19.72],[20.316,5.987],[2.186,1.951]],"o":[[10.813,-5.882],[18.211,-4.749],[-0.138,27.103],[0,0],[-1.149,21.088],[0.333,24.325],[-25.769,-7.594],[-2.187,-1.951]],"v":[[-41.89,-74.548],[13.961,-76.548],[50.185,-46.938],[43.333,-4.509],[43.333,-4.08],[52.518,32.402],[19.535,75.248],[-42.89,75.248]]}],"e":[{"i":[[10.992,53.783],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.557,2.877]],"o":[[-0.714,-3.493],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-7.258,-37.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.935,-35.188],[52.583,-4.759],[52.583,-4.33],[79.269,35.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[10.992,53.783],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.557,2.877]],"o":[[-0.714,-3.493],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-7.258,-37.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.935,-35.188],[52.583,-4.759],[52.583,-4.33],[79.269,35.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[5.992,48.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.433,2.898]],"o":[[-0.439,-3.538],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.758,-38.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.685,-35.188],[52.583,-4.759],[52.583,-4.33],[79.019,35.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":24,"s":[{"i":[[5.992,48.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.433,2.898]],"o":[[-0.439,-3.538],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.758,-38.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[70.685,-35.188],[52.583,-4.759],[52.583,-4.33],[79.019,35.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[-4.008,47.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.284,2.916]],"o":[[0.301,-3.552],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[4.242,-43.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[66.685,-34.188],[47.083,-4.259],[47.083,-3.83],[75.019,36.902],[27.035,75.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":27,"s":[{"i":[[-4.008,47.283],[-23.325,-3.498],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.284,2.916]],"o":[[0.301,-3.552],[21.89,3.283],[-1.583,25.173],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[4.242,-43.513]],"v":[[-43.14,-75.548],[32.462,-75.548],[66.685,-34.188],[47.083,-4.259],[47.083,-3.83],[75.019,36.902],[27.035,75.748],[-42.89,75.248]]}],"e":[{"i":[[7.992,47.783],[-23.325,-3.498],[0.795,-21.872],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.34,2.91]],"o":[[-0.588,-3.516],[21.89,3.283],[-0.833,22.923],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.258,-45.013]],"v":[[-43.14,-75.548],[25.962,-75.048],[63.685,-37.688],[44.083,-5.259],[44.083,-4.83],[71.019,37.402],[24.035,75.248],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":30,"s":[{"i":[[7.992,47.783],[-23.325,-3.498],[0.795,-21.872],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[0.34,2.91]],"o":[[-0.588,-3.516],[21.89,3.283],[-0.833,22.923],[0,0],[-0.232,4.065],[-1.417,25.333],[-20.684,1.487],[-5.258,-45.013]],"v":[[-43.14,-75.548],[25.962,-75.048],[63.685,-37.688],[44.083,-5.259],[44.083,-4.83],[71.019,37.402],[24.035,75.248],[-42.89,75.248]]}],"e":[{"i":[[11.992,50.283],[-23.514,1.844],[0.795,-21.872],[-1.107,-6.756],[0,0],[2.104,-37.626],[24.436,-1.757],[0.608,2.866]],"o":[[-0.827,-3.468],[21.89,-1.717],[-0.833,22.923],[0,0],[-0.232,9.565],[-1.417,25.333],[-20.684,1.487],[-9.758,-46.013]],"v":[[-43.14,-75.548],[22.962,-78.548],[61.685,-42.188],[44.333,-6.759],[44.333,-6.33],[72.519,33.902],[24.035,72.748],[-42.89,75.248]]}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":32,"s":[{"i":[[11.992,50.283],[-23.514,1.844],[0.795,-21.872],[-1.107,-6.756],[0,0],[2.104,-37.626],[24.436,-1.757],[0.608,2.866]],"o":[[-0.827,-3.468],[21.89,-1.717],[-0.833,22.923],[0,0],[-0.232,9.565],[-1.417,25.333],[-20.684,1.487],[-9.758,-46.013]],"v":[[-43.14,-75.548],[22.962,-78.548],[61.685,-42.188],[44.333,-6.759],[44.333,-6.33],[72.519,33.902],[24.035,72.748],[-42.89,75.248]]}],"e":[{"i":[[-0.008,1.283],[-23.583,-0.378],[1.374,-21.843],[0.768,-0.506],[0,0],[2.104,-37.626],[24.436,-1.757],[-0.008,0.487]],"o":[[0.242,-0.467],[17.64,0.283],[-1.583,25.173],[0,0],[-0.232,-0.935],[-1.417,25.333],[-20.684,1.487],[0.014,-2.145]],"v":[[-43.14,-75.548],[32.462,-75.548],[68.685,-34.688],[47.083,-2.759],[47.083,-2.33],[76.519,37.402],[27.035,75.748],[-42.89,75.248]]}]},{"t":37}]},"nm":"Path 3"},{"ty":"fl","fillEnabled":true,"c":{"k":[255,219,67,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[52.977,108.888]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 14"}],"bounds":{"l":7,"t":29,"b":187,"r":133},"ip":2,"op":37,"st":2}]}],"v":"4.0.0","layers":[{"ddd":0,"ind":0,"ty":0,"nm":"N","refId":"comp_1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[1513,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":1,"ty":0,"nm":"I","refId":"comp_2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[1393,137.5,0]},"a":{"k":[100,137.5,0]},"s":{"k":[100,100,100]}},"w":200,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":2,"ty":0,"nm":"V","refId":"comp_3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[1286,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":3,"ty":0,"nm":"O2","refId":"comp_4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[1123,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":4,"ty":0,"nm":"M","refId":"comp_7","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[932,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":5,"ty":0,"nm":"Y","refId":"comp_8","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[765,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":6,"ty":0,"nm":"D","refId":"comp_10","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[623,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":7,"ty":0,"nm":"0","refId":"comp_16","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[456,163.5,0]},"a":{"k":[125,163.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":8,"ty":0,"nm":"00","refId":"comp_18","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[290,137.5,0]},"a":{"k":[125,137.5,0]},"s":{"k":[100,100,100]}},"w":250,"h":275,"ip":0,"op":6300,"st":0},{"ddd":0,"ind":11,"ty":4,"nm":"bg Outlines","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[910,137.5,0]},"a":{"k":[910.25,137.75,0]},"s":{"k":[100,100,100]}},"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-910,137.5],[910,137.5],[910,-137.5],[-910,-137.5]]}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[88,214,112,255]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[910.25,137.75]},"a":{"k":[0,0]},"s":{"k":[100,100]},"r":{"k":0},"o":{"k":100}}],"nm":"Group 1"}],"bounds":{"l":0,"t":0,"b":276,"r":1821},"ip":0,"op":6300,"st":0}],"ip":0,"op":103,"fr":30,"w":1820,"h":275} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/text_with_path.json b/example/shared/src/commonMain/composeResources/files/text_with_path.json new file mode 100644 index 00000000..de44dabe --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/text_with_path.json @@ -0,0 +1 @@ +{"v":"5.7.3","fr":60,"ip":0,"op":193,"w":720,"h":720,"nm":"JSON","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":". 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[13.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[55]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[115.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[188]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[244]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[172]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[82.033]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-3.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-64]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-56.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-14.833]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.388},"o":{"x":0.333,"y":0},"t":0,"s":[246.841,452.16,0],"to":[-51.721,-4.23,0],"ti":[0,42.685,0]},{"i":{"x":0.667,"y":0.627},"o":{"x":0.333,"y":0.288},"t":37.977,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.65},"o":{"x":0.333,"y":0.312},"t":56.52,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.663},"o":{"x":0.333,"y":0.326},"t":73.434,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.673},"o":{"x":0.333,"y":0.336},"t":89.541,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.684},"o":{"x":0.333,"y":0.347},"t":104.576,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.706},"o":{"x":0.333,"y":0.367},"t":120.281,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.867},"o":{"x":0.333,"y":0.502},"t":138.275,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.655},"t":171.043,"s":[255.25,452.5,0],"to":[-2.86,0,0],"ti":[2.745,0.225,0]},{"t":180,"s":[246.841,452.16,0]}],"ix":2},"a":{"a":0,"k":[-93.159,-100.84,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.82,-0.768],[0.094,-1.238],[-0.696,-0.861],[-1.192,-0.091],[-0.842,0.766],[-0.094,1.238],[0.694,0.883],[1.147,0.087],[0,0]],"o":[[-0.82,0.768],[-0.098,1.284],[0.696,0.86],[1.193,0.091],[0.843,-0.766],[0.094,-1.238],[-0.694,-0.883],[0,0],[-1.238,-0.094]],"v":[[-96.597,-94.599],[-97.968,-91.589],[-97.071,-88.372],[-94.239,-86.945],[-91.186,-87.959],[-89.781,-90.966],[-90.68,-94.148],[-93.441,-95.604],[-93.51,-95.609]],"c":true},"ix":2},"nm":".","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":".","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"б 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[15.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[114.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[188]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[222]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[142]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[49.733]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-42.033]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-86.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-53.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-14.083]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.381},"o":{"x":0.333,"y":0},"t":0,"s":[222.121,446.76,0],"to":[-36.723,-13.577,0],"ti":[0,35.369,0]},{"i":{"x":0.667,"y":0.619},"o":{"x":0.333,"y":0.279},"t":33.908,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.647},"o":{"x":0.333,"y":0.309},"t":53.455,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.661},"o":{"x":0.333,"y":0.324},"t":70.727,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.671},"o":{"x":0.333,"y":0.335},"t":86.941,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.682},"o":{"x":0.333,"y":0.345},"t":101.92,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.7},"o":{"x":0.333,"y":0.362},"t":117.387,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.788},"o":{"x":0.333,"y":0.437},"t":134.73,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.643},"t":161.721,"s":[255.25,452.5,0],"to":[-12.098,0,0],"ti":[9.949,3.678,0]},{"t":180,"s":[222.121,446.76,0]}],"ix":2},"a":{"a":0,"k":[-117.879,-106.24,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.144,0.03],[0.635,0.208],[0,0],[0.651,0.153],[1.557,-0.712],[0.525,-0.762],[0,0],[-1.276,-1.755],[-1.201,-0.873],[-1.513,-0.503],[-0.242,-0.089],[-0.102,0.475],[-0.293,0.954],[-0.683,0.935]],"o":[[-0.663,-0.088],[0,0],[-1.072,-0.153],[-2.986,-0.776],[-0.757,0.534],[0,0],[-0.179,0.636],[0.915,1.168],[1.276,0.954],[0.715,0.229],[0.23,-0.949],[0.549,-2.428],[0.392,-1.089],[-0.097,-0.11]],"v":[[49.193,79.52],[47.241,79.075],[47.151,79.126],[44.523,78.592],[37.709,78.515],[35.77,80.473],[35.77,80.562],[37.339,84.135],[40.529,87.212],[44.74,89.411],[46.169,89.894],[46.666,87.758],[47.942,82.787],[49.563,79.736]],"c":true},"ix":2},"nm":"Path 14","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.799,-0.623],[0,0],[0,0],[-0.191,0.839],[0,0.203],[0,0],[0.791,0.369],[0.689,0.407],[0.768,0.727],[0.407,0.785],[-0.008,1.275],[-0.076,0.282],[-0.101,0.173],[-0.695,0.536],[-2.293,-0.369],[-1.675,-0.521],[0,0],[0,0],[0,0],[0,0.102],[0,0],[-0.022,0],[-0.019,-0.011],[-0.06,-0.131],[-0.236,-0.074],[0,0],[0,-0.05],[0.02,-0.046],[0.087,-0.07],[0.044,0],[0.04,0.019],[0.073,-0.032],[0.041,-0.068],[0.408,-0.928],[0.371,-2.277],[0.485,-1.869],[0.592,-1.482],[0.235,-0.294],[0.246,-0.087],[0.408,0.151],[1.274,0.563],[0,0],[0.317,0.034],[0.457,-0.066],[0.388,0.07],[0.035,0.033],[0.156,0.072],[0,0.394],[-0.842,-0.242],[0,0],[0,0],[0,0]],"o":[[1.225,0.42],[0,0],[0.255,-0.801],[0.153,-0.648],[0,0],[-1.238,-0.496],[-1.136,-0.534],[-0.926,-0.514],[-0.56,-0.686],[-0.691,-1.073],[0.008,-0.292],[0.06,-0.191],[0.416,-0.771],[1.942,-1.269],[1.724,0.325],[0,0],[0,0],[0,0],[0.204,0],[0,-0.102],[0.019,-0.011],[0.022,0],[0.116,0.086],[0.125,0.213],[0.191,0.102],[0.02,0.046],[0,0.05],[-0.039,0.104],[-0.04,0.019],[-0.044,0],[-0.078,-0.017],[-0.073,0.032],[-0.089,0.14],[-0.834,2.152],[-0.485,2.543],[-0.351,1.556],[-0.146,0.347],[-0.152,0.211],[-0.435,0.017],[-1.35,-0.343],[0,0],[-0.302,-0.101],[-0.461,0.019],[-0.388,0.07],[-0.048,-0.008],[-0.094,-0.144],[-0.179,-0.102],[0.166,-0.75],[0,0],[0,0],[0,0],[1.034,0.292]],"v":[[41.945,97.828],[43.783,98.425],[44.727,95.387],[45.39,92.933],[45.671,91.661],[44.178,91.166],[41.141,89.894],[38.411,88.47],[35.859,86.601],[34.404,84.389],[33.358,80.791],[33.486,79.926],[33.728,79.38],[35.412,77.396],[41.996,75.998],[47.1,77.269],[48.976,77.803],[50.162,78.134],[50.89,78.274],[51.094,78.274],[51.094,78.172],[51.158,78.155],[51.222,78.172],[51.489,78.503],[52.051,78.948],[52.344,79.176],[52.375,79.323],[52.344,79.469],[52.153,79.736],[52.025,79.765],[51.898,79.736],[51.665,79.759],[51.489,79.914],[50.737,81.516],[48.925,88.178],[47.483,94.802],[46.067,99.366],[45.492,100.332],[44.88,100.79],[43.604,100.587],[39.661,99.226],[35.183,97.345],[34.251,97.141],[32.873,97.268],[31.699,97.268],[31.572,97.205],[31.189,96.874],[31.01,96.137],[32.452,95.387],[32.567,95.387],[33.664,95.259],[37.684,96.442]],"c":true},"ix":2},"nm":"Path 15","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-122.557,-95.039],"ix":2},"a":{"a":0,"k":[41.693,88.336],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":4.6,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"ю 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[15.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[55]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[113.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[188]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[191.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[101]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[8.967]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-71.867]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-104.7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-52.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-16.767]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.373},"o":{"x":0.333,"y":0},"t":0,"s":[197.244,432.535,0],"to":[-21.282,-17.407,0],"ti":[0,26.395,0]},{"i":{"x":0.667,"y":0.606},"o":{"x":0.333,"y":0.264},"t":28.781,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.643},"o":{"x":0.333,"y":0.305},"t":49.852,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.659},"o":{"x":0.333,"y":0.322},"t":67.609,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.669},"o":{"x":0.333,"y":0.333},"t":83.984,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.679},"o":{"x":0.333,"y":0.342},"t":98.932,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.695},"o":{"x":0.333,"y":0.357},"t":114.174,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.753},"o":{"x":0.333,"y":0.407},"t":130.918,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.632},"t":154.775,"s":[255.25,452.5,0],"to":[-23.427,0,0],"ti":[14.961,12.237,0]},{"t":180,"s":[197.244,432.535,0]}],"ix":2},"a":{"a":0,"k":[-142.756,-120.465,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.394,-0.68],[0.944,-1.716],[0,0],[0.401,0.319],[0.536,0.519],[0.293,0.267],[-0.332,0.529],[-0.217,0.381],[-0.17,0.946],[0.442,1.221],[0.821,1.293],[0.99,0.711],[1.396,0.299],[1.134,-0.029],[1.709,-1.649],[0.541,-0.851],[0,0],[0.344,-0.849],[-0.08,-2.072],[-0.23,-0.766],[-0.269,-0.642],[-1.273,-0.724],[0,0],[-0.287,-0.135],[-0.612,-0.089],[-0.609,-0.061],[-0.377,0.05],[-0.563,0.139],[-0.242,0.089],[-0.727,0.267],[-1.147,0.952],[0,0],[-0.729,-0.472],[0,0],[-0.32,-0.165],[0.319,-0.585],[0.855,-1.64],[0.153,-0.191],[-0.357,-0.394],[-0.232,-0.06],[-0.218,0.099],[-0.262,0.643],[-2.08,3.331],[-0.102,0.153],[-0.434,0.928],[-0.599,0.979],[-0.125,0.247],[-0.019,0.276],[0.15,0.179],[0.228,0.052],[0.038,0],[0.625,-0.814],[0,0],[0.326,-0.656]],"o":[[-0.268,0.458],[0,0],[-0.492,-0.143],[-0.635,-0.394],[-0.281,-0.292],[0.431,-0.452],[0.191,-0.305],[0.504,-0.819],[0.063,-1.297],[-0.441,-1.466],[-0.617,-1.049],[-1.232,-0.72],[-1.101,-0.274],[-2.379,-0.02],[-0.698,0.73],[0,0],[-0.504,0.766],[-0.737,1.939],[0.058,0.797],[0.156,0.678],[0.845,1.193],[0,0],[0.257,0.186],[0.089,0],[0.598,0.126],[0.377,0.05],[0.576,-0.073],[1.072,-0.242],[0.242,-0.089],[1.389,-0.547],[0,0],[0.656,0.569],[0,0],[0.3,0.199],[-0.306,0.585],[-0.319,0.585],[-0.855,1.64],[-0.153,0.191],[0.142,0.193],[0.232,0.06],[0.511,-0.471],[0.447,-0.877],[2.08,-3.331],[0.102,-0.153],[0.454,-1.053],[0.211,-0.179],[0.125,-0.247],[-0.011,-0.233],[-0.15,-0.179],[-0.485,-0.14],[-0.038,0],[0,0],[-0.438,0.588],[-0.32,0.718]],"v":[[22.257,78.77],[20.445,82.037],[20.433,82.088],[19.08,81.389],[17.319,80.015],[16.452,79.176],[17.6,77.702],[18.225,76.659],[19.246,73.989],[18.672,70.175],[16.771,66.017],[14.334,63.348],[10.365,61.809],[6.997,61.44],[0.617,63.983],[-1.246,66.361],[-1.412,66.628],[-2.688,69.056],[-3.683,75.133],[-3.249,77.485],[-2.611,79.469],[0.604,82.38],[1.485,82.94],[2.301,83.423],[3.348,83.55],[5.16,83.83],[6.295,83.83],[8.005,83.512],[10.072,83.016],[11.59,82.457],[15.418,80.193],[16.184,80.944],[18.264,82.507],[18.723,82.813],[19.654,83.359],[18.71,85.088],[16.949,88.47],[15.444,91.204],[15.75,92.094],[16.329,92.484],[17.026,92.424],[18.2,90.733],[21.849,84.529],[25.205,79.011],[26.009,77.371],[27.591,74.32],[28.1,73.675],[28.318,72.883],[28.071,72.248],[27.489,71.891],[26.557,72.006],[25.549,73.277],[24.477,74.803],[23.329,76.672]],"c":true},"ix":2},"nm":"Path 12","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.027,0.04],[0.403,0.394],[0,0],[0.293,0.483],[0.202,0.446],[0.111,0.525],[0.128,1.144],[-0.803,1.504],[-1.458,0.77],[-1.608,-0.231],[-0.932,-0.218],[-0.603,-0.371],[-0.071,-0.075],[-0.683,-1.586],[-0.077,-0.47],[0.784,-1.334],[0.115,-0.153],[1.139,-0.892],[1.883,-0.356],[0.902,0.047],[0.516,0.273]],"o":[[-0.447,-0.343],[0,0],[-0.268,-0.331],[-0.282,-0.4],[-0.17,-0.509],[-0.217,-1.462],[0.174,-1.695],[0.827,-1.423],[1.497,-0.63],[0.954,0.078],[0.696,0.134],[0.09,0.051],[1.322,1.115],[0.306,1.386],[-0.053,1.545],[-0.102,0.153],[-0.904,1.127],[-1.645,0.981],[-0.886,0.174],[-0.584,-0.019],[-0.04,-0.027]],"v":[[2.582,81.541],[1.306,80.435],[1.217,80.486],[0.324,79.291],[-0.404,78.019],[-0.825,76.468],[-1.335,72.54],[0.145,67.696],[3.641,64.339],[8.388,63.729],[11.22,64.174],[13.185,64.937],[13.428,65.127],[16.477,69.234],[17.064,72.006],[15.788,76.392],[15.456,76.837],[12.381,79.876],[7.048,81.897],[4.356,82.088],[2.684,81.643]],"c":true},"ix":2},"nm":"Path 13","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-150.626,-111.085],"ix":2},"a":{"a":0,"k":[12.312,76.977],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":5,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"р 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[15.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[54.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[114.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[183]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[162.125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[71.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-21.125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-110.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-112.175]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-53.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-14.225]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.366},"o":{"x":0.333,"y":0},"t":0,"s":[180.761,414.742,0],"to":[-10.826,-15.451,0],"ti":[0,18.511,0]},{"i":{"x":0.667,"y":0.59},"o":{"x":0.333,"y":0.245},"t":23.785,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.639},"o":{"x":0.333,"y":0.301},"t":46.68,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.657},"o":{"x":0.333,"y":0.319},"t":64.934,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.668},"o":{"x":0.333,"y":0.331},"t":81.477,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.677},"o":{"x":0.333,"y":0.341},"t":96.422,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.691},"o":{"x":0.333,"y":0.354},"t":111.512,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.735},"o":{"x":0.333,"y":0.392},"t":127.838,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.625},"t":149.98,"s":[255.25,452.5,0],"to":[-33.38,0,0],"ti":[15.462,22.069,0]},{"t":180,"s":[180.761,414.742,0]}],"ix":2},"a":{"a":0,"k":[-159.239,-138.258,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.087,0.119],[0.472,0.486],[0.408,0.61],[0,1.704],[-0.46,0.788],[0,0],[-2.105,-0.356],[-1.31,-0.707],[-1.119,-1.15],[-0.191,-0.178],[0,0],[0.74,-0.674],[0.551,-0.992]],"o":[[-0.377,-0.563],[-0.663,-0.877],[-1.965,-2.301],[0.173,-0.895],[0,0],[0.498,-0.42],[1.45,0.34],[1.418,0.754],[0.498,0.547],[0,0],[-1.901,1.5],[-0.811,0.795],[-0.144,-0.037]],"v":[[-17.195,64.021],[-18.471,62.445],[-20.092,60.22],[-23.052,54.104],[-22.095,51.562],[-22.018,51.485],[-18.114,51.396],[-13.954,52.973],[-10.126,55.846],[-9.093,56.94],[-10.828,58.3],[-14.784,61.568],[-16.838,64.263]],"c":true},"ix":2},"nm":"Path 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.013,-0.019],[-0.142,-0.001],[0,0],[-0.159,-0.203],[0,0],[-0.068,0.07],[-0.022,0.113],[0.018,0.039],[0.032,0.029],[0,0.08],[-0.049,0.064],[-0.663,0.75],[-1.888,1.298],[-1.748,1.449],[-1.099,1.156],[-0.17,0.333],[0.049,0.278],[0.06,0.07],[0.1,0.019],[0.127,0.056],[0.092,0.105],[0.204,-0.114],[1.078,-1.041],[0.689,-0.521],[0,0],[0,0],[0.85,0.686],[0.651,0.445],[0.987,0.371],[0.864,0.078],[1.169,-0.501],[0.228,-0.186],[0.111,-0.166],[0.169,-0.862],[-1.329,-1.903],[-1.163,-1.308],[0,0],[0,0],[-0.102,-0.114],[0,0],[0.025,-0.008],[0,-0.023]],"o":[[0.126,0.066],[0,0],[0.253,0.052],[0.166,0.165],[0.097,-0.012],[0.085,-0.077],[0,-0.043],[-0.018,-0.039],[-0.049,-0.064],[0,-0.08],[0.089,-0.14],[1.609,-1.629],[1.863,-1.31],[1.262,-0.977],[0.254,-0.275],[0.132,-0.25],[-0.024,-0.089],[-0.064,-0.079],[-0.136,-0.029],[-0.138,-0.018],[-0.064,-0.14],[-1.232,0.854],[-0.676,0.572],[0,0],[0,0],[-0.747,-0.796],[-0.97,-0.788],[-0.86,-0.608],[-0.833,-0.243],[-1.266,-0.126],[-0.256,0.144],[-0.152,0.129],[-0.544,0.692],[-0.363,2.29],[1.022,1.42],[0,0],[0,0],[0.191,0.242],[0.102,0.114],[-0.025,-0.008],[-0.013,0.019],[0,0.023]],"v":[[-17.604,66.462],[-17.195,66.564],[-17.208,66.615],[-16.57,67.009],[-16.238,67.174],[-15.983,67.047],[-15.817,66.755],[-15.844,66.63],[-15.919,66.526],[-15.994,66.304],[-15.919,66.081],[-14.784,64.733],[-9.527,60.334],[-4.117,56.215],[-0.57,53.011],[0.068,52.096],[0.196,51.282],[0.068,51.04],[-0.187,50.888],[-0.582,50.761],[-0.94,50.57],[-1.335,50.57],[-4.806,53.418],[-6.758,55.058],[-7.753,55.834],[-8.838,54.689],[-11.237,52.464],[-13.674,50.608],[-16.455,49.133],[-19.007,48.65],[-22.72,49.222],[-23.447,49.718],[-23.843,50.163],[-24.928,52.528],[-23.422,59.063],[-20.143,63.157],[-18.867,64.632],[-18.063,65.56],[-17.629,66.157],[-17.527,66.335],[-17.604,66.335],[-17.623,66.399]],"c":true},"ix":2},"nm":"Path 11","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-172.411,-133.356],"ix":2},"a":{"a":0,"k":[-12.411,57.894],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":8.4,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"о 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[16]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[54]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[113.1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[178]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[123.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[34.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-55.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-131]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-115.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-53.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-14.15]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.354},"o":{"x":0.333,"y":0},"t":0,"s":[167.722,387.472,0],"to":[-2.386,-8.231,0],"ti":[0,8.513,0]},{"i":{"x":0.667,"y":0.551},"o":{"x":0.333,"y":0.2},"t":15.836,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.633},"o":{"x":0.333,"y":0.294},"t":42.508,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.654},"o":{"x":0.333,"y":0.317},"t":61.521,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.666},"o":{"x":0.333,"y":0.329},"t":78.328,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.675},"o":{"x":0.333,"y":0.339},"t":93.303,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.687},"o":{"x":0.333,"y":0.35},"t":108.242,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.721},"o":{"x":0.333,"y":0.38},"t":124.137,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.617},"t":144.742,"s":[255.25,452.5,0],"to":[-46.002,0,0],"ti":[10.211,35.23,0]},{"t":180,"s":[167.722,387.472,0]}],"ix":2},"a":{"a":0,"k":[-172.278,-165.528,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.013,0.046],[0.139,0.557],[0.077,0.572],[-0.09,0.495],[-0.199,0.497],[-0.523,1.03],[-1.509,0.788],[-1.642,-0.134],[-1.211,-1.042],[-0.665,-0.688],[-0.319,-0.636],[-0.019,-0.106],[0.29,-1.697],[0.179,-0.432],[1.389,-0.691],[0.182,-0.052],[1.445,-0.131],[1.775,0.719],[0.733,0.516],[0.273,0.511]],"o":[[-0.209,-0.535],[-0.077,-0.445],[-0.013,-0.503],[0.133,-0.519],[0.625,-1.348],[1.103,-1.294],[1.47,-0.741],[1.572,0.299],[0.753,0.591],[0.524,0.482],[0.049,0.096],[0.499,1.648],[-0.498,1.373],[-0.908,1.255],[-0.174,0.075],[-1.378,0.452],[-1.914,-0.072],[-0.835,-0.329],[-0.481,-0.324],[-0.013,-0.046]],"v":[[-38.67,34.334],[-39.193,32.694],[-39.41,31.169],[-39.295,29.668],[-38.797,28.143],[-37.075,24.57],[-33.119,21.417],[-28.36,20.489],[-24.111,22.536],[-21.98,24.456],[-20.704,26.147],[-20.602,26.452],[-20.283,31.537],[-21.304,34.182],[-24.8,37.144],[-25.336,37.335],[-29.585,38.212],[-35.161,37.017],[-37.521,35.746],[-38.67,34.474]],"c":true},"ix":2},"nm":"Path 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.164,-0.267],[0,0],[-0.269,-0.163],[-0.651,-0.572],[-0.339,-0.178],[-0.778,-0.292],[0,0],[0,0],[-1.894,0.39],[-0.616,0.297],[-0.396,0.203],[-0.659,0.694],[-0.283,1.244],[-0.012,1.529],[0.467,1.126],[1.009,1.001],[0.968,0.596],[2.33,-0.446],[0.918,-0.42],[0,0],[0.771,-0.498],[1.029,-1.811],[0.228,-0.757],[0.101,-0.689],[-0.663,-1.299]],"o":[[0.116,0.291],[0,0],[0.249,0.192],[0.255,0.292],[0.288,0.253],[0.332,0.14],[0,0],[0,0],[1.894,0.39],[0.672,-0.133],[0.345,-0.14],[0.86,-0.424],[0.745,-1.038],[0.436,-1.466],[0.081,-1.216],[-0.63,-1.272],[-0.776,-0.83],[-2.006,-1.263],[-0.983,0.231],[0,0],[-0.85,0.348],[-1.71,1.194],[-0.375,0.697],[-0.264,0.645],[0.052,1.456],[0,0]],"v":[[-40.354,34.906],[-39.933,35.746],[-39.933,35.746],[-39.154,36.28],[-37.789,37.551],[-36.845,38.199],[-35.237,38.86],[-33.234,39.56],[-31.562,39.89],[-25.821,39.89],[-23.881,39.242],[-22.771,38.708],[-20.474,37.017],[-18.918,33.559],[-18.242,29.045],[-18.828,25.485],[-21.304,22.053],[-23.932,19.904],[-30.682,18.633],[-33.54,19.612],[-33.821,19.739],[-36.258,21.01],[-40.418,25.574],[-41.324,27.761],[-41.872,29.77],[-40.788,33.953]],"c":true},"ix":2},"nm":"Path 9","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-183.548,-162.801],"ix":2},"a":{"a":0,"k":[-30.048,29.324],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"н 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[13.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[51.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[113.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[145]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[71.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-18.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-109.208]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-168.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-112.525]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-55.083]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-14.542]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.385},"o":{"x":0.333,"y":0},"t":0,"s":[165.775,344.856,0],"to":[7.461,-38.841,0],"ti":[-44.66,1.412,0]},{"i":{"x":0.667,"y":0.622},"o":{"x":0.333,"y":0.281},"t":36.039,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.65},"o":{"x":0.333,"y":0.312},"t":56.518,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.663},"o":{"x":0.333,"y":0.326},"t":73.809,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.672},"o":{"x":0.333,"y":0.336},"t":88.893,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.683},"o":{"x":0.333,"y":0.346},"t":103.689,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.707},"o":{"x":0.333,"y":0.368},"t":119.105,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.824},"o":{"x":0.333,"y":0.468},"t":138.186,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.65},"t":167.002,"s":[164.102,362.201,0],"to":[0,-5.789,0],"ti":[-1.103,5.741,0]},{"t":180,"s":[165.775,344.856,0]}],"ix":2},"a":{"a":0,"k":[-174.225,-208.144,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.013,-0.509],[-0.191,-0.089],[0,0],[-0.761,0.053],[-2.11,-0.153],[-1.659,0],[0,0],[-0.59,0.104],[-0.496,0.009],[-0.616,0.17],[-0.089,0.14],[0.234,0.538],[0,0],[0,0],[2.463,0],[0,0],[0,0.191],[-0.192,0.398],[-0.005,0.542],[0,1.869],[0,0.763],[-0.054,0.053],[-0.118,-0.019],[-3.828,0.242],[-1.014,0.211],[-0.297,0.369],[0.017,0.201],[0.048,0.148],[0.291,0.215],[0.369,-0.06],[2.003,-0.165],[0.612,0],[0.783,0.051],[0,0],[0,0.102],[0.294,0.109],[0,0],[0.15,-0.046],[0.071,-0.103],[-0.002,-0.125],[0.012,-0.148],[0.166,0],[0.424,0.053],[1.353,0],[1.16,-0.136],[0.077,-0.407],[-0.029,-0.125],[-0.078,-0.102],[-0.15,-0.065],[-0.161,0.027],[-1.448,-0.268],[-1.21,-0.376],[-0.01,-0.387],[-0.166,-1.271],[0.113,-2.172],[0,0],[0,0],[1.734,-0.172]],"o":[[0.013,0.509],[0,0],[0.746,0.154],[4.619,0.144],[0.6,0.089],[0,0],[0.599,0.003],[0.478,-0.135],[0.639,-0.024],[0.689,-0.153],[0.16,-0.564],[0,0],[0,0],[-1.467,0.127],[0,0],[0.089,-0.369],[0.018,-0.441],[0.106,-0.532],[0.064,-0.547],[0,-1.564],[0.065,-0.04],[0.118,-0.019],[0.663,-0.102],[1.034,-0.068],[0.472,-0.054],[0.124,-0.159],[-0.003,-0.156],[-0.061,-0.356],[-0.349,-0.135],[-0.549,0.013],[-0.982,0.102],[-0.851,0],[0,0],[-0.089,-0.216],[-0.2,-0.241],[0,0],[-0.156,0.014],[-0.118,0.042],[-0.071,0.103],[0.012,0.148],[-0.37,0.102],[-0.424,0.053],[-0.332,-0.064],[-1.165,-0.085],[-0.651,0.114],[-0.026,0.126],[0.029,0.125],[0.089,0.136],[0.15,0.065],[1.473,0.011],[1.265,0.088],[0.1,0.374],[0.038,0.394],[0.249,2.16],[0,0],[0,0],[-1.743,-0.011],[-0.153,0.089]],"v":[[-52.373,-9.529],[-52.067,-8.626],[-52.067,-8.626],[-49.796,-8.473],[-39.703,-8.029],[-36.309,-7.94],[-35.161,-7.94],[-33.374,-8.092],[-31.907,-8.308],[-30.019,-8.601],[-28.845,-9.046],[-28.96,-10.749],[-29.138,-11.016],[-31.588,-10.864],[-37.47,-10.737],[-40.443,-10.635],[-40.354,-11.474],[-40.035,-12.745],[-39.869,-14.36],[-39.869,-17.984],[-39.869,-21.467],[-39.69,-21.607],[-39.333,-21.607],[-32.634,-22.128],[-29.559,-22.548],[-28.36,-23.209],[-28.194,-23.768],[-28.271,-24.226],[-28.819,-25.116],[-29.917,-25.23],[-33.744,-24.963],[-36.13,-24.862],[-38.58,-24.938],[-40.609,-24.938],[-40.826,-25.396],[-41.579,-25.93],[-41.783,-25.93],[-42.242,-25.841],[-42.532,-25.618],[-42.638,-25.269],[-42.638,-24.824],[-43.442,-24.722],[-44.718,-24.722],[-47.27,-24.862],[-50.766,-24.785],[-51.863,-24.01],[-51.858,-23.63],[-51.697,-23.285],[-51.331,-22.976],[-50.855,-22.917],[-46.466,-22.497],[-42.74,-21.798],[-42.574,-20.653],[-42.268,-18.111],[-42.064,-11.601],[-42.217,-10.8],[-46.938,-10.673],[-52.156,-10.431]],"c":true},"ix":2},"nm":"Path 7","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-185.783,-210.185],"ix":2},"a":{"a":0,"k":[-40.283,-16.935],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":9.4,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"е 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[13.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[114.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[124]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[44]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-139.967]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-178.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-114.65]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-53.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-15.483]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.378},"o":{"x":0.333,"y":0},"t":0,"s":[173.309,321.719,0],"to":[13.482,-28.787,0],"ti":[-35.53,1.123,0]},{"i":{"x":0.667,"y":0.613},"o":{"x":0.333,"y":0.271},"t":31.963,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.647},"o":{"x":0.333,"y":0.309},"t":53.576,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.661},"o":{"x":0.333,"y":0.325},"t":71.213,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.67},"o":{"x":0.333,"y":0.334},"t":86.393,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.681},"o":{"x":0.333,"y":0.344},"t":101.143,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.702},"o":{"x":0.333,"y":0.363},"t":116.344,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.773},"o":{"x":0.333,"y":0.425},"t":134.777,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.639},"t":159.574,"s":[164.102,362.201,0],"to":[0,-13.795,0],"ti":[-5.969,12.746,0]},{"t":180,"s":[173.309,321.719,0]}],"ix":2},"a":{"a":0,"k":[-166.691,-231.281,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.179,-0.585],[-0.031,-0.353],[0,0],[-0.12,-0.019],[-0.428,0.003],[-0.87,-0.15],[-0.856,-0.068],[-2.454,-0.639],[0,0],[-0.819,-0.384],[-0.286,-0.012],[-0.111,0.043],[-0.07,0.095],[-0.04,0.111],[0.011,0.084],[-0.124,0.628],[-0.115,1.043],[-0.268,1.729],[-0.256,0.882],[-0.247,0.661],[0.293,0.242],[0.085,0.017],[0.131,-0.035],[0.108,-0.083],[0.26,-0.54],[0.27,-0.399],[0.133,-1.303],[0.15,-0.686],[0,-0.428],[0,0],[-0.038,-0.254],[0,-0.114],[0,0],[0,0],[1.493,0.369],[0,0],[0,0.267],[-0.246,0.607],[-0.276,1.025],[-0.076,1.152],[0,0],[0.006,0.051],[0.104,0.116],[0.27,0.081],[0.23,-0.089],[0.293,-2.39],[0.615,-1.828],[-0.037,-0.918],[0,0.102],[0.508,0.149],[0.868,0.102],[0.789,0.008],[0,0],[-0.357,1.399],[-0.281,1.055],[-0.047,1.039],[-0.23,0.598],[0.434,0.216],[0.207,-0.008],[0.083,-0.036],[0.054,-0.073],[0.162,-0.835],[0.268,-1.157],[0.191,-0.839],[0.102,-0.28]],"o":[[-0.115,0.335],[0,0],[0.097,0.073],[0.421,0.079],[0.881,0.062],[0.844,0.16],[2.534,0.105],[0,0],[0.878,0.216],[0.23,0.17],[0.116,0.023],[0.111,-0.043],[0.062,-0.1],[0.011,-0.084],[-0.014,-0.64],[0.14,-0.915],[0.077,-1.36],[0.151,-0.905],[0.136,-0.692],[0.204,-0.547],[-0.065,-0.058],[-0.135,-0.019],[-0.131,0.035],[-0.485,0.353],[-0.179,0.447],[-0.451,1.23],[-0.028,0.701],[-0.102,0.416],[0.166,0.763],[0.064,0.788],[0.038,0.254],[0,0],[0,0],[-1.046,-0.331],[0,0],[0.089,-0.521],[0.119,-0.644],[0.378,-0.991],[0.306,-1.114],[0.166,-1.297],[0.006,-0.051],[-0.074,-0.137],[-0.139,-0.245],[-0.23,-0.089],[-0.281,0.14],[-0.259,1.91],[-0.29,0.872],[0,0.178],[-0.508,0.149],[-1.301,-0.064],[-0.783,-0.102],[0,0],[0.217,-0.763],[0.357,-1.399],[0.259,-1.007],[0.102,-0.928],[0.23,-0.598],[-0.153,-0.138],[-0.09,-0.011],[-0.083,0.036],[-0.271,0.807],[-0.179,0.801],[-0.727,3.42],[-0.191,0.839],[-0.102,0.28]],"v":[[-49.821,-37.995],[-49.949,-36.953],[-49.949,-36.915],[-49.617,-36.775],[-48.341,-36.66],[-45.713,-36.342],[-43.161,-35.999],[-35.658,-34.88],[-32.252,-33.812],[-29.7,-32.91],[-28.908,-32.63],[-28.561,-32.66],[-28.283,-32.872],[-28.13,-33.189],[-28.13,-33.444],[-27.964,-35.351],[-27.569,-38.3],[-27.058,-42.941],[-26.446,-45.624],[-25.872,-47.658],[-26.025,-48.84],[-26.255,-48.955],[-26.658,-48.93],[-27.02,-48.751],[-28.156,-47.391],[-28.832,-46.119],[-29.712,-42.305],[-29.98,-40.22],[-30.133,-38.949],[-29.968,-37.805],[-29.904,-36.075],[-29.802,-35.541],[-30.58,-35.796],[-32.468,-36.482],[-36.296,-37.525],[-38.236,-37.97],[-38.006,-39.165],[-37.457,-41.047],[-36.475,-44.073],[-35.901,-47.48],[-35.735,-49.412],[-35.735,-49.565],[-36.003,-49.946],[-36.641,-50.455],[-37.355,-50.455],[-38.21,-46.641],[-39.524,-41.021],[-39.907,-38.313],[-39.907,-38.211],[-41.464,-38.211],[-44.718,-38.453],[-47.078,-38.618],[-47.665,-38.758],[-46.823,-42.064],[-45.866,-45.751],[-45.407,-48.828],[-45.1,-51.37],[-45.394,-52.578],[-45.955,-52.782],[-46.219,-52.743],[-46.427,-52.578],[-47.078,-50.112],[-47.754,-47.187],[-49.03,-40.83],[-49.4,-39.267]],"c":true},"ix":2},"nm":"Path 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-176.668,-235.827],"ix":2},"a":{"a":0,"k":[-37.856,-42.702],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":16.1,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"в 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[14]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[54]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[110]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[17]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-80]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-168.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-188.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-113.95]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-53.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-15.783]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.372},"o":{"x":0.333,"y":0},"t":0,"s":[184.743,303.023,0],"to":[15.08,-19.382,0],"ti":[-27.363,0.865,0]},{"i":{"x":0.667,"y":0.602},"o":{"x":0.333,"y":0.258},"t":27.906,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.644},"o":{"x":0.333,"y":0.306},"t":50.846,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.66},"o":{"x":0.333,"y":0.323},"t":68.848,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.669},"o":{"x":0.333,"y":0.333},"t":84.137,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.679},"o":{"x":0.333,"y":0.342},"t":98.863,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.697},"o":{"x":0.333,"y":0.359},"t":113.904,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.749},"o":{"x":0.333,"y":0.405},"t":131.85,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.632},"t":154.518,"s":[164.102,362.201,0],"to":[0,-20.956,0],"ti":[-13.17,16.927,0]},{"t":180,"s":[184.743,303.023,0]}],"ix":2},"a":{"a":0,"k":[-155.257,-249.977,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.176,0.332],[-0.374,0.493],[0,0],[-1.196,0.521],[-0.44,-0.022],[-0.391,-0.202],[0,-2.543],[0.214,-0.675],[0.153,-0.368],[0,-0.203],[0.043,-0.195],[0.243,-0.621],[0.127,-0.477],[0.268,0.14],[0.257,0.183],[0,0],[0.408,0.331],[0.707,0.373],[0.128,0.089],[0.02,0.058],[-0.014,0.06],[-0.179,0.712],[-0.077,0.267],[-0.105,0.361]],"o":[[0.288,-0.548],[0,0],[0.681,-1.109],[0.41,-0.162],[0.44,0.022],[1.212,1.055],[-0.126,0.697],[-0.102,0.385],[-0.051,0.178],[-0.076,0.185],[-0.122,0.656],[-0.213,0.445],[-0.038,0.076],[-0.279,-0.147],[0,0],[-0.574,-0.394],[-0.643,-0.474],[-0.676,-0.369],[-0.048,-0.039],[-0.02,-0.058],[0.013,-0.076],[0.115,-0.445],[0.175,-0.333],[0.104,-0.361]],"v":[[-28.794,-66.818],[-27.798,-68.382],[-27.798,-68.382],[-24.915,-70.886],[-23.625,-71.099],[-22.363,-70.759],[-20.564,-65.305],[-21.074,-63.245],[-21.457,-62.114],[-21.61,-61.529],[-21.789,-60.957],[-22.337,-59.037],[-22.848,-57.651],[-23.32,-57.74],[-24.124,-58.236],[-25.4,-59.1],[-26.88,-60.206],[-28.908,-61.478],[-30.121,-62.164],[-30.226,-62.313],[-30.235,-62.495],[-29.942,-63.677],[-29.636,-64.733],[-29.215,-65.775]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.472,0.635],[0,0],[-1.556,1.367],[-0.252,0.075],[-0.257,-0.052],[-0.072,-0.014],[-0.177,-0.476],[0.777,-1.791],[0.026,-0.216],[0.089,-0.292],[0.23,-0.699],[0.074,-0.255],[0,0],[0.97,0.381],[0,0],[0,0],[0.125,0.091]],"o":[[0.378,-0.694],[0,0],[1.038,-1.79],[0.186,-0.185],[0.252,-0.075],[0.072,-0.014],[0.435,0.265],[0.604,1.856],[-0.191,0.47],[-0.026,0.216],[-0.089,0.292],[-0.105,0.244],[0,0],[-1.595,-0.763],[0,0],[0,0],[-0.138,-0.069],[0,0]],"v":[[-38.593,-67.288],[-37.317,-69.284],[-37.317,-69.284],[-33.4,-74.052],[-32.733,-74.448],[-31.958,-74.484],[-31.741,-74.484],[-30.797,-73.34],[-31.065,-67.682],[-31.524,-66.411],[-31.69,-65.559],[-32.175,-64.072],[-32.443,-63.321],[-34.165,-64.161],[-37.993,-65.89],[-38.465,-66.131],[-38.555,-66.131],[-38.95,-66.373]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0.255,-0.547],[0.128,-0.318],[0,0],[0.097,-0.937],[-0.075,-0.124],[-0.13,0.009],[-1.8,-1.024],[-0.732,-0.425],[0,0],[0,0],[-0.298,-0.254],[-0.617,-0.341],[-0.306,-0.153],[0,0],[-0.197,0.045],[-0.102,0.183],[0,0],[-0.033,0.079],[-0.188,0.537],[-0.239,0.811],[-0.191,0.61],[-0.235,1.202],[0.37,1.093],[0.704,0.931],[1.042,0.16],[0.849,-0.436],[0.448,-0.349],[0.299,-0.34],[0.064,0.038],[0,0.127],[0.058,0.349],[0.289,0.655],[0.521,0.493],[0.59,0.233],[0.489,-0.185],[1.701,-2.373],[0.612,-1.093]],"o":[[-0.255,0.547],[0,0],[-0.319,0.887],[0.061,0.131],[0.124,-0.042],[2.017,0.477],[0.773,0.346],[0,0],[0,0],[2.331,1.441],[0.564,0.421],[0.689,0.394],[0,0],[0.197,0.045],[0.201,-0.062],[0,0],[0.043,-0.074],[0.245,-0.514],[0.322,-0.782],[0.255,-0.636],[0.419,-1.151],[0.024,-1.153],[-0.326,-1.12],[-0.74,-0.748],[-0.952,-0.078],[-0.487,0.294],[-0.371,0.26],[-0.051,0.153],[-0.064,-0.038],[-0.002,-0.354],[-0.013,-0.715],[-0.289,-0.655],[-0.492,-0.399],[-0.507,-0.127],[-1.31,0.415],[-0.408,0.602],[-0.242,0.483]],"v":[[-39.984,-68.738],[-40.571,-67.466],[-40.571,-67.466],[-41.196,-64.72],[-40.992,-64.339],[-40.609,-64.415],[-34.854,-62.152],[-32.596,-60.995],[-31.511,-60.372],[-30.235,-59.545],[-26.293,-57.003],[-24.519,-55.858],[-23.026,-55.019],[-22.809,-54.892],[-22.21,-54.892],[-21.738,-55.273],[-21.393,-55.795],[-21.278,-56.024],[-20.628,-57.6],[-19.785,-59.99],[-19.122,-61.897],[-18.139,-65.432],[-18.663,-68.827],[-20.219,-71.929],[-22.963,-73.327],[-25.719,-72.781],[-27.122,-71.814],[-28.13,-70.912],[-28.296,-70.759],[-28.36,-71.001],[-28.449,-72.056],[-28.906,-74.132],[-30.133,-75.87],[-31.767,-76.824],[-33.298,-76.735],[-37.815,-72.552],[-39.346,-70.009]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-165.042,-255.817],"ix":2},"a":{"a":0,"k":[-29.667,-65.879],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":13.2,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"о 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[15.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[51]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[99.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[64]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-21]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-110]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-198.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-190.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-115.65]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-52.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-17.783]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.364},"o":{"x":0.333,"y":0},"t":0,"s":[203.273,285.032,0],"to":[12.977,-9.403,0],"ti":[-17.757,0.561,0]},{"i":{"x":0.667,"y":0.582},"o":{"x":0.333,"y":0.234},"t":22.383,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.64},"o":{"x":0.333,"y":0.301},"t":47.504,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.658},"o":{"x":0.333,"y":0.321},"t":66.016,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.331},"t":81.467,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.677},"o":{"x":0.333,"y":0.34},"t":96.193,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.693},"o":{"x":0.333,"y":0.355},"t":111.076,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.731},"o":{"x":0.333,"y":0.389},"t":128.537,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.624},"t":149.469,"s":[164.102,362.201,0],"to":[0,-29.38,0],"ti":[-24.487,17.743,0]},{"t":180,"s":[203.273,285.032,0]}],"ix":2},"a":{"a":0,"k":[-136.727,-267.968,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.049,0.019],[-0.445,0.363],[0,0],[-0.472,0.292],[-0.493,0.126],[-0.535,0.027],[-1.174,0],[-1.344,-1.037],[-0.566,-1.547],[0.46,-1.553],[0.355,-0.888],[0.457,-0.54],[0.085,-0.058],[1.675,-0.448],[0.472,0],[1.19,0.967],[0.122,0.141],[0.718,1.248],[0.103,1.911],[-0.18,0.882],[-0.353,0.462]],"o":[[0.405,-0.408],[0,0],[0.37,-0.254],[0.458,-0.221],[0.527,-0.1],[1.493,-0.013],[1.639,0.449],[1.295,1.022],[0.41,1.567],[-0.214,0.932],[-0.226,0.67],[-0.068,0.077],[-1.295,1.149],[-1.404,0.102],[-1.507,-0.294],[-0.141,-0.122],[-0.978,-1.058],[-0.742,-1.766],[-0.044,-0.899],[0.091,-0.573],[0.035,-0.039]],"v":[[-21.419,-95.513],[-20.143,-96.67],[-20.194,-96.67],[-18.918,-97.496],[-17.489,-98.018],[-15.894,-98.208],[-11.913,-98.145],[-7.396,-95.895],[-4.551,-91.966],[-4.627,-87.198],[-5.482,-84.465],[-6.515,-82.634],[-6.745,-82.43],[-11.262,-80.002],[-14.095,-79.824],[-18.203,-81.744],[-18.599,-82.138],[-21.151,-85.609],[-22.427,-91.165],[-22.222,-93.848],[-21.546,-95.424]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0.18,-0.261],[0,0],[0.056,-0.347],[0,0],[0.015,-0.384],[-0.064,-0.826],[-0.064,-0.305],[-0.179,-0.763],[-1.167,-1.541],[-0.528,-0.432],[-0.345,-0.267],[-0.924,-0.307],[-1.263,0.256],[-1.402,0.622],[-0.837,0.887],[-0.492,1.355],[-0.137,1.127],[1.372,1.934],[0.768,0.654],[0,0],[0.795,0.474],[2.08,0.171],[0.801,-0.127],[0.667,-0.206],[0.918,-1.137]],"o":[[-0.219,0.23],[0,0],[-0.097,0.339],[0,0],[-0.112,0.367],[-0.013,0.331],[0.089,1.093],[0.064,0.305],[0.44,1.88],[0.396,0.555],[0.281,0.242],[0.765,0.601],[1.263,0.256],[1.519,-0.222],[1.138,-0.444],[0.91,-1.12],[0.431,-1.05],[0.332,-2.345],[-0.624,-0.792],[0,0],[-0.69,-0.617],[-1.801,-1.051],[-0.81,-0.042],[-0.697,0.031],[-1.317,0.638],[0,0]],"v":[[-22.656,-96.81],[-23.256,-96.073],[-23.205,-96.073],[-23.435,-95.043],[-23.971,-93.301],[-24.162,-92.169],[-24.085,-90.44],[-23.894,-88.33],[-23.549,-86.753],[-21.112,-81.566],[-19.722,-80.078],[-18.777,-79.303],[-16.225,-77.93],[-12.398,-77.93],[-7.996,-79.201],[-4.997,-81.223],[-2.879,-84.961],[-2.024,-88.241],[-3.645,-94.903],[-5.737,-97.077],[-5.967,-97.28],[-8.2,-98.92],[-14.095,-100.777],[-16.519,-100.65],[-18.573,-100.294],[-21.967,-97.598]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.174,-276.265],"ix":2},"a":{"a":0,"k":[-13.049,-89.265],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"з 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[17.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[54.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[90.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[35]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-50.775]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-138.55]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-221.458]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-190.367]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-113.475]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-52.183]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-14.792]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.354},"o":{"x":0.333,"y":0},"t":0,"s":[224.337,273.894,0],"to":[7.88,-2.813,0],"ti":[-9.022,0.285,0]},{"i":{"x":0.667,"y":0.549},"o":{"x":0.333,"y":0.196},"t":15.943,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.636},"o":{"x":0.333,"y":0.296},"t":44.281,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.656},"o":{"x":0.333,"y":0.319},"t":63.355,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.666},"o":{"x":0.333,"y":0.33},"t":78.988,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.675},"o":{"x":0.333,"y":0.339},"t":93.736,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.69},"o":{"x":0.333,"y":0.352},"t":108.502,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.72},"o":{"x":0.333,"y":0.38},"t":125.588,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.618},"t":145.34,"s":[164.102,362.201,0],"to":[0,-37.04,0],"ti":[-36.896,13.169,0]},{"t":180,"s":[224.337,273.894,0]}],"ix":2},"a":{"a":0,"k":[-115.663,-279.106,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.251,-0.297],[0.122,-1.822],[0,-0.203],[-0.102,-0.102],[-0.306,0.216],[-0.084,0.162],[0.166,0.102],[-0.115,0.648],[-0.978,1.228],[-0.329,0.225],[-0.305,-0.079],[-0.171,-0.089],[-0.123,-0.214],[-0.015,-0.722],[0.087,-0.998],[0.166,-0.508],[-0.191,-0.464],[-0.092,-0.119],[-0.144,-0.043],[-0.143,0.011],[-0.119,0.08],[-0.242,0.326],[-0.566,0.288],[-0.501,-0.164],[-0.756,-0.795],[-0.184,-1.042],[0.24,-0.825],[0.718,-0.511],[0.601,-0.098],[0.886,0.371],[0.883,1.471],[0.102,0.153],[0,-0.165],[-0.63,-0.79],[-0.089,-0.114],[-0.801,-0.611],[-0.543,-0.173],[-0.644,-0.056],[-0.873,0.342],[-0.347,0.236],[-0.341,0.378],[-0.192,1.191],[0.376,1.135],[0.392,0.512],[0.144,0.151],[0.643,0.539],[1.011,0.119],[0.841,-0.414],[0.182,-0.094],[0,0.114],[0.229,1.122],[0.813,0.81],[0.426,0.131],[0.437,-0.087],[0.418,-0.261]],"o":[[-0.317,0.226],[-1.164,1.411],[-0.128,0.725],[0.23,0.28],[0.434,0.521],[0.15,-0.105],[0.102,-0.216],[-0.166,-0.102],[0.252,-1.548],[0.255,-0.306],[0.305,-0.079],[0.192,0.02],[0.165,0.183],[0.313,0.652],[0.087,0.998],[-0.098,0.525],[-0.191,0.464],[0.004,0.15],[0.092,0.119],[0.13,0.061],[0.143,-0.011],[0.309,-0.265],[0.326,-0.543],[0.486,-0.205],[1.068,0.259],[0.784,0.714],[0.054,0.857],[-0.277,0.835],[-0.489,0.361],[-0.958,0.078],[-1.555,-0.734],[-0.357,-0.547],[-0.077,0.331],[0.139,0.999],[0.077,0.089],[0.569,0.829],[0.463,0.332],[0.61,0.215],[0.938,0.024],[0.375,-0.187],[0.414,-0.298],[0.714,-0.974],[0.225,-1.174],[-0.234,-0.601],[-0.119,-0.171],[-0.484,-0.684],[-0.799,-0.63],[-0.924,-0.167],[-0.167,0.118],[0,-0.254],[0.178,-1.131],[-0.182,-1.132],[-0.312,-0.317],[-0.426,-0.131],[-0.484,0.092],[0,0]],"v":[[-91.31,-25.73],[-92.164,-24.942],[-94.142,-19.971],[-94.41,-18.585],[-93.925,-18.026],[-92.828,-17.568],[-92.471,-17.975],[-92.471,-18.433],[-92.56,-19.564],[-90.684,-23.798],[-89.804,-24.599],[-88.872,-24.599],[-88.324,-24.434],[-87.89,-23.836],[-87.392,-21.751],[-87.392,-18.75],[-87.788,-17.199],[-87.788,-15.75],[-87.64,-15.337],[-87.278,-15.089],[-86.861,-15.013],[-86.461,-15.152],[-85.632,-16.042],[-84.266,-17.314],[-82.735,-17.377],[-79.941,-15.763],[-78.448,-13.055],[-78.729,-10.512],[-80.26,-8.439],[-81.919,-7.74],[-84.726,-8.185],[-88.464,-11.567],[-89.166,-12.61],[-89.357,-11.847],[-88.183,-9.113],[-87.954,-8.808],[-85.887,-6.634],[-84.368,-5.871],[-82.48,-5.464],[-79.737,-5.947],[-78.652,-6.583],[-77.516,-7.6],[-76.138,-10.893],[-76.368,-14.415],[-77.312,-16.093],[-77.708,-16.576],[-79.405,-18.42],[-82.174,-19.564],[-84.891,-19.183],[-85.415,-18.865],[-85.415,-19.412],[-85.491,-22.819],[-87.022,-25.807],[-88.146,-26.489],[-89.459,-26.557],[-90.825,-26.023]],"c":true},"ix":2},"nm":"Path 11","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-120.274,-289.691],"ix":2},"a":{"a":0,"k":[-85.212,-16.035],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":15.2,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"м 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[7.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[49.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[64.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-84.875]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-174.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-246.425]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-191.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-117.125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-57.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-17.875]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.392},"o":{"x":0.333,"y":0},"t":0,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.63},"o":{"x":0.333,"y":0.29},"t":40.594,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.653},"o":{"x":0.333,"y":0.316},"t":60.412,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.664},"o":{"x":0.333,"y":0.328},"t":76.279,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.673},"o":{"x":0.333,"y":0.337},"t":91.076,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.687},"o":{"x":0.333,"y":0.349},"t":105.744,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.711},"o":{"x":0.333,"y":0.372},"t":122.486,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.611},"t":141.246,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"t":180,"s":[249.738,269.12,0]}],"ix":2},"a":{"a":0,"k":[-90.262,-283.88,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.152,-0.053],[0.143,-0.183],[0,0],[0.073,-0.473],[0.128,-1.399],[0.085,-1.093],[-0.094,-1.427],[0,-0.954],[-0.217,-1.564],[-0.077,-0.559],[0,0],[0.264,0.288],[0.427,0.361],[1.604,1.508],[1.745,1.463],[1.072,0.75],[0.562,0.28],[0.311,-0.074],[0.066,-0.064],[0.034,-0.085],[-0.102,-0.355],[-0.281,-0.826],[-0.574,-1.577],[-0.37,-0.941],[-0.268,-0.547],[-0.423,-1.047],[-0.459,-0.713],[-0.114,-0.04],[-0.119,0.019],[-0.215,0.101],[-0.128,0.203],[0,0.082],[0.037,0.073],[0.281,0.699],[0.487,0.815],[0.927,2.834],[1.013,1.956],[0,0.089],[-0.102,-0.089],[-2.136,-2.305],[-2.001,-1.805],[-0.827,-1.167],[-0.308,-0.303],[-0.101,-0.02],[-0.097,0.034],[0,0.449],[0.194,0.971],[0.166,2.085],[0,0.458],[-0.026,1.698],[-0.142,1.534],[0,0.407],[-0.012,0.08],[-0.485,-1.195],[-0.383,-1.157],[-1.062,-2.394],[-1.159,-1.669],[-0.12,-0.035],[-0.113,0.053],[-0.293,0.076],[-0.107,0.096],[-0.046,0.136],[0.096,0.263],[0.013,0.071],[0.472,0.915],[1.136,2.995],[0.919,2.314],[0.573,1.159],[0.104,0.123],[0.144,0.072],[0.161,0.01]],"o":[[-0.209,0.102],[0,0],[-0.215,0.428],[-0.115,0.598],[-0.17,1.933],[-0.094,1.427],[0,0.75],[0.166,1.678],[0.051,0.381],[0.077,0.559],[-0.043,0.008],[-0.362,-0.426],[-1.334,-1.749],[-1.464,-1.743],[-1.161,-0.954],[-0.499,-0.38],[-0.279,-0.156],[-0.086,0.031],[-0.066,0.064],[-0.043,0.367],[0.128,0.509],[0.281,0.826],[1.544,4.145],[0.37,0.941],[0.537,0.994],[0.339,0.777],[0.081,0.089],[0.114,0.04],[0.238,0.001],[0.233,-0.058],[0.037,-0.073],[0,-0.082],[-0.038,-0.153],[-0.363,-0.877],[-1.408,-2.631],[-0.781,-2.059],[-0.14,-0.254],[0.255,0.178],[2.378,2.057],[1.72,2.072],[1.016,1.008],[0.244,0.356],[0.077,0.069],[0.101,0.02],[0.255,-0.11],[-0.095,-0.986],[-0.204,-1.119],[-0.064,-1.297],[-0.162,-1.69],[-0.014,-1.541],[0.128,-0.954],[-0.012,-0.08],[0.038,0.038],[0.485,1.195],[0.774,2.501],[0.766,1.88],[0.066,0.106],[0.12,0.035],[0.242,-0.089],[0.141,-0.03],[0.107,-0.096],[0.096,-0.263],[0.013,-0.071],[-0.153,-0.369],[-1.482,-2.84],[-0.689,-1.924],[-0.447,-1.213],[-0.048,-0.154],[-0.104,-0.123],[-0.144,-0.072],[-0.161,-0.01]],"v":[[-58.632,-44.75],[-59.168,-44.318],[-59.168,-44.318],[-59.602,-42.958],[-59.959,-39.957],[-60.342,-35.418],[-60.342,-31.134],[-60.342,-28.591],[-59.768,-23.722],[-59.564,-22.45],[-59.487,-21.586],[-59.947,-22.005],[-61.133,-23.188],[-65.548,-28.082],[-70.371,-32.901],[-73.727,-35.444],[-75.322,-36.435],[-76.241,-36.563],[-76.471,-36.419],[-76.623,-36.194],[-76.534,-35.101],[-75.896,-33.143],[-74.62,-29.545],[-71.8,-21.916],[-70.856,-19.704],[-69.414,-16.64],[-68.215,-14.402],[-67.918,-14.206],[-67.564,-14.173],[-66.875,-14.326],[-66.314,-14.733],[-66.257,-14.968],[-66.314,-15.203],[-66.786,-16.475],[-68.062,-19.017],[-71.571,-27.231],[-74.263,-33.257],[-74.531,-33.753],[-73.995,-33.359],[-67.219,-26.811],[-61.631,-20.988],[-58.862,-17.721],[-58.033,-16.729],[-57.761,-16.593],[-57.458,-16.614],[-57.076,-17.454],[-57.509,-20.39],[-58.058,-25.196],[-58.237,-27.828],[-58.441,-32.914],[-58.25,-37.529],[-58.033,-39.563],[-58.033,-39.805],[-57.267,-37.961],[-55.991,-34.439],[-53.235,-27.091],[-50.339,-21.751],[-50.05,-21.532],[-49.688,-21.56],[-48.884,-21.802],[-48.505,-21.994],[-48.272,-22.348],[-48.272,-23.162],[-48.272,-23.378],[-49.216,-25.298],[-53.146,-34.058],[-55.557,-40.415],[-57.088,-43.975],[-57.318,-44.394],[-57.695,-44.69],[-58.157,-44.816]],"c":true},"ix":2},"nm":"Path 10","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-90.296,-296.116],"ix":2},"a":{"a":0,"k":[-62.421,-29.491],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":20.5,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"о 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[18]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[52]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[42]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-28]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-113.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-203]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-257.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-185.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-110.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-51.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-12.333]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.385},"o":{"x":0.333,"y":0},"t":0,"s":[279.699,271.532,0],"to":[34.803,7.559,0],"ti":[-18.569,-52.94,0]},{"i":{"x":0.667,"y":0.621},"o":{"x":0.333,"y":0.28},"t":35.986,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.65},"o":{"x":0.333,"y":0.313},"t":56.9,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.662},"o":{"x":0.333,"y":0.326},"t":73.104,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.671},"o":{"x":0.333,"y":0.335},"t":87.992,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.684},"o":{"x":0.333,"y":0.346},"t":102.58,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.703},"o":{"x":0.333,"y":0.365},"t":118.992,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.791},"o":{"x":0.333,"y":0.441},"t":136.855,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.644},"t":162.777,"s":[249.738,269.12,0],"to":[10.757,-0.34,0],"ti":[-9.243,-2.007,0]},{"t":180,"s":[279.699,271.532,0]}],"ix":2},"a":{"a":0,"k":[-60.301,-281.468,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.046,-0.012],[-0.574,-0.032],[-0.561,-0.14],[-0.451,-0.225],[-0.408,-0.329],[-0.829,-0.814],[-0.307,-1.666],[0.619,-1.527],[1.38,-0.858],[0.858,-0.423],[0.699,-0.103],[0.106,0.013],[1.55,0.771],[0,0],[0.241,1.526],[-0.013,0.186],[-0.291,1.413],[-1.213,1.483],[-0.711,0.539],[-0.575,0.108]],"o":[[0.574,-0.032],[0.485,0.051],[0.49,0.121],[0.442,0.281],[1.11,0.992],[0.923,1.423],[0.285,1.622],[-0.75,1.439],[-0.781,0.55],[-0.617,0.343],[-0.106,0.013],[-1.732,-0.007],[0,0],[-0.94,-1.228],[-0.013,-0.186],[-0.029,-1.443],[0.636,-1.806],[0.569,-0.686],[0.455,-0.368],[0.046,-0.012]],"v":[[-35.193,-46.149],[-33.47,-46.149],[-31.927,-45.882],[-30.51,-45.361],[-29.234,-44.445],[-26.325,-41.75],[-24.462,-37.071],[-24.973,-32.253],[-28.226,-28.744],[-30.689,-27.281],[-32.679,-26.608],[-32.998,-26.608],[-37.987,-27.79],[-40.22,-29.557],[-42.019,-33.753],[-42.019,-34.312],[-41.624,-38.61],[-38.829,-43.581],[-36.903,-45.424],[-35.333,-46.149]],"c":true},"ix":2},"nm":"Path 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0.307,-0.069],[0,0],[0.282,-0.215],[0,0],[0.272,-0.263],[0.51,-0.661],[0.179,-0.267],[0,0],[0.176,-1.919],[-0.081,-0.676],[-0.089,-0.432],[-0.471,-0.836],[-1.129,-0.642],[-1.464,-0.46],[-1.23,0.113],[-1.263,0.662],[-0.824,0.733],[-0.274,2.349],[0.131,0.999],[0,0.089],[0.27,0.883],[1.433,1.512],[0.667,0.445],[0.629,0.298],[1.439,-0.245]],"o":[[-0.313,0.033],[0,0],[-0.304,0.183],[0,0],[-0.321,0.201],[-0.23,0.254],[-0.676,0.877],[0,0],[-0.918,1.696],[-0.081,0.676],[0.038,0.432],[0.154,0.947],[0.782,1.035],[1.278,0.847],[1.154,0.439],[1.408,-0.231],[0.98,-0.508],[1.808,-1.532],[0.072,-1.005],[0,-0.114],[-0.095,-0.918],[-0.642,-1.979],[-0.563,-0.57],[-0.541,-0.437],[-1.412,-0.371],[0,0]],"v":[[-35.18,-47.903],[-36.112,-47.751],[-36.112,-47.751],[-36.992,-47.153],[-38.447,-46.263],[-39.34,-45.564],[-40.437,-44.216],[-41.713,-42.513],[-42.53,-41.114],[-44.188,-35.634],[-44.188,-33.6],[-43.997,-32.329],[-43.053,-29.634],[-40.156,-27.091],[-36.022,-25.12],[-32.399,-24.624],[-28.367,-25.972],[-25.649,-27.841],[-22.408,-33.88],[-22.497,-36.893],[-22.497,-37.198],[-23.046,-39.906],[-26.198,-45.208],[-28.048,-46.734],[-29.808,-47.84],[-34.134,-48.031]],"c":true},"ix":2},"nm":"Path 9","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-58.153,-292.946],"ix":2},"a":{"a":0,"k":[-33.309,-36.383],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"ж 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[16.65]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[33.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[8.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-65]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-154.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-250.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-270.125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-188.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-110.775]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-51.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-13.625]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.377},"o":{"x":0.333,"y":0},"t":0,"s":[306.602,282.287,0],"to":[21.197,13.2,0],"ti":[-13.375,-38.133,0]},{"i":{"x":0.667,"y":0.61},"o":{"x":0.333,"y":0.267},"t":31.066,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.647},"o":{"x":0.333,"y":0.31},"t":53.393,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.66},"o":{"x":0.333,"y":0.324},"t":69.99,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.67},"o":{"x":0.333,"y":0.333},"t":85.006,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.681},"o":{"x":0.333,"y":0.344},"t":99.553,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.698},"o":{"x":0.333,"y":0.359},"t":115.707,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.752},"o":{"x":0.333,"y":0.408},"t":132.887,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.633},"t":155.494,"s":[249.738,269.12,0],"to":[22.086,-0.698,0],"ti":[-16.047,-9.993,0]},{"t":180,"s":[306.602,282.287,0]}],"ix":2},"a":{"a":0,"k":[-33.398,-270.713,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.064],[0,0],[0,0],[0.128,-0.356],[0,0],[0.154,-2.371],[-0.104,-0.28],[-0.085,-0.07],[-0.106,-0.031],[-0.338,0.161],[-0.094,0.143],[-0.036,0.428],[-0.077,0.699],[0,0.229],[-0.408,1.602],[0,0],[0,0],[-0.051,-0.127],[-0.14,-0.534],[-0.361,-0.797],[-0.191,-0.394],[-0.954,-1.409],[-0.485,-0.585],[-0.299,-0.445],[-0.259,-0.297],[-0.182,-0.056],[-0.23,0.47],[-0.049,0.161],[0.148,0.239],[0.623,0.862],[0.306,0.458],[0.957,1.831],[0,0.102],[0.146,0.39],[0,0],[-0.696,0.473],[-0.924,0.554],[-0.635,0.549],[-0.698,0.665],[0,0],[-0.001,0.164],[0.179,0],[0.401,-0.183],[0.65,-0.426],[0.191,-0.191],[0.638,-0.381],[1.077,-0.959],[0,0],[0,0],[-0.247,0.524],[-0.396,1.411],[-0.332,1.411],[0.026,0.352],[0.087,0.071],[0.111,0.019],[0.097,-0.019],[0.224,-0.293],[0.178,-0.395],[0.166,-0.381],[0.167,-0.884],[0.3,-1.019],[0,0],[0.476,0.67],[0.702,0.903],[0.568,0.526],[0.433,0.158],[0.077,-0.28],[-0.038,-0.159],[-0.204,-0.458],[-0.74,-1.246],[-0.475,-0.672],[-0.573,-0.914],[-0.385,-0.739],[0.217,-0.318],[0.313,-0.282],[2.016,-1.818],[0.549,-0.445],[0.817,-0.585],[0.795,-0.734],[0.053,-0.276],[0,-0.191],[-0.345,-0.064],[-0.175,0.065],[-0.317,0.241],[-0.471,0.272],[-0.791,0.547],[-1.231,1.18],[-0.88,0.928],[-0.504,0.712],[-0.115,0.102]],"o":[[0.434,0.674],[0,0],[-0.077,0.381],[0,0],[-0.475,2.328],[-0.02,0.298],[0.052,0.097],[0.085,0.07],[0.36,0.104],[0.156,-0.073],[0.092,-0.419],[0.14,-0.992],[0.14,-1.373],[0.255,-1.437],[0,0],[0,0],[0.051,-0.038],[0.051,0.127],[0.225,0.845],[0.498,1.17],[0.745,1.529],[0.549,0.776],[0.355,0.402],[0.217,0.329],[0.147,0.12],[0.332,0.051],[0.07,-0.153],[0.058,-0.275],[-0.463,-0.957],[-0.561,-0.89],[-0.306,-0.458],[-1.263,-2.39],[-0.185,-0.373],[-0.128,-0.381],[0.621,-0.568],[0.853,-0.657],[0.691,-0.476],[0.764,-0.588],[0,0],[0.075,-0.146],[0.026,-0.28],[-0.441,0.01],[-0.717,0.301],[-0.982,0.598],[-0.191,0.191],[-1.2,0.802],[0,0],[0.14,-1.043],[0.091,-0.572],[0.038,-0.076],[0.204,-0.725],[0.102,-0.338],[-0.04,-0.105],[-0.087,-0.071],[-0.097,-0.019],[-0.308,0.204],[-0.303,0.311],[-0.153,0.47],[-0.292,0.851],[-0.176,1.047],[-0.217,0.623],[-2.654,-4.348],[-0.14,-0.191],[-0.459,-0.624],[-0.323,-0.328],[-0.191,-0.013],[-0.038,0.159],[0.077,0.14],[0.23,0.449],[0.374,0.733],[0.668,0.848],[0.465,0.692],[-0.089,-0.025],[-0.274,0.32],[-0.077,0.089],[-1.531,1.36],[-0.549,0.445],[-0.904,0.595],[-0.211,0.186],[0,0.127],[0.051,0.521],[0.186,0.015],[0.354,-0.182],[0.438,-0.321],[0.663,-0.381],[1.386,-0.995],[0.306,-0.305],[0.609,-0.625],[0.319,-0.458],[0.115,-0.102]],"v":[[-1.737,-35.825],[-1.074,-34.821],[-1.074,-34.821],[-1.342,-33.651],[-1.763,-31.312],[-2.707,-24.256],[-2.58,-23.378],[-2.372,-23.125],[-2.082,-22.971],[-0.997,-23.06],[-0.615,-23.391],[-0.423,-24.662],[-0.091,-27.205],[0.189,-29.608],[1.184,-34.172],[1.657,-34.401],[2.639,-35.113],[2.818,-34.948],[3.098,-33.944],[3.979,-31.477],[5.012,-29.125],[7.564,-24.713],[9.108,-22.666],[10.091,-21.395],[10.805,-20.454],[11.303,-20.187],[12.158,-20.81],[12.336,-21.28],[12.196,-22.081],[10.563,-24.815],[9.172,-26.976],[7.296,-30.396],[5.331,-34.147],[4.834,-35.291],[4.553,-35.876],[6.531,-37.44],[9.197,-39.258],[11.188,-40.796],[13.383,-42.678],[14.084,-43.365],[14.199,-43.835],[13.97,-44.344],[12.694,-44.051],[10.639,-42.958],[8.891,-41.852],[7.615,-40.987],[4.196,-38.343],[1.81,-36.359],[2.027,-37.948],[2.537,-39.601],[3.188,-41.852],[3.979,-45.043],[4.094,-46.085],[3.899,-46.354],[3.596,-46.492],[3.303,-46.492],[2.499,-45.742],[1.771,-44.674],[1.299,-43.403],[0.61,-40.796],[-0.104,-37.694],[-0.423,-36.728],[-5.119,-44.255],[-6.395,-45.895],[-7.939,-47.624],[-9.087,-48.361],[-9.482,-47.967],[-9.482,-47.484],[-9.074,-46.594],[-7.62,-44.051],[-6.344,-41.941],[-4.481,-39.296],[-3.205,-37.147],[-3.677,-36.702],[-4.557,-35.8],[-7.696,-32.952],[-10.644,-30.409],[-12.698,-28.858],[-15.25,-26.862],[-15.658,-26.15],[-15.658,-25.654],[-15.071,-24.777],[-14.523,-24.853],[-13.515,-25.489],[-12.149,-26.379],[-9.98,-27.765],[-6.05,-31.032],[-4.264,-32.876],[-2.592,-34.884],[-1.98,-35.723]],"c":true},"ix":2},"nm":"Path 7","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-27.602,-280.021],"ix":2},"a":{"a":0,"k":[-0.727,-34.271],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":23,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"н 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[7.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[14]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-34]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-108]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-195]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-280.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-269.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-189]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-114.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-51.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-15.35]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.368},"o":{"x":0.333,"y":0},"t":0,"s":[328.493,301.756,0],"to":[11.215,13.578,0],"ti":[-8.375,-23.877,0]},{"i":{"x":0.667,"y":0.593},"o":{"x":0.333,"y":0.247},"t":25.363,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.643},"o":{"x":0.333,"y":0.305},"t":49.705,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.658},"o":{"x":0.333,"y":0.322},"t":66.791,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.668},"o":{"x":0.333,"y":0.331},"t":81.975,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.678},"o":{"x":0.333,"y":0.341},"t":96.514,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.693},"o":{"x":0.333,"y":0.355},"t":112.461,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.731},"o":{"x":0.333,"y":0.389},"t":129.084,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.624},"t":149.656,"s":[249.738,269.12,0],"to":[32.994,-1.043,0],"ti":[-20.255,-24.522,0]},{"t":180,"s":[328.493,301.756,0]}],"ix":2},"a":{"a":0,"k":[-11.507,-251.244,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.459,0.242],[0.179,-0.127],[0,0],[0.362,-0.683],[1.148,-1.771],[0.791,-1.449],[0,0],[0.19,-0.562],[0.23,-0.438],[0.152,-0.619],[-0.061,-0.431],[-0.589,-0.048],[-0.11,-0.016],[-0.23,0.483],[-1.182,2.153],[-0.242,0.458],[0,0],[-0.261,-0.367],[-0.475,-0.267],[-1.659,-0.848],[-0.676,-0.369],[0.013,-0.11],[0.066,-0.094],[1.608,-3.445],[0.299,-0.986],[-0.169,-0.442],[-0.183,-0.084],[-0.151,-0.023],[-0.339,0.139],[-0.116,0.352],[-0.804,1.831],[-0.293,0.521],[-0.408,0.648],[-0.166,0.28],[0,0],[-0.245,0.197],[0,0],[-0.023,0.151],[0.055,0.113],[0.112,0.056],[0.112,0.107],[-0.119,0.238],[-0.264,0.36],[-0.416,0.756],[-0.418,1.088],[0.319,0.267],[0.123,0.037],[0.128,-0.017],[0.129,-0.099],[0.057,-0.152],[0.922,-1.146],[0.917,-0.876],[0.344,0.178],[0,0],[1.863,1.138],[0,0],[0,0],[0.013,0.178]],"o":[[-0.459,-0.242],[0,0],[-0.528,0.566],[-2.331,3.984],[-0.332,0.496],[0,0],[-0.285,0.521],[-0.109,0.482],[-0.28,0.573],[-0.17,0.401],[0.415,0.42],[0.11,-0.016],[0.459,-0.954],[0.629,-1.314],[0.6,-1.31],[0,0],[0.395,0.219],[0.416,0.351],[0.485,0.271],[1.404,0.712],[-0.046,0.101],[-0.035,0.109],[-0.204,0.648],[-0.432,0.936],[-0.169,0.442],[0.09,0.18],[0.136,0.069],[0.339,0.139],[0.285,-0.238],[0.242,-0.47],[0.408,-0.852],[0.459,-0.75],[0.51,-0.89],[0,0],[0.308,-0.062],[0,0],[0.07,-0.136],[0.024,-0.123],[-0.055,-0.113],[-0.134,-0.079],[0.085,-0.253],[0.159,-0.417],[0.493,-0.709],[0.626,-0.984],[0.217,-0.636],[-0.097,-0.085],[-0.123,-0.037],[-0.162,0.016],[-0.129,0.099],[-0.717,1.283],[-0.685,1.066],[-0.376,-0.092],[0,0],[-2.026,-0.817],[0,0],[0,0],[1.506,-2.937],[-0.013,-0.178]],"v":[[29.345,-37.974],[28.401,-38.139],[28.401,-38.139],[27.061,-36.257],[21.842,-27.625],[20.145,-24.701],[19.609,-23.671],[18.895,-22.043],[18.384,-20.657],[17.734,-18.865],[17.568,-17.593],[19.124,-16.869],[19.456,-16.869],[20.477,-19.094],[23.195,-24.294],[24.471,-26.951],[25.16,-26.468],[26.155,-25.578],[27.495,-24.65],[30.71,-22.971],[33.823,-21.357],[33.734,-21.039],[33.581,-20.734],[30.825,-14.606],[29.728,-11.72],[29.728,-10.346],[30.149,-9.94],[30.583,-9.8],[31.642,-9.8],[32.254,-10.702],[33.836,-14.161],[34.895,-16.284],[36.171,-18.394],[37.192,-20.149],[37.69,-20.149],[38.532,-20.543],[38.621,-20.734],[38.761,-21.166],[38.714,-21.529],[38.455,-21.789],[38.085,-22.069],[38.391,-22.806],[39.029,-23.976],[40.395,-26.175],[41.964,-29.29],[41.811,-30.625],[41.477,-30.81],[41.096,-30.841],[40.652,-30.665],[40.369,-30.282],[37.907,-26.633],[35.495,-23.709],[34.41,-24.116],[32.088,-25.031],[26.244,-27.968],[25.606,-28.489],[27.763,-32.672],[30.047,-37.351]],"c":true},"ix":2},"nm":"Path 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-2.93,-259.201],"ix":2},"a":{"a":0,"k":[29.82,-23.951],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":19.3,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"о 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[6.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-2.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-58.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-134]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-218.35]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-299.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-278.083]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-182.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-108.1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-50.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-8.267]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.359},"o":{"x":0.333,"y":0},"t":0,"s":[343.325,324.201,0],"to":[5.168,9.626,0],"ti":[-4.425,-12.617,0]},{"i":{"x":0.667,"y":0.565},"o":{"x":0.333,"y":0.215},"t":18.969,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.639},"o":{"x":0.333,"y":0.301},"t":46.174,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.656},"o":{"x":0.333,"y":0.319},"t":63.807,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.666},"o":{"x":0.333,"y":0.33},"t":79.186,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.676},"o":{"x":0.333,"y":0.339},"t":93.746,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.689},"o":{"x":0.333,"y":0.352},"t":109.543,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.719},"o":{"x":0.333,"y":0.378},"t":125.748,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.617},"t":145.012,"s":[249.738,269.12,0],"to":[41.609,-1.315,0],"ti":[-22.277,-41.49,0]},{"t":180,"s":[343.325,324.201,0]}],"ix":2},"a":{"a":0,"k":[3.325,-228.799,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.341,-0.444],[-0.332,-0.445],[-0.097,-0.495],[0.002,-0.536],[0.102,-1.157],[1.133,-1.285],[1.591,-0.5],[1.537,0.534],[0.879,0.386],[0.52,0.474],[0.054,0.091],[0.373,1.684],[0,0.47],[-1.029,1.161],[-0.153,0.114],[-1.287,0.667],[-1.918,-0.004],[-0.876,-0.218],[-0.45,-0.372]],"o":[[0.39,0.403],[0.242,0.394],[0.208,0.46],[0.078,0.53],[-0.064,1.488],[-0.552,1.619],[-1.086,1.262],[-1.593,0.335],[-0.922,-0.266],[-0.653,-0.266],[-0.081,-0.069],[-1.087,-1.343],[0,-1.411],[0.371,-1.504],[0.14,-0.127],[1.104,-0.939],[1.805,-0.644],[0.903,0.002],[0.572,0.121],[0,0]],"v":[[59.981,-14.974],[61.078,-13.703],[61.907,-12.381],[62.367,-10.944],[62.481,-9.342],[62.226,-5.388],[59.674,-0.989],[55.578,1.706],[50.794,1.401],[48.089,0.422],[46.315,-0.697],[46.111,-0.938],[43.891,-5.541],[43.891,-8.376],[46.022,-12.432],[46.443,-12.8],[50.041,-15.216],[55.668,-16.182],[58.347,-15.852],[59.904,-15.101]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0.248,0.191],[0,0],[0.32,0.059],[0,0],[0.379,0.033],[0.829,0],[0.332,-0.051],[0.766,-0.14],[1.6,-1.09],[0.466,-0.484],[0.281,-0.343],[0.362,-0.888],[-0.194,-1.271],[-0.552,-1.425],[-0.84,-0.88],[-1.305,-0.56],[-1.121,-0.194],[-2.016,1.251],[-0.692,0.731],[0,0],[-0.518,0.766],[-0.265,2.059],[0.08,0.799],[0.17,0.673],[1.088,0.959]],"o":[[-0.219,-0.224],[0,0],[-0.309,-0.102],[0,0],[-0.358,-0.127],[-0.332,0],[-1.097,0.038],[-0.332,0.051],[-1.908,0.343],[-0.568,0.36],[-0.255,0.267],[-0.635,0.72],[-0.312,1.247],[0.159,1.52],[0.378,1.154],[1.07,0.931],[1.03,0.481],[2.334,0.433],[0.818,-0.588],[0,0],[0.654,-0.655],[1.137,-1.74],[0.08,-0.799],[0,-0.694],[-0.594,-1.32],[0,0]],"v":[[61.333,-16.144],[60.631,-16.767],[60.631,-16.767],[59.687,-17.009],[57.965,-17.632],[56.854,-17.873],[55.119,-17.873],[53.001,-17.771],[51.393,-17.504],[46.073,-15.33],[44.516,-14.059],[43.699,-13.144],[42.194,-10.715],[42.015,-6.901],[43.087,-2.464],[44.937,0.626],[48.522,2.876],[51.763,3.893],[58.526,2.622],[60.797,0.638],[61.014,0.41],[62.775,-1.726],[64.906,-7.499],[64.906,-9.901],[64.651,-11.961],[62.099,-15.419]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[13.122,-233.535],"ix":2},"a":{"a":0,"k":[53.435,-6.91],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"г 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-19]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-75.7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-152]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-238]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-312]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-264.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-178]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-102.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-43]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-6.3]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.349},"o":{"x":0.333,"y":0},"t":0,"s":[352.187,343.048,0],"to":[1.891,4.571,0],"ti":[-1.777,-5.066,0]},{"i":{"x":0.667,"y":0.524},"o":{"x":0.333,"y":0.165},"t":12.219,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.635},"o":{"x":0.333,"y":0.296},"t":43.318,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.654},"o":{"x":0.333,"y":0.317},"t":61.457,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.665},"o":{"x":0.333,"y":0.328},"t":77.014,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.675},"o":{"x":0.333,"y":0.338},"t":91.611,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.687},"o":{"x":0.333,"y":0.35},"t":107.316,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.711},"o":{"x":0.333,"y":0.372},"t":123.248,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.612},"t":141.721,"s":[249.738,269.12,0],"to":[47.386,-1.498,0],"ti":[-23.122,-55.885,0]},{"t":180,"s":[352.187,343.048,0]}],"ix":2},"a":{"a":0,"k":[12.187,-209.952,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.774,0.661],[-0.217,0.191],[0,0],[-0.544,0.374],[0,0],[-0.25,0.134],[-0.237,0.228],[0,0],[-0.306,0.305],[-0.038,-0.013],[-0.625,-1.093],[-1.11,-1.78],[-0.37,-0.585],[0,0],[0,0],[-0.12,-0.102],[-0.153,-0.038],[-0.154,0.034],[-0.123,0.099],[-0.059,0.118],[-0.007,0.132],[0.038,0.163],[0.011,0.042],[0.339,0.202],[0.35,0.298],[0.166,0.272],[0.923,2.016],[0.918,1.039],[0.465,0.172],[0.139,-0.031],[0.112,-0.087],[0,0],[0,0],[0.893,-0.776],[2.315,-1.372],[0.67,-0.508],[-0.078,-0.233],[-0.091,-0.182],[-0.025,0.009],[-0.256,0.144],[0,0],[-0.999,0.595]],"o":[[0.434,-0.356],[0,0],[0.492,-0.439],[0,0],[0.189,-0.211],[0.288,-0.16],[0,0],[1.455,-1.297],[0.306,-0.305],[0.038,0.013],[0.995,1.767],[1.11,1.78],[0,0],[0,0],[0.062,0.145],[0.12,0.102],[0.153,0.038],[0.154,-0.034],[0.102,-0.084],[0.059,-0.118],[-0.005,-0.167],[0.011,-0.042],[-0.253,-0.303],[-0.389,-0.244],[-0.216,-0.235],[-1.134,-1.906],[-0.482,-1.298],[-0.302,-0.393],[-0.139,-0.032],[-0.139,0.031],[0,0],[0,0],[-2.182,1.602],[-2.014,1.782],[-0.74,0.398],[-0.019,0.245],[0.044,0.198],[0.025,0.009],[0.286,-0.067],[0,0],[1.074,-0.447],[0.857,-0.55]],"v":[[66.73,9.614],[67.7,8.788],[67.7,8.788],[69.257,7.567],[69.665,7.237],[70.329,6.716],[71.12,6.131],[71.936,5.457],[74.488,3.168],[75.152,2.698],[76.134,4.351],[79.388,9.729],[81.621,13.276],[82.527,13.899],[82.616,13.975],[82.892,14.352],[83.308,14.566],[83.776,14.572],[84.198,14.369],[84.443,14.062],[84.543,13.683],[84.479,13.187],[84.479,13.06],[83.586,12.297],[82.476,11.483],[81.901,10.721],[78.814,4.834],[76.696,1.299],[75.522,0.435],[75.1,0.433],[74.718,0.613],[74.539,0.727],[71.183,3.207],[66.59,6.792],[60.083,11.534],[57.965,12.895],[58.054,13.619],[58.258,14.191],[58.335,14.191],[59.151,13.874],[61.167,12.996],[64.281,11.432]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.376,-212.872],"ix":2},"a":{"a":0,"k":[71.251,7.503],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":14.1,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"о 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-36]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-92]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-168]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-255]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-316]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-252.033]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-158.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-85]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[-26.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[-1.667]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.388},"o":{"x":0.333,"y":0},"t":0,"s":[364.694,375.765,0],"to":[20.936,49.727,0],"ti":[-50.154,2.352,0]},{"i":{"x":0.667,"y":0.627},"o":{"x":0.333,"y":0.287},"t":38.197,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.651},"o":{"x":0.333,"y":0.314},"t":57.4,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.662},"o":{"x":0.333,"y":0.326},"t":73.326,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.672},"o":{"x":0.333,"y":0.335},"t":88.023,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.683},"o":{"x":0.333,"y":0.346},"t":103.619,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.702},"o":{"x":0.333,"y":0.364},"t":119.168,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.821},"o":{"x":0.333,"y":0.464},"t":136.605,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.729},"o":{"x":0.333,"y":0.394},"t":166.215,"s":[357.687,357.5,0],"to":[1.192,3.398,0],"ti":[-1.25,-3.242,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.655},"t":170.758,"s":[361.349,367.462,0],"to":[1.091,2.829,0],"ti":[-1.139,-2.706,0]},{"t":180,"s":[364.694,375.765,0]}],"ix":2},"a":{"a":0,"k":[24.694,-177.235,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.009,-0.022],[-0.085,-0.57],[0,0],[0,-0.559],[0.131,-0.487],[0.244,-0.475],[0.625,-0.979],[1.573,-0.642],[1.61,0.367],[1.07,1.253],[0.594,0.749],[0.236,0.66],[0.01,0.109],[-0.453,1.658],[-0.217,0.42],[-1.474,0.538],[-0.182,0.035],[-1.451,-0.003],[-1.698,-0.89],[-0.675,-0.597],[-0.222,-0.538],[0,-0.024]],"o":[[0.153,0.556],[0,0],[0.077,0.458],[-0.047,0.503],[-0.19,0.499],[-0.791,1.284],[-1.226,1.172],[-1.51,0.666],[-1.61,-0.367],[-0.697,-0.656],[-0.456,-0.534],[-0.04,-0.102],[-0.327,-1.687],[0.625,-1.271],[1.038,-1.173],[0.175,-0.058],[1.416,-0.316],[1.899,0.271],[0.8,0.416],[0.449,0.372],[0.009,0.022],[0,0.024]],"v":[[91.688,33.377],[92.045,35.068],[92.007,35.068],[92.084,36.593],[91.816,38.081],[91.165,39.543],[89.098,42.938],[84.862,45.684],[80.057,46.145],[75.93,43.65],[73.991,41.539],[72.944,39.734],[72.868,39.416],[73.059,34.33],[74.335,31.788],[78.163,29.181],[78.699,29.041],[83.012,28.571],[88.447,30.325],[90.667,31.851],[91.688,33.237],[91.702,33.307]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.089,0.267],[0.14,0.282],[0,0],[0.255,0.224],[0,0],[0.322,0.21],[0.74,0.369],[0.293,0.114],[0,0],[1.921,-0.226],[0.641,-0.233],[0.408,-0.161],[0.731,-0.623],[0.411,-1.24],[0.169,-1.519],[-0.347,-1.171],[-0.9,-1.103],[-0.905,-0.688],[-2.366,0.201],[-0.953,0.324],[0,0],[-0.815,0.439],[-1.201,1.703],[-0.303,0.741],[-0.174,0.67],[0.53,1.359]],"o":[[-0.089,-0.302],[0,0],[-0.22,-0.258],[0,0],[-0.263,-0.28],[-0.255,-0.178],[-0.995,-0.47],[0,0],[-1.848,-0.57],[-0.68,0.062],[-0.357,0.119],[-0.898,0.344],[-0.884,0.964],[-0.576,1.416],[-0.195,1.206],[0.502,1.331],[0.695,0.898],[1.863,1.467],[0.998,-0.133],[0,0],[0.883,-0.28],[1.823,-1.017],[0.452,-0.662],[0.318,-0.615],[0.085,-1.456],[-0.14,-0.394]],"v":[[93.385,33.021],[93.041,32.143],[93.079,32.143],[92.364,31.419],[91.088,30.071],[90.208,29.334],[88.677,28.52],[86.75,27.63],[85.206,27.109],[79.49,26.588],[77.499,27.033],[76.351,27.452],[73.888,28.914],[71.923,32.258],[70.801,36.682],[71.03,40.293],[73.148,43.967],[75.56,46.358],[82.144,48.328],[85.079,47.642],[85.372,47.54],[87.924,46.459],[92.517,42.327],[93.653,40.217],[94.393,38.284],[93.717,34.012]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.74,-182.76],"ix":2},"a":{"a":0,"k":[82.553,37.427],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":". 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-12.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-53.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-112.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-191]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-273.625]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-298.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-128.833]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[-56.025]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[1.583]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[3.792]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.38},"o":{"x":0.333,"y":0},"t":0,"s":[378.575,403.33,0],"to":[19.845,32.534,0],"ti":[-39.989,1.875,0]},{"i":{"x":0.667,"y":0.617},"o":{"x":0.333,"y":0.276},"t":33.223,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.648},"o":{"x":0.333,"y":0.31},"t":53.693,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.66},"o":{"x":0.333,"y":0.324},"t":70.025,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.67},"o":{"x":0.333,"y":0.333},"t":84.855,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.68},"o":{"x":0.333,"y":0.344},"t":100.398,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.696},"o":{"x":0.333,"y":0.359},"t":115.682,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.765},"o":{"x":0.333,"y":0.418},"t":132.418,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.636},"t":157.477,"s":[357.687,357.5,0],"to":[6.106,17.408,0],"ti":[-7.951,-13.035,0]},{"t":180,"s":[378.575,403.33,0]}],"ix":2},"a":{"a":0,"k":[38.575,-149.67,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.101,-0.224],[-1.064,0.64],[-0.299,1.065],[0.616,1.025],[1.112,0.243],[1.064,-0.64],[0.319,-1.077],[-0.593,-0.986],[0,0]],"o":[[1.101,0.224],[1.103,-0.663],[0.298,-1.065],[-0.617,-1.026],[-1.113,-0.244],[-1.064,0.64],[-0.319,1.077],[0,0],[0.64,1.064]],"v":[[45.401,-150.891],[48.649,-151.515],[50.753,-154.108],[50.277,-157.244],[47.684,-159.147],[44.418,-158.552],[42.344,-155.977],[42.755,-152.883],[42.79,-152.824]],"c":true},"ix":2},"nm":".","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4,5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":".","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"i 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-17.05]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-51.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-115.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-189]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-271.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-249.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-158.625]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-73.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[2.075]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[34.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[12.825]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.366},"o":{"x":0.333,"y":0},"t":0,"s":[409.733,437.591,0],"to":[15.149,10.273,0],"ti":[-22.208,1.041,0]},{"i":{"x":0.667,"y":0.591},"o":{"x":0.333,"y":0.245},"t":24.311,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.641},"o":{"x":0.333,"y":0.303},"t":47.789,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.657},"o":{"x":0.333,"y":0.32},"t":64.926,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.33},"t":80.041,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.677},"o":{"x":0.333,"y":0.34},"t":95.58,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.689},"o":{"x":0.333,"y":0.352},"t":110.562,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.73},"o":{"x":0.333,"y":0.388},"t":126.498,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.622},"t":148.143,"s":[357.687,357.5,0],"to":[12.882,36.727,0],"ti":[-23.058,-15.636,0]},{"t":180,"s":[409.733,437.591,0]}],"ix":2},"a":{"a":0,"k":[69.733,-115.409,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.268,0.42],[0.177,0.156],[0,0],[0.6,0.89],[0.553,0.488],[0.717,0.298],[0.227,-0.15],[0.075,-0.105],[0.024,-0.127],[-0.004,-0.16],[-0.217,-0.195],[0,0],[3.403,-2.314],[0.676,-0.496],[0,0],[1.013,-0.544],[0.064,0.102],[0.217,0.267],[0.251,0.158],[0.173,0.024],[0.169,-0.047],[0.115,-0.116],[0.038,-0.158],[-0.211,-0.273],[-0.094,-0.103],[-0.399,-0.333],[-0.303,-0.386],[-0.242,-0.216],[-0.31,0.001],[-0.232,0.105],[-0.055,0.169],[0,0.09],[0.038,0.082],[0.081,0.105],[0.118,0.062],[0.179,0.14],[0,0],[-0.56,0.263],[-0.396,0.267],[-0.851,0.687],[-2.475,1.755],[-0.702,0.585],[-0.44,0.244],[-0.18,-0.178],[-0.14,-0.076],[-0.242,0],[-0.256,0.173]],"o":[[-0.128,-0.198],[0,0],[-0.293,-0.28],[-0.458,-0.578],[-0.604,-0.487],[-0.272,-0.001],[-0.112,0.064],[-0.075,0.105],[-0.055,0.151],[0.147,0.252],[0.332,0.381],[-0.553,0.407],[-2.922,1.882],[0,0],[-0.787,0.837],[-0.115,0.051],[-0.064,-0.102],[-0.188,-0.229],[-0.149,-0.091],[-0.173,-0.024],[-0.158,0.041],[-0.115,0.116],[0.066,0.338],[0.076,0.117],[0.26,0.449],[0.384,0.307],[0.549,0.661],[0.255,0.175],[0.254,0.013],[0.151,-0.094],[0.038,-0.082],[0,-0.09],[-0.03,-0.129],[-0.081,-0.105],[-0.268,-0.165],[-0.179,-0.14],[0.501,-0.363],[0.855,-0.534],[0.374,-0.28],[1.429,-1.068],[1.314,-0.966],[0.365,-0.347],[0.253,0.002],[0.574,0.381],[0.842,0.687],[0.301,-0.071],[0.332,-0.216]],"v":[[-64.186,-29.928],[-64.645,-30.462],[-64.645,-30.399],[-66.01,-32.102],[-67.529,-33.704],[-69.519,-34.887],[-70.285,-34.658],[-70.569,-34.4],[-70.719,-34.048],[-70.795,-33.577],[-70.247,-32.903],[-69.787,-32.242],[-75.72,-28.161],[-81.105,-24.576],[-82.534,-23.419],[-85.252,-21.334],[-85.532,-21.448],[-85.966,-21.995],[-86.63,-22.58],[-87.119,-22.754],[-87.638,-22.719],[-88.055,-22.478],[-88.289,-22.058],[-87.867,-21.13],[-87.612,-20.8],[-86.617,-19.617],[-85.583,-18.575],[-84.397,-17.303],[-83.529,-17.036],[-82.789,-17.176],[-82.47,-17.583],[-82.413,-17.844],[-82.47,-18.104],[-82.64,-18.461],[-82.942,-18.715],[-83.644,-19.172],[-83.886,-19.477],[-82.292,-20.418],[-80.429,-21.613],[-78.591,-23.063],[-72.735,-27.297],[-69.698,-29.623],[-68.486,-30.513],[-67.809,-30.233],[-66.75,-29.547],[-65.13,-28.619],[-64.288,-28.987]],"c":true},"ix":2},"nm":"Path 13","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[76.851,-125.336],"ix":2},"a":{"a":0,"k":[-76.149,-25.961],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-21.1,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"m 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-14.55]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-50.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-109.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-189]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-261.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-219.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-131.525]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-46.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[27.825]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[44.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[17.075]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.36},"o":{"x":0.333,"y":0},"t":0,"s":[426.753,446.409,0],"to":[11.305,4.242,0],"ti":[-14.45,0.678,0]},{"i":{"x":0.667,"y":0.571},"o":{"x":0.333,"y":0.222},"t":19.727,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.638},"o":{"x":0.333,"y":0.3},"t":45.221,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.655},"o":{"x":0.333,"y":0.319},"t":62.775,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.666},"o":{"x":0.333,"y":0.329},"t":78.043,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.675},"o":{"x":0.333,"y":0.339},"t":93.607,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.687},"o":{"x":0.333,"y":0.35},"t":108.498,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.721},"o":{"x":0.333,"y":0.38},"t":124.172,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.617},"t":144.895,"s":[357.687,357.5,0],"to":[15.838,45.157,0],"ti":[-32.516,-12.201,0]},{"t":180,"s":[426.753,446.409,0]}],"ix":2},"a":{"a":0,"k":[86.753,-106.591,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.145,0.171],[0.228,0.057],[0,0],[0.458,-0.147],[1.276,-0.407],[0,0],[1.3,-0.603],[0.868,-0.369],[1.391,-0.776],[0,0],[0.026,0.038],[-0.179,0.356],[-0.178,0.53],[-0.818,2.041],[-0.727,2.15],[-0.306,1.271],[-0.048,0.62],[0.184,0.263],[0.084,0.035],[0.091,-0.006],[0.284,-0.236],[0.504,-0.457],[1.276,-1.106],[0.74,-0.687],[0.408,-0.445],[0.819,-0.783],[0.513,-0.653],[0,-0.122],[-0.056,-0.108],[-0.171,-0.161],[-0.166,0],[-0.078,0.024],[-0.058,0.057],[-0.324,0.319],[-0.581,0.729],[-2.306,1.932],[-1.471,1.679],[-0.127,0.138],[0,-0.127],[1.367,-2.829],[0.939,-2.515],[0.78,-1.212],[0.155,-0.406],[-0.018,-0.099],[-0.068,-0.074],[-0.408,0.178],[-0.824,0.54],[-1.876,0.928],[-0.396,0.216],[-1.591,0.615],[-2.144,0.661],[-0.383,0.14],[0,0],[0.957,-0.865],[0.931,-0.776],[1.824,-1.867],[1.124,-1.695],[0,-0.123],[-0.084,-0.09],[-0.159,-0.232],[-0.127,-0.064],[-0.142,0.004],[-0.219,0.181],[-0.054,0.049],[-0.676,0.776],[-2.374,2.16],[-1.812,1.695],[-0.357,0.432],[-0.076,0.195],[0.026,0.208]],"o":[[-0.164,-0.167],[0,0],[-0.481,0.005],[-0.6,0.114],[0,0],[-1.368,0.43],[-0.702,0.28],[-1.506,0.776],[0,0],[-0.472,0.292],[-0.026,-0.038],[0.263,-0.494],[1.135,-1.885],[1.081,-1.996],[0.421,-1.424],[0.172,-0.598],[0.044,-0.317],[-0.059,-0.069],[-0.084,-0.035],[-0.361,0.081],[-0.558,0.39],[-0.663,0.598],[-3.279,2.873],[-0.74,0.687],[-0.736,0.861],[-0.6,0.574],[-0.056,0.108],[0,0.122],[0.09,0.216],[0.23,0.242],[0.08,0.014],[0.078,-0.024],[0.356,-0.283],[0.676,-0.643],[1.939,-2.298],[1.649,-1.506],[0.111,-0.15],[-0.077,0.292],[-1.038,2.964],[-1.278,2.362],[-0.561,1.327],[-0.252,0.354],[-0.038,0.093],[0.018,0.099],[0.191,0.165],[0.876,-0.451],[0.97,-0.598],[1.187,-0.534],[1.52,-0.774],[0.791,-0.343],[0.919,-0.229],[0,0],[-0.013,0.051],[-0.957,0.865],[-2.026,1.647],[-1.471,1.407],[-0.084,0.09],[0,0.123],[0.19,0.208],[0.081,0.117],[0.127,0.064],[0.285,-0.008],[0.064,-0.035],[0.293,-0.305],[2.105,-2.422],[1.497,-1.339],[1.48,-1.386],[0.159,-0.137],[0.076,-0.195],[-0.039,-0.22]],"v":[[-47.611,-12.154],[-48.211,-12.497],[-48.16,-12.434],[-49.576,-12.205],[-52.498,-11.43],[-56.875,-10.158],[-60.881,-8.607],[-63.242,-7.641],[-67.58,-5.314],[-68.69,-4.653],[-69.468,-4.259],[-69.239,-4.844],[-68.575,-6.382],[-65.64,-12.281],[-62.923,-18.511],[-61.838,-22.554],[-61.506,-24.385],[-61.723,-25.288],[-61.941,-25.447],[-62.208,-25.491],[-63.19,-25.008],[-64.785,-23.737],[-67.669,-21.194],[-73.704,-15.778],[-75.414,-14.074],[-77.749,-11.608],[-79.421,-9.764],[-79.506,-9.414],[-79.421,-9.065],[-79.025,-8.493],[-78.438,-8.124],[-78.198,-8.14],[-77.992,-8.264],[-76.971,-9.166],[-75.082,-11.226],[-68.703,-17.583],[-64.02,-22.364],[-63.663,-22.796],[-63.828,-22.16],[-67.439,-13.464],[-70.77,-6.141],[-72.786,-2.326],[-73.398,-1.182],[-73.428,-0.888],[-73.296,-0.623],[-72.377,-0.623],[-69.825,-2.11],[-65.551,-4.399],[-63.165,-5.53],[-58.495,-7.615],[-54.106,-9.128],[-52.141,-9.688],[-51.911,-9.751],[-53.34,-8.365],[-56.173,-5.912],[-61.953,-0.635],[-65.857,4.031],[-65.988,4.361],[-65.857,4.692],[-65.334,5.353],[-65.017,5.629],[-64.607,5.722],[-63.828,5.429],[-63.65,5.302],[-62.208,3.726],[-55.484,-3.153],[-50.52,-7.704],[-47.764,-10.438],[-47.407,-10.943],[-47.33,-11.557]],"c":true},"ix":2},"nm":"Path 12","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.837,-117.385],"ix":2},"a":{"a":0,"k":[-63.413,-9.885],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-24.4,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"p 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-13.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-51.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-110.95]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-189]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-253.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-195.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-108.125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[-22.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[49.225]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[49.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[13.175]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.351},"o":{"x":0.333,"y":0},"t":0,"s":[445.578,451.094,0],"to":[6.179,0.838,0],"ti":[-6.939,0.325,0]},{"i":{"x":0.667,"y":0.537},"o":{"x":0.333,"y":0.182},"t":13.834,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.634},"o":{"x":0.333,"y":0.295},"t":42.521,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.654},"o":{"x":0.333,"y":0.317},"t":60.566,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.664},"o":{"x":0.333,"y":0.328},"t":76.01,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.674},"o":{"x":0.333,"y":0.337},"t":91.615,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.685},"o":{"x":0.333,"y":0.348},"t":106.43,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.714},"o":{"x":0.333,"y":0.374},"t":121.873,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.612},"t":141.826,"s":[357.687,357.5,0],"to":[18.701,53.317,0],"ti":[-43.696,-5.927,0]},{"t":180,"s":[445.578,451.094,0]}],"ix":2},"a":{"a":0,"k":[105.578,-101.906,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.12,-0.087],[-0.569,-0.342],[0,0],[-0.357,-0.509],[-0.472,-1.653],[0.23,-0.892],[0,0],[2.118,-0.229],[1.455,0.332],[1.376,0.801],[0.217,0.114],[-0.293,0.394],[-0.523,0.852],[-0.274,1.11]],"o":[[0.5,0.436],[0,0],[0.893,0.725],[2.539,1.742],[0.095,0.916],[0,0],[-0.357,0.547],[-1.491,0.079],[-1.558,-0.336],[-0.625,-0.394],[0.549,-0.801],[1.404,-1.983],[0.572,-0.99],[0.147,0.013]],"v":[[-44.587,-4.844],[-42.979,-3.674],[-42.877,-3.801],[-40.9,-2.021],[-36.37,3.064],[-36.574,5.798],[-36.574,5.887],[-40.3,7.044],[-44.74,6.662],[-49.168,4.946],[-50.444,4.183],[-49.168,2.403],[-46.271,-1.83],[-44.995,-4.996]],"c":true},"ix":2},"nm":"Path 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.009,0.02],[0.138,-0.036],[0,0],[0.221,0.123],[0,0],[0.047,-0.088],[-0.003,-0.111],[-0.029,-0.033],[-0.039,-0.019],[-0.025,-0.077],[0.024,-0.078],[0.434,-0.915],[1.448,-1.765],[1.276,-1.869],[0.741,-1.417],[0.073,-0.366],[-0.123,-0.253],[-0.076,-0.055],[-0.095,0.034],[-0.136,-0.012],[-0.117,-0.076],[-0.166,0.165],[-0.774,1.302],[-0.51,0.699],[-0.14,0.165],[-0.306,-0.178],[-1.011,-0.416],[-0.972,-0.321],[-1.049,-0.096],[-0.843,0.148],[-0.985,0.81],[-0.165,0.238],[-0.066,0.193],[0.073,0.866],[1.806,1.465],[1.476,0.939],[0,0],[0,0],[0,0],[0,0],[0,0.013],[0.007,0.012],[0,0.022]],"o":[[-0.138,-0.036],[0,0],[-0.248,0.049],[-0.204,0],[-0.093,0.035],[-0.053,0.097],[0.013,0.041],[0.029,0.033],[0.065,0.049],[0.025,0.077],[-0.051,0.153],[-1.099,1.999],[-1.442,1.767],[-0.958,1.282],[-0.165,0.335],[-0.057,0.275],[0.05,0.079],[0.095,0.034],[0.136,-0.012],[0.138,-0.018],[0.077,0.051],[0.976,-1.16],[0.447,-0.712],[0.37,-0.509],[0.6,0.369],[0.935,0.566],[0.932,0.424],[0.993,0.351],[0.856,-0.005],[1.257,-0.224],[0.208,-0.201],[0.112,-0.17],[0.324,-0.806],[-0.282,-2.303],[-1.372,-1.085],[0,0],[0,0],[0,0],[-0.153,-0.089],[0.007,-0.012],[0,-0.013],[0.009,-0.02],[0,-0.022]],"v":[[-44.804,-7.412],[-45.225,-7.412],[-45.225,-7.412],[-45.952,-7.526],[-46.322,-7.526],[-46.539,-7.336],[-46.616,-7.018],[-46.553,-6.905],[-46.45,-6.827],[-46.311,-6.633],[-46.31,-6.395],[-47.037,-4.78],[-50.865,0.878],[-54.935,6.319],[-57.487,10.375],[-57.844,11.43],[-57.742,12.244],[-57.551,12.447],[-57.257,12.447],[-56.849,12.447],[-56.453,12.536],[-56.083,12.358],[-53.455,8.659],[-52.026,6.548],[-51.273,5.531],[-49.921,6.332],[-46.999,7.807],[-44.14,8.926],[-41.065,9.599],[-38.514,9.37],[-35.094,7.794],[-34.533,7.133],[-34.265,6.586],[-33.882,4.043],[-37.135,-1.83],[-41.41,-4.869],[-43.056,-5.937],[-44.077,-6.598],[-44.651,-7.056],[-44.804,-7.208],[-44.794,-7.247],[-44.804,-7.285],[-44.79,-7.348]],"c":true},"ix":2},"nm":"Path 11","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[114.022,-115.959],"ix":2},"a":{"a":0,"k":[-45.866,2.514],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-31.8,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"o 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-15.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-59.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-118.45]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-189]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-238.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-163.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-71.358]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[12.833]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[73.825]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[51.417]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[9.008]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.388},"o":{"x":0.333,"y":0},"t":0,"s":[477.53,450.704,0],"to":[48.401,-7.102,0],"ti":[0,51.593,0]},{"i":{"x":0.667,"y":0.627},"o":{"x":0.333,"y":0.287},"t":37.785,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.651},"o":{"x":0.333,"y":0.314},"t":56.832,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.662},"o":{"x":0.333,"y":0.325},"t":72.625,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.672},"o":{"x":0.333,"y":0.335},"t":88.332,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.682},"o":{"x":0.333,"y":0.345},"t":103.057,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.705},"o":{"x":0.333,"y":0.366},"t":118.178,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.848},"o":{"x":0.333,"y":0.486},"t":137.119,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.653},"t":169.109,"s":[465.239,451.876,0],"to":[4.234,-0.199,0],"ti":[-3.958,0.581,0]},{"t":180,"s":[477.53,450.704,0]}],"ix":2},"a":{"a":0,"k":[137.53,-102.296,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.032,-0.034],[-0.505,-0.274],[0,0],[-0.312,-0.402],[-0.332,-0.648],[-0.396,-1.093],[0.445,-1.635],[1.214,-1.108],[1.618,-0.173],[0.958,-0.018],[0.671,0.214],[0.091,0.059],[1.055,1.362],[0.204,0.432],[-0.446,1.481],[-0.085,0.168],[-0.888,1.143],[-1.738,0.801],[-0.881,0.172],[-0.57,-0.139]],"o":[[0.532,0.217],[0,0],[0.376,0.343],[0.191,0.292],[0.561,1.36],[0.2,1.682],[-0.454,1.577],[-1.306,0.968],[-0.946,0.151],[-0.704,0.038],[-0.103,-0.034],[-1.548,-0.763],[-0.663,-1.271],[-0.304,-1.516],[0.059,-0.179],[0.604,-1.315],[1.36,-1.344],[0.814,-0.377],[0.57,-0.139],[0.044,0.016]],"v":[[-20.242,7.285],[-18.685,8.023],[-17.409,8.9],[-16.376,10.019],[-15.597,11.43],[-14.156,15.117],[-14.526,20.139],[-17.077,24.246],[-21.543,25.988],[-24.401,26.242],[-26.481,25.975],[-26.775,25.835],[-30.73,22.606],[-32.006,20.063],[-31.789,15.499],[-31.572,14.977],[-29.327,11.278],[-24.644,8.036],[-22.092,7.209],[-20.357,7.209]],"c":true},"ix":2},"nm":"Path 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0.308,0.068],[0,0],[0.753,-0.229],[0,0],[0.364,-0.122],[0.74,-0.369],[0.268,-0.153],[0,0],[0.992,-1.655],[0.206,-0.652],[0.115,-0.432],[-0.053,-0.957],[-0.731,-1.083],[-1.112,-1.055],[-1.144,-0.427],[-2.489,0.642],[-1.274,1.996],[-0.328,0.961],[0,0.089],[-0.148,0.909],[0.623,1.984],[0.401,0.691],[0.441,0.542],[1.41,0.398]],"o":[[-0.295,-0.11],[0,0],[-0.102,0],[0,0],[-0.382,0.038],[-0.293,0.127],[-0.982,0.496],[0,0],[-1.574,1.12],[-0.361,0.581],[-0.128,0.343],[-0.273,0.919],[0.245,1.282],[0.785,1.315],[0.837,0.886],[2.474,0.7],[2.3,-0.585],[0.52,-0.873],[0.038,-0.102],[0.31,-0.867],[0.287,-2.059],[-0.261,-0.755],[-0.296,-0.632],[-1.112,-0.95],[0,0]],"v":[[-19.476,5.747],[-20.382,5.48],[-20.28,5.302],[-21.48,5.62],[-23.304,5.785],[-24.427,6.027],[-25.996,6.751],[-27.885,7.73],[-29.161,8.646],[-33.052,12.854],[-33.907,14.71],[-34.265,15.88],[-34.596,18.715],[-33.116,22.301],[-30.258,25.873],[-27.247,27.869],[-19.668,27.958],[-14.104,23.941],[-12.829,21.182],[-12.726,20.889],[-12.037,18.219],[-12.548,12.079],[-13.543,9.904],[-14.653,8.137],[-18.481,6.09]],"c":true},"ix":2},"nm":"Path 9","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.258,-114.043],"ix":2},"a":{"a":0,"k":[-23.256,16.86],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-27.4,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"s 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-18.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-60.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-120.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-195]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-220.125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-135.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-44.208]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[38.833]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[89.025]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[49.417]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[11.008]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.381},"o":{"x":0.333,"y":0},"t":0,"s":[501.756,444.14,0],"to":[33.242,-13.84,0],"ti":[0,42.239,0]},{"i":{"x":0.667,"y":0.618},"o":{"x":0.333,"y":0.277},"t":33.738,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.648},"o":{"x":0.333,"y":0.311},"t":53.807,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.66},"o":{"x":0.333,"y":0.323},"t":69.932,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.67},"o":{"x":0.333,"y":0.334},"t":85.752,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.68},"o":{"x":0.333,"y":0.343},"t":100.434,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.7},"o":{"x":0.333,"y":0.361},"t":115.35,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.783},"o":{"x":0.333,"y":0.433},"t":133.662,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.641},"t":160.703,"s":[465.239,451.876,0],"to":[13.622,-0.639,0],"ti":[-10.683,4.448,0]},{"t":180,"s":[501.756,444.14,0]}],"ix":2},"a":{"a":0,"k":[161.756,-108.86,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.793,-0.088],[0,0],[1.45,-1.007],[0.367,-1.02],[0.032,-0.283],[-0.026,-0.207],[-0.562,-0.888],[-1.005,-0.657],[-1.908,-0.636],[0,0],[-0.339,-0.403],[-0.235,-0.717],[0.056,-0.657],[0.384,-0.535],[0.864,-0.123],[1.61,0.108],[1.256,0.757],[0.345,0.624],[0.054,0.644],[-0.39,0.556],[0.217,0.14],[0.638,-0.153],[0.075,-0.05],[0.09,0.001],[0.051,-0.114],[0.242,-0.903],[-0.017,-0.551],[-0.353,-0.585],[-0.585,-0.354],[-1.898,-0.13],[-1.649,0.197],[-1.12,0.685],[-0.25,0.489],[-0.132,0.569],[0,0],[0.446,1.095],[1.195,0.806],[1.224,0.251],[1.334,0.68],[0.681,0.777],[0.09,0.791],[-0.346,0.418],[-0.564,0.281],[-0.898,0.099],[-0.845,-0.124],[-0.735,-0.195],[-0.318,-0.39],[-0.187,-0.494],[0.012,-0.58],[0.013,-0.076],[-0.459,0],[-0.126,0.015],[-0.106,0.07],[-0.121,0.353],[0,0.442],[0.201,0.394],[0.497,0.589],[0.588,0.375],[1.044,0.156]],"o":[[-0.793,-0.088],[0,0],[-1.766,0.064],[-0.88,0.637],[-0.104,0.265],[-0.026,0.207],[0.11,1.044],[0.634,1.018],[1.712,1.054],[0,0],[0.497,0.179],[0.521,0.547],[0.24,0.614],[-0.059,0.655],[-0.619,0.612],[-1.571,0.369],[-1.466,-0.078],[-0.601,-0.386],[-0.34,-0.551],[0.149,-0.662],[0.089,-0.216],[-0.217,-0.14],[-0.034,0.084],[-0.075,0.05],[-0.115,-0.025],[-0.051,0.114],[-0.16,0.527],[0.041,0.681],[0.353,0.585],[1.633,0.973],[1.649,0.197],[1.311,-0.092],[0.424,-0.35],[0.3,-0.501],[0,0],[0.102,-1.178],[-0.461,-1.363],[-0.963,-0.793],[-1.419,-0.48],[-0.942,-0.43],[-0.525,-0.6],[-0.008,-0.542],[0.309,-0.547],[0.785,-0.446],[0.851,-0.073],[0.759,0.05],[0.448,0.231],[0.337,0.407],[0.164,0.557],[0,0.89],[-0.013,0.076],[0.12,0.043],[0.126,-0.015],[0.324,-0.188],[0.201,-0.394],[0,-0.442],[-0.263,-0.723],[-0.416,-0.558],[-0.933,-0.492],[0,0]],"v":[[2.253,9.955],[-0.133,9.955],[-0.031,9.879],[-4.956,11.519],[-6.87,14.062],[-7.074,14.888],[-7.074,15.511],[-6.053,18.448],[-3.565,20.991],[1.883,23.534],[4.627,24.551],[5.902,25.441],[7.051,27.361],[7.332,29.293],[6.655,31.111],[4.371,32.243],[-0.426,32.637],[-4.573,31.366],[-6.015,29.827],[-6.615,28.009],[-5.798,26.166],[-5.798,25.644],[-7.074,25.644],[-7.241,25.849],[-7.495,25.924],[-7.725,26.102],[-8.184,27.628],[-8.401,29.255],[-7.801,31.182],[-6.372,32.612],[-1,34.29],[3.963,34.29],[7.663,33.107],[8.684,31.836],[9.335,30.221],[9.411,29.662],[8.888,26.204],[6.336,22.86],[3.006,21.271],[-1.128,19.529],[-3.591,17.698],[-4.535,15.562],[-4.012,14.075],[-2.672,12.803],[-0.12,11.977],[2.432,12.053],[4.678,12.422],[5.839,13.363],[6.63,14.723],[6.859,16.439],[6.859,17.8],[7.536,17.952],[7.91,17.994],[8.263,17.863],[8.952,17.024],[9.257,15.753],[8.952,14.482],[7.804,12.498],[6.285,11.087],[3.3,10.108]],"c":true},"ix":2},"nm":"Path 7","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[155.796,-120.481],"ix":2},"a":{"a":0,"k":[0.518,22.158],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-29,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":"s 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-16.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-51.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-115.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-187]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-190.625]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-100.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[-8.942]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[77.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[103.075]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[51.583]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[16.692]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.374},"o":{"x":0.333,"y":0},"t":0,"s":[522.312,431.895,0],"to":[20.194,-16.562,0],"ti":[0,32.517,0]},{"i":{"x":0.667,"y":0.608},"o":{"x":0.333,"y":0.265},"t":29.49,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.645},"o":{"x":0.333,"y":0.307},"t":50.824,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.659},"o":{"x":0.333,"y":0.322},"t":67.326,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.669},"o":{"x":0.333,"y":0.332},"t":83.285,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.678},"o":{"x":0.333,"y":0.341},"t":97.951,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.696},"o":{"x":0.333,"y":0.357},"t":112.705,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.755},"o":{"x":0.333,"y":0.409},"t":130.518,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.633},"t":155.004,"s":[465.239,451.876,0],"to":[23.379,-1.096,0],"ti":[-14.468,11.866,0]},{"t":180,"s":[522.312,431.895,0]}],"ix":2},"a":{"a":0,"k":[182.312,-121.105,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.767,-0.236],[0,0],[1.205,-1.339],[0.159,-1.077],[-0.032,-0.279],[-0.062,-0.203],[-0.725,-0.761],[-1.109,-0.45],[-1.993,-0.257],[-0.447,-0.089],[-0.403,-0.337],[-0.38,-0.657],[-0.064,-0.65],[0.279,-0.595],[0.824,-0.297],[1.597,-0.201],[1.377,0.527],[0.448,0.566],[0.171,0.626],[-0.282,0.611],[0.255,0.153],[0.6,-0.267],[0.065,-0.062],[0.089,-0.01],[0,-0.136],[0.02,-0.532],[-0.117,-0.534],[-0.46,-0.509],[-0.644,-0.24],[-1.886,0.227],[-1.582,0.501],[-0.97,0.884],[-0.081,0.506],[-0.022,0.582],[0,0],[0.647,0.994],[1.307,0.573],[1.252,0.019],[1.439,0.415],[0.824,0.611],[0.22,0.758],[-0.248,0.477],[-0.497,0.377],[-0.873,0.259],[-0.863,0.037],[-0.761,-0.063],[-0.368,-0.324],[-0.275,-0.449],[-0.094,-0.572],[0,-0.064],[-0.459,0.064],[-0.12,0.04],[-0.088,0.09],[-0.059,0.365],[0.063,0.424],[0.282,0.374],[0.599,0.486],[0.653,0.249],[1.054,-0.044]],"o":[[-0.801,0.051],[0,0],[-1.754,0.425],[-0.747,0.794],[-0.032,0.279],[0.023,0.211],[0.307,1.004],[0.816,0.873],[1.881,0.706],[1.467,0.242],[0.522,0.07],[0.613,0.45],[0.347,0.554],[0.079,0.652],[-0.495,0.72],[-1.475,0.642],[-1.463,0.185],[-0.672,-0.267],[-0.441,-0.477],[0.012,-0.672],[0.077,-0.242],[-0.255,-0.153],[-0.013,0.088],[-0.065,0.062],[-0.128,0.017],[-0.082,0.526],[-0.058,0.544],[0.172,0.663],[0.46,0.509],[1.789,0.637],[1.656,-0.116],[1.269,-0.344],[0.273,-0.434],[0.198,-0.548],[0,0],[-0.125,-1.179],[-0.697,-1.242],[-1.104,-0.591],[-1.484,-0.203],[-1.002,-0.227],[-0.612,-0.501],[-0.108,-0.527],[0.211,-0.586],[0.701,-0.58],[0.833,-0.225],[0.757,-0.105],[0.472,0.136],[0.409,0.333],[0.27,0.514],[0.179,0.865],[0,0.064],[0.125,0.019],[0.12,-0.04],[0.279,-0.243],[0.105,-0.415],[-0.078,-0.461],[-0.388,-0.666],[-0.52,-0.466],[-1.007,-0.313],[0,0]],"v":[[22.477,10.311],[20.117,10.744],[20.219,10.667],[15.676,13.375],[14.286,16.249],[14.286,17.088],[14.413,17.711],[15.983,20.393],[18.904,22.402],[24.736,23.852],[27.619,24.335],[29.036,24.958],[30.541,26.636],[31.166,28.467],[30.86,30.374],[28.831,31.938],[24.2,33.209],[19.874,32.688],[18.164,31.416],[17.233,29.738],[17.68,27.793],[17.603,27.272],[16.327,27.462],[16.207,27.694],[15.97,27.806],[15.778,28.035],[15.625,29.624],[15.715,31.251],[16.676,33.035],[18.356,34.175],[23.945,34.798],[28.819,33.87],[32.225,32.001],[32.761,30.577],[33.093,28.874],[33.093,28.314],[31.919,25.009],[28.831,22.212],[25.246,21.283],[20.857,20.355],[18.088,19.084],[16.812,17.151],[17.029,15.6],[18.113,14.126],[20.499,12.854],[23.051,12.46],[25.335,12.396],[26.611,13.096],[27.645,14.278],[28.193,15.918],[28.474,17.253],[29.176,17.253],[29.548,17.222],[29.865,17.024],[30.388,16.083],[30.452,14.812],[29.903,13.541],[28.41,11.799],[26.637,10.718],[23.523,10.311]],"c":true},"ix":2},"nm":"Path 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[174.997,-131.71],"ix":2},"a":{"a":0,"k":[23.677,22.595],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-32.9,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"i 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-14.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-51]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-110.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-182]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-165.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-72.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[16.183]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[102.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[111.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[56.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[16.967]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.368},"o":{"x":0.333,"y":0},"t":0,"s":[535.417,418.124,0],"to":[11.77,-15.872,0],"ti":[0,24.58,0]},{"i":{"x":0.667,"y":0.596},"o":{"x":0.333,"y":0.252},"t":25.732,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.642},"o":{"x":0.333,"y":0.304},"t":48.379,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.657},"o":{"x":0.333,"y":0.32},"t":65.227,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.331},"t":81.316,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.676},"o":{"x":0.333,"y":0.34},"t":95.984,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.693},"o":{"x":0.333,"y":0.355},"t":110.629,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.74},"o":{"x":0.333,"y":0.396},"t":128.102,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.627},"t":151.164,"s":[465.239,451.876,0],"to":[31.343,-1.47,0],"ti":[-14.955,20.167,0]},{"t":180,"s":[535.417,418.124,0]}],"ix":2},"a":{"a":0,"k":[195.417,-134.876,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.472,-0.127],[0.198,-0.127],[0,0],[1.008,-0.509],[0.631,-0.38],[0.491,-0.601],[-0.077,-0.257],[-0.079,-0.103],[-0.115,-0.061],[-0.15,-0.051],[-0.254,0.154],[0,0],[-1.225,-3.958],[-0.319,-0.776],[-0.153,-0.343],[-0.228,-1.126],[0.14,0],[0.21,-0.101],[0.217,-0.195],[0.075,-0.157],[0.006,-0.174],[-0.077,-0.144],[-0.141,-0.082],[-0.326,0.12],[0,0],[-0.436,0.287],[-0.45,0.18],[-0.481,0.289],[-0.086,0.298],[0.023,0.254],[0.14,0.108],[0.084,0.033],[0.09,-0.006],[0.126,-0.046],[0.094,-0.095],[0.227,-0.17],[0,0],[0.086,0.61],[0.153,0.47],[0.421,0.992],[0.97,2.873],[0.345,0.839],[0.111,0.49],[-0.081,0.096],[-0.113,0.056],[0,0],[0,0.254],[0.094,0.291]],"o":[[-0.226,0.067],[0,0],[-0.37,0.191],[-0.685,0.272],[-0.643,0.436],[-0.077,0.257],[0.029,0.127],[0.079,0.103],[0.129,0.092],[0.288,-0.073],[0.459,-0.242],[0.238,0.602],[0.97,3.331],[0.319,0.776],[0.575,0.996],[0.013,0.127],[-0.223,0.069],[-0.272,0.107],[-0.131,0.115],[-0.075,0.157],[-0.011,0.162],[0.077,0.144],[0.346,0.036],[0,0],[0.509,-0.116],[0.398,-0.276],[0.513,-0.228],[0.246,-0.19],[0.082,-0.241],[-0.061,-0.166],[-0.062,-0.065],[-0.084,-0.033],[-0.133,-0.012],[-0.126,0.046],[-0.206,0.194],[-0.179,0.127],[-0.203,-0.582],[-0.268,-0.966],[-0.153,-0.47],[-0.612,-1.716],[-0.549,-1.538],[-0.228,-0.448],[0.036,-0.121],[0.081,-0.096],[0,0],[0.893,-0.598],[0.018,-0.305],[-0.102,-0.381]],"v":[[40.608,7.184],[39.971,7.476],[40.073,7.4],[38.057,8.353],[36.079,9.332],[34.369,10.896],[34.369,11.684],[34.533,12.033],[34.828,12.282],[35.249,12.498],[36.066,12.155],[36.832,11.913],[39.026,18.753],[40.927,24.932],[41.616,26.623],[42.829,29.827],[42.637,30.069],[41.986,30.323],[41.246,30.781],[40.934,31.194],[40.813,31.696],[40.914,32.164],[41.246,32.51],[42.267,32.383],[42.663,32.23],[44.092,31.62],[45.368,30.933],[46.861,30.158],[47.371,29.408],[47.46,28.658],[47.154,28.238],[46.933,28.089],[46.669,28.047],[46.276,28.099],[45.942,28.314],[45.291,28.861],[44.934,28.988],[44.5,27.195],[43.888,25.085],[43.02,22.898],[40.659,16.096],[39.307,12.524],[38.797,11.112],[38.974,10.784],[39.269,10.553],[40.238,9.739],[41.591,8.468],[41.476,7.565]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[185.959,-142.462],"ix":2},"a":{"a":0,"k":[40.889,19.829],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-32.6,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"b 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-11.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-53.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-110.45]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-177]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-142.875]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-52.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[37.242]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[119.833]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[115.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[56.917]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[17.458]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.363},"o":{"x":0.333,"y":0},"t":0,"s":[543.519,404.639,0],"to":[6.51,-13.577,0],"ti":[0,18.138,0]},{"i":{"x":0.667,"y":0.583},"o":{"x":0.333,"y":0.236},"t":22.24,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.64},"o":{"x":0.333,"y":0.302},"t":46.299,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.656},"o":{"x":0.333,"y":0.319},"t":63.473,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.666},"o":{"x":0.333,"y":0.33},"t":79.688,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.675},"o":{"x":0.333,"y":0.339},"t":94.369,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.691},"o":{"x":0.333,"y":0.353},"t":108.938,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.731},"o":{"x":0.333,"y":0.388},"t":126.16,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.622},"t":148.281,"s":[465.239,451.876,0],"to":[37.808,-1.773,0],"ti":[-13.523,28.2,0]},{"t":180,"s":[543.519,404.639,0]}],"ix":2},"a":{"a":0,"k":[203.519,-148.361,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.346,0.153],[-0.604,0.147],[0,0],[-1.195,-0.323],[-0.34,-0.294],[-0.182,-0.41],[1.62,-2.009],[0.591,-0.384],[0.348,-0.198],[0,0],[0.157,-0.123],[0.584,-0.328],[0.404,-0.287],[0.128,0.28],[0.094,0.302],[0.204,0.674],[0.102,0.509],[0.317,0.747],[0,0.165],[-0.02,0.057],[-0.048,0.036],[0,0],[-0.242,0.153],[-0.307,0.213]],"o":[[0.568,-0.251],[0,0],[1.178,-0.381],[0.433,0.123],[0.34,0.294],[0.293,1.577],[-0.531,0.463],[-0.324,0.234],[0,0],[-0.174,0.097],[-0.502,0.442],[-0.445,0.22],[-0.089,0.038],[-0.127,-0.29],[-0.102,-0.407],[-0.204,-0.674],[-0.201,-0.785],[-0.293,-0.674],[-0.014,-0.058],[0.02,-0.057],[0,0],[0.37,-0.267],[0.339,-0.159],[0.308,-0.219]],"v":[[57.91,14.024],[59.671,13.426],[59.773,13.337],[63.41,13.248],[64.583,13.882],[65.375,14.952],[63.372,20.343],[61.687,21.614],[60.679,22.262],[60.194,22.631],[59.697,22.962],[58.064,24.119],[56.788,24.882],[56.469,24.526],[56.137,23.636],[55.716,22.186],[55.256,20.406],[54.478,18.105],[53.968,16.834],[53.977,16.657],[54.083,16.516],[55.052,15.766],[55.958,15.143],[56.928,14.583]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.756,0.222],[0,0],[-2.024,0.088],[-0.244,-0.097],[-0.173,-0.197],[-0.026,-0.066],[0.159,-0.483],[1.726,-0.916],[0.332,-0.229],[0,0],[0,0],[0.102,0],[0.166,0.381],[0.523,0.915],[0,0],[0,0],[0.036,0.145]],"o":[[0.723,-0.312],[0,0],[1.899,-0.704],[0.262,-0.023],[0.244,0.097],[0.05,0.051],[0.159,0.483],[-0.692,1.822],[-0.434,0.254],[0,0],[0,0],[-0.357,0.203],[-0.37,-0.776],[-0.74,-1.564],[0,0],[0,0],[-0.066,-0.134],[0,0]],"v":[[50.574,7.603],[52.794,6.802],[52.896,6.713],[58.816,5.518],[59.585,5.631],[60.22,6.078],[60.335,6.256],[60.335,7.743],[56.583,11.99],[55.435,12.702],[54.772,13.261],[53.496,14.126],[52.807,14.545],[51.99,12.816],[50.102,9.104],[49.885,8.633],[49.885,8.531],[49.732,8.112]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0.306,-0.165],[0,0],[0.648,-0.686],[0,-0.093],[0,0],[-0.767,-1.922],[-0.166,-0.483],[0,0],[0,0],[-0.064,-0.381],[-0.26,-0.649],[-0.153,-0.318],[-0.24,-0.148],[-0.197,0.077],[0,0],[0,0],[-0.88,0.483],[-0.612,0.356],[-0.523,0.369],[-0.936,0.795],[-0.396,1.085],[-0.037,1.166],[0.223,0.458],[0.37,0.366],[0.955,0.173],[0.567,0.003],[0.446,-0.084],[0.038,0.064],[-0.089,0.089],[-0.181,0.305],[0.19,1.414],[0.317,0.547],[0.508,0.157],[2.807,-0.848],[1.174,-0.483]],"o":[[-0.561,0.229],[0,0],[-0.793,0.513],[-0.051,0.186],[0,0],[1.281,1.628],[0.498,1.03],[0,0],[0,0],[0.944,2.568],[0.19,0.672],[0.293,0.737],[0.099,0.264],[0.197,0.077],[0,0],[0,0],[0.319,-0.153],[0.88,-0.483],[0.612,-0.356],[1.051,-0.635],[0.736,-0.892],[0.444,-1.079],[-0.039,-0.508],[-0.212,-0.474],[-0.712,-0.657],[-0.563,-0.073],[-0.452,-0.033],[-0.102,0],[-0.038,-0.064],[0.218,-0.28],[0.853,-1.146],[-0.14,-0.616],[-0.322,-0.422],[-1.301,-0.534],[-0.676,0.216],[0,0]],"v":[[50.382,5.62],[49.106,6.205],[49.208,6.116],[47.039,7.921],[46.963,8.341],[47.307,8.519],[50.395,13.871],[51.403,16.172],[51.862,17.342],[52.36,18.792],[53.866,23.216],[54.542,25.199],[55.193,26.789],[55.716,27.424],[56.328,27.424],[56.928,27.234],[57.145,27.132],[58.65,26.293],[60.807,24.945],[62.504,23.864],[65.49,21.716],[67.199,18.728],[67.927,15.333],[67.531,13.871],[66.651,12.6],[64.099,11.328],[62.402,11.214],[61.049,11.29],[60.832,11.29],[60.922,11.061],[61.521,10.184],[62.555,6.192],[61.866,4.438],[60.59,3.548],[54.427,4.018],[51.658,5.048]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[195.431,-155.821],"ix":2},"a":{"a":0,"k":[57.445,15.36],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-37.8,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":27,"ty":4,"nm":"l 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-9.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-55.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-111.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-169]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-113.875]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-26.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[65.308]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[142.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[116.125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[58.083]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[12.342]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.354},"o":{"x":0.333,"y":0},"t":0,"s":[550.825,382.864,0],"to":[1.723,-8.114,0],"ti":[0,9.231,0]},{"i":{"x":0.667,"y":0.552},"o":{"x":0.333,"y":0.2},"t":16.031,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.635},"o":{"x":0.333,"y":0.297},"t":43.143,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.654},"o":{"x":0.333,"y":0.316},"t":60.865,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.665},"o":{"x":0.333,"y":0.329},"t":77.291,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.674},"o":{"x":0.333,"y":0.337},"t":92.008,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.688},"o":{"x":0.333,"y":0.35},"t":106.484,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.721},"o":{"x":0.333,"y":0.379},"t":123.389,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.616},"t":144.404,"s":[465.239,451.876,0],"to":[46.747,-2.192,0],"ti":[-8.693,40.946,0]},{"t":180,"s":[550.825,382.864,0]}],"ix":2},"a":{"a":0,"k":[210.825,-170.136,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.124,-0.044],[0.087,-0.298],[0,0],[-0.091,-0.172],[-0.171,-0.094],[-0.181,-0.298],[-1.225,-1.907],[-0.817,-1.195],[-0.306,-0.318],[-1.391,-1.157],[-0.115,-0.114],[0.166,-0.178],[-0.029,-0.21],[-0.133,-0.166],[-0.319,0.114],[-0.335,0.222],[0,0],[-1.046,0.814],[-0.638,0.559],[-1.149,0.674],[-0.332,0.343],[0.268,0.381],[0,0],[0,0],[0.893,-0.636],[1.595,-1.406],[0.08,-0.073],[0.153,0.178],[0.596,0.565],[0.86,1.072],[0.727,0.877],[1.812,2.543],[1.123,1.164]],"o":[[-0.23,0.209],[0,0],[-0.019,0.193],[0.091,0.172],[0.243,0.251],[0.255,0.534],[1.225,1.907],[1.072,1.449],[0.306,0.318],[0.817,0.674],[0.115,0.114],[-0.083,0.196],[0.029,0.21],[0.102,0.102],[0.377,-0.141],[0,0],[0.383,-0.267],[1.276,-1.03],[0.952,-0.93],[0.102,0.076],[0.447,-0.776],[0,0],[0,0],[-1.786,1.233],[-1.802,1.132],[-0.064,0.088],[-0.255,-0.331],[-0.517,-0.637],[-0.984,-0.961],[0.026,-0.165],[-0.727,-0.877],[-0.854,-1.372],[-0.124,-0.044]],"v":[[65.222,-2.555],[64.737,-1.78],[64.635,-1.691],[64.744,-1.131],[65.145,-0.724],[65.783,0.102],[67.99,3.751],[71.04,8.404],[73.069,11.125],[75.621,13.337],[77.024,14.52],[76.948,14.965],[76.866,15.585],[77.114,16.16],[77.739,16.16],[78.811,15.613],[79.04,15.448],[81.184,13.82],[84.055,11.443],[87.219,9.027],[87.87,8.62],[88.138,6.891],[88.138,6.802],[87.972,6.624],[83.953,9.421],[78.849,13.236],[78.632,13.477],[78.007,12.714],[76.335,10.909],[73.566,7.858],[72.405,6.421],[68.577,1.259],[65.604,-2.555]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.945,-173.451],"ix":2},"a":{"a":0,"k":[76.459,6.826],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-40.4,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":"e 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-15.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-59]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-118.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-160]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-92.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[-1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[86.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[155.833]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[109.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[52.917]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[9.558]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.341},"o":{"x":0.333,"y":0},"t":0,"s":[553.38,360.497,0],"to":[0.032,-1.219,0],"ti":[0,1.238,0]},{"i":{"x":0.667,"y":0.468},"o":{"x":0.333,"y":0.098},"t":5.893,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":0.63},"o":{"x":0.333,"y":0.291},"t":39.891,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.651},"o":{"x":0.333,"y":0.314},"t":58.26,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.663},"o":{"x":0.333,"y":0.327},"t":74.926,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.672},"o":{"x":0.333,"y":0.336},"t":89.699,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.685},"o":{"x":0.333,"y":0.348},"t":104.107,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.713},"o":{"x":0.333,"y":0.373},"t":120.744,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.61},"t":140.895,"s":[465.239,451.876,0],"to":[54.769,-2.568,0],"ti":[-1.391,53.736,0]},{"t":180,"s":[553.38,360.497,0]}],"ix":2},"a":{"a":0,"k":[213.38,-192.503,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.447,-0.432],[0,-0.102],[-0.217,-0.064],[-0.369,-0.215],[-0.842,-0.699],[-0.715,-0.507],[-1.775,-1.801],[0,0],[-0.494,-0.731],[-0.235,-0.165],[-0.118,-0.02],[-0.113,0.039],[-0.09,0.078],[-0.036,0.074],[-0.433,0.484],[-0.638,0.839],[-1.11,1.348],[-0.678,0.625],[-0.581,0.431],[0.128,0.369],[0.067,0.057],[0.272,-0.033],[0.502,-0.323],[0.455,-0.212],[0.788,-1.043],[0.469,-0.516],[0.228,-0.373],[0,0],[0.162,-0.331],[0.051,-0.168],[0.167,0.213],[0.778,0.839],[1.097,1.081],[0,0],[-0.191,0.203],[-0.513,0.381],[-0.767,0.74],[-0.66,0.952],[0,0.013],[0,0.089],[0.023,0.152],[0.188,0.21],[0.243,0.043],[1.48,-1.89],[1.473,-1.223],[0.442,-0.805],[-0.102,0.059],[0.689,0.521],[0.791,0.585],[0.434,0.254],[0,0],[0,0],[-0.791,0.763],[-0.555,0.886],[0,0],[0.255,0.407],[0.181,0.099],[0.092,0],[0.08,-0.046],[0.568,-0.629],[0,0],[0.527,-0.636],[0,0]],"o":[[-0.447,0.432],[0,0.064],[0.318,0.284],[0.549,0.343],[0.653,0.585],[2.118,1.385],[0,0],[0.626,0.622],[0.106,0.266],[0.094,0.074],[0.118,0.02],[0.105,-0.057],[0.057,-0.061],[0.322,-0.564],[0.587,-0.725],[0.766,-1.182],[0.605,-0.696],[0.497,-0.525],[0.485,-0.381],[-0.025,-0.084],[-0.219,-0.164],[-0.595,0.053],[-0.393,0.312],[-1.017,0.823],[-0.38,0.584],[-0.306,0.312],[0,0],[-0.4,0.687],[-0.068,0.162],[-0.19,-0.194],[0,-0.025],[-0.778,-0.839],[0,0],[0.345,-0.394],[0.438,-0.465],[0.839,-0.658],[0.841,-0.798],[0.753,-1.043],[0,-0.013],[0.023,-0.152],[-0.001,-0.281],[-0.141,-0.201],[-0.332,0.017],[-1.209,1.483],[-0.69,0.608],[-0.153,0.11],[-0.23,0.038],[-1.085,-0.725],[-0.791,-0.585],[0,0],[0,0],[1.021,-1.017],[0.726,-0.753],[0,0],[0.51,-0.394],[-0.065,-0.195],[-0.08,-0.046],[-0.092,0],[-0.639,0.557],[0,0],[-2.416,2.577],[0,0],[-0.23,0.178]],"v":[[-26.547,63.246],[-27.223,64.047],[-26.93,64.263],[-25.896,65.013],[-23.803,66.627],[-21.749,68.268],[-15.893,73.061],[-13.519,75.731],[-11.835,77.765],[-11.312,78.426],[-10.988,78.569],[-10.636,78.54],[-10.342,78.337],[-10.202,78.134],[-9.066,76.557],[-7.203,74.23],[-4.383,70.505],[-2.457,68.522],[-0.836,67.085],[-0.351,65.979],[-0.492,65.763],[-1.257,65.559],[-2.929,66.132],[-4.205,66.92],[-6.923,69.73],[-8.199,71.382],[-9.002,72.412],[-9.449,73.48],[-10.291,75.006],[-10.47,75.502],[-11.006,74.891],[-12.282,73.34],[-15.089,70.454],[-16.518,69.081],[-15.701,68.179],[-14.272,66.907],[-11.86,64.809],[-9.602,62.178],[-8.479,60.601],[-8.479,60.448],[-8.479,59.991],[-8.773,59.228],[-9.372,58.846],[-12.09,61.707],[-16.122,65.776],[-17.832,67.912],[-17.909,67.988],[-19.287,67.25],[-21.941,65.369],[-23.778,64.097],[-24.199,63.691],[-21.775,61.275],[-19.057,58.605],[-17.13,56.138],[-15.561,54.117],[-15.178,52.922],[-15.561,52.464],[-15.822,52.394],[-16.084,52.464],[-17.896,54.244],[-19.988,56.405],[-24.403,61.224],[-25.513,62.381]],"c":true},"ix":2},"nm":"Path 9","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[202,-191.874],"ix":2},"a":{"a":0,"k":[-13.764,65.487],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-39.6,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":29,"ty":4,"nm":"s 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-18]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-54]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-114]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-124]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-41.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[49]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[139.233]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[178.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[112.7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[50.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[13.667]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.381},"o":{"x":0.333,"y":0},"t":0,"s":[545.592,321.701,0],"to":[-16.218,-33.713,0],"ti":[32.913,0,0]},{"i":{"x":0.667,"y":0.618},"o":{"x":0.333,"y":0.277},"t":33.588,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.647},"o":{"x":0.333,"y":0.309},"t":53.479,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.661},"o":{"x":0.333,"y":0.324},"t":70.678,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.67},"o":{"x":0.333,"y":0.334},"t":85.604,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.681},"o":{"x":0.333,"y":0.344},"t":99.939,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.703},"o":{"x":0.333,"y":0.364},"t":116.195,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.782},"o":{"x":0.333,"y":0.433},"t":135.168,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.642},"t":161.035,"s":[553.428,356.813,0],"to":[0,-13.069,0],"ti":[4.959,10.308,0]},{"t":180,"s":[545.592,321.701,0]}],"ix":2},"a":{"a":0,"k":[205.592,-231.299,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.128,-0.292],[0.157,-0.785],[0,0],[-0.529,-1.63],[-0.862,-0.646],[-0.259,-0.115],[-0.207,-0.039],[-1.015,0.278],[-0.93,0.76],[-1.178,1.625],[-0.293,0.343],[-0.509,0.188],[-0.755,0.024],[-0.611,-0.246],[-0.398,-0.526],[0.144,-0.869],[0.575,-1.501],[1.133,-0.953],[0.695,-0.147],[0.634,0.146],[0.855,0.89],[0.255,-0.216],[0,-0.648],[-0.025,-0.084],[0.027,-0.083],[0.002,-0.028],[-0.01,-0.026],[-0.019,-0.02],[-0.026,-0.011],[-0.442,-0.272],[-0.529,-0.159],[-0.667,0.164],[-0.514,0.453],[-0.692,1.763],[-0.311,1.625],[0.301,1.254],[0.383,0.387],[0.507,0.289],[0,0],[1.184,-0.088],[1.129,-0.875],[0.62,-1.09],[1.043,-1.073],[0.949,-0.413],[0.788,0.147],[0.307,0.448],[0.099,0.615],[-0.185,0.893],[-0.364,0.759],[-0.406,0.643],[-0.482,0.177],[-0.526,0.026],[-0.55,-0.191],[0,0],[-0.162,0.432],[-0.022,0.124],[0.038,0.12],[0.296,0.223],[0.429,0.148],[0.428,-0.052],[0.717,-0.299],[0.531,-0.453],[0.456,-0.947]],"o":[[-0.335,0.727],[0,0],[-0.429,1.659],[0.361,1.013],[0.224,0.173],[0.191,0.088],[1.031,0.211],[1.163,-0.304],[1.51,-1.324],[0.906,-1.17],[0.323,-0.435],[0.684,-0.32],[0.658,-0.037],[0.613,0.248],[0.409,0.781],[-0.119,1.602],[-0.542,1.375],[-0.545,0.454],[-0.634,0.146],[-0.166,0],[-0.179,-0.178],[-0.255,0.216],[0.068,0.055],[0.025,0.084],[-0.013,0.025],[-0.002,0.028],[0.01,0.026],[0.019,0.02],[0.408,0.32],[0.461,0.305],[0.667,0.163],[0.667,-0.164],[1.414,-1.264],[0.681,-1.509],[0.301,-1.254],[-0.206,-0.503],[-0.388,-0.435],[0,0],[-1.099,-0.448],[-1.43,0.025],[-1.056,0.68],[-0.886,1.205],[-0.691,0.769],[-0.734,0.321],[-0.52,-0.161],[-0.418,-0.464],[-0.185,-0.893],[0.187,-0.821],[0.273,-0.71],[0.358,-0.367],[0.487,-0.201],[0.582,0.003],[0,0],[0.068,0.025],[0.078,-0.099],[0.022,-0.124],[-0.083,-0.36],[-0.328,-0.312],[-0.414,-0.119],[-0.777,0.029],[-0.658,0.236],[-0.752,0.736],[-0.179,0.331]],"v":[[-4.983,29.744],[-5.723,32.02],[-5.723,32.046],[-5.57,37.08],[-3.694,39.623],[-2.967,40.055],[-2.367,40.246],[0.746,40.144],[3.923,38.53],[7.968,34.092],[9.754,31.804],[11.03,30.85],[13.212,30.329],[15.139,30.647],[16.683,31.829],[17.091,34.372],[16.045,39.051],[13.493,42.598],[11.604,43.514],[9.678,43.514],[8.159,42.242],[7.662,42.064],[7.228,43.335],[7.371,43.549],[7.368,43.806],[7.346,43.886],[7.358,43.968],[7.402,44.038],[7.47,44.086],[8.746,44.976],[10.239,45.675],[12.269,45.674],[14.067,44.734],[17.27,40.132],[18.762,35.415],[18.762,31.601],[17.869,30.253],[16.517,29.159],[16.006,28.931],[12.536,28.384],[8.593,29.77],[6.041,32.465],[3.145,35.885],[0.657,37.678],[-1.678,37.945],[-2.954,37.004],[-3.745,35.351],[-3.745,32.643],[-2.916,30.266],[-1.895,28.231],[-0.619,27.405],[0.912,27.062],[2.622,27.354],[3.898,27.748],[4.242,27.138],[4.394,26.798],[4.37,26.426],[3.783,25.523],[2.634,24.824],[1.358,24.722],[-0.9,25.218],[-2.699,26.261],[-4.524,28.803]],"c":true},"ix":2},"nm":"Path 8","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[194.545,-226.002],"ix":2},"a":{"a":0,"k":[6.489,35.248],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-36.7,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":30,"ty":4,"nm":"t 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-13.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-49]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-104.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-94]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[-5.95]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[83.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[173.483]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[187.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[120.05]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[54.833]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[16.117]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.374},"o":{"x":0.333,"y":0},"t":0,"s":[532.061,301.819,0],"to":[-19.24,-21.016,0],"ti":[25.721,0,0]},{"i":{"x":0.667,"y":0.607},"o":{"x":0.333,"y":0.265},"t":29.301,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.644},"o":{"x":0.333,"y":0.306},"t":50.469,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.659},"o":{"x":0.333,"y":0.323},"t":68.068,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.668},"o":{"x":0.333,"y":0.332},"t":83.121,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.679},"o":{"x":0.333,"y":0.342},"t":97.443,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.698},"o":{"x":0.333,"y":0.359},"t":113.518,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.753},"o":{"x":0.333,"y":0.408},"t":131.939,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.633},"t":155.24,"s":[553.428,356.813,0],"to":[0,-22.409,0],"ti":[12.908,14.099,0]},{"t":180,"s":[532.061,301.819,0]}],"ix":2},"a":{"a":0,"k":[192.061,-251.181,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.549,-2.861],[0,-0.432],[0,-0.623],[-0.122,-0.585],[-0.084,-0.107],[-0.121,-0.063],[-0.164,-0.035],[-0.084,0.019],[-0.14,0.165],[-0.031,0.128],[0.027,0.128],[-0.166,1.218],[-0.111,1.229],[-0.11,0.523],[-1.62,-0.347],[-2.552,-0.509],[-0.536,0],[-0.444,0.183],[0,0],[-0.077,0.407],[0,0],[0.062,0.168],[0.147,0.103],[0.693,0.136],[2.463,0.407],[1.557,0.153],[0,0],[1.13,0.006],[0,0],[0,0.254],[-0.217,1.589],[-0.077,0.407],[0.034,0.121],[0.099,0.078],[0.117,0.032],[0,0],[0.128,-0.521]],"o":[[-0.753,4.068],[-0.089,1.767],[-0.012,0.598],[0.032,0.132],[0.084,0.107],[0.14,0.091],[0.084,0.019],[0.089,0],[0.083,-0.102],[0.031,-0.128],[-0.098,-1.225],[0.043,-0.466],[0.025,-0.534],[1.652,0.127],[3.19,0.534],[3.037,0.598],[0.47,0.1],[0,0],[0.306,0.013],[0,0],[0.046,-0.173],[-0.062,-0.168],[-0.656,-0.262],[-0.957,-0.254],[-2.463,-0.407],[0,0],[-1.122,-0.138],[0,0],[0.077,-0.509],[0.026,-0.699],[0.204,-1.602],[0.043,-0.118],[-0.034,-0.121],[-0.093,-0.077],[0,0],[-0.128,0.025],[-0.128,0.521]],"v":[[2.634,8.359],[1.448,15.123],[1.358,18.683],[1.524,20.463],[1.699,20.827],[2.009,21.086],[2.468,21.277],[2.724,21.277],[3.081,21.023],[3.254,20.674],[3.26,20.285],[3.362,16.611],[3.591,14.068],[3.795,12.479],[8.708,13.191],[17.321,14.755],[22.692,15.734],[24.096,15.606],[24.619,15.53],[25.193,14.933],[25.193,14.856],[25.169,14.332],[24.849,13.915],[22.82,13.318],[17.716,12.313],[11.681,11.487],[7.496,11.017],[4.114,10.801],[3.821,10.801],[3.936,9.656],[4.306,6.211],[4.727,3.198],[4.741,2.83],[4.536,2.524],[4.217,2.358],[4.038,2.358],[3.642,3.274]],"c":true},"ix":2},"nm":"Path 7","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[181.206,-244.703],"ix":2},"a":{"a":0,"k":[13.29,11.825],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-50.5,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":31,"ty":4,"nm":"u 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-11.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-49]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-96.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-64]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[21.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[111]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[200.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[191]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[119.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[59.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[14.15]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.367},"o":{"x":0.333,"y":0},"t":0,"s":[514.976,287.223,0],"to":[-17.315,-11.592,0],"ti":[18.922,0,0]},{"i":{"x":0.667,"y":0.593},"o":{"x":0.333,"y":0.249},"t":24.781,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.64},"o":{"x":0.333,"y":0.302},"t":47.559,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.657},"o":{"x":0.333,"y":0.321},"t":65.598,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.331},"t":80.795,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.677},"o":{"x":0.333,"y":0.34},"t":95.125,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.694},"o":{"x":0.333,"y":0.356},"t":111.061,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.736},"o":{"x":0.333,"y":0.393},"t":129.047,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.626},"t":150.719,"s":[553.428,356.813,0],"to":[0,-31.24,0],"ti":[22.012,14.737,0]},{"t":180,"s":[514.976,287.223,0]}],"ix":2},"a":{"a":0,"k":[174.976,-265.777,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.28],[-0.109,-0.151],[0,0],[-0.536,-0.035],[-0.787,0.015],[-1.774,0.127],[-0.026,0],[-1.276,0],[-2.043,-0.948],[-0.8,-1.278],[-0.08,-0.246],[0,-0.699],[0.202,-0.728],[0.35,-0.285],[0.625,-0.387],[0.55,-0.244],[0.79,-0.154],[3.241,-0.076],[2.038,0.147],[0.502,-0.199],[0,-0.114],[-4.504,-0.178],[-1.072,0],[-0.587,0],[-1.192,0.171],[-1.23,0.533],[-0.709,0.838],[-0.191,0.267],[-0.104,0.347],[0.01,0.465],[0.508,1.016],[0.153,0.331],[0,0],[0.713,0.43],[1.017,0.263],[0,0],[0,0],[-0.78,0.32],[-0.266,0.216],[0,0],[0.383,0],[0,0],[0,0.11],[0,0.025],[0.012,0.021],[0.025,0.014],[0.028,-0.003],[0,0],[0.923,-0.228],[1.104,-0.235],[1.812,-0.098],[1.045,-0.137],[1.467,0],[0,0]],"o":[[-0.01,0.186],[0,0],[0.441,0.306],[0.774,0.142],[0.51,-0.013],[1.774,-0.127],[0.026,0],[2.252,-0.07],[1.289,0.787],[0.14,0.218],[0,0.14],[0.041,0.754],[-0.286,0.349],[-0.573,0.46],[-0.513,0.314],[-0.727,0.344],[-0.421,0.102],[-2.042,0.088],[-0.533,-0.09],[-0.434,0.178],[0.013,0.534],[0.868,0],[0.51,0],[1.204,-0.015],[1.315,-0.261],[0.976,-0.506],[0.523,-0.572],[0.2,-0.302],[0.137,-0.445],[-0.073,-1.133],[-0.077,-0.14],[0,0],[-0.361,-0.748],[-0.875,-0.579],[0,0],[0,0],[0.837,-0.102],[0.31,-0.147],[0.14,-0.025],[0.026,-0.127],[0,0],[0.459,-0.22],[0.012,-0.021],[0,-0.025],[-0.013,-0.025],[-0.025,-0.014],[0,0],[-0.951,0.017],[-1.128,0.019],[-1.761,0.435],[-1.054,0.024],[-3.113,0.369],[0,0],[-0.166,0]],"v":[[2.826,-15.606],[2.979,-15.085],[2.966,-15.085],[4.459,-14.564],[6.807,-14.373],[10.226,-14.615],[12.982,-14.843],[14.922,-14.843],[21.455,-13.508],[24.632,-10.368],[24.964,-9.669],[24.964,-8.398],[24.721,-6.16],[23.764,-5.206],[21.965,-3.935],[20.37,-3.096],[18.086,-2.346],[12.561,-2.091],[6.437,-2.18],[4.855,-2.015],[4.204,-1.583],[10.979,-0.502],[13.888,-0.502],[15.534,-0.502],[19.132,-0.782],[22.96,-1.977],[25.512,-4.011],[26.571,-5.283],[27.031,-6.262],[27.222,-7.635],[26.342,-10.889],[26.01,-11.589],[25.716,-12.275],[24.07,-14.081],[21.212,-15.352],[20.37,-15.581],[21.965,-15.962],[24.402,-16.598],[25.27,-17.145],[25.41,-17.259],[24.874,-17.45],[25.155,-17.704],[25.844,-18.2],[25.863,-18.27],[25.844,-18.34],[25.786,-18.4],[25.704,-18.416],[25.627,-18.416],[22.807,-18.047],[19.451,-17.666],[14.08,-16.865],[10.928,-16.623],[4.051,-16.026],[2.992,-16.026]],"c":true},"ix":2},"nm":"Path 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[165.579,-257.793],"ix":2},"a":{"a":0,"k":[15.024,-9.46],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-54.7,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":32,"ty":4,"nm":"d 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-11.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-52.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-85.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-33]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[51.725]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[142.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[224.742]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[188.833]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[115.425]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[55.417]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[13.508]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.358},"o":{"x":0.333,"y":0},"t":0,"s":[492.659,275.906,0],"to":[-11.468,-4.207,0],"ti":[11.28,0,0]},{"i":{"x":0.667,"y":0.567},"o":{"x":0.333,"y":0.218},"t":18.734,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.636},"o":{"x":0.333,"y":0.297},"t":44.176,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.655},"o":{"x":0.333,"y":0.319},"t":62.799,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.665},"o":{"x":0.333,"y":0.329},"t":78.191,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.675},"o":{"x":0.333,"y":0.338},"t":92.553,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.691},"o":{"x":0.333,"y":0.353},"t":108.363,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.723},"o":{"x":0.333,"y":0.382},"t":125.939,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.619},"t":146.27,"s":[553.428,356.813,0],"to":[0,-41.163,0],"ti":[32.225,11.821,0]},{"t":180,"s":[492.659,275.906,0]}],"ix":2},"a":{"a":0,"k":[152.659,-277.094,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.262,1.205],[0.112,0.995],[-0.917,1.151],[-1.572,0.453],[-0.25,0.054],[-1.195,-0.268],[-0.977,-0.737],[-0.924,-1.577],[-0.408,-0.949],[-0.167,-0.502],[0.264,-0.071],[0.508,-0.23],[1.046,-0.331],[0,0],[1.62,-0.445],[0.95,-0.376],[0,0],[0,0],[0.145,0.39]],"o":[[-0.253,-0.969],[0.017,-1.47],[1.097,-1.209],[0.243,-0.081],[1.199,-0.25],[1.195,0.268],[1.198,1.383],[0.179,0.348],[0.224,0.48],[-0.245,0.123],[-0.529,0.176],[-0.766,0.292],[0,0],[-1.11,0.42],[-0.995,0.234],[0,0],[-0.306,0],[-0.203,-0.363],[-0.401,-1.166]],"v":[[4.459,-29.388],[3.91,-32.338],[5.352,-36.381],[9.435,-38.924],[10.175,-39.127],[13.808,-39.1],[17.104,-37.576],[20.294,-33.126],[21.174,-31.181],[21.761,-29.706],[20.995,-29.414],[19.439,-28.803],[16.721,-27.863],[13.684,-26.884],[9.588,-25.612],[6.666,-24.697],[6.437,-24.697],[5.977,-24.697],[5.454,-25.828]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.187,-0.724],[-0.1,-0.287],[-0.661,-1.679],[-0.491,-0.649],[-0.191,0],[-0.129,0.038],[-0.188,0.136],[0.115,0.292],[0.081,0.132],[0,0],[-0.361,0.179],[0,0],[-1.276,0.242],[-2.334,0.95],[-0.337,0.178],[-0.169,0.115],[0,0],[-0.024,-0.085],[0,0],[-0.124,-0.352],[-0.035,-0.048],[-0.051,-0.031],[-0.049,-0.013],[-0.049,0.011],[-0.231,0.221],[0.005,0.193],[0.089,0.339],[0.813,1.755],[0.985,1.567],[0.506,0.486],[1.422,0.458],[1.068,0.057],[0.739,-0.203],[0.728,-0.327],[0.909,-1.088],[0.357,-1.37],[-0.053,-0.856]],"o":[[0.061,0.297],[0.375,1.765],[0.358,0.73],[0.485,0.648],[0.129,0.038],[0.225,-0.057],[0.37,-0.267],[-0.114,-0.105],[0,0],[0.393,-0.091],[0,0],[0.829,-0.242],[2.441,-0.625],[0.36,-0.127],[0.201,-0.036],[0.102,-0.089],[0.06,0.065],[0,0],[0.214,0.306],[0.014,0.058],[0.035,0.048],[0.037,0.035],[0.049,0.013],[0.277,-0.16],[0.08,-0.175],[-0.047,-0.347],[-0.477,-1.873],[-0.713,-1.707],[-0.419,-0.563],[-1.1,-1.008],[-1.036,-0.264],[-0.766,-0.026],[-0.782,0.163],[-1.287,0.599],[-0.909,1.088],[-0.222,0.828],[0.034,0.747]],"v":[[2.392,-29.592],[2.634,-28.714],[4.191,-23.54],[5.467,-21.467],[6.501,-20.425],[6.896,-20.425],[7.521,-20.717],[7.891,-21.556],[7.598,-21.912],[7.126,-22.561],[8.261,-22.968],[10.443,-23.565],[13.582,-24.29],[20.753,-26.655],[21.799,-27.112],[22.361,-27.341],[22.552,-27.43],[22.68,-27.201],[23.318,-26.172],[23.828,-25.18],[23.902,-25.019],[24.032,-24.9],[24.163,-24.827],[24.313,-24.824],[25.078,-25.396],[25.193,-25.955],[24.989,-26.985],[23.05,-32.44],[20.498,-37.36],[19.107,-38.936],[15.279,-41.161],[12.115,-41.644],[9.844,-41.377],[7.572,-40.64],[4.238,-38.079],[2.315,-34.347],[2.06,-31.804]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[148.342,-268.662],"ix":2},"a":{"a":0,"k":[13.619,-31.023],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-46.6,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":33,"ty":4,"nm":"i 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-14.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-55.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-74.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[74.875]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[166.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[240.958]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[184.167]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[109.975]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[50.383]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[11.492]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.348},"o":{"x":0.333,"y":0},"t":0,"s":[472.089,270.614,0],"to":[-4.763,-0.718,0],"ti":[4.62,0,0]},{"i":{"x":0.667,"y":0.522},"o":{"x":0.333,"y":0.164},"t":11.682,"s":[457.977,269.531,0],"to":[-42.977,0,0],"ti":[24.375,-59.375,0]},{"i":{"x":0.667,"y":0.631},"o":{"x":0.333,"y":0.292},"t":41.164,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.654},"o":{"x":0.333,"y":0.317},"t":60.379,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.664},"o":{"x":0.333,"y":0.328},"t":75.967,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.674},"o":{"x":0.333,"y":0.337},"t":90.373,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.688},"o":{"x":0.333,"y":0.35},"t":106.102,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.715},"o":{"x":0.333,"y":0.375},"t":123.381,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.613},"t":142.826,"s":[553.428,356.813,0],"to":[0,-49.813,0],"ti":[39.54,5.965,0]},{"t":180,"s":[472.089,270.614,0]}],"ix":2},"a":{"a":0,"k":[132.089,-282.386,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.179,-0.458],[-0.137,-0.19],[0,0],[-0.498,-0.839],[-0.453,-0.627],[-0.643,-0.431],[-0.253,0.111],[-0.095,0.088],[-0.048,0.12],[-0.027,0.157],[0.176,0.231],[0,0.064],[-3.836,1.577],[-0.753,0.369],[0,0],[-1.102,0.34],[-0.047,-0.03],[-0.015,-0.054],[-0.124,-0.198],[-0.214,-0.201],[-0.165,-0.059],[-0.175,0.011],[-0.137,0.09],[-0.07,0.148],[0.153,0.313],[0.076,0.116],[0.324,0.407],[0.217,0.454],[0.341,0.447],[0.307,0.063],[0.248,-0.052],[0.096,-0.15],[0.024,-0.086],[-0.013,-0.088],[-0.059,-0.121],[-0.104,-0.085],[-0.179,-0.178],[0,0],[0.606,-0.138],[0.447,-0.203],[0.957,-0.509],[2.765,-1.229],[0.804,-0.42],[0.482,-0.15],[0.144,0.21],[0.115,0.102],[0.255,0],[0.285,-0.113]],"o":[[0.092,0.216],[0,0],[0.23,0.343],[0.328,0.701],[0.491,0.598],[0.269,0.062],[0.123,-0.039],[0.095,-0.088],[0.083,-0.137],[-0.094,-0.274],[-0.242,-0.432],[0.587,-0.297],[3.228,-1.271],[0,0],[0.943,-0.662],[0.055,-0.008],[0.047,0.03],[0.088,0.216],[0.133,0.261],[0.127,0.12],[0.165,0.059],[0.164,-0.005],[0.137,-0.09],[0.002,-0.348],[-0.051,-0.129],[-0.166,-0.493],[-0.317,-0.391],[-0.271,-0.492],[-0.216,-0.227],[-0.248,-0.052],[-0.163,0.074],[-0.058,0.068],[-0.024,0.086],[0.004,0.134],[0.059,0.121],[0.23,0.203],[0.179,0.178],[-0.564,0.26],[-0.931,0.356],[-0.447,0.203],[-1.616,0.763],[-1.493,0.687],[-0.424,0.272],[-0.249,-0.051],[-0.485,-0.483],[-0.702,-0.877],[-0.306,0.013],[-0.37,0.14]],"v":[[-5.672,-48.307],[-5.328,-47.696],[-5.34,-47.696],[-4.256,-45.904],[-3.082,-43.908],[-1.372,-42.356],[-0.568,-42.433],[-0.237,-42.626],[-0.02,-42.941],[0.146,-43.386],[-0.262,-44.149],[-0.581,-44.899],[6.054,-47.709],[12.038,-50.175],[13.671,-51.015],[16.759,-52.528],[16.918,-52.493],[17.014,-52.362],[17.333,-51.739],[17.857,-51.04],[18.299,-50.769],[18.813,-50.697],[19.274,-50.842],[19.592,-51.205],[19.362,-52.21],[19.171,-52.578],[18.431,-53.939],[17.627,-55.21],[16.708,-56.621],[15.904,-57.066],[15.152,-57.066],[14.756,-56.723],[14.632,-56.49],[14.616,-56.227],[14.712,-55.84],[14.96,-55.528],[15.547,-54.943],[15.726,-54.6],[13.965,-54.002],[11.911,-53.189],[9.818,-52.133],[3.247,-49.146],[-0.198,-47.467],[-1.564,-46.832],[-2.176,-47.239],[-3.069,-48.129],[-4.485,-49.4],[-5.379,-49.209]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.834,-270.548],"ix":2},"a":{"a":0,"k":[6.917,-49.715],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-54.3,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":34,"ty":4,"nm":"o 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-14.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-49]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-54.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[14]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[102.35]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[191.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[253.183]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[186.667]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[111]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[52.333]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[15.167]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.388},"o":{"x":0.333,"y":0},"t":0,"s":[452.621,269.684,0],"to":[-40.295,2.314,0],"ti":[23.351,-56.882,0]},{"i":{"x":0.667,"y":0.626},"o":{"x":0.333,"y":0.286},"t":38.258,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.652},"o":{"x":0.333,"y":0.315},"t":58.117,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.663},"o":{"x":0.333,"y":0.327},"t":73.912,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.672},"o":{"x":0.333,"y":0.336},"t":88.375,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.686},"o":{"x":0.333,"y":0.348},"t":104.045,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.709},"o":{"x":0.333,"y":0.37},"t":121.088,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.886},"o":{"x":0.333,"y":0.519},"t":139.861,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.657},"t":172.879,"s":[457.977,269.531,0],"to":[-1.804,0,0],"ti":[1.766,-0.101,0]},{"t":180,"s":[452.621,269.684,0]}],"ix":2},"a":{"a":0,"k":[112.621,-283.316,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.013,0.046],[0.215,0.531],[0,0],[0.153,0.534],[-0.019,0.506],[-0.133,0.518],[-0.383,1.093],[-1.378,0.993],[-1.648,0.093],[-1.351,-0.872],[-0.754,-0.586],[-0.391,-0.586],[-0.034,-0.103],[0.046,-1.723],[0.115,-0.47],[1.284,-0.867],[0.172,-0.076],[1.412,-0.333],[1.858,0.466],[0.808,0.424],[0.337,0.459]],"o":[[-0.278,-0.502],[0,0],[-0.14,-0.432],[-0.079,-0.5],[0.054,-0.532],[0.421,-1.462],[0.906,-1.434],[1.356,-0.938],[1.608,0.077],[0.826,0.48],[0.571,0.415],[0.059,0.091],[0.726,1.564],[-0.306,1.386],[-0.718,1.37],[-0.159,0.101],[-1.301,0.639],[-1.907,0.189],[-0.887,-0.218],[-0.503,-0.269],[-0.013,-0.046]],"v":[[-10.355,-61.287],[-11.095,-62.839],[-11.082,-62.8],[-11.516,-64.263],[-11.605,-65.775],[-11.325,-67.352],[-10.125,-71.166],[-6.667,-74.841],[-2.074,-76.417],[2.443,-74.968],[4.816,-73.366],[6.271,-71.853],[6.411,-71.56],[7.445,-66.564],[6.794,-63.792],[3.744,-60.385],[3.247,-60.118],[-0.836,-58.656],[-6.527,-59.075],[-9.079,-60.042],[-10.355,-61.148]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.2,-0.244],[0,0],[-0.308,-0.162],[-0.727,-0.483],[-0.36,-0.128],[-0.8,-0.178],[0,0],[0,0],[-1.82,0.661],[-0.569,0.374],[-0.357,0.254],[-0.557,0.781],[-0.114,1.301],[0.216,1.514],[0.611,1.054],[1.138,0.852],[1.082,0.467],[2.255,-0.741],[0.851,-0.542],[0,0],[0.687,-0.624],[0.768,-1.932],[0.122,-0.789],[-0.024,-0.709],[-0.841,-1.193]],"o":[[0.157,0.273],[0,0],[0.278,0.21],[0.242,0.203],[0.318,0.21],[0.323,0.102],[0,0],[0,0],[1.934,0.116],[0.643,-0.225],[0.319,-0.203],[0.794,-0.54],[0.626,-1.148],[0.216,-1.514],[-0.095,-1.214],[-0.806,-1.169],[-0.917,-0.739],[-2.158,-0.986],[-0.939,0.371],[0,0],[-0.798,0.475],[-1.526,1.416],[-0.277,0.749],[-0.16,0.692],[0.251,1.436],[0,0]],"v":[[-11.937,-60.537],[-11.401,-59.762],[-11.401,-59.762],[-10.521,-59.202],[-9.002,-58.173],[-7.982,-57.664],[-6.297,-57.244],[-4.128,-56.863],[-2.508,-56.723],[3.183,-57.55],[5.008,-58.452],[6.028,-59.139],[8.07,-61.135],[9.193,-64.847],[9.193,-69.412],[8.121,-72.857],[5.186,-75.909],[2.175,-77.727],[-4.69,-78.108],[-7.382,-76.735],[-7.637,-76.57],[-9.87,-74.917],[-13.353,-69.831],[-13.953,-67.517],[-14.157,-65.407],[-12.498,-61.415]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.458,-271.528],"ix":2},"a":{"a":0,"k":[-2.403,-67.639],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-65,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":35,"ty":4,"nm":". 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[-14.75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[-41.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[-33.15]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[43]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[129.425]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[218.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[265.375]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[188.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[114.075]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[51.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[16.625]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.382},"o":{"x":0.333,"y":0},"t":0,"s":[430.334,274.005,0],"to":[-29.487,10.165,0],"ti":[18.835,-45.879,0]},{"i":{"x":0.667,"y":0.619},"o":{"x":0.333,"y":0.278},"t":34.646,"s":[358.625,357.625,0],"to":[-24.375,59.375,0],"ti":[56.75,0,0]},{"i":{"x":0.667,"y":0.649},"o":{"x":0.333,"y":0.312},"t":55.416,"s":[255.25,452.5,0],"to":[-56.75,0,0],"ti":[0,44.951,0]},{"i":{"x":0.667,"y":0.661},"o":{"x":0.333,"y":0.325},"t":71.49,"s":[164.102,362.201,0],"to":[0,-44.951,0],"ti":[-51.262,1.62,0]},{"i":{"x":0.667,"y":0.671},"o":{"x":0.333,"y":0.334},"t":86.041,"s":[249.738,269.12,0],"to":[51.262,-1.62,0],"ti":[-23.5,-67,0]},{"i":{"x":0.667,"y":0.683},"o":{"x":0.333,"y":0.346},"t":101.666,"s":[357.687,357.5,0],"to":[21.345,60.856,0],"ti":[-56.011,2.626,0]},{"i":{"x":0.667,"y":0.703},"o":{"x":0.333,"y":0.365},"t":118.471,"s":[465.239,451.876,0],"to":[56.011,-2.626,0],"ti":[0,55.813,0]},{"i":{"x":0.667,"y":0.796},"o":{"x":0.333,"y":0.445},"t":136.592,"s":[553.428,356.813,0],"to":[0,-55.813,0],"ti":[42.977,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.645},"t":163.379,"s":[457.977,269.531,0],"to":[-9.768,0,0],"ti":[8.673,-2.99,0]},{"t":180,"s":[430.334,274.005,0]}],"ix":2},"a":{"a":0,"k":[90.334,-278.995,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.443,-1.032],[-0.411,-1.172],[-0.983,-0.509],[-1.128,0.395],[-0.464,1.04],[0.411,1.172],[0.99,0.53],[1.086,-0.38],[0,0]],"o":[[-0.443,1.032],[0.426,1.215],[0.982,0.508],[1.129,-0.396],[0.465,-1.04],[-0.411,-1.172],[-0.99,-0.53],[0,0],[-1.172,0.411]],"v":[[88.783,-271.583],[88.735,-268.277],[90.848,-265.69],[94.015,-265.52],[96.404,-267.673],[96.485,-270.991],[94.384,-273.545],[91.27,-273.771],[91.205,-273.748]],"c":true},"ix":2},"nm":".","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-2.625,1.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":".","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0}],"markers":[{"tm":120,"cm":"1","dr":0},{"tm":150,"cm":"2","dr":0}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 7c7058ff..8bc7c8cd 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,26 +1,17 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.produceState -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ContentScale import compottie.example.shared.generated.resources.Res -import io.github.alexzhirkevich.compottie.JsonString -import io.github.alexzhirkevich.compottie.LottieAnimation import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants -import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi -import kotlin.time.TimeSource -import kotlin.time.measureTime private val GRADIENT_ELLIPSE = "files/gradient_ellipse.json" private val TEST = "files/test.json" @@ -38,13 +29,14 @@ private val MASK_ADD = "files/mask_add.json" private val DASH = "files/dash.json" private val ROUNDING_CORENERS = "files/rounding_corners.json" private val REPEATER = "files/repeater.json" +private val TEXT_WITH_PATH = "files/text_with_path.json" @OptIn(ExperimentalResourceApi::class) @Composable fun App() { val json by produceState(null){ - value = Res.readBytes(CONFETTI).decodeToString() + value = Res.readBytes(TEXT_WITH_PATH).decodeToString() } if (json != null) { diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index 81a909b5..f1ee1531 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -12,6 +12,18 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@jridgewell/gen-mapping@^0.3.0": version "0.3.4" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz#9b18145d26cf33d08576cf4c7665b28554480ed7" @@ -57,11 +69,36 @@ resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-3.2.0.tgz#3e61e21b7b2b8a6be746df1335cf91d70db2a273" integrity sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg== +"@jsonjoy.com/base64@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== + +"@jsonjoy.com/json-pack@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz#ab59c642a2e5368e8bcfd815d817143d4f3035d0" + integrity sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg== + dependencies: + "@jsonjoy.com/base64" "^1.1.1" + "@jsonjoy.com/util" "^1.1.2" + hyperdyperid "^1.2.0" + thingies "^1.20.0" + +"@jsonjoy.com/util@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.1.3.tgz#75b1c3cf21b70e665789d1ad3eabeff8b7fd1429" + integrity sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg== + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" @@ -75,14 +112,14 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.9": +"@types/bonjour@^3.5.13": version "3.5.13" resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== dependencies: "@types/node" "*" -"@types/connect-history-api-fallback@^1.3.5": +"@types/connect-history-api-fallback@^1.5.4": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== @@ -125,7 +162,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0": +"@types/estree@*", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -140,7 +177,7 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.13": +"@types/express@*", "@types/express@^4.17.21": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -201,10 +238,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== "@types/send@*": version "0.17.4" @@ -214,14 +251,14 @@ "@types/mime" "^1" "@types/node" "*" -"@types/serve-index@^1.9.1": +"@types/serve-index@^1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" -"@types/serve-static@*", "@types/serve-static@^1.13.10": +"@types/serve-static@*": version "1.15.5" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== @@ -230,24 +267,33 @@ "@types/mime" "*" "@types/node" "*" -"@types/sockjs@^0.3.33": +"@types/serve-static@^1.15.5": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.36": version "0.3.36" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== dependencies: "@types/node" "*" -"@types/ws@^8.5.1": +"@types/ws@^8.5.10": version "8.5.10" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== dependencies: "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -262,10 +308,10 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" @@ -281,15 +327,15 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/ieee754@1.11.6": version "1.11.6" @@ -310,72 +356,72 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-api-error" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^2.1.0": +"@webpack-cli/configtest@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== -"@webpack-cli/info@^2.0.1": +"@webpack-cli/info@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== -"@webpack-cli/serve@^2.0.3": +"@webpack-cli/serve@^2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== @@ -390,11 +436,6 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -403,7 +444,7 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-assertions@^1.7.6: +acorn-import-assertions@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== @@ -467,6 +508,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -474,6 +520,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -548,7 +599,7 @@ body-parser@^1.19.0: type-is "~1.6.18" unpipe "1.0.0" -bonjour-service@^1.0.11: +bonjour-service@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== @@ -583,7 +634,7 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.14.5: +browserslist@^4.21.10: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -598,6 +649,13 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -652,7 +710,7 @@ chokidar@3.5.3: optionalDependencies: fsevents "~2.3.2" -chokidar@^3.5.1, chokidar@^3.5.3: +chokidar@^3.5.1, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -797,7 +855,7 @@ cors@~2.8.5: object-assign "^4" vary "^1" -cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -835,6 +893,19 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" @@ -851,10 +922,10 @@ define-data-property@^1.1.2: es-errors "^1.3.0" gopd "^1.0.1" -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== depd@2.0.0: version "2.0.0" @@ -903,6 +974,11 @@ dom-serialize@^2.2.1: extend "^3.0.0" void-elements "^2.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -918,6 +994,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -944,10 +1025,10 @@ engine.io@~6.5.2: engine.io-parser "~5.2.1" ws "~8.11.0" -enhanced-resolve@^5.13.0: - version "5.15.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz#384391e025f099e67b4b00bfd7f0906a408214e1" - integrity sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg== +enhanced-resolve@^5.16.0: + version "5.16.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -1177,6 +1258,14 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + format-util@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" @@ -1201,11 +1290,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-monkey@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" - integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1254,17 +1338,27 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" + +glob@^10.3.7: + version "10.4.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" + integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + path-scurry "^1.11.1" glob@^7.1.3, glob@^7.1.7: version "7.2.3" @@ -1285,7 +1379,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -1339,10 +1433,10 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -html-entities@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" - integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== +html-entities@^2.4.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== http-deceiver@^1.2.7: version "1.2.7" @@ -1400,6 +1494,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +hyperdyperid@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -1450,10 +1549,10 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== +ipaddr.js@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== is-binary-path@~2.1.0: version "2.1.0" @@ -1469,10 +1568,10 @@ is-core-module@^2.13.0: dependencies: hasown "^2.0.0" -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== is-extglob@^2.1.1: version "2.1.1" @@ -1491,6 +1590,18 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-network-error@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.1.0.tgz#d26a760e3770226d11c169052f266a4803d9c997" + integrity sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1523,12 +1634,12 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== dependencies: - is-docker "^2.0.0" + is-inside-container "^1.0.0" isarray@~1.0.0: version "1.0.0" @@ -1550,6 +1661,15 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +jackspeak@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.1.2.tgz#eada67ea949c6b71de50f1b09c92a961897b90ab" + integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -1609,19 +1729,19 @@ karma-sourcemap-loader@0.4.0: dependencies: graceful-fs "^4.2.10" -karma-webpack@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" - integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== +karma-webpack@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.1.tgz#4eafd31bbe684a747a6e8f3e4ad373e53979ced4" + integrity sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ== dependencies: glob "^7.1.3" - minimatch "^3.0.4" + minimatch "^9.0.3" webpack-merge "^4.1.5" -karma@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.2.tgz#a983f874cee6f35990c4b2dcc3d274653714de8e" - integrity sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ== +karma@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.3.tgz#763e500f99597218bbb536de1a14acc4ceea7ce8" + integrity sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q== dependencies: "@colors/colors" "1.5.0" body-parser "^1.19.0" @@ -1642,7 +1762,7 @@ karma@6.4.2: qjobs "^1.2.0" range-parser "^1.2.1" rimraf "^3.0.2" - socket.io "^4.4.1" + socket.io "^4.7.2" source-map "^0.6.1" tmp "^0.2.1" ua-parser-js "^0.7.30" @@ -1653,7 +1773,7 @@ kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -launch-editor@^2.6.0: +launch-editor@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== @@ -1704,17 +1824,25 @@ log4js@^6.4.1: rfdc "^1.3.0" streamroller "^3.1.5" +lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== +memfs@^4.6.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.9.2.tgz#42e7b48207268dad8c9c48ea5d4952c5d3840433" + integrity sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ== dependencies: - fs-monkey "^1.0.4" + "@jsonjoy.com/json-pack" "^1.0.3" + "@jsonjoy.com/util" "^1.1.2" + sonic-forest "^1.0.0" + tslib "^2.0.0" merge-descriptors@1.0.1: version "1.0.1" @@ -1785,11 +1913,30 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.3, minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -1797,10 +1944,10 @@ mkdirp@^0.5.5: dependencies: minimist "^1.2.6" -mocha@10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== +mocha@10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.3.0.tgz#0e185c49e6dccf582035c05fa91084a4ff6e3fe9" + integrity sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" @@ -1809,13 +1956,12 @@ mocha@10.2.0: diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.2.0" + glob "8.1.0" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" @@ -1847,11 +1993,6 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -1899,7 +2040,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1: +on-finished@2.4.1, on-finished@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -1932,14 +2073,15 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^8.0.9: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== +open@^10.0.3: + version "10.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" + integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" p-limit@^2.2.0: version "2.3.0" @@ -1969,12 +2111,13 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== +p-retry@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.0.tgz#8d6df01af298750009691ce2f9b3ad2d5968f3bd" + integrity sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA== dependencies: - "@types/retry" "0.12.0" + "@types/retry" "0.12.2" + is-network-error "^1.0.0" retry "^0.13.1" p-try@^2.0.0: @@ -2007,6 +2150,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -2180,6 +2331,18 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^5.0.5: + version "5.0.7" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.7.tgz#27bddf202e7d89cb2e0381656380d1734a854a74" + integrity sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg== + dependencies: + glob "^10.3.7" + +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -2195,7 +2358,7 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -schema-utils@^3.1.1, schema-utils@^3.1.2: +schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -2204,7 +2367,7 @@ schema-utils@^3.1.1, schema-utils@^3.1.2: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -2219,7 +2382,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.1.1: +selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -2344,6 +2507,11 @@ signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + socket.io-adapter@~2.5.2: version "2.5.4" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" @@ -2360,10 +2528,10 @@ socket.io-parser@~4.2.4: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -socket.io@^4.4.1: - version "4.7.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.4.tgz#2401a2d7101e4bdc64da80b140d5d8b6a8c7738b" - integrity sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw== +socket.io@^4.7.2: + version "4.7.5" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" + integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== dependencies: accepts "~1.3.4" base64id "~2.0.0" @@ -2382,17 +2550,23 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" +sonic-forest@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sonic-forest/-/sonic-forest-1.0.3.tgz#81363af60017daba39b794fce24627dc412563cb" + integrity sha512-dtwajos6IWMEWXdEbW1IkEkyL2gztCAgDplRIX+OT5aRKnEd5e7r7YCxRgXZdhRP1FBdOBf8axeTPhzDv8T4wQ== + dependencies: + tree-dump "^1.0.0" + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-loader@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2" - integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA== +source-map-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-5.0.0.tgz#f593a916e1cc54471cfc8851b905c8a845fc7e38" + integrity sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA== dependencies: - abab "^2.0.6" iconv-lite "^0.6.3" source-map-js "^1.0.2" @@ -2451,7 +2625,7 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2460,6 +2634,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -2474,13 +2657,20 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -2515,7 +2705,7 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser-webpack-plugin@^5.3.7: +terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== @@ -2536,6 +2726,11 @@ terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" +thingies@^1.20.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" + integrity sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g== + thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" @@ -2558,6 +2753,16 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tree-dump@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.0.1.tgz#b448758da7495580e6b7830d6b7834fca4c45b96" + integrity sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA== + +tslib@^2.0.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -2566,10 +2771,10 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typescript@5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" - integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== +typescript@5.4.3: + version "5.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" + integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== ua-parser-js@^0.7.30: version "0.7.37" @@ -2631,10 +2836,10 @@ void-elements@^2.0.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +watchpack@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -2646,15 +2851,15 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webpack-cli@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.0.tgz#abc4b1f44b50250f2632d8b8b536cfe2f6257891" - integrity sha512-a7KRJnCxejFoDpYTOwzm5o21ZXMaNqtRlvS183XzGDUPRdVEzJNImcQokqYZ8BNTnk9DkKiuWxw75+DCCoZ26w== +webpack-cli@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.0" - "@webpack-cli/info" "^2.0.1" - "@webpack-cli/serve" "^2.0.3" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" colorette "^2.0.14" commander "^10.0.1" cross-spawn "^7.0.3" @@ -2665,52 +2870,53 @@ webpack-cli@5.1.0: rechoir "^0.8.0" webpack-merge "^5.7.3" -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== +webpack-dev-middleware@^7.1.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz#2af00538b6e4eda05f5afdd5d711dbebc05958f7" + integrity sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA== dependencies: colorette "^2.0.10" - memfs "^3.4.3" + memfs "^4.6.0" mime-types "^2.1.31" + on-finished "^2.4.1" range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@4.15.0: - version "4.15.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21" - integrity sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" +webpack-dev-server@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#cb6ea47ff796b9251ec49a94f24a425e12e3c9b8" + integrity sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" + bonjour-service "^1.2.1" + chokidar "^3.6.0" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^2.0.0" default-gateway "^6.0.3" express "^4.17.3" graceful-fs "^4.2.6" - html-entities "^2.3.2" + html-entities "^2.4.0" http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" + ipaddr.js "^2.1.0" + launch-editor "^2.6.1" + open "^10.0.3" + p-retry "^6.2.0" + rimraf "^5.0.5" + schema-utils "^4.2.0" + selfsigned "^2.4.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" + webpack-dev-middleware "^7.1.0" + ws "^8.16.0" webpack-merge@^4.1.5: version "4.2.2" @@ -2733,34 +2939,34 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@5.82.0: - version "5.82.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d" - integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg== +webpack@5.91.0: + version "5.91.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" + integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.13.0" + enhanced-resolve "^5.16.0" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" + graceful-fs "^4.2.11" json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.2" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: @@ -2801,7 +3007,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -2810,15 +3016,24 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^8.13.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== +ws@^8.16.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== ws@~8.11.0: version "8.11.0" From 36502e0350b424bfbfc846a4c33a74a91a19df21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 3 Jun 2024 22:10:26 +0300 Subject: [PATCH 021/100] fix position keyframes with empty nangents --- .../compottie/internal/animation/AnimatedVector2.kt | 10 +++++----- .../compottie/internal/animation/VectorKeyframe.kt | 10 +++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 36ca3b0d..f0abb364 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -64,9 +64,9 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { emptyValue = Offset.Zero, map = { s, e, p, _ -> - if (inTangent != null && outTangent != null && !s.contentEquals(e)) { + if (withTangents && !s.contentEquals(e)) { path.reset() - path.createPath(s, e, outTangent, inTangent) + path.createPath(s, e, outTangent!!, inTangent!!) pathMeasure.setPath(path, false) val length = pathMeasure.length @@ -96,7 +96,7 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { } } -fun Path.createPath( +private fun Path.createPath( startPoint : FloatArray, endPoint: FloatArray, cp1: FloatArray, @@ -105,7 +105,7 @@ fun Path.createPath( moveTo(startPoint[0], startPoint[1]) - if ((cp1.hupot() != 0f || cp2.hupot() != 0f)) { + if ((cp1.hypot() != 0f || cp2.hypot() != 0f)) { cubicTo( startPoint[0] + cp1[0], startPoint[1] + cp1[1], endPoint[0] + cp2[0], endPoint[1] + cp2[1], @@ -116,4 +116,4 @@ fun Path.createPath( } } -private fun FloatArray.hupot() = hypot(this[0], this[1]) \ No newline at end of file +private fun FloatArray.hypot() = hypot(this[0], this[1]) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index 43d1a8b0..be0d6cbe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -32,7 +32,15 @@ internal class VectorKeyframe( @SerialName("to") val outTangent: FloatArray? = null, -) : Keyframe() +) : Keyframe() { + + val withTangents = inTangent != null + && outTangent != null + && !inTangent.ofNulls() && + !outTangent.ofNulls() +} + +private fun FloatArray.ofNulls() = all { it == 0f } From 71e0046bdcafc5258796235eb7bd691c8dc32f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 3 Jun 2024 23:12:54 +0300 Subject: [PATCH 022/100] fix position keyframes with empty tangents --- .../internal/platform/PlatformPath.android.kt | 25 +++--- .../internal/animation/AnimatedVector2.kt | 15 ++-- .../internal/animation/VectorKeyframe.kt | 8 +- .../composeResources/files/text.json | 77 +++++++++++++++++++ example/shared/src/commonMain/kotlin/App.kt | 4 +- 5 files changed, 99 insertions(+), 30 deletions(-) create mode 100644 example/shared/src/commonMain/composeResources/files/text.json diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt index 6ca87968..9aa8fe1e 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt @@ -38,9 +38,13 @@ private class AndroidExtendedPathMeasure( override val length: Float get() = internalPathMeasure.length - private var positionArray: FloatArray? = null + private val positionArray: FloatArray by lazy { + FloatArray(2) + } - private var tangentArray: FloatArray? = null + private val tangentArray: FloatArray by lazy { + FloatArray(2) + } override fun getSegment( startDistance: Float, @@ -63,15 +67,10 @@ private class AndroidExtendedPathMeasure( override fun getPosition( distance: Float ): Offset { - if (positionArray == null) { - positionArray = FloatArray(2) - } - if (tangentArray == null) { - tangentArray = FloatArray(2) - } + val result = internalPathMeasure.getPosTan(distance, positionArray, tangentArray) return if (result) { - Offset(positionArray!![0], positionArray!![1]) + Offset(positionArray[0], positionArray[1]) } else { Offset.Unspecified } @@ -80,15 +79,9 @@ private class AndroidExtendedPathMeasure( override fun getTangent( distance: Float ): Offset { - if (positionArray == null) { - positionArray = FloatArray(2) - } - if (tangentArray == null) { - tangentArray = FloatArray(2) - } val result = internalPathMeasure.getPosTan(distance, positionArray, tangentArray) return if (result) { - Offset(tangentArray!![0], tangentArray!![1]) + Offset(tangentArray[0], tangentArray[1]) } else { Offset.Unspecified } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index f0abb364..d0790eee 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -1,6 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.isSpecified +import androidx.compose.ui.geometry.isUnspecified import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.util.lerp @@ -64,9 +66,9 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { emptyValue = Offset.Zero, map = { s, e, p, _ -> - if (withTangents && !s.contentEquals(e)) { + if (inTangent != null && outTangent != null && !s.contentEquals(e)) { path.reset() - path.createPath(s, e, outTangent!!, inTangent!!) + path.createPath(s, e, outTangent, inTangent) pathMeasure.setPath(path, false) val length = pathMeasure.length @@ -104,15 +106,16 @@ private fun Path.createPath( ) { moveTo(startPoint[0], startPoint[1]) - if ((cp1.hypot() != 0f || cp2.hypot() != 0f)) { cubicTo( - startPoint[0] + cp1[0], startPoint[1] + cp1[1], - endPoint[0] + cp2[0], endPoint[1] + cp2[1], + startPoint[0] + cp1[0], + startPoint[1] + cp1[1], + endPoint[0] + cp2[0], + endPoint[1] + cp2[1], endPoint[0], endPoint[1] ) } else { - lineTo(endPoint[0], endPoint[0]) + lineTo(endPoint[0], endPoint[1]) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index be0d6cbe..a103cdad 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -32,13 +32,7 @@ internal class VectorKeyframe( @SerialName("to") val outTangent: FloatArray? = null, -) : Keyframe() { - - val withTangents = inTangent != null - && outTangent != null - && !inTangent.ofNulls() && - !outTangent.ofNulls() -} +) : Keyframe() private fun FloatArray.ofNulls() = all { it == 0f } diff --git a/example/shared/src/commonMain/composeResources/files/text.json b/example/shared/src/commonMain/composeResources/files/text.json new file mode 100644 index 00000000..6be3da1c --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/text.json @@ -0,0 +1,77 @@ +{ + "v": "5.5.2", + "fr": 60, + "ip": 0, + "op": 120, + "w": 300, + "h": 100, + "ddd": 0, + "assets": [], + "fonts": { + "list": [ + { + "fPath": "https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf", + "fFamily": "Ubuntu", + "fStyle": "Light Italic", + "fName": "Ubuntu Light Italic", + "origin": 3 + } + ] + }, + "layers": [ + { + "nm": "Text Layer", + "ty": 5, + "sr": 1, + "ks": { + "p": { + "k": [ + 5, + 80 + ], + "a": 0 + } + }, + "ip": 0, + "op": 120, + "st": 0, + "t": { + "a": [], + "d": { + "k": [ + { + "s": { + "f": "Ubuntu Light Italic", + "fc": [ + 0, + 0, + 0 + ], + "s": 100, + "t": "Hello", + "j": 0, + "sc": [ + 0, + 0, + 0 + ], + "sw": 0 + }, + "t": 0 + } + ] + }, + "m": { + "a": { + "k": [ + 0, + 0 + ], + "a": 0 + } + }, + "p": {} + } + } + ] +} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 8bc7c8cd..05047717 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -30,13 +30,14 @@ private val DASH = "files/dash.json" private val ROUNDING_CORENERS = "files/rounding_corners.json" private val REPEATER = "files/repeater.json" private val TEXT_WITH_PATH = "files/text_with_path.json" +private val TEXT = "files/text.json" @OptIn(ExperimentalResourceApi::class) @Composable fun App() { val json by produceState(null){ - value = Res.readBytes(TEXT_WITH_PATH).decodeToString() + value = Res.readBytes(ROBOT).decodeToString() } if (json != null) { @@ -48,6 +49,7 @@ fun App() { modifier = Modifier.fillMaxSize().background(Color.LightGray), painter = rememberLottiePainter( composition = composition, +// progress = {.8f} iterations = LottieConstants.IterateForever ), contentDescription = null From 623b55c1cb46172453107c8db63e9ef5ee30552b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 4 Jun 2024 03:37:52 +0300 Subject: [PATCH 023/100] blur effect --- .../platform/PlatformShader.android.kt | 13 ++ .../compottie/LottieComposition.kt | 7 +- .../compottie/LottieCompositionResult.kt | 3 +- .../compottie/LottieCompositionSpec.kt | 54 ++++++- .../alexzhirkevich/compottie/LottiePainter.kt | 133 ++++++++------- .../animateLottieCompositionAsState.kt | 6 +- .../assets/CompoundLottieAssetsFetcher.kt | 6 +- ...eAssetFetcher.kt => LottieAssetManager.kt} | 23 ++- .../compottie/internal/LottieData.kt | 2 +- .../compottie/internal/LottieJson.kt | 29 +++- .../compottie/internal/assets/LottieAsset.kt | 9 +- .../compottie/internal/effects/BlurEffect.kt | 16 ++ .../compottie/internal/effects/Effect.kt | 6 - .../compottie/internal/effects/EffectValue.kt | 27 ++++ .../compottie/internal/effects/LayerEffect.kt | 14 ++ .../compottie/internal/helpers/FillRule.kt | 21 +++ .../internal/helpers/LottieBlendMode.kt | 2 +- .../internal/layers/BaseCompositionLayer.kt | 2 + .../compottie/internal/layers/BaseLayer.kt | 32 ++-- .../internal/layers/CompositionLayer.kt | 15 ++ .../compottie/internal/layers/ImageLayer.kt | 11 +- .../compottie/internal/layers/Layer.kt | 32 +++- .../compottie/internal/layers/NullLayer.kt | 6 +- .../internal/layers/PrecompositionLayer.kt | 41 +++-- .../compottie/internal/layers/ShapeLayer.kt | 18 ++- .../internal/layers/SolidColorLayer.kt | 151 ++++++++++++++++++ .../compottie/internal/layers/TextLayer.kt | 38 ++++- .../compottie/internal/layers/VisualLayer.kt | 37 ----- .../internal/platform/PlatformShader.kt | 3 + .../internal/shapes/BaseStrokeShape.kt | 6 +- .../compottie/internal/shapes/EllipseShape.kt | 4 + .../compottie/internal/shapes/FillShape.kt | 32 +++- .../internal/shapes/GradientFillShape.kt | 22 ++- .../internal/shapes/GradientStrokeShape.kt | 7 +- .../compottie/internal/shapes/GroupShape.kt | 14 +- .../internal/shapes/MergePathsShape.kt | 6 + .../compottie/internal/shapes/PathShape.kt | 4 + .../internal/shapes/PolystarShape.kt | 4 + .../compottie/internal/shapes/RectShape.kt | 4 + .../internal/shapes/RepeaterShape.kt | 4 + .../compottie/internal/shapes/RoundShape.kt | 4 + .../compottie/internal/shapes/Shape.kt | 19 ++- .../internal/shapes/SolidStrokeShape.kt | 5 + .../internal/shapes/TransformShape.kt | 6 + .../internal/shapes/TrimPathShape.kt | 6 + .../internal/platform/PlatformShader.skiko.kt | 13 ++ .../composeResources/files/image_asset.json | 72 +++++++++ .../composeResources/files/images/blep.png | Bin 0 -> 53877 bytes .../composeResources/files/test.json | 1 - example/shared/src/commonMain/kotlin/App.kt | 123 +++++++++----- 50 files changed, 880 insertions(+), 233 deletions(-) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/{LottieAssetFetcher.kt => LottieAssetManager.kt} (54%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/FillRule.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt create mode 100644 example/shared/src/commonMain/composeResources/files/image_asset.json create mode 100644 example/shared/src/commonMain/composeResources/files/images/blep.png diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt index 0e081c97..139cb341 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt @@ -1,9 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.platform +import android.graphics.Bitmap +import android.graphics.BlurMaskFilter import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.LinearGradientShader import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.RadialGradientShader import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.graphics.setFrom @@ -48,3 +51,13 @@ internal actual fun MakeRadialGradient( setLocalMatrix(tempMatrix) } + +internal actual fun Paint.setBlurMaskFiler(radius: Float) { + val fPaint = asFrameworkPaint() + + if (radius > 0f) { + fPaint.setMaskFilter(BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)) + } else { + fPaint.setMaskFilter(null) + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index db6b296f..4ef941b5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable +import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.Font @@ -45,12 +46,10 @@ fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionR LottieCompositionResultImpl() } - val fontFamilyResolver = LocalFontFamilyResolver.current - - LaunchedEffect(spec, fontFamilyResolver) { + LaunchedEffect(result) { withContext(Dispatchers.Default) { try { - result.complete(spec.load(fontFamilyResolver)) + result.complete(spec.load()) } catch (c: CancellationException) { throw c } catch (t: Throwable) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt index b5ab6601..96981cf7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt @@ -80,7 +80,8 @@ interface LottieCompositionResult : State { @Stable internal class LottieCompositionResultImpl : LottieCompositionResult { - private val compositionDeferred = CompletableDeferred() + + private var compositionDeferred = CompletableDeferred() override var value: LottieComposition? by mutableStateOf(null) private set diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 8e962d4e..58c90043 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -6,14 +6,36 @@ import androidx.compose.ui.text.font.FontFamily import kotlin.jvm.JvmInline @Stable -sealed interface LottieCompositionSpec { - suspend fun load(fontFamilyResolver: FontFamily.Resolver) : LottieComposition +interface LottieCompositionSpec { + + suspend fun load() : LottieComposition companion object { + + + /** + * [LottieComposition] from a [jsonString] + */ @Stable + @Deprecated( + "Use overload with lazy loading instead", + replaceWith = ReplaceWith( + "JsonString { jsonString }" + ) + ) fun JsonString( jsonString: String ): LottieCompositionSpec = JsonStringImpl(jsonString) + + /** + * [LottieComposition] from a lazy [jsonString] + * + * Lambda should be stable. Otherwise this spec must be remembered if created in composition + * */ + @Stable + fun JsonString( + jsonString: suspend () -> String + ): LottieCompositionSpec = LazyJsonString(jsonString) } } @@ -24,7 +46,7 @@ private value class JsonStringImpl( private val jsonString: String ) : LottieCompositionSpec { - override suspend fun load(fontFamilyResolver: FontFamily.Resolver): LottieComposition { + override suspend fun load(): LottieComposition { return LottieComposition.parse(jsonString) } @@ -33,3 +55,29 @@ private value class JsonStringImpl( } } +@Immutable +private class LazyJsonString( + private val jsonString : suspend () -> String +) : LottieCompositionSpec { + + override suspend fun load(): LottieComposition { + println("READING") + return LottieComposition.parse(jsonString()) + } + + override fun toString(): String { + return "LazyJsonString(jsonString='$jsonString')" + } + + override fun equals(other: Any?): Boolean { + return (other as? LazyJsonString)?.jsonString == jsonString + } + + override fun hashCode(): Int { + return jsonString.hashCode() + } + + +} + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 9ec962c2..5e09506b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -14,39 +14,26 @@ import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.drawscope.translate -import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize -import androidx.compose.ui.util.fastForEach -import androidx.compose.ui.util.fastForEachReversed -import androidx.compose.ui.util.fastJoinToString -import io.github.alexzhirkevich.compottie.assets.LottieAssetsFetcher +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher -import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties -import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer -import io.github.alexzhirkevich.compottie.internal.platform.getMatrix -import io.github.alexzhirkevich.compottie.internal.utils.preScale -import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlin.math.roundToInt -import kotlin.time.Duration import kotlin.time.measureTime @Composable @@ -59,10 +46,9 @@ fun rememberLottiePainter( speed: Float = 1f, iterations: Int = 1, cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, - ignoreSystemAnimatorScale: Boolean = false, useCompositionFrameRate: Boolean = false, maintainOriginalImageBounds: Boolean = false, - assetsFetcher: LottieAssetsFetcher = NoOpAssetsFetcher, + assetManager: LottieAssetsManager = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, ) : Painter { val progress = animateLottieCompositionAsState( @@ -74,7 +60,6 @@ fun rememberLottiePainter( speed = speed, iterations = iterations, cancellationBehavior = cancellationBehavior, - ignoreSystemAnimatorScale = ignoreSystemAnimatorScale, useCompositionFrameRate = useCompositionFrameRate ) @@ -82,7 +67,7 @@ fun rememberLottiePainter( composition = composition, progress = { progress.value }, maintainOriginalImageBounds = maintainOriginalImageBounds, - assetsFetcher = assetsFetcher, + assetsFetcher = assetManager, onLoadError = onLoadError ) } @@ -93,61 +78,39 @@ fun rememberLottiePainter( progress : () -> Float, maintainOriginalImageBounds: Boolean = false, clipTextToBoundingBoxes: Boolean = false, - assetsFetcher: LottieAssetsFetcher = NoOpAssetsFetcher, + assetsFetcher: LottieAssetsManager = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, ) : Painter { val updatedOnLoadError by rememberUpdatedState(onLoadError) - val updatedComposition by rememberUpdatedState(composition) val fontFamilyResolver = LocalFontFamilyResolver.current val painter by produceState( EmptyPainter, - composition, assetsFetcher, + composition, maintainOriginalImageBounds, clipTextToBoundingBoxes, fontFamilyResolver ) { - snapshotFlow { updatedComposition } - .filterNotNull() - .collectLatest { - value = try { - coroutineScope { - it.lottieData.assets.map { asset -> - withContext(Dispatchers.Default) { - when (asset) { - is LottieAsset.ImageAsset -> { - if (asset.bitmap == null) { - launch { - assetsFetcher - .fetch(asset.id, asset.path, asset.fileName) - ?.let { - asset.setBitmap(ImageBitmap.fromBytes(it)) - } - } - } else null - } + if (composition != null) { + value = try { - else -> null - } - } - } - }.filterNotNull().joinAll() - - LottiePainter( - composition = it, - maintainOriginalImageBounds = maintainOriginalImageBounds, - clipTextToBoundingBoxes = clipTextToBoundingBoxes, - fontFamilyResolver = fontFamilyResolver - ) - } catch (t: Throwable) { - updatedOnLoadError(t) - } + composition.preloadAssets(assetsFetcher) + + LottiePainter( + composition = composition, + maintainOriginalImageBounds = maintainOriginalImageBounds, + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + fontFamilyResolver = fontFamilyResolver + ) + } catch (t: Throwable) { + updatedOnLoadError(t) } + } } LaunchedEffect(painter) { @@ -194,14 +157,12 @@ private class LottiePainter( p.coerceAtLeast(0f) } - val compositionLayer: BaseCompositionLayer = if ( - composition.lottieData.layers.size == 1 && - composition.lottieData.layers[0] is PrecompositionLayer - ) { - composition.lottieData.layers[0] as BaseCompositionLayer - } else { - CompositionLayer(composition) - } + val compositionLayer: BaseCompositionLayer = composition.lottieData + .layers + .takeIf { + it.size == 1 // don't create extra composition layer + }?.first() as? BaseCompositionLayer // if Precomposition is the only layer + ?: CompositionLayer(composition) init { @@ -241,15 +202,47 @@ private class LottiePainter( matrix.reset() - scale(scale.scaleX, scale.scaleY) { - translate(offset.x.toFloat(), offset.y.toFloat()) { - try { - compositionLayer.draw(this, matrix, alpha, currentFrame) - } catch (t: Throwable) { - println("Lottie crashed in draw :(") - t.printStackTrace() + measureTime { + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + try { + compositionLayer.draw(this, matrix, alpha, currentFrame) + } catch (t: Throwable) { + println("Lottie crashed in draw :(") + t.printStackTrace() + } } } + }.let { + if (it.inWholeMilliseconds > 0) { + println(it.inWholeMilliseconds) + } } } +} + +private suspend fun LottieComposition.preloadAssets( + assetsFetcher: LottieAssetsManager +){ + coroutineScope { + lottieData.assets.map { asset -> + withContext(Dispatchers.Default) { + when (asset) { + is LottieAsset.ImageAsset -> { + if (asset.bitmap == null) { + launch { + assetsFetcher + .fetch(asset.id, asset.path, asset.fileName) + ?.let { + asset.setBitmap(ImageBitmap.fromBytes(it)) + } + } + } else null + } + + else -> null + } + } + } + }.filterNotNull().joinAll() } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt index 99bdf5e1..3e6df03e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt @@ -49,7 +49,6 @@ fun animateLottieCompositionAsState( speed: Float = 1f, iterations: Int = 1, cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, - ignoreSystemAnimatorScale: Boolean = false, useCompositionFrameRate: Boolean = false, ): LottieAnimationState { @@ -60,13 +59,12 @@ fun animateLottieCompositionAsState( var wasPlaying by remember { mutableStateOf(isPlaying) } // Dividing by 0 correctly yields Float.POSITIVE_INFINITY here. - val actualSpeed = if (ignoreSystemAnimatorScale) speed else speed //TODO LaunchedEffect( composition, isPlaying, clipSpec, - actualSpeed, + speed, iterations, ) { if (isPlaying && !wasPlaying && restartOnPlay) { @@ -79,7 +77,7 @@ fun animateLottieCompositionAsState( composition, iterations = iterations, reverseOnRepeat = reverseOnRepeat, - speed = actualSpeed, + speed = speed, clipSpec = clipSpec, initialProgress = animatable.progress, continueFromPreviousAnimate = false, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt index f7f594ef..0cda3437 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt @@ -1,10 +1,10 @@ package io.github.alexzhirkevich.compottie.assets internal class CompoundLottieAssetsFetcher( - private val localFetcher: LottieAssetsFetcher, - private val remoteFetcher : LottieAssetsFetcher, + private val localFetcher: LottieAssetsManager, + private val remoteFetcher : LottieAssetsManager, private val cache : LottieAssetsCache -) : LottieAssetsFetcher { +) : LottieAssetsManager { override suspend fun fetch(id: String, path: String, name: String): ByteArray? { return if (path.startsWith("https://", true) || diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetFetcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt similarity index 54% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetFetcher.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt index 991b2f66..564a133e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetFetcher.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt @@ -1,9 +1,14 @@ package io.github.alexzhirkevich.compottie.assets +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.runtime.remember + /** * Used to fetch lottie assets that are not embedded to the animation JSON file * */ -fun interface LottieAssetsFetcher { +@Stable +fun interface LottieAssetsManager { /** * Fetch asset @@ -20,13 +25,21 @@ fun interface LottieAssetsFetcher { companion object { fun Compound( - networkFetcher: LottieAssetsFetcher, - localFetcher: LottieAssetsFetcher, + networkFetcher: LottieAssetsManager, + localFetcher: LottieAssetsManager, cache: LottieAssetsCache - ): LottieAssetsFetcher = CompoundLottieAssetsFetcher(networkFetcher, localFetcher, cache) + ): LottieAssetsManager = CompoundLottieAssetsFetcher(networkFetcher, localFetcher, cache) } } -internal val NoOpAssetsFetcher = LottieAssetsFetcher { _, _, _ -> null } + +@Composable +fun rememberLottieAssetsManager( + fetch : suspend (id: String, path: String, name: String) -> ByteArray +) : LottieAssetsManager { + return remember { LottieAssetsManager(fetch) } +} + +internal val NoOpAssetsFetcher = LottieAssetsManager { _, _, _ -> null } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index 0731278c..77fab324 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -28,7 +28,7 @@ internal class LottieData( val outPoint : Float, @SerialName("nm") - val name : String, + val name : String? = null, val layers: List = emptyList(), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 469820fb..60e46899 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -5,11 +5,15 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.layers.NullLayer import io.github.alexzhirkevich.compottie.internal.layers.ShapeLayer import io.github.alexzhirkevich.compottie.internal.layers.ImageLayer import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer +import io.github.alexzhirkevich.compottie.internal.layers.SolidColorLayer +import io.github.alexzhirkevich.compottie.internal.layers.TextLayer import io.github.alexzhirkevich.compottie.internal.shapes.EllipseShape import io.github.alexzhirkevich.compottie.internal.shapes.FillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientFillShape @@ -37,14 +41,13 @@ internal val LottieJson by lazy { allowTrailingComma = true serializersModule = SerializersModule { - // all this polymorphic stuff doesn't really do anything. - // just referencing classes here to avoid them been tree-shaken by the proguard/webpack - polymorphic(Layer::class) { subclass(ShapeLayer::class) subclass(NullLayer::class) subclass(ImageLayer::class) subclass(PrecompositionLayer::class) + subclass(TextLayer::class) + subclass(SolidColorLayer::class) defaultDeserializer { NullLayer.serializer() @@ -54,7 +57,10 @@ internal val LottieJson by lazy { polymorphic(LottieAsset::class){ subclass(LottieAsset.ImageAsset::class) subclass(LottieAsset.PrecompositionAsset::class) - subclass(LottieAsset.EmptyAsset::class) + + defaultDeserializer { + LottieAsset.UnsupportedAsset.serializer() + } } polymorphic(Shape::class) { @@ -70,8 +76,23 @@ internal val LottieJson by lazy { subclass(SolidStrokeShape::class) subclass(TransformShape::class) subclass(TrimPathShape::class) + + defaultDeserializer { + Shape.UnsupportedShape.serializer() + } } + polymorphic(LayerEffect::class){ + subclass(BlurEffect::class) + + defaultDeserializer { + LayerEffect.UnsupportedEffect.serializer() + } + } + + // the rest polymorphic stuff doesn't really do anything. + // just referencing classes here to avoid them been tree-shaken by the proguard/webpack + polymorphic(AnimatedColor::class) { subclass(AnimatedColor.Default::class) subclass(AnimatedColor.Animated::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt index 793129df..aba3b686 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt @@ -84,10 +84,9 @@ internal sealed interface LottieAsset { ) : LottieAsset @Serializable - class EmptyAsset( - @SerialName("id") - override val id: String = "", - ) : LottieAsset + data object UnsupportedAsset : LottieAsset { + override val id: String get() = "" + } } private val emptyPaint = Paint() @@ -114,7 +113,7 @@ internal class AssetSerializer : JsonContentPolymorphicSerializer(L return when { "layers" in element.jsonObject.keys -> LottieAsset.PrecompositionAsset.serializer() "p" in element.jsonObject.keys -> LottieAsset.ImageAsset.serializer() - else -> LottieAsset.EmptyAsset.serializer() + else -> LottieAsset.UnsupportedAsset.serializer() } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt new file mode 100644 index 00000000..3020a5e7 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt @@ -0,0 +1,16 @@ +package io.github.alexzhirkevich.compottie.internal.effects + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("29") +internal class BlurEffect( + @SerialName("ef") + val values : List +) : LayerEffect { + + @Transient + val radius = (values[0] as EffectValue.Slider).value +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt deleted file mode 100644 index 789f5060..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/Effect.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.effects - -import kotlinx.serialization.Serializable - -@Serializable -sealed interface Effect \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt new file mode 100644 index 00000000..b2a09653 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt @@ -0,0 +1,27 @@ +package io.github.alexzhirkevich.compottie.internal.effects + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("ty") +internal sealed interface EffectValue { + + @Serializable + @SerialName("0") + class Slider( + @SerialName("v") + val value : AnimatedValue? = null + ) : EffectValue + + @Serializable + @SerialName("4") + class CheckBox( + @SerialName("v") + val value : AnimatedValue? = null + ) : EffectValue +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt new file mode 100644 index 00000000..6fbef9cf --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt @@ -0,0 +1,14 @@ +package io.github.alexzhirkevich.compottie.internal.effects + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonClassDiscriminator + +@OptIn(ExperimentalSerializationApi::class) +@Serializable +@JsonClassDiscriminator("ty") +internal sealed interface LayerEffect { + + @Serializable + data object UnsupportedEffect : LayerEffect +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/FillRule.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/FillRule.kt new file mode 100644 index 00000000..de5cccd2 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/FillRule.kt @@ -0,0 +1,21 @@ +package io.github.alexzhirkevich.compottie.internal.helpers + +import androidx.compose.ui.graphics.PathFillType +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +internal value class FillRule(val type : Int) { + companion object { + val NonZero = FillRule(1) + val EvenOdd = FillRule(2) + } +} + +internal fun FillRule.asPathFillType() : PathFillType { + return when(this){ + FillRule.NonZero -> PathFillType.NonZero + else -> PathFillType.EvenOdd + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt index 0ccf4c8f..0c36d779 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt @@ -33,7 +33,7 @@ internal fun LottieBlendMode.asComposeBlendMode() : BlendMode { private val BlendModeMapping by lazy { mapOf( - LottieBlendMode.Normal to null, + LottieBlendMode.Normal to BlendMode.SrcOver, LottieBlendMode.Multiply to BlendMode.Multiply, LottieBlendMode.Screen to BlendMode.Screen, LottieBlendMode.Overlay to BlendMode.Overlay, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index f3288ec9..a9d2d748 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -12,6 +12,7 @@ import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.platform.clipRect import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.union @@ -33,6 +34,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { abstract fun loadLayers() : List + private val layers by lazy { val l = loadLayers().filterIsInstance() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 7b379551..704eca7f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -1,8 +1,5 @@ package io.github.alexzhirkevich.compottie.internal.layers -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.setValue import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Canvas @@ -12,22 +9,20 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.unit.Density -import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.util.fastFirstOrNull import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode -import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.platform.drawRect import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.platform.setBlurMaskFiler import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.intersect import io.github.alexzhirkevich.compottie.internal.utils.overlaps @@ -38,14 +33,11 @@ import kotlin.math.min internal abstract class BaseLayer() : Layer, DrawingContent { - abstract val masks: List? - - abstract val transform: Transform override var painterProperties: PainterProperties? = null protected val boundsMatrix = Matrix() - protected val path = Path() + private val path = Path() private val matrix = Matrix() private val canvasMatrix = Matrix() @@ -73,6 +65,10 @@ internal abstract class BaseLayer() : Layer, DrawingContent { private var parentLayer: BaseLayer? = null + private val blurEffect by lazy { + effects.fastFirstOrNull { it is BlurEffect } as? BlurEffect + } + abstract fun drawLayer( drawScope: DrawScope, parentMatrix: Matrix, @@ -219,6 +215,18 @@ internal abstract class BaseLayer() : Layer, DrawingContent { this.parentLayer = layer } + override fun applyBlurEffectIfNeeded(paint: Paint, frame: Float, lastBlurRadius : Float?) : Float { + + return blurEffect?.let { + val radius = it.radius?.interpolated(frame) ?: return@let null + + if (radius != lastBlurRadius) { + paint.setBlurMaskFiler(radius) + } + return radius + } ?: 0f + } + private fun buildParentLayerListIfNeeded() { if (parentLayers != null) { return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index c960ae45..868b6d81 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -2,8 +2,11 @@ package io.github.alexzhirkevich.compottie.internal.layers import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform internal class CompositionLayer( @@ -15,7 +18,16 @@ internal class CompositionLayer( override val timeRemapping: AnimatedValue? get() = null override val masks: List? get() = null + override val effects: List get() = emptyList() + override val transform: Transform = Transform() + override val autoOrient: BooleanInt get() = BooleanInt.No + override val matteMode: MatteMode? get() = null + override val matteParent: Int? get() = null + override val matteTarget: BooleanInt? get() = null + override val clazz: String? get() = null + override val htmlId: String? get() = null + override val collapseTransform: BooleanInt get() = BooleanInt.No override val is3d: BooleanInt get() = BooleanInt.No override val hidden: Boolean get() = false @@ -23,9 +35,12 @@ internal class CompositionLayer( override val parent: Int? get() = null override val timeStretch: Float get() = 1f + override val blendMode: LottieBlendMode get() = LottieBlendMode.Normal + override val inPoint: Float get() = composition.lottieData.inPoint override val outPoint: Float get() = composition.lottieData.outPoint override val startTime: Int get() = 0 + override val name: String? = null override fun loadLayers(): List { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 24006b9a..0e3d6c58 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -11,6 +11,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.Mask import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -77,10 +78,12 @@ internal class ImageLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("ef") + override val effects: List = emptyList(), + @SerialName("refId") val refId : String, - - ) : BaseLayer(), VisualLayer { +) : BaseLayer() { @Transient private val src = MutableRect(0f,0f,0f,0f) @@ -95,12 +98,16 @@ internal class ImageLayer( painterProperties?.assets?.get(refId) as? LottieAsset.ImageAsset } + private var lastBlurRadius : Float? = null + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { val mAsset = asset ?: return val bitmap = mAsset.bitmap ?: return paint.alpha = parentAlpha + lastBlurRadius = applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + drawScope.drawIntoCanvas { canvas -> canvas.save() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index fa718924..86865a76 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,11 +1,15 @@ package io.github.alexzhirkevich.compottie.internal.layers +import androidx.compose.ui.graphics.Paint import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.unit.Density -import androidx.compose.ui.unit.LayoutDirection import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.helpers.Transform import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator @@ -32,6 +36,30 @@ internal sealed interface Layer { val name : String? var painterProperties : PainterProperties? + + val blendMode : LottieBlendMode + + val transform : Transform + + val autoOrient : BooleanInt + + val matteMode : MatteMode? + + val matteParent : Int? + + val matteTarget : BooleanInt? + + val clazz : String? + + val htmlId : String? + + val collapseTransform : BooleanInt + + val masks : List? + + val effects: List + + fun applyBlurEffectIfNeeded(paint: Paint, frame: Float, lastBlurRadius : Float?) : Float } internal val Layer.isContainerLayer get() = name == "__container" diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index b0fa4081..b48db078 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -70,7 +71,10 @@ internal class NullLayer( @SerialName("masksProperties") override val masks: List? = null, -) : BaseLayer(), VisualLayer { + + @SerialName("ef") + override val effects: List = emptyList(), +) : BaseLayer() { override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index d723661e..9ab3f62f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -1,22 +1,15 @@ package io.github.alexzhirkevich.compottie.internal.layers -import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.platform.clipRect -import io.github.alexzhirkevich.compottie.internal.utils.Utils -import io.github.alexzhirkevich.compottie.internal.utils.union import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient @SerialName("0") @Serializable @@ -62,9 +55,37 @@ internal class PrecompositionLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("ef") + override val effects: List = emptyList(), + @SerialName("ks") override val transform: Transform = Transform(), + + @SerialName("ao") + override val autoOrient: BooleanInt = BooleanInt.No, + + @SerialName("tt") + override val matteMode: MatteMode? = null, + + @SerialName("tp") + override val matteParent: Int? = null, + + @SerialName("td") + override val matteTarget: BooleanInt? = null, + + @SerialName("bm") + override val blendMode: LottieBlendMode = LottieBlendMode.Normal, + + @SerialName("cl") + override val clazz: String? = null, + + @SerialName("ln") + override val htmlId: String? = null, + + @SerialName("ct") + override val collapseTransform: BooleanInt = BooleanInt.No ) : BaseCompositionLayer() { + override fun loadLayers(): List { return (painterProperties?.assets?.get(refId) as? LottieAsset.PrecompositionAsset?) ?.layers.orEmpty() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index fc754bae..38aa43a7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -4,7 +4,7 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.content.ContentGroup -import io.github.alexzhirkevich.compottie.internal.effects.Effect +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -53,9 +53,8 @@ internal class ShapeLayer( @SerialName("nm") override val name: String? = null, - @SerialName("ef") - val effect: List = emptyList(), + override val effects: List = emptyList(), @SerialName("sr") override val timeStretch: Float = 1f, @@ -63,9 +62,6 @@ internal class ShapeLayer( @SerialName("parent") override val parent: Int? = null, - @SerialName("shapes") - val shapes: List = emptyList(), - @SerialName("tt") override val matteMode: MatteMode? = null, @@ -84,7 +80,15 @@ internal class ShapeLayer( @SerialName("masksProperties") override val masks: List? = null, -) : BaseLayer(), VisualLayer { + @SerialName("shapes") + val shapes: List = emptyList(), +) : BaseLayer() { + + init { + shapes.forEach { + it.layer = this + } + } @Transient private val contentGroup = ContentGroup( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt new file mode 100644 index 00000000..0ab1f1e9 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -0,0 +1,151 @@ +package io.github.alexzhirkevich.compottie.internal.layers + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + + +@SerialName("1") +@Serializable +internal class SolidColorLayer( + @SerialName("ks") + override val transform: Transform = Transform(), + + @SerialName("ao") + override val autoOrient: BooleanInt = BooleanInt.No, + + @SerialName("ddd") + override val is3d: BooleanInt = BooleanInt.No, + + @SerialName("ind") + override val index: Int? = null, + + @SerialName("bm") + override val blendMode: LottieBlendMode = LottieBlendMode.Normal, + + @SerialName("cl") + override val clazz: String? = null, + + @SerialName("ln") + override val htmlId: String? = null, + + @SerialName("ip") + override val inPoint: Float? = null, + + @SerialName("op") + override val outPoint: Float? = null, + + @SerialName("st") + override val startTime: Int? = null, + + @SerialName("nm") + override val name: String? = null, + + @SerialName("sr") + override val timeStretch: Float = 1f, + + @SerialName("parent") + override val parent: Int? = null, + + @SerialName("tt") + override val matteMode: MatteMode? = null, + + @SerialName("tp") + override val matteParent: Int? = null, + + @SerialName("td") + override val matteTarget: BooleanInt? = null, + + @SerialName("hd") + override val hidden: Boolean = false, + + @SerialName("ct") + override val collapseTransform: BooleanInt = BooleanInt.No, + + @SerialName("masksProperties") + override val masks: List? = null, + + @SerialName("sw") + val width : Float, + + @SerialName("sh") + val height : Float, + + @SerialName("sc") + val colorHex : String, + + @SerialName("ef") + override val effects: List = emptyList() +) : BaseLayer() { + + private val color: Color by lazy { + + val hex = colorHex.substringAfter("#") + + val chunked = hex.chunked(2).map { it.toInt(16) } + val (r, g, b) = chunked + + val a = if (chunked.size == 4) { + chunked.last() + } else 255 + + Color(red = r, green = g, blue = b, alpha = a) + } + + private val paint by lazy { + Paint().apply { + blendMode = this@SolidColorLayer.blendMode.asComposeBlendMode() + } + } + + @Transient + private val path = Path() + + override fun drawLayer( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { + + if (hidden) { + return + } + paint.color = color + + paint.alpha = (color.alpha * parentAlpha * + (transform.opacity?.interpolated(frame)?.div(100f) ?: 1f)).coerceIn(0f, 1f) + + if (paint.alpha == 0f) { + return + } + + path.reset() + + parentMatrix.map(Offset.Zero).let { path.moveTo(it.x, it.y) } + parentMatrix.map(Offset(width, 0f)).let { path.lineTo(it.x, it.y) } + parentMatrix.map(Offset(width, height)).let { path.lineTo(it.x, it.y) } + parentMatrix.map(Offset(0f, height)).let { path.lineTo(it.x, it.y) } + + path.close() + + + drawScope.drawIntoCanvas { + it.drawPath(path, paint) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index b6b6d31d..93eb1a2b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -5,14 +5,11 @@ import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.DrawStyle import androidx.compose.ui.graphics.drawscope.Fill import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.layout.MeasureResult import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextMeasurer import androidx.compose.ui.text.drawText @@ -24,8 +21,11 @@ import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastForEachIndexed import io.github.alexzhirkevich.compottie.internal.animation.toColor +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.text.TextData import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument @@ -76,9 +76,37 @@ internal class TextLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("ef") + override val effects: List = emptyList(), + @SerialName("t") - private val textData: TextData -) : BaseLayer() { + private val textData: TextData, + + @SerialName("ao") + override val autoOrient: BooleanInt = BooleanInt.No, + + @SerialName("tt") + override val matteMode: MatteMode? = null, + + @SerialName("tp") + override val matteParent: Int? = null, + + @SerialName("td") + override val matteTarget: BooleanInt? = null, + + @SerialName("bm") + override val blendMode: LottieBlendMode = LottieBlendMode.Normal, + + @SerialName("cl") + override val clazz: String? = null, + + @SerialName("ln") + override val htmlId: String? = null, + + @SerialName("ct") + override val collapseTransform: BooleanInt = BooleanInt.No + + ) : BaseLayer() { @Transient private val fillPaint = DrawProperties(Fill) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt deleted file mode 100644 index a9ded47a..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/VisualLayer.kt +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.layers - -import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode -import io.github.alexzhirkevich.compottie.internal.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.helpers.Mask -import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.JsonClassDiscriminator - -@OptIn(ExperimentalSerializationApi::class) -@JsonClassDiscriminator("ty") -internal sealed interface VisualLayer : Layer { - - val transform : Transform? - - val autoOrient : BooleanInt - - val matteMode : MatteMode? - - val matteParent : Int? - - val matteTarget : BooleanInt? - - val blendMode: LottieBlendMode - - val clazz : String? - - val htmlId : String? - - val collapseTransform : BooleanInt - - val masks : List? -} - - - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 10457809..a00a6d8c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 @@ -11,6 +12,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.GradientType import kotlin.math.hypot private val CACHE_LIMIT = 15 + internal fun GradientShader( type: GradientType, startPoint: AnimatedVector2, @@ -147,3 +149,4 @@ internal expect fun MakeRadialGradient( matrix: Matrix ) : Shader +internal expect fun Paint.setBlurMaskFiler(radius: Float) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index b546f808..6f127506 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -69,7 +69,7 @@ internal fun LineCap.asStrokeCap() : StrokeCap { } } -internal abstract class BaseStrokeShape() : DrawingContent { +internal abstract class BaseStrokeShape() : Shape, DrawingContent { abstract val opacity: AnimatedValue abstract val strokeWidth: AnimatedValue @@ -105,6 +105,8 @@ internal abstract class BaseStrokeShape() : DrawingContent { private var roundShape : RoundShape? = null + private var lastBlurRadius : Float? = null + override fun draw( drawScope: DrawScope, parentMatrix: Matrix, @@ -121,6 +123,8 @@ internal abstract class BaseStrokeShape() : DrawingContent { applyDashPatternIfNeeded(parentMatrix, frame) + lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + roundShape?.applyTo(paint, frame) drawScope.drawIntoCanvas { canvas -> diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 787daaa5..7ba5568f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -6,6 +6,7 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -33,6 +34,9 @@ internal class EllipseShape( val size : AnimatedVector2, ) : Shape, PathContent { + @Transient + override lateinit var layer: Layer + @Transient private val path = Path() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 15b480dc..bbfd111d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathFillType import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach @@ -14,6 +15,10 @@ import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.FillRule +import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType +import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -43,20 +48,36 @@ internal class FillShape( @SerialName("c") val color : AnimatedColor, + + @SerialName("r") + val fillRule : FillRule? = null, + ) : Shape, DrawingContent { @Transient - private val path = Path() + override lateinit var layer: Layer @Transient - private var paths: List = emptyList() + private val path = Path().apply { + fillRule?.asPathFillType()?.let { + fillType = it + } + } @Transient - private val paint = Paint() + private var paths: List = emptyList() + + private val paint by lazy { + Paint().apply { + layer.blendMode.asComposeBlendMode() + } + } @Transient private var roundShape : RoundShape? = null + private var lastBlurRadius : Float? = null + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { if (hidden) { @@ -69,13 +90,16 @@ internal class FillShape( (parentAlpha * it / 100f).coerceIn(0f, 1f) } ?: parentAlpha + roundShape?.applyTo(paint, frame) + + lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + path.reset() paths.fastForEach { path.addPath(it.getPath(frame), parentMatrix) } - roundShape?.applyTo(paint, frame) drawScope.drawIntoCanvas { canvas -> canvas.drawPath(path, paint) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 28f31fea..11c2fa96 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.graphics.BlurEffect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -15,6 +16,9 @@ import io.github.alexzhirkevich.compottie.internal.animation.GradientType import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.helpers.FillRule +import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType +import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.set @@ -61,11 +65,21 @@ internal class GradientFillShape( @SerialName("g") val colors : GradientColors, + + @SerialName("r") + val fillRule : FillRule? = null, ) : Shape, DrawingContent { @Transient + override lateinit var layer: Layer + + @Transient + private val path = Path().apply { + fillRule?.asPathFillType()?.let { + fillType = it + } + } - private val path = Path() @Transient private var paths: List = emptyList() @@ -78,6 +92,8 @@ internal class GradientFillShape( @Transient private var roundShape : RoundShape? = null + private var lastBlurRadius : Float? = null + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { paint.shader = GradientShader( @@ -97,13 +113,15 @@ internal class GradientFillShape( parentAlpha } + lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + + path.reset() paths.fastForEach { path.addPath(it.getPath(frame), parentMatrix) } - roundShape?.applyTo(paint, frame) drawScope.drawIntoCanvas { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index 222f5c43..174ffbd6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -9,7 +9,9 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -67,9 +69,12 @@ internal class GradientStrokeShape( val colors : GradientColors, @SerialName("t") - val type : GradientType = GradientType.Linear, + val type : GradientType = GradientType.Linear ) : BaseStrokeShape(), Shape { + @Transient + override lateinit var layer: Layer + @Transient private val boundsRect = MutableRect(0f,0f,0f,0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index 4c53884e..3bbe8ccb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -2,8 +2,11 @@ package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase +import io.github.alexzhirkevich.compottie.internal.layers.Layer +import io.github.alexzhirkevich.compottie.internal.layers.NullLayer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable @SerialName("gr") @@ -29,4 +32,13 @@ internal class GroupShape( hidden = hidden, contents = items, transform = items.findTransform() -) \ No newline at end of file +){ + @Transient + override var layer: Layer = NullLayer() + set(value) { + field = value + items.forEach { + it.layer = value + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 1e4f0a47..fc5b3529 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -9,6 +9,7 @@ import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set import kotlinx.serialization.SerialName @@ -33,11 +34,16 @@ internal class MergePathsShape( val mode : MergeMode = MergeMode.Normal ) : Shape, GreedyContent, PathContent { + @Transient + override lateinit var layer: Layer + @Transient private val path = Path() @Transient private val remainderPath = Path() + + @Transient private val firstPath = Path() @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 09b4f6af..429e0e73 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -9,6 +9,7 @@ import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -29,6 +30,9 @@ internal class PathShape( val shape : AnimatedShape ) : Shape, PathContent { + @Transient + override lateinit var layer: Layer + @Transient private val trimPaths: CompoundTrimPath = CompoundTrimPath() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index b6a4b0ef..c5dfcaae 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -9,6 +9,7 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.utils.Math import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -72,6 +73,9 @@ internal class PolystarShape( ) : Shape, PathContent { + @Transient + override lateinit var layer: Layer + @Transient private val path = Path() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index 02ff7190..09506eca 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -8,6 +8,7 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -39,6 +40,9 @@ internal class RectShape( val roundedCorners : AnimatedValue? = null, ) : Shape, PathContent { + @Transient + override lateinit var layer: Layer + @Transient private val path = Path() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index aad49a0d..c3de5bfd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -12,6 +12,7 @@ import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.preConcat import kotlinx.serialization.SerialName @@ -41,6 +42,9 @@ internal class RepeaterShape( override val hidden: Boolean = false ) : Shape, GreedyContent, DrawingContent, PathContent { + @Transient + override lateinit var layer: Layer + @Transient private var contentGroup: ContentGroup? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index aa0209fe..5f9b8441 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -8,6 +8,7 @@ import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.helpers.CubicCurveData import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.utils.floorMod import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -30,6 +31,9 @@ internal class RoundShape( val radius : AnimatedValue, ) : Shape, ShapeModifierContent { + @Transient + override lateinit var layer: Layer + @Transient private var shapeData: ShapeData? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index 96ac06cf..dae392bc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.Content +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonClassDiscriminator @@ -8,9 +9,25 @@ import kotlinx.serialization.json.JsonClassDiscriminator @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("ty") -sealed interface Shape : Content { +internal sealed interface Shape : Content { val matchName : String? val hidden : Boolean + + var layer : Layer + + @Serializable + data object UnsupportedShape : Shape { + override val name: String? get() = null + + override val matchName: String? get() = null + override val hidden: Boolean get() = true + override var layer: Layer + get() = TODO("Not yet implemented") + set(value) {} + + override fun setContents(contentsBefore: List, contentsAfter: List) { + } + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 3e7a8906..2ca5e546 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -6,8 +6,10 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable @SerialName("st") @@ -47,6 +49,9 @@ internal class SolidStrokeShape( val color : AnimatedColor, ) : BaseStrokeShape(), Shape { + @Transient + override lateinit var layer: Layer + override fun draw(drawScope : DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { paint.color = color.interpolated(frame) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index 3d650331..492a4704 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -5,8 +5,10 @@ import io.github.alexzhirkevich.compottie.internal.content.ModifierContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient @Serializable @SerialName("tr") @@ -42,6 +44,10 @@ internal class TransformShape( @SerialName("sa") override val skewAxis: AnimatedValue? = null, ) : AnimatedTransform(), Shape, ModifierContent { + + @Transient + override lateinit var layer: Layer + override fun setContents(contentsBefore: List, contentsAfter: List) { } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt index 77d8226f..58a49e3a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt @@ -3,8 +3,10 @@ package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.helpers.TrimPathType import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract @@ -33,6 +35,10 @@ internal class TrimPathShape( @SerialName("m") val type : TrimPathType = TrimPathType.Simultaneously ) : Shape { + + @Transient + override lateinit var layer: Layer + override fun setContents(contentsBefore: List, contentsAfter: List) { } diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt index fbef5719..aae7f5a9 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -3,11 +3,14 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.graphics.TileMode.Companion.Clamp import androidx.compose.ui.graphics.toArgb +import org.jetbrains.skia.FilterBlurMode import org.jetbrains.skia.FilterTileMode import org.jetbrains.skia.GradientStyle +import org.jetbrains.skia.MaskFilter import org.jetbrains.skia.Matrix33 import org.jetbrains.skia.Matrix44 import org.jetbrains.skia.Shader @@ -78,3 +81,13 @@ internal fun TileMode.toSkiaTileMode(): FilterTileMode = when (this) { TileMode.Decal -> FilterTileMode.DECAL else -> FilterTileMode.CLAMP } + +internal actual fun Paint.setBlurMaskFiler(radius: Float) { + val skPaint = asFrameworkPaint() + + if (radius > 0f) { + skPaint.maskFilter = MaskFilter.makeBlur(FilterBlurMode.NORMAL, radius) + } else { + skPaint.maskFilter = null + } +} diff --git a/example/shared/src/commonMain/composeResources/files/image_asset.json b/example/shared/src/commonMain/composeResources/files/image_asset.json new file mode 100644 index 00000000..33a60039 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/image_asset.json @@ -0,0 +1,72 @@ +{ + "v": "5.5.2", + "fr": 60, + "ip": 0, + "op": 60, + "w": 512, + "h": 512, + "ddd": 0, + "assets": [ + { + "id": "blep", + "h": 512, + "w": 512, + "u": "/images/", + "p": "blep.png", + "e": 1 + } + ], + "layers": [ + { + "ddd": 0, + "ty": 2, + "sr": 1, + "ks": { + "a": { + "k": [ + 0, + 0 + ], + "a": 0 + }, + "p": { + "k": [ + 0, + 0 + ], + "a": 0 + }, + "s": { + "k": [ + 100, + 100 + ], + "a": 0 + }, + "r": { + "k": 0, + "a": 0 + }, + "o": { + "k": 100, + "a": 0 + }, + "sk": { + "k": 0, + "a": 0 + }, + "sa": { + "k": 0, + "a": 0 + } + }, + "ao": 0, + "ip": 0, + "op": 60, + "st": 0, + "bm": 0, + "ind": 0, + "refId": "blep" + } + ] +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/images/blep.png b/example/shared/src/commonMain/composeResources/files/images/blep.png new file mode 100644 index 0000000000000000000000000000000000000000..23dbec74b77b7614245a4436efb3e6a427b36c0f GIT binary patch literal 53877 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 - value = Res.readBytes(ROBOT).decodeToString() - } + val composition = rememberLottieComposition( + LottieCompositionSpec.Resource(ROBOT) + ) - if (json != null) { - val composition by rememberLottieComposition( - LottieCompositionSpec.JsonString(json!!) - ) - - Image( - modifier = Modifier.fillMaxSize().background(Color.LightGray), - painter = rememberLottiePainter( - composition = composition, -// progress = {.8f} - iterations = LottieConstants.IterateForever - ), - contentDescription = null - ) + LaunchedEffect(composition) { + composition.await() } + + Image( + modifier = Modifier.fillMaxSize(), + painter = rememberLottiePainter( + composition = composition.value, + iterations = LottieConstants.IterateForever, + onLoadError = { throw it }, + assetManager = rememberComposeResourcesAssetsManager() + ), + contentDescription = null + ) } +/** + * [LottieComposition] spec from composeResources/[dir]/[path] resource + * */ +@OptIn(ExperimentalResourceApi::class) +@Stable +fun LottieCompositionSpec.Companion.Resource( + path : String, + dir : String = "files", + readBytes: suspend (path: String) -> ByteArray = Res::readBytes +) : LottieCompositionSpec = JsonString { readBytes("$dir/$path").decodeToString() } + +/** + * Compose resources asset manager. + * + * Assess are stored in the _**composeResources/[relativeTo]**_ directory. + * + * Handles the following possible cases: + * - path="/images/", name="image.png" + * - path="images/", name="image.png" + * - path="", name="/images/image.png" + * - path="", name="images/image.png" + * */ +@OptIn(ExperimentalResourceApi::class) +@Composable +private fun rememberComposeResourcesAssetsManager( + relativeTo : String = "files", + readBytes : suspend (path : String) -> ByteArray = Res::readBytes, +) = + rememberLottieAssetsManager { _, path, name -> + val trimPath = path + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val trimName = name + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val fullPath = listOf(relativeTo.takeIf(String::isNotEmpty), trimPath, trimName) + .filterNotNull() + .joinToString("/") + + readBytes(fullPath) + } From a041a40c50510ea2c0b2d2e055143af15f6ea2f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 4 Jun 2024 03:38:46 +0300 Subject: [PATCH 024/100] ios example --- example/iosApp/Configuration/Config.xcconfig | 3 + .../iosApp/iosApp.xcodeproj/project.pbxproj | 389 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 5 + .../xcshareddata/xcschemes/iosApp.xcscheme | 78 ++++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 14 + .../AppIcon.appiconset/app-icon-1024.png | Bin 0 -> 67285 bytes .../iosApp/Assets.xcassets/Contents.json | 6 + example/iosApp/iosApp/ContentView.swift | 21 + example/iosApp/iosApp/Info.plist | 52 +++ .../Preview Assets.xcassets/Contents.json | 6 + example/iosApp/iosApp/iOSApp.swift | 12 + example/iosApp/iosApp/iosApp.entitlements | 5 + example/shared/src/iosMain/kotlin/main.ios.kt | 5 + 16 files changed, 622 insertions(+) create mode 100644 example/iosApp/Configuration/Config.xcconfig create mode 100644 example/iosApp/iosApp.xcodeproj/project.pbxproj create mode 100644 example/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme create mode 100644 example/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 example/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png create mode 100644 example/iosApp/iosApp/Assets.xcassets/Contents.json create mode 100644 example/iosApp/iosApp/ContentView.swift create mode 100644 example/iosApp/iosApp/Info.plist create mode 100644 example/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 example/iosApp/iosApp/iOSApp.swift create mode 100644 example/iosApp/iosApp/iosApp.entitlements create mode 100644 example/shared/src/iosMain/kotlin/main.ios.kt diff --git a/example/iosApp/Configuration/Config.xcconfig b/example/iosApp/Configuration/Config.xcconfig new file mode 100644 index 00000000..26af9854 --- /dev/null +++ b/example/iosApp/Configuration/Config.xcconfig @@ -0,0 +1,3 @@ +TEAM_ID= +BUNDLE_ID=org.example.project.KotlinProject +APP_NAME=KotlinProject \ No newline at end of file diff --git a/example/iosApp/iosApp.xcodeproj/project.pbxproj b/example/iosApp/iosApp.xcodeproj/project.pbxproj new file mode 100644 index 00000000..d3b4a8ac --- /dev/null +++ b/example/iosApp/iosApp.xcodeproj/project.pbxproj @@ -0,0 +1,389 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; + 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 1B63FCE12B77EC5200745370 /* iosApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = iosApp.entitlements; sourceTree = ""; }; + 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; + 7555FF7B242A565900829871 /* KotlinProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KotlinProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + 058557D7273AAEEB004C7B11 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 42799AB246E5F90AF97AA0EF /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 7555FF72242A565900829871 = { + isa = PBXGroup; + children = ( + AB1DB47929225F7C00F7AF9C /* Configuration */, + 7555FF7D242A565900829871 /* iosApp */, + 7555FF7C242A565900829871 /* Products */, + 42799AB246E5F90AF97AA0EF /* Frameworks */, + ); + sourceTree = ""; + }; + 7555FF7C242A565900829871 /* Products */ = { + isa = PBXGroup; + children = ( + 7555FF7B242A565900829871 /* KotlinProject.app */, + ); + name = Products; + sourceTree = ""; + }; + 7555FF7D242A565900829871 /* iosApp */ = { + isa = PBXGroup; + children = ( + 1B63FCE12B77EC5200745370 /* iosApp.entitlements */, + 058557BA273AAA24004C7B11 /* Assets.xcassets */, + 7555FF82242A565900829871 /* ContentView.swift */, + 7555FF8C242A565B00829871 /* Info.plist */, + 2152FB032600AC8F00CF470E /* iOSApp.swift */, + 058557D7273AAEEB004C7B11 /* Preview Content */, + ); + path = iosApp; + sourceTree = ""; + }; + AB1DB47929225F7C00F7AF9C /* Configuration */ = { + isa = PBXGroup; + children = ( + AB3632DC29227652001CCB65 /* Config.xcconfig */, + ); + path = Configuration; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7555FF7A242A565900829871 /* iosApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; + buildPhases = ( + F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */, + 7555FF77242A565900829871 /* Sources */, + 7555FF79242A565900829871 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iosApp; + productName = iosApp; + productReference = 7555FF7B242A565900829871 /* KotlinProject.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7555FF73242A565900829871 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = orgName; + TargetAttributes = { + 7555FF7A242A565900829871 = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7555FF72242A565900829871; + productRefGroup = 7555FF7C242A565900829871 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7555FF7A242A565900829871 /* iosApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7555FF79242A565900829871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Compile Kotlin Framework"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \\\"YES\\\"\"\n exit 0\nfi\ncd \"$SRCROOT/..\"\n../gradlew :example:shared:embedAndSignAppleFrameworkForXcode\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7555FF77242A565900829871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */, + 7555FF83242A565900829871 /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7555FFA3242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AB3632DC29227652001CCB65 /* Config.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7555FFA4242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AB3632DC29227652001CCB65 /* Config.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7555FFA6242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = iosApp/iosApp.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + DEVELOPMENT_TEAM = ABY9D7772H; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", + ); + INFOPLIST_FILE = iosApp/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Qrose; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + shared, + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.alexzhirkevich.compottie; + PRODUCT_NAME = "${APP_NAME}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7555FFA7242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = iosApp/iosApp.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + DEVELOPMENT_TEAM = ABY9D7772H; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", + ); + INFOPLIST_FILE = iosApp/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Qrose; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + shared, + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.alexzhirkevich.compottie; + PRODUCT_NAME = "${APP_NAME}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA3242A565B00829871 /* Debug */, + 7555FFA4242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA6242A565B00829871 /* Debug */, + 7555FFA7242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7555FF73242A565900829871 /* Project object */; +} diff --git a/example/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/example/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/example/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..0c67376e --- /dev/null +++ b/example/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme b/example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme new file mode 100644 index 00000000..37f93816 --- /dev/null +++ b/example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/example/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..ee7e3ca0 --- /dev/null +++ b/example/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/example/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..8edf56e7 --- /dev/null +++ b/example/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "app-icon-1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/example/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png b/example/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..53fc536fb9ac5c1dbb27c7e1da13db3760070a11 GIT binary patch literal 67285 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 BXNCX( literal 0 HcmV?d00001 diff --git a/example/iosApp/iosApp/Assets.xcassets/Contents.json b/example/iosApp/iosApp/Assets.xcassets/Contents.json new file mode 100644 index 00000000..4aa7c535 --- /dev/null +++ b/example/iosApp/iosApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/example/iosApp/iosApp/ContentView.swift b/example/iosApp/iosApp/ContentView.swift new file mode 100644 index 00000000..acf06073 --- /dev/null +++ b/example/iosApp/iosApp/ContentView.swift @@ -0,0 +1,21 @@ +import UIKit +import SwiftUI +import shared + +struct ComposeView: UIViewControllerRepresentable { + func makeUIViewController(context: Context) -> UIViewController { + Main_iosKt.MainViewController() + } + + func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} +} + +struct ContentView: View { + var body: some View { + ComposeView() + .ignoresSafeArea() // Compose has own keyboard handler + } +} + + + diff --git a/example/iosApp/iosApp/Info.plist b/example/iosApp/iosApp/Info.plist new file mode 100644 index 00000000..135dce66 --- /dev/null +++ b/example/iosApp/iosApp/Info.plist @@ -0,0 +1,52 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSCameraUsageDescription + QR Code scanner + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/example/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/example/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000..4aa7c535 --- /dev/null +++ b/example/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/example/iosApp/iosApp/iOSApp.swift b/example/iosApp/iosApp/iOSApp.swift new file mode 100644 index 00000000..f207182e --- /dev/null +++ b/example/iosApp/iosApp/iOSApp.swift @@ -0,0 +1,12 @@ +import SwiftUI + +@main +struct iOSApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} + + diff --git a/example/iosApp/iosApp/iosApp.entitlements b/example/iosApp/iosApp/iosApp.entitlements new file mode 100644 index 00000000..0c67376e --- /dev/null +++ b/example/iosApp/iosApp/iosApp.entitlements @@ -0,0 +1,5 @@ + + + + + diff --git a/example/shared/src/iosMain/kotlin/main.ios.kt b/example/shared/src/iosMain/kotlin/main.ios.kt new file mode 100644 index 00000000..a5124304 --- /dev/null +++ b/example/shared/src/iosMain/kotlin/main.ios.kt @@ -0,0 +1,5 @@ +import androidx.compose.ui.window.ComposeUIViewController + +fun MainViewController() = ComposeUIViewController { + App() +} \ No newline at end of file From 76952d331ef9458267a8ee1c953eed1afdf0ea21 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 4 Jun 2024 12:24:17 +0300 Subject: [PATCH 025/100] matte --- .../alexzhirkevich/compottie/LottiePainter.kt | 3 +- .../compottie/internal/LottieJson.kt | 10 +- .../compottie/internal/assets/ImageAsset.kt | 87 +++++++++++ .../compottie/internal/assets/LottieAsset.kt | 81 +--------- .../internal/assets/PrecompositionAsset.kt | 10 ++ .../internal/content/ContentGroup.kt | 57 +++---- .../internal/helpers/CompoundTrimPath.kt | 4 +- .../compottie/internal/helpers/MatteMode.kt | 6 +- .../internal/layers/BaseCompositionLayer.kt | 40 +++-- .../compottie/internal/layers/BaseLayer.kt | 140 ++++++++++-------- .../compottie/internal/layers/ImageLayer.kt | 5 +- .../internal/layers/PrecompositionLayer.kt | 3 +- .../internal/platform/PlatformCanvas.kt | 3 + .../internal/platform/PlatformPath.kt | 107 ++++++++++++- .../internal/shapes/BaseStrokeShape.kt | 25 ++-- .../internal/shapes/GradientFillShape.kt | 4 + .../internal/shapes/MergePathsShape.kt | 3 - .../compottie/internal/utils/MutableRect.kt | 9 ++ .../compottie/internal/utils/Utils.kt | 133 ----------------- .../composeResources/files/matte.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 8 +- 21 files changed, 381 insertions(+), 358 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt create mode 100644 example/shared/src/commonMain/composeResources/files/matte.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 5e09506b..cc513957 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -23,6 +23,7 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher +import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer @@ -228,7 +229,7 @@ private suspend fun LottieComposition.preloadAssets( lottieData.assets.map { asset -> withContext(Dispatchers.Default) { when (asset) { - is LottieAsset.ImageAsset -> { + is ImageAsset -> { if (asset.bitmap == null) { launch { assetsFetcher diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 60e46899..49545412 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -4,7 +4,9 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.assets.PrecompositionAsset import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.layers.Layer @@ -19,9 +21,11 @@ import io.github.alexzhirkevich.compottie.internal.shapes.FillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientFillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientStrokeShape import io.github.alexzhirkevich.compottie.internal.shapes.GroupShape +import io.github.alexzhirkevich.compottie.internal.shapes.MergePathsShape import io.github.alexzhirkevich.compottie.internal.shapes.PathShape import io.github.alexzhirkevich.compottie.internal.shapes.PolystarShape import io.github.alexzhirkevich.compottie.internal.shapes.RectShape +import io.github.alexzhirkevich.compottie.internal.shapes.RepeaterShape import io.github.alexzhirkevich.compottie.internal.shapes.RoundShape import io.github.alexzhirkevich.compottie.internal.shapes.Shape import io.github.alexzhirkevich.compottie.internal.shapes.SolidStrokeShape @@ -55,8 +59,8 @@ internal val LottieJson by lazy { } polymorphic(LottieAsset::class){ - subclass(LottieAsset.ImageAsset::class) - subclass(LottieAsset.PrecompositionAsset::class) + subclass(ImageAsset::class) + subclass(PrecompositionAsset::class) defaultDeserializer { LottieAsset.UnsupportedAsset.serializer() @@ -69,9 +73,11 @@ internal val LottieJson by lazy { subclass(GradientFillShape::class) subclass(GradientStrokeShape::class) subclass(GroupShape::class) + subclass(MergePathsShape::class) subclass(PathShape::class) subclass(PolystarShape::class) subclass(RectShape::class) + subclass(RepeaterShape::class) subclass(RoundShape::class) subclass(SolidStrokeShape::class) subclass(TransformShape::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt new file mode 100644 index 00000000..54787444 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt @@ -0,0 +1,87 @@ +package io.github.alexzhirkevich.compottie.internal.assets + +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.unit.IntSize +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.platform.fromBytes +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi + +@Serializable +internal class ImageAsset( + + @SerialName("id") + override val id: String, + + @SerialName("p") + override val fileName: String, + + @SerialName("u") + override val path: String ="", + + + @SerialName("sid") + override val slotId: String? = null, + + @SerialName("nm") + val name: String? = null, + + @SerialName("e") + override val embedded: BooleanInt = BooleanInt.No, + + @SerialName("w") + private val w: Int? = null, + + @SerialName("h") + private val h: Int? = null, +) : LottieFileAsset { + + val width: Int get() = w ?: bitmap?.width ?: 0 + + val height: Int get() = h ?: bitmap?.height ?: 0 + + @OptIn(ExperimentalEncodingApi::class) + @Transient + var bitmap: ImageBitmap? = fileName + .takeIf(String::isBase64Data::get) + ?.substringAfter("base64,") + ?.trim() + ?.let { + ImageBitmap.fromBytes(Base64.decode(it)) + }?.let(::transformBitmap) + private set + + fun setBitmap(bitmap: ImageBitmap) { + this.bitmap = transformBitmap(bitmap) + } + + private fun transformBitmap(bitmap: ImageBitmap) : ImageBitmap { + return if (w != null && w != bitmap.width || h != null && h != bitmap.width) { + bitmap.resize(w ?: bitmap.width, h ?: bitmap.height) + } else bitmap + } +} + +private val String.isBase64Data : Boolean get() = + (startsWith("data:") && indexOf("base64,") > 0) + + +private val emptyPaint = Paint() +internal fun ImageBitmap.resize(w : Int, h : Int) : ImageBitmap { + val bitmap = ImageBitmap(w, h) + + Canvas(bitmap).apply { + drawImageRect( + image = this@resize, + dstSize = IntSize(w, h), + paint = emptyPaint + ) + } + + return bitmap +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt index aba3b686..0f573b3c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt @@ -22,97 +22,20 @@ internal sealed interface LottieAsset { val id: String - @Serializable - class ImageAsset( - - @SerialName("id") - override val id: String, - - @SerialName("p") - override val fileName: String, - - @SerialName("u") - override val path: String ="", - - - @SerialName("sid") - override val slotId: String? = null, - - @SerialName("nm") - val name: String? = null, - - @SerialName("e") - override val embedded: BooleanInt = BooleanInt.No, - - @SerialName("w") - private val w: Int? = null, - - @SerialName("h") - private val h: Int? = null, - ) : LottieFileAsset { - - val width: Int get() = w ?: bitmap?.width ?: 0 - - val height: Int get() = h ?: bitmap?.height ?: 0 - - @OptIn(ExperimentalEncodingApi::class) - @Transient - var bitmap: ImageBitmap? = fileName - .takeIf(String::isBase64Data::get) - ?.substringAfter("base64,") - ?.trim() - ?.let { - ImageBitmap.fromBytes(Base64.decode(it)) - }?.let(::transformBitmap) - private set - - fun setBitmap(bitmap: ImageBitmap) { - this.bitmap = transformBitmap(bitmap) - } - - private fun transformBitmap(bitmap: ImageBitmap) : ImageBitmap { - return if (w != null && w != bitmap.width || h != null && h != bitmap.width) { - bitmap.resize(w ?: bitmap.width, h ?: bitmap.height) - } else bitmap - } - } - - @Serializable - class PrecompositionAsset( - override val id: String, - val layers : List - ) : LottieAsset - @Serializable data object UnsupportedAsset : LottieAsset { override val id: String get() = "" } } -private val emptyPaint = Paint() -private fun ImageBitmap.resize(w : Int, h : Int) : ImageBitmap { - val bitmap = ImageBitmap(w, h) - - Canvas(bitmap).apply { - drawImageRect( - image = this@resize, - dstSize = IntSize(w, h), - paint = emptyPaint - ) - } - - return bitmap -} -private val String.isBase64Data : Boolean get() = - (startsWith("data:") && indexOf("base64,") > 0) internal class AssetSerializer : JsonContentPolymorphicSerializer(LottieAsset::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { - "layers" in element.jsonObject.keys -> LottieAsset.PrecompositionAsset.serializer() - "p" in element.jsonObject.keys -> LottieAsset.ImageAsset.serializer() + "layers" in element.jsonObject.keys -> PrecompositionAsset.serializer() + "p" in element.jsonObject.keys -> ImageAsset.serializer() else -> LottieAsset.UnsupportedAsset.serializer() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt new file mode 100644 index 00000000..3c6fd922 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt @@ -0,0 +1,10 @@ +package io.github.alexzhirkevich.compottie.internal.assets + +import io.github.alexzhirkevich.compottie.internal.layers.Layer +import kotlinx.serialization.Serializable + +@Serializable +internal class PrecompositionAsset( + override val id: String, + val layers : List +) : LottieAsset diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 77d7a597..709cfdfb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -7,11 +7,9 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union @@ -22,12 +20,12 @@ internal class ContentGroup( override val transform: AnimatedTransform?, ) : ContentGroupBase { - private val rect = MutableRect(0f,0f,0f,0f) - private val offscreenRect = MutableRect(0f,0f,0f,0f) + private val rect = MutableRect(0f, 0f, 0f, 0f) + private val offscreenRect = MutableRect(0f, 0f, 0f, 0f) private val offscreenPaint = Paint() private val matrix = Matrix() private val path = Path() - private val boundsRect = MutableRect(0f,0f,0f,0f) + private val boundsRect = MutableRect(0f, 0f, 0f, 0f) private val mContents by lazy { contents.filter { @@ -39,6 +37,10 @@ internal class ContentGroup( this.mContents.filterIsInstance() } + private val drawingContents: List by lazy { + this.mContents.filterIsInstance() + } + init { val greedyContents = contents.filterIsInstance().reversed() @@ -47,7 +49,12 @@ internal class ContentGroup( } } - override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + frame: Float + ) { if (hidden) { return } @@ -64,22 +71,20 @@ internal class ContentGroup( } } - val isRenderingWithOffScreen = hasTwoOrMoreDrawableContent() && layerAlpha < 1f + val isRenderingWithOffScreen = drawingContents.size > 2 && layerAlpha < 1f drawScope.drawIntoCanvas { canvas -> if (isRenderingWithOffScreen) { offscreenRect.set(0f, 0f, 0f, 0f) getBounds(drawScope, matrix, true, frame, offscreenRect) offscreenPaint.alpha = layerAlpha - Utils.saveLayerCompat(canvas, offscreenRect.toRect(), offscreenPaint) + canvas.saveLayer(offscreenRect.toRect(), offscreenPaint) } val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha - mContents.fastForEachReversed { content -> - if (content is DrawingContent) { - content.draw(drawScope, matrix, childAlpha, frame) - } + drawingContents.fastForEachReversed { content -> + content.draw(drawScope, matrix, childAlpha, frame) } if (isRenderingWithOffScreen) { @@ -99,10 +104,8 @@ internal class ContentGroup( if (transform != null) { matrix.setFrom(transform.matrix(frame)) } - mContents.fastForEachReversed { - if (it is PathContent) { - path.addPath(it.getPath(frame), matrix) - } + pathContents.fastForEachReversed { + path.addPath(it.getPath(frame), matrix) } return path @@ -133,25 +136,9 @@ internal class ContentGroup( } rect.set(0f, 0f, 0f, 0f) - mContents.fastForEachReversed { - if (it is DrawingContent) { - it.getBounds(drawScope, matrix, applyParents, frame, rect) - outBounds.union(rect) - } - } - } - - - private fun hasTwoOrMoreDrawableContent(): Boolean { - var drawableContentCount = 0 - mContents.fastForEach { - if (it is DrawingContent) { - drawableContentCount += 1 - if (drawableContentCount >= 2) { - return true - } - } + drawingContents.fastForEachReversed { + it.getBounds(drawScope, matrix, applyParents, frame, rect) + outBounds.union(rect) } - return false } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt index 0a7100fb..9a3f0ccc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt @@ -2,8 +2,8 @@ package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.platform.applyTrimPath import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape -import io.github.alexzhirkevich.compottie.internal.utils.Utils internal class CompoundTrimPath { private val contents: MutableList = mutableListOf() @@ -14,7 +14,7 @@ internal class CompoundTrimPath { fun apply(path: Path, frame: Float) { contents.fastForEachReversed { - Utils.applyTrimPathIfNeeded(path, it, frame) + path.applyTrimPath(it, frame) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt index d9e926c3..eccbd013 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt @@ -7,9 +7,9 @@ import kotlin.jvm.JvmInline @JvmInline value class MatteMode(val mode : Byte) { companion object { - val Normal = MatteMode(0) - val Alpha = MatteMode(1) - val InvertedAlpha = MatteMode(2) + val None = MatteMode(0) + val Add = MatteMode(1) + val Invert = MatteMode(2) val Luma = MatteMode(3) val InvertedLuma = MatteMode(4) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index a9d2d748..fb9edab7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -5,16 +5,13 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.unit.Density -import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.platform.clipRect -import io.github.alexzhirkevich.compottie.internal.utils.Utils +import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.utils.union import kotlinx.serialization.Transient @@ -36,22 +33,41 @@ internal abstract class BaseCompositionLayer: BaseLayer() { private val layers by lazy { - val l = loadLayers().filterIsInstance() + val layers = loadLayers().filterIsInstance() + val matteLayers = mutableSetOf() - val layersWithIndex = l + val layersWithIndex = layers .filter { it.index != null } .associateBy { it.index } - l.forEach { + layers.forEachIndexed { i, it -> it.parent?.let { pId -> val p = layersWithIndex[pId] - if (p != null){ + if (p != null) { it.setParentLayer(p) } } + + if (it.matteMode == MatteMode.Add || it.matteMode == MatteMode.Invert) { + if (it.matteParent != null) { + val p = layersWithIndex[it.matteParent] + + if (p != null) { + it.setMatteLayer(p) + matteLayers.add(p) + } + } else { + if (i > 0) { + it.setMatteLayer(layers[i - 1]) + matteLayers.add(layers[i - 1]) + } + } + + } } - l + + (layers - matteLayers).filterNot { it.matteTarget == BooleanInt.Yes } } override var painterProperties: PainterProperties? @@ -80,7 +96,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { if (isDrawingWithOffScreen) { layerPaint.alpha = parentAlpha - Utils.saveLayerCompat(canvas, newClipRect, layerPaint) + canvas.saveLayer(newClipRect, layerPaint) } else { canvas.save() } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 704eca7f..21ecfa8a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -9,6 +9,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.isIdentity import androidx.compose.ui.util.fastFirstOrNull import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed @@ -17,15 +18,14 @@ import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.platform.drawRect import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.platform.setBlurMaskFiler -import io.github.alexzhirkevich.compottie.internal.utils.Utils -import io.github.alexzhirkevich.compottie.internal.utils.intersect -import io.github.alexzhirkevich.compottie.internal.utils.overlaps +import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.set import kotlin.math.max @@ -33,7 +33,6 @@ import kotlin.math.min internal abstract class BaseLayer() : Layer, DrawingContent { - override var painterProperties: PainterProperties? = null protected val boundsMatrix = Matrix() @@ -42,28 +41,47 @@ internal abstract class BaseLayer() : Layer, DrawingContent { private val matrix = Matrix() private val canvasMatrix = Matrix() private val canvasBounds = MutableRect(0f, 0f, 0f, 0f) - private val contentPaint = Paint().apply { - isAntiAlias = true + + private val contentPaint by lazy { + Paint().apply { + isAntiAlias = true + } } - private val clearPaint = Paint().apply { - blendMode = BlendMode.Clear + private val clearPaint by lazy { + Paint().apply { + blendMode = BlendMode.Clear + } } - private val dstInPaint = Paint().apply { - blendMode = BlendMode.DstIn - isAntiAlias = true + private val dstInPaint by lazy { + Paint().apply { + blendMode = BlendMode.DstIn + isAntiAlias = true + } } - private val dstOutPaint = Paint().apply { - blendMode = BlendMode.DstOut - isAntiAlias = true + private val dstOutPaint by lazy { + Paint().apply { + blendMode = BlendMode.DstOut + isAntiAlias = true + } } private val maskBoundsRect = MutableRect(0f, 0f, 0f, 0f) + private val matteBoundsRect = MutableRect(0f, 0f, 0f, 0f) + private val mattePaint by lazy { + Paint().apply { + isAntiAlias = true + blendMode = if (matteMode == MatteMode.Invert){ + BlendMode.DstOut + } else BlendMode.DstIn + } + } protected val rect = MutableRect(0f, 0f, 0f, 0f) private var parentLayers: MutableList? = null private var parentLayer: BaseLayer? = null + private var matteLayer: BaseLayer? = null private val blurEffect by lazy { effects.fastFirstOrNull { it is BlurEffect } as? BlurEffect @@ -80,7 +98,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float + frame: Float, ) { if (hidden || (inPoint ?: 0f) > frame || (outPoint ?: Float.MAX_VALUE) < frame) @@ -100,7 +118,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) } - if (!hasMask()) { + if (matteLayer == null && !hasMask()) { matrix.preConcat(transform.matrix(frame)) drawLayer(drawScope, matrix, alpha, frame) return @@ -108,7 +126,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { getBounds(drawScope, matrix, false, frame, rect) -// intersectBoundsWithMatte(rect, parentMatrix) + intersectBoundsWithMatte(drawScope, rect, matrix, frame) matrix.preConcat(transform.matrix(frame)) intersectBoundsWithMask(rect, matrix, frame) @@ -121,23 +139,19 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas.getMatrix(canvasMatrix) //TODO: fix mask canvas mapping -// if (!canvasMatrix.isIdentity()) { -// canvasMatrix.invert() -// canvasMatrix.map(canvasBounds) -// } - - if (rect.overlaps(canvasBounds)) { - rect.intersect(canvasBounds) - } else { - rect.set(0f, 0f, 0f, 0f) + if (!canvasMatrix.isIdentity()) { + canvasMatrix.invert() + canvasMatrix.map(canvasBounds) } + rect.intersectOrReset(canvasBounds) + // Ensure that what we are drawing is >=1px of width and height. // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. // https://github.com/airbnb/lottie-android/issues/1625 if (rect.width >= 1f && rect.height >= 1f) { contentPaint.alpha = 1f - Utils.saveLayerCompat(canvas, rect, contentPaint) + canvas.saveLayer(rect, contentPaint) // Clear the off screen buffer. This is necessary for some phones. clearCanvas(canvas) @@ -147,26 +161,12 @@ internal abstract class BaseLayer() : Layer, DrawingContent { applyMasks(canvas, matrix, frame) } -// if (hasMatteOnThisLayer()) { -// if (L.isTraceEnabled()) { -// L.beginSection("Layer#drawMatte") -// L.beginSection("Layer#saveLayer") -// } -// Utils.saveLayerCompat(canvas, rect, mattePaint, BaseLayer.SAVE_FLAGS) -// if (L.isTraceEnabled()) { -// L.endSection("Layer#saveLayer") -// } -// clearCanvas(canvas) -// matteLayer.draw(canvas, parentMatrix, alpha) -// if (L.isTraceEnabled()) { -// L.beginSection("Layer#restoreLayer") -// } -// canvas.restore() -// if (L.isTraceEnabled()) { -// L.endSection("Layer#restoreLayer") -// L.endSection("Layer#drawMatte") -// } -// } + matteLayer?.let { + canvas.saveLayer(rect, mattePaint, SAVE_FLAGS) + clearCanvas(canvas) + it.draw(drawScope, parentMatrix, alpha, frame) + canvas.restore() + } canvas.restore() } @@ -215,6 +215,10 @@ internal abstract class BaseLayer() : Layer, DrawingContent { this.parentLayer = layer } + fun setMatteLayer(layer: BaseLayer) { + this.matteLayer = layer + } + override fun applyBlurEffectIfNeeded(paint: Paint, frame: Float, lastBlurRadius : Float?) : Float { return blurEffect?.let { @@ -244,7 +248,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { } } - protected fun hasMask(): Boolean = !masks.isNullOrEmpty() + private fun hasMask(): Boolean = !masks.isNullOrEmpty() private fun clearCanvas(canvas: Canvas) { // If we don't pad the clear draw, some phones leave a 1px border of the graphics buffer. @@ -315,11 +319,23 @@ internal abstract class BaseLayer() : Layer, DrawingContent { } } - if (rect.overlaps(maskBoundsRect)) { - rect.intersect(maskBoundsRect) - } else { - rect.set(0f, 0f, 0f, 0f) + rect.intersectOrReset(maskBoundsRect) + } + + private fun intersectBoundsWithMatte(drawScope: DrawScope, rect: MutableRect, matrix: Matrix, frame : Float) { + + val matteLayer = matteLayer ?: return + + if (matteMode == MatteMode.Invert) { + // We can't trim the bounds if the mask is inverted since it extends all the way to the + // composition bounds. + return } + matteBoundsRect.set(0f, 0f, 0f, 0f) + matteLayer.getBounds(drawScope, matrix, true, frame, matteBoundsRect) + + + rect.intersectOrReset(matteBoundsRect) } private fun applyMasks(canvas: Canvas, matrix: Matrix, frame: Float) { @@ -374,9 +390,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float + frame: Float, ) { - Utils.saveLayerCompat(canvas, rect, contentPaint) + canvas.saveLayer(rect, contentPaint) canvas.drawRect(rect, contentPaint) val maskPath = mask.shape?.interpolated(frame) ?: return path.set(maskPath) @@ -390,7 +406,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float + frame: Float, ) { val maskPath = mask.shape?.interpolated(frame) ?: return path.set(maskPath) @@ -403,7 +419,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float + frame: Float, ) { val maskPath = mask.shape?.interpolated(frame) ?: return path.set(maskPath) @@ -415,9 +431,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float + frame: Float, ) { - Utils.saveLayerCompat(canvas, rect, dstOutPaint) + canvas.saveLayer(rect, dstOutPaint) canvas.drawRect(rect, contentPaint) dstOutPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f val maskPath = mask.shape?.interpolated(frame) ?: return @@ -431,9 +447,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float + frame: Float, ) { - Utils.saveLayerCompat(canvas, rect, dstInPaint) + canvas.saveLayer(rect, dstInPaint) val maskPath = mask.shape?.interpolated(frame) ?: return path.set(maskPath) path.transform(matrix) @@ -446,9 +462,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float + frame: Float, ) { - Utils.saveLayerCompat(canvas, rect, dstInPaint) + canvas.saveLayer(rect, dstInPaint) canvas.drawRect(rect, contentPaint) dstOutPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f val maskPath = mask.shape?.interpolated(frame) ?: return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 0e3d6c58..436e6b25 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -6,6 +6,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.unit.IntSize +import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -94,8 +95,8 @@ internal class ImageLayer( @Transient private val paint = Paint() - private val asset : LottieAsset.ImageAsset? by lazy { - painterProperties?.assets?.get(refId) as? LottieAsset.ImageAsset + private val asset : ImageAsset? by lazy { + painterProperties?.assets?.get(refId) as? ImageAsset } private var lastBlurRadius : Float? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index 9ab3f62f..d31c618b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.assets.PrecompositionAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode @@ -87,7 +88,7 @@ internal class PrecompositionLayer( ) : BaseCompositionLayer() { override fun loadLayers(): List { - return (painterProperties?.assets?.get(refId) as? LottieAsset.PrecompositionAsset?) + return (painterProperties?.assets?.get(refId) as? PrecompositionAsset?) ?.layers.orEmpty() } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt index 48b4d472..20037b88 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformCanvas.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.toRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint @@ -27,3 +28,5 @@ internal fun Canvas.clipRect(rect: MutableRect) { internal expect fun Canvas.getMatrix(matrix: Matrix) internal expect fun Canvas.saveLayer(rect : MutableRect, paint : Paint, flag : Int) + +internal fun Canvas.saveLayer(rect: MutableRect, paint: Paint) = saveLayer(rect.toRect(), paint) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index 4d737f3d..299fbd0d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -1,10 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.platform -import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure -import androidx.compose.ui.graphics.PathOperation +import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape +import io.github.alexzhirkevich.compottie.internal.utils.floorMod +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min internal expect fun ExtendedPathMeasure() : ExtendedPathMeasure @@ -19,4 +22,102 @@ internal fun Path.set(other : Path){ //internal expect fun Path.set(other : Path) -internal expect fun Path.addPath(path: Path, matrix: Matrix) : Path \ No newline at end of file +internal expect fun Path.addPath(path: Path, matrix: Matrix) : Path + +internal fun Path.applyTrimPath(trimPath: TrimPathShape, frame: Float) { + if (trimPath.hidden) { + return + } + val start: Float = trimPath.start.interpolated(frame) + val end: Float = trimPath.end.interpolated(frame) + val offset: Float = trimPath.offset.interpolated(frame) + + applyTrimPath( + startValue = start / 100f, + endValue = end / 100f, + offsetValue = offset / 360f + ) +} + + +private val pathMeasure = ExtendedPathMeasure() +private val tempPath = Path() +private val tempPath2 = Path() + +fun Path.applyTrimPath( + startValue: Float, + endValue: Float, + offsetValue: Float, +) { + pathMeasure.setPath(this, false) + + val length: Float = pathMeasure.length + if (startValue == 1f && endValue == 0f) { + return + } + if (length < 1f || abs((endValue - startValue - 1)) < .01f) { + return + } + val start = length * startValue + val end = length * endValue + var newStart = min(start, end) + var newEnd = max(start, end) + + val offset = offsetValue * length + newStart += offset + newEnd += offset + + // If the trim path has rotated around the path, we need to shift it back. + if (newStart >= length && newEnd >= length) { + newStart = floorMod(newStart, length).toFloat() + newEnd = floorMod(newEnd, length).toFloat() + } + + if (newStart < 0) { + newStart = floorMod(newStart, length).toFloat() + } + if (newEnd < 0) { + newEnd = floorMod(newEnd, length).toFloat() + } + + // If the start and end are equals, return an empty path. + if (newStart == newEnd) { + reset() + return + } + + if (newStart >= newEnd) { + newStart -= length + } + + + tempPath.reset() + pathMeasure.getSegment( + startDistance = newStart, + stopDistance = newEnd, + destination = tempPath, + startWithMoveTo = true + ) + + if (newEnd > length) { + tempPath2.reset() + pathMeasure.getSegment( + startDistance = 0f, + stopDistance = newEnd % length, + destination = tempPath2, + startWithMoveTo = true + ) + tempPath.addPath(tempPath2) + } else if (newStart < 0) { + tempPath2.reset() + pathMeasure.getSegment( + startDistance = length + newStart, + stopDistance = length, + destination = tempPath2, + startWithMoveTo = true + ) + tempPath.addPath(tempPath2) + } + + set(tempPath) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 6f127506..bd5dd714 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -22,8 +22,8 @@ import io.github.alexzhirkevich.compottie.internal.helpers.DashType import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.platform.applyTrimPath import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.utils.Utils import io.github.alexzhirkevich.compottie.internal.utils.scale import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.Serializable @@ -113,6 +113,11 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { parentAlpha: Float, frame: Float ) { + + if (hidden){ + return + } + paint.style = PaintingStyle.Stroke paint.alpha = parentAlpha * (opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) paint.strokeWidth = strokeWidth.interpolated(frame) @@ -259,15 +264,8 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } else { 0f } - val endValue = - min(((endLength - totalLength) / length).toDouble(), 1.0) - .toFloat() - Utils.applyTrimPathIfNeeded( - trimPathPath, - startValue, - endValue, - 0f - ) + val endValue = min(((endLength - totalLength) / length), 1f) + trimPathPath.applyTrimPath(startValue, endValue, 0f) canvas.drawPath(trimPathPath, paint) } else if (currentLength + length < startLength || currentLength > endLength) { @@ -285,12 +283,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } else { (endLength - currentLength) / length } - Utils.applyTrimPathIfNeeded( - trimPathPath, - startValue, - endValue, - 0f - ) + trimPathPath.applyTrimPath(startValue, endValue, 0f) canvas.drawPath(trimPathPath, paint) } currentLength += length diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 11c2fa96..ffca4d6e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -96,6 +96,10 @@ internal class GradientFillShape( override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + if (hidden){ + return + } + paint.shader = GradientShader( type = type, startPoint = startPoint, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index fc5b3529..89d78f5d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -5,12 +5,10 @@ import androidx.compose.ui.graphics.PathOperation import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.layers.Layer -import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -111,7 +109,6 @@ internal class MergePathsShape( } remainderPath.addPath(p) } - } else { remainderPath.addPath(content.getPath(frame)) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt index b298c3a0..fd74e6ec 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt @@ -5,6 +5,14 @@ import androidx.compose.ui.geometry.Rect import kotlin.math.max import kotlin.math.min +internal fun MutableRect.intersectOrReset(other: MutableRect) { + if (overlaps(other)) { + intersect(other) + } else { + set(0f, 0f, 0f, 0f) + } +} + internal fun MutableRect.intersect(other: MutableRect) = intersect( left = other.left, @@ -12,6 +20,7 @@ internal fun MutableRect.intersect(other: MutableRect) = right = other.right, bottom = other.bottom ) + internal fun MutableRect.overlaps(other: MutableRect): Boolean { if (right <= other.left || other.right <= left) return false diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt deleted file mode 100644 index 86bf2acb..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Utils.kt +++ /dev/null @@ -1,133 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.utils - -import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.geometry.toRect -import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure -import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape -import kotlin.math.abs -import kotlin.math.max -import kotlin.math.min - - - -internal object Utils { - - private val pathMeasure = ExtendedPathMeasure() - private val tempPath = Path() - private val tempPath2 = Path() - - - fun saveLayerCompat( - canvas: Canvas, - rect: Rect, - paint: Paint, - ) { - canvas.saveLayer(rect, paint) - } - - fun saveLayerCompat( - canvas: Canvas, - rect: MutableRect, - paint: Paint, - ) { - canvas.saveLayer(rect.toRect(), paint) - } - - - fun applyTrimPathIfNeeded(path: Path, trimPath: TrimPathShape, frame: Float) { - if (trimPath.hidden) { - return - } - val start: Float = trimPath.start.interpolated(frame) - val end: Float = trimPath.end.interpolated(frame) - val offset: Float = trimPath.offset.interpolated(frame) - - applyTrimPathIfNeeded( - path = path, - startValue = start / 100f, - endValue = end / 100f, - offsetValue = offset / 360f - ) - } - - fun applyTrimPathIfNeeded( - path: Path, startValue: Float, endValue: Float, offsetValue: Float, - ) { - pathMeasure.setPath(path, false) - - val length: Float = pathMeasure.length - if (startValue == 1f && endValue == 0f) { - return - } - if (length < 1f || abs((endValue - startValue - 1)) < .01f) { - return - } - val start = length * startValue - val end = length * endValue - var newStart = min(start, end) - var newEnd = max(start, end) - - val offset = offsetValue * length - newStart += offset - newEnd += offset - - // If the trim path has rotated around the path, we need to shift it back. - if (newStart >= length && newEnd >= length) { - newStart = floorMod(newStart, length).toFloat() - newEnd = floorMod(newEnd, length).toFloat() - } - - if (newStart < 0) { - newStart = floorMod(newStart, length).toFloat() - } - if (newEnd < 0) { - newEnd = floorMod(newEnd, length).toFloat() - } - - // If the start and end are equals, return an empty path. - if (newStart == newEnd) { - path.reset() - return - } - - if (newStart >= newEnd) { - newStart -= length - } - - - tempPath.reset() - pathMeasure.getSegment( - startDistance = newStart, - stopDistance = newEnd, - destination = tempPath, - startWithMoveTo = true - ) - - if (newEnd > length) { - tempPath2.reset() - pathMeasure.getSegment( - startDistance = 0f, - stopDistance = newEnd % length, - destination = tempPath2, - startWithMoveTo = true - ) - tempPath.addPath(tempPath2) - } else if (newStart < 0) { - tempPath2.reset() - pathMeasure.getSegment( - startDistance = length + newStart, - stopDistance = length, - destination = tempPath2, - startWithMoveTo = true - ) - tempPath.addPath(tempPath2) - } - - path.set(tempPath) - } -} diff --git a/example/shared/src/commonMain/composeResources/files/matte.json b/example/shared/src/commonMain/composeResources/files/matte.json new file mode 100644 index 00000000..22e35580 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/matte.json @@ -0,0 +1 @@ +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{b3d1b083-9de7-4537-a691-fc9aa42f9742}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":1,"st":0,"ip":0,"op":180,"nm":"Ellipse (Mask)","ks":{"a":{"a":0,"k":[153,294]},"p":{"a":0,"k":[346,211]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"el","nm":"Ellipse","mn":"{261eddeb-af92-4be1-932c-790b00c23933}","p":{"a":0,"k":[137.0955223880597,293.60820895522386]},"s":{"a":0,"k":[303.42089552238804,315.55074626865667]}},{"ty":"st","nm":"Stroke","mn":"{aa9c282c-253d-4d8d-ab05-4819c592fa85}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,1,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":6}},{"ty":"fl","nm":"Fill","mn":"{2b2b0002-ff0c-4978-a33b-db4e0498848d}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.9411764705882353,0.11372549019607843,0.0392156862745098]},"r":1}],"td":1},{"ddd":0,"ty":4,"ind":2,"st":0,"ip":0,"op":180,"nm":"Shapes (Masked)","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"PolyStar","mn":"{528994b7-40ff-4d12-81f8-603f274da12e}","it":[{"ty":"sr","nm":"PolyStar","mn":"{ce8756d7-289f-4f84-a135-d225d57c42e0}","p":{"a":0,"k":[427.2716417910448,194.29253731343283]},"or":{"a":0,"k":216.4160919189453},"ir":{"a":0,"k":87.03440856933594},"r":{"a":0,"k":261.54803466796875},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{efd05a25-a43b-451d-83d2-53a477087223}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{523ca39c-9e57-4547-bf0e-ba7496003579}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.19607843137254902,0.3137254901960784,0.6901960784313725]},"r":1},{"ty":"tr","a":{"a":0,"k":[427.2716417910448,194.29253731343283]},"p":{"a":0,"k":[338.7223880597015,209.76716417910447]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Rectangle","mn":"{d2d7a5d5-6d91-42e8-b40a-af52a112fe38}","it":[{"ty":"rc","nm":"Rectangle","mn":"{9ef8604e-7891-4909-a655-445131b4d842}","p":{"a":0,"k":[209.17611940298502,226.8]},"s":{"a":0,"k":[363.3313432835821,369.3492537313433]},"r":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{444584d2-cb59-4cba-83a1-82cc605837fd}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{f75aed67-9b0e-41a9-b859-a14b5b0a320d}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.7686274509803922,0.8509803921568627,0.9607843137254902]},"r":1},{"ty":"tr","a":{"a":0,"k":[256.1910447761194,273.8149253731343]},"p":{"a":0,"k":[256.1910447761194,273.8149253731343]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"tt":1,"tp":1}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 1d696cd5..69a7d6a7 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -26,6 +26,7 @@ private val ROBOT_404 = "robot_404.json" private val CONFETTI = "confetti.json" private val PRECOMP_WITH_REMAPPING = "precomp_with_remapping.json" private val MASK_ADD = "mask_add.json" +private val MATTE = "matte.json" private val DASH = "dash.json" private val ROUNDING_CORENERS = "rounding_corners.json" private val REPEATER = "repeater.json" @@ -33,7 +34,6 @@ private val TEXT_WITH_PATH = "text_with_path.json" private val TEXT = "text.json" private val IMAGE_ASSET = "image_asset.json" -@OptIn(ExperimentalResourceApi::class) @Composable fun App() { @@ -51,7 +51,7 @@ fun App() { composition = composition.value, iterations = LottieConstants.IterateForever, onLoadError = { throw it }, - assetManager = rememberComposeResourcesAssetsManager() + assetManager = rememberResourcesAssetsManager() ), contentDescription = null ) @@ -59,7 +59,7 @@ fun App() { /** - * [LottieComposition] spec from composeResources/[dir]/[path] resource + * [LottieComposition] spec from composeResources/[dir]/[path] json asset * */ @OptIn(ExperimentalResourceApi::class) @Stable @@ -82,7 +82,7 @@ fun LottieCompositionSpec.Companion.Resource( * */ @OptIn(ExperimentalResourceApi::class) @Composable -private fun rememberComposeResourcesAssetsManager( +private fun rememberResourcesAssetsManager( relativeTo : String = "files", readBytes : suspend (path : String) -> ByteArray = Res::readBytes, ) = From f20e05330f22797d1184ba682fe0f59439a0471a Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 4 Jun 2024 13:08:06 +0300 Subject: [PATCH 026/100] luma matte --- .../platform/PlatformShader.android.kt | 5 ++++- .../compottie/internal/helpers/MatteMode.kt | 10 +++++++++- .../internal/layers/BaseCompositionLayer.kt | 3 ++- .../compottie/internal/layers/BaseLayer.kt | 11 ++++++++-- .../internal/platform/PlatformShader.kt | 20 ++++++++++++++++++- .../internal/platform/PlatformShader.skiko.kt | 9 ++++++++- .../files/{matte.json => luma_matte.json} | 2 +- example/shared/src/commonMain/kotlin/App.kt | 4 ++-- 8 files changed, 54 insertions(+), 10 deletions(-) rename example/shared/src/commonMain/composeResources/files/{matte.json => luma_matte.json} (97%) diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt index 139cb341..7e947a9b 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt @@ -2,13 +2,17 @@ package io.github.alexzhirkevich.compottie.internal.platform import android.graphics.Bitmap import android.graphics.BlurMaskFilter +import android.graphics.ColorMatrixColorFilter import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.graphics.LinearGradientShader import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.RadialGradientShader import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.graphics.asComposeColorFilter import androidx.compose.ui.graphics.setFrom import androidx.compose.ui.graphics.toArgb @@ -51,7 +55,6 @@ internal actual fun MakeRadialGradient( setLocalMatrix(tempMatrix) } - internal actual fun Paint.setBlurMaskFiler(radius: Float) { val fPaint = asFrameworkPaint() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt index eccbd013..05e1b4e7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt @@ -13,4 +13,12 @@ value class MatteMode(val mode : Byte) { val Luma = MatteMode(3) val InvertedLuma = MatteMode(4) } -} \ No newline at end of file +} + +fun MatteMode.isInvert() : Boolean = this == MatteMode.Invert || this == MatteMode.InvertedLuma +fun MatteMode.isLuma() : Boolean = this == MatteMode.Luma || this == MatteMode.InvertedLuma + +fun MatteMode.isSupported() = this == MatteMode.Add || + this == MatteMode.Invert || + this == MatteMode.Luma || + this == MatteMode.InvertedLuma \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index fb9edab7..4f31d00c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.clipRect import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.utils.union @@ -49,7 +50,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { } } - if (it.matteMode == MatteMode.Add || it.matteMode == MatteMode.Invert) { + if (it.matteMode?.isSupported() == true) { if (it.matteParent != null) { val p = layersWithIndex[it.matteParent] diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 21ecfa8a..c977e5d7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -19,6 +20,9 @@ import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.helpers.isInvert +import io.github.alexzhirkevich.compottie.internal.helpers.isLuma +import io.github.alexzhirkevich.compottie.internal.platform.Luma import io.github.alexzhirkevich.compottie.internal.platform.drawRect import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost @@ -72,7 +76,10 @@ internal abstract class BaseLayer() : Layer, DrawingContent { private val mattePaint by lazy { Paint().apply { isAntiAlias = true - blendMode = if (matteMode == MatteMode.Invert){ + if (matteMode?.isLuma() == true){ + colorFilter = ColorFilter.Luma + } + blendMode = if (matteMode?.isInvert() == true){ BlendMode.DstOut } else BlendMode.DstIn } @@ -326,7 +333,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { val matteLayer = matteLayer ?: return - if (matteMode == MatteMode.Invert) { + if (matteMode?.isInvert() == true) { // We can't trim the bounds if the mask is inverted since it extends all the way to the // composition bounds. return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index a00a6d8c..59ee1a93 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -2,6 +2,9 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.ColorMatrix +import androidx.compose.ui.graphics.ColorMatrixColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader @@ -149,4 +152,19 @@ internal expect fun MakeRadialGradient( matrix: Matrix ) : Shader -internal expect fun Paint.setBlurMaskFiler(radius: Float) \ No newline at end of file +internal expect fun Paint.setBlurMaskFiler(radius: Float) + +internal val ColorFilter.Companion.Luma : ColorFilter get() = LumaColorFilter + +private val LumaColorFilter by lazy { + ColorMatrixColorFilter( + ColorMatrix( + floatArrayOf( + 0f, 0f, 0f, 0f, 0f, + 0f, 0f, 0f, 0f, 0f, + 0f, 0f, 0f, 0f, 0f, + 0.2126f, 0.7152f, 0.0722f, 0f, 0f + ) + ) + ) +} \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt index aae7f5a9..a24abb24 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -2,17 +2,20 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.ColorMatrix +import androidx.compose.ui.graphics.ColorMatrixColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.graphics.TileMode.Companion.Clamp +import androidx.compose.ui.graphics.asComposeColorFilter import androidx.compose.ui.graphics.toArgb import org.jetbrains.skia.FilterBlurMode import org.jetbrains.skia.FilterTileMode import org.jetbrains.skia.GradientStyle import org.jetbrains.skia.MaskFilter import org.jetbrains.skia.Matrix33 -import org.jetbrains.skia.Matrix44 import org.jetbrains.skia.Shader internal actual fun MakeLinearGradient( @@ -82,6 +85,10 @@ internal fun TileMode.toSkiaTileMode(): FilterTileMode = when (this) { else -> FilterTileMode.CLAMP } +//internal actual val ColorFilter.Companion.Luma get() = org.jetbrains.skia.ColorFilter.luma.asComposeColorFilter() + + + internal actual fun Paint.setBlurMaskFiler(radius: Float) { val skPaint = asFrameworkPaint() diff --git a/example/shared/src/commonMain/composeResources/files/matte.json b/example/shared/src/commonMain/composeResources/files/luma_matte.json similarity index 97% rename from example/shared/src/commonMain/composeResources/files/matte.json rename to example/shared/src/commonMain/composeResources/files/luma_matte.json index 22e35580..2824900a 100644 --- a/example/shared/src/commonMain/composeResources/files/matte.json +++ b/example/shared/src/commonMain/composeResources/files/luma_matte.json @@ -1 +1 @@ -{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{b3d1b083-9de7-4537-a691-fc9aa42f9742}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":1,"st":0,"ip":0,"op":180,"nm":"Ellipse (Mask)","ks":{"a":{"a":0,"k":[153,294]},"p":{"a":0,"k":[346,211]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"el","nm":"Ellipse","mn":"{261eddeb-af92-4be1-932c-790b00c23933}","p":{"a":0,"k":[137.0955223880597,293.60820895522386]},"s":{"a":0,"k":[303.42089552238804,315.55074626865667]}},{"ty":"st","nm":"Stroke","mn":"{aa9c282c-253d-4d8d-ab05-4819c592fa85}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,1,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":6}},{"ty":"fl","nm":"Fill","mn":"{2b2b0002-ff0c-4978-a33b-db4e0498848d}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.9411764705882353,0.11372549019607843,0.0392156862745098]},"r":1}],"td":1},{"ddd":0,"ty":4,"ind":2,"st":0,"ip":0,"op":180,"nm":"Shapes (Masked)","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"PolyStar","mn":"{528994b7-40ff-4d12-81f8-603f274da12e}","it":[{"ty":"sr","nm":"PolyStar","mn":"{ce8756d7-289f-4f84-a135-d225d57c42e0}","p":{"a":0,"k":[427.2716417910448,194.29253731343283]},"or":{"a":0,"k":216.4160919189453},"ir":{"a":0,"k":87.03440856933594},"r":{"a":0,"k":261.54803466796875},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{efd05a25-a43b-451d-83d2-53a477087223}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{523ca39c-9e57-4547-bf0e-ba7496003579}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.19607843137254902,0.3137254901960784,0.6901960784313725]},"r":1},{"ty":"tr","a":{"a":0,"k":[427.2716417910448,194.29253731343283]},"p":{"a":0,"k":[338.7223880597015,209.76716417910447]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Rectangle","mn":"{d2d7a5d5-6d91-42e8-b40a-af52a112fe38}","it":[{"ty":"rc","nm":"Rectangle","mn":"{9ef8604e-7891-4909-a655-445131b4d842}","p":{"a":0,"k":[209.17611940298502,226.8]},"s":{"a":0,"k":[363.3313432835821,369.3492537313433]},"r":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{444584d2-cb59-4cba-83a1-82cc605837fd}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{f75aed67-9b0e-41a9-b859-a14b5b0a320d}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.7686274509803922,0.8509803921568627,0.9607843137254902]},"r":1},{"ty":"tr","a":{"a":0,"k":[256.1910447761194,273.8149253731343]},"p":{"a":0,"k":[256.1910447761194,273.8149253731343]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"tt":1,"tp":1}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file +{"v":"5.5.7","ip":0,"op":180,"nm":"Animation","mn":"{b3d1b083-9de7-4537-a691-fc9aa42f9742}","fr":60,"w":512,"h":512,"assets":[],"layers":[{"ddd":0,"ty":4,"ind":1,"st":0,"ip":0,"op":180,"nm":"Ellipse (Mask)","ks":{"a":{"a":0,"k":[153,294]},"p":{"a":0,"k":[346,211]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"el","nm":"Ellipse","mn":"{261eddeb-af92-4be1-932c-790b00c23933}","p":{"a":0,"k":[137.0955223880597,293.60820895522386]},"s":{"a":0,"k":[303.42089552238804,315.55074626865667]}},{"ty":"st","nm":"Stroke","mn":"{aa9c282c-253d-4d8d-ab05-4819c592fa85}","o":{"a":0,"k":100},"c":{"a":0,"k":[1,1,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":6}},{"ty":"fl","nm":"Fill","mn":"{2b2b0002-ff0c-4978-a33b-db4e0498848d}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.9411764705882353,0.11372549019607843,0.0392156862745098]},"r":1}],"td":1},{"ddd":0,"ty":4,"ind":2,"st":0,"ip":0,"op":180,"nm":"Shapes (Masked)","ks":{"a":{"a":0,"k":[256,256]},"p":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"PolyStar","mn":"{528994b7-40ff-4d12-81f8-603f274da12e}","it":[{"ty":"sr","nm":"PolyStar","mn":"{ce8756d7-289f-4f84-a135-d225d57c42e0}","p":{"a":0,"k":[427.2716417910448,194.29253731343283]},"or":{"a":0,"k":216.4160919189453},"ir":{"a":0,"k":87.03440856933594},"r":{"a":0,"k":261.54803466796875},"pt":{"a":0,"k":5},"sy":1,"os":{"a":0,"k":0},"is":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{efd05a25-a43b-451d-83d2-53a477087223}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{523ca39c-9e57-4547-bf0e-ba7496003579}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.19607843137254902,0.3137254901960784,0.6901960784313725]},"r":1},{"ty":"tr","a":{"a":0,"k":[427.2716417910448,194.29253731343283]},"p":{"a":0,"k":[338.7223880597015,209.76716417910447]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Rectangle","mn":"{d2d7a5d5-6d91-42e8-b40a-af52a112fe38}","it":[{"ty":"rc","nm":"Rectangle","mn":"{9ef8604e-7891-4909-a655-445131b4d842}","p":{"a":0,"k":[209.17611940298502,226.8]},"s":{"a":0,"k":[363.3313432835821,369.3492537313433]},"r":{"a":0,"k":0}},{"ty":"st","hd":true,"nm":"Stroke","mn":"{444584d2-cb59-4cba-83a1-82cc605837fd}","o":{"a":0,"k":100},"c":{"a":0,"k":[0,0.5019607843137255,1]},"lc":2,"lj":2,"ml":0,"w":{"a":0,"k":1}},{"ty":"fl","nm":"Fill","mn":"{f75aed67-9b0e-41a9-b859-a14b5b0a320d}","o":{"a":0,"k":100},"c":{"a":0,"k":[0.7686274509803922,0.8509803921568627,0.9607843137254902]},"r":1},{"ty":"tr","a":{"a":0,"k":[256.1910447761194,273.8149253731343]},"p":{"a":0,"k":[256.1910447761194,273.8149253731343]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"tt":3,"tp":1}],"meta":{"g":"Glaxnimate 0.4.6-26-g7b05e75c"}} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 69a7d6a7..5fea8798 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -26,7 +26,7 @@ private val ROBOT_404 = "robot_404.json" private val CONFETTI = "confetti.json" private val PRECOMP_WITH_REMAPPING = "precomp_with_remapping.json" private val MASK_ADD = "mask_add.json" -private val MATTE = "matte.json" +private val MATTE_LUMA = "luma_matte.json" private val DASH = "dash.json" private val ROUNDING_CORENERS = "rounding_corners.json" private val REPEATER = "repeater.json" @@ -38,7 +38,7 @@ private val IMAGE_ASSET = "image_asset.json" fun App() { val composition = rememberLottieComposition( - LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Resource(MATTE_LUMA) ) LaunchedEffect(composition) { From 7783f2634f258c311996b67c67569526891db390 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 4 Jun 2024 17:36:20 +0300 Subject: [PATCH 027/100] improve blur sigma conversion --- .../platform/PlatformImage.android.kt | 4 +++- .../platform/PlatformShader.android.kt | 10 ++++++-- .../compottie/LottieCompositionSpec.kt | 1 - .../internal/content/ContentGroup.kt | 4 +++- .../internal/layers/BaseCompositionLayer.kt | 4 +++- .../compottie/internal/layers/BaseLayer.kt | 6 ++--- .../internal/layers/SolidColorLayer.kt | 1 + .../internal/platform/PlatformShader.kt | 8 +++---- .../internal/shapes/BaseStrokeShape.kt | 1 + .../compottie/internal/shapes/FillShape.kt | 1 + .../internal/shapes/GradientFillShape.kt | 4 +++- .../internal/platform/PlatformShader.skiko.kt | 24 ++++++++++++++++--- 12 files changed, 51 insertions(+), 17 deletions(-) diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt index 6c565968..8e7f965f 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt @@ -5,6 +5,8 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap internal actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { - return BitmapFactory.decodeByteArray(bytes, 0, bytes.size).asImageBitmap() + return BitmapFactory + .decodeByteArray(bytes, 0, bytes.size) + .asImageBitmap() } diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt index 7e947a9b..450e92e5 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt @@ -3,6 +3,8 @@ package io.github.alexzhirkevich.compottie.internal.platform import android.graphics.Bitmap import android.graphics.BlurMaskFilter import android.graphics.ColorMatrixColorFilter +import android.graphics.RenderEffect +import android.graphics.Shader import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter @@ -15,6 +17,8 @@ import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.graphics.asComposeColorFilter import androidx.compose.ui.graphics.setFrom import androidx.compose.ui.graphics.toArgb +import kotlin.math.PI +import kotlin.math.sqrt private val tempMatrix = android.graphics.Matrix() @@ -55,12 +59,14 @@ internal actual fun MakeRadialGradient( setLocalMatrix(tempMatrix) } -internal actual fun Paint.setBlurMaskFiler(radius: Float) { +internal actual fun Paint.setBlurMaskFilter(radius: Float, isImage : Boolean) { val fPaint = asFrameworkPaint() if (radius > 0f) { - fPaint.setMaskFilter(BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)) + fPaint.setMaskFilter(BlurMaskFilter(radius * BlurSigmaScale, BlurMaskFilter.Blur.NORMAL)) } else { fPaint.setMaskFilter(null) } } + +private val BlurSigmaScale = .5f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 58c90043..367d5f1c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -61,7 +61,6 @@ private class LazyJsonString( ) : LottieCompositionSpec { override suspend fun load(): LottieComposition { - println("READING") return LottieComposition.parse(jsonString()) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 709cfdfb..d7403a85 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -22,7 +22,9 @@ internal class ContentGroup( private val rect = MutableRect(0f, 0f, 0f, 0f) private val offscreenRect = MutableRect(0f, 0f, 0f, 0f) - private val offscreenPaint = Paint() + private val offscreenPaint = Paint().apply { + isAntiAlias = true + } private val matrix = Matrix() private val path = Path() private val boundsRect = MutableRect(0f, 0f, 0f, 0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 4f31d00c..4818f490 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -28,7 +28,9 @@ internal abstract class BaseCompositionLayer: BaseLayer() { private val newClipRect = MutableRect(0f, 0f, 0f, 0f) @Transient - private val layerPaint = Paint() + private val layerPaint = Paint().apply { + isAntiAlias = true + } abstract fun loadLayers() : List diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index c977e5d7..729853eb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -19,7 +19,6 @@ import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode -import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.isInvert import io.github.alexzhirkevich.compottie.internal.helpers.isLuma import io.github.alexzhirkevich.compottie.internal.platform.Luma @@ -28,7 +27,7 @@ import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.platform.setBlurMaskFiler +import io.github.alexzhirkevich.compottie.internal.platform.setBlurMaskFilter import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.set @@ -53,6 +52,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { } private val clearPaint by lazy { Paint().apply { + isAntiAlias = true blendMode = BlendMode.Clear } } @@ -232,7 +232,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { val radius = it.radius?.interpolated(frame) ?: return@let null if (radius != lastBlurRadius) { - paint.setBlurMaskFiler(radius) + paint.setBlurMaskFilter(radius, isImage = this is ImageLayer) } return radius } ?: 0f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 0ab1f1e9..09c8ab03 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -108,6 +108,7 @@ internal class SolidColorLayer( private val paint by lazy { Paint().apply { + isAntiAlias = true blendMode = this@SolidColorLayer.blendMode.asComposeBlendMode() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 59ee1a93..89ae2b22 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -4,7 +4,6 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorMatrix -import androidx.compose.ui.graphics.ColorMatrixColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader @@ -152,12 +151,13 @@ internal expect fun MakeRadialGradient( matrix: Matrix ) : Shader -internal expect fun Paint.setBlurMaskFiler(radius: Float) +internal expect fun Paint.setBlurMaskFilter(radius: Float, isImage : Boolean = false) + internal val ColorFilter.Companion.Luma : ColorFilter get() = LumaColorFilter private val LumaColorFilter by lazy { - ColorMatrixColorFilter( + ColorFilter.colorMatrix( ColorMatrix( floatArrayOf( 0f, 0f, 0f, 0f, 0f, @@ -167,4 +167,4 @@ private val LumaColorFilter by lazy { ) ) ) -} \ No newline at end of file +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index bd5dd714..59acfd84 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -85,6 +85,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private val path = Path() private val rect = MutableRect(0f, 0f, 0f, 0f) protected val paint = Paint().apply { + isAntiAlias = true strokeMiterLimit = strokeMiter strokeCap = lineCap.asStrokeCap() strokeJoin = lineJoin.asStrokeJoin() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index bbfd111d..f769bfa1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -69,6 +69,7 @@ internal class FillShape( private val paint by lazy { Paint().apply { + isAntiAlias = true layer.blendMode.asComposeBlendMode() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index ffca4d6e..d9436487 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -84,7 +84,9 @@ internal class GradientFillShape( private var paths: List = emptyList() @Transient - private val paint = Paint() + private val paint = Paint().apply { + isAntiAlias = true + } @Transient private val gradientCache = LinkedHashMap() diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt index a24abb24..cef5f79f 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.platform +import androidx.compose.ui.draw.BlurredEdgeTreatment import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter @@ -14,9 +15,12 @@ import androidx.compose.ui.graphics.toArgb import org.jetbrains.skia.FilterBlurMode import org.jetbrains.skia.FilterTileMode import org.jetbrains.skia.GradientStyle +import org.jetbrains.skia.ImageFilter import org.jetbrains.skia.MaskFilter import org.jetbrains.skia.Matrix33 import org.jetbrains.skia.Shader +import kotlin.math.PI +import kotlin.math.sqrt internal actual fun MakeLinearGradient( from : Offset, @@ -89,12 +93,26 @@ internal fun TileMode.toSkiaTileMode(): FilterTileMode = when (this) { -internal actual fun Paint.setBlurMaskFiler(radius: Float) { +internal actual fun Paint.setBlurMaskFilter(radius: Float, isImage : Boolean) { val skPaint = asFrameworkPaint() - if (radius > 0f) { - skPaint.maskFilter = MaskFilter.makeBlur(FilterBlurMode.NORMAL, radius) + val sigma = if (radius > 0) { + BlurSigmaScale * radius } else { + 0.0f + } + + if (sigma > 0f) { + if (isImage) { + skPaint.imageFilter = ImageFilter.makeBlur(sigma, sigma, FilterTileMode.DECAL) + } else { + skPaint.maskFilter = MaskFilter.makeBlur(FilterBlurMode.NORMAL, sigma) + } + } else { + skPaint.imageFilter = null skPaint.maskFilter = null } } + +private val BlurSigmaScale = .3f + From 8d845cd1db245105f406483ccdcf07660147d035 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 4 Jun 2024 17:37:30 +0300 Subject: [PATCH 028/100] example opacity grid --- example/shared/src/commonMain/kotlin/App.kt | 34 +++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 5fea8798..085e663e 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -4,6 +4,15 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.blur +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec @@ -12,6 +21,7 @@ import io.github.alexzhirkevich.compottie.assets.rememberLottieAssetsManager import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi +import kotlin.math.roundToInt private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -38,7 +48,7 @@ private val IMAGE_ASSET = "image_asset.json" fun App() { val composition = rememberLottieComposition( - LottieCompositionSpec.Resource(MATTE_LUMA) + LottieCompositionSpec.Resource(ROBOT) ) LaunchedEffect(composition) { @@ -46,7 +56,9 @@ fun App() { } Image( - modifier = Modifier.fillMaxSize(), + modifier = Modifier + .fillMaxSize() + .opacityGrid(), painter = rememberLottiePainter( composition = composition.value, iterations = LottieConstants.IterateForever, @@ -57,7 +69,6 @@ fun App() { ) } - /** * [LottieComposition] spec from composeResources/[dir]/[path] json asset * */ @@ -104,3 +115,20 @@ private fun rememberResourcesAssetsManager( readBytes(fullPath) } +private val DarkOpacity = Color(0xff7f7f7f) +private val LightOpacity = Color(0xffb2b2b2) +private fun Modifier.opacityGrid(cellSize : Dp = 30.dp) = drawBehind { + + val sizePx = cellSize.toPx() + val s = Size(sizePx,sizePx) + repeat((size.width /sizePx).toInt() + 1){ i -> + repeat((size.height / sizePx).toInt() + 1){ j-> + + drawRect( + color = if (i % 2 == j % 2) DarkOpacity else LightOpacity, + topLeft = Offset(i * sizePx, j * sizePx), + size = s + ) + } + } +} From 73283f9cf909f7e6ea2c24e54f2e2c40a354c2bb Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 5 Jun 2024 11:39:26 +0300 Subject: [PATCH 029/100] fix skiko 0-scale shader crash, single-dash error --- .../alexzhirkevich/compottie/LottiePainter.kt | 2 +- .../compottie/internal/LottieJson.kt | 1 + .../internal/animation/BezierKeyframe.kt | 19 ++++++- .../internal/layers/CompositionLayer.kt | 1 - .../compottie/internal/layers/ImageLayer.kt | 3 - .../compottie/internal/layers/Layer.kt | 2 - .../compottie/internal/layers/NullLayer.kt | 3 - .../internal/layers/PrecompositionLayer.kt | 3 - .../compottie/internal/layers/ShapeLayer.kt | 3 - .../internal/layers/SolidColorLayer.kt | 3 - .../compottie/internal/layers/TextLayer.kt | 3 - .../internal/shapes/BaseStrokeShape.kt | 34 +++++++---- .../compottie/internal/utils/Matrix.kt | 5 +- .../internal/platform/PlatformShader.skiko.kt | 56 +++++++++++++------ 14 files changed, 85 insertions(+), 53 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index cc513957..b2e1e1fa 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -216,7 +216,7 @@ private class LottiePainter( } }.let { if (it.inWholeMilliseconds > 0) { - println(it.inWholeMilliseconds) +// println(it.inWholeMilliseconds) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 49545412..3c7956f8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -117,6 +117,7 @@ internal val LottieJson by lazy { polymorphic(AnimatedVector2::class) { subclass(AnimatedVector2.Default::class) subclass(AnimatedVector2.Animated::class) + subclass(AnimatedVector2.Split::class) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt index 3936098d..31ef2757 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt @@ -6,16 +6,23 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData +import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonTransformingSerializer @Serializable internal class BezierKeyframe( @SerialName("s") + @Serializable(with = BezierSerializer::class) override val start: Bezier? = null, @SerialName("e") + @Serializable(with = BezierSerializer::class) override val end: Bezier? = null, @SerialName("t") @@ -57,4 +64,14 @@ internal class ShapeKeyframe( override val outValue : BezierInterpolation? = null, -) : Keyframe() \ No newline at end of file +) : Keyframe() + + +internal class BezierSerializer : JsonTransformingSerializer(Bezier.serializer()) { + override fun transformDeserialize(element: JsonElement): JsonElement { + if (element is JsonArray){ + return element.first() + } + return element + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 868b6d81..66afaa96 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -39,7 +39,6 @@ internal class CompositionLayer( override val inPoint: Float get() = composition.lottieData.inPoint override val outPoint: Float get() = composition.lottieData.outPoint - override val startTime: Int get() = 0 override val name: String? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 436e6b25..43ef88a4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -49,9 +49,6 @@ internal class ImageLayer( @SerialName("op") override val outPoint: Float? = null, - @SerialName("st") - override val startTime: Int? = null, - @SerialName("nm") override val name: String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 86865a76..22abfe53 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -31,8 +31,6 @@ internal sealed interface Layer { val outPoint : Float? - val startTime : Int? - val name : String? var painterProperties : PainterProperties? diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index b48db078..f000a157 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -42,9 +42,6 @@ internal class NullLayer( @SerialName("op") override val outPoint: Float? = null, - @SerialName("st") - override val startTime: Int? = null, - @SerialName("nm") override val name: String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index d31c618b..bd1f514a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -38,9 +38,6 @@ internal class PrecompositionLayer( @SerialName("op") override val outPoint: Float? = null, - @SerialName("st") - override val startTime: Int? = null, - @SerialName("nm") override val name: String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 38aa43a7..85861ba2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -47,9 +47,6 @@ internal class ShapeLayer( @SerialName("op") override val outPoint: Float? = null, - @SerialName("st") - override val startTime: Int? = null, - @SerialName("nm") override val name: String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 09c8ab03..9c27a5e7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -49,9 +49,6 @@ internal class SolidColorLayer( @SerialName("op") override val outPoint: Float? = null, - @SerialName("st") - override val startTime: Int? = null, - @SerialName("nm") override val name: String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 93eb1a2b..a0a8d178 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -58,9 +58,6 @@ internal class TextLayer( @SerialName("op") override val outPoint: Float? = null, - @SerialName("st") - override val startTime: Int? = null, - @SerialName("nm") override val name: String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 59acfd84..5ebfa13e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -93,7 +93,14 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private val pm = ExtendedPathMeasure() private val dashPattern by lazy { - strokeDash?.filter { it.dashType != DashType.Offset }?.map { it.value } + strokeDash?.filter { it.dashType != DashType.Offset }?.map { it.value }?.let { + + // If there is only 1 value then it is assumed to be equal parts on and off. + + if (it.size == 1) + it + it[0] + else it + } } private val dashOffset by lazy { @@ -101,7 +108,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } private val dashPatternValues by lazy { - FloatArray(dashPattern?.size ?: 0) + FloatArray(dashPattern?.size?.coerceAtLeast(2) ?: 0) } private var roundShape : RoundShape? = null @@ -112,7 +119,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float + frame: Float, ) { if (hidden){ @@ -294,32 +301,35 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private fun applyDashPatternIfNeeded(parentMatrix: Matrix, frame: Float) { + val dp = dashPattern - val o = dashOffset?.interpolated(frame) ?: 0f + if (dp.isNullOrEmpty()) { return } val scale = parentMatrix.scale + val o = dashOffset?.interpolated(frame)?.times(scale) ?: 0f + dp.fastForEachIndexed { i, strokeDash -> + dashPatternValues[i] = strokeDash.interpolated(frame) + // If the value of the dash pattern or gap is too small, the number of individual sections // approaches infinity as the value approaches 0. // To mitigate this, we essentially put a minimum value on the dash pattern size of 1px // and a minimum gap size of 0.01. - if (i % 2 == 0) { - if (dashPatternValues[i] < 1f) { - dashPatternValues[i] = 1f - } - } else { - if (dashPatternValues[i] < 0.1f) { - dashPatternValues[i] = 0.1f - } + when { + i % 2 == 0 -> dashPatternValues[i] = dashPatternValues[i].coerceAtLeast(1f) + i % 2 == 1 -> dashPatternValues[i] = dashPatternValues[i].coerceAtLeast(.01f) } + dashPatternValues[i] = dashPatternValues[i] * scale } + println(scale) + paint.pathEffect = PathEffect.dashPathEffect(dashPatternValues, o) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index 7ec3c805..aeb052de 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix import kotlin.math.hypot +import kotlin.math.roundToInt import kotlin.math.sqrt private val tempMatrixConcat = Matrix() @@ -18,7 +19,9 @@ val Matrix.scale: Float get() { val p1 = map(Offset.Zero) val p2 = map(InvSqrt2Offset) - return hypot(p2.x - p1.x, p2.y - p1.y) + // hypot can result in float errors like 1.00000010 + // that cause some problems like invalid stroke dash offset + return (hypot(p2.x - p1.x, p2.y - p1.y) * 1000).roundToInt() / 1000f } fun Matrix.preTranslate(x : Float, y : Float) { diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt index cef5f79f..4980e117 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -20,6 +20,7 @@ import org.jetbrains.skia.MaskFilter import org.jetbrains.skia.Matrix33 import org.jetbrains.skia.Shader import kotlin.math.PI +import kotlin.math.abs import kotlin.math.sqrt internal actual fun MakeLinearGradient( @@ -29,19 +30,26 @@ internal actual fun MakeLinearGradient( colorStops: List, tileMode: TileMode, matrix: Matrix -) = Shader.makeLinearGradient( - x0 = from.x, - y0 = from.y, - x1 = to.x, - y1 = to.y, - colors = colors.toIntArray(), - positions = colorStops.toFloatArray(), - style = GradientStyle( - tileMode = tileMode.toSkiaTileMode(), - isPremul = true, - localMatrix = matrix.asSkia33() - ) -) +) : Shader { + return try { + Shader.makeLinearGradient( + x0 = from.x, + y0 = from.y, + x1 = to.x, + y1 = to.y, + colors = colors.toIntArray(), + positions = colorStops.toFloatArray(), + style = GradientStyle( + tileMode = tileMode.toSkiaTileMode(), + isPremul = true, + localMatrix = matrix.asSkia33(coerceScale = true) + ) + ) + }catch (t : Throwable){ + print("${matrix.values[Matrix.ScaleX]} ${matrix.values[Matrix.ScaleY]}") + throw t + } +} internal actual fun MakeRadialGradient( center : Offset, @@ -59,18 +67,32 @@ internal actual fun MakeRadialGradient( style = GradientStyle( tileMode = tileMode.toSkiaTileMode(), isPremul = true, - localMatrix = matrix.asSkia33() + localMatrix = matrix.asSkia33(coerceScale = true) ) ) -internal fun Matrix.asSkia33() : Matrix33 { +internal fun Matrix.asSkia33(coerceScale : Boolean = false) : Matrix33 { + + // skiko shaders with zero scale cause crash + + val scaleX = when { + coerceScale && abs(values[Matrix.ScaleX]) < 0.001f -> 0.001f + else -> values[Matrix.ScaleX] + } + + val scaleY = when { + coerceScale && abs(values[Matrix.ScaleY]) < 0.001f -> 0.001f + else -> values[Matrix.ScaleY] + } + + return Matrix33( - values[Matrix.ScaleX], + scaleX, values[Matrix.SkewX], values[Matrix.TranslateX], values[Matrix.SkewY], - values[Matrix.ScaleY], + scaleY, values[Matrix.TranslateY], values[Matrix.Perspective0], values[Matrix.Perspective1], From 18bb144db1462ad32a0d4e35fe19ca0f87bf3781 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 5 Jun 2024 11:39:45 +0300 Subject: [PATCH 030/100] support split vector keyframe --- .../internal/animation/AnimatedVector2.kt | 55 ++++++++++++++++--- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index d0790eee..d7c957b9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -6,22 +6,26 @@ import androidx.compose.ui.geometry.isUnspecified import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.util.lerp +import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonClassDiscriminator +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.booleanOrNull +import kotlinx.serialization.json.intOrNull +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive import kotlin.math.hypot -typealias Vec2 = Offset +internal typealias Vec2 = Offset -@OptIn(ExperimentalSerializationApi::class) -@Serializable() -@JsonClassDiscriminator("a") +@Serializable(with = AnimatedVector2Serializer::class) internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @Serializable - @SerialName("0") class Default( @SerialName("k") val value: FloatArray, @@ -40,7 +44,6 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { } @Serializable - @SerialName("1") class Animated( @SerialName("k") val value: List, @@ -79,7 +82,7 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { val tangent = pathMeasure.getTangent(distance) when { - distance < 0 -> pos + tangent * distance + distance < 0 -> pos + tangent * distance distance > length -> pos + tangent * (distance - length) else -> pos } @@ -96,6 +99,44 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { return delegate.interpolated(frame) } } + + @Serializable + class Split( + val x: AnimatedValue, + val y: AnimatedValue, + ) : AnimatedVector2 { + + override val expression: String? get() = null + override val index: String? get() = null + + override fun interpolated(frame: Float): Vec2 { + return Offset( + x.interpolated(frame), + y.interpolated(frame) + ) + } + } +} + + +internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer(AnimatedVector2::class){ + + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + + return when { + element.jsonObject["s"]?.jsonPrimitive?.booleanOrNull == true -> + AnimatedVector2.Split.serializer() + + element.jsonObject["a"]?.jsonPrimitive?.intOrNull == 1 -> + AnimatedVector2.Animated.serializer() + + element.jsonObject["a"]?.jsonPrimitive?.intOrNull == 0 -> + AnimatedVector2.Default.serializer() + + else -> error("Unknown transform") + + } + } } private fun Path.createPath( From 79c0125add27c0e884441b71b54c545f24e67ea3 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 5 Jun 2024 17:36:50 +0300 Subject: [PATCH 031/100] wip text layer --- .../compottie/LottieComposition.kt | 3 +- .../alexzhirkevich/compottie/LottiePainter.kt | 18 +- .../compottie/internal/AnimationState.kt | 46 + .../internal/animation/AnimatedColor.kt | 6 +- .../internal/animation/AnimatedGradient.kt | 3 +- .../internal/animation/AnimatedShape.kt | 31 +- .../animation/AnimatedTextDocument.kt | 9 +- .../internal/animation/AnimatedTransform.kt | 20 +- .../internal/animation/AnimatedValue.kt | 7 +- .../internal/animation/AnimatedVector2.kt | 20 +- .../animation/BaseKeyframeAnimation.kt | 46 +- .../internal/animation/BezierKeyframe.kt | 10 +- .../internal/animation/KeyframeAnimation.kt | 5 +- .../internal/animation/RepeaterTransform.kt | 11 +- .../animation/expressions/Expression.kt | 14 + .../internal/content/ContentGroup.kt | 46 +- .../internal/content/DrawingContent.kt | 6 +- .../compottie/internal/content/PathContent.kt | 3 +- .../internal/content/ShapeModifierContent.kt | 19 - .../internal/helpers/CompoundTrimPath.kt | 5 +- .../internal/helpers/text/TextDocument.kt | 2 +- .../internal/layers/BaseCompositionLayer.kt | 70 +- .../compottie/internal/layers/BaseLayer.kt | 103 +- .../compottie/internal/layers/ImageLayer.kt | 63 +- .../compottie/internal/layers/Layer.kt | 3 +- .../compottie/internal/layers/NullLayer.kt | 7 +- .../compottie/internal/layers/ShapeLayer.kt | 11 +- .../internal/layers/SolidColorLayer.kt | 10 +- .../compottie/internal/layers/TextLayer.kt | 85 +- .../internal/platform/PlatformPath.kt | 9 +- .../internal/platform/PlatformShader.kt | 9 +- .../internal/shapes/BaseStrokeShape.kt | 41 +- .../compottie/internal/shapes/EllipseShape.kt | 9 +- .../compottie/internal/shapes/FillShape.kt | 18 +- .../internal/shapes/GradientFillShape.kt | 18 +- .../internal/shapes/GradientStrokeShape.kt | 10 +- .../internal/shapes/MergePathsShape.kt | 31 +- .../compottie/internal/shapes/PathShape.kt | 14 +- .../internal/shapes/PolystarShape.kt | 37 +- .../compottie/internal/shapes/RectShape.kt | 11 +- .../internal/shapes/RepeaterShape.kt | 29 +- .../compottie/internal/shapes/RoundShape.kt | 171 +- .../internal/shapes/SolidStrokeShape.kt | 7 +- .../composeResources/files/astronaut.json | 10442 ++++++++++++++++ .../composeResources/files/image_asset.json | 73 +- .../files/image_asset_embedded.json | 1 + .../composeResources/files/text.json | 78 +- .../files/zzzzzz_broken_tangents_1.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 3 + 49 files changed, 10953 insertions(+), 741 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/expressions/Expression.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt create mode 100644 example/shared/src/commonMain/composeResources/files/astronaut.json create mode 100644 example/shared/src/commonMain/composeResources/files/image_asset_embedded.json create mode 100644 example/shared/src/commonMain/composeResources/files/zzzzzz_broken_tangents_1.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 4ef941b5..5d528723 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -7,6 +7,7 @@ import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.durationMillis @@ -18,7 +19,7 @@ import kotlinx.coroutines.withContext @Stable class LottieComposition internal constructor( internal val lottieData: LottieData, - val fonts : Map = emptyMap(), + val fonts : Map = emptyMap(), ) { val startFrame: Float get() = lottieData.inPoint diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index b2e1e1fa..f7b4fbab 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -23,6 +23,7 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset @@ -52,6 +53,8 @@ fun rememberLottiePainter( assetManager: LottieAssetsManager = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, ) : Painter { + + val progress = animateLottieCompositionAsState( composition = composition, isPlaying = isPlaying, @@ -176,6 +179,12 @@ private class LottiePainter( ) } + private val frame: Float by derivedStateOf { + val p = composition.lottieData.outPoint * progress - + composition.lottieData.inPoint + p.coerceAtLeast(0f) + } + override fun applyAlpha(alpha: Float): Boolean { if (alpha !in 0f..1f) return false @@ -185,6 +194,8 @@ private class LottiePainter( } override fun DrawScope.onDraw() { + + matrix.reset() val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) @@ -207,7 +218,7 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { try { - compositionLayer.draw(this, matrix, alpha, currentFrame) + compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) } catch (t: Throwable) { println("Lottie crashed in draw :(") t.printStackTrace() @@ -216,7 +227,7 @@ private class LottiePainter( } }.let { if (it.inWholeMilliseconds > 0) { -// println(it.inWholeMilliseconds) + println(it.inWholeMilliseconds) } } } @@ -246,4 +257,5 @@ private suspend fun LottieComposition.preloadAssets( } } }.filterNotNull().joinAll() -} \ No newline at end of file +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt new file mode 100644 index 00000000..da81925d --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -0,0 +1,46 @@ +package io.github.alexzhirkevich.compottie.internal + +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import io.github.alexzhirkevich.compottie.LottieComposition +import kotlin.jvm.JvmField +import kotlin.jvm.JvmInline + +@JvmInline +value class AnimationState(val frame : Float) + +//internal interface AnimationState { +// +// val animation : LottieData +// +// val frame: Float +//} +// +//internal class CompositionAnimationState( +// private val composition: LottieComposition, +// private val progressProvider : () -> Float, +//) : AnimationState { +// +// override val animation: LottieData +// get() = composition.lottieData +// +// override val frame: Float by derivedStateOf { +// val p = composition.lottieData.outPoint * progressProvider() - +// composition.lottieData.inPoint +// p.coerceAtLeast(0f) +// } +//} +// +//internal class RemappedAnimationState( +// private val frameRemapping : (AnimationState) -> Float = { it.frame }, +//) : AnimationState { +// +// var delegate: AnimationState? = null +// +// override val frame: Float by derivedStateOf { +// frameRemapping(checkNotNull(delegate)) +// } +// +// override val animation: LottieData +// get() = checkNotNull(delegate).animation +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index e9cd85e7..ead016e4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.lerp +import io.github.alexzhirkevich.compottie.internal.AnimationState import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -30,7 +31,7 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { @Transient private val color: Color = value.toColor() - override fun interpolated(frame: Float) = color + override fun interpolated(state: AnimationState) = color } @Serializable @@ -46,9 +47,10 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null ) : AnimatedColor, KeyframeAnimation by BaseKeyframeAnimation( + expression = expression, keyframes = value, emptyValue = Color.Transparent, - map = { s, e, p, _ -> + map = { s, e, p -> lerp(s.toColor(), e.toColor(), easingX.transform(p)) } ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt index f9f18937..887820f9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Color +import io.github.alexzhirkevich.compottie.internal.AnimationState import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -53,7 +54,7 @@ internal sealed interface AnimatedGradient : KeyframeAnimation colorsVector.asGradient(numberOfColors) } - override fun interpolated(frame: Float): ColorsWithStops { + override fun interpolated(state: AnimationState): ColorsWithStops { return colors } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 400bfd10..732cd519 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -1,9 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent -import io.github.alexzhirkevich.compottie.internal.content.modifiedBy -import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData import io.github.alexzhirkevich.compottie.internal.helpers.mapPath @@ -19,8 +17,6 @@ import kotlinx.serialization.json.JsonClassDiscriminator @JsonClassDiscriminator("a") internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { - var shapeModifiers: List - @SerialName("0") @Serializable class Default( @@ -34,9 +30,6 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { val bezier: Bezier, ) : AnimatedShape { - @Transient - override var shapeModifiers: List = emptyList() - private val unmodifiedPath by lazy { Path().also { bezier.toShapeData().mapPath(it) @@ -49,14 +42,9 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { @Transient private val tmpPath = Path() - override fun interpolated(frame: Float): Path { - if (shapeModifiers.isEmpty()) { - tmpPath.set(unmodifiedPath) - return unmodifiedPath - } - + override fun interpolated(state: AnimationState): Path { tmpPath.reset() - shapeData.modifiedBy(shapeModifiers, frame).mapPath(tmpPath) + shapeData.mapPath(tmpPath) return tmpPath } } @@ -74,9 +62,6 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { val keyframes: List, ) : AnimatedShape, KeyframeAnimation { - @Transient - override var shapeModifiers: List = emptyList() - @Transient private val tmpPath = Path() @@ -85,18 +70,18 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { @Transient private var delegate = BaseKeyframeAnimation( + expression = expression, keyframes = keyframes.map { it.toShapeKeyframe() }, emptyValue = tmpPath, - map = { s, e, p, frame -> + map = { s, e, p-> tmpShapeData.interpolateBetween(s, e, easingX.transform(p)) - val modified = tmpShapeData.modifiedBy(shapeModifiers, frame) - modified.mapPath(tmpPath) + tmpShapeData.mapPath(tmpPath) tmpPath } ) - override fun interpolated(frame: Float): Path { - return delegate.interpolated(frame) + override fun interpolated(state: AnimationState): Path { + return delegate.interpolated(state) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt index 232e5057..494ebea1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.animation +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -22,16 +23,16 @@ internal class AnimatedTextDocument( @Transient private val delegate = BaseKeyframeAnimation( + expression = expression, keyframes = keyframes, emptyValue = document, - map = { s, e, p, _ -> - + map = { s, e, p -> //TODO: lerp properties? if (p != 1.0f) s else e } ) - override fun interpolated(frame: Float): TextDocument { - return delegate.interpolated(frame) + override fun interpolated(state: AnimationState): TextDocument { + return delegate.interpolated(state) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 30198fda..3017b32f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -1,17 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Matrix +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.utils.Math import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.preRotate import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate -import io.github.alexzhirkevich.compottie.internal.utils.scale import io.github.alexzhirkevich.compottie.internal.utils.setValues -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient -import kotlin.math.abs -import kotlin.math.absoluteValue import kotlin.math.cos import kotlin.math.sin import kotlin.math.tan @@ -44,23 +40,23 @@ internal abstract class AnimatedTransform { FloatArray(9) } - fun matrix(frame: Float): Matrix { + fun matrix(state: AnimationState): Matrix { matrix.reset() - position?.interpolated(frame) + position?.interpolated(state) ?.takeIf { it.x != 0f || it.y != 0f } ?.let { matrix.preTranslate(it.x, it.y) } - rotation?.interpolated(frame) + rotation?.interpolated(state) ?.takeIf { it != 0f } ?.let(matrix::preRotate) - skew?.interpolated(frame) + skew?.interpolated(state) ?.takeIf { it != 0f } ?.let { sk -> - val skewAngle = skewAxis?.interpolated(frame) + val skewAngle = skewAxis?.interpolated(state) val mCos = if (skewAngle == null) 0f @@ -98,14 +94,14 @@ internal abstract class AnimatedTransform { matrix.preConcat(skewMatrix3) } - scale?.interpolated(frame) + scale?.interpolated(state) ?.takeIf { it.x != 100f || it.y != 100f } ?.let { matrix.preScale(it.x / 100f, it.y / 100f) } - anchorPoint?.interpolated(frame) + anchorPoint?.interpolated(state) ?.takeIf { it.x != 0f || it.y != 0f } ?.let { matrix.preTranslate(-it.x, -it.y) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt index ee15cd21..d61c6698 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.internal.AnimationState import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -24,7 +25,7 @@ internal sealed interface AnimatedValue : KeyframeAnimation, Indexable { override val index: String? = null ) : AnimatedValue { - override fun interpolated(frame: Float): Float = value + override fun interpolated(state: AnimationState): Float = value } @Serializable @@ -39,10 +40,10 @@ internal sealed interface AnimatedValue : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null ) : AnimatedValue, KeyframeAnimation by BaseKeyframeAnimation( + expression = expression, keyframes = value, emptyValue = 1f, - map = { s, e, p, _ -> - + map = { s, e, p -> lerp(s[0], e[0], easingX.transform(p)) } ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index d7c957b9..5c956d9f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -1,17 +1,14 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.geometry.isSpecified -import androidx.compose.ui.geometry.isUnspecified import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.internal.AnimationState import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -import kotlinx.serialization.json.JsonClassDiscriminator import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.booleanOrNull @@ -40,7 +37,7 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @Transient private val animationVector = Offset(value[0], value[1]) - override fun interpolated(frame: Float): Vec2 = animationVector + override fun interpolated(state: AnimationState): Vec2 = animationVector } @Serializable @@ -65,9 +62,10 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @Transient private val delegate: KeyframeAnimation = BaseKeyframeAnimation( + expression = expression, keyframes = value, emptyValue = Offset.Zero, - map = { s, e, p, _ -> + map = { s, e, p -> if (inTangent != null && outTangent != null && !s.contentEquals(e)) { path.reset() @@ -95,8 +93,8 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { } ) - override fun interpolated(frame: Float): Offset { - return delegate.interpolated(frame) + override fun interpolated(state: AnimationState): Offset { + return delegate.interpolated(state) } } @@ -109,10 +107,10 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { override val expression: String? get() = null override val index: String? get() = null - override fun interpolated(frame: Float): Vec2 { + override fun interpolated(state: AnimationState): Vec2 { return Offset( - x.interpolated(frame), - y.interpolated(frame) + x.interpolated(state), + y.interpolated(state) ) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index e5537068..49158a99 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -1,12 +1,14 @@ package io.github.alexzhirkevich.compottie.internal.animation -import kotlin.math.roundToInt +import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.expressions.evaluate internal class BaseKeyframeAnimation>( + private val expression : String?, keyframes: List, private val emptyValue : T, - private val map : KF.(start : K, end : K, progress: Float, frame: Float) -> T + private val map : KF.(start : K, end : K, progress: Float) -> T ) : KeyframeAnimation { private val sortedKeyframes = keyframes @@ -38,39 +40,42 @@ internal class BaseKeyframeAnimation>( InvalidKeyframeError ), 0f, - firstFrame ) } } private val targetValue by lazy { + + val preLast = sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1) + keyframes.last().run { map( requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.start, + preLast?.start ?: start, InvalidKeyframeError ), requireNotNull( - sortedKeyframes.getOrNull(sortedKeyframes.lastIndex - 1)?.endHold ?: start, + preLast?.endHold ?: start, InvalidKeyframeError ), 1f, - lastFrame ) } } - override fun interpolated(frame: Float): T { - return when { + + override fun interpolated(state: AnimationState): T { + + val value = when { sortedKeyframes.isEmpty() -> emptyValue - frame >= lastFrame -> targetValue - frame <= firstFrame -> initialValue + state.frame >= lastFrame -> targetValue + state.frame <= firstFrame -> initialValue else -> { val kfIdx = timeIntervals.binarySearch { when { - frame < it.start -> 1 - frame > it.endInclusive -> -1 + state.frame < it.start -> 1 + state.frame > it.endInclusive -> -1 else -> 0 } } @@ -78,30 +83,35 @@ internal class BaseKeyframeAnimation>( require(kfIdx >= 0, InvalidKeyframeError) val progress = timeIntervals[kfIdx].let { - (frame - it.start) / (it.endInclusive - it.start) + (state.frame - it.start) / (it.endInclusive - it.start) } - sortedKeyframes[kfIdx].run { + val keyframe = sortedKeyframes[kfIdx] + keyframe.run { map( requireNotNull( - sortedKeyframes[kfIdx].start, + keyframe.start, InvalidKeyframeError ), requireNotNull( - sortedKeyframes[kfIdx].endHold + keyframe.endHold ?: sortedKeyframes.getOrNull(kfIdx + 1)?.start, InvalidKeyframeError ), progress, - frame ) } } } + + if (expression == null) { + return value + } + + return evaluate(expression, state, value) } } private val InvalidKeyframeError = { "Invalid keyframe" } - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt index 31ef2757..0ea0a0d2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt @@ -1,16 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.animation -import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent -import io.github.alexzhirkevich.compottie.internal.content.modifiedBy import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData -import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonArray -import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonTransformingSerializer @@ -40,10 +36,10 @@ internal class BezierKeyframe( internal fun BezierKeyframe.toShapeKeyframe( - modifiers: List = emptyList(), frame: Float = 0f + ) = ShapeKeyframe( - start = start?.toShapeData()?.modifiedBy(modifiers, frame), - end = end?.toShapeData()?.modifiedBy(modifiers, frame), + start = start?.toShapeData(), + end = end?.toShapeData(), time = time, inValue = inValue, outValue = outValue, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt index 42e6d836..9737fb2a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/KeyframeAnimation.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation -interface KeyframeAnimation { +import io.github.alexzhirkevich.compottie.internal.AnimationState - fun interpolated(frame: Float) : T +internal interface KeyframeAnimation { + fun interpolated(state: AnimationState) : T } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt index c1d38a17..6c9cf8e6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Matrix +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.utils.preRotate import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate @@ -38,25 +39,25 @@ internal class RepeaterTransform( val endOpacity : AnimatedValue? = null, ) : AnimatedTransform() { - fun repeaterMatrix(frame: Float, amount: Float): Matrix { + fun repeaterMatrix(state: AnimationState, amount: Float): Matrix { matrix.reset() - position?.interpolated(frame)?.let { + position?.interpolated(state)?.let { matrix.preTranslate( it.x * amount, it.y * amount ) } - scale?.interpolated(frame)?.let { + scale?.interpolated(state)?.let { matrix.preScale( it.x.div(100f).pow(amount), it.y.div(100f).pow(amount) ) } - rotation?.interpolated(frame)?.let { - val anchorPoint = anchorPoint?.interpolated(it) + rotation?.interpolated(state)?.let { + val anchorPoint = anchorPoint?.interpolated(state) if (anchorPoint != null) { matrix.translate(anchorPoint.x, anchorPoint.y) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/expressions/Expression.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/expressions/Expression.kt new file mode 100644 index 00000000..d8ac89b6 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/expressions/Expression.kt @@ -0,0 +1,14 @@ +package io.github.alexzhirkevich.compottie.internal.animation.expressions + +import io.github.alexzhirkevich.compottie.internal.AnimationState + +internal fun evaluate( + expression : String, + state: AnimationState, + value : T +) : T { + + // TODO: support expressions + return value +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index d7403a85..91ea4934 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.preConcat @@ -55,7 +56,7 @@ internal class ContentGroup( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float + state: AnimationState ) { if (hidden) { return @@ -66,8 +67,8 @@ internal class ContentGroup( matrix.setFrom(parentMatrix) if (transform != null) { - matrix.preConcat(transform.matrix(frame)) - transform.opacity?.interpolated(frame)?.let { + matrix.preConcat(transform.matrix(state)) + transform.opacity?.interpolated(state)?.let { layerAlpha = (layerAlpha * it / 100f).coerceIn(0f, 1f) } @@ -75,27 +76,26 @@ internal class ContentGroup( val isRenderingWithOffScreen = drawingContents.size > 2 && layerAlpha < 1f - drawScope.drawIntoCanvas { canvas -> - if (isRenderingWithOffScreen) { - offscreenRect.set(0f, 0f, 0f, 0f) - getBounds(drawScope, matrix, true, frame, offscreenRect) - offscreenPaint.alpha = layerAlpha - canvas.saveLayer(offscreenRect.toRect(), offscreenPaint) - } + val canvas = drawScope.drawContext.canvas + if (isRenderingWithOffScreen) { + offscreenRect.set(0f, 0f, 0f, 0f) + getBounds(drawScope, matrix, true, state, offscreenRect) + offscreenPaint.alpha = layerAlpha + canvas.saveLayer(offscreenRect.toRect(), offscreenPaint) + } - val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha + val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha - drawingContents.fastForEachReversed { content -> - content.draw(drawScope, matrix, childAlpha, frame) - } + drawingContents.fastForEachReversed { content -> + content.draw(drawScope, matrix, childAlpha, state) + } - if (isRenderingWithOffScreen) { - canvas.restore() - } + if (isRenderingWithOffScreen) { + canvas.restore() } } - override fun getPath(frame: Float): Path { + override fun getPath(state: AnimationState): Path { path.reset() if (hidden) { @@ -104,10 +104,10 @@ internal class ContentGroup( matrix.reset() if (transform != null) { - matrix.setFrom(transform.matrix(frame)) + matrix.setFrom(transform.matrix(state)) } pathContents.fastForEachReversed { - path.addPath(it.getPath(frame), matrix) + path.addPath(it.getPath(state), matrix) } return path @@ -129,17 +129,17 @@ internal class ContentGroup( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect, ) { matrix.setFrom(parentMatrix) if (transform != null) { - matrix.preConcat(transform.matrix(frame)) + matrix.preConcat(transform.matrix(state)) } rect.set(0f, 0f, 0f, 0f) drawingContents.fastForEachReversed { - it.getBounds(drawScope, matrix, applyParents, frame, rect) + it.getBounds(drawScope, matrix, applyParents, state, rect) outBounds.union(rect) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt index 8fde4aa8..8fba7a35 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/DrawingContent.kt @@ -3,15 +3,17 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope +import io.github.alexzhirkevich.compottie.internal.AnimationState internal interface DrawingContent : Content { - fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) + + fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) fun getBounds( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt index 344be06f..07aef077 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/PathContent.kt @@ -1,7 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.content import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.AnimationState internal interface PathContent : Content { - fun getPath(frame: Float) : Path + fun getPath(state: AnimationState) : Path } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt deleted file mode 100644 index 2e22083e..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ShapeModifierContent.kt +++ /dev/null @@ -1,19 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.content - -import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData - -internal interface ShapeModifierContent : Content { - fun modify(shape: ShapeData, frame: Float) : ShapeData -} - - -internal fun ShapeData.modifiedBy(modifiers: List, frame: Float) : ShapeData { - var b = this - - modifiers.fastForEachReversed { - b = it.modify(b, frame) - } - - return b -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt index 9a3f0ccc..7c0d4df0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.platform.applyTrimPath import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape @@ -12,9 +13,9 @@ internal class CompoundTrimPath { contents.add(trimPath) } - fun apply(path: Path, frame: Float) { + fun apply(path: Path, state: AnimationState) { contents.fastForEachReversed { - path.applyTrimPath(it, frame) + path.applyTrimPath(it, state) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt index eb77e438..f1b8479a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt @@ -25,7 +25,7 @@ internal class TextDocument( var fontSize : Float = 10f, @SerialName("lh") - var lineHeight : Float = 10f, + var lineHeight : Float = fontSize, @SerialName("sz") var wrapSize : FloatArray? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 4818f490..11dda6db 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -7,9 +7,9 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.clipRect import io.github.alexzhirkevich.compottie.internal.platform.saveLayer @@ -32,6 +32,12 @@ internal abstract class BaseCompositionLayer: BaseLayer() { isAntiAlias = true } +// private val remappedState by lazy { +// RemappedAnimationState( +// frameRemapping = ::remappedFrame +// ) +// } + abstract fun loadLayers() : List @@ -86,8 +92,9 @@ internal abstract class BaseCompositionLayer: BaseLayer() { drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float + state: AnimationState ) { +// remappedState.delegate = state newClipRect.set(0f, 0f, width, height) parentMatrix.map(newClipRect) @@ -95,63 +102,62 @@ internal abstract class BaseCompositionLayer: BaseLayer() { // Apply off-screen rendering only when needed in order to improve rendering performance. val isDrawingWithOffScreen = layers.isEmpty() && parentAlpha < 1f - drawScope.drawIntoCanvas { canvas -> - - if (isDrawingWithOffScreen) { - layerPaint.alpha = parentAlpha - canvas.saveLayer(newClipRect, layerPaint) - } else { - canvas.save() - } + val canvas = drawScope.drawContext.canvas - val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha + if (isDrawingWithOffScreen) { + layerPaint.alpha = parentAlpha + canvas.saveLayer(newClipRect, layerPaint) + } else { + canvas.save() + } - layers.fastForEachReversed { layer -> - // Only clip precomps. This mimics the way After Effects renders animations. - val ignoreClipOnThisLayer = isContainerLayer + val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha - if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { - canvas.clipRect(newClipRect) - } + layers.fastForEachReversed { layer -> + // Only clip precomps. This mimics the way After Effects renders animations. + val ignoreClipOnThisLayer = isContainerLayer - layer.draw( - drawScope, - parentMatrix, - childAlpha, - remappedFrame(frame) - ) + if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { + canvas.clipRect(newClipRect) } - canvas.restore() + layer.draw( + drawScope, + parentMatrix, + childAlpha, + AnimationState(remappedFrame(state)) + ) } + + canvas.restore() } override fun getBounds( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) { - super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) + super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) layers.fastForEachReversed { rect.set(0f, 0f, 0f, 0f) - it.getBounds(drawScope, boundsMatrix, true, frame, rect) + it.getBounds(drawScope, boundsMatrix, true, state, rect) outBounds.union(rect) } } - private fun remappedFrame(frame: Float): Float { + private fun remappedFrame(state: AnimationState): Float { - val tr = timeRemapping ?: return frame + val tr = timeRemapping ?: return state.frame val f = if (timeStretch != 0f && !isContainerLayer) { - frame / timeStretch - } else frame + state.frame / timeStretch + } else state.frame val composition = checkNotNull(painterProperties?.composition) - return tr.interpolated(f) * + return tr.interpolated(state) * composition.frameRate - composition.startFrame } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 729853eb..22a0a1ed 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.graphics.isIdentity import androidx.compose.ui.util.fastFirstOrNull import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect @@ -98,16 +99,18 @@ internal abstract class BaseLayer() : Layer, DrawingContent { drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float, + state: AnimationState, ) override fun draw( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float, + state: AnimationState, ) { + val frame = state.frame + if (hidden || (inPoint ?: 0f) > frame || (outPoint ?: Float.MAX_VALUE) < frame) return @@ -116,27 +119,27 @@ internal abstract class BaseLayer() : Layer, DrawingContent { matrix.setFrom(parentMatrix) parentLayers?.fastForEachReversed { - matrix.preConcat(it.transform.matrix(frame)) + matrix.preConcat(it.transform.matrix(state)) } var alpha = parentAlpha - transform.opacity?.interpolated(frame)?.let { + transform.opacity?.interpolated(state)?.let { alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) } if (matteLayer == null && !hasMask()) { - matrix.preConcat(transform.matrix(frame)) - drawLayer(drawScope, matrix, alpha, frame) + matrix.preConcat(transform.matrix(state)) + drawLayer(drawScope, matrix, alpha, state) return } - getBounds(drawScope, matrix, false, frame, rect) + getBounds(drawScope, matrix, false, state, rect) - intersectBoundsWithMatte(drawScope, rect, matrix, frame) + intersectBoundsWithMatte(drawScope, rect, matrix, state) - matrix.preConcat(transform.matrix(frame)) - intersectBoundsWithMask(rect, matrix, frame) + matrix.preConcat(transform.matrix(state)) + intersectBoundsWithMask(rect, matrix, state) // Intersect the mask and matte rect with the canvas bounds. // If the canvas has a transform, then we need to transform its bounds by its matrix @@ -162,16 +165,16 @@ internal abstract class BaseLayer() : Layer, DrawingContent { // Clear the off screen buffer. This is necessary for some phones. clearCanvas(canvas) - drawLayer(drawScope, matrix, alpha, frame) + drawLayer(drawScope, matrix, alpha, state) if (hasMask()) { - applyMasks(canvas, matrix, frame) + applyMasks(canvas, matrix, state) } matteLayer?.let { canvas.saveLayer(rect, mattePaint, SAVE_FLAGS) clearCanvas(canvas) - it.draw(drawScope, parentMatrix, alpha, frame) + it.draw(drawScope, parentMatrix, alpha, state) canvas.restore() } @@ -194,7 +197,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect, ) { rect.set(0f, 0f, 0f, 0f) @@ -203,15 +206,15 @@ internal abstract class BaseLayer() : Layer, DrawingContent { if (applyParents) { parentLayers?.fastForEachReversed { - boundsMatrix.preConcat(it.transform.matrix(frame)) + boundsMatrix.preConcat(it.transform.matrix(state)) } ?: run { - parentLayer?.transform?.matrix(frame)?.let { + parentLayer?.transform?.matrix(state)?.let { boundsMatrix.preConcat(it) } } } - boundsMatrix.preConcat(transform.matrix(frame)) + boundsMatrix.preConcat(transform.matrix(state)) } override fun setContents(contentsBefore: List, contentsAfter: List) { @@ -226,10 +229,10 @@ internal abstract class BaseLayer() : Layer, DrawingContent { this.matteLayer = layer } - override fun applyBlurEffectIfNeeded(paint: Paint, frame: Float, lastBlurRadius : Float?) : Float { + override fun applyBlurEffectIfNeeded(paint: Paint, state: AnimationState, lastBlurRadius : Float?) : Float { return blurEffect?.let { - val radius = it.radius?.interpolated(frame) ?: return@let null + val radius = it.radius?.interpolated(state) ?: return@let null if (radius != lastBlurRadius) { paint.setBlurMaskFilter(radius, isImage = this is ImageLayer) @@ -268,7 +271,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { ) } - private fun intersectBoundsWithMask(rect: MutableRect, matrix: Matrix, frame: Float) { + private fun intersectBoundsWithMask(rect: MutableRect, matrix: Matrix, state: AnimationState) { maskBoundsRect.set(0f, 0f, 0f, 0f) if (!hasMask()) { @@ -277,7 +280,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { masks?.fastForEachIndexed { i, mask -> - val maskPath = mask.shape?.interpolated(frame) ?: return@fastForEachIndexed + val maskPath = mask.shape?.interpolated(state) ?: return@fastForEachIndexed path.set(maskPath) path.transform(matrix) @@ -329,7 +332,12 @@ internal abstract class BaseLayer() : Layer, DrawingContent { rect.intersectOrReset(maskBoundsRect) } - private fun intersectBoundsWithMatte(drawScope: DrawScope, rect: MutableRect, matrix: Matrix, frame : Float) { + private fun intersectBoundsWithMatte( + drawScope: DrawScope, + rect: MutableRect, + matrix: Matrix, + state: AnimationState + ) { val matteLayer = matteLayer ?: return @@ -339,13 +347,13 @@ internal abstract class BaseLayer() : Layer, DrawingContent { return } matteBoundsRect.set(0f, 0f, 0f, 0f) - matteLayer.getBounds(drawScope, matrix, true, frame, matteBoundsRect) + matteLayer.getBounds(drawScope, matrix, true, state, matteBoundsRect) rect.intersectOrReset(matteBoundsRect) } - private fun applyMasks(canvas: Canvas, matrix: Matrix, frame: Float) { + private fun applyMasks(canvas: Canvas, matrix: Matrix, state: AnimationState) { canvas.saveLayer(rect, dstInPaint, SAVE_FLAGS) if (isAndroidAtMost(27)) { @@ -365,9 +373,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { } MaskMode.Add -> if (mask.isInverted) { - applyInvertedAddMask(canvas, matrix, mask, frame) + applyInvertedAddMask(canvas, matrix, mask, state) } else { - applyAddMask(canvas, matrix, mask, frame) + applyAddMask(canvas, matrix, mask, state) } MaskMode.Subtract -> { @@ -377,16 +385,16 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas.drawRect(rect, contentPaint) } if (mask.isInverted) { - applyInvertedSubtractMask(canvas, matrix, mask, frame) + applyInvertedSubtractMask(canvas, matrix, mask, state) } else { - applySubtractMask(canvas, matrix, mask, frame) + applySubtractMask(canvas, matrix, mask, state) } } MaskMode.Intersect -> if (mask.isInverted) { - applyInvertedIntersectMask(canvas, matrix, mask, frame) + applyInvertedIntersectMask(canvas, matrix, mask, state) } else { - applyIntersectMask(canvas, matrix, mask, frame) + applyIntersectMask(canvas, matrix, mask, state) } } } @@ -397,14 +405,14 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float, + state: AnimationState, ) { canvas.saveLayer(rect, contentPaint) canvas.drawRect(rect, contentPaint) - val maskPath = mask.shape?.interpolated(frame) ?: return + val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) - contentPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + contentPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f canvas.drawPath(path, dstOutPaint) canvas.restore() } @@ -413,12 +421,12 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float, + state: AnimationState, ) { - val maskPath = mask.shape?.interpolated(frame) ?: return + val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) - contentPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + contentPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f canvas.drawPath(path, contentPaint) } @@ -426,9 +434,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float, + state: AnimationState, ) { - val maskPath = mask.shape?.interpolated(frame) ?: return + val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) canvas.drawPath(path, dstOutPaint) @@ -438,12 +446,13 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float, + state: AnimationState, ) { canvas.saveLayer(rect, dstOutPaint) canvas.drawRect(rect, contentPaint) - dstOutPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f - val maskPath = mask.shape?.interpolated(frame) ?: return + dstOutPaint.alpha = mask.opacity?.interpolated(state) + ?.div(100f)?.coerceIn(0f, 1f) ?: 1f + val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) canvas.drawPath(path, dstOutPaint) @@ -454,13 +463,13 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float, + state: AnimationState, ) { canvas.saveLayer(rect, dstInPaint) - val maskPath = mask.shape?.interpolated(frame) ?: return + val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) - contentPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + contentPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f canvas.drawPath(path, contentPaint) canvas.restore() } @@ -469,12 +478,12 @@ internal abstract class BaseLayer() : Layer, DrawingContent { canvas: Canvas, matrix: Matrix, mask: Mask, - frame: Float, + state: AnimationState, ) { canvas.saveLayer(rect, dstInPaint) canvas.drawRect(rect, contentPaint) - dstOutPaint.alpha = mask.opacity?.interpolated(frame)?.div(100f)?.coerceIn(0f, 1f) ?: 1f - val maskPath = mask.shape?.interpolated(frame) ?: return + dstOutPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) canvas.drawPath(path, dstOutPaint) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 43ef88a4..2b92b06a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -6,12 +6,12 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.unit.IntSize +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode -import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.Mask import kotlinx.serialization.SerialName @@ -98,57 +98,56 @@ internal class ImageLayer( private var lastBlurRadius : Float? = null - override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { val mAsset = asset ?: return val bitmap = mAsset.bitmap ?: return paint.alpha = parentAlpha - lastBlurRadius = applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + lastBlurRadius = applyBlurEffectIfNeeded(paint, state, lastBlurRadius) - drawScope.drawIntoCanvas { canvas -> + val canvas = drawScope.drawContext.canvas - canvas.save() - canvas.concat(parentMatrix) - src.set(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat()) + canvas.save() + canvas.concat(parentMatrix) + src.set(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat()) - val maintainOriginalImageBounds = painterProperties?.maintainOriginalImageBounds == true + val maintainOriginalImageBounds = painterProperties?.maintainOriginalImageBounds == true - val dstSize = if (maintainOriginalImageBounds) { - IntSize( - (mAsset.width * drawScope.density).roundToInt(), - (mAsset.height * drawScope.density).roundToInt() - ) - } else { - IntSize( - (bitmap.width * drawScope.density).roundToInt(), - (bitmap.height * drawScope.density).roundToInt() - ) - } - - val srcSize = IntSize( - (bitmap.width * drawScope.density).toInt(), - (bitmap.height * drawScope.density).toInt() + val dstSize = if (maintainOriginalImageBounds) { + IntSize( + (mAsset.width * drawScope.density).roundToInt(), + (mAsset.height * drawScope.density).roundToInt() ) - - canvas.drawImageRect( - bitmap, - srcSize = srcSize, - dstSize = dstSize, - paint = paint + } else { + IntSize( + (bitmap.width * drawScope.density).roundToInt(), + (bitmap.height * drawScope.density).roundToInt() ) - canvas.restore() } + + val srcSize = IntSize( + (bitmap.width * drawScope.density).toInt(), + (bitmap.height * drawScope.density).toInt() + ) + + canvas.drawImageRect( + bitmap, + srcSize = srcSize, + dstSize = dstSize, + paint = paint + ) + canvas.restore() } override fun getBounds( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) { - super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) + super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) asset?.let { outBounds.set( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 22abfe53..6bd8944f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.graphics.Paint import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -57,7 +58,7 @@ internal sealed interface Layer { val effects: List - fun applyBlurEffectIfNeeded(paint: Paint, frame: Float, lastBlurRadius : Float?) : Float + fun applyBlurEffectIfNeeded(paint: Paint, state: AnimationState, lastBlurRadius : Float?) : Float } internal val Layer.isContainerLayer get() = name == "__container" diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index f000a157..3aa51c95 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform @@ -73,17 +74,17 @@ internal class NullLayer( override val effects: List = emptyList(), ) : BaseLayer() { - override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { } override fun getBounds( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) { - super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) + super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) outBounds.set(0f,0f,0f,0f) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 85861ba2..1f8d35f4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode @@ -97,18 +98,18 @@ internal class ShapeLayer( setContents(emptyList(), emptyList()) } - override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { - contentGroup.draw(drawScope, parentMatrix, parentAlpha, frame) + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { + contentGroup.draw(drawScope, parentMatrix, parentAlpha, state) } override fun getBounds( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect, ) { - super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) - contentGroup.getBounds(drawScope, boundsMatrix, applyParents, frame, outBounds) + super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) + contentGroup.getBounds(drawScope, boundsMatrix, applyParents, state, outBounds) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 9c27a5e7..46d09bbb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -7,6 +7,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode @@ -117,7 +118,7 @@ internal class SolidColorLayer( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float + state: AnimationState ) { if (hidden) { @@ -126,7 +127,7 @@ internal class SolidColorLayer( paint.color = color paint.alpha = (color.alpha * parentAlpha * - (transform.opacity?.interpolated(frame)?.div(100f) ?: 1f)).coerceIn(0f, 1f) + (transform.opacity?.interpolated(state)?.div(100f) ?: 1f)).coerceIn(0f, 1f) if (paint.alpha == 0f) { return @@ -141,9 +142,6 @@ internal class SolidColorLayer( path.close() - - drawScope.drawIntoCanvas { - it.drawPath(path, paint) - } + drawScope.drawContext.canvas.drawPath(path, paint) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index a0a8d178..a0e9cfbb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -12,14 +12,14 @@ import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextMeasurer +import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.drawText -import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.BaselineShift import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastForEachIndexed +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.toColor import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -127,8 +127,7 @@ internal class TextLayer( private val textSubLines: MutableList = ArrayList() @Transient - private var textStyle: androidx.compose.ui.text.TextStyle = - androidx.compose.ui.text.TextStyle.Default + private var textStyle: TextStyle = TextStyle.Default @Transient private val codePointCache = mutableMapOf() @@ -140,16 +139,17 @@ internal class TextLayer( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float + state: AnimationState ) { - val document = textData.document.interpolated(frame) + val document = textData.document.interpolated(state) drawScope.drawIntoCanvas { canvas -> canvas.save() canvas.concat(parentMatrix) - configurePaint(document, parentAlpha, frame) - configureTextStyle(drawScope, document, frame) + configurePaint(document, parentAlpha, state) + configureTextStyle(drawScope, document) + drawTextWithFonts(drawScope, document) canvas.restore() } @@ -159,25 +159,25 @@ internal class TextLayer( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) { - super.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) + super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) val composition = checkNotNull(painterProperties?.composition) outBounds.set(0f, 0f, composition.lottieData.width, composition.lottieData.height) } - private fun configurePaint(document: TextDocument, parentAlpha: Float, frame: Float) { + private fun configurePaint(document: TextDocument, parentAlpha: Float, state: AnimationState) { - fillPaint.color = textAnimation?.style?.fillColor?.interpolated(frame) + fillPaint.color = textAnimation?.style?.fillColor?.interpolated(state) ?: document.fillColor.toColor() - strokePaint.color = textAnimation?.style?.strokeColor?.interpolated(frame) + strokePaint.color = textAnimation?.style?.strokeColor?.interpolated(state) ?: document.strokeColor?.toColor() ?: Color.Transparent - fillPaint.alpha = transform.opacity?.interpolated(frame) + fillPaint.alpha = transform.opacity?.interpolated(state) ?.div(100f)?.times(parentAlpha) ?: parentAlpha @@ -185,7 +185,7 @@ internal class TextLayer( strokePaint.alpha = fillPaint.alpha } - val strokeWidth = textAnimation?.style?.strokeWidth?.interpolated(frame) + val strokeWidth = textAnimation?.style?.strokeWidth?.interpolated(state) ?: document.strokeWidth if (strokePaint.style.width != strokeWidth){ @@ -195,7 +195,7 @@ internal class TextLayer( } } - private fun configureTextStyle(drawScope: DrawScope, document: TextDocument, frame: Float) { + private fun configureTextStyle(drawScope: DrawScope, document: TextDocument) { val fontSize = document.fontSize.sp val baselineShift = document.baselineShift @@ -205,7 +205,7 @@ internal class TextLayer( val lineHeight = document.lineHeight.sp val fontFamily = checkNotNull(painterProperties?.composition?.fonts) - .get(document.fontFamily)?.let { FontFamily(it) } + .get(document.fontFamily) if ( textStyle.fontSize != fontSize || @@ -217,7 +217,8 @@ internal class TextLayer( baselineShift = baselineShift, fontSize = fontSize, lineHeight = lineHeight, - fontFamily = fontFamily + fontFamily = fontFamily, + color = Color.Red ) } } @@ -246,7 +247,7 @@ internal class TextLayer( return tm } - private fun drawTextWithFonts(drawScope: DrawScope, document: TextDocument, font: Font) { + private fun drawTextWithFonts(drawScope: DrawScope, document: TextDocument) { val measurer = getTextMeasurer(drawScope, drawScope.layoutDirection) var tracking = document.textTracking?.div(10f) ?: 0f @@ -260,29 +261,28 @@ internal class TextLayer( tracking.sp.toPx() } - drawScope.drawIntoCanvas { canvas -> - - allLines.fastForEachIndexed { alLinesIdx, textLine -> - val boxWidth = document.wrapSize?.firstOrNull() ?: 0f + val canvas = drawScope.drawContext.canvas - val lines = splitGlyphTextIntoLines(measurer, textLine, boxWidth, tracking) + allLines.fastForEachIndexed { alLinesIdx, textLine -> + val boxWidth = document.wrapSize?.firstOrNull() ?: 0f - lines.fastForEachIndexed { idx, line -> + val lines = splitGlyphTextIntoLines(measurer, textLine, boxWidth, tracking) - canvas.save() - if (offsetCanvas(canvas, drawScope, document, alLinesIdx + idx, line.width)) { - drawFontTextLine( - line.text, - measurer, - document, - drawScope, - canvas, - tracking - ) - } + lines.fastForEachIndexed { idx, line -> - canvas.restore() + canvas.save() + if (offsetCanvas(canvas, drawScope, document, alLinesIdx + idx, line.width)) { + drawFontTextLine( + line.text, + measurer, + document, + drawScope, + canvas, + tracking + ) } + + canvas.restore() } } } @@ -398,14 +398,13 @@ internal class TextLayer( val position = document.wrapPosition?.toOffset() val size = document.wrapSize?.let { Size(it[0], it[1]) } val lineStartY = if (position == null) { - 0f + density.run { -document.lineHeight.sp.toPx() } } else { document.lineHeight * density.density + position.y } val lineOffset: Float = (lineIndex * document.lineHeight * density.density) + lineStartY - val clip = painterProperties?.clipTextToBoundingBoxes == true if (clip && size != null && position != null && lineOffset >= position.y + size.height + document.fontSize) { @@ -434,11 +433,15 @@ internal class TextLayer( canvas: Canvas, tracking: Float ) { + var i = 0 while (i < text.length) { val charString: String = codePointToString(text, i) i += charString.length + + val measureResult = textMeasurer.measure(charString, textStyle) + drawCharacterFromFont(measureResult, documentData, drawScope) val charWidth = measureResult.size.width val tx = charWidth + tracking @@ -481,7 +484,7 @@ internal class TextLayer( drawScope: DrawScope ) { if (documentData.strokeOverFill) { - drawCharacter(character, fillPaint, drawScope) + drawCharacter(character, fillPaint, drawScope) drawCharacter(character, strokePaint, drawScope) } else { drawCharacter(character, strokePaint, drawScope) @@ -516,7 +519,7 @@ private class DrawProperties( var alpha: Float = 1f ) -private class TextSubLine( +private data class TextSubLine( var text : String= "", var width : Float = 0f ) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index 299fbd0d..69adb6c5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape import io.github.alexzhirkevich.compottie.internal.utils.floorMod import kotlin.math.abs @@ -24,13 +25,13 @@ internal fun Path.set(other : Path){ internal expect fun Path.addPath(path: Path, matrix: Matrix) : Path -internal fun Path.applyTrimPath(trimPath: TrimPathShape, frame: Float) { +internal fun Path.applyTrimPath(trimPath: TrimPathShape, state: AnimationState) { if (trimPath.hidden) { return } - val start: Float = trimPath.start.interpolated(frame) - val end: Float = trimPath.end.interpolated(frame) - val offset: Float = trimPath.offset.interpolated(frame) + val start: Float = trimPath.start.interpolated(state) + val end: Float = trimPath.end.interpolated(state) + val offset: Float = trimPath.offset.interpolated(state) applyTrimPath( startValue = start / 100f, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 89ae2b22..7cfd5cfe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType @@ -20,16 +21,16 @@ internal fun GradientShader( startPoint: AnimatedVector2, endPoint: AnimatedVector2, colors: GradientColors, - frame: Float, + state: AnimationState, matrix: Matrix, cache: LinkedHashMap ) : Shader { - val start = startPoint.interpolated(frame) - val end = endPoint.interpolated(frame) + val start = startPoint.interpolated(state) + val end = endPoint.interpolated(state) colors.colors.numberOfColors = colors.numberOfColors - val c = colors.colors.interpolated(frame) + val c = colors.colors.interpolated(state) return if (type == GradientType.Linear) { CachedLinearGradient( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 5ebfa13e..20cb4e39 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent @@ -119,7 +120,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float, + state: AnimationState, ) { if (hidden){ @@ -127,29 +128,29 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } paint.style = PaintingStyle.Stroke - paint.alpha = parentAlpha * (opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) - paint.strokeWidth = strokeWidth.interpolated(frame) + paint.alpha = parentAlpha * (opacity.interpolated(state) / 100f).coerceIn(0f, 1f) + paint.strokeWidth = strokeWidth.interpolated(state) if (paint.strokeWidth <= 0) { return } - applyDashPatternIfNeeded(parentMatrix, frame) + applyDashPatternIfNeeded(parentMatrix, state) - lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, state, lastBlurRadius) - roundShape?.applyTo(paint, frame) + roundShape?.applyTo(paint, state) drawScope.drawIntoCanvas { canvas -> pathGroups.fastForEach { pathGroup -> if (pathGroup.trimPath != null) { - applyTrimPath(canvas, frame, pathGroup, parentMatrix) + applyTrimPath(canvas, state, pathGroup, parentMatrix) } else { path.reset() pathGroup.paths.fastForEachReversed { - path.addPath(it.getPath(frame), parentMatrix) + path.addPath(it.getPath(state), parentMatrix) } canvas.drawPath(path, paint) } @@ -188,18 +189,18 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect, ) { path.reset() pathGroups.fastForEach { pathGroup -> pathGroup.paths.fastForEach { - path.addPath(it.getPath(frame), parentMatrix) + path.addPath(it.getPath(state), parentMatrix) } } rect.set(path.getBounds()) - val width = strokeWidth.interpolated(frame) + val width = strokeWidth.interpolated(state) rect.set( rect.left - width / 2f, @@ -220,7 +221,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private fun applyTrimPath( canvas: Canvas, - time: Float, + state: AnimationState, pathGroup: PathGroup, parentMatrix: Matrix, ) { @@ -231,11 +232,11 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { path.reset() pathGroup.paths.fastForEachReversed { - path.addPath(it.getPath(time).apply { transform(parentMatrix) }) + path.addPath(it.getPath(state).apply { transform(parentMatrix) }) } - val animStartValue: Float = pathGroup.trimPath.start.interpolated(time) / 100f - val animEndValue: Float = pathGroup.trimPath.end.interpolated(time) / 100f - val animOffsetValue: Float = pathGroup.trimPath.offset.interpolated(time) / 360f + val animStartValue: Float = pathGroup.trimPath.start.interpolated(state) / 100f + val animEndValue: Float = pathGroup.trimPath.end.interpolated(state) / 100f + val animOffsetValue: Float = pathGroup.trimPath.offset.interpolated(state) / 360f // If the start-end is ~100, consider it to be the full path. if (animStartValue < 0.01f && animEndValue > 0.99f) { @@ -260,7 +261,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { var currentLength = 0f pathGroup.paths.fastForEachReversed { - trimPathPath.set(it.getPath(time)) + trimPathPath.set(it.getPath(state)) trimPathPath.transform(parentMatrix) pm.setPath(trimPathPath, false) val length: Float = pm.length @@ -299,7 +300,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } - private fun applyDashPatternIfNeeded(parentMatrix: Matrix, frame: Float) { + private fun applyDashPatternIfNeeded(parentMatrix: Matrix, state: AnimationState) { val dp = dashPattern @@ -310,11 +311,11 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { val scale = parentMatrix.scale - val o = dashOffset?.interpolated(frame)?.times(scale) ?: 0f + val o = dashOffset?.interpolated(state)?.times(scale) ?: 0f dp.fastForEachIndexed { i, strokeDash -> - dashPatternValues[i] = strokeDash.interpolated(frame) + dashPatternValues[i] = strokeDash.interpolated(state) // If the value of the dash pattern or gap is too small, the number of individual sections // approaches infinity as the value approaches 0. diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 7ba5568f..9757031b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 @@ -43,13 +44,13 @@ internal class EllipseShape( @Transient private val trimPaths = CompoundTrimPath() - override fun getPath(frame: Float): Path { + override fun getPath(state: AnimationState): Path { if (hidden) { path.rewind() return path } - val size = size.interpolated(frame) + val size = size.interpolated(state) val halfWidth = size.x / 2f val halfHeight = size.y / 2f @@ -72,13 +73,13 @@ internal class EllipseShape( path.cubicTo(-halfWidth, 0 - cpH, 0 - cpW, -halfHeight, 0f, -halfHeight) // } - val position = position.interpolated(frame) + val position = position.interpolated(state) path.translate(position) path.close() - trimPaths.apply(path, frame) + trimPaths.apply(path, state) return path } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index f769bfa1..29e131ce 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -4,10 +4,10 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.PathFillType import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -79,26 +79,26 @@ internal class FillShape( private var lastBlurRadius : Float? = null - override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { if (hidden) { return } - paint.color = color.interpolated(frame) + paint.color = color.interpolated(state) - paint.alpha = opacity?.interpolated(frame)?.let { + paint.alpha = opacity?.interpolated(state)?.let { (parentAlpha * it / 100f).coerceIn(0f, 1f) } ?: parentAlpha - roundShape?.applyTo(paint, frame) + roundShape?.applyTo(paint, state) - lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, state, lastBlurRadius) path.reset() paths.fastForEach { - path.addPath(it.getPath(frame), parentMatrix) + path.addPath(it.getPath(state), parentMatrix) } @@ -110,13 +110,13 @@ internal class FillShape( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) { path.reset() paths.fastForEach { - path.addPath(it.getPath(frame), parentMatrix) + path.addPath(it.getPath(state), parentMatrix) } outBounds.set(path.getBounds()) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index d9436487..cefb2fef 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.graphics.BlurEffect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -9,6 +8,7 @@ import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors @@ -96,7 +96,7 @@ internal class GradientFillShape( private var lastBlurRadius : Float? = null - override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { if (hidden){ return @@ -107,28 +107,28 @@ internal class GradientFillShape( startPoint = startPoint, endPoint = endPoint, colors = colors, - frame = frame, + state = state, matrix = parentMatrix, cache = gradientCache ) paint.alpha = if (opacity != null) { - (parentAlpha * opacity.interpolated(frame) / 100f).coerceIn(0f, 1f) + (parentAlpha * opacity.interpolated(state) / 100f).coerceIn(0f, 1f) } else { parentAlpha } - lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, frame, lastBlurRadius) + lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, state, lastBlurRadius) path.reset() paths.fastForEach { - path.addPath(it.getPath(frame), parentMatrix) + path.addPath(it.getPath(state), parentMatrix) } - roundShape?.applyTo(paint, frame) + roundShape?.applyTo(paint, state) drawScope.drawIntoCanvas { it.drawPath(path, paint) @@ -139,12 +139,12 @@ internal class GradientFillShape( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) { path.reset() paths.fastForEach { - path.addPath(it.getPath(frame), parentMatrix) + path.addPath(it.getPath(state), parentMatrix) } outBounds.set(path.getBounds()) // Add padding to account for rounding errors. diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index 174ffbd6..f43fc319 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -4,12 +4,12 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType -import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName @@ -81,20 +81,20 @@ internal class GradientStrokeShape( @Transient private val gradientCache = LinkedHashMap() - override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { - getBounds(drawScope, parentMatrix, false, frame, boundsRect) + getBounds(drawScope, parentMatrix, false, state, boundsRect) paint.shader = GradientShader( type = type, startPoint = startPoint, endPoint = endPoint, colors = colors, - frame = frame, + state = state, matrix = parentMatrix, cache = gradientCache ) - super.draw(drawScope, parentMatrix, parentAlpha, frame) + super.draw(drawScope, parentMatrix, parentAlpha, state) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 89d78f5d..1442c659 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathOperation import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.content.GreedyContent @@ -47,7 +48,7 @@ internal class MergePathsShape( @Transient private val pathContents = mutableListOf() - override fun getPath(frame: Float): Path { + override fun getPath(state: AnimationState): Path { path.reset() @@ -56,11 +57,11 @@ internal class MergePathsShape( } when (mode) { - MergeMode.Normal -> addPaths(frame) - MergeMode.Add -> opFirstPathWithRest(PathOperation.Union, frame) - MergeMode.Subtract -> opFirstPathWithRest(PathOperation.Difference, frame) - MergeMode.Intersect -> opFirstPathWithRest(PathOperation.Intersect, frame) - MergeMode.ExcludeIntersections -> opFirstPathWithRest(PathOperation.Xor, frame) + MergeMode.Normal -> addPaths(state) + MergeMode.Add -> opFirstPathWithRest(PathOperation.Union, state) + MergeMode.Subtract -> opFirstPathWithRest(PathOperation.Difference, state) + MergeMode.Intersect -> opFirstPathWithRest(PathOperation.Intersect, state) + MergeMode.ExcludeIntersections -> opFirstPathWithRest(PathOperation.Xor, state) } return path @@ -87,13 +88,13 @@ internal class MergePathsShape( } } - private fun addPaths(frame: Float) { + private fun addPaths(state: AnimationState) { pathContents.fastForEach { - path.addPath(it.getPath(frame)) + path.addPath(it.getPath(state)) } } - private fun opFirstPathWithRest(op: PathOperation, frame: Float) { + private fun opFirstPathWithRest(op: PathOperation, state: AnimationState) { remainderPath.reset() firstPath.reset() @@ -103,26 +104,26 @@ internal class MergePathsShape( if (content is ContentGroupBase) { content.pathContents.fastForEachReversed { path -> - val p = path.getPath(frame) - content.transform?.matrix(frame)?.let { + val p = path.getPath(state) + content.transform?.matrix(state)?.let { p.transform(it) } remainderPath.addPath(p) } } else { - remainderPath.addPath(content.getPath(frame)) + remainderPath.addPath(content.getPath(state)) } } val lastContent = pathContents[0] if (lastContent is ContentGroupBase) { lastContent.pathContents.fastForEach { - val path = it.getPath(frame) - lastContent.transform?.matrix(frame)?.let(path::transform) + val path = it.getPath(state) + lastContent.transform?.matrix(state)?.let(path::transform) firstPath.addPath(path) } } else { - firstPath.set(lastContent.getPath(frame)) + firstPath.set(lastContent.getPath(state)) } if (pathContents.size == 1) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 429e0e73..03c8bc49 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -3,9 +3,9 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathFillType import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath @@ -37,31 +37,27 @@ internal class PathShape( private val trimPaths: CompoundTrimPath = CompoundTrimPath() private val path = Path() - override fun getPath(frame: Float): Path { + + override fun getPath(state: AnimationState): Path { path.reset() if (hidden) { return path } - path.set(shape.interpolated(frame)) + path.set(shape.interpolated(state)) path.fillType = PathFillType.EvenOdd - trimPaths.apply(path, frame) + trimPaths.apply(path, state) return path } override fun setContents(contentsBefore: List, contentsAfter: List) { - val shapeModifierContents: MutableList = mutableListOf() contentsBefore.fastForEach { content -> if (content.isSimultaneousTrimPath()) { // Trim path individually will be handled by the stroke where paths are combined. trimPaths.addTrimPath(content) - } else if (content is ShapeModifierContent) { - shapeModifierContents.add(content) } } - - shape.shapeModifiers = shapeModifierContents } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index c5dfcaae..103856c9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue @@ -88,16 +89,16 @@ internal class PolystarShape( @Transient private val trimPaths = CompoundTrimPath() - override fun getPath(frame: Float): Path { + override fun getPath(state: AnimationState): Path { path.rewind() when (starType) { - StarType.Star -> createStarPath(frame) - StarType.Polygon -> createPolygonPath(frame) + StarType.Star -> createStarPath(state) + StarType.Polygon -> createPolygonPath(state) } - trimPaths.apply(path, frame) + trimPaths.apply(path, state) return path } @@ -110,9 +111,9 @@ internal class PolystarShape( } } - private fun createStarPath(frame: Float) { - val points = points.interpolated(frame = frame) - var currentAngle = Math.toRadians((rotation?.interpolated(frame) ?: 0f) - 90f) + private fun createStarPath(state: AnimationState) { + val points = points.interpolated(state = state) + var currentAngle = Math.toRadians((rotation?.interpolated(state) ?: 0f) - 90f) // adjust current angle for partial points val anglePerPoint: Float = (TwoPI / points).toFloat() @@ -125,11 +126,11 @@ internal class PolystarShape( currentAngle += (halfAnglePerPoint * (1f - partialPointAmount)) } - val outerRadius = outerRadius?.interpolated(frame) ?: 0f - val innerRadius = innerRadius?.interpolated(frame) ?: 0f + val outerRadius = outerRadius?.interpolated(state) ?: 0f + val innerRadius = innerRadius?.interpolated(state) ?: 0f - val innerRoundedness = innerRoundness?.interpolated(frame)?.div(100f) ?: 0f - val outerRoundedness = outerRoundness?.interpolated(frame)?.div(100f) ?: 0f + val innerRoundedness = innerRoundness?.interpolated(state)?.div(100f) ?: 0f + val outerRoundedness = outerRoundness?.interpolated(state)?.div(100f) ?: 0f var x: Float var y: Float @@ -217,22 +218,22 @@ internal class PolystarShape( } - position?.interpolated(frame)?.let { + position?.interpolated(state)?.let { path.translate(it) } path.close() } - private fun createPolygonPath(frame: Float) { - val points = floor(points.interpolated(frame)).toInt() - var currentAngle = Math.toRadians((rotation?.interpolated(frame) ?: 0f) - 90f) + private fun createPolygonPath(state: AnimationState) { + val points = floor(points.interpolated(state)).toInt() + var currentAngle = Math.toRadians((rotation?.interpolated(state) ?: 0f) - 90f) // adjust current angle for partial points val anglePerPoint = (TwoPI / points).toFloat() - val roundedness = outerRoundness?.interpolated(frame)?.div(100f) ?: 0f - val radius = outerRadius?.interpolated(frame) ?: 0f + val roundedness = outerRoundness?.interpolated(state)?.div(100f) ?: 0f + val radius = outerRadius?.interpolated(state) ?: 0f var x: Float var y: Float var previousX: Float @@ -305,7 +306,7 @@ internal class PolystarShape( currentAngle += anglePerPoint } - position?.interpolated(frame)?.takeIf { it != Offset.Zero }?.let { + position?.interpolated(state)?.takeIf { it != Offset.Zero }?.let { path.translate(it) } path.close() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index 09506eca..e1028557 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue @@ -57,7 +58,7 @@ internal class RectShape( } } - override fun getPath(frame: Float): Path { + override fun getPath(state: AnimationState): Path { if (hidden) { path.rewind() @@ -65,9 +66,9 @@ internal class RectShape( } path.rewind() - val position = position.interpolated(frame) - val size = size.interpolated(frame) - var radius = roundedCorners?.interpolated(frame) ?: 0F + val position = position.interpolated(state) + val size = size.interpolated(state) + var radius = roundedCorners?.interpolated(state) ?: 0F val halfWidth = size.x / 2f val halfHeight = size.y / 2f @@ -134,7 +135,7 @@ internal class RectShape( } path.close() - trimPaths.apply(path, frame) + trimPaths.apply(path, state) return path } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index c3de5bfd..7d96380f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue import io.github.alexzhirkevich.compottie.internal.animation.RepeaterTransform import io.github.alexzhirkevich.compottie.internal.content.Content @@ -58,19 +59,19 @@ internal class RepeaterShape( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, - frame: Float + state: AnimationState ) { contentGroup?.let { contentGroup -> - val copies = copies.interpolated(frame) - val offset = offset?.interpolated(frame) ?: 0f - val startOpacity = transform.startOpacity?.interpolated(frame)?.div(100f) ?: 1f - val endOpacity = transform.endOpacity?.interpolated(frame)?.div(100f) ?: 1f + val copies = copies.interpolated(state) + val offset = offset?.interpolated(state) ?: 0f + val startOpacity = transform.startOpacity?.interpolated(state)?.div(100f) ?: 1f + val endOpacity = transform.endOpacity?.interpolated(state)?.div(100f) ?: 1f for (i in copies.toInt() - 1 downTo 0) { matrix.setFrom(parentMatrix) - matrix.preConcat(transform.repeaterMatrix(frame, i + offset)) + matrix.preConcat(transform.repeaterMatrix(state, i + offset)) val newAlpha = parentAlpha * lerp(startOpacity, endOpacity, i / copies) - contentGroup.draw(drawScope, matrix, newAlpha, frame) + contentGroup.draw(drawScope, matrix, newAlpha, state) } } } @@ -79,21 +80,21 @@ internal class RepeaterShape( drawScope: DrawScope, parentMatrix: Matrix, applyParents: Boolean, - frame: Float, + state: AnimationState, outBounds: MutableRect ) { - contentGroup?.getBounds(drawScope, parentMatrix, applyParents, frame, outBounds) + contentGroup?.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) } - override fun getPath(frame: Float): Path { + override fun getPath(state: AnimationState): Path { path.reset() - val contentPath = contentGroup?.getPath(frame) ?: return path + val contentPath = contentGroup?.getPath(state) ?: return path - val copies = copies.interpolated(frame) - val offset = offset?.interpolated(frame) ?: 0f + val copies = copies.interpolated(state) + val offset = offset?.interpolated(state) ?: 0f for (i in copies.toInt() - 1 downTo 0) { - matrix.setFrom(transform.repeaterMatrix(frame, i + offset)) + matrix.setFrom(transform.repeaterMatrix(state, i + offset)) path.addPath(contentPath, matrix) } return path diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index 5f9b8441..f93bb9b6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -1,20 +1,14 @@ package io.github.alexzhirkevich.compottie.internal.shapes -import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PathEffect -import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.content.ShapeModifierContent +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.helpers.CubicCurveData -import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData +import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.layers.Layer -import io.github.alexzhirkevich.compottie.internal.utils.floorMod import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -import kotlin.math.hypot -import kotlin.math.min @Serializable @SerialName("rd") @@ -29,172 +23,19 @@ internal class RoundShape( @SerialName("r") val radius : AnimatedValue, -) : Shape, ShapeModifierContent { +) : Shape { @Transient override lateinit var layer: Layer - @Transient - private var shapeData: ShapeData? = null - - override fun modify(shape: ShapeData, frame: Float): ShapeData { - val startingCurves: List = shape.curves - - if (startingCurves.size <= 2) { - return shape - } - val roundedness: Float = radius.interpolated(frame) - if (roundedness == 0f) { - return shape - } - - val modifiedShapeData = getShapeData(shape) - modifiedShapeData.initialPoint = shape.initialPoint - val modifiedCurves = modifiedShapeData.curves - var modifiedCurvesIndex = 0 - val isClosed = shape.isClosed - - // i represents which vertex we are currently on. Refer to the docs of CubicCurveData prior to working with - // this code. - // When i == 0 - // vertex=ShapeData.initialPoint - // inCp=if closed vertex else curves[size - 1].cp2 - // outCp=curves[0].cp1 - // When i == 1 - // vertex=curves[0].vertex - // inCp=curves[0].cp2 - // outCp=curves[1].cp1. - // When i == size - 1 - // vertex=curves[size - 1].vertex - // inCp=curves[size - 1].cp2 - // outCp=if closed vertex else curves[0].cp1 - for (i in startingCurves.indices) { - val startingCurve = startingCurves[i] - val previousCurve = - startingCurves[floorMod(i - 1, startingCurves.size)] - val previousPreviousCurve = - startingCurves[floorMod(i - 2, startingCurves.size)] - val vertex = if ((i == 0 && !isClosed)) shape.initialPoint else previousCurve.vertex - val inPoint = if ((i == 0 && !isClosed)) vertex else previousCurve.controlPoint2 - val outPoint = startingCurve.controlPoint1 - val previousVertex = previousPreviousCurve.vertex - val nextVertex = startingCurve.vertex - - // We can't round the corner of the end of a non-closed curve. - val isEndOfCurve = !shape.isClosed && (i == 0 || i == startingCurves.size - 1) - if (inPoint == vertex && outPoint == vertex && !isEndOfCurve) { - // This vertex is a point. Round its corners - val dxToPreviousVertex: Float = vertex.x - previousVertex.x - val dyToPreviousVertex: Float = vertex.y - previousVertex.y - val dxToNextVertex: Float = nextVertex.x - vertex.x - val dyToNextVertex: Float = nextVertex.y - vertex.y - - val dToPreviousVertex = - hypot(dxToPreviousVertex.toDouble(), dyToPreviousVertex.toDouble()).toFloat() - val dToNextVertex = - hypot(dxToNextVertex.toDouble(), dyToNextVertex.toDouble()).toFloat() - - val previousVertexPercent = - min((roundedness / dToPreviousVertex).toDouble(), 0.5).toFloat() - val nextVertexPercent = - min((roundedness / dToNextVertex).toDouble(), 0.5).toFloat() - - // Split the vertex into two and move each vertex towards the previous/next vertex. - val newVertex1X: Float = - vertex.x + (previousVertex.x - vertex.x) * previousVertexPercent - val newVertex1Y: Float = - vertex.y + (previousVertex.y - vertex.y) * previousVertexPercent - val newVertex2X: Float = vertex.x + (nextVertex.x - vertex.x) * nextVertexPercent - val newVertex2Y: Float = vertex.y + (nextVertex.y - vertex.y) * nextVertexPercent - - // Extend the new vertex control point towards the original vertex. - val newVertex1OutPointX: Float = - newVertex1X - (newVertex1X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER - val newVertex1OutPointY: Float = - newVertex1Y - (newVertex1Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER - val newVertex2InPointX: Float = - newVertex2X - (newVertex2X - vertex.x) * ROUNDED_CORNER_MAGIC_NUMBER - val newVertex2InPointY: Float = - newVertex2Y - (newVertex2Y - vertex.y) * ROUNDED_CORNER_MAGIC_NUMBER - - // Remap vertex/in/out point to CubicCurveData. - // Refer to the docs for CubicCurveData for more info on the difference. - var previousCurveData = modifiedCurves[floorMod(modifiedCurvesIndex - 1, modifiedCurves.size)] - var currentCurveData = modifiedCurves[modifiedCurvesIndex] - previousCurveData.controlPoint2 = Offset(newVertex1X, newVertex1Y) - previousCurveData.vertex = Offset(newVertex1X, newVertex1Y) - if (i == 0) { - modifiedShapeData.initialPoint = Offset(newVertex1X, newVertex1Y) - } - currentCurveData.controlPoint1 = Offset(newVertex1OutPointX, newVertex1OutPointY) - modifiedCurvesIndex++ - - previousCurveData = currentCurveData - currentCurveData = modifiedCurves[modifiedCurvesIndex] - previousCurveData.controlPoint2 = Offset(newVertex2InPointX, newVertex2InPointY) - previousCurveData.vertex = Offset(newVertex2X, newVertex2Y) - currentCurveData.controlPoint1 = Offset(newVertex2X, newVertex2Y) - modifiedCurvesIndex++ - } else { - // This vertex is not a point. Don't modify it. Refer to the documentation above and for CubicCurveData for mapping a vertex - // oriented point to CubicCurveData (path segments). - val previousCurveData = - modifiedCurves[floorMod(modifiedCurvesIndex - 1, modifiedCurves.size)] - val currentCurveData = modifiedCurves[modifiedCurvesIndex] - previousCurveData.controlPoint2 = previousCurve.controlPoint2 - previousCurveData.vertex = previousCurve.vertex - currentCurveData.controlPoint1 = previousCurve.controlPoint1 - modifiedCurvesIndex++ - } - } - return modifiedShapeData - } - override fun setContents(contentsBefore: List, contentsAfter: List) { } - - private fun getShapeData(startingShapeData: ShapeData): ShapeData { - val startingCurves: List = startingShapeData.curves - val isClosed: Boolean = startingShapeData.isClosed - var vertices = 0 - - for (i in startingCurves.indices.reversed()) { - val startingCurve: CubicCurveData = startingCurves[i] - val previousCurve: CubicCurveData = - startingCurves[floorMod(i - 1, startingCurves.size)] - val vertex = if ((i == 0 && !isClosed)) - startingShapeData.initialPoint - else previousCurve.vertex - - val inPoint = if ((i == 0 && !isClosed)) - vertex else previousCurve.controlPoint2 - val outPoint = startingCurve.controlPoint1 - - val isEndOfCurve = - !startingShapeData.isClosed && (i == 0 || i == startingCurves.size - 1) - - vertices += if (inPoint == vertex && outPoint == vertex && !isEndOfCurve) { - 2 - } else { - 1 - } - } - if (shapeData?.curves?.size != vertices) { - val newCurves: MutableList = MutableList(vertices) { - CubicCurveData() - } - - shapeData = ShapeData(newCurves, Offset.Zero, false) - } - shapeData?.isClosed = isClosed - return shapeData!! - } } -internal fun RoundShape.applyTo(paint: Paint, frame: Float){ +internal fun RoundShape.applyTo(paint: Paint, state: AnimationState){ if (!hidden){ - val radius = radius.interpolated(frame) + val radius = radius.interpolated(state) val effect = PathEffect.cornerPathEffect(radius) paint.pathEffect = if (paint.pathEffect == null) { effect @@ -203,5 +44,3 @@ internal fun RoundShape.applyTo(paint: Paint, frame: Float){ } } } - -private const val ROUNDED_CORNER_MAGIC_NUMBER = 0.5519f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 2ca5e546..ff82498d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue @@ -52,9 +53,9 @@ internal class SolidStrokeShape( @Transient override lateinit var layer: Layer - override fun draw(drawScope : DrawScope, parentMatrix: Matrix, parentAlpha: Float, frame: Float) { - paint.color = color.interpolated(frame) + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { + paint.color = color.interpolated(state) - super.draw(drawScope, parentMatrix, parentAlpha, frame) + super.draw(drawScope, parentMatrix, parentAlpha, state) } } diff --git a/example/shared/src/commonMain/composeResources/files/astronaut.json b/example/shared/src/commonMain/composeResources/files/astronaut.json new file mode 100644 index 00000000..6162f3ba --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/astronaut.json @@ -0,0 +1,10442 @@ +{ + "v": "5.7.1", + "fr": 60, + "ip": 0, + "op": 360, + "w": 231, + "h": 95, + "nm": "astronautTamKemikli", + "ddd": 0, + "assets": [ + { + "id": "comp_0", + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "yildizlar Outlines", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 120.277, + 45.662, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 103.779, + 38.709, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 4.932, + -4.565 + ] + ], + "o": [ + [ + -7.53, + 3.723 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 14.143, + -16.486 + ], + [ + -6.643, + -3.014 + ] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 3 + }, + "o": { + "a": 0, + "k": 100, + "ix": 4 + }, + "w": { + "a": 0, + "k": 1, + "ix": 5 + }, + "lc": 2, + "lj": 1, + "ml": 10, + "bm": 0, + "d": [ + { + "n": "d", + "nm": "dash", + "v": { + "a": 0, + "k": 25, + "ix": 1 + } + }, + { + "n": "o", + "nm": "offset", + "v": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.472 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.287 + ], + "y": [ + 0 + ] + }, + "t": 111, + "s": [ + -25 + ] + }, + { + "t": 153, + "s": [ + -75 + ] + } + ], + "ix": 7 + } + } + ], + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 69.562, + 91.92 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 35.88, + 45.173 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.73 + ], + "y": [ + 0 + ] + }, + "t": 105, + "s": [ + 0 + ] + }, + { + "t": 178, + "s": [ + -24.595 + ] + } + ], + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.793, + 0 + ], + [ + 0, + -0.793 + ], + [ + 0.793, + 0 + ], + [ + 0, + 0.793 + ] + ], + "o": [ + [ + 0.793, + 0 + ], + [ + 0, + 0.793 + ], + [ + -0.793, + 0 + ], + [ + 0, + -0.793 + ] + ], + "v": [ + [ + 0, + -1.436 + ], + [ + 1.436, + 0 + ], + [ + 0, + 1.436 + ], + [ + -1.436, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 21.939, + 70.597 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 65, + "s": [ + 0, + 0 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 91, + "s": [ + 100, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 96, + "s": [ + 100, + 100 + ] + }, + { + "t": 122, + "s": [ + 0, + 0 + ] + } + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 61, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.574, + 0 + ], + [ + 0, + -0.575 + ], + [ + 0.575, + 0 + ], + [ + 0, + 0.575 + ] + ], + "o": [ + [ + 0.575, + 0 + ], + [ + 0, + 0.575 + ], + [ + -0.574, + 0 + ], + [ + 0, + -0.575 + ] + ], + "v": [ + [ + 0, + -1.041 + ], + [ + 1.041, + 0 + ], + [ + 0, + 1.041 + ], + [ + -1.041, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 206.267, + 1.291 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 223, + "s": [ + 0, + 0 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 249, + "s": [ + 100, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 254, + "s": [ + 100, + 100 + ] + }, + { + "t": 280, + "s": [ + 0, + 0 + ] + } + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 61, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 3, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ], + [ + 0.852, + 0 + ], + [ + 0, + 0.851 + ] + ], + "o": [ + [ + 0.852, + 0 + ], + [ + 0, + 0.851 + ], + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ] + ], + "v": [ + [ + 0, + -1.541 + ], + [ + 1.541, + 0 + ], + [ + 0, + 1.541 + ], + [ + -1.541, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 172.767, + 24.602 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 21, + "s": [ + 0, + 0 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 47, + "s": [ + 100, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 52, + "s": [ + 100, + 100 + ] + }, + { + "t": 78, + "s": [ + 0, + 0 + ] + } + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 61, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 4, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ], + [ + 0.851, + 0 + ], + [ + 0, + 0.851 + ] + ], + "o": [ + [ + 0.851, + 0 + ], + [ + 0, + 0.851 + ], + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ] + ], + "v": [ + [ + 0, + -1.541 + ], + [ + 1.541, + 0 + ], + [ + 0, + 1.541 + ], + [ + -1.541, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 35.767, + 12.602 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 134, + "s": [ + 0, + 0 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 160, + "s": [ + 100, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 165, + "s": [ + 100, + 100 + ] + }, + { + "t": 191, + "s": [ + 0, + 0 + ] + } + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 61, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 5", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 5, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -0.001, + -3.536 + ], + [ + 1.249, + -1.25 + ], + [ + 3.535, + 0 + ], + [ + 1.249, + 1.25 + ], + [ + -0.001, + 3.536 + ], + [ + -1.251, + 1.25 + ], + [ + -3.536, + 0 + ], + [ + -1.251, + -1.25 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 192.937, + 73.633 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 105, + "s": [ + 0, + 0 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 135, + "s": [ + 100, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 150, + "s": [ + 100, + 100 + ] + }, + { + "t": 180, + "s": [ + 0, + 0 + ] + } + ], + "ix": 3 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 105, + "s": [ + 0 + ] + }, + { + "t": 180, + "s": [ + 180 + ] + } + ], + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 6", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 6, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 0, + -3.456 + ], + [ + 1.222, + -1.222 + ], + [ + 3.456, + 0 + ], + [ + 1.222, + 1.222 + ], + [ + 0, + 3.456 + ], + [ + -1.222, + 1.222 + ], + [ + -3.456, + 0 + ], + [ + -1.222, + -1.222 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 3.706, + 28.971 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 285, + "s": [ + 0, + 0 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 315, + "s": [ + 100, + 100 + ] + }, + { + "i": { + "x": [ + 0.667, + 0.667 + ], + "y": [ + 1, + 1 + ] + }, + "o": { + "x": [ + 0.333, + 0.333 + ], + "y": [ + 0, + 0 + ] + }, + "t": 330, + "s": [ + 100, + 100 + ] + }, + { + "t": 359, + "s": [ + 0, + 0 + ] + } + ], + "ix": 3 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 285, + "s": [ + 0 + ] + }, + { + "t": 359, + "s": [ + 180 + ] + } + ], + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 7", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 7, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + } + ] + }, + { + "id": "comp_1", + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "yildizlar Outlines", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 113.895, + 47.73, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 100.367, + 31.507, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.793, + 0 + ], + [ + 0, + -0.793 + ], + [ + 0.793, + 0 + ], + [ + 0, + 0.793 + ] + ], + "o": [ + [ + 0.793, + 0 + ], + [ + 0, + 0.793 + ], + [ + -0.793, + 0 + ], + [ + 0, + -0.793 + ] + ], + "v": [ + [ + 0, + -1.436 + ], + [ + 1.436, + 0 + ], + [ + 0, + 1.436 + ], + [ + -1.436, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 3.332, + 61.327 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 100 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + 50 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + 100 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 50 + ] + }, + { + "t": 359, + "s": [ + 100 + ] + } + ], + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.575, + 0 + ], + [ + 0, + -0.575 + ], + [ + 0.575, + 0 + ], + [ + 0, + 0.575 + ] + ], + "o": [ + [ + 0.575, + 0 + ], + [ + 0, + 0.575 + ], + [ + -0.575, + 0 + ], + [ + 0, + -0.575 + ] + ], + "v": [ + [ + 0, + -1.041 + ], + [ + 1.041, + 0 + ], + [ + 0, + 1.041 + ], + [ + -1.041, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 41.319, + 43.181 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 65 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + 100 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + 65 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 100 + ] + }, + { + "t": 359, + "s": [ + 65 + ] + } + ], + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.574, + 0 + ], + [ + 0, + -0.575 + ], + [ + 0.575, + 0 + ], + [ + 0, + 0.575 + ] + ], + "o": [ + [ + 0.575, + 0 + ], + [ + 0, + 0.575 + ], + [ + -0.574, + 0 + ], + [ + 0, + -0.575 + ] + ], + "v": [ + [ + 0, + -1.041 + ], + [ + 1.041, + 0 + ], + [ + 0, + 1.041 + ], + [ + -1.041, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 199.442, + 13.054 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 30 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + 50 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + 30 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 50 + ] + }, + { + "t": 359, + "s": [ + 30 + ] + } + ], + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 3, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.851, + 0 + ], + [ + 0, + -0.852 + ], + [ + 0.852, + 0 + ], + [ + 0, + 0.851 + ] + ], + "o": [ + [ + 0.852, + 0 + ], + [ + 0, + 0.851 + ], + [ + -0.851, + 0 + ], + [ + 0, + -0.852 + ] + ], + "v": [ + [ + 0, + -1.541 + ], + [ + 1.54, + 0 + ], + [ + 0, + 1.541 + ], + [ + -1.54, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 179.484, + 53.659 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 81 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + 100 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + 81 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 100 + ] + }, + { + "t": 359, + "s": [ + 81 + ] + } + ], + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 4, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ], + [ + 0.852, + 0 + ], + [ + 0, + 0.851 + ] + ], + "o": [ + [ + 0.852, + 0 + ], + [ + 0, + 0.851 + ], + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ] + ], + "v": [ + [ + 0, + -1.541 + ], + [ + 1.54, + 0 + ], + [ + 0, + 1.541 + ], + [ + -1.54, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 165.524, + 1.791 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 60 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + 100 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + 60 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 100 + ] + }, + { + "t": 359, + "s": [ + 60 + ] + } + ], + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 5", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 5, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ], + [ + 0.851, + 0 + ], + [ + 0, + 0.851 + ] + ], + "o": [ + [ + 0.851, + 0 + ], + [ + 0, + 0.851 + ], + [ + -0.851, + 0 + ], + [ + 0, + -0.851 + ] + ], + "v": [ + [ + 0, + -1.541 + ], + [ + 1.541, + 0 + ], + [ + 0, + 1.541 + ], + [ + -1.541, + 0 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.685999971278, + 0.709999952129, + 0.736999990426, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 1.791, + 4.873 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 85 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + 100 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + 85 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 100 + ] + }, + { + "t": 359, + "s": [ + 85 + ] + } + ], + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 6", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 6, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + } + ] + } + ], + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "onBilek Outlines", + "parent": 4, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 33.999, + 1.729, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 2.632, + 8.25, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -0.391, + 0.253 + ], + [ + -1.228, + 1.469 + ], + [ + 0.014, + -1.873 + ], + [ + -0.739, + -0.312 + ], + [ + 1.479, + 0.012 + ], + [ + 0.614, + -0.323 + ], + [ + 1.009, + -1.119 + ], + [ + 0.34, + 0.326 + ], + [ + 0.037, + 0.06 + ] + ], + "o": [ + [ + -0.249, + -0.393 + ], + [ + 1.634, + -0.999 + ], + [ + 1.59, + -1.976 + ], + [ + -0.013, + 1.637 + ], + [ + 0.882, + 0.373 + ], + [ + -0.752, + -0.006 + ], + [ + -0.613, + 0.323 + ], + [ + -0.326, + 0.34 + ], + [ + -0.05, + -0.049 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -5.258, + 1.368 + ], + [ + -5.004, + 0.202 + ], + [ + -0.682, + -3.523 + ], + [ + 3.867, + -2.542 + ], + [ + 4.626, + -0.113 + ], + [ + 3.882, + 1.898 + ], + [ + 1.777, + 2.225 + ], + [ + -1.644, + 5.15 + ], + [ + -2.85, + 5.173 + ], + [ + -2.982, + 5.01 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 5.757, + 5.75 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "onParkmakAlt Outlines", + "parent": 1, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 76, + "s": [ + -13.21 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 170, + "s": [ + 8.158 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 264, + "s": [ + -26.116 + ] + }, + { + "t": 359, + "s": [ + 0 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 9.937, + 6.549, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 1.542, + 1.443, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.567, + -0.281 + ], + [ + 0.506, + -0.695 + ], + [ + 0.559, + 0 + ], + [ + -0.341, + 0.646 + ] + ], + "o": [ + [ + 1.621, + 0.801 + ], + [ + -0.381, + 0.525 + ], + [ + -0.637, + 0.001 + ], + [ + 0.229, + -0.437 + ] + ], + "v": [ + [ + -0.71, + -0.975 + ], + [ + 1.942, + 0.731 + ], + [ + -1.347, + 1.037 + ], + [ + -2.107, + -0.444 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 2.698, + 1.506 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "onParmakUst Outlines", + "parent": 1, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 76, + "s": [ + 22.093 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 170, + "s": [ + -11.458 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 264, + "s": [ + 22.093 + ] + }, + { + "t": 359, + "s": [ + 0 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 7.276, + 3.344, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 3.33, + 6.926, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.944, + 1.734 + ], + [ + -0.828, + -0.129 + ], + [ + -0.001, + -2.134 + ], + [ + 1.381, + -0.094 + ] + ], + "o": [ + [ + 0.944, + -1.734 + ], + [ + 0.8, + 0.125 + ], + [ + 0, + 0.936 + ], + [ + -1.449, + 0.098 + ] + ], + "v": [ + [ + -1.854, + 1.104 + ], + [ + 1.998, + -4.328 + ], + [ + 2.628, + 2.252 + ], + [ + 0.25, + 4.359 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 3.049, + 4.707 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "onKol Outlines", + "parent": 7, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 16 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + -6 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + 16 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + -6 + ] + }, + { + "t": 359, + "s": [ + 16 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 18.105, + 29.056, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 8.595, + 21.521, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -0.008, + 0.309 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 4.097, + -2.491 + ], + [ + 0.396, + -2.433 + ], + [ + -3.825, + -2.121 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -1.449, + 0.88 + ], + [ + -0.238, + 1.46 + ], + [ + 6.975, + 3.868 + ] + ], + "v": [ + [ + -1.18, + 10.577 + ], + [ + 7.943, + -0.391 + ], + [ + 17.094, + -11.792 + ], + [ + 14.423, + -15.771 + ], + [ + -14.09, + -1.361 + ], + [ + -16.857, + 3.628 + ], + [ + -13.135, + 11.904 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.635000011968, + 0.670999983245, + 0.705999995213, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 17.345, + 16.021 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "onAyakKalca Outlines", + "parent": 7, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 0.992 + ] + }, + "o": { + "x": [ + 0.412 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + -5 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + -0.009 + ] + }, + "t": 167, + "s": [ + 10 + ] + }, + { + "t": 359, + "s": [ + -5 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 28.32, + 55.049, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 12.912, + 15.937, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 2.842, + 0.331 + ], + [ + 3.03, + -0.355 + ], + [ + 4.888, + -2.598 + ], + [ + -0.979, + -1.61 + ], + [ + -4.734, + 1.638 + ], + [ + -7.77, + 1.233 + ], + [ + 0, + 4.341 + ] + ], + "o": [ + [ + -5.686, + -0.663 + ], + [ + -3.03, + 0.357 + ], + [ + -8.171, + 4.34 + ], + [ + 3.534, + 5.812 + ], + [ + 7.485, + -2.589 + ], + [ + 3.884, + -0.615 + ], + [ + 0, + -4.085 + ] + ], + "v": [ + [ + 16.911, + -12.773 + ], + [ + 1.656, + -12.585 + ], + [ + -15.617, + -7.764 + ], + [ + -20.494, + 6.419 + ], + [ + -7.156, + 11.799 + ], + [ + 16.721, + 2.008 + ], + [ + 23.788, + -5.542 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.635000011968, + 0.670999983245, + 0.705999995213, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 24.037, + 13.687 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 6, + "ty": 4, + "nm": "onAyakUC Outlines", + "parent": 5, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.713 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.484 + ], + "y": [ + 0.113 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "i": { + "x": [ + 0.564 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.286 + ], + "y": [ + 0 + ] + }, + "t": 167, + "s": [ + 32 + ] + }, + { + "t": 360, + "s": [ + 0 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 38.83, + 8.344, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 8.234, + 7.999, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 1.187, + 0.838 + ], + [ + 0, + 0 + ], + [ + 0.174, + -0.246 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.246, + -0.175 + ], + [ + 0, + 0 + ], + [ + -0.976, + 1.377 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 1.155, + 0.818 + ], + [ + 0, + 0 + ], + [ + 0.869, + -0.506 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + -0.245, + -0.174 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.174, + 0.246 + ], + [ + 0, + 0 + ], + [ + 1.377, + 0.974 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.82, + -1.156 + ], + [ + 0, + -0.001 + ], + [ + -0.819, + -0.582 + ], + [ + 0, + 0 + ], + [ + -1.256, + 0.73 + ] + ], + "v": [ + [ + -1.027, + -5.874 + ], + [ + -4.165, + -8.096 + ], + [ + -4.925, + -7.967 + ], + [ + -4.926, + -7.965 + ], + [ + -10.856, + 0.406 + ], + [ + -10.726, + 1.167 + ], + [ + -1.826, + 7.469 + ], + [ + 2.434, + 6.74 + ], + [ + 6.349, + 1.214 + ], + [ + 7.229, + -0.027 + ], + [ + 10.21, + -4.238 + ], + [ + 9.602, + -7.812 + ], + [ + 9.601, + -7.813 + ], + [ + 6.829, + -7.937 + ], + [ + 2.982, + -5.697 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 32.689, + 17.305 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 5.685, + 0.662 + ], + [ + 0.683, + -5.809 + ], + [ + -4.046, + 0.641 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + -2.726, + -0.318 + ], + [ + -0.656, + 5.568 + ], + [ + 7.771, + -1.233 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -3.912, + -8.469 + ], + [ + -13.358, + -1.73 + ], + [ + -5.302, + 6.593 + ], + [ + 7.76, + 8.787 + ], + [ + 14.014, + 0.449 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.635000011968, + 0.670999983245, + 0.705999995213, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 14.264, + 9.037 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "govde Outlines", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.092 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.335 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + -4 + ] + }, + { + "i": { + "x": [ + 0.735 + ], + "y": [ + 0.855 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 4 + ] + }, + { + "t": 359, + "s": [ + 0 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.275, + "y": 0.402 + }, + "t": 0, + "s": [ + 107.641, + 52.249, + 0 + ], + "to": [ + 0, + 0.958, + 0 + ], + "ti": [ + 0, + 0.708, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.333, + "y": 0 + }, + "t": 105, + "s": [ + 107.641, + 57.999, + 0 + ], + "to": [ + 0, + -0.708, + 0 + ], + "ti": [ + 0, + 0.958, + 0 + ] + }, + { + "i": { + "x": 0.725, + "y": 0.482 + }, + "o": { + "x": 0.323, + "y": 0 + }, + "t": 255, + "s": [ + 107.641, + 47.999, + 0 + ], + "to": [ + 0, + -0.958, + 0 + ], + "ti": [ + 0, + -0.708, + 0 + ] + }, + { + "t": 359, + "s": [ + 107.641, + 52.249, + 0 + ] + } + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 28.921, + 41.814, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 1, + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "t": 0, + "s": [ + { + "i": [ + [ + 12.562, + 10.319 + ], + [ + 1.021, + 4.886 + ], + [ + 0, + 0 + ], + [ + 2.176, + 2.871 + ], + [ + 4.097, + -2.491 + ], + [ + -4.076, + -13.929 + ], + [ + -7.484, + 2.59 + ] + ], + "o": [ + [ + -3.522, + -2.894 + ], + [ + -0.067, + -0.309 + ], + [ + 0, + 0 + ], + [ + -2.993, + -3.95 + ], + [ + -4.023, + 2.444 + ], + [ + 4.074, + 13.929 + ], + [ + 7.486, + -2.589 + ] + ], + "v": [ + [ + 9.704, + -3.18 + ], + [ + 2.873, + -13.072 + ], + [ + -5.333, + -9.365 + ], + [ + -6.223, + -19.564 + ], + [ + -18.243, + -21.303 + ], + [ + -18.15, + 3.643 + ], + [ + 0.893, + 21.204 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "t": 90, + "s": [ + { + "i": [ + [ + 12.562, + 10.319 + ], + [ + 1.021, + 4.886 + ], + [ + 0, + 0 + ], + [ + 2.176, + 2.871 + ], + [ + 4.097, + -2.491 + ], + [ + -4.076, + -13.929 + ], + [ + -7.484, + 2.59 + ] + ], + "o": [ + [ + -3.522, + -2.894 + ], + [ + -0.067, + -0.309 + ], + [ + 0, + 0 + ], + [ + -2.993, + -3.95 + ], + [ + -4.023, + 2.444 + ], + [ + 4.074, + 13.929 + ], + [ + 7.486, + -2.589 + ] + ], + "v": [ + [ + 9.704, + -3.18 + ], + [ + 1.29, + -16.023 + ], + [ + -5.333, + -9.365 + ], + [ + -6.223, + -19.564 + ], + [ + -18.243, + -21.303 + ], + [ + -18.15, + 3.643 + ], + [ + 0.893, + 21.204 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "t": 180, + "s": [ + { + "i": [ + [ + 12.562, + 10.319 + ], + [ + 1.021, + 4.886 + ], + [ + 0, + 0 + ], + [ + 2.176, + 2.871 + ], + [ + 4.097, + -2.491 + ], + [ + -4.076, + -13.929 + ], + [ + -7.484, + 2.59 + ] + ], + "o": [ + [ + -3.522, + -2.894 + ], + [ + -0.067, + -0.309 + ], + [ + 0, + 0 + ], + [ + -2.993, + -3.95 + ], + [ + -4.023, + 2.444 + ], + [ + 4.074, + 13.929 + ], + [ + 7.486, + -2.589 + ] + ], + "v": [ + [ + 9.704, + -3.18 + ], + [ + 2.873, + -13.072 + ], + [ + -5.333, + -9.365 + ], + [ + -6.223, + -19.564 + ], + [ + -18.243, + -21.303 + ], + [ + -18.15, + 3.643 + ], + [ + 0.893, + 21.204 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "t": 270, + "s": [ + { + "i": [ + [ + 12.562, + 10.319 + ], + [ + 1.021, + 4.886 + ], + [ + 0, + 0 + ], + [ + 2.176, + 2.871 + ], + [ + 4.097, + -2.491 + ], + [ + -4.076, + -13.929 + ], + [ + -7.484, + 2.59 + ] + ], + "o": [ + [ + -3.522, + -2.894 + ], + [ + -0.067, + -0.309 + ], + [ + 0, + 0 + ], + [ + -2.993, + -3.95 + ], + [ + -4.023, + 2.444 + ], + [ + 4.074, + 13.929 + ], + [ + 7.486, + -2.589 + ] + ], + "v": [ + [ + 9.704, + -3.18 + ], + [ + 1.29, + -16.023 + ], + [ + -5.333, + -9.365 + ], + [ + -6.223, + -19.564 + ], + [ + -18.243, + -21.303 + ], + [ + -18.15, + 3.643 + ], + [ + 0.893, + 21.204 + ] + ], + "c": true + } + ] + }, + { + "t": 359, + "s": [ + { + "i": [ + [ + 12.562, + 10.319 + ], + [ + 1.021, + 4.886 + ], + [ + 0, + 0 + ], + [ + 2.176, + 2.871 + ], + [ + 4.097, + -2.491 + ], + [ + -4.076, + -13.929 + ], + [ + -7.484, + 2.59 + ] + ], + "o": [ + [ + -3.522, + -2.894 + ], + [ + -0.067, + -0.309 + ], + [ + 0, + 0 + ], + [ + -2.993, + -3.95 + ], + [ + -4.023, + 2.444 + ], + [ + 4.074, + 13.929 + ], + [ + 7.486, + -2.589 + ] + ], + "v": [ + [ + 9.704, + -3.18 + ], + [ + 2.873, + -13.072 + ], + [ + -5.333, + -9.365 + ], + [ + -6.223, + -19.564 + ], + [ + -18.243, + -21.303 + ], + [ + -18.15, + 3.643 + ], + [ + 0.893, + 21.204 + ] + ], + "c": true + } + ] + } + ], + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.635000011968, + 0.670999983245, + 0.705999995213, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 31.036, + 43.49 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -0.391, + -0.526 + ], + [ + -0.26, + -0.588 + ], + [ + -0.117, + -0.629 + ], + [ + 0.011, + -0.635 + ], + [ + 0.079, + -0.003 + ], + [ + 0.002, + 0.079 + ], + [ + 0, + 0 + ], + [ + 0.143, + 0.595 + ], + [ + 0.782, + 0.929 + ], + [ + 0.483, + 0.344 + ], + [ + 0, + 0 + ], + [ + -0.101, + 0.151 + ], + [ + -0.151, + -0.101 + ], + [ + -0.003, + -0.002 + ] + ], + "o": [ + [ + 0.517, + 0.403 + ], + [ + 0.391, + 0.511 + ], + [ + 0.263, + 0.584 + ], + [ + 0.118, + 0.624 + ], + [ + 0.002, + 0.079 + ], + [ + -0.078, + 0.002 + ], + [ + 0, + 0 + ], + [ + -0.02, + -0.611 + ], + [ + -0.286, + -1.18 + ], + [ + -0.377, + -0.457 + ], + [ + 0, + 0 + ], + [ + -0.151, + -0.1 + ], + [ + 0.101, + -0.151 + ], + [ + 0.002, + 0.002 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -1.257, + -3.404 + ], + [ + 0.112, + -2.004 + ], + [ + 1.092, + -0.349 + ], + [ + 1.664, + 1.476 + ], + [ + 1.825, + 3.369 + ], + [ + 1.687, + 3.516 + ], + [ + 1.541, + 3.378 + ], + [ + 1.541, + 3.369 + ], + [ + 1.295, + 1.556 + ], + [ + -0.329, + -1.651 + ], + [ + -1.624, + -2.856 + ], + [ + -1.644, + -2.87 + ], + [ + -1.735, + -3.326 + ], + [ + -1.279, + -3.417 + ], + [ + -1.271, + -3.412 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 1, + 1, + 1, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 25.205, + 7.727 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 1.933, + -0.01 + ], + [ + 0.002, + 1.937 + ], + [ + -1.436, + 0.476 + ], + [ + -0.375, + 0.002 + ], + [ + 0, + -1.933 + ] + ], + "o": [ + [ + -0.004, + 1.933 + ], + [ + -1.937, + 0.002 + ], + [ + -0.001, + -1.513 + ], + [ + 0.357, + -0.116 + ], + [ + 1.933, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 3.506, + -0.005 + ], + [ + 0.005, + 3.506 + ], + [ + -3.505, + 0.002 + ], + [ + -1.101, + -3.33 + ], + [ + 0.005, + -3.508 + ], + [ + 3.506, + -0.008 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.783999992819, + 0.808000033509, + 0.838999968884, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 17.804, + 12.122 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 3", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 0.08, + -0.23 + ], + [ + 0, + 0 + ], + [ + 0.13, + -0.26 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.35, + 0.09 + ], + [ + 0, + 0 + ], + [ + 0.04, + 2.14 + ], + [ + -0.23, + 0.58 + ], + [ + -0.01, + 0 + ], + [ + 0, + 0 + ], + [ + -0.09, + 0.16 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.01, + -0.55 + ], + [ + -1.69, + 0.04 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + -0.06, + 0.24 + ], + [ + 0, + 0 + ], + [ + -0.1, + 0.27 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.38, + 0 + ], + [ + 0, + 0 + ], + [ + -1.98, + -0.49 + ], + [ + -0.01, + -0.62 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.06, + -0.17 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.26, + 0.48 + ], + [ + 0.04, + 1.73 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 6.19, + 5.76 + ], + [ + 5.97, + 6.47 + ], + [ + 5.95, + 6.47 + ], + [ + 5.62, + 7.27 + ], + [ + -1.46, + 7.41 + ], + [ + -1.56, + 7.41 + ], + [ + -2.65, + 7.27 + ], + [ + -2.67, + 7.27 + ], + [ + -6.18, + 2.87 + ], + [ + -5.84, + 1.05 + ], + [ + -5.83, + 1.04 + ], + [ + -5.83, + 1.03 + ], + [ + -5.6, + 0.54 + ], + [ + -5.53, + 0.42 + ], + [ + -1.22, + -7.41 + ], + [ + -0.42, + -7.15 + ], + [ + -0.41, + -7.15 + ], + [ + -0.08, + -6.97 + ], + [ + -0.06, + -6.96 + ], + [ + 0.17, + -6.83 + ], + [ + -3.9, + 0.57 + ], + [ + -4.29, + 1.27 + ], + [ + -4.68, + 2.84 + ], + [ + -1.48, + 5.91 + ], + [ + -1.38, + 5.91 + ], + [ + -1.1, + 5.9 + ], + [ + 6.18, + 5.76 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.783999992819, + 0.808000033509, + 0.838999968884, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 21.883, + 8.05 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 3, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + -0.27 + ], + [ + 0, + 0 + ], + [ + 0.03, + -0.28 + ], + [ + 0.04, + -0.24 + ], + [ + 0.12, + -0.42 + ], + [ + 0.08, + -0.23 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.04, + 2.14 + ], + [ + -0.33, + 0.6 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.23, + -0.1 + ], + [ + 0, + 0 + ], + [ + -0.33, + -4 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0.28 + ], + [ + -0.01, + 0.23 + ], + [ + -0.06, + 0.43 + ], + [ + -0.06, + 0.24 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -2.14, + 0.04 + ], + [ + -0.02, + -0.69 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.24, + 0.08 + ], + [ + 0, + 0 + ], + [ + 3.73, + 1.51 + ], + [ + 0.02, + 0.26 + ] + ], + "v": [ + [ + 6.165, + 3.135 + ], + [ + 6.165, + 3.235 + ], + [ + 6.125, + 4.065 + ], + [ + 6.045, + 4.775 + ], + [ + 5.775, + 6.045 + ], + [ + 5.555, + 6.755 + ], + [ + 5.535, + 6.755 + ], + [ + 3.645, + 6.795 + ], + [ + -2.095, + 6.905 + ], + [ + -2.105, + 6.905 + ], + [ + -2.185, + 6.905 + ], + [ + -6.145, + 3.105 + ], + [ + -5.665, + 1.145 + ], + [ + -5.595, + 1.025 + ], + [ + -2.855, + -3.965 + ], + [ + -1.205, + -6.945 + ], + [ + -0.495, + -6.685 + ], + [ + -0.475, + -6.675 + ], + [ + 6.135, + 2.335 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 22.298, + 7.765 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 5", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 4, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + -0.27 + ], + [ + 0, + 0 + ], + [ + 0.03, + -0.28 + ], + [ + 0.04, + -0.24 + ], + [ + 0.12, + -0.41 + ], + [ + 0.09, + -0.23 + ], + [ + 0.13, + -0.26 + ], + [ + 4.31, + 0 + ], + [ + 0, + 5.89 + ], + [ + -5.88, + 0 + ], + [ + -0.91, + -0.26 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.31, + -4.24 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0.28 + ], + [ + -0.01, + 0.23 + ], + [ + -0.07, + 0.43 + ], + [ + -0.07, + 0.24 + ], + [ + -0.1, + 0.27 + ], + [ + -1.67, + 3.68 + ], + [ + -5.88, + 0 + ], + [ + 0, + -5.88 + ], + [ + 0.99, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 3.84, + 1.4 + ], + [ + 0.02, + 0.26 + ] + ], + "v": [ + [ + 10.66, + -0.005 + ], + [ + 10.66, + 0.095 + ], + [ + 10.62, + 0.925 + ], + [ + 10.54, + 1.635 + ], + [ + 10.26, + 2.905 + ], + [ + 10.03, + 3.615 + ], + [ + 9.7, + 4.415 + ], + [ + 0, + 10.655 + ], + [ + -10.66, + -0.005 + ], + [ + 0, + -10.655 + ], + [ + 2.86, + -10.265 + ], + [ + 3.66, + -10.005 + ], + [ + 3.67, + -10.005 + ], + [ + 10.63, + -0.805 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.677999997606, + 0.713999968884, + 0.74900004069, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 17.803, + 10.905 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 6", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 5, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + -0.27 + ], + [ + 0, + 0 + ], + [ + 0.03, + -0.28 + ], + [ + 0.04, + -0.24 + ], + [ + 0.12, + -0.42 + ], + [ + 0.08, + -0.23 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.19, + -0.11 + ], + [ + 0.09, + -0.04 + ], + [ + 0.05, + -0.02 + ], + [ + 0, + 0 + ], + [ + 0.04, + -0.02 + ], + [ + 1.01, + 1.07 + ], + [ + 0.07, + 0.75 + ], + [ + -0.83, + 0.77 + ], + [ + -0.1, + 0.08 + ], + [ + -0.08, + 0.04 + ], + [ + -0.03, + 0.02 + ], + [ + 0, + 0 + ], + [ + -0.03, + 0.02 + ], + [ + -0.19, + 0.06 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.23, + -0.1 + ], + [ + 0, + 0 + ], + [ + -0.33, + -4 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0.28 + ], + [ + -0.01, + 0.23 + ], + [ + -0.06, + 0.43 + ], + [ + -0.06, + 0.24 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.16, + 0.16 + ], + [ + -0.09, + 0.06 + ], + [ + -0.06, + 0.03 + ], + [ + 0, + 0 + ], + [ + -0.05, + 0.02 + ], + [ + -1.3, + 0.5 + ], + [ + -0.55, + -0.59 + ], + [ + -0.09, + -1.04 + ], + [ + 0.09, + -0.08 + ], + [ + 0.08, + -0.06 + ], + [ + 0.04, + -0.02 + ], + [ + 0, + 0 + ], + [ + 0.04, + -0.01 + ], + [ + 0.17, + -0.1 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.24, + 0.08 + ], + [ + 0, + 0 + ], + [ + 3.73, + 1.51 + ], + [ + 0.02, + 0.26 + ] + ], + "v": [ + [ + 7.077, + 2.684 + ], + [ + 7.077, + 2.784 + ], + [ + 7.037, + 3.613 + ], + [ + 6.957, + 4.324 + ], + [ + 6.687, + 5.594 + ], + [ + 6.467, + 6.303 + ], + [ + 6.447, + 6.303 + ], + [ + 4.557, + 6.344 + ], + [ + -1.183, + 6.454 + ], + [ + -1.193, + 6.454 + ], + [ + -1.723, + 6.863 + ], + [ + -2.003, + 7.023 + ], + [ + -2.163, + 7.104 + ], + [ + -2.173, + 7.104 + ], + [ + -2.303, + 7.163 + ], + [ + -6.133, + 6.284 + ], + [ + -7.063, + 4.214 + ], + [ + -5.953, + 1.333 + ], + [ + -5.673, + 1.094 + ], + [ + -5.433, + 0.934 + ], + [ + -5.333, + 0.874 + ], + [ + -5.333, + 0.863 + ], + [ + -5.233, + 0.814 + ], + [ + -4.683, + 0.574 + ], + [ + -1.933, + -4.417 + ], + [ + -0.293, + -7.396 + ], + [ + 0.417, + -7.137 + ], + [ + 0.437, + -7.126 + ], + [ + 7.047, + 1.883 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.33300000359, + 0.352999997606, + 0.368999974868, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 21.387, + 8.217 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 7", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 6, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 18.148, + 11.315 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 18.148, + 11.315 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.167 + ], + "y": [ + 0.167 + ] + }, + "t": 0, + "s": [ + 0 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 105, + "s": [ + -12 + ] + }, + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 0.833 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 255, + "s": [ + 10 + ] + }, + { + "t": 359, + "s": [ + 0 + ] + } + ], + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 9", + "np": 6, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 2.042, + -0.685 + ], + [ + 0, + 0 + ], + [ + 1.556, + 4.622 + ], + [ + 0, + 0.001 + ], + [ + 0, + 0 + ], + [ + -4.622, + 1.556 + ], + [ + -0.001, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0.611, + 2.065 + ], + [ + 0, + 0 + ], + [ + -4.621, + 1.556 + ], + [ + -0.001, + 0 + ], + [ + 0, + 0 + ], + [ + -1.556, + -4.621 + ], + [ + 0.001, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 14.519, + 18.051 + ], + [ + 11.954, + 22.98 + ], + [ + 7.843, + 24.357 + ], + [ + -3.343, + 18.807 + ], + [ + -3.344, + 18.805 + ], + [ + -13.574, + -11.579 + ], + [ + -8.024, + -22.766 + ], + [ + -8.022, + -22.767 + ], + [ + 1.511, + -25.913 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.426999978458, + 0.477999997606, + 0.528999956916, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 15.38, + 44.862 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 8", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 3, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 8, + "ty": 4, + "nm": "arkaBacak Outlines", + "parent": 7, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.538 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 25 + ] + }, + { + "i": { + "x": [ + 0.907 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.189 + ], + "y": [ + 0 + ] + }, + "t": 145, + "s": [ + -10 + ] + }, + { + "t": 359, + "s": [ + 25 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 43.819, + 54.408, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 13.351, + 8.202, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0.113, + 0.672 + ], + [ + 0, + 0 + ], + [ + 0.298, + -0.051 + ], + [ + 0, + 0 + ], + [ + -0.05, + -0.296 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -0.781, + 0.133 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.109, + 0.654 + ], + [ + 0, + 0.003 + ], + [ + 0.456, + 0.119 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + -0.052, + -0.297 + ], + [ + 0, + 0 + ], + [ + -0.297, + 0.051 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.134, + 0.781 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0.653, + -0.109 + ], + [ + 0, + -0.002 + ], + [ + -0.079, + -0.466 + ], + [ + 0, + 0 + ], + [ + -0.66, + -0.176 + ] + ], + "v": [ + [ + 0.641, + -1.74 + ], + [ + 0.386, + -3.236 + ], + [ + -0.246, + -3.682 + ], + [ + -4.423, + -2.969 + ], + [ + -4.87, + -2.34 + ], + [ + -4.87, + -2.34 + ], + [ + -4.056, + 2.426 + ], + [ + -2.399, + 3.6 + ], + [ + 0.737, + 3.064 + ], + [ + 1.437, + 2.945 + ], + [ + 3.826, + 2.536 + ], + [ + 4.811, + 1.156 + ], + [ + 4.81, + 1.148 + ], + [ + 3.93, + 0.186 + ], + [ + 1.909, + -0.348 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 31.032, + 26.921 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -4.018, + -1.209 + ], + [ + -3.45, + -3.781 + ], + [ + 0, + 0 + ], + [ + 1.56, + 2.418 + ], + [ + 9.477, + -3.43 + ] + ], + "o": [ + [ + 4.018, + 1.209 + ], + [ + 0, + 0 + ], + [ + -0.801, + -4.157 + ], + [ + -1.559, + -2.418 + ], + [ + -9.477, + 3.431 + ] + ], + "v": [ + [ + -5.965, + 3.317 + ], + [ + 10.578, + 11.926 + ], + [ + 15.442, + 11.168 + ], + [ + 9.442, + -3.487 + ], + [ + -5.965, + -8.496 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.517999985639, + 0.552999997606, + 0.592000026329, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 15.692, + 12.176 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 9, + "ty": 4, + "nm": "arkaBilek Outlines", + "parent": 12, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 33.029, + 4.707, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 1.455, + 2.644, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -0.301, + -0.016 + ], + [ + -0.841, + 0.158 + ], + [ + 0.723, + -0.976 + ], + [ + -0.269, + -0.445 + ], + [ + 0.772, + 0.571 + ], + [ + 0.445, + 0.064 + ], + [ + 0.878, + -0.223 + ], + [ + 0.053, + 0.301 + ], + [ + -0.003, + 0.045 + ] + ], + "o": [ + [ + 0.02, + -0.301 + ], + [ + 1.251, + 0.253 + ], + [ + 1.868, + -0.351 + ], + [ + -0.631, + 0.854 + ], + [ + 0.32, + 0.533 + ], + [ + -0.391, + -0.291 + ], + [ + -0.445, + -0.065 + ], + [ + -0.301, + 0.054 + ], + [ + -0.008, + -0.045 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -3.486, + -2.13 + ], + [ + -2.909, + -2.644 + ], + [ + 0.996, + -2.449 + ], + [ + 2.764, + -0.105 + ], + [ + 2.234, + 1.458 + ], + [ + 1.076, + 2.229 + ], + [ + -0.152, + 1.598 + ], + [ + -2.562, + 1.891 + ], + [ + -3.202, + 1.443 + ], + [ + -3.211, + 1.308 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 3.736, + 3.05 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 10, + "ty": 4, + "nm": "arkPrmkUst Outlines", + "parent": 9, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + 23.823 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 81, + "s": [ + 0 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 175, + "s": [ + 23.823 + ] + }, + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 256, + "s": [ + -7.891 + ] + }, + { + "t": 359, + "s": [ + 23.823 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 5.178, + 2.116, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 2.062, + 3.406, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -1.157, + 0.548 + ], + [ + -0.385, + -0.384 + ], + [ + 0.815, + -1.119 + ], + [ + 0.759, + 0.478 + ] + ], + "o": [ + [ + 1.156, + -0.548 + ], + [ + 0.372, + 0.371 + ], + [ + -0.357, + 0.492 + ], + [ + -0.798, + -0.502 + ] + ], + "v": [ + [ + -1.654, + -0.614 + ], + [ + 2.439, + -1.991 + ], + [ + 0.257, + 1.7 + ], + [ + -1.794, + 1.896 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 3.061, + 2.625 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 11, + "ty": 4, + "nm": "arkPrmkAlt Outlines", + "parent": 9, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + -18.606 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 84, + "s": [ + 23.621 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 175, + "s": [ + -18.606 + ] + }, + { + "i": { + "x": [ + 0.833 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 258, + "s": [ + 23.621 + ] + }, + { + "t": 359, + "s": [ + -18.606 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 5.317, + 4.798, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 1.033, + 0.935, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -0.19, + -0.363 + ], + [ + 0.531, + -0.171 + ], + [ + 0.294, + 0.213 + ], + [ + -0.424, + 0.209 + ] + ], + "o": [ + [ + 0.544, + 1.039 + ], + [ + -0.4, + 0.13 + ], + [ + -0.334, + -0.243 + ], + [ + 0.288, + -0.141 + ] + ], + "v": [ + [ + 0.084, + -0.82 + ], + [ + 0.823, + 1.087 + ], + [ + -1.02, + -0.008 + ], + [ + -0.852, + -1.076 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.349000010771, + 0.380000005984, + 0.404000016755, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 1.603, + 1.467 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 12, + "ty": 4, + "nm": "arkaKol Outlines", + "parent": 7, + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 1, + "k": [ + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 0, + "s": [ + -6 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 90, + "s": [ + 10 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 180, + "s": [ + -6 + ] + }, + { + "i": { + "x": [ + 0.667 + ], + "y": [ + 1 + ] + }, + "o": { + "x": [ + 0.333 + ], + "y": [ + 0 + ] + }, + "t": 270, + "s": [ + 12 + ] + }, + { + "t": 359, + "s": [ + -6 + ] + } + ], + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 19.477, + 29.316, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 6.726, + 6.532, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [ + -2.298, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 2.51, + -0.399 + ], + [ + -0.624, + 3.866 + ] + ], + "o": [ + [ + 2.298, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + -3.909, + 0.623 + ], + [ + 0.755, + -4.678 + ] + ], + "v": [ + [ + -8.01, + -6.532 + ], + [ + 15.428, + -4.138 + ], + [ + 16.477, + -0.159 + ], + [ + -8.824, + 5.909 + ], + [ + -15.853, + -0.981 + ] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.517999985639, + 0.552999997606, + 0.592000026329, + 1 + ], + "ix": 4 + }, + "o": { + "a": 0, + "k": 100, + "ix": 5 + }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { + "a": 0, + "k": [ + 16.726, + 6.782 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "a": 0, + "k": 0, + "ix": 6 + }, + "o": { + "a": 0, + "k": 100, + "ix": 7 + }, + "sk": { + "a": 0, + "k": 0, + "ix": 4 + }, + "sa": { + "a": 0, + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 13, + "ty": 0, + "nm": "yildizlar", + "refId": "comp_0", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 115.5, + 47.5, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 115.5, + 47.5, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "w": 231, + "h": 95, + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 14, + "ty": 0, + "nm": "yildiz", + "refId": "comp_1", + "sr": 1, + "ks": { + "o": { + "a": 0, + "k": 100, + "ix": 11 + }, + "r": { + "a": 0, + "k": 0, + "ix": 10 + }, + "p": { + "a": 0, + "k": [ + 115.5, + 47.5, + 0 + ], + "ix": 2 + }, + "a": { + "a": 0, + "k": [ + 115.5, + 47.5, + 0 + ], + "ix": 1 + }, + "s": { + "a": 0, + "k": [ + 100, + 100, + 100 + ], + "ix": 6 + } + }, + "ao": 0, + "w": 231, + "h": 95, + "ip": 0, + "op": 360, + "st": 0, + "bm": 0 + } + ], + "markers": [] +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/image_asset.json b/example/shared/src/commonMain/composeResources/files/image_asset.json index 33a60039..cb2f39f5 100644 --- a/example/shared/src/commonMain/composeResources/files/image_asset.json +++ b/example/shared/src/commonMain/composeResources/files/image_asset.json @@ -1,72 +1 @@ -{ - "v": "5.5.2", - "fr": 60, - "ip": 0, - "op": 60, - "w": 512, - "h": 512, - "ddd": 0, - "assets": [ - { - "id": "blep", - "h": 512, - "w": 512, - "u": "/images/", - "p": "blep.png", - "e": 1 - } - ], - "layers": [ - { - "ddd": 0, - "ty": 2, - "sr": 1, - "ks": { - "a": { - "k": [ - 0, - 0 - ], - "a": 0 - }, - "p": { - "k": [ - 0, - 0 - ], - "a": 0 - }, - "s": { - "k": [ - 100, - 100 - ], - "a": 0 - }, - "r": { - "k": 0, - "a": 0 - }, - "o": { - "k": 100, - "a": 0 - }, - "sk": { - "k": 0, - "a": 0 - }, - "sa": { - "k": 0, - "a": 0 - } - }, - "ao": 0, - "ip": 0, - "op": 60, - "st": 0, - "bm": 0, - "ind": 0, - "refId": "blep" - } - ] -} \ No newline at end of file +{"v":"5.5.2","fr":60,"ip":0,"op":60,"w":512,"h":512,"ddd":0,"assets":[{"id":"blep","h":512,"w":512,"u":"/images/","p":"blep.png","e":1}],"layers":[{"ddd":0,"ty":2,"sr":1,"ks":{"a":{"k":[0,0],"a":0},"p":{"k":[0,0],"a":0},"s":{"k":[100,100],"a":0},"r":{"k":0,"a":0},"o":{"k":100,"a":0},"sk":{"k":0,"a":0},"sa":{"k":0,"a":0}},"ao":0,"ip":0,"op":60,"st":0,"bm":0,"ind":0,"refId":"blep"}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/image_asset_embedded.json b/example/shared/src/commonMain/composeResources/files/image_asset_embedded.json new file mode 100644 index 00000000..ac840cf9 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/image_asset_embedded.json @@ -0,0 +1 @@ +{"v":"5.5.2","fr":60,"ip":0,"op":60,"w":512,"h":512,"ddd":0,"assets":[{"id":"blep","h":512,"w":512,"u":"","p":"data:image/png;base64,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","e":1}],"layers":[{"ddd":0,"ty":2,"sr":1,"ks":{"a":{"k":[0,0],"a":0},"p":{"k":[0,0],"a":0},"s":{"k":[100,100],"a":0},"r":{"k":0,"a":0},"o":{"k":100,"a":0},"sk":{"k":0,"a":0},"sa":{"k":0,"a":0}},"ao":0,"ip":0,"op":60,"st":0,"bm":0,"ind":0,"refId":"blep"}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/text.json b/example/shared/src/commonMain/composeResources/files/text.json index 6be3da1c..46b3b1dc 100644 --- a/example/shared/src/commonMain/composeResources/files/text.json +++ b/example/shared/src/commonMain/composeResources/files/text.json @@ -1,77 +1 @@ -{ - "v": "5.5.2", - "fr": 60, - "ip": 0, - "op": 120, - "w": 300, - "h": 100, - "ddd": 0, - "assets": [], - "fonts": { - "list": [ - { - "fPath": "https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf", - "fFamily": "Ubuntu", - "fStyle": "Light Italic", - "fName": "Ubuntu Light Italic", - "origin": 3 - } - ] - }, - "layers": [ - { - "nm": "Text Layer", - "ty": 5, - "sr": 1, - "ks": { - "p": { - "k": [ - 5, - 80 - ], - "a": 0 - } - }, - "ip": 0, - "op": 120, - "st": 0, - "t": { - "a": [], - "d": { - "k": [ - { - "s": { - "f": "Ubuntu Light Italic", - "fc": [ - 0, - 0, - 0 - ], - "s": 100, - "t": "Hello", - "j": 0, - "sc": [ - 0, - 0, - 0 - ], - "sw": 0 - }, - "t": 0 - } - ] - }, - "m": { - "a": { - "k": [ - 0, - 0 - ], - "a": 0 - } - }, - "p": {} - } - } - ] -} \ No newline at end of file +{"v":"5.5.2","fr":60,"ip":0,"op":120,"w":300,"h":100,"ddd":0,"assets":[],"fonts":{"list":[{"fPath":"https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf","fFamily":"Ubuntu","fStyle":"Light Italic","fName":"Ubuntu Light Italic","origin":3}]},"layers":[{"nm":"Text Layer","ty":5,"sr":1,"ks":{"p":{"k":[5,80],"a":0}},"ip":0,"op":120,"st":0,"t":{"a":[],"d":{"k":[{"s":{"f":"Ubuntu Light Italic","fc":[0,0,0],"s":100,"t":"Hello","j":0,"sc":[0,0,0],"sw":0},"t":0}]},"m":{"a":{"k":[0,0],"a":0}},"p":{}}}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/zzzzzz_broken_tangents_1.json b/example/shared/src/commonMain/composeResources/files/zzzzzz_broken_tangents_1.json new file mode 100644 index 00000000..5b99b55c --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/zzzzzz_broken_tangents_1.json @@ -0,0 +1 @@ +{"v":"5.6.2","fr":60,"ip":0,"op":84,"w":1000,"h":1000,"nm":"Icons-02","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"konus 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[305.371,695.369,0],"ix":2},"a":{"a":0,"k":[9.965,9.91,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.715,-6.24],[0.7450000000000001,8.84],[9.715,8.27],[-1.4649999999999999,3.9600000000000004],[-8.093,-6.379]],"o":[[-7.115,5.83],[6.195,9.66],[3.4050000000000002,6.93],[-6.754,-3.275],[-8.715,-9.66]],"v":[[-9.715,-6.24],[6.195,9.66],[9.715,8.27],[-4.795,-0.57],[-8.715,-9.66]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4627,0.2706,0.9098,0.499,0.503,0.3274,0.9126,0.998,0.464,0.26,0.94],"ix":9}},"s":{"a":0,"k":[2.009,4.129],"ix":5},"e":{"a":0,"k":[-10.937,-6.362],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[9.965,9.91],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"konus 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[253.786,759.52,0],"ix":2},"a":{"a":0,"k":[11.01,11.79,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-10.76,11.54],[10.76,3.071],[-2.8100000000000005,-5.699999999999999]],"o":[[-10.76,11.54],[0.9499999999999993,1.0100000000000002],[-4.32,-11.54]],"v":[[-10.76,11.54],[10.76,3.071],[-4.32,-11.54]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4627,0.2706,0.9098,0.499,0.503,0.3274,0.9126,0.998,0.464,0.26,0.94],"ix":9}},"s":{"a":0,"k":[2.009,4.129],"ix":5},"e":{"a":0,"k":[-7.143,-3.906],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[11.01,11.79],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"konus 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[377.254,625.523,0],"ix":2},"a":{"a":0,"k":[16.43,15.835,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-16.18,-3.585],[-5.51,13.975000000000001],[16.18,10.465],[15.752999999999998,10.475999999999999],[12.405000000000001,10.168000000000001],[1.5959999999999996,5.285],[-12.63,-10.775000000000002]],"o":[[-14.9,8.204999999999998],[3.18,15.585],[15.967,10.475999999999999],[13.965,10.434],[6.0520000000000005,7.971000000000001],[-8.66,-3.9959999999999996],[-12.83,-15.585]],"v":[[-16.18,-3.585],[3.18,15.585],[16.18,10.465],[15.54,10.465],[10.91,9.675],[-2.18,1.785],[-12.83,-15.585]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4627,0.2706,0.9098,0.499,0.503,0.3274,0.9126,0.998,0.464,0.26,0.94],"ix":9}},"s":{"a":0,"k":[2.009,4.129],"ix":5},"e":{"a":0,"k":[-12.277,-8.147],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[16.43,15.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":4,"ty":4,"nm":"konus inside","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[409.147,577.699,0],"ix":2},"a":{"a":0,"k":[18.091,15.802,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.459,-14.975000000000001],[-13.669,-0.9369999999999994],[2.8529999999999998,12.633000000000001],[14.680000000000001,15.302],[17.781,8.623],[10.78,-3.761],[-5.689,-15.538],[-10.475999999999999,-15.553]],"o":[[-17.841,-10.188],[-1.499,10.005],[11.599,15.553],[17.840000000000003,11.663],[13.884,0.2649999999999997],[0.9610000000000003,-12.418],[-10.342,-15.548],[-12.06,-15.553]],"v":[[-14.49,-13.938],[-5.189,6.583],[7.6,14.303],[16.26,13.484],[16.081,4.792],[6.96,-7.038],[-10.208,-15.538],[-10.609,-15.553]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.002,0.4023,0.3008,0.6392,0.591,0.4038,0.2744,0.7056,1,0.4366,0.2665,0.8335],"ix":9}},"s":{"a":0,"k":[-4.911,3.795],"ix":5},"e":{"a":0,"k":[5.134,-5.357],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[18.091,15.803],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"worm 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14.402,"s":[0]},{"t":21.602734375,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":11.999,"s":[441.228,602.661,0],"to":[22.167,-9.5,0],"ti":[-22.167,9.5,0]},{"t":59.99921875,"s":[574.228,545.661,0]}],"ix":2},"a":{"a":0,"k":[8.829,7.079,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":11.999,"s":[0,0,100]},{"t":33.602734375,"s":[896,896,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.574999999999999,-13.274000000000001],[-9.812999999999999,-9.043],[-9.902,-5.0360000000000005],[-16.033,-2.644],[-17.158,-2.391],[-17.06,-0.707],[-15.174999999999999,-0.377],[-10.161999999999999,-1.205],[-7.531000000000001,-5.616],[-7.248,-9.629],[-3.419,-12.058],[-0.687,-11.565],[-0.5199999999999999,-13.295],[-2.551,-13.908]],"o":[[-9.12,-10.822000000000001],[-9.613,-6.127],[-12.113,-1.8530000000000002],[-16.603,-2.754],[-17.408,-1.263],[-15.844,-0.44099999999999995],[-12.295,-0.25],[-7.959,-4.163],[-7.7090000000000005,-8.366],[-5.149000000000001,-11.67],[-1.31,-11.295],[-0.25,-12.67],[-1.798,-13.779],[-4.9510000000000005,-13.908]],"v":[[-7.802,-12.083],[-9.693,-7.223],[-10.513,-4.123],[-16.033,-2.644],[-17.283,-1.823],[-16.503,-0.573],[-14.504,-0.384],[-8.793,-2.943],[-7.573,-7.093],[-6.323,-10.513],[-1.863,-11.513],[-0.468,-12.118],[-1.073,-13.513],[-3.298,-13.908]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,1,0.8471,0.3882,0.5,1,0.835,0.34,1,1,0.83,0.32],"ix":9}},"s":{"a":0,"k":[-9.208,7.087],"ix":5},"e":{"a":0,"k":[7.31,-5.525],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.829,7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4.8,"op":901.5,"st":4.8,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"worm 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9.602,"s":[0]},{"t":16.802734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16.803,"s":[20]},{"t":40.802734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":7.199,"s":[387.73,646.897,0],"to":[32.167,-102.232,0],"ti":[-32.167,69.667,0]},{"t":55.19921875,"s":[580.73,228.897,0]}],"ix":2},"a":{"a":0,"k":[3.028,8.566,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":7.199,"s":[0,0,100]},{"t":28.802734375,"s":[896,896,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.218,-16.823999999999998],[-5.59,-14.363],[-5.152,-9.26],[-2.976,-6.855],[-5.21,-2.229],[-5.807,-1.6420000000000001],[-5.245,-0.194],[-4.282,-0.279],[-0.25,-2.7490000000000006],[-1.5339999999999998,-8.681000000000001],[-3.6270000000000002,-11.189],[-2.7889999999999997,-14.436],[-1.0310000000000001,-15.447],[-1.6029999999999998,-16.826]],"o":[[-4.2299999999999995,-16.165],[-5.755,-10.753],[-3.398,-7.628],[-2.539,-3.8880000000000003],[-5.582,-2.036],[-5.747,-0.6390000000000001],[-4.469,-0.226],[-3.96,-0.469],[-0.9299999999999999,-7.519],[-3.214,-10.217],[-3.5500000000000003,-13.381],[-1.261,-15.020000000000001],[-1.147,-16.43],[-2.175,-16.826]],"v":[[-2.26,-16.819],[-5.68,-12.289],[-4.03,-8.209],[-2.83,-6.009],[-5.21,-2.229],[-5.782,-1.223],[-4.66,-0.229],[-4.12,-0.379],[-0.73,-6.259],[-2.449,-9.569],[-3.56,-12.189],[-1.66,-14.819],[-1.082,-15.891],[-2.134,-16.826]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":5,"k":{"a":0,"k":[0,0.5147,0.3268,0.9532,0.235,0.968,0.824,0.392,0.47,0.985,0.8425,0.415,0.735,0.966,0.813,0.354,1,0.4758,0.2746,0.9454],"ix":9}},"s":{"a":0,"k":[4.799,-1.451],"ix":5},"e":{"a":0,"k":[-2.567,-1.339],"ix":6},"t":1,"nm":"Gradient Fill 2","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[3.028,8.51],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":901.5,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"worm 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24.002,"s":[0]},{"t":31.202734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":31.203,"s":[-20]},{"t":55.202734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":21.599,"s":[457.447,621.384,0],"to":[73,-15.5,0],"ti":[-73,15.5,0]},{"t":60.0015625,"s":[895.447,528.384,0]}],"ix":2},"a":{"a":0,"k":[10.422,3.838,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":21.599,"s":[0,0,100]},{"t":43.202734375,"s":[896,896,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.306,-7.404],[-9.976,-6.078],[-12.293,-2.9019999999999997],[-18.636,-4.59],[-18.685,-4.648000000000001],[-19.734,-5.069999999999999],[-20.593,-3.618],[-17.536,-0.25],[-13.161000000000001,-0.35900000000000004],[-9.974,-2.0300000000000002],[-7.5169999999999995,-5.153],[-3.134,-4.834],[-1.522,-2.972],[-0.25,-3.9280000000000004],[-3.585,-7.426]],"o":[[-8.395,-7.119000000000001],[-11.449,-3.608],[-15.925999999999998,-1.6509999999999998],[-18.659,-4.62],[-19.1,-5.067],[-20.557000000000002,-4.286],[-20.086,-3.04],[-13.746,-0.255],[-11.184000000000001,-1.061],[-8.596,-4.407],[-4.707,-5.553999999999999],[-2.006,-3.115],[-0.538,-3.322],[-1.581,-6.327],[-6.007,-7.425]],"v":[[-6.606,-7.36],[-10.906,-4.53],[-13.296,-2.53],[-18.636,-4.59],[-18.712,-4.676],[-20.126,-4.68],[-20.206,-3.181],[-14.336,-0.25],[-12.605,-0.56],[-9.176,-3.31],[-6.286,-5.31],[-2.287,-3.48],[-1.09,-3.126],[-0.446,-4.48],[-5.71,-7.425]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.9868,0.8284,0.3532,0.5,0.5045,0.3312,0.9088,1,0.4816,0.304,0.896],"ix":9}},"s":{"a":0,"k":[-6.529,0.614],"ix":5},"e":{"a":0,"k":[6.641,-2.623],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[10.422,3.838],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":14.4,"op":901.5,"st":14.4,"bm":0,"completed":true},{"ddd":0,"ind":4,"ty":4,"nm":"worm 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9.602,"s":[0]},{"t":16.802734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[-20]},{"t":40.802734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":7.199,"s":[465.739,631.992,0],"to":[53.667,29.5,0],"ti":[-53.667,-29.5,0]},{"t":55.19921875,"s":[787.739,808.992,0]}],"ix":2},"a":{"a":0,"k":[10.029,4.128,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":7.199,"s":[0,0,100]},{"t":28.802734375,"s":[896,896,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-18.932,-7.966],[-19.807,-6.97],[-17.305,-1.492],[-10.233999999999998,-2.154],[-7.273,-4.445],[-3.039,-2.615],[-1.877,-0.254],[-1.18,-0.27],[-0.25,-1.084],[-3.3209999999999997,-5.749],[-9.307,-6.085],[-12.197,-3.679],[-17.595,-7.292],[-17.634,-7.391],[-18.216,-8.005]],"o":[[-19.607999999999997,-7.611],[-19.445,-6.242],[-11.669,-1.564],[-8.424,-4.061],[-4.449999999999999,-3.833],[-2.2800000000000002,-0.5429999999999999],[-1.302,-0.25],[-0.5339999999999999,-0.505],[-1.287,-3.995],[-7.5169999999999995,-6.62],[-11.238,-4.101],[-15.965,-3.662],[-17.612,-7.342],[-17.847,-7.798],[-18.763,-8.005]],"v":[[-19.089,-7.883],[-19.535,-6.452],[-13.164,-1.552],[-9.165,-3.202],[-6.164,-4.202],[-2.426,-0.972],[-1.426,-0.252],[-1.065,-0.311],[-0.426,-1.623],[-5.795,-6.252],[-10.545,-4.832],[-13.205,-3.662],[-17.595,-7.292],[-17.658,-7.437],[-18.597,-8.005]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4774,0.2785,0.9415,0.5,0.966,0.813,0.354,1,0.988,0.844,0.412],"ix":9}},"s":{"a":0,"k":[-8.873,-2.985],"ix":5},"e":{"a":0,"k":[9.403,7.059],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[10.029,4.128],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":901.5,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":5,"ty":4,"nm":"line 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16.802,"s":[0]},{"t":24.002734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24.003,"s":[-20]},{"t":48.002734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":14.399,"s":[372.417,630,0],"to":[80.667,-39,0],"ti":[-80.667,39,0]},{"t":62.00078125,"s":[815.417,364,0]}],"ix":2},"a":{"a":0,"k":[0.223,0.126,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":14.399,"s":[0,0,100]},{"t":36.002734375,"s":[896,896,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.9229999999999998,-7.062],[-8.891,-2.183],[-9.347999999999999,-1.656],[-8.867,-0.251],[-7.856000000000001,-0.317],[-0.912,-5.163],[-0.803,-5.232],[-0.25,-6.32],[-1.137,-7.144]],"o":[[-2.122,-6.894],[-9.177,-1.9839999999999998],[-9.344,-0.723],[-8.066,-0.25],[-7.682,-0.443],[-0.855,-5.195],[-0.307,-5.651],[-0.837,-7.016],[-1.6800000000000002,-7.144]],"v":[[-2.122,-6.894],[-8.891,-2.183],[-9.347,-1.309],[-8.282,-0.253],[-7.682,-0.443],[-0.912,-5.163],[-0.754,-5.274],[-0.627,-6.767],[-1.439,-7.144]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4774,0.2785,0.9415,0.5,0.967,0.8185,0.373,1,0.988,0.844,0.412],"ix":9}},"s":{"a":0,"k":[-3.683,2.581],"ix":5},"e":{"a":0,"k":[4.785,-3.599],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.799,3.697],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7.2,"op":901.5,"st":7.2,"bm":0,"completed":true},{"ddd":0,"ind":6,"ty":4,"nm":"line 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9.602,"s":[0]},{"t":16.802734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16.803,"s":[20]},{"t":40.802734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":7.199,"s":[377.751,634.321,0],"to":[37,-41.333,0],"ti":[-42,44.333,0]},{"t":55,"s":[628.751,357.321,0]}],"ix":2},"a":{"a":0,"k":[-0.238,0.482,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":7.199,"s":[0,0,100]},{"t":28.802734375,"s":[896,896,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.1069999999999998,-8.364],[-5.902,-1.841],[-5.904999999999999,-1.835],[-6.016,-0.687],[-5.176,-0.252],[-4.261,-0.452],[-0.482,-7],[-0.40299999999999997,-8.049000000000001],[-1.228,-8.527]],"o":[[-2.312,-8.061],[-5.904,-1.838],[-6.193,-1.3279999999999998],[-5.356,-0.30400000000000005],[-4.6129999999999995,-0.25],[-4.072,-0.782],[-0.24999999999999997,-7.476],[-1.022,-8.468],[-1.7730000000000001,-8.527]],"v":[[-2.312,-8.061],[-5.902,-1.841],[-5.906,-1.833],[-5.512,-0.401],[-4.992,-0.25],[-4.072,-0.782],[-0.482,-7],[-0.84,-8.345],[-1.433,-8.527]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4848,0.312,0.888,0.5,0.506,0.335,0.905,1,0.9762,0.8181,0.3438],"ix":9}},"s":{"a":0,"k":[2.595,-3.125],"ix":5},"e":{"a":0,"k":[-2.79,4.381],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[3.222,4.389],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":901.5,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":7,"ty":4,"nm":"line 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21.602,"s":[0]},{"t":28.802734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28.803,"s":[2]},{"t":52.802734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":19.199,"s":[368,633,0],"to":[13.833,-40.333,0],"ti":[-13.833,40.333,0]},{"t":62,"s":[434,353,0]}],"ix":2},"a":{"a":0,"k":[-0.146,0.428,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":19.199,"s":[0,0,100]},{"t":40.802734375,"s":[896,896,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-2.364,-8.687000000000001],[-3.193,-1.433],[-2.833,-0.331],[-2.133,-0.263],[-1.115,-0.657],[-0.313,-7.913],[-0.67,-9.019],[-1.331,-9.089]],"o":[[-2.423,-8.143],[-3.2520000000000002,-0.8520000000000001],[-2.253,-0.263],[-1.584,-0.25],[-1.053,-1.203],[-0.25,-8.495000000000001],[-1.292,-9.087],[-1.904,-9.089]],"v":[[-2.423,-8.143],[-3.193,-1.433],[-2.253,-0.263],[-2.133,-0.263],[-1.053,-1.203],[-0.313,-7.913],[-1.254,-9.083],[-1.369,-9.089]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.636,0.48,1,0.5,0.65,0.5,1,1,0.538,0.34,1],"ix":9}},"s":{"a":0,"k":[0.293,-3.697],"ix":5},"e":{"a":0,"k":[-0.781,4.743],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.751,4.669],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":12,"op":901.5,"st":12,"bm":0,"completed":true},{"ddd":0,"ind":8,"ty":4,"nm":"circle 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14.402,"s":[0]},{"t":21.602734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21.603,"s":[20]},{"t":45.602734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":11.999,"s":[339.187,588.937,0],"to":[70.167,-64.333,0],"ti":[-70.167,64.333,0]},{"t":59.99921875,"s":[760.187,202.937,0]}],"ix":2},"a":{"a":0,"k":[-226.102,-160.92,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":11.999,"s":[0,0,100]},{"t":33.602734375,"s":[125.32,125.32,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[87.875,87.875],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":15,"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0.636,0.48,1,0.5,0.65,0.5,1,1,0.538,0.34,1],"ix":8}},"s":{"a":0,"k":[-44.039,8.774],"ix":4},"e":{"a":0,"k":[50.598,-5.199],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-226.102,-160.92],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[98.2,98.2],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4.8,"op":901.5,"st":4.8,"bm":0,"completed":true},{"ddd":0,"ind":9,"ty":4,"nm":"circle 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9.602,"s":[0]},{"t":16.802734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16.803,"s":[-20]},{"t":40.802734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":7.199,"s":[342.938,595.438,0],"to":[50.333,4.833,0],"ti":[-50.333,-4.833,0]},{"t":55.19921875,"s":[644.938,624.438,0]}],"ix":2},"a":{"a":0,"k":[-231.688,-173.688,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":7.199,"s":[0,0,100]},{"t":28.802734375,"s":[77.525,77.525,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[87.875,87.875],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":26,"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0.636,0.48,1,0.5,0.65,0.5,1,1,0.538,0.34,1],"ix":8}},"s":{"a":0,"k":[-42.414,28.276],"ix":4},"e":{"a":0,"k":[47.348,-23.888],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[-231.688,-173.688],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":901.5,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":10,"ty":4,"nm":"circle 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":19.202,"s":[0]},{"t":26.402734375,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26.403,"s":[20]},{"t":50.402734375,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":16.799,"s":[337.188,587.438,0],"to":[-11.833,-44.167,0],"ti":[11.833,44.167,0]},{"t":64.79921875,"s":[266.188,322.438,0]}],"ix":2},"a":{"a":0,"k":[-231.688,-173.688,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.093,0.093,0.667],"y":[1,1,1]},"o":{"x":[0.538,0.538,0.333],"y":[0,0,0]},"t":16.799,"s":[0,0,100]},{"t":38.402734375,"s":[102.56,102.56,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[87.875,87.875],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":18,"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0.4848,0.312,0.888,0.5,0.5045,0.3312,0.9088,1,0.9835,0.8267,0.3565],"ix":8}},"s":{"a":0,"k":[-42.414,28.276],"ix":4},"e":{"a":0,"k":[47.348,-23.888],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-231.688,-173.688],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":9.6,"op":901.5,"st":9.6,"bm":0,"completed":true},{"ddd":0,"ind":11,"ty":4,"nm":"up 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.09],"y":[1.701]},"o":{"x":[0.27],"y":[0.309]},"t":23.203,"s":[416.264]},{"t":52.0015625,"s":[311.264]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":23.203,"s":[177.075]},{"t":52.0015625,"s":[177.075]}],"ix":4}},"a":{"a":0,"k":[16.355,4.825,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.204,"y":1},"o":{"x":0.333,"y":0},"t":18.4,"s":[{"i":[[-16.362,4.827],[-16.36,4.836],[-16.36,-4.814],[-16.355,-4.825]],"o":[[-16.362,4.827],[-16.36,4.836],[-16.36,-4.814],[-16.355,-4.825]],"v":[[-16.362,4.827],[-16.36,4.836],[-16.36,-4.814],[-16.355,-4.825]],"c":true}]},{"t":52.0015625,"s":[{"i":[[-16.355,4.825],[16.355,4.825],[16.355,-4.825],[-16.355,-4.825]],"o":[[-16.355,4.825],[16.355,4.825],[16.355,-4.825],[-16.355,-4.825]],"v":[[-16.355,4.825],[16.355,4.825],[16.355,-4.825],[-16.355,-4.825]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.355,4.825],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":18.4,"op":901.5,"st":18.4,"bm":0,"completed":true},{"ddd":0,"ind":12,"ty":4,"nm":"up","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.09],"y":[1.701]},"o":{"x":[0.27],"y":[0.309]},"t":23.203,"s":[416.264]},{"t":52.0015625,"s":[311.264]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":23.203,"s":[177.075]},{"t":52.0015625,"s":[177.075]}],"ix":4}},"a":{"a":0,"k":[16.355,4.825,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-14.314,-4.825],[11.795,-4.825],[16.355,-2.783],[16.355,0.265],[14.312999999999999,4.825],[-11.795,4.825],[-16.355,2.783],[-16.355,-0.265]],"o":[[-11.795,-4.825],[14.312999999999999,-4.825],[16.355,-0.265],[16.355,2.783],[11.795,4.825],[-14.314,4.825],[-16.355,0.265],[-16.355,-2.783]],"v":[[-11.795,-4.825],[11.795,-4.825],[16.355,-0.265],[16.355,0.265],[11.795,4.825],[-11.795,4.825],[-16.355,0.265],[-16.355,-0.265]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.355,4.825],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":18.4,"op":901.5,"st":18.4,"bm":0,"completed":true},{"ddd":0,"ind":13,"ty":4,"nm":"right 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.09],"y":[1.547]},"o":{"x":[0.252],"y":[0.036]},"t":14.803,"s":[924.072]},{"t":43.6015625,"s":[819.072]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":14.803,"s":[630.541]},{"t":43.6015625,"s":[630.541]}],"ix":4}},"a":{"a":0,"k":[9.53,4.575,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.204,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[{"i":[[-9.53,4.575],[-9.534,4.582],[-9.534,-4.568],[-9.53,-4.575]],"o":[[-9.53,4.575],[-9.534,4.582],[-9.534,-4.568],[-9.53,-4.575]],"v":[[-9.53,4.575],[-9.534,4.582],[-9.534,-4.568],[-9.53,-4.575]],"c":true}]},{"t":43.6015625,"s":[{"i":[[-9.53,4.575],[9.53,4.575],[9.53,-4.575],[-9.53,-4.575]],"o":[[-9.53,4.575],[9.53,4.575],[9.53,-4.575],[-9.53,-4.575]],"v":[[-9.53,4.575],[9.53,4.575],[9.53,-4.575],[-9.53,-4.575]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.53,4.575],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":901.5,"st":10,"bm":0,"completed":true},{"ddd":0,"ind":14,"ty":4,"nm":"right","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.09],"y":[1.547]},"o":{"x":[0.252],"y":[0.036]},"t":14.803,"s":[924.072]},{"t":43.6015625,"s":[819.072]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":14.803,"s":[630.541]},{"t":43.6015625,"s":[630.541]}],"ix":4}},"a":{"a":0,"k":[9.53,4.575,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-7.5920000000000005,-4.574],[5.2,-4.574],[9.53,-2.636],[9.53,0.245],[7.591,4.574],[-5.2,4.574],[-9.53,2.637],[-9.53,-0.244]],"o":[[-5.2,-4.574],[7.591,-4.574],[9.53,-0.244],[9.53,2.637],[5.2,4.574],[-7.5920000000000005,4.574],[-9.53,0.245],[-9.53,-2.636]],"v":[[-5.2,-4.574],[5.2,-4.574],[9.53,-0.244],[9.53,0.245],[5.2,4.574],[-5.2,4.574],[-9.53,0.245],[-9.53,-0.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.53,4.575],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":901.5,"st":10,"bm":0,"completed":true},{"ddd":0,"ind":15,"ty":4,"nm":"bottom 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.09],"y":[1.495]},"o":{"x":[0.26],"y":[-0.05]},"t":4.803,"s":[604.334]},{"t":33.6015625,"s":[499.334]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":4.803,"s":[878.733]},{"t":33.6015625,"s":[878.733]}],"ix":4}},"a":{"a":0,"k":[10.075,5.245,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.204,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-10.075,5.245],[-10.081,5.256],[-10.081,-5.234],[-10.075,-5.245]],"o":[[-10.075,5.245],[-10.081,5.256],[-10.081,-5.234],[-10.075,-5.245]],"v":[[-10.075,5.245],[-10.081,5.256],[-10.081,-5.234],[-10.075,-5.245]],"c":true}]},{"t":33.6015625,"s":[{"i":[[-10.075,5.245],[10.075,5.245],[10.075,-5.245],[-10.075,-5.245]],"o":[[-10.075,5.245],[10.075,5.245],[10.075,-5.245],[-10.075,-5.245]],"v":[[-10.075,5.245],[10.075,5.245],[10.075,-5.245],[-10.075,-5.245]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[10.075,5.245],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":901.5,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":16,"ty":4,"nm":"bottom","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.09],"y":[1.495]},"o":{"x":[0.26],"y":[-0.05]},"t":4.803,"s":[604.334]},{"t":33.6015625,"s":[499.334]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":4.803,"s":[878.733]},{"t":33.6015625,"s":[878.733]}],"ix":4}},"a":{"a":0,"k":[10.075,5.245,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-7.854,-5.245],[5.115,-5.245],[10.075,-3.024],[10.075,0.285],[7.854,5.245],[-5.115,5.245],[-10.075,3.0250000000000004],[-10.075,-0.285]],"o":[[-5.115,-5.245],[7.854,-5.245],[10.075,-0.285],[10.075,3.0250000000000004],[5.115,5.245],[-7.854,5.245],[-10.075,0.285],[-10.075,-3.024]],"v":[[-5.115,-5.245],[5.115,-5.245],[10.075,-0.285],[10.075,0.285],[5.115,5.245],[-5.115,5.245],[-10.075,0.285],[-10.075,-0.285]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[10.075,5.245],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":901.5,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":17,"ty":0,"nm":"conus","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1.387]},"o":{"x":[0.537],"y":[-0.029]},"t":0,"s":[-74.832]},{"t":43.19921875,"s":[0]}],"ix":10},"p":{"a":0,"k":[181,837,0],"ix":2},"a":{"a":0,"k":[181,837,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1.28,1.28,1]},"o":{"x":[0.537,0.537,0.333],"y":[-0.027,-0.027,0]},"t":0,"s":[0,0,100]},{"t":43.19921875,"s":[100,100,100]}],"ix":6}},"ao":0,"w":1000,"h":1000,"ip":0,"op":902.4,"st":0,"bm":0,"completed":true,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"konus 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[305.371,695.369,0],"ix":2},"a":{"a":0,"k":[9.965,9.91,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.715,-6.24],[0.7450000000000001,8.84],[9.715,8.27],[-1.4649999999999999,3.9600000000000004],[-8.093,-6.379]],"o":[[-7.115,5.83],[6.195,9.66],[3.4050000000000002,6.93],[-6.754,-3.275],[-8.715,-9.66]],"v":[[-9.715,-6.24],[6.195,9.66],[9.715,8.27],[-4.795,-0.57],[-8.715,-9.66]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4627,0.2706,0.9098,0.499,0.503,0.3274,0.9126,0.998,0.464,0.26,0.94],"ix":9}},"s":{"a":0,"k":[2.009,4.129],"ix":5},"e":{"a":0,"k":[-10.937,-6.362],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[9.965,9.91],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"konus 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[253.786,759.52,0],"ix":2},"a":{"a":0,"k":[11.01,11.79,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-10.76,11.54],[10.76,3.071],[-2.8100000000000005,-5.699999999999999]],"o":[[-10.76,11.54],[0.9499999999999993,1.0100000000000002],[-4.32,-11.54]],"v":[[-10.76,11.54],[10.76,3.071],[-4.32,-11.54]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4627,0.2706,0.9098,0.499,0.503,0.3274,0.9126,0.998,0.464,0.26,0.94],"ix":9}},"s":{"a":0,"k":[2.009,4.129],"ix":5},"e":{"a":0,"k":[-7.143,-3.906],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[11.01,11.79],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"konus 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[377.254,625.523,0],"ix":2},"a":{"a":0,"k":[16.43,15.835,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-16.18,-3.585],[-5.51,13.975000000000001],[16.18,10.465],[15.752999999999998,10.475999999999999],[12.405000000000001,10.168000000000001],[1.5959999999999996,5.285],[-12.63,-10.775000000000002]],"o":[[-14.9,8.204999999999998],[3.18,15.585],[15.967,10.475999999999999],[13.965,10.434],[6.0520000000000005,7.971000000000001],[-8.66,-3.9959999999999996],[-12.83,-15.585]],"v":[[-16.18,-3.585],[3.18,15.585],[16.18,10.465],[15.54,10.465],[10.91,9.675],[-2.18,1.785],[-12.83,-15.585]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.4627,0.2706,0.9098,0.499,0.503,0.3274,0.9126,0.998,0.464,0.26,0.94],"ix":9}},"s":{"a":0,"k":[2.009,4.129],"ix":5},"e":{"a":0,"k":[-12.277,-8.147],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[16.43,15.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":4,"ty":4,"nm":"konus inside","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[409.147,577.699,0],"ix":2},"a":{"a":0,"k":[18.091,15.802,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.459,-14.975000000000001],[-13.669,-0.9369999999999994],[2.8529999999999998,12.633000000000001],[14.680000000000001,15.302],[17.781,8.623],[10.78,-3.761],[-5.689,-15.538],[-10.475999999999999,-15.553]],"o":[[-17.841,-10.188],[-1.499,10.005],[11.599,15.553],[17.840000000000003,11.663],[13.884,0.2649999999999997],[0.9610000000000003,-12.418],[-10.342,-15.548],[-12.06,-15.553]],"v":[[-14.49,-13.938],[-5.189,6.583],[7.6,14.303],[16.26,13.484],[16.081,4.792],[6.96,-7.038],[-10.208,-15.538],[-10.609,-15.553]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.002,0.4023,0.3008,0.6392,0.591,0.4038,0.2744,0.7056,1,0.4366,0.2665,0.8335],"ix":9}},"s":{"a":0,"k":[-4.911,3.795],"ix":5},"e":{"a":0,"k":[5.134,-5.357],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[18.091,15.803],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":902.4,"st":0,"bm":0,"completed":true}]},{"ddd":0,"ind":18,"ty":4,"nm":"left 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.089],"y":[1.886]},"o":{"x":[0.303],"y":[-0.097]},"t":27.603,"s":[180.245]},{"t":56.4015625,"s":[75.245]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":27.603,"s":[535.475]},{"t":56.4015625,"s":[535.475]}],"ix":4}},"a":{"a":0,"k":[-0.086,5.245,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.204,"y":1},"o":{"x":0.333,"y":0},"t":22.8,"s":[{"i":[[-6.61,5.245],[-6.608,5.244],[-6.608,-5.246],[-6.61,-5.245]],"o":[[-6.61,5.245],[-6.608,5.244],[-6.608,-5.246],[-6.61,-5.245]],"v":[[-6.61,5.245],[-6.608,5.244],[-6.608,-5.246],[-6.61,-5.245]],"c":true}]},{"t":56.4015625,"s":[{"i":[[-6.61,5.245],[6.61,5.245],[6.61,-5.245],[-6.61,-5.245]],"o":[[-6.61,5.245],[6.61,5.245],[6.61,-5.245],[-6.61,-5.245]],"v":[[-6.61,5.245],[6.61,5.245],[6.61,-5.245],[-6.61,-5.245]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.198,5.133],"ix":2},"a":{"a":0,"k":[-6.808,-0.112],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22.8,"op":901.5,"st":22.8,"bm":0,"completed":true},{"ddd":0,"ind":19,"ty":4,"nm":"left","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.089],"y":[1.886]},"o":{"x":[0.303],"y":[-0.097]},"t":27.603,"s":[180.245]},{"t":56.4015625,"s":[75.245]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.979],"y":[1]},"o":{"x":[0.021],"y":[0]},"t":27.603,"s":[535.475]},{"t":56.4015625,"s":[535.475]}],"ix":4}},"a":{"a":0,"k":[-0.086,5.245,0],"ix":1},"s":{"a":0,"k":[896,896,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.388999999999999,-5.245],[1.65,-5.245],[6.61,-3.024],[6.61,0.285],[4.390000000000001,5.245],[-1.65,5.245],[-6.61,3.0250000000000004],[-6.61,-0.285]],"o":[[-1.65,-5.245],[4.390000000000001,-5.245],[6.61,-0.285],[6.61,3.0250000000000004],[1.65,5.245],[-4.388999999999999,5.245],[-6.61,0.285],[-6.61,-3.024]],"v":[[-1.65,-5.245],[1.65,-5.245],[6.61,-0.285],[6.61,0.285],[1.65,5.245],[-1.65,5.245],[-6.61,0.285],[-6.61,-0.285]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952,0.951,0.948,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.198,5.133],"ix":2},"a":{"a":0,"k":[-6.808,-0.112],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22.8,"op":901.5,"st":22.8,"bm":0,"completed":true},{"ddd":0,"ind":20,"ty":1,"nm":"White Solid 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[500,500,0],"ix":2},"a":{"a":0,"k":[500,500,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"sw":1000,"sh":1000,"sc":"#ffffff","ip":0,"op":901.5,"st":0,"bm":0,"completed":true}],"markers":[],"__complete":true} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 085e663e..7524c23c 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,5 +1,6 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.BottomSheetScaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable @@ -33,6 +34,7 @@ private val RECT = "rect.json" private val ROUND_RECT = "roundrect.json" private val ROBOT = "robot.json" private val ROBOT_404 = "robot_404.json" +private val ASTRONAUT = "astronaut.json" private val CONFETTI = "confetti.json" private val PRECOMP_WITH_REMAPPING = "precomp_with_remapping.json" private val MASK_ADD = "mask_add.json" @@ -43,6 +45,7 @@ private val REPEATER = "repeater.json" private val TEXT_WITH_PATH = "text_with_path.json" private val TEXT = "text.json" private val IMAGE_ASSET = "image_asset.json" +private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" @Composable fun App() { From 5e79701beec87b2182dc5e366c4dab809bd30923 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 5 Jun 2024 17:41:57 +0300 Subject: [PATCH 032/100] minify example anim --- .../composeResources/files/astronaut.json | 10443 +--------------- 1 file changed, 1 insertion(+), 10442 deletions(-) diff --git a/example/shared/src/commonMain/composeResources/files/astronaut.json b/example/shared/src/commonMain/composeResources/files/astronaut.json index 6162f3ba..e799c20e 100644 --- a/example/shared/src/commonMain/composeResources/files/astronaut.json +++ b/example/shared/src/commonMain/composeResources/files/astronaut.json @@ -1,10442 +1 @@ -{ - "v": "5.7.1", - "fr": 60, - "ip": 0, - "op": 360, - "w": 231, - "h": 95, - "nm": "astronautTamKemikli", - "ddd": 0, - "assets": [ - { - "id": "comp_0", - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 4, - "nm": "yildizlar Outlines", - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 120.277, - 45.662, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 103.779, - 38.709, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - 4.932, - -4.565 - ] - ], - "o": [ - [ - -7.53, - 3.723 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 14.143, - -16.486 - ], - [ - -6.643, - -3.014 - ] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 3 - }, - "o": { - "a": 0, - "k": 100, - "ix": 4 - }, - "w": { - "a": 0, - "k": 1, - "ix": 5 - }, - "lc": 2, - "lj": 1, - "ml": 10, - "bm": 0, - "d": [ - { - "n": "d", - "nm": "dash", - "v": { - "a": 0, - "k": 25, - "ix": 1 - } - }, - { - "n": "o", - "nm": "offset", - "v": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.472 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.287 - ], - "y": [ - 0 - ] - }, - "t": 111, - "s": [ - -25 - ] - }, - { - "t": 153, - "s": [ - -75 - ] - } - ], - "ix": 7 - } - } - ], - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 69.562, - 91.92 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 35.88, - 45.173 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.73 - ], - "y": [ - 0 - ] - }, - "t": 105, - "s": [ - 0 - ] - }, - { - "t": 178, - "s": [ - -24.595 - ] - } - ], - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.793, - 0 - ], - [ - 0, - -0.793 - ], - [ - 0.793, - 0 - ], - [ - 0, - 0.793 - ] - ], - "o": [ - [ - 0.793, - 0 - ], - [ - 0, - 0.793 - ], - [ - -0.793, - 0 - ], - [ - 0, - -0.793 - ] - ], - "v": [ - [ - 0, - -1.436 - ], - [ - 1.436, - 0 - ], - [ - 0, - 1.436 - ], - [ - -1.436, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 21.939, - 70.597 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 65, - "s": [ - 0, - 0 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 91, - "s": [ - 100, - 100 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 96, - "s": [ - 100, - 100 - ] - }, - { - "t": 122, - "s": [ - 0, - 0 - ] - } - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 61, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.574, - 0 - ], - [ - 0, - -0.575 - ], - [ - 0.575, - 0 - ], - [ - 0, - 0.575 - ] - ], - "o": [ - [ - 0.575, - 0 - ], - [ - 0, - 0.575 - ], - [ - -0.574, - 0 - ], - [ - 0, - -0.575 - ] - ], - "v": [ - [ - 0, - -1.041 - ], - [ - 1.041, - 0 - ], - [ - 0, - 1.041 - ], - [ - -1.041, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 206.267, - 1.291 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 223, - "s": [ - 0, - 0 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 249, - "s": [ - 100, - 100 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 254, - "s": [ - 100, - 100 - ] - }, - { - "t": 280, - "s": [ - 0, - 0 - ] - } - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 61, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 3", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 3, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ], - [ - 0.852, - 0 - ], - [ - 0, - 0.851 - ] - ], - "o": [ - [ - 0.852, - 0 - ], - [ - 0, - 0.851 - ], - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ] - ], - "v": [ - [ - 0, - -1.541 - ], - [ - 1.541, - 0 - ], - [ - 0, - 1.541 - ], - [ - -1.541, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 172.767, - 24.602 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 21, - "s": [ - 0, - 0 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 47, - "s": [ - 100, - 100 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 52, - "s": [ - 100, - 100 - ] - }, - { - "t": 78, - "s": [ - 0, - 0 - ] - } - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 61, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 4", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 4, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ], - [ - 0.851, - 0 - ], - [ - 0, - 0.851 - ] - ], - "o": [ - [ - 0.851, - 0 - ], - [ - 0, - 0.851 - ], - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ] - ], - "v": [ - [ - 0, - -1.541 - ], - [ - 1.541, - 0 - ], - [ - 0, - 1.541 - ], - [ - -1.541, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 35.767, - 12.602 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 134, - "s": [ - 0, - 0 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 160, - "s": [ - 100, - 100 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 165, - "s": [ - 100, - 100 - ] - }, - { - "t": 191, - "s": [ - 0, - 0 - ] - } - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 61, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 5", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 5, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - -0.001, - -3.536 - ], - [ - 1.249, - -1.25 - ], - [ - 3.535, - 0 - ], - [ - 1.249, - 1.25 - ], - [ - -0.001, - 3.536 - ], - [ - -1.251, - 1.25 - ], - [ - -3.536, - 0 - ], - [ - -1.251, - -1.25 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 192.937, - 73.633 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 105, - "s": [ - 0, - 0 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 135, - "s": [ - 100, - 100 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 150, - "s": [ - 100, - 100 - ] - }, - { - "t": 180, - "s": [ - 0, - 0 - ] - } - ], - "ix": 3 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 105, - "s": [ - 0 - ] - }, - { - "t": 180, - "s": [ - 180 - ] - } - ], - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 6", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 6, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 0, - -3.456 - ], - [ - 1.222, - -1.222 - ], - [ - 3.456, - 0 - ], - [ - 1.222, - 1.222 - ], - [ - 0, - 3.456 - ], - [ - -1.222, - 1.222 - ], - [ - -3.456, - 0 - ], - [ - -1.222, - -1.222 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 3.706, - 28.971 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 285, - "s": [ - 0, - 0 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 315, - "s": [ - 100, - 100 - ] - }, - { - "i": { - "x": [ - 0.667, - 0.667 - ], - "y": [ - 1, - 1 - ] - }, - "o": { - "x": [ - 0.333, - 0.333 - ], - "y": [ - 0, - 0 - ] - }, - "t": 330, - "s": [ - 100, - 100 - ] - }, - { - "t": 359, - "s": [ - 0, - 0 - ] - } - ], - "ix": 3 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 285, - "s": [ - 0 - ] - }, - { - "t": 359, - "s": [ - 180 - ] - } - ], - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 7", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 7, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - } - ] - }, - { - "id": "comp_1", - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 4, - "nm": "yildizlar Outlines", - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 113.895, - 47.73, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 100.367, - 31.507, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.793, - 0 - ], - [ - 0, - -0.793 - ], - [ - 0.793, - 0 - ], - [ - 0, - 0.793 - ] - ], - "o": [ - [ - 0.793, - 0 - ], - [ - 0, - 0.793 - ], - [ - -0.793, - 0 - ], - [ - 0, - -0.793 - ] - ], - "v": [ - [ - 0, - -1.436 - ], - [ - 1.436, - 0 - ], - [ - 0, - 1.436 - ], - [ - -1.436, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 3.332, - 61.327 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 100 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - 50 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - 100 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 50 - ] - }, - { - "t": 359, - "s": [ - 100 - ] - } - ], - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.575, - 0 - ], - [ - 0, - -0.575 - ], - [ - 0.575, - 0 - ], - [ - 0, - 0.575 - ] - ], - "o": [ - [ - 0.575, - 0 - ], - [ - 0, - 0.575 - ], - [ - -0.575, - 0 - ], - [ - 0, - -0.575 - ] - ], - "v": [ - [ - 0, - -1.041 - ], - [ - 1.041, - 0 - ], - [ - 0, - 1.041 - ], - [ - -1.041, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 41.319, - 43.181 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 65 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - 100 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - 65 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 100 - ] - }, - { - "t": 359, - "s": [ - 65 - ] - } - ], - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.574, - 0 - ], - [ - 0, - -0.575 - ], - [ - 0.575, - 0 - ], - [ - 0, - 0.575 - ] - ], - "o": [ - [ - 0.575, - 0 - ], - [ - 0, - 0.575 - ], - [ - -0.574, - 0 - ], - [ - 0, - -0.575 - ] - ], - "v": [ - [ - 0, - -1.041 - ], - [ - 1.041, - 0 - ], - [ - 0, - 1.041 - ], - [ - -1.041, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 199.442, - 13.054 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 30 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - 50 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - 30 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 50 - ] - }, - { - "t": 359, - "s": [ - 30 - ] - } - ], - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 3", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 3, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.851, - 0 - ], - [ - 0, - -0.852 - ], - [ - 0.852, - 0 - ], - [ - 0, - 0.851 - ] - ], - "o": [ - [ - 0.852, - 0 - ], - [ - 0, - 0.851 - ], - [ - -0.851, - 0 - ], - [ - 0, - -0.852 - ] - ], - "v": [ - [ - 0, - -1.541 - ], - [ - 1.54, - 0 - ], - [ - 0, - 1.541 - ], - [ - -1.54, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 179.484, - 53.659 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 81 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - 100 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - 81 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 100 - ] - }, - { - "t": 359, - "s": [ - 81 - ] - } - ], - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 4", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 4, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ], - [ - 0.852, - 0 - ], - [ - 0, - 0.851 - ] - ], - "o": [ - [ - 0.852, - 0 - ], - [ - 0, - 0.851 - ], - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ] - ], - "v": [ - [ - 0, - -1.541 - ], - [ - 1.54, - 0 - ], - [ - 0, - 1.541 - ], - [ - -1.54, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 165.524, - 1.791 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 60 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - 100 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - 60 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 100 - ] - }, - { - "t": 359, - "s": [ - 60 - ] - } - ], - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 5", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 5, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ], - [ - 0.851, - 0 - ], - [ - 0, - 0.851 - ] - ], - "o": [ - [ - 0.851, - 0 - ], - [ - 0, - 0.851 - ], - [ - -0.851, - 0 - ], - [ - 0, - -0.851 - ] - ], - "v": [ - [ - 0, - -1.541 - ], - [ - 1.541, - 0 - ], - [ - 0, - 1.541 - ], - [ - -1.541, - 0 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.685999971278, - 0.709999952129, - 0.736999990426, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 1.791, - 4.873 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 85 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - 100 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - 85 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 100 - ] - }, - { - "t": 359, - "s": [ - 85 - ] - } - ], - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 6", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 6, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - } - ] - } - ], - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 4, - "nm": "onBilek Outlines", - "parent": 4, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 33.999, - 1.729, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 2.632, - 8.25, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - -0.391, - 0.253 - ], - [ - -1.228, - 1.469 - ], - [ - 0.014, - -1.873 - ], - [ - -0.739, - -0.312 - ], - [ - 1.479, - 0.012 - ], - [ - 0.614, - -0.323 - ], - [ - 1.009, - -1.119 - ], - [ - 0.34, - 0.326 - ], - [ - 0.037, - 0.06 - ] - ], - "o": [ - [ - -0.249, - -0.393 - ], - [ - 1.634, - -0.999 - ], - [ - 1.59, - -1.976 - ], - [ - -0.013, - 1.637 - ], - [ - 0.882, - 0.373 - ], - [ - -0.752, - -0.006 - ], - [ - -0.613, - 0.323 - ], - [ - -0.326, - 0.34 - ], - [ - -0.05, - -0.049 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - -5.258, - 1.368 - ], - [ - -5.004, - 0.202 - ], - [ - -0.682, - -3.523 - ], - [ - 3.867, - -2.542 - ], - [ - 4.626, - -0.113 - ], - [ - 3.882, - 1.898 - ], - [ - 1.777, - 2.225 - ], - [ - -1.644, - 5.15 - ], - [ - -2.85, - 5.173 - ], - [ - -2.982, - 5.01 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 5.757, - 5.75 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 2, - "ty": 4, - "nm": "onParkmakAlt Outlines", - "parent": 1, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 0 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 76, - "s": [ - -13.21 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 170, - "s": [ - 8.158 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 264, - "s": [ - -26.116 - ] - }, - { - "t": 359, - "s": [ - 0 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 9.937, - 6.549, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 1.542, - 1.443, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.567, - -0.281 - ], - [ - 0.506, - -0.695 - ], - [ - 0.559, - 0 - ], - [ - -0.341, - 0.646 - ] - ], - "o": [ - [ - 1.621, - 0.801 - ], - [ - -0.381, - 0.525 - ], - [ - -0.637, - 0.001 - ], - [ - 0.229, - -0.437 - ] - ], - "v": [ - [ - -0.71, - -0.975 - ], - [ - 1.942, - 0.731 - ], - [ - -1.347, - 1.037 - ], - [ - -2.107, - -0.444 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 2.698, - 1.506 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 3, - "ty": 4, - "nm": "onParmakUst Outlines", - "parent": 1, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 0 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 76, - "s": [ - 22.093 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 170, - "s": [ - -11.458 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 264, - "s": [ - 22.093 - ] - }, - { - "t": 359, - "s": [ - 0 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 7.276, - 3.344, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 3.33, - 6.926, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.944, - 1.734 - ], - [ - -0.828, - -0.129 - ], - [ - -0.001, - -2.134 - ], - [ - 1.381, - -0.094 - ] - ], - "o": [ - [ - 0.944, - -1.734 - ], - [ - 0.8, - 0.125 - ], - [ - 0, - 0.936 - ], - [ - -1.449, - 0.098 - ] - ], - "v": [ - [ - -1.854, - 1.104 - ], - [ - 1.998, - -4.328 - ], - [ - 2.628, - 2.252 - ], - [ - 0.25, - 4.359 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 3.049, - 4.707 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 4, - "ty": 4, - "nm": "onKol Outlines", - "parent": 7, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 16 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - -6 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - 16 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - -6 - ] - }, - { - "t": 359, - "s": [ - 16 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 18.105, - 29.056, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 8.595, - 21.521, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - -0.008, - 0.309 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 4.097, - -2.491 - ], - [ - 0.396, - -2.433 - ], - [ - -3.825, - -2.121 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.449, - 0.88 - ], - [ - -0.238, - 1.46 - ], - [ - 6.975, - 3.868 - ] - ], - "v": [ - [ - -1.18, - 10.577 - ], - [ - 7.943, - -0.391 - ], - [ - 17.094, - -11.792 - ], - [ - 14.423, - -15.771 - ], - [ - -14.09, - -1.361 - ], - [ - -16.857, - 3.628 - ], - [ - -13.135, - 11.904 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.635000011968, - 0.670999983245, - 0.705999995213, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 17.345, - 16.021 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 5, - "ty": 4, - "nm": "onAyakKalca Outlines", - "parent": 7, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 0.992 - ] - }, - "o": { - "x": [ - 0.412 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - -5 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - -0.009 - ] - }, - "t": 167, - "s": [ - 10 - ] - }, - { - "t": 359, - "s": [ - -5 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 28.32, - 55.049, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 12.912, - 15.937, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 2.842, - 0.331 - ], - [ - 3.03, - -0.355 - ], - [ - 4.888, - -2.598 - ], - [ - -0.979, - -1.61 - ], - [ - -4.734, - 1.638 - ], - [ - -7.77, - 1.233 - ], - [ - 0, - 4.341 - ] - ], - "o": [ - [ - -5.686, - -0.663 - ], - [ - -3.03, - 0.357 - ], - [ - -8.171, - 4.34 - ], - [ - 3.534, - 5.812 - ], - [ - 7.485, - -2.589 - ], - [ - 3.884, - -0.615 - ], - [ - 0, - -4.085 - ] - ], - "v": [ - [ - 16.911, - -12.773 - ], - [ - 1.656, - -12.585 - ], - [ - -15.617, - -7.764 - ], - [ - -20.494, - 6.419 - ], - [ - -7.156, - 11.799 - ], - [ - 16.721, - 2.008 - ], - [ - 23.788, - -5.542 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.635000011968, - 0.670999983245, - 0.705999995213, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 24.037, - 13.687 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 6, - "ty": 4, - "nm": "onAyakUC Outlines", - "parent": 5, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.713 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.484 - ], - "y": [ - 0.113 - ] - }, - "t": 0, - "s": [ - 0 - ] - }, - { - "i": { - "x": [ - 0.564 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.286 - ], - "y": [ - 0 - ] - }, - "t": 167, - "s": [ - 32 - ] - }, - { - "t": 360, - "s": [ - 0 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 38.83, - 8.344, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 8.234, - 7.999, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 1.187, - 0.838 - ], - [ - 0, - 0 - ], - [ - 0.174, - -0.246 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.246, - -0.175 - ], - [ - 0, - 0 - ], - [ - -0.976, - 1.377 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 1.155, - 0.818 - ], - [ - 0, - 0 - ], - [ - 0.869, - -0.506 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - -0.245, - -0.174 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.174, - 0.246 - ], - [ - 0, - 0 - ], - [ - 1.377, - 0.974 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.82, - -1.156 - ], - [ - 0, - -0.001 - ], - [ - -0.819, - -0.582 - ], - [ - 0, - 0 - ], - [ - -1.256, - 0.73 - ] - ], - "v": [ - [ - -1.027, - -5.874 - ], - [ - -4.165, - -8.096 - ], - [ - -4.925, - -7.967 - ], - [ - -4.926, - -7.965 - ], - [ - -10.856, - 0.406 - ], - [ - -10.726, - 1.167 - ], - [ - -1.826, - 7.469 - ], - [ - 2.434, - 6.74 - ], - [ - 6.349, - 1.214 - ], - [ - 7.229, - -0.027 - ], - [ - 10.21, - -4.238 - ], - [ - 9.602, - -7.812 - ], - [ - 9.601, - -7.813 - ], - [ - 6.829, - -7.937 - ], - [ - 2.982, - -5.697 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 32.689, - 17.305 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 5.685, - 0.662 - ], - [ - 0.683, - -5.809 - ], - [ - -4.046, - 0.641 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - -2.726, - -0.318 - ], - [ - -0.656, - 5.568 - ], - [ - 7.771, - -1.233 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - -3.912, - -8.469 - ], - [ - -13.358, - -1.73 - ], - [ - -5.302, - 6.593 - ], - [ - 7.76, - 8.787 - ], - [ - 14.014, - 0.449 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.635000011968, - 0.670999983245, - 0.705999995213, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 14.264, - 9.037 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 7, - "ty": 4, - "nm": "govde Outlines", - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.167 - ], - "y": [ - 0.092 - ] - }, - "t": 0, - "s": [ - 0 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.335 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - -4 - ] - }, - { - "i": { - "x": [ - 0.735 - ], - "y": [ - 0.855 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 4 - ] - }, - { - "t": 359, - "s": [ - 0 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 1, - "k": [ - { - "i": { - "x": 0.667, - "y": 1 - }, - "o": { - "x": 0.275, - "y": 0.402 - }, - "t": 0, - "s": [ - 107.641, - 52.249, - 0 - ], - "to": [ - 0, - 0.958, - 0 - ], - "ti": [ - 0, - 0.708, - 0 - ] - }, - { - "i": { - "x": 0.667, - "y": 1 - }, - "o": { - "x": 0.333, - "y": 0 - }, - "t": 105, - "s": [ - 107.641, - 57.999, - 0 - ], - "to": [ - 0, - -0.708, - 0 - ], - "ti": [ - 0, - 0.958, - 0 - ] - }, - { - "i": { - "x": 0.725, - "y": 0.482 - }, - "o": { - "x": 0.323, - "y": 0 - }, - "t": 255, - "s": [ - 107.641, - 47.999, - 0 - ], - "to": [ - 0, - -0.958, - 0 - ], - "ti": [ - 0, - -0.708, - 0 - ] - }, - { - "t": 359, - "s": [ - 107.641, - 52.249, - 0 - ] - } - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 28.921, - 41.814, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 1, - "k": [ - { - "i": { - "x": 0.833, - "y": 0.833 - }, - "o": { - "x": 0.167, - "y": 0.167 - }, - "t": 0, - "s": [ - { - "i": [ - [ - 12.562, - 10.319 - ], - [ - 1.021, - 4.886 - ], - [ - 0, - 0 - ], - [ - 2.176, - 2.871 - ], - [ - 4.097, - -2.491 - ], - [ - -4.076, - -13.929 - ], - [ - -7.484, - 2.59 - ] - ], - "o": [ - [ - -3.522, - -2.894 - ], - [ - -0.067, - -0.309 - ], - [ - 0, - 0 - ], - [ - -2.993, - -3.95 - ], - [ - -4.023, - 2.444 - ], - [ - 4.074, - 13.929 - ], - [ - 7.486, - -2.589 - ] - ], - "v": [ - [ - 9.704, - -3.18 - ], - [ - 2.873, - -13.072 - ], - [ - -5.333, - -9.365 - ], - [ - -6.223, - -19.564 - ], - [ - -18.243, - -21.303 - ], - [ - -18.15, - 3.643 - ], - [ - 0.893, - 21.204 - ] - ], - "c": true - } - ] - }, - { - "i": { - "x": 0.833, - "y": 0.833 - }, - "o": { - "x": 0.167, - "y": 0.167 - }, - "t": 90, - "s": [ - { - "i": [ - [ - 12.562, - 10.319 - ], - [ - 1.021, - 4.886 - ], - [ - 0, - 0 - ], - [ - 2.176, - 2.871 - ], - [ - 4.097, - -2.491 - ], - [ - -4.076, - -13.929 - ], - [ - -7.484, - 2.59 - ] - ], - "o": [ - [ - -3.522, - -2.894 - ], - [ - -0.067, - -0.309 - ], - [ - 0, - 0 - ], - [ - -2.993, - -3.95 - ], - [ - -4.023, - 2.444 - ], - [ - 4.074, - 13.929 - ], - [ - 7.486, - -2.589 - ] - ], - "v": [ - [ - 9.704, - -3.18 - ], - [ - 1.29, - -16.023 - ], - [ - -5.333, - -9.365 - ], - [ - -6.223, - -19.564 - ], - [ - -18.243, - -21.303 - ], - [ - -18.15, - 3.643 - ], - [ - 0.893, - 21.204 - ] - ], - "c": true - } - ] - }, - { - "i": { - "x": 0.833, - "y": 0.833 - }, - "o": { - "x": 0.167, - "y": 0.167 - }, - "t": 180, - "s": [ - { - "i": [ - [ - 12.562, - 10.319 - ], - [ - 1.021, - 4.886 - ], - [ - 0, - 0 - ], - [ - 2.176, - 2.871 - ], - [ - 4.097, - -2.491 - ], - [ - -4.076, - -13.929 - ], - [ - -7.484, - 2.59 - ] - ], - "o": [ - [ - -3.522, - -2.894 - ], - [ - -0.067, - -0.309 - ], - [ - 0, - 0 - ], - [ - -2.993, - -3.95 - ], - [ - -4.023, - 2.444 - ], - [ - 4.074, - 13.929 - ], - [ - 7.486, - -2.589 - ] - ], - "v": [ - [ - 9.704, - -3.18 - ], - [ - 2.873, - -13.072 - ], - [ - -5.333, - -9.365 - ], - [ - -6.223, - -19.564 - ], - [ - -18.243, - -21.303 - ], - [ - -18.15, - 3.643 - ], - [ - 0.893, - 21.204 - ] - ], - "c": true - } - ] - }, - { - "i": { - "x": 0.833, - "y": 0.833 - }, - "o": { - "x": 0.167, - "y": 0.167 - }, - "t": 270, - "s": [ - { - "i": [ - [ - 12.562, - 10.319 - ], - [ - 1.021, - 4.886 - ], - [ - 0, - 0 - ], - [ - 2.176, - 2.871 - ], - [ - 4.097, - -2.491 - ], - [ - -4.076, - -13.929 - ], - [ - -7.484, - 2.59 - ] - ], - "o": [ - [ - -3.522, - -2.894 - ], - [ - -0.067, - -0.309 - ], - [ - 0, - 0 - ], - [ - -2.993, - -3.95 - ], - [ - -4.023, - 2.444 - ], - [ - 4.074, - 13.929 - ], - [ - 7.486, - -2.589 - ] - ], - "v": [ - [ - 9.704, - -3.18 - ], - [ - 1.29, - -16.023 - ], - [ - -5.333, - -9.365 - ], - [ - -6.223, - -19.564 - ], - [ - -18.243, - -21.303 - ], - [ - -18.15, - 3.643 - ], - [ - 0.893, - 21.204 - ] - ], - "c": true - } - ] - }, - { - "t": 359, - "s": [ - { - "i": [ - [ - 12.562, - 10.319 - ], - [ - 1.021, - 4.886 - ], - [ - 0, - 0 - ], - [ - 2.176, - 2.871 - ], - [ - 4.097, - -2.491 - ], - [ - -4.076, - -13.929 - ], - [ - -7.484, - 2.59 - ] - ], - "o": [ - [ - -3.522, - -2.894 - ], - [ - -0.067, - -0.309 - ], - [ - 0, - 0 - ], - [ - -2.993, - -3.95 - ], - [ - -4.023, - 2.444 - ], - [ - 4.074, - 13.929 - ], - [ - 7.486, - -2.589 - ] - ], - "v": [ - [ - 9.704, - -3.18 - ], - [ - 2.873, - -13.072 - ], - [ - -5.333, - -9.365 - ], - [ - -6.223, - -19.564 - ], - [ - -18.243, - -21.303 - ], - [ - -18.15, - 3.643 - ], - [ - 0.893, - 21.204 - ] - ], - "c": true - } - ] - } - ], - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.635000011968, - 0.670999983245, - 0.705999995213, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 31.036, - 43.49 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - -0.391, - -0.526 - ], - [ - -0.26, - -0.588 - ], - [ - -0.117, - -0.629 - ], - [ - 0.011, - -0.635 - ], - [ - 0.079, - -0.003 - ], - [ - 0.002, - 0.079 - ], - [ - 0, - 0 - ], - [ - 0.143, - 0.595 - ], - [ - 0.782, - 0.929 - ], - [ - 0.483, - 0.344 - ], - [ - 0, - 0 - ], - [ - -0.101, - 0.151 - ], - [ - -0.151, - -0.101 - ], - [ - -0.003, - -0.002 - ] - ], - "o": [ - [ - 0.517, - 0.403 - ], - [ - 0.391, - 0.511 - ], - [ - 0.263, - 0.584 - ], - [ - 0.118, - 0.624 - ], - [ - 0.002, - 0.079 - ], - [ - -0.078, - 0.002 - ], - [ - 0, - 0 - ], - [ - -0.02, - -0.611 - ], - [ - -0.286, - -1.18 - ], - [ - -0.377, - -0.457 - ], - [ - 0, - 0 - ], - [ - -0.151, - -0.1 - ], - [ - 0.101, - -0.151 - ], - [ - 0.002, - 0.002 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - -1.257, - -3.404 - ], - [ - 0.112, - -2.004 - ], - [ - 1.092, - -0.349 - ], - [ - 1.664, - 1.476 - ], - [ - 1.825, - 3.369 - ], - [ - 1.687, - 3.516 - ], - [ - 1.541, - 3.378 - ], - [ - 1.541, - 3.369 - ], - [ - 1.295, - 1.556 - ], - [ - -0.329, - -1.651 - ], - [ - -1.624, - -2.856 - ], - [ - -1.644, - -2.87 - ], - [ - -1.735, - -3.326 - ], - [ - -1.279, - -3.417 - ], - [ - -1.271, - -3.412 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 1, - 1, - 1, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 25.205, - 7.727 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - 1.933, - -0.01 - ], - [ - 0.002, - 1.937 - ], - [ - -1.436, - 0.476 - ], - [ - -0.375, - 0.002 - ], - [ - 0, - -1.933 - ] - ], - "o": [ - [ - -0.004, - 1.933 - ], - [ - -1.937, - 0.002 - ], - [ - -0.001, - -1.513 - ], - [ - 0.357, - -0.116 - ], - [ - 1.933, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 3.506, - -0.005 - ], - [ - 0.005, - 3.506 - ], - [ - -3.505, - 0.002 - ], - [ - -1.101, - -3.33 - ], - [ - 0.005, - -3.508 - ], - [ - 3.506, - -0.008 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.783999992819, - 0.808000033509, - 0.838999968884, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 17.804, - 12.122 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 3", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - 0.08, - -0.23 - ], - [ - 0, - 0 - ], - [ - 0.13, - -0.26 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.35, - 0.09 - ], - [ - 0, - 0 - ], - [ - 0.04, - 2.14 - ], - [ - -0.23, - 0.58 - ], - [ - -0.01, - 0 - ], - [ - 0, - 0 - ], - [ - -0.09, - 0.16 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.01, - -0.55 - ], - [ - -1.69, - 0.04 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - -0.06, - 0.24 - ], - [ - 0, - 0 - ], - [ - -0.1, - 0.27 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.38, - 0 - ], - [ - 0, - 0 - ], - [ - -1.98, - -0.49 - ], - [ - -0.01, - -0.62 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.06, - -0.17 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.26, - 0.48 - ], - [ - 0.04, - 1.73 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 6.19, - 5.76 - ], - [ - 5.97, - 6.47 - ], - [ - 5.95, - 6.47 - ], - [ - 5.62, - 7.27 - ], - [ - -1.46, - 7.41 - ], - [ - -1.56, - 7.41 - ], - [ - -2.65, - 7.27 - ], - [ - -2.67, - 7.27 - ], - [ - -6.18, - 2.87 - ], - [ - -5.84, - 1.05 - ], - [ - -5.83, - 1.04 - ], - [ - -5.83, - 1.03 - ], - [ - -5.6, - 0.54 - ], - [ - -5.53, - 0.42 - ], - [ - -1.22, - -7.41 - ], - [ - -0.42, - -7.15 - ], - [ - -0.41, - -7.15 - ], - [ - -0.08, - -6.97 - ], - [ - -0.06, - -6.96 - ], - [ - 0.17, - -6.83 - ], - [ - -3.9, - 0.57 - ], - [ - -4.29, - 1.27 - ], - [ - -4.68, - 2.84 - ], - [ - -1.48, - 5.91 - ], - [ - -1.38, - 5.91 - ], - [ - -1.1, - 5.9 - ], - [ - 6.18, - 5.76 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.783999992819, - 0.808000033509, - 0.838999968884, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 21.883, - 8.05 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 4", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 3, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - -0.27 - ], - [ - 0, - 0 - ], - [ - 0.03, - -0.28 - ], - [ - 0.04, - -0.24 - ], - [ - 0.12, - -0.42 - ], - [ - 0.08, - -0.23 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.04, - 2.14 - ], - [ - -0.33, - 0.6 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23, - -0.1 - ], - [ - 0, - 0 - ], - [ - -0.33, - -4 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0.28 - ], - [ - -0.01, - 0.23 - ], - [ - -0.06, - 0.43 - ], - [ - -0.06, - 0.24 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -2.14, - 0.04 - ], - [ - -0.02, - -0.69 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.24, - 0.08 - ], - [ - 0, - 0 - ], - [ - 3.73, - 1.51 - ], - [ - 0.02, - 0.26 - ] - ], - "v": [ - [ - 6.165, - 3.135 - ], - [ - 6.165, - 3.235 - ], - [ - 6.125, - 4.065 - ], - [ - 6.045, - 4.775 - ], - [ - 5.775, - 6.045 - ], - [ - 5.555, - 6.755 - ], - [ - 5.535, - 6.755 - ], - [ - 3.645, - 6.795 - ], - [ - -2.095, - 6.905 - ], - [ - -2.105, - 6.905 - ], - [ - -2.185, - 6.905 - ], - [ - -6.145, - 3.105 - ], - [ - -5.665, - 1.145 - ], - [ - -5.595, - 1.025 - ], - [ - -2.855, - -3.965 - ], - [ - -1.205, - -6.945 - ], - [ - -0.495, - -6.685 - ], - [ - -0.475, - -6.675 - ], - [ - 6.135, - 2.335 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 22.298, - 7.765 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 5", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 4, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - -0.27 - ], - [ - 0, - 0 - ], - [ - 0.03, - -0.28 - ], - [ - 0.04, - -0.24 - ], - [ - 0.12, - -0.41 - ], - [ - 0.09, - -0.23 - ], - [ - 0.13, - -0.26 - ], - [ - 4.31, - 0 - ], - [ - 0, - 5.89 - ], - [ - -5.88, - 0 - ], - [ - -0.91, - -0.26 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.31, - -4.24 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0.28 - ], - [ - -0.01, - 0.23 - ], - [ - -0.07, - 0.43 - ], - [ - -0.07, - 0.24 - ], - [ - -0.1, - 0.27 - ], - [ - -1.67, - 3.68 - ], - [ - -5.88, - 0 - ], - [ - 0, - -5.88 - ], - [ - 0.99, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 3.84, - 1.4 - ], - [ - 0.02, - 0.26 - ] - ], - "v": [ - [ - 10.66, - -0.005 - ], - [ - 10.66, - 0.095 - ], - [ - 10.62, - 0.925 - ], - [ - 10.54, - 1.635 - ], - [ - 10.26, - 2.905 - ], - [ - 10.03, - 3.615 - ], - [ - 9.7, - 4.415 - ], - [ - 0, - 10.655 - ], - [ - -10.66, - -0.005 - ], - [ - 0, - -10.655 - ], - [ - 2.86, - -10.265 - ], - [ - 3.66, - -10.005 - ], - [ - 3.67, - -10.005 - ], - [ - 10.63, - -0.805 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.677999997606, - 0.713999968884, - 0.74900004069, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 17.803, - 10.905 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 6", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 5, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - -0.27 - ], - [ - 0, - 0 - ], - [ - 0.03, - -0.28 - ], - [ - 0.04, - -0.24 - ], - [ - 0.12, - -0.42 - ], - [ - 0.08, - -0.23 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.19, - -0.11 - ], - [ - 0.09, - -0.04 - ], - [ - 0.05, - -0.02 - ], - [ - 0, - 0 - ], - [ - 0.04, - -0.02 - ], - [ - 1.01, - 1.07 - ], - [ - 0.07, - 0.75 - ], - [ - -0.83, - 0.77 - ], - [ - -0.1, - 0.08 - ], - [ - -0.08, - 0.04 - ], - [ - -0.03, - 0.02 - ], - [ - 0, - 0 - ], - [ - -0.03, - 0.02 - ], - [ - -0.19, - 0.06 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23, - -0.1 - ], - [ - 0, - 0 - ], - [ - -0.33, - -4 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0.28 - ], - [ - -0.01, - 0.23 - ], - [ - -0.06, - 0.43 - ], - [ - -0.06, - 0.24 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.16, - 0.16 - ], - [ - -0.09, - 0.06 - ], - [ - -0.06, - 0.03 - ], - [ - 0, - 0 - ], - [ - -0.05, - 0.02 - ], - [ - -1.3, - 0.5 - ], - [ - -0.55, - -0.59 - ], - [ - -0.09, - -1.04 - ], - [ - 0.09, - -0.08 - ], - [ - 0.08, - -0.06 - ], - [ - 0.04, - -0.02 - ], - [ - 0, - 0 - ], - [ - 0.04, - -0.01 - ], - [ - 0.17, - -0.1 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.24, - 0.08 - ], - [ - 0, - 0 - ], - [ - 3.73, - 1.51 - ], - [ - 0.02, - 0.26 - ] - ], - "v": [ - [ - 7.077, - 2.684 - ], - [ - 7.077, - 2.784 - ], - [ - 7.037, - 3.613 - ], - [ - 6.957, - 4.324 - ], - [ - 6.687, - 5.594 - ], - [ - 6.467, - 6.303 - ], - [ - 6.447, - 6.303 - ], - [ - 4.557, - 6.344 - ], - [ - -1.183, - 6.454 - ], - [ - -1.193, - 6.454 - ], - [ - -1.723, - 6.863 - ], - [ - -2.003, - 7.023 - ], - [ - -2.163, - 7.104 - ], - [ - -2.173, - 7.104 - ], - [ - -2.303, - 7.163 - ], - [ - -6.133, - 6.284 - ], - [ - -7.063, - 4.214 - ], - [ - -5.953, - 1.333 - ], - [ - -5.673, - 1.094 - ], - [ - -5.433, - 0.934 - ], - [ - -5.333, - 0.874 - ], - [ - -5.333, - 0.863 - ], - [ - -5.233, - 0.814 - ], - [ - -4.683, - 0.574 - ], - [ - -1.933, - -4.417 - ], - [ - -0.293, - -7.396 - ], - [ - 0.417, - -7.137 - ], - [ - 0.437, - -7.126 - ], - [ - 7.047, - 1.883 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.33300000359, - 0.352999997606, - 0.368999974868, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 21.387, - 8.217 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 7", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 6, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 18.148, - 11.315 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 18.148, - 11.315 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.167 - ], - "y": [ - 0.167 - ] - }, - "t": 0, - "s": [ - 0 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 105, - "s": [ - -12 - ] - }, - { - "i": { - "x": [ - 0.833 - ], - "y": [ - 0.833 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 255, - "s": [ - 10 - ] - }, - { - "t": 359, - "s": [ - 0 - ] - } - ], - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 9", - "np": 6, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - 2.042, - -0.685 - ], - [ - 0, - 0 - ], - [ - 1.556, - 4.622 - ], - [ - 0, - 0.001 - ], - [ - 0, - 0 - ], - [ - -4.622, - 1.556 - ], - [ - -0.001, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0.611, - 2.065 - ], - [ - 0, - 0 - ], - [ - -4.621, - 1.556 - ], - [ - -0.001, - 0 - ], - [ - 0, - 0 - ], - [ - -1.556, - -4.621 - ], - [ - 0.001, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 14.519, - 18.051 - ], - [ - 11.954, - 22.98 - ], - [ - 7.843, - 24.357 - ], - [ - -3.343, - 18.807 - ], - [ - -3.344, - 18.805 - ], - [ - -13.574, - -11.579 - ], - [ - -8.024, - -22.766 - ], - [ - -8.022, - -22.767 - ], - [ - 1.511, - -25.913 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.426999978458, - 0.477999997606, - 0.528999956916, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 15.38, - 44.862 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 8", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 3, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 8, - "ty": 4, - "nm": "arkaBacak Outlines", - "parent": 7, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.538 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 25 - ] - }, - { - "i": { - "x": [ - 0.907 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.189 - ], - "y": [ - 0 - ] - }, - "t": 145, - "s": [ - -10 - ] - }, - { - "t": 359, - "s": [ - 25 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 43.819, - 54.408, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 13.351, - 8.202, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0.113, - 0.672 - ], - [ - 0, - 0 - ], - [ - 0.298, - -0.051 - ], - [ - 0, - 0 - ], - [ - -0.05, - -0.296 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.781, - 0.133 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.109, - 0.654 - ], - [ - 0, - 0.003 - ], - [ - 0.456, - 0.119 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - -0.052, - -0.297 - ], - [ - 0, - 0 - ], - [ - -0.297, - 0.051 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.134, - 0.781 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.653, - -0.109 - ], - [ - 0, - -0.002 - ], - [ - -0.079, - -0.466 - ], - [ - 0, - 0 - ], - [ - -0.66, - -0.176 - ] - ], - "v": [ - [ - 0.641, - -1.74 - ], - [ - 0.386, - -3.236 - ], - [ - -0.246, - -3.682 - ], - [ - -4.423, - -2.969 - ], - [ - -4.87, - -2.34 - ], - [ - -4.87, - -2.34 - ], - [ - -4.056, - 2.426 - ], - [ - -2.399, - 3.6 - ], - [ - 0.737, - 3.064 - ], - [ - 1.437, - 2.945 - ], - [ - 3.826, - 2.536 - ], - [ - 4.811, - 1.156 - ], - [ - 4.81, - 1.148 - ], - [ - 3.93, - 0.186 - ], - [ - 1.909, - -0.348 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 31.032, - 26.921 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -4.018, - -1.209 - ], - [ - -3.45, - -3.781 - ], - [ - 0, - 0 - ], - [ - 1.56, - 2.418 - ], - [ - 9.477, - -3.43 - ] - ], - "o": [ - [ - 4.018, - 1.209 - ], - [ - 0, - 0 - ], - [ - -0.801, - -4.157 - ], - [ - -1.559, - -2.418 - ], - [ - -9.477, - 3.431 - ] - ], - "v": [ - [ - -5.965, - 3.317 - ], - [ - 10.578, - 11.926 - ], - [ - 15.442, - 11.168 - ], - [ - 9.442, - -3.487 - ], - [ - -5.965, - -8.496 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.517999985639, - 0.552999997606, - 0.592000026329, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 15.692, - 12.176 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 9, - "ty": 4, - "nm": "arkaBilek Outlines", - "parent": 12, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 33.029, - 4.707, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 1.455, - 2.644, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - 0, - 0 - ], - [ - -0.301, - -0.016 - ], - [ - -0.841, - 0.158 - ], - [ - 0.723, - -0.976 - ], - [ - -0.269, - -0.445 - ], - [ - 0.772, - 0.571 - ], - [ - 0.445, - 0.064 - ], - [ - 0.878, - -0.223 - ], - [ - 0.053, - 0.301 - ], - [ - -0.003, - 0.045 - ] - ], - "o": [ - [ - 0.02, - -0.301 - ], - [ - 1.251, - 0.253 - ], - [ - 1.868, - -0.351 - ], - [ - -0.631, - 0.854 - ], - [ - 0.32, - 0.533 - ], - [ - -0.391, - -0.291 - ], - [ - -0.445, - -0.065 - ], - [ - -0.301, - 0.054 - ], - [ - -0.008, - -0.045 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - -3.486, - -2.13 - ], - [ - -2.909, - -2.644 - ], - [ - 0.996, - -2.449 - ], - [ - 2.764, - -0.105 - ], - [ - 2.234, - 1.458 - ], - [ - 1.076, - 2.229 - ], - [ - -0.152, - 1.598 - ], - [ - -2.562, - 1.891 - ], - [ - -3.202, - 1.443 - ], - [ - -3.211, - 1.308 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 3.736, - 3.05 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 10, - "ty": 4, - "nm": "arkPrmkUst Outlines", - "parent": 9, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.833 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - 23.823 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 81, - "s": [ - 0 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 175, - "s": [ - 23.823 - ] - }, - { - "i": { - "x": [ - 0.833 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 256, - "s": [ - -7.891 - ] - }, - { - "t": 359, - "s": [ - 23.823 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 5.178, - 2.116, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 2.062, - 3.406, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -1.157, - 0.548 - ], - [ - -0.385, - -0.384 - ], - [ - 0.815, - -1.119 - ], - [ - 0.759, - 0.478 - ] - ], - "o": [ - [ - 1.156, - -0.548 - ], - [ - 0.372, - 0.371 - ], - [ - -0.357, - 0.492 - ], - [ - -0.798, - -0.502 - ] - ], - "v": [ - [ - -1.654, - -0.614 - ], - [ - 2.439, - -1.991 - ], - [ - 0.257, - 1.7 - ], - [ - -1.794, - 1.896 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 3.061, - 2.625 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 11, - "ty": 4, - "nm": "arkPrmkAlt Outlines", - "parent": 9, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.833 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - -18.606 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 84, - "s": [ - 23.621 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 175, - "s": [ - -18.606 - ] - }, - { - "i": { - "x": [ - 0.833 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 258, - "s": [ - 23.621 - ] - }, - { - "t": 359, - "s": [ - -18.606 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 5.317, - 4.798, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 1.033, - 0.935, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -0.19, - -0.363 - ], - [ - 0.531, - -0.171 - ], - [ - 0.294, - 0.213 - ], - [ - -0.424, - 0.209 - ] - ], - "o": [ - [ - 0.544, - 1.039 - ], - [ - -0.4, - 0.13 - ], - [ - -0.334, - -0.243 - ], - [ - 0.288, - -0.141 - ] - ], - "v": [ - [ - 0.084, - -0.82 - ], - [ - 0.823, - 1.087 - ], - [ - -1.02, - -0.008 - ], - [ - -0.852, - -1.076 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.349000010771, - 0.380000005984, - 0.404000016755, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 1.603, - 1.467 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 12, - "ty": 4, - "nm": "arkaKol Outlines", - "parent": 7, - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 1, - "k": [ - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 0, - "s": [ - -6 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 90, - "s": [ - 10 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 180, - "s": [ - -6 - ] - }, - { - "i": { - "x": [ - 0.667 - ], - "y": [ - 1 - ] - }, - "o": { - "x": [ - 0.333 - ], - "y": [ - 0 - ] - }, - "t": 270, - "s": [ - 12 - ] - }, - { - "t": 359, - "s": [ - -6 - ] - } - ], - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 19.477, - 29.316, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 6.726, - 6.532, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [ - -2.298, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 2.51, - -0.399 - ], - [ - -0.624, - 3.866 - ] - ], - "o": [ - [ - 2.298, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -3.909, - 0.623 - ], - [ - 0.755, - -4.678 - ] - ], - "v": [ - [ - -8.01, - -6.532 - ], - [ - 15.428, - -4.138 - ], - [ - 16.477, - -0.159 - ], - [ - -8.824, - 5.909 - ], - [ - -15.853, - -0.981 - ] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [ - 0.517999985639, - 0.552999997606, - 0.592000026329, - 1 - ], - "ix": 4 - }, - "o": { - "a": 0, - "k": 100, - "ix": 5 - }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { - "a": 0, - "k": [ - 16.726, - 6.782 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "a": 0, - "k": 0, - "ix": 6 - }, - "o": { - "a": 0, - "k": 100, - "ix": 7 - }, - "sk": { - "a": 0, - "k": 0, - "ix": 4 - }, - "sa": { - "a": 0, - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 13, - "ty": 0, - "nm": "yildizlar", - "refId": "comp_0", - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 115.5, - 47.5, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 115.5, - 47.5, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "w": 231, - "h": 95, - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 14, - "ty": 0, - "nm": "yildiz", - "refId": "comp_1", - "sr": 1, - "ks": { - "o": { - "a": 0, - "k": 100, - "ix": 11 - }, - "r": { - "a": 0, - "k": 0, - "ix": 10 - }, - "p": { - "a": 0, - "k": [ - 115.5, - 47.5, - 0 - ], - "ix": 2 - }, - "a": { - "a": 0, - "k": [ - 115.5, - 47.5, - 0 - ], - "ix": 1 - }, - "s": { - "a": 0, - "k": [ - 100, - 100, - 100 - ], - "ix": 6 - } - }, - "ao": 0, - "w": 231, - "h": 95, - "ip": 0, - "op": 360, - "st": 0, - "bm": 0 - } - ], - "markers": [] -} \ No newline at end of file +{"v":"5.7.1","fr":60,"ip":0,"op":360,"w":231,"h":95,"nm":"astronautTamKemikli","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"yildizlar Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120.277,45.662,0],"ix":2},"a":{"a":0,"k":[103.779,38.709,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[4.932,-4.565]],"o":[[-7.53,3.723],[0,0]],"v":[[14.143,-16.486],[-6.643,-3.014]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":25,"ix":1}},{"n":"o","nm":"offset","v":{"a":1,"k":[{"i":{"x":[0.472],"y":[1]},"o":{"x":[0.287],"y":[0]},"t":111,"s":[-25]},{"t":153,"s":[-75]}],"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[69.562,91.92],"ix":2},"a":{"a":0,"k":[35.88,45.173],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.73],"y":[0]},"t":105,"s":[0]},{"t":178,"s":[-24.595]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.793,0],[0,-0.793],[0.793,0],[0,0.793]],"o":[[0.793,0],[0,0.793],[-0.793,0],[0,-0.793]],"v":[[0,-1.436],[1.436,0],[0,1.436],[-1.436,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.939,70.597],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":65,"s":[0,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":91,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":96,"s":[100,100]},{"t":122,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":61,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.574,0],[0,-0.575],[0.575,0],[0,0.575]],"o":[[0.575,0],[0,0.575],[-0.574,0],[0,-0.575]],"v":[[0,-1.041],[1.041,0],[0,1.041],[-1.041,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[206.267,1.291],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":223,"s":[0,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":249,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":254,"s":[100,100]},{"t":280,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":61,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.851,0],[0,-0.851],[0.852,0],[0,0.851]],"o":[[0.852,0],[0,0.851],[-0.851,0],[0,-0.851]],"v":[[0,-1.541],[1.541,0],[0,1.541],[-1.541,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[172.767,24.602],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":21,"s":[0,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":47,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":52,"s":[100,100]},{"t":78,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":61,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.851,0],[0,-0.851],[0.851,0],[0,0.851]],"o":[[0.851,0],[0,0.851],[-0.851,0],[0,-0.851]],"v":[[0,-1.541],[1.541,0],[0,1.541],[-1.541,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.767,12.602],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":134,"s":[0,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":160,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":165,"s":[100,100]},{"t":191,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":61,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.001,-3.536],[1.249,-1.25],[3.535,0],[1.249,1.25],[-0.001,3.536],[-1.251,1.25],[-3.536,0],[-1.251,-1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.937,73.633],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":105,"s":[0,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":135,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":150,"s":[100,100]},{"t":180,"s":[0,0]}],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[0]},{"t":180,"s":[180]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,-3.456],[1.222,-1.222],[3.456,0],[1.222,1.222],[0,3.456],[-1.222,1.222],[-3.456,0],[-1.222,-1.222]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.706,28.971],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":285,"s":[0,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":315,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":330,"s":[100,100]},{"t":359,"s":[0,0]}],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":285,"s":[0]},{"t":359,"s":[180]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"yildizlar Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[113.895,47.73,0],"ix":2},"a":{"a":0,"k":[100.367,31.507,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.793,0],[0,-0.793],[0.793,0],[0,0.793]],"o":[[0.793,0],[0,0.793],[-0.793,0],[0,-0.793]],"v":[[0,-1.436],[1.436,0],[0,1.436],[-1.436,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.332,61.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[50]},{"t":359,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.575,0],[0,-0.575],[0.575,0],[0,0.575]],"o":[[0.575,0],[0,0.575],[-0.575,0],[0,-0.575]],"v":[[0,-1.041],[1.041,0],[0,1.041],[-1.041,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.319,43.181],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[100]},{"t":359,"s":[65]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.574,0],[0,-0.575],[0.575,0],[0,0.575]],"o":[[0.575,0],[0,0.575],[-0.574,0],[0,-0.575]],"v":[[0,-1.041],[1.041,0],[0,1.041],[-1.041,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[199.442,13.054],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[50]},{"t":359,"s":[30]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.851,0],[0,-0.852],[0.852,0],[0,0.851]],"o":[[0.852,0],[0,0.851],[-0.851,0],[0,-0.852]],"v":[[0,-1.541],[1.54,0],[0,1.541],[-1.54,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[179.484,53.659],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[81]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[81]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[100]},{"t":359,"s":[81]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.851,0],[0,-0.851],[0.852,0],[0,0.851]],"o":[[0.852,0],[0,0.851],[-0.851,0],[0,-0.851]],"v":[[0,-1.541],[1.54,0],[0,1.541],[-1.54,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[165.524,1.791],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[60]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[60]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[100]},{"t":359,"s":[60]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.851,0],[0,-0.851],[0.851,0],[0,0.851]],"o":[[0.851,0],[0,0.851],[-0.851,0],[0,-0.851]],"v":[[0,-1.541],[1.541,0],[0,1.541],[-1.541,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.685999971278,0.709999952129,0.736999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.791,4.873],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[85]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[85]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[100]},{"t":359,"s":[85]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"onBilek Outlines","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33.999,1.729,0],"ix":2},"a":{"a":0,"k":[2.632,8.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.391,0.253],[-1.228,1.469],[0.014,-1.873],[-0.739,-0.312],[1.479,0.012],[0.614,-0.323],[1.009,-1.119],[0.34,0.326],[0.037,0.06]],"o":[[-0.249,-0.393],[1.634,-0.999],[1.59,-1.976],[-0.013,1.637],[0.882,0.373],[-0.752,-0.006],[-0.613,0.323],[-0.326,0.34],[-0.05,-0.049],[0,0]],"v":[[-5.258,1.368],[-5.004,0.202],[-0.682,-3.523],[3.867,-2.542],[4.626,-0.113],[3.882,1.898],[1.777,2.225],[-1.644,5.15],[-2.85,5.173],[-2.982,5.01]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.757,5.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"onParkmakAlt Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-13.21]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":170,"s":[8.158]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":264,"s":[-26.116]},{"t":359,"s":[0]}],"ix":10},"p":{"a":0,"k":[9.937,6.549,0],"ix":2},"a":{"a":0,"k":[1.542,1.443,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.567,-0.281],[0.506,-0.695],[0.559,0],[-0.341,0.646]],"o":[[1.621,0.801],[-0.381,0.525],[-0.637,0.001],[0.229,-0.437]],"v":[[-0.71,-0.975],[1.942,0.731],[-1.347,1.037],[-2.107,-0.444]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.698,1.506],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"onParmakUst Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[22.093]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":170,"s":[-11.458]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":264,"s":[22.093]},{"t":359,"s":[0]}],"ix":10},"p":{"a":0,"k":[7.276,3.344,0],"ix":2},"a":{"a":0,"k":[3.33,6.926,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.944,1.734],[-0.828,-0.129],[-0.001,-2.134],[1.381,-0.094]],"o":[[0.944,-1.734],[0.8,0.125],[0,0.936],[-1.449,0.098]],"v":[[-1.854,1.104],[1.998,-4.328],[2.628,2.252],[0.25,4.359]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.049,4.707],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"onKol Outlines","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[16]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[-6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[16]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[-6]},{"t":359,"s":[16]}],"ix":10},"p":{"a":0,"k":[18.105,29.056,0],"ix":2},"a":{"a":0,"k":[8.595,21.521,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.008,0.309],[0,0],[0,0],[4.097,-2.491],[0.396,-2.433],[-3.825,-2.121]],"o":[[0,0],[0,0],[0,0],[0,0],[-1.449,0.88],[-0.238,1.46],[6.975,3.868]],"v":[[-1.18,10.577],[7.943,-0.391],[17.094,-11.792],[14.423,-15.771],[-14.09,-1.361],[-16.857,3.628],[-13.135,11.904]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.635000011968,0.670999983245,0.705999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.345,16.021],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"onAyakKalca Outlines","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[0.992]},"o":{"x":[0.412],"y":[0]},"t":0,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[-0.009]},"t":167,"s":[10]},{"t":359,"s":[-5]}],"ix":10},"p":{"a":0,"k":[28.32,55.049,0],"ix":2},"a":{"a":0,"k":[12.912,15.937,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.842,0.331],[3.03,-0.355],[4.888,-2.598],[-0.979,-1.61],[-4.734,1.638],[-7.77,1.233],[0,4.341]],"o":[[-5.686,-0.663],[-3.03,0.357],[-8.171,4.34],[3.534,5.812],[7.485,-2.589],[3.884,-0.615],[0,-4.085]],"v":[[16.911,-12.773],[1.656,-12.585],[-15.617,-7.764],[-20.494,6.419],[-7.156,11.799],[16.721,2.008],[23.788,-5.542]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.635000011968,0.670999983245,0.705999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.037,13.687],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"onAyakUC Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.713],"y":[1]},"o":{"x":[0.484],"y":[0.113]},"t":0,"s":[0]},{"i":{"x":[0.564],"y":[1]},"o":{"x":[0.286],"y":[0]},"t":167,"s":[32]},{"t":360,"s":[0]}],"ix":10},"p":{"a":0,"k":[38.83,8.344,0],"ix":2},"a":{"a":0,"k":[8.234,7.999,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.187,0.838],[0,0],[0.174,-0.246],[0,0],[0,0],[-0.246,-0.175],[0,0],[-0.976,1.377],[0,0],[0,0],[0,0],[1.155,0.818],[0,0],[0.869,-0.506],[0,0]],"o":[[0,0],[-0.245,-0.174],[0,0],[0,0],[-0.174,0.246],[0,0],[1.377,0.974],[0,0],[0,0],[0,0],[0.82,-1.156],[0,-0.001],[-0.819,-0.582],[0,0],[-1.256,0.73]],"v":[[-1.027,-5.874],[-4.165,-8.096],[-4.925,-7.967],[-4.926,-7.965],[-10.856,0.406],[-10.726,1.167],[-1.826,7.469],[2.434,6.74],[6.349,1.214],[7.229,-0.027],[10.21,-4.238],[9.602,-7.812],[9.601,-7.813],[6.829,-7.937],[2.982,-5.697]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[32.689,17.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.685,0.662],[0.683,-5.809],[-4.046,0.641],[0,0],[0,0]],"o":[[-2.726,-0.318],[-0.656,5.568],[7.771,-1.233],[0,0],[0,0]],"v":[[-3.912,-8.469],[-13.358,-1.73],[-5.302,6.593],[7.76,8.787],[14.014,0.449]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.635000011968,0.670999983245,0.705999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[14.264,9.037],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"govde Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.092]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.335],"y":[0]},"t":90,"s":[-4]},{"i":{"x":[0.735],"y":[0.855]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[4]},{"t":359,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.275,"y":0.402},"t":0,"s":[107.641,52.249,0],"to":[0,0.958,0],"ti":[0,0.708,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":105,"s":[107.641,57.999,0],"to":[0,-0.708,0],"ti":[0,0.958,0]},{"i":{"x":0.725,"y":0.482},"o":{"x":0.323,"y":0},"t":255,"s":[107.641,47.999,0],"to":[0,-0.958,0],"ti":[0,-0.708,0]},{"t":359,"s":[107.641,52.249,0]}],"ix":2},"a":{"a":0,"k":[28.921,41.814,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[12.562,10.319],[1.021,4.886],[0,0],[2.176,2.871],[4.097,-2.491],[-4.076,-13.929],[-7.484,2.59]],"o":[[-3.522,-2.894],[-0.067,-0.309],[0,0],[-2.993,-3.95],[-4.023,2.444],[4.074,13.929],[7.486,-2.589]],"v":[[9.704,-3.18],[2.873,-13.072],[-5.333,-9.365],[-6.223,-19.564],[-18.243,-21.303],[-18.15,3.643],[0.893,21.204]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":90,"s":[{"i":[[12.562,10.319],[1.021,4.886],[0,0],[2.176,2.871],[4.097,-2.491],[-4.076,-13.929],[-7.484,2.59]],"o":[[-3.522,-2.894],[-0.067,-0.309],[0,0],[-2.993,-3.95],[-4.023,2.444],[4.074,13.929],[7.486,-2.589]],"v":[[9.704,-3.18],[1.29,-16.023],[-5.333,-9.365],[-6.223,-19.564],[-18.243,-21.303],[-18.15,3.643],[0.893,21.204]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":180,"s":[{"i":[[12.562,10.319],[1.021,4.886],[0,0],[2.176,2.871],[4.097,-2.491],[-4.076,-13.929],[-7.484,2.59]],"o":[[-3.522,-2.894],[-0.067,-0.309],[0,0],[-2.993,-3.95],[-4.023,2.444],[4.074,13.929],[7.486,-2.589]],"v":[[9.704,-3.18],[2.873,-13.072],[-5.333,-9.365],[-6.223,-19.564],[-18.243,-21.303],[-18.15,3.643],[0.893,21.204]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":270,"s":[{"i":[[12.562,10.319],[1.021,4.886],[0,0],[2.176,2.871],[4.097,-2.491],[-4.076,-13.929],[-7.484,2.59]],"o":[[-3.522,-2.894],[-0.067,-0.309],[0,0],[-2.993,-3.95],[-4.023,2.444],[4.074,13.929],[7.486,-2.589]],"v":[[9.704,-3.18],[1.29,-16.023],[-5.333,-9.365],[-6.223,-19.564],[-18.243,-21.303],[-18.15,3.643],[0.893,21.204]],"c":true}]},{"t":359,"s":[{"i":[[12.562,10.319],[1.021,4.886],[0,0],[2.176,2.871],[4.097,-2.491],[-4.076,-13.929],[-7.484,2.59]],"o":[[-3.522,-2.894],[-0.067,-0.309],[0,0],[-2.993,-3.95],[-4.023,2.444],[4.074,13.929],[7.486,-2.589]],"v":[[9.704,-3.18],[2.873,-13.072],[-5.333,-9.365],[-6.223,-19.564],[-18.243,-21.303],[-18.15,3.643],[0.893,21.204]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.635000011968,0.670999983245,0.705999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.036,43.49],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.391,-0.526],[-0.26,-0.588],[-0.117,-0.629],[0.011,-0.635],[0.079,-0.003],[0.002,0.079],[0,0],[0.143,0.595],[0.782,0.929],[0.483,0.344],[0,0],[-0.101,0.151],[-0.151,-0.101],[-0.003,-0.002]],"o":[[0.517,0.403],[0.391,0.511],[0.263,0.584],[0.118,0.624],[0.002,0.079],[-0.078,0.002],[0,0],[-0.02,-0.611],[-0.286,-1.18],[-0.377,-0.457],[0,0],[-0.151,-0.1],[0.101,-0.151],[0.002,0.002],[0,0]],"v":[[-1.257,-3.404],[0.112,-2.004],[1.092,-0.349],[1.664,1.476],[1.825,3.369],[1.687,3.516],[1.541,3.378],[1.541,3.369],[1.295,1.556],[-0.329,-1.651],[-1.624,-2.856],[-1.644,-2.87],[-1.735,-3.326],[-1.279,-3.417],[-1.271,-3.412]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25.205,7.727],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.933,-0.01],[0.002,1.937],[-1.436,0.476],[-0.375,0.002],[0,-1.933]],"o":[[-0.004,1.933],[-1.937,0.002],[-0.001,-1.513],[0.357,-0.116],[1.933,0],[0,0]],"v":[[3.506,-0.005],[0.005,3.506],[-3.505,0.002],[-1.101,-3.33],[0.005,-3.508],[3.506,-0.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.783999992819,0.808000033509,0.838999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.804,12.122],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.08,-0.23],[0,0],[0.13,-0.26],[0,0],[0,0],[0.35,0.09],[0,0],[0.04,2.14],[-0.23,0.58],[-0.01,0],[0,0],[-0.09,0.16],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.01,-0.55],[-1.69,0.04],[0,0],[0,0],[0,0]],"o":[[-0.06,0.24],[0,0],[-0.1,0.27],[0,0],[0,0],[-0.38,0],[0,0],[-1.98,-0.49],[-0.01,-0.62],[0,0],[0,0],[0.06,-0.17],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.26,0.48],[0.04,1.73],[0,0],[0,0],[0,0],[0,0]],"v":[[6.19,5.76],[5.97,6.47],[5.95,6.47],[5.62,7.27],[-1.46,7.41],[-1.56,7.41],[-2.65,7.27],[-2.67,7.27],[-6.18,2.87],[-5.84,1.05],[-5.83,1.04],[-5.83,1.03],[-5.6,0.54],[-5.53,0.42],[-1.22,-7.41],[-0.42,-7.15],[-0.41,-7.15],[-0.08,-6.97],[-0.06,-6.96],[0.17,-6.83],[-3.9,0.57],[-4.29,1.27],[-4.68,2.84],[-1.48,5.91],[-1.38,5.91],[-1.1,5.9],[6.18,5.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.783999992819,0.808000033509,0.838999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.883,8.05],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.27],[0,0],[0.03,-0.28],[0.04,-0.24],[0.12,-0.42],[0.08,-0.23],[0,0],[0,0],[0,0],[0,0],[0,0],[0.04,2.14],[-0.33,0.6],[0,0],[0,0],[0,0],[-0.23,-0.1],[0,0],[-0.33,-4]],"o":[[0,0],[0,0.28],[-0.01,0.23],[-0.06,0.43],[-0.06,0.24],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.14,0.04],[-0.02,-0.69],[0,0],[0,0],[0,0],[0.24,0.08],[0,0],[3.73,1.51],[0.02,0.26]],"v":[[6.165,3.135],[6.165,3.235],[6.125,4.065],[6.045,4.775],[5.775,6.045],[5.555,6.755],[5.535,6.755],[3.645,6.795],[-2.095,6.905],[-2.105,6.905],[-2.185,6.905],[-6.145,3.105],[-5.665,1.145],[-5.595,1.025],[-2.855,-3.965],[-1.205,-6.945],[-0.495,-6.685],[-0.475,-6.675],[6.135,2.335]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.298,7.765],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.27],[0,0],[0.03,-0.28],[0.04,-0.24],[0.12,-0.41],[0.09,-0.23],[0.13,-0.26],[4.31,0],[0,5.89],[-5.88,0],[-0.91,-0.26],[0,0],[0,0],[-0.31,-4.24]],"o":[[0,0],[0,0.28],[-0.01,0.23],[-0.07,0.43],[-0.07,0.24],[-0.1,0.27],[-1.67,3.68],[-5.88,0],[0,-5.88],[0.99,0],[0,0],[0,0],[3.84,1.4],[0.02,0.26]],"v":[[10.66,-0.005],[10.66,0.095],[10.62,0.925],[10.54,1.635],[10.26,2.905],[10.03,3.615],[9.7,4.415],[0,10.655],[-10.66,-0.005],[0,-10.655],[2.86,-10.265],[3.66,-10.005],[3.67,-10.005],[10.63,-0.805]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.713999968884,0.74900004069,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.803,10.905],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.27],[0,0],[0.03,-0.28],[0.04,-0.24],[0.12,-0.42],[0.08,-0.23],[0,0],[0,0],[0,0],[0,0],[0.19,-0.11],[0.09,-0.04],[0.05,-0.02],[0,0],[0.04,-0.02],[1.01,1.07],[0.07,0.75],[-0.83,0.77],[-0.1,0.08],[-0.08,0.04],[-0.03,0.02],[0,0],[-0.03,0.02],[-0.19,0.06],[0,0],[0,0],[-0.23,-0.1],[0,0],[-0.33,-4]],"o":[[0,0],[0,0.28],[-0.01,0.23],[-0.06,0.43],[-0.06,0.24],[0,0],[0,0],[0,0],[0,0],[-0.16,0.16],[-0.09,0.06],[-0.06,0.03],[0,0],[-0.05,0.02],[-1.3,0.5],[-0.55,-0.59],[-0.09,-1.04],[0.09,-0.08],[0.08,-0.06],[0.04,-0.02],[0,0],[0.04,-0.01],[0.17,-0.1],[0,0],[0,0],[0.24,0.08],[0,0],[3.73,1.51],[0.02,0.26]],"v":[[7.077,2.684],[7.077,2.784],[7.037,3.613],[6.957,4.324],[6.687,5.594],[6.467,6.303],[6.447,6.303],[4.557,6.344],[-1.183,6.454],[-1.193,6.454],[-1.723,6.863],[-2.003,7.023],[-2.163,7.104],[-2.173,7.104],[-2.303,7.163],[-6.133,6.284],[-7.063,4.214],[-5.953,1.333],[-5.673,1.094],[-5.433,0.934],[-5.333,0.874],[-5.333,0.863],[-5.233,0.814],[-4.683,0.574],[-1.933,-4.417],[-0.293,-7.396],[0.417,-7.137],[0.437,-7.126],[7.047,1.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.33300000359,0.352999997606,0.368999974868,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.387,8.217],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[18.148,11.315],"ix":2},"a":{"a":0,"k":[18.148,11.315],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":105,"s":[-12]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":255,"s":[10]},{"t":359,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":6,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.042,-0.685],[0,0],[1.556,4.622],[0,0.001],[0,0],[-4.622,1.556],[-0.001,0],[0,0]],"o":[[0.611,2.065],[0,0],[-4.621,1.556],[-0.001,0],[0,0],[-1.556,-4.621],[0.001,0],[0,0],[0,0]],"v":[[14.519,18.051],[11.954,22.98],[7.843,24.357],[-3.343,18.807],[-3.344,18.805],[-13.574,-11.579],[-8.024,-22.766],[-8.022,-22.767],[1.511,-25.913]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.426999978458,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.38,44.862],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"arkaBacak Outlines","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.538],"y":[0]},"t":0,"s":[25]},{"i":{"x":[0.907],"y":[1]},"o":{"x":[0.189],"y":[0]},"t":145,"s":[-10]},{"t":359,"s":[25]}],"ix":10},"p":{"a":0,"k":[43.819,54.408,0],"ix":2},"a":{"a":0,"k":[13.351,8.202,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.113,0.672],[0,0],[0.298,-0.051],[0,0],[-0.05,-0.296],[0,0],[0,0],[-0.781,0.133],[0,0],[0,0],[0,0],[0.109,0.654],[0,0.003],[0.456,0.119],[0,0]],"o":[[0,0],[-0.052,-0.297],[0,0],[-0.297,0.051],[0,0],[0,0],[0.134,0.781],[0,0],[0,0],[0,0],[0.653,-0.109],[0,-0.002],[-0.079,-0.466],[0,0],[-0.66,-0.176]],"v":[[0.641,-1.74],[0.386,-3.236],[-0.246,-3.682],[-4.423,-2.969],[-4.87,-2.34],[-4.87,-2.34],[-4.056,2.426],[-2.399,3.6],[0.737,3.064],[1.437,2.945],[3.826,2.536],[4.811,1.156],[4.81,1.148],[3.93,0.186],[1.909,-0.348]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.032,26.921],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.018,-1.209],[-3.45,-3.781],[0,0],[1.56,2.418],[9.477,-3.43]],"o":[[4.018,1.209],[0,0],[-0.801,-4.157],[-1.559,-2.418],[-9.477,3.431]],"v":[[-5.965,3.317],[10.578,11.926],[15.442,11.168],[9.442,-3.487],[-5.965,-8.496]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.517999985639,0.552999997606,0.592000026329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.692,12.176],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"arkaBilek Outlines","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33.029,4.707,0],"ix":2},"a":{"a":0,"k":[1.455,2.644,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.301,-0.016],[-0.841,0.158],[0.723,-0.976],[-0.269,-0.445],[0.772,0.571],[0.445,0.064],[0.878,-0.223],[0.053,0.301],[-0.003,0.045]],"o":[[0.02,-0.301],[1.251,0.253],[1.868,-0.351],[-0.631,0.854],[0.32,0.533],[-0.391,-0.291],[-0.445,-0.065],[-0.301,0.054],[-0.008,-0.045],[0,0]],"v":[[-3.486,-2.13],[-2.909,-2.644],[0.996,-2.449],[2.764,-0.105],[2.234,1.458],[1.076,2.229],[-0.152,1.598],[-2.562,1.891],[-3.202,1.443],[-3.211,1.308]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.736,3.05],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"arkPrmkUst Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[23.823]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":81,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":175,"s":[23.823]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":256,"s":[-7.891]},{"t":359,"s":[23.823]}],"ix":10},"p":{"a":0,"k":[5.178,2.116,0],"ix":2},"a":{"a":0,"k":[2.062,3.406,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.157,0.548],[-0.385,-0.384],[0.815,-1.119],[0.759,0.478]],"o":[[1.156,-0.548],[0.372,0.371],[-0.357,0.492],[-0.798,-0.502]],"v":[[-1.654,-0.614],[2.439,-1.991],[0.257,1.7],[-1.794,1.896]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.061,2.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"arkPrmkAlt Outlines","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[-18.606]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":84,"s":[23.621]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":175,"s":[-18.606]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":258,"s":[23.621]},{"t":359,"s":[-18.606]}],"ix":10},"p":{"a":0,"k":[5.317,4.798,0],"ix":2},"a":{"a":0,"k":[1.033,0.935,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.19,-0.363],[0.531,-0.171],[0.294,0.213],[-0.424,0.209]],"o":[[0.544,1.039],[-0.4,0.13],[-0.334,-0.243],[0.288,-0.141]],"v":[[0.084,-0.82],[0.823,1.087],[-1.02,-0.008],[-0.852,-1.076]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.349000010771,0.380000005984,0.404000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.603,1.467],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"arkaKol Outlines","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[-6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[-6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":270,"s":[12]},{"t":359,"s":[-6]}],"ix":10},"p":{"a":0,"k":[19.477,29.316,0],"ix":2},"a":{"a":0,"k":[6.726,6.532,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.298,0],[0,0],[0,0],[2.51,-0.399],[-0.624,3.866]],"o":[[2.298,0],[0,0],[0,0],[-3.909,0.623],[0.755,-4.678]],"v":[[-8.01,-6.532],[15.428,-4.138],[16.477,-0.159],[-8.824,5.909],[-15.853,-0.981]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.517999985639,0.552999997606,0.592000026329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.726,6.782],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":0,"nm":"yildizlar","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[115.5,47.5,0],"ix":2},"a":{"a":0,"k":[115.5,47.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":231,"h":95,"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":0,"nm":"yildiz","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[115.5,47.5,0],"ix":2},"a":{"a":0,"k":[115.5,47.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":231,"h":95,"ip":0,"op":360,"st":0,"bm":0}],"markers":[]} \ No newline at end of file From f72cff132972deadf79bc886618bbc578ccd62af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 7 Jun 2024 03:41:46 +0300 Subject: [PATCH 033/100] wip dotLottie --- compottie-dot/build.gradle.kts | 189 +++++++ .../alexzhirkevich/compottie/DotLottie.kt | 8 + .../compottie/DotLottieCompositionSpec.kt | 48 ++ .../alexzhirkevich/compottie/ZipEntry.kt | 138 +++++ .../alexzhirkevich/compottie/ZipFiles.kt | 502 ++++++++++++++++++ .../alexzhirkevich/compottie/Pako.js.kt | 58 ++ .../compottie/DotLottie.jvmNative.kt | 21 + .../internal/platform/Platform.android.kt | 5 + .../compottie/LottieComposition.kt | 71 ++- .../alexzhirkevich/compottie/LottiePainter.kt | 70 +-- .../compottie/assets/LottieAssetManager.kt | 2 +- .../compottie/internal/LottieData.kt | 2 +- .../compottie/internal/LottieJson.kt | 8 +- .../internal/animation/AnimatedColor.kt | 37 +- .../internal/animation/AnimatedNumber.kt | 64 +++ .../internal/animation/AnimatedShape.kt | 33 +- .../internal/animation/AnimatedTransform.kt | 8 +- .../internal/animation/AnimatedValue.kt | 51 -- .../internal/animation/AnimatedVector2.kt | 21 +- .../internal/animation/RepeaterTransform.kt | 14 +- .../internal/content/ContentGroup.kt | 1 + .../compottie/internal/effects/EffectValue.kt | 6 +- .../compottie/internal/helpers/Mask.kt | 6 +- .../compottie/internal/helpers/StrokeDash.kt | 4 +- .../compottie/internal/helpers/Transform.kt | 12 +- .../internal/helpers/text/TextFollowPath.kt | 12 +- .../helpers/text/TextRangeSelector.kt | 16 +- .../internal/helpers/text/TextStyle.kt | 26 +- .../internal/layers/BaseCompositionLayer.kt | 5 +- .../compottie/internal/layers/BaseLayer.kt | 5 +- .../internal/layers/CompositionLayer.kt | 4 +- .../internal/layers/PrecompositionLayer.kt | 5 +- .../compottie/internal/layers/ShapeLayer.kt | 1 + .../compottie/internal/layers/TextLayer.kt | 62 ++- .../internal/platform/PlatformPath.kt | 3 +- .../internal/platform/PlatformShader.kt | 16 +- .../internal/shapes/BaseStrokeShape.kt | 8 +- .../compottie/internal/shapes/EllipseShape.kt | 1 + .../compottie/internal/shapes/FillShape.kt | 6 +- .../internal/shapes/GradientFillShape.kt | 8 +- .../internal/shapes/GradientStrokeShape.kt | 10 +- .../internal/shapes/PolystarShape.kt | 16 +- .../compottie/internal/shapes/RectShape.kt | 4 +- .../internal/shapes/RepeaterShape.kt | 6 +- .../compottie/internal/shapes/RoundShape.kt | 4 +- .../compottie/internal/shapes/Shape.kt | 2 +- .../internal/shapes/SolidStrokeShape.kt | 6 +- .../internal/shapes/TransformShape.kt | 10 +- .../internal/shapes/TrimPathShape.kt | 10 +- .../xcshareddata/xcschemes/iosApp.xcscheme | 6 +- example/shared/build.gradle.kts | 1 + .../files/dotlottie/dot.lottie | Bin 0 -> 12746 bytes .../composeResources/files/people.json | 1 + .../composeResources/files/test.json | 1 + .../composeResources/files/walkthrough.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 14 +- example/shared/src/iosMain/kotlin/main.ios.kt | 2 +- gradle/libs.versions.toml | 4 + kotlin-js-store/yarn.lock | 17 + settings.gradle.kts | 1 + 60 files changed, 1378 insertions(+), 295 deletions(-) create mode 100644 compottie-dot/build.gradle.kts create mode 100644 compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt create mode 100644 compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt create mode 100644 compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt create mode 100644 compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt create mode 100644 compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt create mode 100644 compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt create mode 100644 example/shared/src/commonMain/composeResources/files/dotlottie/dot.lottie create mode 100644 example/shared/src/commonMain/composeResources/files/people.json create mode 100644 example/shared/src/commonMain/composeResources/files/walkthrough.json diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts new file mode 100644 index 00000000..4b736bde --- /dev/null +++ b/compottie-dot/build.gradle.kts @@ -0,0 +1,189 @@ +@file:Suppress("DSL_SCOPE_VIOLATION") + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import java.util.Base64 + +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.android.library) + alias(libs.plugins.compose) + alias(libs.plugins.composeCompiler) + alias(libs.plugins.dokka) + alias(libs.plugins.serialization) + id("maven-publish") + id("signing") +} + +group = "io.github.alexzhirkevich" +version = libs.versions.compottie.get() + +val _jvmTarget = findProperty("jvmTarget") as String + +kotlin { + + @OptIn(ExperimentalKotlinGradlePluginApi::class) + applyDefaultHierarchyTemplate { + common { + group("jvmNative") { + withAndroidTarget() + withJvm() + withIos() + withMacos() + } + group("web"){ + withJs() + withWasmJs() + } + } + } + + androidTarget{ + publishLibraryVariants("release") + compilations.all { + kotlinOptions { + jvmTarget = _jvmTarget + } + } + } + + + iosArm64() + iosX64() + iosSimulatorArm64() + + wasmJs(){ + browser() + } + js(IR){ + browser() + } + jvm("desktop"){ + compilations.all { + kotlinOptions { + jvmTarget = _jvmTarget + } + } + } + + macosArm64() + macosX64() + + + sourceSets { + commonMain.dependencies { + implementation(compose.runtime) + implementation(libs.serialization) + implementation(libs.okio) + implementation(libs.okio.fakefilesystem) + implementation(project(":compottie")) + + } + + val desktopMain by getting + + val webMain by getting { + dependencies { + implementation(npm("pako","2.1.0")) + } + } + + jsMain. dependencies { +// implementation(npm("pako","2.1.0")) + implementation(npm("browserify-zlib","0.2.0")) + } + + val skikoMain by creating { + dependsOn(commonMain.get()) + desktopMain.dependsOn(this) + iosMain.get().dependsOn(this) + macosMain.get().dependsOn(this) + jsMain.get().dependsOn(this) + webMain.dependsOn(this) + } + + + } +} + +android { + namespace = "io.github.alexzhirkevich.compottie" + compileSdk = 34 + defaultConfig { + minSdk = 21 + } + + compileOptions { + sourceCompatibility = JavaVersion.toVersion(_jvmTarget) + targetCompatibility = JavaVersion.toVersion(_jvmTarget) + } +} + +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} +// https://github.com/gradle/gradle/issues/26091 +val signingTasks = tasks.withType() +tasks.withType().configureEach { + dependsOn(signingTasks) +} + +publishing { + if (System.getenv("OSSRH_PASSWORD")!=null) { + + repositories { + maven { + val releasesRepoUrl = + "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + val snapshotsRepoUrl = + "https://s01.oss.sonatype.org/content/repositories/snapshots/" + url = if (version.toString().contains("dev")) { + uri(snapshotsRepoUrl) + } else { + uri(releasesRepoUrl) + } + credentials { + username = System.getenv("OSSRH_USERNAME") + password = System.getenv("OSSRH_PASSWORD") + } + } + } + } + + publications.withType { + artifact(javadocJar) + pom { + name.set("Compottie") + description.set("Compose Multiplatform lottie animation") + url.set("https://github.com/alexzhirkevich/compottie") + + licenses { + license { + name.set("MIT") + url.set("https://opensource.org/licenses/MIT") + } + } + developers { + developer { + id.set("alexzhirkevich") + name.set("Alexander Zhirkevich") + email.set("sasha.zhirkevich@gmail.com") + } + } + scm { + url.set("https://github.com/alexzhirkevich/compottie") + connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + } + } + } +} + +if (System.getenv("GPG_KEY") != null) { + signing { + useInMemoryPgpKeys( + Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), + System.getenv("GPG_KEY_PWD"), + ) + sign(publishing.publications) + } +} \ No newline at end of file diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt new file mode 100644 index 00000000..076fb588 --- /dev/null +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie + +import okio.FileSystem +import okio.Path + +internal expect class ZipFileSystem(encoded : ByteArray, parent : FileSystem, path : Path) { + suspend fun read(entry: ZipEntry) : ByteArray +} \ No newline at end of file diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt new file mode 100644 index 00000000..5b4229c9 --- /dev/null +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -0,0 +1,48 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Stable +import okio.Path.Companion.toPath +import okio.fakefilesystem.FakeFileSystem +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi + +@Stable +fun LottieCompositionSpec.Companion.DotLottie( + archive: suspend () -> ByteArray +) : LottieCompositionSpec = DotLottieCompositionSpec(archive) + + +private class DotLottieCompositionSpec( + private val archive : suspend () -> ByteArray +) : LottieCompositionSpec { + + @OptIn(ExperimentalEncodingApi::class) + override suspend fun load(): LottieComposition { + + val fileSystem = FakeFileSystem() + val path = "anim".toPath() + + val bytes = archive() + + fileSystem.write(path){ + write(bytes) + } + + val entries = fileSystem.listZipEntries(path) + + val zipSystem = ZipFileSystem(bytes, fileSystem, path) + + val animations = entries[("/animations".toPath())]!!.children + val animBytes = zipSystem.read(animations.first()) + println(animBytes.decodeToString()) + return LottieComposition.parse(animBytes.decodeToString()) + } + + override fun hashCode(): Int { + return 31 * archive.hashCode() + } + + override fun equals(other: Any?): Boolean { + return (other as? DotLottieCompositionSpec)?.archive == archive + } +} diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt new file mode 100644 index 00000000..e61d358d --- /dev/null +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt @@ -0,0 +1,138 @@ +package io.github.alexzhirkevich.compottie + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import okio.FileMetadata +import okio.Path + +/** + * This class prefers NTFS timestamps, then extended timestamps, then the base ZIP timestamps. + */ +internal data class ZipEntry( + /** + * Absolute path of this entry. If the raw name on disk contains relative paths like `..`, they + * are not present in this path. + */ + val canonicalPath: Path, + + /** True if this entry is a directory. When encoded directory entries' names end with `/`. */ + val isDirectory: Boolean = false, + + /** The comment on this entry. Empty if there is no comment. */ + val comment: String = "", + + /** The CRC32 of the uncompressed data, or -1 if not set. */ + val crc: Long = -1L, + + /** The compressed size in bytes, or -1 if unknown. */ + val compressedSize: Long = -1L, + + /** The uncompressed size in bytes, or -1 if unknown. */ + val size: Long = -1L, + + /** Either [COMPRESSION_METHOD_DEFLATED] or [COMPRESSION_METHOD_STORED]. */ + val compressionMethod: Int = -1, + + val offset: Long = -1L, + + /** + * The base ZIP format tracks the [last modified timestamp][FileMetadata.lastModifiedAtMillis]. It + * does not track [created timestamps][FileMetadata.createdAtMillis] or [last accessed + * timestamps][FileMetadata.lastAccessedAtMillis]. + * + * This format has severe limitations: + * + * * Timestamps are 16-bit values stored with 2-second precision. Some zip encoders (WinZip, + * PKZIP) round up to the nearest 2 seconds; other encoders (Java) round down. + * + * * Timestamps before 1980-01-01 cannot be represented. They cannot represent dates after + * 2107-12-31. + * + * * Timestamps are stored in local time with no time zone offset. If the time zone offset + * changes – due to daylight savings time or the zip file being sent to another time zone – + * file times will be incorrect. The file time will be shifted by the difference in time zone + * offsets between the encoder and decoder. + */ + val dosLastModifiedAtDate: Int = -1, + val dosLastModifiedAtTime: Int = -1, + + /** + * NTFS timestamps (0x000a) support creation time, last access time, and last modified time. + * These timestamps are stored with 100-millisecond precision using UTC. + */ + val ntfsLastModifiedAtFiletime: Long? = null, + val ntfsLastAccessedAtFiletime: Long? = null, + val ntfsCreatedAtFiletime: Long? = null, + + /** + * Extended timestamps (0x5455) are stored as signed 32-bit timestamps with 1-second precision. + * These cannot express dates beyond 2038-01-19. + */ + val extendedLastModifiedAtSeconds: Int? = null, + val extendedLastAccessedAtSeconds: Int? = null, + val extendedCreatedAtSeconds: Int? = null, +) { + val children = mutableListOf() + + internal fun copy( + extendedLastModifiedAtSeconds: Int?, + extendedLastAccessedAtSeconds: Int?, + extendedCreatedAtSeconds: Int?, + ) = ZipEntry( + canonicalPath = canonicalPath, + isDirectory = isDirectory, + comment = comment, + crc = crc, + compressedSize = compressedSize, + size = size, + compressionMethod = compressionMethod, + offset = offset, + dosLastModifiedAtDate = dosLastModifiedAtDate, + dosLastModifiedAtTime = dosLastModifiedAtTime, + ntfsLastModifiedAtFiletime = ntfsLastModifiedAtFiletime, + ntfsLastAccessedAtFiletime = ntfsLastAccessedAtFiletime, + ntfsCreatedAtFiletime = ntfsCreatedAtFiletime, + extendedLastModifiedAtSeconds = extendedLastModifiedAtSeconds, + extendedLastAccessedAtSeconds = extendedLastAccessedAtSeconds, + extendedCreatedAtSeconds = extendedCreatedAtSeconds, + ) + + internal val lastAccessedAtMillis: Long? + get() = when { + ntfsLastAccessedAtFiletime != null -> filetimeToEpochMillis(ntfsLastAccessedAtFiletime) + extendedLastAccessedAtSeconds != null -> extendedLastAccessedAtSeconds * 1000L + else -> null + } + + internal val lastModifiedAtMillis: Long? + get() = when { + ntfsLastModifiedAtFiletime != null -> filetimeToEpochMillis(ntfsLastModifiedAtFiletime) + extendedLastModifiedAtSeconds != null -> extendedLastModifiedAtSeconds * 1000L + dosLastModifiedAtTime != -1 -> { + dosDateTimeToEpochMillis(dosLastModifiedAtDate, dosLastModifiedAtTime) + } + else -> null + } + + internal val createdAtMillis: Long? + get() = when { + ntfsCreatedAtFiletime != null -> filetimeToEpochMillis(ntfsCreatedAtFiletime) + extendedCreatedAtSeconds != null -> extendedCreatedAtSeconds * 1000L + else -> null + } +} diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt new file mode 100644 index 00000000..966e8fad --- /dev/null +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt @@ -0,0 +1,502 @@ +package io.github.alexzhirkevich.compottie + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import kotlinx.datetime.LocalDateTime +import kotlinx.datetime.TimeZone +import kotlinx.datetime.toInstant +import okio.BufferedSource +import okio.FileSystem +import okio.IOException +import okio.Path +import okio.Path.Companion.toPath +import okio.buffer +import okio.use + +private const val LOCAL_FILE_HEADER_SIGNATURE = 0x4034b50 +private const val CENTRAL_FILE_HEADER_SIGNATURE = 0x2014b50 +private const val END_OF_CENTRAL_DIRECTORY_SIGNATURE = 0x6054b50 +private const val ZIP64_LOCATOR_SIGNATURE = 0x07064b50 +private const val ZIP64_EOCD_RECORD_SIGNATURE = 0x06064b50 + +internal const val COMPRESSION_METHOD_DEFLATED = 8 +internal const val COMPRESSION_METHOD_STORED = 0 + +/** General Purpose Bit Flags, Bit 0. Set if the file is encrypted. */ +private const val BIT_FLAG_ENCRYPTED = 1 shl 0 + +/** + * General purpose bit flags that this implementation handles. Strict enforcement of additional + * flags may break legitimate use cases. + */ +private const val BIT_FLAG_UNSUPPORTED_MASK = BIT_FLAG_ENCRYPTED + +/** Max size of entries and archives without zip64. */ +private const val MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE = 0xffffffffL + +private const val HEADER_ID_ZIP64_EXTENDED_INFO = 0x1 +private const val HEADER_ID_NTFS_EXTRA = 0x000a +private const val HEADER_ID_EXTENDED_TIMESTAMP = 0x5455 + +/** + * Opens the file at [zipPath] for use as a file system. This uses UTF-8 to comments and names in + * the zip file. + * + * @param predicate a function that returns false for entries that should be omitted from the file + * system. + */ +@Throws(IOException::class) +internal fun FileSystem.listZipEntries( + zipPath: Path, + predicate: (ZipEntry) -> Boolean = { true }, +): Map { + openReadOnly(zipPath).use { fileHandle -> + // Scan backwards from the end of the file looking for the END_OF_CENTRAL_DIRECTORY_SIGNATURE. + // If this file has no comment we'll see it on the first attempt; otherwise we have to go + // backwards byte-by-byte until we reach it. (The number of bytes scanned will equal the comment + // size). + var scanOffset = fileHandle.size() - 22 // end of central directory record size is 22 bytes. + if (scanOffset < 0L) { + throw IOException("not a zip: size=${fileHandle.size()}") + } + val stopOffset = maxOf(scanOffset - 65_536L, 0L) + val eocdOffset: Long + var record: EocdRecord + val comment: String + while (true) { + val source = fileHandle.source(scanOffset).buffer() + try { + if (source.readIntLe() == END_OF_CENTRAL_DIRECTORY_SIGNATURE) { + eocdOffset = scanOffset + record = source.readEocdRecord() + comment = source.readUtf8(record.commentByteCount.toLong()) + break + } + } finally { + source.close() + } + + scanOffset-- + if (scanOffset < stopOffset) { + throw IOException("not a zip: end of central directory signature not found") + } + } + + // If this is a zip64, read a zip64 central directory record. + val zip64LocatorOffset = eocdOffset - 20 // zip64 end of central directory locator is 20 bytes. + if (zip64LocatorOffset > 0L) { + fileHandle.source(zip64LocatorOffset).buffer().use { zip64LocatorSource -> + if (zip64LocatorSource.readIntLe() == ZIP64_LOCATOR_SIGNATURE) { + val diskWithCentralDir = zip64LocatorSource.readIntLe() + val zip64EocdRecordOffset = zip64LocatorSource.readLongLe() + val numDisks = zip64LocatorSource.readIntLe() + if (numDisks != 1 || diskWithCentralDir != 0) { + throw IOException("unsupported zip: spanned") + } + fileHandle.source(zip64EocdRecordOffset).buffer().use { zip64EocdSource -> + val zip64EocdSignature = zip64EocdSource.readIntLe() + if (zip64EocdSignature != ZIP64_EOCD_RECORD_SIGNATURE) { + throw IOException( + "bad zip: expected ${ZIP64_EOCD_RECORD_SIGNATURE.hex} " + + "but was ${zip64EocdSignature.hex}", + ) + } + record = zip64EocdSource.readZip64EocdRecord(record) + } + } + } + } + + // Seek to the first central directory entry and read all of the entries. + val entries = mutableListOf() + fileHandle.source(record.centralDirectoryOffset).buffer().use { source -> + for (i in 0 until record.entryCount) { + val entry = source.readCentralDirectoryZipEntry() + if (entry.offset >= record.centralDirectoryOffset) { + throw IOException("bad zip: local file header offset >= central directory offset") + } + if (predicate(entry)) { + entries += entry + } + } + } + + // Organize the entries into a tree. + return buildIndex(entries) + } +} + +/** + * Returns a map containing all of [entries], plus parent entries required so that all entries + * (other than the file system root `/`) have a parent. + */ +private fun buildIndex(entries: List): Map { + val root = "/".toPath() + val result = mutableMapOf( + root to ZipEntry(canonicalPath = root, isDirectory = true), + ) + + // Iterate in sorted order so each path is preceded by its parent. + for (entry in entries.sortedBy { it.canonicalPath }) { + // Note that this may clobber an existing element in the map. For consistency with java.util.zip + // and java.nio.file.FileSystem, this prefers the last-encountered element. + val replaced = result.put(entry.canonicalPath, entry) + if (replaced != null) continue + + // Make sure this parent directories exist all the way up to the file system root. + var child = entry + while (true) { + val parentPath = child.canonicalPath.parent ?: break // child is '/'. + var parentEntry = result[parentPath] + + // We've found a parent that already exists! Add the child; we're done. + if (parentEntry != null) { + parentEntry.children += child + break + } + + // A parent is missing! Synthesize one. + parentEntry = ZipEntry( + canonicalPath = parentPath, + isDirectory = true, + ) + result[parentPath] = parentEntry + parentEntry.children += child + child = parentEntry + } + } + + return result +} + +/** When this returns, [this] will be positioned at the start of the next entry. */ +@Throws(IOException::class) +internal fun BufferedSource.readCentralDirectoryZipEntry(): ZipEntry { + val signature = readIntLe() + if (signature != CENTRAL_FILE_HEADER_SIGNATURE) { + throw IOException( + "bad zip: expected ${CENTRAL_FILE_HEADER_SIGNATURE.hex} but was ${signature.hex}", + ) + } + + skip(4) // version made by (2) + version to extract (2). + val bitFlag = readShortLe().toInt() and 0xffff + if (bitFlag and BIT_FLAG_UNSUPPORTED_MASK != 0) { + throw IOException("unsupported zip: general purpose bit flag=${bitFlag.hex}") + } + + val compressionMethod = readShortLe().toInt() and 0xffff + val dosLastModifiedTime = readShortLe().toInt() and 0xffff + val dosLastModifiedDate = readShortLe().toInt() and 0xffff + + // These are 32-bit values in the file, but 64-bit fields in this object. + val crc = readIntLe().toLong() and 0xffffffffL + var compressedSize = readIntLe().toLong() and 0xffffffffL + var size = readIntLe().toLong() and 0xffffffffL + val nameSize = readShortLe().toInt() and 0xffff + val extraSize = readShortLe().toInt() and 0xffff + val commentByteCount = readShortLe().toInt() and 0xffff + + skip(8) // disk number start (2) + internal file attributes (2) + external file attributes (4). + var offset = readIntLe().toLong() and 0xffffffffL + val name = readUtf8(nameSize.toLong()) + if ('\u0000' in name) throw IOException("bad zip: filename contains 0x00") + + val requiredZip64ExtraSize = run { + var result = 0L + if (size == MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE) result += 8 + if (compressedSize == MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE) result += 8 + if (offset == MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE) result += 8 + return@run result + } + + var ntfsLastModifiedAtFiletime: Long? = null + var ntfsLastAccessedAtFiletime: Long? = null + var ntfsCreatedAtFiletime: Long? = null + + var hasZip64Extra = false + readExtra(extraSize) { headerId, dataSize -> + when (headerId) { + HEADER_ID_ZIP64_EXTENDED_INFO -> { + if (hasZip64Extra) { + throw IOException("bad zip: zip64 extra repeated") + } + hasZip64Extra = true + + if (dataSize < requiredZip64ExtraSize) { + throw IOException("bad zip: zip64 extra too short") + } + + // Read each field if it has a sentinel value in the regular header. + size = if (size == MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE) readLongLe() else size + compressedSize = if (compressedSize == MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE) readLongLe() else 0L + offset = if (offset == MAX_ZIP_ENTRY_AND_ARCHIVE_SIZE) readLongLe() else 0L + } + + HEADER_ID_NTFS_EXTRA -> { + if (dataSize < 4L) { + throw IOException("bad zip: NTFS extra too short") + } + skip(4L) + + // Reads the NTFS extra metadata. This metadata recursively does a tag and length scheme + // inside of ZIP extras' own tag and length scheme. So we do readExtra() again. + readExtra((dataSize - 4L).toInt()) { attributeId, attributeSize -> + when (attributeId) { + 0x1 -> { + if (ntfsLastModifiedAtFiletime != null) { + throw IOException("bad zip: NTFS extra attribute tag 0x0001 repeated") + } + + if (attributeSize != 24L) { + throw IOException("bad zip: NTFS extra attribute tag 0x0001 size != 24") + } + + ntfsLastModifiedAtFiletime = readLongLe() + ntfsLastAccessedAtFiletime = readLongLe() + ntfsCreatedAtFiletime = readLongLe() + } + } + } + } + } + } + + if (requiredZip64ExtraSize > 0L && !hasZip64Extra) { + throw IOException("bad zip: zip64 extra required but absent") + } + + val comment = readUtf8(commentByteCount.toLong()) + val canonicalPath = "/".toPath() / name + val isDirectory = name.endsWith("/") + + return ZipEntry( + canonicalPath = canonicalPath, + isDirectory = isDirectory, + comment = comment, + crc = crc, + compressedSize = compressedSize, + size = size, + compressionMethod = compressionMethod, + offset = offset, + dosLastModifiedAtDate = dosLastModifiedDate, + dosLastModifiedAtTime = dosLastModifiedTime, + ntfsLastModifiedAtFiletime = ntfsLastModifiedAtFiletime, + ntfsLastAccessedAtFiletime = ntfsLastAccessedAtFiletime, + ntfsCreatedAtFiletime = ntfsCreatedAtFiletime, + ) +} + +@Throws(IOException::class) +private fun BufferedSource.readEocdRecord(): EocdRecord { + val diskNumber = readShortLe().toInt() and 0xffff + val diskWithCentralDir = readShortLe().toInt() and 0xffff + val entryCount = (readShortLe().toInt() and 0xffff).toLong() + val totalEntryCount = (readShortLe().toInt() and 0xffff).toLong() + if (entryCount != totalEntryCount || diskNumber != 0 || diskWithCentralDir != 0) { + throw IOException("unsupported zip: spanned") + } + skip(4) // central directory size. + val centralDirectoryOffset = readIntLe().toLong() and 0xffffffffL + val commentByteCount = readShortLe().toInt() and 0xffff + + return EocdRecord( + entryCount = entryCount, + centralDirectoryOffset = centralDirectoryOffset, + commentByteCount = commentByteCount, + ) +} + +@Throws(IOException::class) +private fun BufferedSource.readZip64EocdRecord(regularRecord: EocdRecord): EocdRecord { + skip(12) // size of central directory record (8) + version made by (2) + version to extract (2). + val diskNumber = readIntLe() + val diskWithCentralDirStart = readIntLe() + val entryCount = readLongLe() + val totalEntryCount = readLongLe() + if (entryCount != totalEntryCount || diskNumber != 0 || diskWithCentralDirStart != 0) { + throw IOException("unsupported zip: spanned") + } + skip(8) // central directory size. + val centralDirectoryOffset = readLongLe() + + return EocdRecord( + entryCount = entryCount, + centralDirectoryOffset = centralDirectoryOffset, + commentByteCount = regularRecord.commentByteCount, + ) +} + +/** + * Read a sequence of 0 or more extra fields. Each field has this structure: + * + * * 2-byte header ID + * * 2-byte data size + * * variable-byte data value + * + * This reads each extra field and calls [block] for each. The parameters are the header ID and + * data size. It is an error for [block] to process more bytes than the data size. + */ +private fun BufferedSource.readExtra(extraSize: Int, block: (Int, Long) -> Unit) { + var remaining = extraSize.toLong() + while (remaining != 0L) { + if (remaining < 4) { + throw IOException("bad zip: truncated header in extra field") + } + val headerId = readShortLe().toInt() and 0xffff + val dataSize = readShortLe().toLong() and 0xffff + remaining -= 4 + if (remaining < dataSize) { + throw IOException("bad zip: truncated value in extra field") + } + require(dataSize) + val sizeBefore = buffer.size + block(headerId, dataSize) + val fieldRemaining = dataSize + buffer.size - sizeBefore + when { + fieldRemaining < 0 -> { + throw IOException("unsupported zip: too many bytes processed for $headerId") + } + fieldRemaining > 0 -> { + buffer.skip(fieldRemaining) + } + } + remaining -= dataSize + } +} + +internal fun BufferedSource.skipLocalHeader() { + readOrSkipLocalHeader(null) +} + +internal fun BufferedSource.readLocalHeader(centralDirectoryZipEntry: ZipEntry): ZipEntry { + return readOrSkipLocalHeader(centralDirectoryZipEntry)!! +} + +/** + * If [centralDirectoryZipEntry] is null this will return null. Otherwise, it will return a new + * entry which unions [centralDirectoryZipEntry] with information from the local header. + */ +private fun BufferedSource.readOrSkipLocalHeader( + centralDirectoryZipEntry: ZipEntry?, +): ZipEntry? { + val signature = readIntLe() + if (signature != LOCAL_FILE_HEADER_SIGNATURE) { + throw IOException( + "bad zip: expected ${LOCAL_FILE_HEADER_SIGNATURE.hex} but was ${signature.hex}", + ) + } + skip(2) // version to extract. + val bitFlag = readShortLe().toInt() and 0xffff + if (bitFlag and BIT_FLAG_UNSUPPORTED_MASK != 0) { + throw IOException("unsupported zip: general purpose bit flag=${bitFlag.hex}") + } + skip(18) // compression method (2) + time+date (4) + crc32 (4) + compressed size (4) + size (4). + val fileNameLength = readShortLe().toLong() and 0xffff + val extraSize = readShortLe().toInt() and 0xffff + skip(fileNameLength) + + if (centralDirectoryZipEntry == null) { + skip(extraSize.toLong()) + return null + } + + var extendedLastModifiedAtSeconds: Int? = null + var extendedLastAccessedAtSeconds: Int? = null + var extendedCreatedAtSeconds: Int? = null + + readExtra(extraSize) { headerId, dataSize -> + when (headerId) { + HEADER_ID_EXTENDED_TIMESTAMP -> { + if (dataSize < 1) { + throw IOException("bad zip: extended timestamp extra too short") + } + val flags = readByte().toInt() and 0xff + + val hasLastModifiedAtMillis = (flags and 0x1) == 0x1 + val hasLastAccessedAtMillis = (flags and 0x2) == 0x2 + val hasCreatedAtMillis = (flags and 0x4) == 0x4 + val requiredSize = run { + var result = 1L + if (hasLastModifiedAtMillis) result += 4L + if (hasLastAccessedAtMillis) result += 4L + if (hasCreatedAtMillis) result += 4L + return@run result + } + if (dataSize < requiredSize) { + throw IOException("bad zip: extended timestamp extra too short") + } + + if (hasLastModifiedAtMillis) extendedLastModifiedAtSeconds = readIntLe() + if (hasLastAccessedAtMillis) extendedLastAccessedAtSeconds = readIntLe() + if (hasCreatedAtMillis) extendedCreatedAtSeconds = readIntLe() + } + } + } + + return centralDirectoryZipEntry.copy( + extendedLastModifiedAtSeconds = extendedLastModifiedAtSeconds, + extendedLastAccessedAtSeconds = extendedLastAccessedAtSeconds, + extendedCreatedAtSeconds = extendedCreatedAtSeconds, + ) +} + +/** + * Converts from the Microsoft [filetime] format to the Java epoch millis format. + * + * * Filetime's unit is 100 nanoseconds, and 0 is 1601-01-01T00:00:00Z. + * * Java epoch millis' unit is 1 millisecond, and 0 is 1970-01-01T00:00:00Z. + * + * See also https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime + */ +internal fun filetimeToEpochMillis(filetime: Long): Long { + // There's 11,644,473,600,000 milliseconds between 1601-01-01T00:00:00Z and 1970-01-01T00:00:00Z. + // val years = 1_970 − 1_601 + // val leapYears = floor(years / 4) − floor(years / 100) + // val days = (years * 365) + leapYears + // val millis = days * 24 * 60 * 60 * 1_000 + return filetime / 10_000 - 11_644_473_600_000L +} + +/** + * Converts a 32-bit DOS date+time to milliseconds since epoch. Note that this function interprets + * a value with no time zone as a value with the local time zone. + */ +internal fun dosDateTimeToEpochMillis(date: Int, time: Int): Long? { + if (time == -1) { + return null + } + + return LocalDateTime( + year = 1980 + (date shr 9 and 0x7f), + monthNumber = date shr 5 and 0xf, + dayOfMonth = date and 0x1f, + hour = time shr 11 and 0x1f, + minute = time shr 5 and 0x3f, + second = time and 0x1f shl 1, + ).toInstant(TimeZone.UTC).toEpochMilliseconds() +} + +private class EocdRecord( + val entryCount: Long, + val centralDirectoryOffset: Long, + val commentByteCount: Int, +) + +private val Int.hex: String + get() = "0x${this.toString(16)}" diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt new file mode 100644 index 00000000..90a80f00 --- /dev/null +++ b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt @@ -0,0 +1,58 @@ +package io.github.alexzhirkevich.compottie + +import okio.FileSystem +import okio.Path +import org.khronos.webgl.ArrayBuffer +import org.khronos.webgl.ArrayBufferView +import org.khronos.webgl.Int8Array +import org.khronos.webgl.Uint8Array +import org.w3c.files.Blob +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.coroutines.suspendCoroutine +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi +import kotlin.js.Promise +import kotlin.js.collections.JsArray +import kotlin.reflect.typeOf + +external fun require(lib : String) : dynamic + +internal suspend fun decompress(array: ByteArray) : ByteArray { + + val ds = DecompressionStream("deflate-raw") + + val reader = Blob(array.toTypedArray()) + .asDynamic() + .stream() + .pipeThrough(ds) + .getReader() + .read() as Promise<*> + + return suspendCoroutine { cont -> + reader.then { + val value = it.asDynamic().value as ArrayBufferView + cont.resume(Uint8Array(value.buffer).unsafeCast()) + }.catch { + cont.resumeWithException(it) + } + } +} + +external class DecompressionStream(alg : String) + +internal actual class ZipFileSystem actual constructor( + private val encoded : ByteArray, + private val parent : FileSystem, + path : Path + +) { + + actual suspend fun read(entry: ZipEntry): ByteArray { + return encoded + .copyOfRange(entry.offset.toInt()+39, (entry.offset + entry.compressedSize).toInt()) + .let { + decompress(it) + } + } +} \ No newline at end of file diff --git a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt new file mode 100644 index 00000000..9db33dd8 --- /dev/null +++ b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt @@ -0,0 +1,21 @@ +package io.github.alexzhirkevich.compottie + +import okio.FileSystem +import okio.Path +import okio.openZip + + +internal actual class ZipFileSystem actual constructor( + encoded : ByteArray, + parent : FileSystem, + path : Path +) { + + private val zipFileSystem = parent.openZip(path) + + actual suspend fun read(entry: ZipEntry) : ByteArray { + return zipFileSystem.read(entry.canonicalPath) { + readByteArray() + } + } +} diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt index ef128627..8772d416 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt @@ -1,11 +1,16 @@ package io.github.alexzhirkevich.compottie.internal.platform +import android.graphics.RenderEffect import android.os.Build import androidx.annotation.ChecksSdkIntAtLeast +import androidx.compose.ui.graphics.ColorFilter @ChecksSdkIntAtLeast(parameter = 0) internal actual fun isAndroidAtLeast(code : Int) : Boolean = Build.VERSION.SDK_INT >= code +fun foo(){ + ColorFilter +} @ChecksSdkIntAtLeast(parameter = 0) internal actual fun isAndroidAtMost(code : Int) : Boolean = Build.VERSION.SDK_INT <= code diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 5d528723..b918cde1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -1,19 +1,26 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable -import androidx.compose.runtime.produceState import androidx.compose.runtime.remember -import androidx.compose.ui.platform.LocalFontFamilyResolver -import androidx.compose.ui.text.font.Font +import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.text.font.FontFamily +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.assets.NoOpAssetsManager import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson +import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.durationMillis +import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.joinAll +import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import kotlin.jvm.JvmInline @Stable @@ -29,6 +36,35 @@ class LottieComposition internal constructor( val frameRate: Float get() = lottieData.frameRate + /** + * Preload assets for instant animation displaying + * */ + suspend fun prepare( + assetsManager: LottieAssetsManager + ) { + coroutineScope { + lottieData.assets.map { asset -> + launch(Dispatchers.Default) { + when (asset) { + is ImageAsset -> { + if (asset.bitmap == null) { + assetsManager.fetch(asset.id, asset.path, asset.fileName) + ?.let { + asset.setBitmap(ImageBitmap.fromBytes(it)) + } + } + } + + else -> {} + } + } + }.joinAll() + } + } + + internal fun marker(name : String?) = + lottieData.markers.firstOrNull { it.name == name } + companion object { fun parse(json: String) = LottieComposition( @@ -37,11 +73,12 @@ class LottieComposition internal constructor( } } -internal fun LottieComposition.marker(name : String?) = lottieData.markers.firstOrNull { it.name == name } - @Composable @Stable -fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionResult { +fun rememberLottieComposition( + spec : LottieCompositionSpec, + assetsManager: LottieAssetsManager = NoOpAssetsManager, +) : LottieCompositionResult { val result = remember(spec) { LottieCompositionResultImpl() @@ -50,7 +87,7 @@ fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionR LaunchedEffect(result) { withContext(Dispatchers.Default) { try { - result.complete(spec.load()) + result.complete(spec.load().apply { prepare(assetsManager) }) } catch (c: CancellationException) { throw c } catch (t: Throwable) { @@ -60,4 +97,22 @@ fun rememberLottieComposition(spec : LottieCompositionSpec) : LottieCompositionR } return result -} \ No newline at end of file +} + + + + +@Immutable +@JvmInline +internal value class JsonStringCompositionSpec( + private val jsonString: String +) : LottieCompositionSpec { + + override suspend fun load(): LottieComposition { + return LottieComposition.parse(jsonString) + } + + override fun toString(): String { + return "JsonString(jsonString='$jsonString')" + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index f7b4fbab..093b9cf5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -11,7 +11,6 @@ import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.scale @@ -22,19 +21,12 @@ import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.NoOpAssetsFetcher +import io.github.alexzhirkevich.compottie.assets.NoOpAssetsManager import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset -import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.joinAll -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import kotlin.math.roundToInt import kotlin.time.measureTime @@ -50,11 +42,9 @@ fun rememberLottiePainter( cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, useCompositionFrameRate: Boolean = false, maintainOriginalImageBounds: Boolean = false, - assetManager: LottieAssetsManager = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, ) : Painter { - val progress = animateLottieCompositionAsState( composition = composition, isPlaying = isPlaying, @@ -71,7 +61,6 @@ fun rememberLottiePainter( composition = composition, progress = { progress.value }, maintainOriginalImageBounds = maintainOriginalImageBounds, - assetsFetcher = assetManager, onLoadError = onLoadError ) } @@ -82,18 +71,13 @@ fun rememberLottiePainter( progress : () -> Float, maintainOriginalImageBounds: Boolean = false, clipTextToBoundingBoxes: Boolean = false, - assetsFetcher: LottieAssetsManager = NoOpAssetsFetcher, onLoadError : (Throwable) -> Painter = { EmptyPainter }, ) : Painter { - val updatedOnLoadError by rememberUpdatedState(onLoadError) - - val fontFamilyResolver = LocalFontFamilyResolver.current val painter by produceState( EmptyPainter, - assetsFetcher, composition, maintainOriginalImageBounds, clipTextToBoundingBoxes, @@ -101,19 +85,12 @@ fun rememberLottiePainter( ) { if (composition != null) { - value = try { - - composition.preloadAssets(assetsFetcher) - - LottiePainter( - composition = composition, - maintainOriginalImageBounds = maintainOriginalImageBounds, - clipTextToBoundingBoxes = clipTextToBoundingBoxes, - fontFamilyResolver = fontFamilyResolver - ) - } catch (t: Throwable) { - updatedOnLoadError(t) - } + value = LottiePainter( + composition = composition, + maintainOriginalImageBounds = maintainOriginalImageBounds, + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + fontFamilyResolver = fontFamilyResolver + ) } } @@ -180,8 +157,8 @@ private class LottiePainter( } private val frame: Float by derivedStateOf { - val p = composition.lottieData.outPoint * progress - - composition.lottieData.inPoint + val p = composition.lottieData.inPoint + + (composition.lottieData.outPoint - composition.lottieData.inPoint) * progress p.coerceAtLeast(0f) } @@ -195,7 +172,6 @@ private class LottiePainter( override fun DrawScope.onDraw() { - matrix.reset() val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) @@ -227,35 +203,9 @@ private class LottiePainter( } }.let { if (it.inWholeMilliseconds > 0) { - println(it.inWholeMilliseconds) +// println(it.inWholeMilliseconds) } } } } -private suspend fun LottieComposition.preloadAssets( - assetsFetcher: LottieAssetsManager -){ - coroutineScope { - lottieData.assets.map { asset -> - withContext(Dispatchers.Default) { - when (asset) { - is ImageAsset -> { - if (asset.bitmap == null) { - launch { - assetsFetcher - .fetch(asset.id, asset.path, asset.fileName) - ?.let { - asset.setBitmap(ImageBitmap.fromBytes(it)) - } - } - } else null - } - - else -> null - } - } - } - }.filterNotNull().joinAll() -} - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt index 564a133e..322228f2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt @@ -40,6 +40,6 @@ fun rememberLottieAssetsManager( return remember { LottieAssetsManager(fetch) } } -internal val NoOpAssetsFetcher = LottieAssetsManager { _, _, _ -> null } +internal val NoOpAssetsManager = LottieAssetsManager { _, _, _ -> null } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index 77fab324..0d5e4eb5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Serializable @Serializable -internal class LottieData( +internal data class LottieData( @SerialName("fr") val frameRate : Float, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 3c7956f8..8737c71a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -2,7 +2,7 @@ package io.github.alexzhirkevich.compottie.internal import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset @@ -109,9 +109,9 @@ internal val LottieJson by lazy { subclass(AnimatedShape.Animated::class) } - polymorphic(AnimatedValue::class) { - subclass(AnimatedValue.Default::class) - subclass(AnimatedValue.Animated::class) + polymorphic(AnimatedNumber::class) { + subclass(AnimatedNumber.Default::class) + subclass(AnimatedNumber.Animated::class) } polymorphic(AnimatedVector2::class) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index ead016e4..99acec84 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -4,19 +4,24 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.lerp import io.github.alexzhirkevich.compottie.internal.AnimationState +import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonClassDiscriminator - -@OptIn(ExperimentalSerializationApi::class) -@Serializable -@JsonClassDiscriminator("a") +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.intOrNull +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive + +@Serializable(with = AnimatedColorSerializer::class) internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { - @Serializable - @SerialName("0") + @Serializable() class Default( @SerialName("k") val value: FloatArray, @@ -35,7 +40,6 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { } @Serializable - @SerialName("1") class Animated( @SerialName("k") @@ -64,4 +68,23 @@ internal fun FloatArray.toColor() = Color( ) +internal class AnimatedColorSerializer : JsonContentPolymorphicSerializer( + baseClass = AnimatedColor::class +) { + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + val k = requireNotNull(element.jsonObject["k"]) { + "Animated shape must have 'k' parameter" + } + + val animated = element.jsonObject["a"]?.jsonPrimitive?.intOrNull == 1 || + k is JsonArray && k[0] is JsonObject + + return if (animated) { + AnimatedColor.Animated.serializer() + } else { + AnimatedColor.Default.serializer() + } + } + +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt new file mode 100644 index 00000000..c69a2347 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -0,0 +1,64 @@ +package io.github.alexzhirkevich.compottie.internal.animation + +import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.internal.AnimationState +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.jsonObject + +@Serializable(with = AnimatedNumberSerializer::class) +internal sealed interface AnimatedNumber : KeyframeAnimation, Indexable { + + @Serializable + class Default( + @SerialName("k") + val value: Float, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null + ) : AnimatedNumber { + + override fun interpolated(state: AnimationState): Float = value + } + + @Serializable + class Animated( + @SerialName("k") + val value: List, + + @SerialName("x") + override val expression: String? = null, + + @SerialName("ix") + override val index: String? = null + ) : AnimatedNumber, KeyframeAnimation by BaseKeyframeAnimation( + expression = expression, + keyframes = value, + emptyValue = 1f, + map = { s, e, p -> + lerp(s[0], e[0], easingX.transform(p)) + } + ) +} + +internal class AnimatedNumberSerializer : JsonContentPolymorphicSerializer(AnimatedNumber::class){ + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + + val value = requireNotNull(element.jsonObject["k"]){ + "Unrecognized animation value: $element" + } + + return if (value is JsonPrimitive){ + AnimatedNumber.Default.serializer() + } else { + AnimatedNumber.Animated.serializer() + } + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 732cd519..68721f9c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -6,18 +6,23 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData import io.github.alexzhirkevich.compottie.internal.helpers.mapPath import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData +import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonClassDiscriminator - -@OptIn(ExperimentalSerializationApi::class) -@Serializable -@JsonClassDiscriminator("a") +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.intOrNull +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive + +@Serializable(with = AnimatedShapeSerializer::class) internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { - @SerialName("0") @Serializable class Default( @SerialName("x") @@ -49,7 +54,6 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { } } - @SerialName("1") @Serializable class Animated( @SerialName("x") @@ -86,4 +90,21 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { } } +internal class AnimatedShapeSerializer : JsonContentPolymorphicSerializer( + baseClass = AnimatedShape::class +){ + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + val k = requireNotNull(element.jsonObject["k"]){ + "Animated shape must have 'k' parameter" + } + + return if (element.jsonObject["a"]?.jsonPrimitive?.intOrNull == 0 || k is JsonObject){ + AnimatedShape.Default.serializer() + } else { + AnimatedShape.Animated.serializer() + } + } + +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 3017b32f..92feb56f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -17,10 +17,10 @@ internal abstract class AnimatedTransform { abstract val anchorPoint: AnimatedVector2? abstract val position: AnimatedVector2? abstract val scale: AnimatedVector2? - abstract val rotation: AnimatedValue? - abstract val opacity: AnimatedValue? - abstract val skew: AnimatedValue? - abstract val skewAxis: AnimatedValue? + abstract val rotation: AnimatedNumber? + abstract val opacity: AnimatedNumber? + abstract val skew: AnimatedNumber? + abstract val skewAxis: AnimatedNumber? protected val matrix: Matrix = Matrix() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt deleted file mode 100644 index d61c6698..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedValue.kt +++ /dev/null @@ -1,51 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.animation - -import androidx.compose.ui.util.lerp -import io.github.alexzhirkevich.compottie.internal.AnimationState -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonClassDiscriminator - -@OptIn(ExperimentalSerializationApi::class) -@Serializable -@JsonClassDiscriminator("a") -internal sealed interface AnimatedValue : KeyframeAnimation, Indexable { - - @Serializable - @SerialName("0") - class Default( - @SerialName("k") - val value: Float, - - @SerialName("x") - override val expression: String? = null, - - @SerialName("ix") - override val index: String? = null - ) : AnimatedValue { - - override fun interpolated(state: AnimationState): Float = value - } - - @Serializable - @SerialName("1") - class Animated( - @SerialName("k") - val value: List, - - @SerialName("x") - override val expression: String? = null, - - @SerialName("ix") - override val index: String? = null - ) : AnimatedValue, KeyframeAnimation by BaseKeyframeAnimation( - expression = expression, - keyframes = value, - emptyValue = 1f, - map = { s, e, p -> - lerp(s[0], e[0], easingX.transform(p)) - } - ) -} - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 5c956d9f..3cf3621c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -9,8 +9,10 @@ import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.booleanOrNull import kotlinx.serialization.json.intOrNull import kotlinx.serialization.json.jsonObject @@ -100,8 +102,8 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @Serializable class Split( - val x: AnimatedValue, - val y: AnimatedValue, + val x: AnimatedNumber, + val y: AnimatedNumber, ) : AnimatedVector2 { override val expression: String? get() = null @@ -117,22 +119,23 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { } -internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer(AnimatedVector2::class){ +internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer(AnimatedVector2::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + val k = requireNotNull(element.jsonObject["k"]) { + "Animation vector must have 'k' property" + } + return when { element.jsonObject["s"]?.jsonPrimitive?.booleanOrNull == true -> AnimatedVector2.Split.serializer() - element.jsonObject["a"]?.jsonPrimitive?.intOrNull == 1 -> + element.jsonObject["a"]?.jsonPrimitive?.intOrNull == 1 || + k is JsonArray && k[0] is JsonObject -> AnimatedVector2.Animated.serializer() - element.jsonObject["a"]?.jsonPrimitive?.intOrNull == 0 -> - AnimatedVector2.Default.serializer() - - else -> error("Unknown transform") - + else -> AnimatedVector2.Default.serializer() } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt index 6c9cf8e6..1cf584b4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt @@ -12,7 +12,7 @@ import kotlin.math.pow @Serializable internal class RepeaterTransform( @SerialName("a") - override val anchorPoint : AnimatedVector2? = null , + override val anchorPoint : AnimatedVector2? = null, @SerialName("p") override val position : AnimatedVector2? = null, @@ -21,22 +21,22 @@ internal class RepeaterTransform( override val scale : AnimatedVector2? = null, @SerialName("r") - override val rotation : AnimatedValue? = null, + override val rotation : AnimatedNumber? = null, @SerialName("o") - override val opacity : AnimatedValue? = null, + override val opacity : AnimatedNumber? = null, @SerialName("sk") - override val skew: AnimatedValue? = null, + override val skew: AnimatedNumber? = null, @SerialName("sa") - override val skewAxis: AnimatedValue? = null, + override val skewAxis: AnimatedNumber? = null, @SerialName("so") - val startOpacity : AnimatedValue? = null, + val startOpacity : AnimatedNumber? = null, @SerialName("eo") - val endOpacity : AnimatedValue? = null, + val endOpacity : AnimatedNumber? = null, ) : AnimatedTransform() { fun repeaterMatrix(state: AnimationState, amount: Float): Matrix { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 91ea4934..4e44f85e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -58,6 +58,7 @@ internal class ContentGroup( parentAlpha: Float, state: AnimationState ) { + if (hidden) { return } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt index b2a09653..d753fa56 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.effects -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -15,13 +15,13 @@ internal sealed interface EffectValue { @SerialName("0") class Slider( @SerialName("v") - val value : AnimatedValue? = null + val value : AnimatedNumber? = null ) : EffectValue @Serializable @SerialName("4") class CheckBox( @SerialName("v") - val value : AnimatedValue? = null + val value : AnimatedNumber? = null ) : EffectValue } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index 28525088..1282df2f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.helpers import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline @@ -16,13 +16,13 @@ internal class Mask( val shape : AnimatedShape? = null, @SerialName("o") - val opacity : AnimatedValue? = null, + val opacity : AnimatedNumber? = null, @SerialName("mode") val mode : MaskMode = MaskMode.Intersect, @SerialName("x") - val expand: AnimatedValue? = null + val expand: AnimatedNumber? = null ) @Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt index 1fb7f06f..bfdfdafd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.helpers -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlin.jvm.JvmInline @@ -17,7 +17,7 @@ internal class StrokeDash( val dashType: DashType, @SerialName("v") - val value : AnimatedValue + val value : AnimatedNumber ) @JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index efd93477..165a85a9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -2,7 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.helpers import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -10,7 +10,7 @@ import kotlinx.serialization.Serializable internal class Transform( @SerialName("a") - override val anchorPoint : AnimatedVector2? = null , + override val anchorPoint : AnimatedVector2? = null, @SerialName("p") override val position : AnimatedVector2? = null, @@ -19,16 +19,16 @@ internal class Transform( override val scale : AnimatedVector2? = null, @SerialName("r") - override val rotation : AnimatedValue? = null, + override val rotation : AnimatedNumber? = null, @SerialName("o") - override val opacity : AnimatedValue? = null, + override val opacity : AnimatedNumber? = null, @SerialName("sk") - override val skew: AnimatedValue? = null, + override val skew: AnimatedNumber? = null, @SerialName("sa") - override val skewAxis: AnimatedValue? = null, + override val skewAxis: AnimatedNumber? = null, ) : AnimatedTransform() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt index e30feed2..3c3ef1c0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.helpers.text -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.Mask import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,17 +12,17 @@ internal class TextFollowPath( val mask: Mask? = null, @SerialName("f") - val firstMargin : AnimatedValue? = null, + val firstMargin : AnimatedNumber? = null, @SerialName("l") - val lastMargin : AnimatedValue? = null, + val lastMargin : AnimatedNumber? = null, @SerialName("r") - val reversePath : AnimatedValue? = null, + val reversePath : AnimatedNumber? = null, @SerialName("a") - val forceAlignment : AnimatedValue? = null, + val forceAlignment : AnimatedNumber? = null, @SerialName("p") - val perpendicularToPath : AnimatedValue? = null, + val perpendicularToPath : AnimatedNumber? = null, ) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt index bf14a9ff..9b6f866b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRangeSelector.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.helpers.text -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,13 +12,13 @@ internal class TextRangeSelector( val expressible : BooleanInt, @SerialName("xe") - val maxEase : AnimatedValue? = null, + val maxEase : AnimatedNumber? = null, @SerialName("ne") - val minEase : AnimatedValue? = null, + val minEase : AnimatedNumber? = null, @SerialName("a") - val maxAmount : AnimatedValue? = null, + val maxAmount : AnimatedNumber? = null, @SerialName("b") val basedOn : TextBased, @@ -30,17 +30,17 @@ internal class TextRangeSelector( val shape : TextShape, @SerialName("o") - val offset : AnimatedValue? = null, + val offset : AnimatedNumber? = null, @SerialName("r") val rangeUnits : TextRangeUnits? = null, @SerialName("sm") - val smoothness : AnimatedValue? = null, + val smoothness : AnimatedNumber? = null, @SerialName("s") - val start : AnimatedValue? = null, + val start : AnimatedNumber? = null, @SerialName("e") - val end : AnimatedValue? = null, + val end : AnimatedNumber? = null, ) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt index b59d4e26..6c6c95a1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.helpers.text import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -9,44 +9,44 @@ import kotlinx.serialization.Serializable internal class TextStyle( @SerialName("sw") - val strokeWidth : AnimatedValue? = null, + val strokeWidth : AnimatedNumber? = null, @SerialName("sc") val strokeColor : AnimatedColor? = null, @SerialName("sh") - val strokeHue : AnimatedValue? = null, + val strokeHue : AnimatedNumber? = null, @SerialName("ss") - val strokeSaturation : AnimatedValue? = null, + val strokeSaturation : AnimatedNumber? = null, @SerialName("sb") - val strokeBrightness : AnimatedValue? = null, + val strokeBrightness : AnimatedNumber? = null, @SerialName("o") - val strokeOpacity : AnimatedValue? = null, + val strokeOpacity : AnimatedNumber? = null, @SerialName("fc") val fillColor : AnimatedColor? = null, @SerialName("fh") - val fillHue : AnimatedValue? = null, + val fillHue : AnimatedNumber? = null, @SerialName("fs") - val fillSaturation : AnimatedValue? = null, + val fillSaturation : AnimatedNumber? = null, @SerialName("fb") - val fillBrightness : AnimatedValue? = null, + val fillBrightness : AnimatedNumber? = null, @SerialName("fo") - val fillOpacity : AnimatedValue? = null, + val fillOpacity : AnimatedNumber? = null, @SerialName("t") - val letterSpacing : AnimatedValue? = null, + val letterSpacing : AnimatedNumber? = null, @SerialName("ls") - val lineSpacing : AnimatedValue? = null, + val lineSpacing : AnimatedNumber? = null, @SerialName("bl") - val blur : AnimatedValue? = null, + val blur : AnimatedNumber? = null, ) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 11dda6db..c0b4c895 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -4,11 +4,10 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.clipRect @@ -22,7 +21,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { abstract val height : Float - abstract val timeRemapping : AnimatedValue? + abstract val timeRemapping : AnimatedNumber? @Transient private val newClipRect = MutableRect(0f, 0f, 0f, 0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 22a0a1ed..be7c3c22 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -76,7 +76,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { private val matteBoundsRect = MutableRect(0f, 0f, 0f, 0f) private val mattePaint by lazy { Paint().apply { - isAntiAlias = true + isAntiAlias = false if (matteMode?.isLuma() == true){ colorFilter = ColorFilter.Luma } @@ -110,7 +110,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { ) { val frame = state.frame - + if (hidden || (inPoint ?: 0f) > frame || (outPoint ?: Float.MAX_VALUE) < frame) return @@ -128,6 +128,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) } + if (matteLayer == null && !hasMask()) { matrix.preConcat(transform.matrix(state)) drawLayer(drawScope, matrix, alpha, state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 66afaa96..91064a40 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode @@ -15,7 +15,7 @@ internal class CompositionLayer( override val width: Float get() = composition.lottieData.width override val height: Float get() = composition.lottieData.height - override val timeRemapping: AnimatedValue? get() = null + override val timeRemapping: AnimatedNumber? get() = null override val masks: List? get() = null override val effects: List get() = emptyList() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index bd1f514a..09b64fe5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.layers -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue -import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.assets.PrecompositionAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -24,7 +23,7 @@ internal class PrecompositionLayer( override val height : Float, @SerialName("tm") - override val timeRemapping : AnimatedValue? = null, + override val timeRemapping : AnimatedNumber? = null, @SerialName("ddd") override val is3d: BooleanInt = BooleanInt.No, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 1f8d35f4..9d07b6e2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -100,6 +100,7 @@ internal class ShapeLayer( override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { contentGroup.draw(drawScope, parentMatrix, parentAlpha, state) + } override fun getBounds( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index a0e9cfbb..a5059af6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -148,7 +148,7 @@ internal class TextLayer( canvas.concat(parentMatrix) configurePaint(document, parentAlpha, state) - configureTextStyle(drawScope, document) + configureTextStyle(drawScope, document, state) drawTextWithFonts(drawScope, document) canvas.restore() @@ -195,31 +195,39 @@ internal class TextLayer( } } - private fun configureTextStyle(drawScope: DrawScope, document: TextDocument) { - - val fontSize = document.fontSize.sp - val baselineShift = document.baselineShift - ?.let { BaselineShift(it) } - ?: textStyle.baselineShift - - val lineHeight = document.lineHeight.sp - - val fontFamily = checkNotNull(painterProperties?.composition?.fonts) - .get(document.fontFamily) - - if ( - textStyle.fontSize != fontSize || - textStyle.baselineShift != baselineShift || - textStyle.lineHeight != lineHeight || - textStyle.fontFamily != fontFamily - ) { - textStyle = textStyle.copy( - baselineShift = baselineShift, - fontSize = fontSize, - lineHeight = lineHeight, - fontFamily = fontFamily, - color = Color.Red - ) + private fun configureTextStyle(drawScope: DrawScope, document: TextDocument, animationState: AnimationState) { + + drawScope.run { + val fontSize = document.fontSize.sp + val baselineShift = document.baselineShift + ?.let { BaselineShift(it) } + ?: textStyle.baselineShift + + val lineHeight = document.lineHeight.sp + + val fontFamily = checkNotNull(painterProperties?.composition?.fonts) + .get(document.fontFamily) + + val letterSpacing = textAnimation?.style?.letterSpacing + ?.interpolated(animationState)?.toSp() + ?: textStyle.letterSpacing + + if ( + textStyle.fontSize != fontSize || + textStyle.baselineShift != baselineShift || + textStyle.lineHeight != lineHeight || + textStyle.fontFamily != fontFamily || + textStyle.letterSpacing != letterSpacing + ) { + textStyle = textStyle.copy( + baselineShift = baselineShift, + fontSize = fontSize, + lineHeight = lineHeight, + fontFamily = fontFamily, + letterSpacing = letterSpacing, + color = Color.Red + ) + } } } @@ -398,7 +406,7 @@ internal class TextLayer( val position = document.wrapPosition?.toOffset() val size = document.wrapSize?.let { Size(it[0], it[1]) } val lineStartY = if (position == null) { - density.run { -document.lineHeight.sp.toPx() } + density.run { -textStyle.lineHeight.toPx()/2 } } else { document.lineHeight * density.density + position.y } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index 69adb6c5..09fec295 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -45,7 +45,7 @@ private val pathMeasure = ExtendedPathMeasure() private val tempPath = Path() private val tempPath2 = Path() -fun Path.applyTrimPath( +internal fun Path.applyTrimPath( startValue: Float, endValue: Float, offsetValue: Float, @@ -61,6 +61,7 @@ fun Path.applyTrimPath( } val start = length * startValue val end = length * endValue + var newStart = min(start, end) var newEnd = max(start, end) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 7cfd5cfe..9b78d7d9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.graphics.asComposeColorFilter import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors @@ -155,8 +156,21 @@ internal expect fun MakeRadialGradient( internal expect fun Paint.setBlurMaskFilter(radius: Float, isImage : Boolean = false) -internal val ColorFilter.Companion.Luma : ColorFilter get() = LumaColorFilter +internal val ColorFilter.Companion.Luma : ColorFilter + get() = org.jetbrains.skia.ColorFilter.luma.asComposeColorFilter() + +fun foo(){ + ColorFilter + ColorMatrix( + floatArrayOf( + 0f, 0f, 0f, 0f, 0f, + 0f, 0f, 0f, 0f, 0f, + 0f, 0f, 0f, 0f, 0f, + 0.2126f, 0.7152f, 0.0722f, 0f, 0f + ) + ) +} private val LumaColorFilter by lazy { ColorFilter.colorMatrix( ColorMatrix( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 20cb4e39..5e945115 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -72,8 +72,8 @@ internal fun LineCap.asStrokeCap() : StrokeCap { internal abstract class BaseStrokeShape() : Shape, DrawingContent { - abstract val opacity: AnimatedValue - abstract val strokeWidth: AnimatedValue + abstract val opacity: AnimatedNumber + abstract val strokeWidth: AnimatedNumber abstract val lineCap: LineCap abstract val lineJoin: LineJoin abstract val strokeMiter: Float @@ -329,8 +329,6 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { dashPatternValues[i] = dashPatternValues[i] * scale } - println(scale) - paint.pathEffect = PathEffect.dashPathEffect(dashPatternValues, o) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 9757031b..77b15e16 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -45,6 +45,7 @@ internal class EllipseShape( private val trimPaths = CompoundTrimPath() override fun getPath(state: AnimationState): Path { + if (hidden) { path.rewind() return path diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 29e131ce..0901b79d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -13,7 +13,7 @@ import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode @@ -44,7 +44,7 @@ internal class FillShape( val direction : Int = 1, @SerialName("o") - val opacity : AnimatedValue?, + val opacity : AnimatedNumber?, @SerialName("c") val color : AnimatedColor, @@ -52,7 +52,7 @@ internal class FillShape( @SerialName("r") val fillRule : FillRule? = null, -) : Shape, DrawingContent { + ) : Shape, DrawingContent { @Transient override lateinit var layer: Layer diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index cefb2fef..a2760993 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType @@ -40,7 +40,7 @@ internal class GradientFillShape( override val hidden : Boolean = false, @SerialName("o") - val opacity : AnimatedValue? = null, + val opacity : AnimatedNumber? = null, @SerialName("s") val startPoint : AnimatedVector2, @@ -55,13 +55,13 @@ internal class GradientFillShape( * Gradient Highlight Length. Only if type is Radial * */ @SerialName("h") - val highlightLength : AnimatedValue? = null, + val highlightLength : AnimatedNumber? = null, /** * Highlight Angle. Only if type is Radial * */ @SerialName("a") - val highlightAngle : AnimatedValue? = null, + val highlightAngle : AnimatedNumber? = null, @SerialName("g") val colors : GradientColors, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index f43fc319..6cb825e0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -6,7 +6,7 @@ import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.platform.GradientShader -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType @@ -39,10 +39,10 @@ internal class GradientStrokeShape( override val strokeMiter : Float = 0f, @SerialName("o") - override val opacity : AnimatedValue = AnimatedValue.Default(100f), + override val opacity : AnimatedNumber = AnimatedNumber.Default(100f), @SerialName("w") - override val strokeWidth : AnimatedValue, + override val strokeWidth : AnimatedNumber, @SerialName("d") override val strokeDash: List? = null, @@ -57,13 +57,13 @@ internal class GradientStrokeShape( * Gradient Highlight Length. Only if type is Radial * */ @SerialName("h") - val highlightLength : AnimatedValue? = null, + val highlightLength : AnimatedNumber? = null, /** * Highlight Angle. Only if type is Radial * */ @SerialName("a") - val highlightAngle : AnimatedValue? = null, + val highlightAngle : AnimatedNumber? = null, @SerialName("g") val colors : GradientColors, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 103856c9..6cd17252 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -7,7 +7,7 @@ import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer @@ -52,27 +52,27 @@ internal class PolystarShape( val direction : Int = 1, @SerialName("is") - val innerRoundness : AnimatedValue? = null, + val innerRoundness : AnimatedNumber? = null, @SerialName("ir") - val innerRadius : AnimatedValue? = null, + val innerRadius : AnimatedNumber? = null, @SerialName("or") - val outerRadius : AnimatedValue? = null, + val outerRadius : AnimatedNumber? = null, @SerialName("os") - val outerRoundness : AnimatedValue? = null, + val outerRoundness : AnimatedNumber? = null, @SerialName("r") - val rotation : AnimatedValue? = null, + val rotation : AnimatedNumber? = null, @SerialName("pt") - val points : AnimatedValue, + val points : AnimatedNumber, @SerialName("sy") val starType : StarType, -) : Shape, PathContent { + ) : Shape, PathContent { @Transient override lateinit var layer: Layer diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index e1028557..e52ba512 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -6,7 +6,7 @@ import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer @@ -38,7 +38,7 @@ internal class RectShape( val size : AnimatedVector2, @SerialName("r") - val roundedCorners : AnimatedValue? = null, + val roundedCorners : AnimatedNumber? = null, ) : Shape, PathContent { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 7d96380f..03f146ee 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -6,7 +6,7 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.lerp import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.RepeaterTransform import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ContentGroup @@ -25,10 +25,10 @@ import kotlinx.serialization.Transient internal class RepeaterShape( @SerialName("c") - val copies : AnimatedValue, + val copies : AnimatedNumber, @SerialName("o") - val offset : AnimatedValue? = null, + val offset : AnimatedNumber? = null, @SerialName("tr") val transform: RepeaterTransform, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index f93bb9b6..4345d467 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -3,7 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PathEffect import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName @@ -22,7 +22,7 @@ internal class RoundShape( override val hidden : Boolean = false, @SerialName("r") - val radius : AnimatedValue, + val radius : AnimatedNumber, ) : Shape { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index dae392bc..137c8af4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -23,7 +23,7 @@ internal sealed interface Shape : Content { override val matchName: String? get() = null override val hidden: Boolean get() = true override var layer: Layer - get() = TODO("Not yet implemented") + get() = error("Unsupported shape doesn't have layer") set(value) {} override fun setContents(contentsBefore: List, contentsAfter: List) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index ff82498d..62df624d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -5,7 +5,7 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName @@ -38,10 +38,10 @@ internal class SolidStrokeShape( override val strokeMiter : Float = 0f, @SerialName("o") - override val opacity : AnimatedValue, + override val opacity : AnimatedNumber, @SerialName("w") - override val strokeWidth : AnimatedValue, + override val strokeWidth : AnimatedNumber, @SerialName("d") override val strokeDash: List? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index 492a4704..71818de1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -4,7 +4,7 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ModifierContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -33,16 +33,16 @@ internal class TransformShape( override val scale : AnimatedVector2? = null, @SerialName("r") - override val rotation : AnimatedValue ? = null, + override val rotation : AnimatedNumber ? = null, @SerialName("o") - override val opacity : AnimatedValue? = null, + override val opacity : AnimatedNumber? = null, @SerialName("sk") - override val skew: AnimatedValue? = null, + override val skew: AnimatedNumber? = null, @SerialName("sa") - override val skewAxis: AnimatedValue? = null, + override val skewAxis: AnimatedNumber? = null, ) : AnimatedTransform(), Shape, ModifierContent { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt index 58a49e3a..8ec6e2fc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt @@ -2,7 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.helpers.TrimPathType -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedValue +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -18,19 +18,19 @@ internal class TrimPathShape( override val name: String? = null, @SerialName("mn") - override val matchName: String?, + override val matchName: String? = null, @SerialName("hd") override val hidden: Boolean = false, @SerialName("s") - val start : AnimatedValue, + val start : AnimatedNumber, @SerialName("e") - val end : AnimatedValue, + val end : AnimatedNumber, @SerialName("o") - val offset : AnimatedValue, + val offset : AnimatedNumber, @SerialName("m") val type : TrimPathType = TrimPathType.Simultaneously diff --git a/example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme b/example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme index 37f93816..1d20b89e 100644 --- a/example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme +++ b/example/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme @@ -31,9 +31,9 @@ shouldAutocreateTestPlan = "YES"> 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 BJk$UH literal 0 HcmV?d00001 diff --git a/example/shared/src/commonMain/composeResources/files/people.json b/example/shared/src/commonMain/composeResources/files/people.json new file mode 100644 index 00000000..0df8806c --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/people.json @@ -0,0 +1 @@ +{"v":"5.7.0","fr":30,"ip":0,"op":91,"w":667,"h":400,"nm":"Comp 1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"пальцы","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[3]},{"t":75,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[698.406,761.995,0],"to":[0.667,0.083,0],"ti":[-0.667,-0.083,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":20,"s":[702.406,762.495,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":50,"s":[702.406,762.495,0],"to":[-0.667,-0.083,0],"ti":[0.667,0.083,0]},{"t":75,"s":[698.406,761.995,0]}],"ix":2},"a":{"a":0,"k":[267.012,302.248,0],"ix":1},"s":{"a":0,"k":[371,371,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.307,0.318],[1.933,2.394],[-1.092,0.653],[-0.335,-0.132],[-0.425,-0.173],[-0.623,-0.635],[-0.029,-1.047],[-0.029,-1.088],[0.011,0.443],[0.047,1.764],[0.187,0.359],[0.827,0.363],[0.063,-2.489],[-0.775,-0.835],[-1.659,-1.719]],"o":[[-2.135,-2.214],[-0.813,-0.655],[0.346,0.1],[0.432,0.154],[0.824,0.335],[0.697,0.71],[0.029,1.088],[0.012,0.441],[-0.048,-1.763],[-0.01,-0.383],[-0.431,-0.829],[-1.122,-0.494],[-0.034,1.317],[1.625,1.75],[0.306,0.318]],"v":[[3.769,4.917],[-2.617,-1.863],[-2.199,-3.825],[-1.178,-3.474],[0.115,-2.996],[2.655,-1.547],[3.096,1.896],[3.184,5.159],[3.87,5.159],[3.728,-0.133],[3.648,-1.54],[0.72,-3.485],[-4.042,-3.231],[-1.643,0.201],[3.285,5.402]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[266.646,290.679],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.099,2.288],[-0.65,0.618],[-0.586,-0.218],[-2.17,-1.732]],"o":[[-2.158,-2.232],[-0.606,-0.66],[0.453,-0.43],[2.603,0.967],[0,0]],"v":[[3.799,4.779],[-2.587,-2.001],[-3.148,-4.349],[-1.375,-4.391],[3.624,-1.747]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[266.374,291.06],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.061,0.624],[-0.071,0.983],[-0.305,0.461],[-0.526,-0.926],[0.989,-1.927],[-0.286,0.558],[2.782,1.579],[-0.13,-1.329]],"o":[[-0.096,-0.979],[0.041,-0.58],[0.468,-0.708],[1.117,1.967],[-0.286,0.557],[1.18,-2.3],[-3.188,-1.808],[0.06,0.617]],"v":[[-1.477,2.914],[-1.544,-0.024],[-1.282,-1.935],[0.465,-2.02],[0.294,4.487],[1.134,4.979],[0.203,-3.729],[-2.451,2.914]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.265,298.253],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.383,1.724],[-0.296,0.229],[-0.4,-0.804],[1.187,-2.118]],"o":[[-0.205,-1.755],[0.081,-0.365],[0.712,-0.549],[1.083,2.174],[0,0]],"v":[[-1.863,2.49],[-1.592,-2.777],[-1.103,-3.76],[0.986,-2.69],[0.815,4.309]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.164,298.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.134,0.612],[-0.265,1.016],[-0.713,0.011],[-0.317,-0.524],[1.85,-1.305],[-0.513,0.362],[1.886,1.999],[0.552,-0.948],[-0.36,-1.647]],"o":[[-0.223,-1.016],[0.151,-0.579],[0.607,-0.009],[0.932,1.546],[-0.508,0.358],[2.616,-1.845],[-0.806,-0.854],[-0.87,1.498],[0.134,0.612]],"v":[[-1.817,1.547],[-1.806,-1.499],[-0.92,-2.744],[0.015,-1.972],[0.009,3.269],[0.5,4.11],[0.087,-3.618],[-2.186,-3.208],[-2.756,1.806]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.911,305.587],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.73,1.413],[-0.397,-0.014],[-0.2,-0.308],[-0.213,-1.241],[1.083,-0.641]],"o":[[-0.398,-1.54],[0.183,-0.352],[0.366,0.011],[0.687,1.054],[0.212,1.241],[0,0]],"v":[[-1.812,1.678],[-1.291,-2.961],[-0.423,-3.677],[0.4,-3.016],[1.998,0.375],[0.73,3.691]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.436,305.586],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.302,0.55],[0.289,1.42],[0.018,0.8],[-0.02,0.317],[-1.715,-0.28],[1.712,-1.532],[-0.466,0.417],[0.333,2.187],[1.773,0.36],[-0.962,-1.748]],"o":[[-0.697,-1.267],[-0.16,-0.784],[-0.009,-0.318],[-0.047,-1.051],[2.433,1.701],[-0.468,0.419],[1.636,-1.465],[-0.246,-1.616],[-4.958,-1.005],[0.301,0.55]],"v":[[0.971,5.042],[-0.556,1.021],[-0.824,-1.37],[-0.807,-2.322],[1.695,-3.479],[1.029,3.995],[1.718,4.684],[3.821,-1.115],[0.804,-5.078],[0.131,5.533]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[266.445,312.582],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.2,2.745],[-0.446,0.411],[-0.71,-0.971],[2.241,-1.809]],"o":[[-1.383,-2.38],[0.044,-0.603],[0.884,-0.815],[1.703,2.324],[0,0]],"v":[[-0.754,5.205],[-2.583,-2.722],[-1.983,-4.39],[1.081,-3.508],[0.069,4.256]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.6,0.243000000598,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[267.75,312.664],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"1","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1014,680,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[148.5,148.5,100],"ix":6}},"ao":0,"w":2000,"h":2000,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"3","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1012,680,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[99,99,100],"ix":6}},"ao":0,"w":2000,"h":2000,"ip":0,"op":91,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"2","refId":"comp_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1115.83,656.24,0],"ix":2},"a":{"a":0,"k":[781.5,541,0],"ix":1},"s":{"a":0,"k":[148.5,148.5,100],"ix":6}},"ao":0,"w":1563,"h":1082,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"4","refId":"comp_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1000,680,0],"ix":2},"a":{"a":0,"k":[1000,750,0],"ix":1},"s":{"a":0,"k":[100.98,100.98,100],"ix":6}},"ao":0,"w":2000,"h":1500,"ip":0,"op":150,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"рука Outlines 2","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[-14]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":70,"s":[-14]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[137.52,263.159,0],"ix":2},"a":{"a":0,"k":[135.52,263.534,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.593,-0.822],[-1.377,-2.716],[0.456,0.901],[1.781,2.471]],"o":[[1.78,2.471],[0.457,0.902],[-1.376,-2.716],[-0.585,-0.812]],"v":[[-2.976,-3.538],[1.757,4.24],[3.113,3.447],[-1.62,-4.331]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.647,191.22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.332,-0.959],[-1.479,-2.976],[0.449,0.904],[1.042,3.014]],"o":[[1.086,3.141],[0.45,0.906],[-1.419,-2.855],[-0.329,-0.949]],"v":[[-2.661,-4.356],[1.188,4.817],[2.544,4.024],[-1.146,-4.774]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[116.421,193.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.339,-0.957],[-1.09,-3.074],[0.34,0.956],[1.089,3.073]],"o":[[1.089,3.074],[0.335,0.946],[-1.089,-3.074],[-0.336,-0.947]],"v":[[-2.392,-4.402],[0.877,4.819],[2.391,4.401],[-0.877,-4.819]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.207,195.69],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.35,-0.952],[-1.188,-3.228],[0.35,0.951],[1.189,3.228]],"o":[[1.189,3.228],[0.347,0.941],[-1.189,-3.228],[-0.347,-0.941]],"v":[[-2.541,-4.634],[1.025,5.051],[2.541,4.634],[-1.026,-5.051]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[108.235,198.199],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.301,-0.969],[-1.5,-3.398],[0.405,0.917],[1.059,3.416]],"o":[[1.1,3.548],[0.408,0.923],[-1.446,-3.273],[-0.299,-0.963]],"v":[[-2.683,-4.976],[1.222,5.432],[2.579,4.639],[-1.168,-5.393]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.489,200.255],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.237,-0.984],[-1.234,-3.148],[0.37,0.943],[0.792,3.287]],"o":[[0.792,3.287],[0.365,0.93],[-1.235,-3.148],[-0.237,-0.983]],"v":[[-2.342,-4.588],[0.695,5.058],[2.21,4.64],[-0.827,-5.005]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.702,202.345],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[128.335,202.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[123.32,205.916],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[116.215,210.304],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.737,214.692],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.096,218.244],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.779,0.631],[-10.43,5.757],[0.886,-0.489],[9.354,-7.589]],"o":[[9.253,-7.506],[0.885,-0.489],[-10.547,5.822],[-0.786,0.637]],"v":[[-14.262,10.55],[15.273,-9.335],[14.48,-10.692],[-15.372,9.439]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[114.126,206.393],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.804,0.614],[-9.68,5.661],[0.875,-0.512],[8.914,-6.803]],"o":[[8.915,-6.803],[0.872,-0.511],[-9.679,5.661],[-0.794,0.605]],"v":[[-13.587,9.974],[14.302,-8.72],[13.509,-10.077],[-14.38,8.618]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.725,202.928],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21.174,105.316],[0,0],[8.915,-19.503]],"o":[[0,0],[0,0],[-8.916,19.502]],"v":[[-28.975,-45.136],[-0.557,-60.18],[20.061,18.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[123.947,243.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"кисть ","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":33,"s":[-8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":57,"s":[7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":80,"s":[-8]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[108.52,191.034,0],"ix":2},"a":{"a":0,"k":[108.52,191.034,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.943,16.31],[-1.882,5.072],[0.519,0.458],[1.927,1.927],[2.726,1.14],[0.627,-0.209],[2.287,-3.016],[-0.41,-0.798],[2.72,-1.296],[1.065,-0.903],[1.3,-0.544]],"o":[[0,0],[-0.64,-5.372],[2.459,-6.625],[-3.635,-3.204],[-2.507,-2.507],[-2.726,-1.141],[-2.153,-1.286],[-2.286,3.016],[-2.291,1.501],[-2.721,1.296],[-0.816,0.142],[-4.151,1.74]],"v":[[-22.296,-13.076],[-2.607,-23.755],[-3.443,-36.711],[0.844,-47.617],[-8.458,-41.935],[-14.1,-66.174],[-15.146,-47.994],[-22.419,-64.908],[-20.585,-46.779],[-27.426,-60.596],[-26.219,-41.517],[-31.281,-54.137]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[121.539,209.82],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"тело Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[648.921,1088.443,0],"ix":2},"a":{"a":0,"k":[199.461,294.222,0],"ix":1},"s":{"a":0,"k":[200,200,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.134,1.146],[1.146,0.134],[0.135,-1.146],[-1.146,-0.135]],"o":[[0.134,-1.146],[-1.146,-0.134],[-0.134,1.146],[1.146,0.134]],"v":[[2.076,0.243],[0.243,-2.075],[-2.076,-0.244],[-0.243,2.075]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[189.396,220.989],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.64,0],[1.64,0]],"o":[[1.637,0],[-1.637,0]],"v":[[0,1.272],[0,-1.272]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.126,229.984],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.64,0],[1.64,0]],"o":[[1.637,0],[-1.637,0]],"v":[[0,1.272],[0,-1.272]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[182.714,242.086],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.64,0],[1.64,0]],"o":[[1.638,0],[-1.637,0]],"v":[[0,1.272],[0,-1.272]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.321,239.543],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.64,0],[1.64,0]],"o":[[1.637,0],[-1.637,0]],"v":[[0,1.272],[0,-1.273]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[177.298,255.967],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.64,0],[1.64,0]],"o":[[1.637,0],[-1.638,0]],"v":[[0,1.272],[0,-1.272]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.743,249.833],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.64,0],[1.64,0]],"o":[[1.638,0],[-1.637,0]],"v":[[0,1.272],[0,-1.272]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[183.712,233.577],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[6.063,-1.384],[-3.18,0.938],[2.795,-1.998],[2.261,-1.451],[-2.795,1.203],[5.734,-2.228],[-7.658,0.029],[-4.733,6.02],[3.305,3.015],[-1.986,2.257],[2.903,4.463],[-2.064,1.153],[2.029,5.522]],"o":[[-2.928,5.487],[2.798,1.778],[-1.964,4.188],[-2.186,1.561],[2.922,0.852],[-2.271,5.718],[6.937,3.244],[7.658,-0.029],[-4.348,-1.051],[2.896,0.805],[-4.859,-2.178],[2.329,0.409],[-5.093,-2.945],[0,0]],"v":[[0.925,-21.089],[-13.243,-8.026],[-3.367,-7.92],[-8.712,-1.814],[-16.719,1.875],[-7.823,3.073],[-21.805,14.742],[-0.245,21.06],[21.805,12.507],[8.368,5.029],[19.294,3.365],[6.306,-6.404],[13.165,-7.565],[2.031,-20.802]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.26699999641,0.579999976065,0.497999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.092,241.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[198.754,214.065],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":4,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.724,214.483],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[177.441,213.229],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":4,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[235.949,200.274],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228.635,205.08],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[219.441,209.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[208.784,211.767],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[165.739,210.513],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[155.291,207.378],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":4,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[145.261,201.945],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":4,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.738,198.184],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":4,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228.844,269.648],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":4,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[218.606,269.021],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":4,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[207.531,269.439],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.881,0],[0,0],[-0.038,-0.847],[-0.88,0],[0,0],[0.038,0.849]],"o":[[0,0],[-0.822,0],[0.038,0.852],[0,0],[0.822,0],[-0.038,-0.85]],"v":[[0.105,-1.571],[-0.105,-1.571],[-1.676,-0.001],[-0.105,1.571],[0.105,1.571],[1.676,-0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.978,271.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":4,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.881,0],[0,0],[0.038,0.848],[0.88,0],[0,0],[-0.038,-0.849]],"o":[[0,0],[0.821,0],[-0.038,-0.851],[0,0],[-0.822,0],[0.038,0.851]],"v":[[-0.209,1.571],[0.209,1.571],[1.78,0],[0.209,-1.571],[-0.209,-1.571],[-1.78,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[186.635,273.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":4,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.572],[0,-1.572]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.187,275.708],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":4,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[165.112,277.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":4,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.455,276.753],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":4,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.025,0]],"o":[[2.021,0],[-2.022,0]],"v":[[0,1.572],[0,-1.572]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[146.306,275.499],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":4,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.702,3.134],[1.463,-5.433],[0,0],[-8.776,9.821],[2.925,0.209]],"o":[[-1.039,-0.278],[-1.462,5.433],[0,0],[0,0],[-2.925,-0.209]],"v":[[-9.507,-8.045],[-16.195,-5.955],[-19.329,4.702],[19.12,1.568],[16.404,-10.761]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[186.53,181.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.702,3.134],[1.463,-5.433],[0,0],[-8.776,9.821],[2.925,0.209]],"o":[[-1.039,-0.278],[-1.462,5.433],[0,0],[0,0],[-2.925,-0.209]],"v":[[-9.507,-8.045],[-16.195,-5.955],[-19.329,4.702],[19.12,1.568],[16.404,-10.761]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[186.53,181.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":4,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.18,-3.192],[14.593,3.064],[-1.419,-1.334],[-44.021,-2.786],[-0.33,7.851]],"o":[[-14.965,3.147],[0.156,6.159],[16.041,15.072],[0.558,-2.975],[-15.311,-3.881]],"v":[[-1.355,-10.773],[-45.74,-8.587],[-43.624,3.54],[44.418,2.982],[45.74,-14.731]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.073,288.259],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":4,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-21.117,1.591],[-12.216,8.617],[0,0],[13.164,-3.97],[0,0],[11.652,0.431],[0,0],[0,0],[8.811,-5.985]],"o":[[15.342,-1.156],[-2.039,-2.242],[-6.928,-8.358],[0,0],[0,0],[-11.652,-0.431],[0,0],[-9.103,-4.136],[17.401,11.458]],"v":[[8.968,15.661],[50.124,-0.427],[46.766,-4.087],[13.333,-8.057],[10.616,-17.043],[-2.13,-15.58],[-14.459,-17.252],[-18.011,-4.087],[-50.124,0.36]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.257,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[188.138,192.868],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-21.117,1.591],[-12.216,8.617],[0,0],[13.164,-3.97],[0,0],[11.652,0.431],[0,0],[0,0],[8.811,-5.985]],"o":[[15.342,-1.156],[-2.039,-2.242],[-6.928,-8.358],[0,0],[0,0],[-11.652,-0.431],[0,0],[-9.103,-4.136],[17.401,11.458]],"v":[[8.968,15.661],[50.124,-0.427],[46.766,-4.087],[13.333,-8.057],[10.616,-17.043],[-2.13,-15.58],[-14.459,-17.252],[-18.011,-4.087],[-50.124,0.36]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.138,192.868],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":4,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[8.636,11.702],[0,0]],"o":[[0.142,1.195],[0,0],[0,0],[0,0]],"v":[[-13.725,-55.136],[18.597,46.36],[-8.289,43.434],[-18.598,-50.807]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[151.739,248.364],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[8.636,11.702],[0,0]],"o":[[0.142,1.195],[0,0],[0,0],[0,0]],"v":[[-13.725,-52.427],[18.597,49.069],[-8.289,46.143],[-18.598,-48.098]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.922000002394,0.922000002394,0.922000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.739,245.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":4,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[-4.474,-4.204],[-44.021,-2.786],[0,0],[0,0],[0,0],[10.791,17.766],[0,0],[13.165,-3.971],[0,0],[11.652,0.431],[0,0],[0,0],[7.272,-8.883],[0,0],[1.742,4.363]],"o":[[16.041,15.072],[1.671,-8.915],[0,0],[0,0],[-0.966,-2.59],[-5.072,-8.35],[-6.929,-8.358],[0,0],[0,0],[-11.652,-0.431],[0,0],[-11.076,-5.033],[0,0],[0,0],[2.363,14.469]],"v":[[-53.322,50.555],[34.72,49.997],[36.95,-2.939],[72.611,51.669],[77.069,6.534],[63.264,-22.537],[38.134,-52.462],[4.699,-56.432],[1.984,-65.418],[-10.764,-63.955],[-23.092,-65.627],[-26.645,-52.462],[-63.631,-43.686],[-78.571,-23.179],[-55.925,-5.079]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20,"s":[{"i":[[-4.474,-4.204],[-44.021,-2.786],[0,0],[0,0],[0,0],[10.791,17.766],[0,0],[13.165,-3.971],[0,0],[11.652,0.431],[0,0],[0,0],[7.272,-8.883],[0,0],[1.742,4.363]],"o":[[16.041,15.072],[1.671,-8.915],[0,0],[0,0],[-0.966,-2.59],[-5.072,-8.35],[-6.929,-8.358],[0,0],[0,0],[-11.652,-0.431],[0,0],[-11.076,-5.033],[0,0],[0,0],[2.363,14.469]],"v":[[-53.322,50.555],[34.721,49.997],[36.949,-2.939],[74.736,54.044],[79.194,8.909],[63.264,-22.537],[38.134,-52.462],[4.699,-56.432],[1.984,-65.418],[-10.764,-63.955],[-23.092,-65.627],[-26.645,-52.462],[-63.631,-43.686],[-78.571,-23.179],[-55.925,-5.079]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":50,"s":[{"i":[[-4.474,-4.204],[-44.021,-2.786],[0,0],[0,0],[0,0],[10.791,17.766],[0,0],[13.165,-3.971],[0,0],[11.652,0.431],[0,0],[0,0],[7.272,-8.883],[0,0],[1.742,4.363]],"o":[[16.041,15.072],[1.671,-8.915],[0,0],[0,0],[-0.966,-2.59],[-5.072,-8.35],[-6.929,-8.358],[0,0],[0,0],[-11.652,-0.431],[0,0],[-11.076,-5.033],[0,0],[0,0],[2.363,14.469]],"v":[[-53.322,50.555],[34.72,49.997],[36.949,-2.939],[74.736,54.044],[79.194,8.909],[63.264,-22.537],[38.134,-52.462],[4.699,-56.432],[1.984,-65.418],[-10.764,-63.955],[-23.092,-65.627],[-26.645,-52.462],[-63.631,-43.686],[-78.571,-23.179],[-55.925,-5.079]],"c":true}]},{"t":75,"s":[{"i":[[-4.474,-4.204],[-44.021,-2.786],[0,0],[0,0],[0,0],[10.791,17.766],[0,0],[13.165,-3.971],[0,0],[11.652,0.431],[0,0],[0,0],[7.272,-8.883],[0,0],[1.742,4.363]],"o":[[16.041,15.072],[1.671,-8.915],[0,0],[0,0],[-0.966,-2.59],[-5.072,-8.35],[-6.929,-8.358],[0,0],[0,0],[-11.652,-0.431],[0,0],[-11.076,-5.033],[0,0],[0,0],[2.363,14.469]],"v":[[-53.322,50.555],[34.72,49.997],[36.949,-2.939],[72.611,51.669],[77.069,6.534],[63.264,-22.537],[38.134,-52.462],[4.699,-56.432],[1.984,-65.418],[-10.764,-63.955],[-23.092,-65.627],[-26.645,-52.462],[-63.631,-43.686],[-78.571,-23.179],[-55.925,-5.079]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.771,241.243],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":4,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"ноги","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[648.921,1305.443,0],"ix":2},"a":{"a":0,"k":[199.461,402.722,0],"ix":1},"s":{"a":0,"k":[200,200,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.094,7.981]],"o":[[0,0],[0,0],[0,0]],"v":[[45.448,-23.278],[-44.572,23.278],[-25.494,-18.401]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[174.877,313.389],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.094,7.981]],"o":[[0,0],[0,0],[0,0]],"v":[[45.448,-23.278],[-44.572,23.34],[-25.494,-18.401]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.922000002394,0.922000002394,0.922000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[174.877,313.389],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-5.764,-24.462],[-27.844,-166.184],[0,0],[0,0],[-0.112,-3.741],[0,0],[0,0],[-16.637,40.313]],"o":[[0,0],[0,0],[10.088,42.817],[0,0],[0,0],[-0.989,-3.611],[0,0],[0,0],[0,0],[16.636,-40.314]],"v":[[-42.135,-171.747],[16.301,-175.773],[37.477,-135.654],[82.805,173.911],[48.132,175.773],[-13.247,-87.091],[-19.459,-86.161],[-10.644,172.384],[-47.007,170.005],[-66.168,-126.737]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[197.916,458.656],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-5.764,-24.462],[-27.844,-166.184],[0,0],[0,0],[-0.112,-3.741],[0,0],[0,0],[-16.637,40.313]],"o":[[0,0],[0,0],[10.088,42.817],[0,0],[0,0],[-0.989,-3.611],[0,0],[0,0],[0,0],[16.636,-40.314]],"v":[[-42.135,-104.533],[16.301,-108.559],[37.477,-68.439],[82.805,241.126],[48.132,242.988],[-13.247,-19.877],[-19.459,-18.947],[-10.644,239.599],[-47.007,237.219],[-66.168,-59.523]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.916,391.441],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"голова Outlines","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[-3]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[188.07,162.469,0],"ix":2},"a":{"a":0,"k":[188.07,162.469,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,3.385],[-3.385,0],[0,-3.385],[3.385,0]],"o":[[0,-3.385],[3.385,0],[0,3.385],[-3.385,0]],"v":[[-6.13,0],[0,-6.13],[6.129,0],[0,6.13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[167.967,88.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-8.884,-4.142],[8.409,5.253],[0.557,-6.13],[0,0]],"o":[[0,0],[-1.057,-0.661],[0,0],[0,0]],"v":[[24.472,4.385],[20.339,-13.372],[-24.796,2.787],[-19.781,13.931]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[186.078,124.073],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.473,-39.005],[7.802,-7.801],[-8.358,13.93]],"o":[[0,0],[0,0],[0,0]],"v":[[23.96,14.766],[-16.718,24.239],[-15.603,-21.453]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[183.57,109.307],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[3.518,-0.046]],"o":[[0,0],[0,0],[-3.657,0.048]],"v":[[-4.702,-1.958],[4.701,-2.376],[0.052,-0.609]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[0,0],[3.639,0.364]],"o":[[0,0],[0,0],[-3.639,-0.364]],"v":[[-4.702,-1.958],[4.701,-2.376],[-0.105,2.012]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[0,0],[3.639,0.364]],"o":[[0,0],[0,0],[-3.639,-0.364]],"v":[[-4.702,-1.958],[4.701,-2.376],[-0.105,2.012]],"c":true}]},{"t":83,"s":[{"i":[[0,0],[0,0],[3.518,-0.046]],"o":[[0,0],[0,0],[-3.657,0.048]],"v":[[-4.702,-1.958],[4.701,-2.376],[0.052,-0.609]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[189.456,155.425],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-16.449,-2.193],[1.758,-2.42],[0,0]],"o":[[0,0],[-2.007,2.765],[0,0]],"v":[[8.225,-10.081],[6.231,3.219],[-5.819,12.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.2,0.322000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[173.438,130.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.809,-1.342],[0,0],[29.022,-4.51]],"o":[[20.541,34.1],[0,0],[-18.747,2.914]],"v":[[-7.391,-11.87],[16.981,-7.163],[-5.137,-17.72]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.2,0.322000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[186.649,132.908],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.213,-0.688],[1.116,-0.055],[-0.048,-0.964]],"o":[[0.922,0.286],[-1.116,0.056],[0,0]],"v":[[1.583,0.707],[-0.524,-0.938],[-2.458,0.908]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.051000000449,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":15,"s":[196.023,140.83],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":20,"s":[196.108,141.4],"to":[0,0],"ti":[0,0]},{"t":25,"s":[196.023,140.83]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.173,-0.806],[-1.118,0.005],[-0.004,-0.964]],"o":[[-0.905,0.336],[1.117,-0.005],[0,0]],"v":[[-1.57,0.712],[0.446,-1.043],[2.476,0.695]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.051000000449,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":15,"s":[182.473,141.253],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":20,"s":[182.559,141.823],"to":[0,0],"ti":[0,0]},{"t":25,"s":[182.473,141.253]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.382,-0.004],[0,0],[0.147,0.421],[0,0],[0.204,-0.456],[0,0]],"o":[[0,0],[0.366,0.004],[0,0],[-0.166,-0.478],[0,0],[-0.188,0.419]],"v":[[-1.484,2.536],[1.487,2.573],[1.955,1.683],[0.65,-2.069],[-0.249,-2.121],[-1.915,1.596]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.862999949736,0.481999984442,0.481999984442,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[189.305,147.808],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.047,-0.82],[-0.622,-0.036],[-0.047,0.819],[0.622,0.036]],"o":[[-0.047,0.819],[0.622,0.035],[0.047,-0.819],[-0.621,-0.036]],"v":[[-1.125,-0.065],[-0.085,1.484],[1.126,0.065],[0.086,-1.483]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.051000000449,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[184.964,145.763],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0.167]},"t":15,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[1,0.833]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":20,"s":[100,23]},{"t":25,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.014,-0.82],[-0.622,0.011],[0.014,0.822],[0.622,-0.012]],"o":[[0.014,0.821],[0.623,-0.011],[-0.015,-0.82],[-0.623,0.01]],"v":[[-1.128,0.019],[0.025,1.486],[1.127,-0.02],[-0.026,-1.485]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.051000000449,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.758,145.535],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0.167]},"t":15,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[1,0.833]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":20,"s":[100,23]},{"t":25,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.066],[1.066,0],[0,-1.066],[-1.067,0]],"o":[[0,-1.066],[-1.067,0],[0,1.066],[1.066,0]],"v":[[1.931,0],[0,-1.931],[-1.931,0],[0,1.931]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.991999966491,0.663000009574,0.592000026329,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.556,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.663000009574,0.592000026329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[198.546,151.795],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.066],[1.067,0],[0,-1.066],[-1.067,0]],"o":[[0,-1.066],[-1.067,0],[0,1.066],[1.067,0]],"v":[[1.931,0],[0,-1.931],[-1.931,0],[0,1.931]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.991999966491,0.663000009574,0.592000026329,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.556,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.663000009574,0.592000026329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[180.366,151.795],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":3,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-11.412,-0.615],[0,0],[-10.308,-10.03],[0,0],[6.408,0],[-0.614,11.412],[0,0]],"o":[[0,0],[5.855,2.249],[0,0],[-0.615,11.412],[-7.521,0],[0,0],[0.614,-11.412]],"v":[[2.221,-21.992],[2.223,-21.992],[19.71,-3.375],[19.966,0.815],[0.556,22.607],[-19.352,-1.598],[-19.305,-2.47]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.02,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.865,142.423],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.781,0.054],[0,0],[0,0],[0,0],[-0.053,0.781]],"o":[[0,0],[0,0],[0,0],[0.78,0.054],[0.054,-0.781]],"v":[[0.679,-1.353],[-1.855,-1.527],[-2.049,1.299],[0.486,1.473],[1.995,0.157]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.885999971278,0.638999968884,0.6,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.02,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.638999968884,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.615,143.569],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.893,0.098],[0,0],[0,0],[0,0],[0.097,-1.893]],"o":[[0,0],[0,0],[0,0],[1.892,0.098],[-0.098,1.892]],"v":[[1.223,3.535],[-4.924,3.218],[-4.57,-3.633],[1.576,-3.318],[4.826,0.286]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.02,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[208.729,143.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.779,0.063],[0,0],[0,0],[0,0],[0.062,0.78]],"o":[[0,0],[0,0],[0,0],[-0.78,0.063],[-0.063,-0.78]],"v":[[-0.7,-1.342],[1.832,-1.546],[2.06,1.279],[-0.472,1.482],[-1.997,0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.885999971278,0.638999968884,0.6,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.02,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.638999968884,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[168.753,146.493],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":3,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.889,0.152],[0,0],[0,0],[0,0],[0.152,1.888]],"o":[[0,0],[0,0],[0,0],[-1.888,0.152],[-0.153,-1.888]],"v":[[-1.694,-3.248],[4.439,-3.743],[4.991,3.096],[-1.143,3.591],[-4.838,0.447]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.02,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[169.844,146.562],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"шея","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[-7]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[189.219,195.009,0],"ix":2},"a":{"a":0,"k":[189.219,195.009,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,-4.738],[4.4,-0.323],[0.601,3.853],[-4.411,0.059]],"o":[[0.062,4.737],[-5.36,0.393],[-0.506,-3.24],[4.413,-0.058]],"v":[[10.531,-3.229],[-0.057,9.309],[-10.087,-3.508],[1.94,-9.643]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.890196078431,0.621810673732,0.565536319508,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.527,162.686],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.415,-2.811],[-15.332,15.677],[0.011,24.118]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.916,-27.935],[-13.269,12.258],[13.269,12.258],[9.496,-18.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.02,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.745000023935,0.689999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.157,180.075],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"волосы","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[5]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[189.219,119.009,0],"ix":2},"a":{"a":0,"k":[189.219,119.009,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.011,6.408],[4.002,-4.447],[0,0],[-1.769,-2.092],[0,0],[-12.979,24.77],[0,0],[0,0],[0,0]],"o":[[-5.774,-1.681],[-15.045,16.717],[0,0],[0,0],[0,0],[12.979,-24.771],[0,0],[7.37,-4.499],[1.806,-8.289]],"v":[[5.927,-59.305],[-16.083,-55.683],[-30.014,-4.697],[-28.621,31.244],[-27.407,30.961],[8.707,36.216],[9.492,34.605],[23.759,40.16],[17.072,28.04]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.2,0.322000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[191.295,169.726],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"голова Outlines","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[0]},{"i":{"x":[0.657],"y":[0.892]},"o":{"x":[0.297],"y":[0]},"t":33,"s":[-8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.423],"y":[-0.356]},"t":60,"s":[5.662]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[445.118,176.182,0],"ix":2},"a":{"a":0,"k":[445.118,176.182,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.214,-19.562],[-3.768,-2.643],[-8.351,-8.736],[3.284,3.149]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-19.527,5.833],[-18.372,13.729],[19.785,3.773],[18.856,-5.118]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[439.26,123.71],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.054,2.596],[2.597,-0.054],[-0.054,-2.596],[-2.596,0.055]],"o":[[-0.055,-2.596],[-2.596,0.055],[0.054,2.596],[2.596,-0.054]],"v":[[4.701,-0.099],[-0.099,-4.702],[-4.701,0.099],[0.098,4.701]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":19,"s":[405.821,138.993],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[404.992,141.188],"to":[0,0],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":47,"s":[405.821,138.993],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":60,"s":[409.677,138.587],"to":[0,0],"ti":[0,0]},{"t":74,"s":[405.821,138.993]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":19,"s":[{"i":[[0,0],[-4.592,-6.587],[-1.402,3.989],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.093,-9.531],[-4.654,10.551],[9.247,0.607],[-1.63,-10.551]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[{"i":[[0,0],[-4.592,-6.587],[-1.402,3.989],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.093,-9.531],[-5.963,14.258],[9.247,0.607],[-1.63,-10.551]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":47,"s":[{"i":[[0,0],[-4.592,-6.587],[-1.402,3.989],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.093,-9.531],[-4.654,10.551],[9.247,0.607],[-1.63,-10.551]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[-8.358,-8.22],[-1.402,3.989],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.093,-9.531],[-0.261,11.211],[9.247,0.607],[-1.63,-10.551]],"c":true}]},{"t":74,"s":[{"i":[[0,0],[-4.592,-6.587],[-1.402,3.989],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.093,-9.531],[-4.654,10.551],[9.247,0.607],[-1.63,-10.551]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[410.217,127.952],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.726,-11.216],[-1.077,6.775],[-5.227,1.595],[-1.678,-8.869]],"o":[[0,0],[0.358,-2.259],[38.297,-12.712],[0,0]],"v":[[-10.467,16.806],[-24.877,1.862],[-17.092,-4.094],[25.953,6.639]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[431.772,116.912],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.398,0.496],[-0.362,1.439],[-0.133,1.051],[-1.057,-0.07],[-0.354,-0.124],[-0.988,2.456],[0.717,2.548],[2.058,0.992],[2.21,-1.814],[-0.733,-7.169]],"o":[[1.483,-0.019],[1.399,-0.496],[0.26,-1.027],[0.134,-1.051],[0.374,0.024],[2.496,0.879],[0.988,-2.456],[-0.618,-2.198],[-2.575,-1.242],[-5.57,4.572],[0,0]],"v":[[-8.537,13.654],[-4.141,13.115],[-1.094,10.12],[-0.932,6.955],[1.01,4.83],[2.083,5.154],[8.389,1.705],[11.227,-6.884],[7.548,-12.412],[-3.306,-9.64],[-11.211,9.55]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[431.417,139.281],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.04,-2.61],[-2.755,-1.028],[-0.769,0.061],[-0.512,-0.051],[0.015,-1.494],[-1.668,-0.35],[-1.134,-0.765],[-0.514,-0.571],[-1,0.616],[-0.373,1.016],[1.619,3.849],[3.197,3.009],[2.322,0.16],[1.25,-2.027],[0.283,-2.288]],"o":[[-2.723,1.093],[0.041,2.611],[0.711,0.265],[0.515,-0.04],[1.705,0.166],[-0.015,1.493],[1.393,0.292],[0.658,0.444],[0.756,0.839],[1,-0.616],[1.436,-3.905],[-1.618,-3.85],[-1.581,-1.489],[-2.632,-0.183],[-1.251,2.027],[0,0]],"v":[[-7.801,-8.23],[-12.337,-1.966],[-7.609,4.189],[-5.355,4.567],[-3.819,4.434],[-1.654,8.039],[0.285,11.808],[4.469,11.778],[5.707,13.643],[9.029,13.842],[10.941,11.176],[10.349,-0.889],[2.768,-11.17],[-3.026,-14.299],[-9.349,-10.807],[-11.188,-4.139]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[454.872,137.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[3.036,0.506]],"o":[[0,0],[0,0],[-3.035,-0.506]],"v":[[-4.68,-2.151],[4.681,-2.404],[-0.126,1.897]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[444.302,167.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.128,-0.63],[1.067,-0.068],[-0.058,-0.922]],"o":[[0.886,0.262],[-1.066,0.068],[0,0]],"v":[[1.519,0.676],[-0.52,-0.871],[-2.347,0.921]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[450.16,153.727],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.069,-0.8],[-1.069,0.02],[-0.016,-0.924]],"o":[[-0.862,0.333],[1.07,-0.019],[0,0]],"v":[[-1.505,0.696],[0.401,-1.01],[2.367,0.628]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[437.202,154.334],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.365,0],[0,0],[0.146,0.401],[0,0],[0.19,-0.439],[0,0]],"o":[[0,0],[0.35,0],[0,0],[-0.165,-0.454],[0,0],[-0.175,0.404]],"v":[[-1.414,2.456],[1.43,2.452],[1.867,1.596],[0.569,-1.979],[-0.293,-2.018],[-1.839,1.562]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.263000009574,0.109999997008,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[443.841,160.504],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.034,-0.785],[-0.596,-0.026],[-0.035,0.785],[0.595,0.026]],"o":[[-0.035,0.785],[0.595,0.026],[0.034,-0.785],[-0.596,-0.026]],"v":[[-1.077,-0.048],[-0.063,1.422],[1.078,0.047],[0.064,-1.422]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[439.633,158.613],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.024,-0.785],[-0.596,0.018],[0.025,0.786],[0.596,-0.019]],"o":[[0.024,0.786],[0.596,-0.018],[-0.024,-0.785],[-0.596,0.018]],"v":[[-1.079,0.033],[0.044,1.423],[1.079,-0.033],[-0.044,-1.421]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[448.047,158.28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.227],[1.227,0],[0,-1.227],[-1.226,0]],"o":[[0,-1.227],[-1.226,0],[0,1.227],[1.227,0]],"v":[[2.22,0],[-0.001,-2.221],[-2.221,0],[-0.001,2.221]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.411999990426,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[453.058,163.915],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.227],[1.227,0],[0,-1.227],[-1.226,0]],"o":[[0,-1.227],[-1.226,0],[0,1.227],[1.227,0]],"v":[[2.221,0],[-0.001,-2.221],[-2.221,0],[-0.001,2.221]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.411999990426,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[433.834,163.915],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-10.931,-0.44],[0,0],[0.44,-10.93],[0,0],[9.171,0.517],[0,0],[-0.439,10.931],[0,0]],"o":[[0,0],[10.931,0.439],[0,0],[-0.44,10.93],[0,0],[-7.25,-0.749],[0,0],[0.44,-10.93]],"v":[[1.535,-20.753],[1.536,-20.753],[18.849,0.01],[18.815,0.846],[0.161,20.676],[0.083,20.653],[-18.849,-0.953],[-18.815,-1.788]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.934,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[443.391,157.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.748,0.041],[0,0],[0,0],[0,0],[-0.042,0.748]],"o":[[0,0],[0,0],[0,0],[0.748,0.041],[0.041,-0.748]],"v":[[0.628,-1.308],[-1.801,-1.441],[-1.949,1.266],[0.479,1.4],[1.908,0.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.263000009574,0.109999997008,0.097999999102,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.934,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.263000009574,0.109999997008,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[462.928,155.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.812,0.069],[0,0],[0,0],[0,0],[0.07,-1.812]],"o":[[0,0],[0,0],[0,0],[1.813,0.068],[-0.068,1.812]],"v":[[1.206,3.359],[-4.681,3.135],[-4.431,-3.428],[1.455,-3.204],[4.612,0.202]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.934,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[462.086,155.584],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":3,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.745,0.07],[0,0],[0,0],[0,0],[0.071,0.746]],"o":[[0,0],[0,0],[0,0],[-0.745,0.07],[-0.07,-0.745]],"v":[[-0.692,-1.271],[1.729,-1.499],[1.984,1.201],[-0.437,1.429],[-1.914,0.206]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.263000009574,0.109999997008,0.097999999102,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.934,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.263000009574,0.109999997008,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[423.855,158.855],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.806,0.17],[0,0],[0,0],[0,0],[0.17,1.806]],"o":[[0,0],[0,0],[0,0],[-1.805,0.17],[-0.171,-1.806]],"v":[[-1.674,-3.078],[4.19,-3.632],[4.807,2.909],[-1.057,3.461],[-4.635,0.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.934,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[424.907,158.901],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":3,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"шея","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[-8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[9]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[1204.729,853.163,0],"ix":2},"a":{"a":0,"k":[443.243,201.054,0],"ix":1},"s":{"a":0,"k":[300,300,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.121,-4.533],[4.208,-0.367],[0.625,3.68],[-4.221,0.113]],"o":[[0.121,4.534],[-5.124,0.445],[-0.526,-3.095],[4.223,-0.113]],"v":[[10.538,-0.643],[1.326,8.228],[-10.133,-1.237],[1.318,-8.559]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.435294117647,0.20996539546,0.20996539546,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[442.19,174.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0.361,-2.697],[-14.471,15.203],[5.048,20.762]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.193,-23.223],[-13.931,8.02],[13.931,8.02],[7.557,-14.077]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[{"i":[[0,0],[0.361,-2.697],[-14.471,15.203],[5.048,20.762]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.193,-23.223],[-12.355,6.39],[12.326,7.458],[7.557,-14.077]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[0.361,-2.697],[-13.115,12.207],[5.048,20.762]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.193,-23.223],[-13.523,10.134],[11.179,8.216],[7.557,-14.077]],"c":true}]},{"t":90,"s":[{"i":[[0,0],[0.361,-2.697],[-14.471,15.203],[5.048,20.762]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.193,-23.223],[-13.931,8.02],[13.931,8.02],[7.557,-14.077]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[443.237,190.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"волосы","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.659],"y":[0.877]},"o":{"x":[0.297],"y":[0]},"t":30,"s":[4]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.425],"y":[-0.403]},"t":60,"s":[-2.452]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[440.467,128.232,0],"ix":2},"a":{"a":0,"k":[440.467,128.232,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[2.816,-1.873],[0.577,-3.333],[-0.133,-3.143],[-2.926,-10.03],[1.148,-1.132],[-0.1,-3.986],[-10.27,-2.215],[-5.272,0.389],[-5.004,4.615],[3.76,3.552],[-0.157,3.283],[1.882,3.665],[6.377,3.946],[7.001,-2.69]],"o":[[-3.268,0.875],[-2.818,1.872],[-0.537,3.099],[0.237,5.654],[0.451,1.549],[-2.84,2.799],[5.2,6.183],[5.168,1.115],[10.197,-0.75],[1.881,-7.523],[-2.39,-2.257],[0.197,-4.115],[-3.425,-6.672],[-6.377,-3.947],[0,0]],"v":[[-8.697,-28.041],[-18.064,-24.261],[-23.79,-16.223],[-23.193,-6.839],[-27.936,6.623],[-34.322,10.571],[-37.367,21.78],[-8.297,34.423],[8.936,34.753],[35.587,25.848],[30.573,12.056],[32.243,2.862],[26.521,-8.592],[12.393,-30.362],[-9.565,-28.111]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[2.816,-1.873],[0.577,-3.333],[-0.133,-3.143],[-2.926,-10.03],[1.148,-1.132],[-0.1,-3.986],[-10.27,-2.215],[-5.272,0.389],[-4.516,7.876],[3.76,3.552],[-0.157,3.283],[1.882,3.665],[6.377,3.946],[7.001,-2.69]],"o":[[-3.268,0.875],[-2.818,1.872],[-0.537,3.099],[0.237,5.654],[0.451,1.549],[-2.84,2.799],[6.772,8.625],[5.168,1.115],[10.197,-0.75],[1.881,-7.523],[-2.39,-2.257],[0.197,-4.115],[-3.425,-6.672],[-6.377,-3.947],[0,0]],"v":[[-8.697,-28.041],[-18.064,-24.261],[-23.79,-16.223],[-23.193,-6.839],[-27.936,6.623],[-34.322,10.571],[-37.367,21.78],[-7.919,34.269],[9.106,35.69],[35.587,25.848],[30.573,12.056],[32.243,2.862],[26.521,-8.592],[12.393,-30.362],[-9.565,-28.111]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[2.816,-1.873],[0.577,-3.333],[-0.133,-3.143],[-2.926,-10.03],[1.148,-1.132],[-2.752,-3.229],[-10.27,-2.215],[-5.272,0.389],[-6.228,4.774],[3.76,3.552],[-0.157,3.283],[1.882,3.665],[6.377,3.946],[7.001,-2.69]],"o":[[-3.268,0.875],[-2.818,1.872],[-0.537,3.099],[0.237,5.654],[0.451,1.549],[-2.84,2.799],[8.049,6.732],[5.168,1.115],[10.197,-0.75],[1.881,-7.523],[-2.39,-2.257],[0.197,-4.115],[-3.425,-6.672],[-6.377,-3.947],[0,0]],"v":[[-8.697,-28.041],[-18.064,-24.261],[-23.79,-16.223],[-23.193,-6.839],[-27.11,6.518],[-33.496,10.466],[-35.007,24.505],[-6.351,36.595],[10.028,38.054],[37.795,28],[30.573,12.056],[32.243,2.862],[26.521,-8.592],[12.393,-30.362],[-9.566,-28.111]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[2.816,-1.873],[0.577,-3.333],[-0.133,-3.143],[-2.926,-10.03],[1.148,-1.132],[-0.1,-3.986],[-10.27,-2.215],[-5.272,0.389],[-5.004,4.615],[3.76,3.552],[-0.157,3.283],[1.882,3.665],[6.377,3.946],[7.001,-2.69]],"o":[[-3.268,0.875],[-2.818,1.872],[-0.537,3.099],[0.237,5.654],[0.451,1.549],[-2.84,2.799],[5.2,6.183],[5.168,1.115],[10.197,-0.75],[1.881,-7.523],[-2.39,-2.257],[0.197,-4.115],[-3.425,-6.672],[-6.377,-3.947],[0,0]],"v":[[-8.697,-28.041],[-18.064,-24.261],[-23.79,-16.223],[-23.193,-6.839],[-27.936,6.623],[-34.322,10.571],[-37.367,21.78],[-8.297,34.423],[8.936,34.753],[35.587,25.848],[30.573,12.056],[32.243,2.862],[26.521,-8.592],[12.393,-30.362],[-9.565,-28.111]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[441.084,155.62],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"тело Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1241.896,1418.636,0],"ix":2},"a":{"a":0,"k":[455.632,389.545,0],"ix":1},"s":{"a":0,"k":[300,300,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.012,0.059],[-7.487,-1.974],[0.979,0.259],[7.885,-0.458]],"o":[[7.728,-0.449],[0.979,0.258],[-7.633,-2.012],[-1.005,0.058]],"v":[[-11.584,-0.253],[11.2,2.024],[11.617,0.509],[-11.584,-1.824]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[515.406,208.642],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.008,0.09],[-8.008,-1.114],[0.999,0.138],[8.201,-0.731]],"o":[[8.051,-0.718],[0.989,0.138],[-8.151,-1.135],[-0.999,0.089]],"v":[[-12.227,0.797],[11.818,1.367],[12.236,-0.147],[-12.227,-0.774]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[515.652,201.6],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.007,-1.012],[-0.372,-3.752],[0.099,1.007],[-0.026,3.77]],"o":[[-0.026,3.77],[0.098,0.996],[-0.372,-3.752],[0.007,-1.011]],"v":[[-1.081,-5.636],[-0.563,5.64],[1.008,5.64],[0.49,-5.636]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[519.576,195.461],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.076,-1.003],[0.285,-3.762],[-0.076,1.003],[-0.284,3.761]],"o":[[-0.284,3.761],[-0.076,1.008],[0.284,-3.762],[0.076,-1.008]],"v":[[-0.359,-5.642],[-1.212,5.642],[0.36,5.642],[1.212,-5.642]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[513.884,195.052],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.019,-1.012],[0.536,-3.811],[-0.14,0.998],[-0.073,3.991]],"o":[[-0.07,3.848],[-0.139,0.989],[0.556,-3.952],[0.019,-1.011]],"v":[[-0.276,-5.944],[-1.174,5.54],[0.34,5.958],[1.294,-5.944]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[508.377,195.771],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.346,-0.954],[-15.504,0.101],[-5.021,14.448],[0.331,-0.951],[14.771,-0.064],[4.981,13.751]],"o":[[5.209,14.38],[15.499,-0.101],[0.333,-0.957],[-4.784,13.765],[-14.778,0.064],[-0.342,-0.943]],"v":[[-34.616,-11.567],[0.166,13.275],[34.629,-12.008],[33.114,-12.425],[0.166,11.705],[-33.101,-11.985]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[441.105,210.812],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.998,-0.155],[-25.83,2.891],[1.005,-0.112],[25.536,3.98]],"o":[[25.679,4.002],[0.993,-0.111],[-25.683,2.875],[-0.988,-0.154]],"v":[[-38.76,-1.459],[38.754,0.237],[38.754,-1.334],[-38.343,-2.974]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[439.139,283.706],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.995,-0.108],[-25.066,2.082],[1.01,-0.084],[25.007,2.711]],"o":[[25.007,2.71],[1.001,-0.083],[-25.066,2.082],[-1.003,-0.109]],"v":[[-37.619,-0.673],[37.613,0.271],[37.613,-1.3],[-37.619,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[439.901,288.23],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.366,2.917]],"o":[[0.569,-2.885],[0,0]],"v":[[-0.211,3.89],[-0.07,-3.89]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.149000010771,0.298000021542,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[470.247,291.903],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":4,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.058,-1.012],[-0.165,-2.923],[0.058,1.012],[0.165,2.924]],"o":[[0.166,2.924],[0.058,1.005],[-0.166,-2.923],[-0.057,-1.005]],"v":[[-1.034,-4.385],[-0.537,4.386],[1.034,4.386],[0.537,-4.385]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[462.298,293.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.013],[0,0],[0,1.013],[0,0]],"o":[[0,0],[0,1.011],[0,0],[0,-1.011]],"v":[[-0.785,-4.597],[-0.785,4.597],[0.785,4.597],[0.785,-4.597]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[455.774,293.887],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":4,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.01,-1.013],[0.346,-2.916],[-0.118,0.994],[0.03,2.936]],"o":[[0.03,2.936],[-0.119,1.002],[0.346,-2.916],[-0.01,-1.011]],"v":[[-0.504,-4.38],[-0.978,4.391],[0.593,4.391],[1.067,-4.38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.238,294.088],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.045,-1.009],[0.132,-2.933],[-0.045,1.009],[-0.132,2.933]],"o":[[-0.132,2.933],[-0.045,1.011],[0.131,-2.933],[0.045,-1.011]],"v":[[-0.937,-4.389],[-0.633,4.388],[0.938,4.388],[0.634,-4.389]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[442.109,294.096],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.062,-1.006],[-0.334,-3.068],[0.111,1.005],[-0.191,3.08]],"o":[[-0.191,3.08],[0.108,0.994],[-0.333,-3.068],[0.063,-1.01]],"v":[[-0.852,-4.603],[-0.638,4.608],[0.932,4.608],[0.719,-4.603]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[434.985,293.896],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.121,-1.003],[-0.383,-3.176],[0.121,1.002],[0.384,3.176]],"o":[[0.384,3.176],[0.12,0.991],[-0.384,-3.176],[-0.12,-0.991]],"v":[[-1.103,-4.78],[-0.467,4.781],[1.103,4.781],[0.467,-4.78]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[428.222,293.635],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.146,-0.99],[-0.469,-3.196],[0.145,0.99],[0.468,3.196]],"o":[[0.469,3.197],[0.147,0.997],[-0.469,-3.197],[-0.146,-0.997]],"v":[[-1.46,-4.586],[-0.054,5.004],[1.461,4.586],[0.055,-5.003]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.244,293.686],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.115,-1.005],[-0.758,-3.242],[0.23,0.985],[0.364,3.168]],"o":[[0.38,3.308],[0.23,0.985],[-0.726,-3.105],[-0.114,-0.993]],"v":[[-1.663,-4.9],[0.034,4.92],[1.548,4.503],[-0.092,-4.9]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[415.284,292.936],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":4,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.169,-0.991],[0,0],[0.169,0.991],[0,0]],"o":[[0,0],[0.169,0.994],[0,0],[-0.169,-0.994]],"v":[[-1.574,-4.6],[0.06,5.018],[1.574,4.6],[-0.06,-5.018]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[408.128,292.844],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":4,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,0.685],[0.108,0.822],[0.751,0],[-0.09,-0.684],[-0.109,-0.821],[-0.751,0]],"o":[[-0.108,-0.821],[-0.09,-0.68],[-0.616,0],[0.108,0.822],[0.089,0.68],[0.617,0]],"v":[[1.432,1.233],[1.106,-1.233],[-0.164,-2.502],[-1.433,-1.233],[-1.107,1.233],[0.162,2.503]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[438.052,257.253],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":4,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.538,0.431],[0.375,0.3],[0.523,-0.523],[-0.539,-0.431],[-0.375,-0.301],[-0.522,0.522]],"o":[[-0.375,-0.3],[-0.535,-0.427],[-0.443,0.443],[0.375,0.299],[0.535,0.428],[0.443,-0.443]],"v":[[1.462,-0.448],[0.336,-1.348],[-1.461,-1.348],[-1.461,0.449],[-0.335,1.348],[1.462,1.348]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[435.794,257.993],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":4,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.563,2.93],[1.625,3.748],[2.058,-0.465],[-0.882,-3.912],[-0.134,-0.322]],"o":[[3.396,-2.793],[-1.703,-0.666],[-4.731,1.067],[0.078,0.347],[2.865,2.825]],"v":[[3.934,4.457],[6.004,-6.545],[0.221,-6.922],[-6.747,2.095],[-6.417,3.095]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[437.277,263.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":4,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.883,-3.912],[4.731,-1.068],[0.883,3.912],[-4.731,1.067]],"o":[[0.883,3.913],[-4.731,1.068],[-0.883,-3.912],[4.731,-1.068]],"v":[[8.567,-1.934],[1.599,7.083],[-8.566,1.932],[-1.598,-7.083]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658999992819,0.141000007181,0.165000002992,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[439.097,263.423],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.415,0.73],[-0.501,0.88],[0.729,0.426],[0.415,-0.73],[0.5,-0.88],[-0.729,-0.426]],"o":[[0.501,-0.88],[0.414,-0.728],[-0.718,-0.42],[-0.5,0.88],[-0.414,0.727],[0.719,0.42]],"v":[[0.587,2.102],[2.089,-0.538],[1.532,-2.659],[-0.589,-2.103],[-2.09,0.538],[-1.534,2.659]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[457.035,252.014],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":4,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.214,0.842],[0.145,0.569],[0.786,-0.254],[-0.214,-0.843],[-0.145,-0.569],[-0.786,0.254]],"o":[[-0.144,-0.569],[-0.199,-0.787],[-0.812,0.263],[0.144,0.57],[0.199,0.786],[0.812,-0.263]],"v":[[1.711,0.441],[1.278,-1.265],[-0.629,-2.348],[-1.711,-0.441],[-1.278,1.266],[0.629,2.349]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[454.292,251.07],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":4,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.628,0.225],[-1.181,4.848],[2.345,1.065],[2.025,-4.459],[0.106,-0.411]],"o":[[5.365,-0.214],[-1.165,-1.903],[-5.392,-2.45],[-0.18,0.397],[0.705,4.863]],"v":[[-0.528,8.019],[9.599,-1.164],[4.249,-5.794],[-9.182,-2.156],[-9.598,-0.94]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[452.923,256.512],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":4,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.025,-4.459],[5.393,2.449],[-2.026,4.458],[-5.392,-2.449]],"o":[[-2.026,4.459],[-5.391,-2.451],[2.025,-4.46],[5.392,2.449]],"v":[[9.764,4.435],[-3.668,8.074],[-9.763,-4.435],[3.668,-8.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658999992819,0.141000007181,0.165000002992,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[453.503,258.791],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":4,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.457,0.531],[-0.609,-0.037],[-0.561,-0.198],[-0.502,-0.344],[-0.382,-0.59],[0.591,0.074],[0.541,0.193],[0.508,0.304]],"o":[[0.668,-0.215],[0.607,0.049],[0.562,0.197],[0.497,0.353],[-0.69,0.127],[-0.587,-0.083],[-0.541,-0.193],[-0.506,-0.316]],"v":[[-3.303,-1.119],[-1.404,-1.312],[0.349,-0.935],[1.949,-0.126],[3.303,1.222],[1.415,1.235],[-0.272,0.818],[-1.844,0.078]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[461.355,249.977],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":4,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.381,-0.745],[0.218,0.702],[0.134,0.701],[0.064,0.729],[-0.1,0.831],[-0.349,-0.693],[-0.141,-0.756],[0.061,-0.772]],"o":[[-0.395,-0.736],[-0.206,-0.704],[-0.133,-0.701],[-0.054,-0.734],[0.628,0.555],[0.338,0.697],[0.142,0.755],[-0.073,0.772]],"v":[[0.538,4.346],[-0.307,2.199],[-0.812,0.1],[-1.109,-2.037],[-1.105,-4.346],[0.298,-2.435],[1.016,-0.245],[1.143,2.055]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.528,250.332],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":4,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.818,-0.272],[0.676,-0.336],[0.679,-0.273],[0.715,-0.233],[0.851,-0.126],[-0.629,0.51],[-0.748,0.298],[-0.805,0.075]],"o":[[-0.704,0.494],[-0.68,0.324],[-0.679,0.273],[-0.721,0.226],[0.401,-0.764],[0.636,-0.501],[0.748,-0.298],[0.807,-0.065]],"v":[[4.242,-1.547],[2.175,-0.377],[0.144,0.512],[-1.938,1.271],[-4.242,1.849],[-2.637,-0.014],[-0.547,-1.215],[1.795,-1.784]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[427.464,260.109],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":4,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.017,-0.719],[0.442,0.44],[0.316,0.515],[0.198,0.588],[-0.018,0.72],[-0.44,-0.44],[-0.314,-0.517],[-0.199,-0.588]],"o":[[-0.646,-0.314],[-0.431,-0.445],[-0.316,-0.516],[-0.189,-0.592],[0.647,0.314],[0.432,0.445],[0.314,0.518],[0.188,0.594]],"v":[[1.891,3.098],[0.323,1.928],[-0.794,0.484],[-1.569,-1.169],[-1.89,-3.098],[-0.321,-1.93],[0.794,-0.484],[1.568,1.17]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[419.531,252.409],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":4,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.854,0.551],[-1.91,-0.156],[-1.876,-0.392],[-1.798,-0.67],[-1.656,-1.003],[1.846,0.388],[0,0],[0,0]],"o":[[1.924,-0.216],[1.913,0.143],[1.869,0.426],[1.8,0.658],[-1.916,-0.272],[0,0],[0,0],[-1.84,-0.42]],"v":[[-11.086,-2.323],[-5.328,-2.354],[0.353,-1.506],[5.871,0.099],[11.086,2.539],[5.47,1.495],[-0.044,0.31],[-5.548,-0.924]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[423.795,256.652],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":4,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.652,-1.454],[-1.41,1.677],[-1.635,1.463],[-1.852,1.178],[-2.055,0.794],[1.65,-1.381],[1.596,-1.426],[1.588,-1.451]],"o":[[1.051,-1.936],[1.403,-1.687],[1.657,-1.438],[1.843,-1.186],[-1.651,1.456],[-1.639,1.39],[-1.619,1.399],[-1.58,1.46]],"v":[[-9.711,8.546],[-5.961,3.15],[-1.365,-1.551],[3.881,-5.516],[9.711,-8.546],[4.74,-4.346],[-0.137,-0.156],[-4.914,4.148]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[455.729,251.836],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":4,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.004,0.999],[1.097,6.171],[0.431,-0.251],[-0.439,6.606],[0.442,-0.183],[-4.794,5.294],[0.406,0.313],[-8.273,-3.934],[-0.131,0.481],[-4.085,-7.59],[-0.292,0.379],[5.976,-6.977],[-0.651,0.759],[-7.802,-1.671],[0.329,0.612],[-5.392,0.55],[0.767,0.365],[-3.383,6.049],[0.609,-0.671],[5.641,7.124],[0.04,-0.598],[5.952,5.622],[-0.132,-0.743],[-0.021,-6.125]],"o":[[-0.022,-6.271],[-0.431,0.251],[6.716,6.344],[-0.441,0.182],[6.166,7.787],[-0.406,-0.313],[-3.894,6.962],[0.13,-0.481],[-6.791,0.691],[0.292,-0.38],[-8.363,-1.79],[-0.646,0.755],[5.622,-6.565],[0.664,0.141],[-3.574,-6.641],[0.681,-0.069],[-7.464,-3.55],[0.418,-0.746],[-4.209,4.648],[-0.454,-0.573],[-0.329,4.955],[-0.593,-0.56],[1.073,6.035],[0.004,0.997]],"v":[[-14.838,14.093],[-16.522,-4.524],[-17.817,-3.77],[-4.231,-12.556],[-5.554,-12.008],[14.504,-16.726],[13.286,-17.665],[16.599,0.493],[16.99,-0.951],[6.641,12.583],[7.516,11.445],[-15.842,16.637],[-14.746,17.734],[7.103,12.94],[7.979,11.801],[16.99,0.599],[17.382,-0.845],[14.625,-16.883],[13.407,-17.822],[-4.458,-13.105],[-5.781,-12.556],[-16.721,-4.866],[-18.017,-4.112],[-16.389,14.093]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250999989229,0.505999995213,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[460.299,245.871],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":4,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.137,6.065],[-2.491,2.017],[-0.071,3.204],[-3.531,1.403],[-2.539,2.827],[-1.04,-3.766],[-2.726,-1.095],[2.172,-2.341],[-1.846,-2.606],[4.036,-0.637],[2.467,-3.256]],"o":[[0.037,-6.171],[2.038,2.473],[2.49,-2.017],[2.039,3.206],[3.531,-1.403],[-1.943,3.39],[0.783,2.832],[-3.188,0.204],[-2.172,2.341],[-3.981,-0.916],[-4.036,0.637],[0,0]],"v":[[-15.474,14.137],[-17.129,-4.274],[-8.473,-3.927],[-4.867,-12.512],[5.355,-10.079],[14.095,-17.23],[11.18,-6.21],[17.13,-0.132],[8.49,3.444],[7.449,12.236],[-4.703,11.422],[-15.155,17.23]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250999989229,0.505999995213,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[460.16,245.827],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":4,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.697,0.715],[1.058,6.865],[0.385,-0.354],[2.541,8.706],[-0.178,-0.97],[4.455,0.575],[-0.68,-0.306],[0.151,-6.959],[-0.493,0.32],[-1.658,-7.016],[-0.374,0.487],[-7.145,0.11],[0.999,-0.016],[4.704,-6.137],[-0.473,-0.062],[6.819,-4.443],[-0.388,-0.223],[6.791,3.057],[0.13,-0.481],[1.71,9.337],[0.498,-0.137],[-5.763,5.304],[0.432,0.114],[-5.039,-5.162]],"o":[[-4.859,-4.979],[-0.095,-0.612],[-4.818,4.434],[-0.283,-0.971],[1.523,8.312],[-0.754,-0.097],[6.338,2.854],[-0.012,0.57],[6.02,-3.924],[0.169,0.719],[4.358,-5.687],[0.996,-0.015],[-7.749,0.119],[0.471,0.062],[-1.866,-7.902],[0.389,0.223],[0.162,-7.438],[-0.129,0.481],[6.161,0.796],[-0.498,0.137],[2.848,9.756],[-0.432,-0.114],[1.1,7.137],[0.699,0.716]],"v":[[22.439,3.822],[13.598,-13.941],[12.302,-14.283],[-4.86,-15.439],[-6.355,-15.027],[-22.261,-7.97],[-22.653,-6.526],[-12.713,9.161],[-11.546,9.831],[3.12,15.692],[4.537,15.878],[22.334,6.971],[22.334,5.422],[3.198,15.095],[4.615,15.28],[-12.33,8.492],[-11.163,9.161],[-21.871,-7.864],[-22.261,-6.42],[-4.86,-15.439],[-6.355,-15.027],[13.398,-13.187],[12.103,-13.529],[21.342,4.918]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250999989229,0.505999995213,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.224,257.047],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":4,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.865,6.819],[3.798,-0.008],[0.704,3.732],[1.587,-1.38],[2.074,-0.352],[2.987,0.486],[0.469,-6.88],[-3.173,-1.269],[-0.522,-3.377],[-7.17,-0.155]],"o":[[-4.932,-4.79],[-2.69,2.68],[-3.798,0.006],[0.685,1.989],[-1.587,1.381],[-2.985,0.505],[6.412,2.536],[2.708,-2.084],[3.173,1.27],[4.149,-5.848],[0,0]],"v":[[21.854,4.243],[12.814,-13.861],[2.785,-9.096],[-5.643,-15.359],[-7.492,-9.71],[-13.257,-7.35],[-22.297,-7.321],[-11.974,9.034],[-2.268,7.689],[3.831,15.359],[22.297,6.07]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.250999989229,0.505999995213,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.26,257.173],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":4,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.28,-1.181],[-13.384,-0.159],[-4.863,12.756],[0.429,-1.125],[13.141,0.156],[2.885,12.183]],"o":[[3.077,12.996],[14.031,0.167],[0.434,-1.134],[-4.567,11.973],[-12.573,-0.15],[-0.279,-1.18]],"v":[[-29.969,-10.66],[-1.318,12.174],[29.815,-10.346],[27.998,-10.846],[-1.318,10.289],[-28.152,-11.16]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[441.938,207.812],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":4,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.311,0.406],[-0.728,0.951],[0.4,0.234],[0.31,-0.406],[0.728,-0.952],[-0.401,-0.234]],"o":[[0.727,-0.952],[0.309,-0.405],[-0.486,-0.284],[-0.728,0.952],[-0.309,0.405],[0.485,0.284]],"v":[[-0.277,1.903],[1.905,-0.951],[1.567,-2.241],[0.277,-1.903],[-1.905,0.952],[-1.567,2.241]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[460.18,204.257],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":4,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.213,0.083],[-2.467,1.569],[1.029,-0.653],[2.588,-0.178]],"o":[[2.914,-0.2],[1.021,-0.649],[-2.184,1.39],[-1.203,0.082]],"v":[[-3.958,2.417],[4.15,-0.219],[3.198,-1.847],[-3.958,0.532]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[448.852,211.063],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":4,"cix":2,"bm":0,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.85,-0.868],[-2.486,-0.095],[1.211,0.046],[1.397,1.428]],"o":[[1.743,1.781],[1.213,0.047],[-2.001,-0.077],[-0.851,-0.868]],"v":[[-3.435,-0.355],[3.072,2.509],[3.072,0.624],[-2.102,-1.688]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[433.06,210.481],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":4,"cix":2,"bm":0,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.711,-0.987],[-0.993,-1.38],[0.711,0.986],[0.994,1.38]],"o":[[0.994,1.38],[0.704,0.975],[-0.994,-1.38],[-0.702,-0.975]],"v":[[-2.304,-1.594],[0.677,2.545],[2.305,1.594],[-0.676,-2.546]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[422.177,201.913],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":4,"cix":2,"bm":0,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-12.537,18.389],[0,0],[13.373,-0.279],[0,0]],"o":[[0,0],[0,0],[0,0],[-17.966,0.374],[0,0]],"v":[[-13.235,-7.802],[13.512,-9.194],[18.528,-5.016],[1.253,6.966],[-18.528,-5.573]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[442.82,200.135],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":4,"cix":2,"bm":0,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.013],[0,0],[0,1.012],[0,0]],"o":[[0,0],[0,1.01],[0,0],[0,-1.011]],"v":[[-0.786,-5.851],[-0.786,5.852],[0.785,5.852],[0.785,-5.851]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[523.896,195.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":4,"cix":2,"bm":0,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,-5.743],[0,0],[0,0],[0,0],[0,0],[-3.525,4.371],[-6.645,-7.529],[-10.904,0.256],[0,0],[-6.284,-8.755],[-3.439,-0.86],[0,0],[0,0],[15.046,-5.852],[6.699,7.871]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[9.411,-11.673],[0,0],[10.902,-0.255],[9.563,-4.966],[0,0],[1.672,0.418],[0,0],[0,0],[-7.551,2.936],[-0.278,7.522]],"v":[[24.745,55.753],[-50.702,55.158],[-57.581,2.85],[-76.618,44.409],[-72.719,-12.707],[-61.574,-32.21],[-22.01,-45.862],[-8.079,-39.176],[3.344,-46.977],[35.807,-33.224],[46.527,-19.811],[53.633,-54.499],[73.693,-55.753],[61.572,33.682],[32.318,19.055]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20,"s":[{"i":[[0,-5.743],[0,0],[0,0],[0,0],[0,0],[-3.525,4.371],[-6.645,-7.529],[-10.904,0.256],[0,0],[-6.284,-8.755],[-3.439,-0.86],[0,0],[0,0],[15.046,-5.852],[6.699,7.871]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[9.411,-11.673],[0,0],[10.902,-0.255],[9.563,-4.966],[0,0],[1.672,0.418],[0,0],[0,0],[-7.551,2.936],[-0.278,7.522]],"v":[[24.745,55.753],[-50.702,55.158],[-57.581,2.85],[-75.118,44.242],[-70.719,-13.373],[-61.574,-32.21],[-22.01,-45.862],[-8.079,-39.176],[3.344,-46.977],[35.806,-33.224],[46.528,-19.811],[53.633,-54.499],[73.693,-55.753],[61.572,33.682],[32.318,19.055]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":50,"s":[{"i":[[0,-5.743],[0,0],[0,0],[0,0],[0,0],[-3.525,4.371],[-6.645,-7.529],[-10.904,0.256],[0,0],[-6.284,-8.755],[-3.439,-0.86],[0,0],[0,0],[15.046,-5.852],[6.699,7.871]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[9.411,-11.673],[0,0],[10.902,-0.255],[9.563,-4.966],[0,0],[1.672,0.418],[0,0],[0,0],[-7.551,2.936],[-0.278,7.522]],"v":[[24.745,55.753],[-50.702,55.158],[-57.581,2.85],[-75.118,44.242],[-70.719,-13.373],[-61.574,-32.21],[-22.01,-45.862],[-8.079,-39.176],[3.344,-46.977],[35.806,-33.224],[46.528,-19.811],[53.633,-54.499],[73.693,-55.753],[61.572,33.682],[32.318,19.055]],"c":true}]},{"t":75,"s":[{"i":[[0,-5.743],[0,0],[0,0],[0,0],[0,0],[-3.525,4.371],[-6.645,-7.529],[-10.904,0.256],[0,0],[-6.284,-8.755],[-3.439,-0.86],[0,0],[0,0],[15.046,-5.852],[6.699,7.871]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[9.411,-11.673],[0,0],[10.902,-0.255],[9.563,-4.966],[0,0],[1.672,0.418],[0,0],[0,0],[-7.551,2.936],[-0.278,7.522]],"v":[[24.745,55.753],[-50.702,55.158],[-57.581,2.85],[-76.618,44.409],[-72.719,-12.707],[-61.574,-32.21],[-22.01,-45.862],[-8.079,-39.176],[3.344,-46.977],[35.807,-33.224],[46.527,-19.811],[53.633,-54.499],[73.693,-55.753],[61.572,33.682],[32.318,19.055]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[452.71,243.489],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":4,"cix":2,"bm":0,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[-2.753,2.719],[0,0],[-3.058,-0.603],[0,0],[-2.632,-1.823],[0,0],[-1.266,-3.275],[0,0],[-1.388,-3.808],[0.952,-0.035]],"o":[[0,0],[1.993,-1.97],[0,0],[3.056,0.602],[0,0],[1.369,0.947],[0,0],[1.267,3.277],[0,0],[1.581,4.338],[-0.951,0.034]],"v":[[-11.288,18.714],[-15.783,-1.291],[-7.839,6.254],[-4.445,-14.935],[-0.612,-0.886],[5.312,-16.891],[5.773,-0.403],[13.661,-12.99],[10.009,0.395],[16.956,-8.488],[6.528,18.626]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[-2.753,2.719],[0,0],[-3.058,-0.603],[0,0],[-2.632,-1.823],[0,0],[-1.266,-3.275],[0,0],[-1.388,-3.808],[0.952,-0.035]],"o":[[0,0],[1.993,-1.97],[0,0],[3.056,0.602],[0,0],[1.369,0.947],[0,0],[1.267,3.277],[0,0],[1.581,4.338],[-0.951,0.034]],"v":[[-11.142,16.528],[-15.783,-1.291],[-7.839,6.254],[-4.445,-14.935],[-0.612,-0.886],[5.312,-16.891],[5.773,-0.403],[13.661,-12.99],[10.009,0.395],[16.956,-8.488],[7.639,19.837]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[{"i":[[0,0],[-2.753,2.719],[0,0],[-3.058,-0.603],[0,0],[-2.632,-1.823],[0,0],[-1.266,-3.275],[0,0],[-1.388,-3.808],[0.952,-0.035]],"o":[[0,0],[1.993,-1.97],[0,0],[3.056,0.602],[0,0],[1.369,0.947],[0,0],[1.267,3.277],[0,0],[1.581,4.338],[-0.951,0.034]],"v":[[-11.461,18.553],[-15.783,-1.291],[-7.839,6.254],[-4.445,-14.935],[-0.612,-0.886],[5.312,-16.891],[5.773,-0.403],[13.661,-12.99],[10.009,0.395],[16.956,-8.488],[6.941,18.528]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[-2.753,2.719],[0,0],[-3.058,-0.603],[0,0],[-2.632,-1.823],[0,0],[-1.266,-3.275],[0,0],[-1.388,-3.808],[0.952,-0.035]],"o":[[0,0],[1.993,-1.97],[0,0],[3.056,0.602],[0,0],[1.369,0.947],[0,0],[1.267,3.277],[0,0],[1.581,4.338],[-0.951,0.034]],"v":[[-11.142,16.528],[-15.783,-1.291],[-7.839,6.254],[-4.445,-14.935],[-0.612,-0.886],[5.312,-16.891],[5.773,-0.403],[13.661,-12.99],[10.009,0.395],[16.956,-8.488],[7.639,19.837]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":75,"s":[{"i":[[0,0],[-2.753,2.719],[0,0],[-3.058,-0.603],[0,0],[-2.632,-1.823],[0,0],[-1.266,-3.275],[0,0],[-1.388,-3.808],[0.952,-0.035]],"o":[[0,0],[1.993,-1.97],[0,0],[3.056,0.602],[0,0],[1.369,0.947],[0,0],[1.267,3.277],[0,0],[1.581,4.338],[-0.951,0.034]],"v":[[-11.461,18.553],[-15.783,-1.291],[-7.839,6.254],[-4.445,-14.935],[-0.612,-0.886],[5.312,-16.891],[5.773,-0.403],[13.661,-12.99],[10.009,0.395],[16.956,-8.488],[6.941,18.528]],"c":true}]},{"t":90,"s":[{"i":[[0,0],[-2.753,2.719],[0,0],[-3.058,-0.603],[0,0],[-2.632,-1.823],[0,0],[-1.266,-3.275],[0,0],[-1.388,-3.808],[0.952,-0.035]],"o":[[0,0],[1.993,-1.97],[0,0],[3.056,0.602],[0,0],[1.369,0.947],[0,0],[1.267,3.277],[0,0],[1.581,4.338],[-0.951,0.034]],"v":[[-11.288,18.714],[-15.783,-1.291],[-7.839,6.254],[-4.445,-14.935],[-0.612,-0.886],[5.312,-16.891],[5.773,-0.403],[13.661,-12.99],[10.009,0.395],[16.956,-8.488],[6.528,18.626]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.528999956916,0.286000001197,0.286000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[517.229,187.913],"ix":2},"a":{"a":0,"k":[-0.833,17],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[-10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[-10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[2]},{"t":90,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":3,"cix":2,"bm":0,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[7.649,10.309]],"o":[[0,0],[0,0],[0,0]],"v":[[-35.997,-12.969],[35.997,12.969],[24.524,-12.969]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.149000010771,0.298000021542,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[447.589,312.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":4,"cix":2,"bm":0,"ix":46,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.926,-22.149],[0,0]],"o":[[0,0],[9.067,68.655],[0,0]],"v":[[-21.326,-160.732],[-4.191,-110.582],[21.326,160.732]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.004,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[488.802,460.889],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":2,"cix":2,"bm":0,"ix":47,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-12.537,9.194]],"o":[[0,0],[0.418,-20.478],[0,0]],"v":[[-1.624,163.053],[-11.074,-101.202],[11.074,-163.053]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.004,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[405.415,461.539],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":2,"cix":2,"bm":0,"ix":48,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-8.912,-33.861],[-5.347,-154.759],[0,0],[0,0],[-0.156,-3.58],[0,0],[0,0],[-15.399,38.801]],"o":[[0,0],[0,0],[10.858,41.262],[0,0],[0,0],[-0.993,-3.443],[0,0],[0,0],[0,0],[15.4,-38.803]],"v":[[-32.735,-101.888],[24.294,-100.258],[42.117,-59.862],[74.195,223.217],[41.034,225.451],[-4.221,-16.494],[-10.153,-15.523],[-16.392,227.087],[-51.227,225.281],[-58.796,-54.492]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.149000010771,0.298000021542,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[446.032,398.112],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":4,"cix":2,"bm":0,"ix":49,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"тело Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[1.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[1.5]},{"t":75,"s":[0]}],"ix":10},"p":{"a":0,"k":[608.774,725.105,0],"ix":2},"a":{"a":0,"k":[322.637,340.553,0],"ix":1},"s":{"a":0,"k":[200,200,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.117,0.368],[-0.052,-0.619],[0.531,-0.512],[0.078,0.275],[0.028,0.259],[-0.041,0.274]],"o":[[0.687,0.337],[0.029,0.637],[-0.239,-0.312],[-0.082,-0.278],[-0.005,-0.261],[0.028,-0.275]],"v":[[-0.398,-1.703],[0.605,-0.064],[-0.077,1.702],[-0.488,0.813],[-0.623,0.013],[-0.594,-0.777]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[345.396,260.905],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.047,0.404],[-0.201,-0.285],[-0.094,-0.333],[0.057,-0.357],[0.294,-0.294],[0.123,0.288],[0.081,0.29],[0.012,0.318]],"o":[[0.391,0.143],[0.21,0.288],[0.071,0.337],[-0.05,0.353],[-0.217,-0.348],[-0.131,-0.285],[-0.06,-0.294],[-0.022,-0.319]],"v":[[-0.667,-1.86],[0.191,-1.148],[0.619,-0.204],[0.673,0.84],[0.206,1.859],[-0.282,0.947],[-0.575,0.087],[-0.708,-0.821]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[347.469,257.371],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.165,0.377],[-0.588,-0.246],[-0.251,-0.217],[-0.118,-0.127],[-0.053,-0.076],[0.064,-0.029],[-0.006,0.011],[-0.007,-0.007],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.03,-0.025],[0.152,-0.121],[0.067,-0.008],[0.092,-0.01],[0.164,0.028],[0.297,0.122],[0.251,0.225]],"o":[[0.781,-0.14],[0.285,0.14],[0.129,0.102],[0.055,0.072],[0.007,0.037],[-0.083,0.019],[0.003,0.009],[0.024,0.018],[0,0],[0,0],[0,0],[0,0],[0.007,0.001],[-0.005,0.022],[-0.141,0.009],[-0.096,0.016],[-0.176,0.002],[-0.334,-0.04],[-0.288,-0.144],[-0.251,-0.218]],"v":[[-1.773,-0.771],[0.21,-0.511],[1.024,0],[1.389,0.352],[1.555,0.564],[1.587,0.672],[1.524,0.784],[1.54,0.81],[1.555,0.81],[1.543,0.777],[1.512,0.708],[1.587,0.695],[1.627,0.691],[1.666,0.707],[1.621,0.855],[1.428,0.881],[1.152,0.909],[0.638,0.879],[-0.297,0.61],[-1.117,0.083]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[306.479,288.422],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.157,0.917],[-0.593,-0.484],[-0.401,-0.836],[0.63,0.52]],"o":[[0.885,0.273],[0.569,0.513],[-0.932,-0.017],[-0.606,-0.548]],"v":[[-1.793,-1.543],[0.292,-0.34],[1.793,1.543],[-0.51,0.592]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.961,294.871],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.395,0.13],[-0.571,0.299],[-0.334,0.053],[-0.395,-0.13],[0.572,-0.297],[0.334,-0.053]],"o":[[0.4,-0.674],[0.291,-0.133],[0.327,-0.057],[-0.399,0.677],[-0.292,0.131],[-0.327,0.056]],"v":[[-1.735,0.813],[-0.274,-0.55],[0.651,-0.855],[1.735,-0.813],[0.274,0.551],[-0.652,0.855]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[317.17,290.352],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.374,0.047],[0.108,-0.436],[0.275,-0.686],[0.099,0.326],[-0.079,0.319],[-0.236,0.222]],"o":[[0.023,0.729],[-0.135,0.437],[-0.335,-0.167],[-0.11,-0.331],[0.102,-0.314],[0.228,-0.223]],"v":[[0.733,-1.532],[0.535,0.076],[-0.006,1.531],[-0.646,0.737],[-0.648,-0.26],[-0.155,-1.086]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[309.872,291.821],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.556,2.424],[0.645,0.609],[1.127,-1.501],[1.884,-0.074],[1.36,0.773],[1.31,0.962],[0.265,0.264],[2.956,0.923],[-0.389,-0.758],[-0.641,-0.125],[-0.29,0.052],[-1.995,1.38],[-0.79,-0.161],[-0.703,0.993],[-1.915,-1.346],[-1.187,0.759],[-0.189,1.031]],"o":[[-0.203,-0.884],[0.028,1.903],[-1.156,1.541],[-1.835,0.071],[-1.23,0.592],[-0.324,-0.237],[-2.776,1.199],[0.105,0.826],[0.298,0.581],[0.289,0.056],[2.39,-0.419],[0.448,0.598],[1.268,0.26],[1.518,1.781],[1.153,0.81],[0.883,-0.564],[0.448,-2.445]],"v":[[12.47,-4.251],[11.238,-6.645],[9.736,-1.38],[4.911,1.058],[0.402,-0.358],[-3.608,-0.772],[-4.479,-1.53],[-13.026,-0.433],[-12.312,1.953],[-10.922,3.236],[-10.044,3.197],[-3.368,0.444],[-1.48,1.653],[1.735,0.378],[6.899,5.105],[10.795,5.886],[12.131,3.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.651000019148,0.097999999102,0.125,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[312.668,293.343],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.556,2.424],[1.069,0.518],[1.235,-0.59],[1.509,-1.305],[0.773,0.157],[0.627,-0.334],[2.698,0.879],[0.514,-0.141],[0.279,-1.035],[-1.401,-2.73],[-0.641,-0.125],[-0.29,0.052],[-1.995,1.38],[-0.79,-0.161],[-0.703,0.993],[-1.915,-1.346],[-1.188,0.759],[-0.189,1.031]],"o":[[-0.266,-1.158],[-1.232,-0.597],[-1.799,0.859],[-0.447,-0.578],[-0.75,-0.153],[-1.494,-2.41],[-0.507,-0.165],[-1.033,0.282],[-0.797,2.963],[0.299,0.581],[0.289,0.056],[2.39,-0.419],[0.448,0.598],[1.268,0.26],[1.518,1.781],[1.153,0.81],[0.882,-0.564],[0.448,-2.445]],"v":[[12.814,-2.73],[10.905,-5.598],[6.969,-5.132],[1.987,-1.855],[0.13,-3.025],[-1.982,-2.707],[-8.527,-7.87],[-10.096,-8.025],[-11.846,-5.512],[-11.969,3.475],[-10.579,4.758],[-9.701,4.719],[-3.025,1.965],[-1.137,3.174],[2.078,1.9],[7.242,6.626],[11.139,7.408],[12.474,4.667]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[312.333,292.073],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.141,-0.682],[-2.748,-0.762],[-0.802,2.832],[0.189,-0.669],[2.653,0.76],[-0.418,2.02]],"o":[[-0.535,2.585],[3.27,0.907],[0.189,-0.669],[-0.627,2.215],[-2.153,-0.616],[0.14,-0.678]],"v":[[-4.473,-3.294],[-1.152,3.069],[4.819,-1.246],[3.778,-1.533],[-0.865,2.027],[-3.432,-3.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[312.689,277.612],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":4,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.38,3.024],[3.024,0.381],[0.381,-3.024],[-3.024,-0.381]],"o":[[0.38,-3.024],[-3.024,-0.38],[-0.38,3.024],[3.024,0.38]],"v":[[5.476,0.689],[0.689,-5.476],[-5.476,-0.689],[-0.689,5.476]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.745000023935,0.757000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[299.106,271.749],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.376,2.992],[2.991,0.377],[0.376,-2.992],[-2.992,-0.376]],"o":[[0.376,-2.991],[-2.992,-0.376],[-0.377,2.991],[2.992,0.377]],"v":[[5.417,0.681],[0.682,-5.417],[-5.416,-0.681],[-0.681,5.416]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.745000023935,0.757000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[329.325,275.275],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":4,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.113,0.896],[0.898,0.113],[0.113,-0.897],[-0.897,-0.113]],"o":[[0.113,-0.897],[-0.897,-0.112],[-0.112,0.897],[0.898,0.113]],"v":[[1.624,0.204],[0.204,-1.625],[-1.625,-0.205],[-0.205,1.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.499,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[321.392,272.252],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.113,0.896],[0.898,0.113],[0.113,-0.897],[-0.897,-0.113]],"o":[[0.113,-0.897],[-0.897,-0.112],[-0.112,0.897],[0.898,0.113]],"v":[[1.624,0.204],[0.204,-1.625],[-1.625,-0.205],[-0.205,1.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[321.392,272.252],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.113,0.897],[0.898,0.113],[0.113,-0.897],[-0.897,-0.112]],"o":[[0.113,-0.897],[-0.897,-0.112],[-0.112,0.897],[0.898,0.113]],"v":[[1.624,0.204],[0.204,-1.625],[-1.625,-0.205],[-0.205,1.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.499,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[307.192,270.363],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.113,0.897],[0.898,0.113],[0.113,-0.897],[-0.897,-0.112]],"o":[[0.113,-0.897],[-0.897,-0.112],[-0.112,0.897],[0.898,0.113]],"v":[[1.624,0.204],[0.204,-1.625],[-1.625,-0.205],[-0.205,1.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[307.192,270.363],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.373,4.834],[-1.068,-3.576],[14.65,-2.319],[5.174,9.133],[-14.558,-1.832],[-1.868,14.851]],"o":[[2.479,2.726],[4.558,15.253],[-11.066,1.751],[0.612,12.874],[16.896,2.125],[1.543,-12.271]],"v":[[11.804,-25.972],[17.257,-16.43],[-4.755,14.478],[-30.876,0.847],[-3.289,25.695],[30.686,2.653]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.910000011968,0.859000052658,0.811999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[320.281,266.73],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-7.357,-0.55],[-4.47,4.698],[7.345,0.924],[5.724,-3.612]],"o":[[6.769,0.505],[-4.796,-4.456],[-8.253,-1.038],[4.732,6.481]],"v":[[1.964,7.623],[19.892,1.414],[1.299,-7.09],[-19.892,-3.144]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.455,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[322.459,245.734],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-7.357,-0.55],[-4.47,4.698],[7.345,0.924],[5.724,-3.612]],"o":[[6.769,0.505],[-4.796,-4.456],[-8.253,-1.038],[4.732,6.481]],"v":[[1.964,7.623],[19.892,1.414],[1.299,-7.09],[-19.892,-3.144]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[322.459,245.734],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":4,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.868,14.852],[16.896,2.125],[4.226,-16.768],[-16.895,-2.125]],"o":[[1.868,-14.851],[-16.895,-2.126],[-3.981,15.794],[16.896,2.126]],"v":[[31.514,3.848],[4.305,-26.89],[-29.401,-4.343],[-2.461,26.89]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.509,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[319.453,265.534],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.868,14.852],[16.896,2.125],[4.226,-16.768],[-16.895,-2.125]],"o":[[1.868,-14.851],[-16.895,-2.126],[-3.981,15.794],[16.896,2.126]],"v":[[31.514,3.848],[4.305,-26.89],[-29.401,-4.343],[-2.461,26.89]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.630999995213,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[319.453,265.534],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":4,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.603,-0.04],[-33.744,-0.242],[0.608,0.004],[33.67,2.256]],"o":[[33.67,2.257],[0.607,0.004],[-33.744,-0.243],[-0.605,-0.04]],"v":[[-50.572,-1.385],[50.568,2.363],[50.568,1.421],[-50.572,-2.327]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[317.446,330.444],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":4,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.603,-0.044],[-32.925,-1.132],[0.606,0.02],[32.859,2.364]],"o":[[32.859,2.364],[0.607,0.021],[-32.925,-1.132],[-0.605,-0.044]],"v":[[-49.343,-2.14],[49.341,3.104],[49.341,2.162],[-49.343,-3.081]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.18,335.884],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.155,-0.588],[-0.16,-3.372],[0.029,0.607],[0.886,3.346]],"o":[[0.864,3.262],[0.028,0.603],[-0.164,-3.457],[-0.155,-0.586]],"v":[[-1.176,-4.853],[0.36,5.083],[1.302,5.083],[-0.267,-5.103]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.975,342.718],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":4,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.186,-0.58],[0.06,-2.684],[-0.014,0.606],[0.845,2.639]],"o":[[0.819,2.558],[-0.014,0.606],[0.063,-2.771],[-0.184,-0.576]],"v":[[-0.977,-3.813],[0.159,4.033],[1.1,4.033],[-0.068,-4.063]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[351.489,342.513],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":4,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.054,-0.604],[-0.32,-3.577],[0.034,0.613],[0.02,0.374],[-0.032,-0.607],[-0.021,-0.375],[0,0],[0.32,3.576]],"o":[[0.32,3.576],[0.053,0.595],[-0.02,-0.375],[-0.032,-0.603],[0.02,0.374],[0,0],[-0.319,-3.577],[-0.053,-0.6]],"v":[[-0.94,-5.369],[0.018,5.36],[0.96,5.36],[0.9,4.237],[-0.043,4.237],[0.018,5.36],[0.96,5.36],[0.001,-5.369]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[345.015,342.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":4,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.104,-0.594],[-0.086,-3.479],[0.015,0.608],[0.613,3.511]],"o":[[0.599,3.43],[0.015,0.605],[-0.089,-3.564],[-0.104,-0.597]],"v":[[-0.937,-5.057],[0.084,5.295],[1.027,5.295],[-0.028,-5.307]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[338.558,341.669],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":4,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.023,-0.605],[-0.168,-2.153],[-0.478,-0.851],[-0.203,0.225],[-0.024,0.243],[0.06,-0.598],[-0.025,0.009],[-0.246,-0.033],[0.072,0.902],[-0.075,1.967]],"o":[[-0.083,2.165],[0.073,0.945],[0.144,0.255],[0.169,-0.186],[0.061,-0.602],[0.025,-0.007],[0.247,0.031],[-0.447,-0.796],[-0.155,-1.953],[0.024,-0.606]],"v":[[-0.878,-4.727],[-0.435,1.735],[-0.04,5.013],[0.701,5.108],[0.9,4.467],[-0.042,4.467],[0.034,4.442],[0.774,4.538],[0.46,1.116],[0.064,-4.727]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[332.895,341.66],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":4,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.061,-0.604],[-0.32,-3.2],[-0.001,0.619],[0,0.137],[0.002,-0.608],[0.001,-0.139],[0,0],[0.321,3.198]],"o":[[0.321,3.198],[0.06,0.591],[0,-0.139],[0.002,-0.607],[0,0.137],[0,0],[-0.321,-3.2],[-0.06,-0.599]],"v":[[-0.923,-4.806],[0.038,4.791],[0.982,4.791],[0.982,4.376],[0.039,4.376],[0.038,4.791],[0.982,4.791],[0.018,-4.806]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[326.126,341.335],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":4,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.055,-0.605],[-0.275,-3.064],[0.054,0.606],[0.276,3.064]],"o":[[0.275,3.064],[0.054,0.6],[-0.276,-3.064],[-0.053,-0.6]],"v":[[-0.884,-4.598],[-0.058,4.596],[0.885,4.596],[0.058,-4.598]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[319.836,341.541],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":4,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.167,-0.585],[0.364,-2.942],[-0.074,0.595],[0.838,2.932]],"o":[[0.816,2.854],[-0.075,0.6],[0.376,-3.029],[-0.167,-0.582]],"v":[[-0.909,-4.22],[-0.242,4.451],[0.7,4.451],[0,-4.47]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[313.81,341.668],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":4,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.018,-0.606],[-0.28,-2.641],[0.064,0.604],[-0.077,2.655]],"o":[[-0.077,2.655],[0.064,0.597],[-0.281,-2.641],[0.017,-0.607]],"v":[[-0.617,-3.968],[-0.312,3.97],[0.631,3.97],[0.326,-3.968]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[308.592,340.894],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":4,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,-0.599],[-0.615,-3.143],[0.116,0.594],[-0.45,2.995]],"o":[[-0.476,3.168],[0.117,0.595],[-0.582,-2.972],[0.089,-0.594]],"v":[[-0.376,-4.718],[-0.173,4.722],[0.736,4.471],[0.533,-4.467]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[301.801,341.509],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":4,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.043,-0.603],[-0.326,-2.649],[0.074,0.603],[-0.189,2.663]],"o":[[-0.188,2.664],[0.073,0.595],[-0.327,-2.65],[0.042,-0.605]],"v":[[-0.518,-3.979],[-0.311,3.98],[0.632,3.98],[0.425,-3.979]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[296.216,340.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":4,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.036,-0.604],[-0.416,-2.681],[0.092,0.595],[-0.153,2.622]],"o":[[-0.158,2.709],[0.093,0.597],[-0.403,-2.597],[0.035,-0.606]],"v":[[-0.62,-4.03],[-0.223,4.038],[0.686,3.788],[0.323,-4.03]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[290.443,340.546],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":4,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.607],[0,0],[0,0.608],[0,0]],"o":[[0,0],[0,0.607],[0,0],[0,-0.606]],"v":[[-0.471,-3.97],[-0.471,3.97],[0.471,3.97],[0.471,-3.97]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[284.846,340.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":4,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.07,-0.597],[-0.07,-3.494],[0.012,0.608],[-0.405,3.471]],"o":[[-0.406,3.471],[0.013,0.606],[-0.07,-3.494],[0.071,-0.602]],"v":[[-0.22,-5.222],[-0.723,5.216],[0.22,5.216],[0.722,-5.222]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.076,340.076],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":4,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.092,-0.599],[-0.173,-3.126],[0.033,0.607],[-0.463,3.011]],"o":[[-0.476,3.093],[0.033,0.603],[-0.168,-3.039],[0.091,-0.593]],"v":[[-0.181,-4.659],[-0.646,4.651],[0.297,4.651],[0.728,-4.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[275.847,339.804],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":4,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.607],[0,0],[0,0.608],[0,0]],"o":[[0,0],[0,0.607],[0,0],[0,-0.606]],"v":[[-0.471,-4.806],[-0.471,4.806],[0.471,4.806],[0.471,-4.806]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[271.054,339.651],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":4,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.821,0.896],[-4.793,5.231],[0.821,-0.896],[4.793,-5.23]],"o":[[4.793,-5.23],[0.818,-0.893],[-4.793,5.231],[-0.818,0.893]],"v":[[-6.522,8.512],[7.855,-7.18],[6.522,-8.513],[-7.855,7.18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[487.346,184.201],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":4,"cix":2,"bm":0,"ix":47,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.914,0.79],[-5.375,3.384],[1.031,-0.65],[4.928,-4.255]],"o":[[4.808,-4.152],[1.024,-0.644],[-5.509,3.469],[-0.92,0.794]],"v":[[-7.021,6.391],[8.25,-4.904],[7.298,-6.531],[-8.354,5.059]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[482.478,177.654],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":4,"cix":2,"bm":0,"ix":48,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.995,0.701],[-6.083,3.477],[1.055,-0.604],[5.728,-4.036]],"o":[[5.729,-4.036],[1.054,-0.602],[-6.083,3.478],[-0.985,0.693]],"v":[[-8.417,6.399],[9.298,-4.868],[8.347,-6.497],[-9.368,4.771]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[477.759,171.478],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":4,"cix":2,"bm":0,"ix":49,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.885,0.829],[-5.711,2.899],[1.08,-0.548],[4.791,-4.486]],"o":[[4.678,-4.379],[1.082,-0.549],[-5.855,2.972],[-0.887,0.831]],"v":[[-7.227,6.128],[8.365,-4.781],[7.414,-6.409],[-8.56,4.795]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[472.87,165.985],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":4,"cix":2,"bm":0,"ix":50,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.718,-0.981],[-9.162,-10.508],[0,0],[0.291,0.228],[-0.954,-0.749],[-0.291,-0.229],[0.814,0.935],[8.135,11.124]],"o":[[8.229,11.252],[0,0],[-0.291,-0.228],[-0.944,-0.74],[0.291,0.228],[0.94,0.737],[-9.057,-10.386],[-0.709,-0.969]],"v":[[-13.757,-15.731],[12.329,16.915],[13.661,15.581],[12.789,14.897],[11.456,16.23],[12.329,16.915],[13.661,15.581],[-12.129,-16.683]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[467.475,186.801],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 51","np":4,"cix":2,"bm":0,"ix":51,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.76,-0.934],[-7.829,-10.262],[0.736,0.965],[8.24,10.141]],"o":[[8.14,10.016],[0.727,0.951],[-7.927,-10.389],[-0.766,-0.942]],"v":[[-12.779,-14.546],[11.175,15.869],[12.803,14.917],[-11.446,-15.878]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[472.347,182.582],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 52","np":4,"cix":2,"bm":0,"ix":52,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.354,-1.165],[-2.729,-4.252],[0.658,1.025],[1.426,4.691]],"o":[[1.469,4.834],[0.653,1.018],[-2.647,-4.124],[-0.351,-1.158]],"v":[[-4.112,-6.499],[2.18,7.14],[3.808,6.189],[-2.295,-7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[152.242,129.285],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 53","np":4,"cix":2,"bm":0,"ix":53,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.404,-1.148],[-2.452,-4.037],[0.632,1.04],[1.514,4.307]],"o":[[1.567,4.456],[0.629,1.035],[-2.369,-3.901],[-0.4,-1.137]],"v":[[-3.935,-6.067],[2.08,6.669],[3.708,5.718],[-2.117,-6.568]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.394,135.146],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 54","np":4,"cix":2,"bm":0,"ix":54,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.382,-1.156],[-2.509,-4.003],[0.647,1.032],[1.435,4.341]],"o":[[1.483,4.486],[0.644,1.026],[-2.427,-3.873],[-0.379,-1.146]],"v":[[-3.936,-6.06],[2.044,6.681],[3.671,5.73],[-2.118,-6.561]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.6,138.046],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 55","np":4,"cix":2,"bm":0,"ix":55,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.623,-1.045],[-2.176,-3.653],[0.623,1.046],[2.177,3.653]],"o":[[2.177,3.653],[0.621,1.041],[-2.177,-3.653],[-0.621,-1.042]],"v":[[-4.079,-5.004],[2.451,5.956],[4.079,5.005],[-2.451,-5.954]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.375,142.15],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 56","np":4,"cix":2,"bm":0,"ix":56,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.553,-1.079],[-2.331,-2.873],[0.758,0.935],[1.613,3.146]],"o":[[1.689,3.293],[0.765,0.943],[-2.228,-2.746],[-0.554,-1.079]],"v":[[-3.79,-4.072],[2.252,5.16],[3.585,3.826],[-2.162,-5.024]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[133.327,145.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 57","np":4,"cix":2,"bm":0,"ix":57,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.683,0.995],[-8.918,6.944],[0.946,-0.738],[6.493,-9.46]],"o":[[6.4,-9.326],[0.956,-0.745],[-9.05,7.047],[-0.688,1.003]],"v":[[-10.934,12.781],[12.293,-11.705],[10.96,-13.038],[-12.562,11.829]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[148.679,152.465],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 58","np":4,"cix":2,"bm":0,"ix":58,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.782,0.93],[-8.65,7.023],[0.934,-0.759],[7.161,-8.512]],"o":[[7.161,-8.512],[0.942,-0.765],[-8.65,7.023],[-0.776,0.923]],"v":[[-11.155,12.461],[12.322,-11.299],[10.989,-12.632],[-12.488,11.128]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[145.725,147.462],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 59","np":4,"cix":2,"bm":0,"ix":59,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.127,-1.207],[4.48,-1.712],[4.166,-0.535],[1.332,-4.424],[4.884,-6.606],[7.504,0.231],[6.882,5.262],[6.096,2.126],[12.615,-1.281],[0.655,16.778],[-0.048,-1.215],[-12.792,-6.198],[-14.958,0.535],[-7.284,-5.461],[-7.712,-1.039],[-1.804,13.736],[-3.08,4.882],[-5.869,0.754],[0.667,6.358]],"o":[[0.488,4.655],[-4.08,1.559],[-4.813,0.618],[-2.221,7.37],[-4.535,6.133],[-8.839,-0.273],[-5.027,-3.843],[-12.955,-4.518],[-18.535,1.883],[-0.047,-1.209],[0.547,14.015],[15.051,7.292],[9.811,-0.352],[6.159,4.616],[12.983,1.75],[0.717,-5.453],[4.092,-6.486],[6.519,-0.837],[-0.125,-1.194]],"v":[[81.178,-26.464],[74.827,-15.551],[62.484,-15.506],[53.342,-6.575],[48.517,15.327],[28.686,24.329],[4.798,14.481],[-11.035,3.851],[-48.803,10.076],[-81.798,-24.179],[-83.682,-24.179],[-62.323,9.507],[-19.214,4.571],[4.365,16.52],[25.361,25.92],[53.825,6.61],[56.75,-9.652],[72.873,-13.071],[83.063,-26.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[315.688,209.662],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 60","np":4,"cix":2,"bm":0,"ix":60,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[35.384,25.632],[0,0],[-15.602,16.716],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.911,-6.548],[-18.389,-15.185],[17.552,-19.085],[25.911,-13.792]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[315.354,178.542],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 61","np":2,"cix":2,"bm":0,"ix":61,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[35.384,25.632],[0,0],[-15.602,16.716],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.911,-6.548],[-18.389,-15.185],[17.552,-19.085],[25.911,-13.792]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[315.354,178.542],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 62","np":4,"cix":2,"bm":0,"ix":62,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-17.026,-13.783],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-23.175,-4.428],[23.175,1.877],[-9.006,11.906]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[507.408,167.471],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 63","np":4,"cix":2,"bm":0,"ix":63,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.288,37.697],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[32.478,-55.775],[-32.478,55.348],[14.255,55.776]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.243000000598,0.289999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[350.588,291.281],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 64","np":4,"cix":2,"bm":0,"ix":64,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.253,-5.852],[6.001,-3.036],[10.886,4.391],[10.178,2.075],[0.481,7.125],[2.999,-0.782],[-13.277,-0.236],[-5.867,2.489],[-6.754,-1.429],[-5.518,-5.144],[-5.341,-2.082],[-5.331,3.77],[-1.018,4.139],[-0.506,3.41],[-8.268,0.47],[-3.032,3.024],[-0.342,0.852]],"o":[[-6.437,2.844],[-3.193,5.745],[-12.579,6.364],[-9.833,-3.967],[-8.472,-1.728],[-11.229,2.657],[1.104,12.896],[6.589,0.117],[6.223,-2.64],[7.541,1.594],[4.078,3.803],[6.57,2.561],[3.419,-2.418],[0.824,-3.348],[1.245,-8.373],[3.861,-0.22],[0.68,-0.677],[0,0]],"v":[[50.319,-25.662],[38.139,-11.252],[24.584,3.399],[-9.695,-6.005],[-40.58,-5.667],[-52.423,-20.865],[-75.823,-15.061],[-52.4,12.7],[-33.893,6.493],[-14.44,3.708],[4.961,15.391],[14.551,23.101],[40.462,19.339],[45.719,11.561],[46.444,1.232],[62.221,-12.42],[74.325,-14.088],[75.822,-16.411]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[316.683,198.905],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 65","np":2,"cix":2,"bm":0,"ix":65,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.253,-5.852],[6.001,-3.036],[10.886,4.391],[10.178,2.075],[0.481,7.125],[2.999,-0.782],[-13.277,-0.236],[-5.867,2.489],[-6.754,-1.429],[-5.518,-5.144],[-5.341,-2.082],[-5.331,3.77],[-1.018,4.139],[-0.506,3.41],[-8.268,0.47],[-3.032,3.024],[-0.342,0.852]],"o":[[-6.437,2.844],[-3.193,5.745],[-12.579,6.364],[-9.833,-3.967],[-8.472,-1.728],[-11.229,2.657],[1.104,12.896],[6.589,0.117],[6.223,-2.64],[7.541,1.594],[4.078,3.803],[6.57,2.561],[3.419,-2.418],[0.824,-3.348],[1.245,-8.373],[3.861,-0.22],[0.68,-0.677],[0,0]],"v":[[50.319,-25.662],[38.139,-11.252],[24.584,3.399],[-9.695,-6.005],[-40.58,-5.667],[-52.423,-20.865],[-75.823,-15.061],[-52.4,12.7],[-33.893,6.493],[-14.44,3.708],[4.961,15.391],[14.551,23.101],[40.462,19.339],[45.719,11.561],[46.444,1.232],[62.221,-12.42],[74.325,-14.088],[75.822,-16.411]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.683,198.905],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 66","np":4,"cix":2,"bm":0,"ix":66,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-17.026,-13.783],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-23.175,-4.428],[23.175,1.877],[-9.006,11.906]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[507.408,167.471],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 67","np":4,"cix":2,"bm":0,"ix":67,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.288,37.697],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[32.478,-55.776],[-32.477,55.347],[14.256,55.775]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[350.588,291.281],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":4,"cix":2,"bm":0,"ix":68,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.666,-1.115],[0,0],[0,0],[-2.926,43.55],[0,0],[-22.465,14.487],[0,0],[0,0],[14.246,5.169],[0,0],[5.056,0.475],[0,0],[0,0],[0,0],[0,0],[0,0],[14.593,72.357],[0,0],[-107.622,-12.16]],"o":[[2.943,1.29],[0,0],[0,0],[0,0],[0,0],[23.402,8.212],[19.146,-12.348],[0,0],[0,0],[0,0],[-5.154,-2.492],[-0.32,-0.114],[0,0],[0,0],[0,0],[-24.218,4.638],[0,0],[0,0],[0,0],[0,0]],"v":[[-52.186,13.756],[-39.577,17.579],[-48.811,113.294],[51.452,114.91],[69.663,3.259],[71.449,3.935],[116.055,20.367],[186.683,-51.933],[164.389,-75.849],[91.137,-45.292],[45.625,-61.801],[30.054,-66.541],[29.548,-66.715],[17.085,-72.82],[-10.122,-67.677],[-19.767,-60.488],[-73.588,-48.025],[-159.93,-114.91],[-186.683,-89.372],[-55.956,14.602]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.149000010771,0.298000021542,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[313.391,232.147],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 69","np":4,"cix":2,"bm":0,"ix":69,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.618,-3.236],[3.237,-0.54],[-1.079,-7.013],[1.618,-1.618],[2.158,-2.697],[-1.079,-3.237],[1.194,-1.217],[0,0],[-4.32,4.786],[0,0],[3.237,-2.697],[1.618,-2.158]],"o":[[-1.619,3.237],[-3.236,0.539],[1.078,7.012],[-1.619,1.619],[-2.158,2.697],[1.079,3.236],[-2.766,2.821],[0,0],[4.32,-4.786],[0,0],[-3.236,2.697],[-1.618,2.157]],"v":[[-6.203,-33.984],[0.809,-9.709],[-15.373,-26.431],[-6.203,-4.855],[-21.307,-20.498],[-13.755,-1.618],[-20.228,-7.013],[4.585,37.22],[22.949,31.606],[23.465,13.486],[14.834,-24.274],[9.44,-10.788]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[143.957,133.882],"ix":2},"a":{"a":0,"k":[15.613,26.792],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":46,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":68,"s":[-19]},{"t":90,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 70","np":4,"cix":2,"bm":0,"ix":70,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"ноги Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[620.347,972.211,0],"ix":2},"a":{"a":0,"k":[328.423,464.106,0],"ix":1},"s":{"a":0,"k":[200,200,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[51.198,-11.336],[-51.198,13.301],[-46.321,-13.302]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[313.645,358.392],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-22.611,134.772],[22.611,-134.772]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.946,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[263.966,464.106],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[-0.448,-0.448],[0,0]],"v":[[-38.876,-133.36],[39.324,133.807]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.946,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[379.631,464.932],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[2.695,-7.534],[0,0],[0,0],[-20.867,115.718]],"o":[[0,0],[0,0],[0,0],[-2.513,-7.61],[0,0],[0,0],[0,0],[0,0]],"v":[[31.165,-82.069],[98.892,182.786],[70.757,182.056],[-8.476,2.571],[-22.108,2.571],[-67.732,183.155],[-98.892,182.668],[-59.063,-84.692]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.423,415.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"голова Outlines","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"i":{"x":[0.667],"y":[0.867]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[-0.296]},"t":50,"s":[15.52]},{"t":84,"s":[0]}],"ix":10},"p":{"a":0,"k":[317.342,143.65,0],"ix":2},"a":{"a":0,"k":[317.342,143.65,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.122,-22.486],[-4.427,-1.262],[-10.754,-5.513],[4.135,1.898]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.029,7.928],[-14.347,15.009],[18.433,-6.914],[14.639,-15.009]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[305.353,90.898],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.903,2.435],[2.434,-0.904],[-0.903,-2.435],[-2.435,0.903]],"o":[[-0.903,-2.435],[-2.435,0.902],[0.903,2.435],[2.434,-0.903]],"v":[[4.409,-1.635],[-1.635,-4.408],[-4.409,1.635],[1.635,4.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.17},"t":5,"s":[277.283,112.316],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.83},"o":{"x":0.333,"y":0},"t":20,"s":[276.853,114.524],"to":[0,0],"ti":[0,0]},{"t":33,"s":[277.283,112.316]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":5,"s":[{"i":[[0,0],[-6.5,-4.715],[-0.015,4.228],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.798,-9.019],[-1.685,10.463],[8.184,-3.49],[-5.751,-10.463]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":20,"s":[{"i":[[0,0],[-6.5,-4.715],[-0.015,4.228],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.798,-9.019],[-1.868,12.719],[8.184,-3.49],[-5.751,-10.463]],"c":true}]},{"t":33,"s":[{"i":[[0,0],[-6.5,-4.715],[-0.015,4.228],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.798,-9.019],[-1.685,10.463],[8.184,-3.49],[-5.751,-10.463]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[278.563,101.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.16,-11.818],[1.206,6.754],[-4.414,3.221],[-4.494,-7.828]],"o":[[0,0],[-0.401,-2.251],[32.009,-24.571],[0,0]],"v":[[-6.077,21.071],[-24.592,11.68],[-19.192,3.5],[24.993,-0.481]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[296.256,81.183],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":5,"s":[{"i":[[0.858,1.991],[0.137,0.28],[0,0],[11.221,4.868],[7.128,-18.745],[-0.208,-0.461],[0.143,-0.388],[-0.423,-2.991],[-1.326,-0.13],[-1.944,5.783],[-3.742,0.936],[-3.619,1.292],[-0.962,-0.038]],"o":[[-0.13,-0.301],[1.378,-0.626],[0,0],[-0.954,-0.414],[-0.194,0.509],[-0.177,0.374],[-1.063,2.885],[0.202,1.421],[0.598,0.059],[3.237,0.418],[8.359,-2.089],[2.089,5.642],[0.924,0.036]],"v":[[17.195,-1.257],[16.789,-2.123],[23.309,-10.141],[7.491,-15.427],[-21.667,-1.32],[-21.616,0.136],[-22.1,1.28],[-22.885,10.322],[-18.776,20.006],[-15.766,4.277],[-2.393,-0.529],[12.444,0.098],[19.617,11.611]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":20,"s":[{"i":[[0.858,1.991],[0.137,0.28],[0,0],[7.296,3.087],[7.128,-18.745],[-0.208,-0.461],[0.143,-0.388],[-0.423,-2.991],[-1.326,-0.13],[-1.944,5.783],[-3.742,0.936],[-3.619,1.292],[-0.962,-0.038]],"o":[[-0.13,-0.301],[1.378,-0.626],[0,0],[-0.958,-0.405],[-0.194,0.509],[-0.177,0.374],[-1.063,2.885],[0.202,1.421],[0.598,0.059],[3.237,0.418],[8.359,-2.089],[2.089,5.642],[0.924,0.036]],"v":[[17.195,-1.257],[16.789,-2.123],[20.251,-12.932],[7.491,-15.427],[-21.667,-1.32],[-21.616,0.136],[-22.1,1.28],[-22.885,10.322],[-18.776,20.006],[-15.766,4.277],[-2.393,-0.529],[12.444,0.098],[19.617,11.611]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[{"i":[[0.858,1.991],[0.137,0.28],[0,0],[11.221,4.868],[7.128,-18.745],[-0.208,-0.461],[0.143,-0.388],[-0.423,-2.991],[-1.326,-0.13],[-1.944,5.783],[-3.742,0.936],[-3.619,1.292],[-0.962,-0.038]],"o":[[-0.13,-0.301],[1.378,-0.626],[0,0],[-0.954,-0.414],[-0.194,0.509],[-0.177,0.374],[-1.063,2.885],[0.202,1.421],[0.598,0.059],[3.237,0.418],[8.359,-2.089],[2.089,5.642],[0.924,0.036]],"v":[[17.195,-1.257],[16.789,-2.123],[23.309,-10.141],[7.491,-15.427],[-21.667,-1.32],[-21.616,0.136],[-22.1,1.28],[-22.885,10.322],[-18.776,20.006],[-15.766,4.277],[-2.393,-0.529],[12.444,0.098],[19.617,11.611]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":50,"s":[{"i":[[0.858,1.991],[0.137,0.28],[0,0],[11.221,4.868],[7.128,-18.745],[-0.208,-0.461],[0.143,-0.388],[-0.423,-2.991],[-1.326,-0.13],[-1.944,5.783],[-3.742,0.936],[-3.619,1.292],[-0.962,-0.038]],"o":[[-0.13,-0.301],[1.378,-0.626],[0,0],[-0.954,-0.414],[-0.194,0.509],[-0.177,0.374],[-1.063,2.885],[0.202,1.421],[0.598,0.059],[3.237,0.418],[8.359,-2.089],[2.089,5.642],[0.924,0.036]],"v":[[17.195,-1.257],[16.789,-2.123],[23.309,-10.141],[7.491,-15.427],[-21.667,-1.32],[-21.616,0.136],[-22.1,1.28],[-22.885,10.322],[-18.776,20.006],[-15.766,4.277],[-2.393,-0.529],[12.444,0.098],[19.617,11.611]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":56,"s":[{"i":[[0.858,1.991],[0.137,0.28],[0,0],[11.221,4.868],[7.128,-18.745],[-0.208,-0.461],[0.143,-0.388],[-0.423,-2.991],[-1.326,-0.13],[-1.944,5.783],[-3.742,0.936],[-3.619,1.292],[-0.962,-0.038]],"o":[[-0.13,-0.301],[1.378,-0.626],[0,0],[-0.954,-0.414],[-0.194,0.509],[-0.177,0.374],[-1.063,2.885],[0.202,1.421],[0.598,0.059],[3.237,0.418],[8.359,-2.089],[2.089,5.642],[0.924,0.036]],"v":[[17.195,-1.257],[16.789,-2.123],[25.883,-9.435],[7.491,-15.427],[-21.667,-1.32],[-21.616,0.136],[-22.1,1.28],[-22.885,10.322],[-18.776,20.006],[-15.766,4.277],[-2.393,-0.529],[12.444,0.098],[19.617,11.611]],"c":true}]},{"t":66,"s":[{"i":[[0.858,1.991],[0.137,0.28],[0,0],[11.221,4.868],[7.128,-18.745],[-0.208,-0.461],[0.143,-0.388],[-0.423,-2.991],[-1.326,-0.13],[-1.944,5.783],[-3.742,0.936],[-3.619,1.292],[-0.962,-0.038]],"o":[[-0.13,-0.301],[1.378,-0.626],[0,0],[-0.954,-0.414],[-0.194,0.509],[-0.177,0.374],[-1.063,2.885],[0.202,1.421],[0.598,0.059],[3.237,0.418],[8.359,-2.089],[2.089,5.642],[0.924,0.036]],"v":[[17.195,-1.257],[16.789,-2.123],[23.309,-10.141],[7.491,-15.427],[-21.667,-1.32],[-21.616,0.136],[-22.1,1.28],[-22.885,10.322],[-18.776,20.006],[-15.766,4.277],[-2.393,-0.529],[12.444,0.098],[19.617,11.611]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[314.195,98.413],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.099,-1.628],[1.673,0.223],[0.193,-1.444]],"o":[[1.29,0.678],[-1.673,-0.224],[0,0]],"v":[[2.384,1.283],[-0.296,-1.737],[-3.673,0.473]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[320.768,109.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.646,-2.291],[-1.577,0.597],[-0.517,-1.363]],"o":[[-1.103,0.954],[1.579,-0.598],[0,0]],"v":[[-2.305,1.597],[-0.384,-1.953],[3.409,-0.569]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[307.028,112.252],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.511,-0.027],[0,0],[-0.173,0.556],[0,0],[-0.297,-0.583],[0,0]],"o":[[0,0],[-0.489,0.026],[0,0],[0.196,-0.631],[0,0],[0.274,0.537]],"v":[[2.012,3.173],[-1.965,3.383],[-2.639,2.252],[-1.089,-2.71],[0.111,-2.827],[2.537,1.923]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.294000004787,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[315.525,121.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.003,-0.848],[0.618,0.002],[-0.004,0.847],[-0.619,-0.002]],"o":[[-0.003,0.848],[-0.62,-0.003],[0.003,-0.848],[0.618,0.002]],"v":[[1.121,0.004],[-0.005,1.535],[-1.12,-0.004],[0.007,-1.535]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[320.065,117.06],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.003,-0.844],[0.618,-0.002],[0.004,0.845],[-0.619,0.002]],"o":[[0.003,0.845],[-0.619,0.003],[-0.003,-0.845],[0.619,-0.002]],"v":[[1.121,-0.005],[0.007,1.529],[-1.121,0.004],[-0.005,-1.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[309.992,118.146],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.719,-0.423],[0,0],[0.11,4.072],[0,0],[0,0],[0,0]],"o":[[0,0],[-4.718,0.423],[0,0],[0,0],[0,0],[0.11,4.073]],"v":[[0.159,4.137],[0.143,4.138],[-8.6,-2.47],[-8.615,-3.027],[8.49,-4.561],[8.505,-4.004]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.09,131.225],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.246,-0.979],[0,0],[0.224,11.569],[0,0],[-10.72,0.843],[0,0],[-0.223,-11.57],[0,0]],"o":[[0,0],[-13.582,0.573],[0,0],[-0.224,-11.569],[0,0],[13.94,-1.147],[0,0],[0.223,11.57]],"v":[[0.296,26.287],[0.173,26.318],[-19.403,6.177],[-19.42,5.292],[-2.646,-25.621],[-2.676,-25.743],[19.403,2.241],[19.421,3.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.917,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[314.956,116.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.733,-0.086],[0,0],[0,0],[0,0],[0.042,0.789]],"o":[[0,0],[0,0],[0,0],[0.733,-0.086],[-0.041,-0.79]],"v":[[0.468,-1.526],[-1.911,-1.246],[-1.76,1.612],[0.618,1.332],[1.87,-0.253]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.294000004787,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[336.4,114.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.773,-0.241],[0,0],[0,0],[0,0],[-0.132,-1.908]],"o":[[0,0],[0,0],[0,0],[1.773,-0.241],[0.131,1.909]],"v":[[1.565,3.184],[-4.194,3.967],[-4.668,-2.943],[1.09,-3.726],[4.538,-0.708]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.917,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[335.54,114.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.719,0.202],[0,0],[0,0],[0,0],[0.15,0.768]],"o":[[0,0],[0,0],[0,0],[-0.718,0.203],[-0.15,-0.767]],"v":[[-0.848,-1.163],[1.484,-1.82],[2.027,0.96],[-0.305,1.617],[-1.878,0.593]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.294000004787,0.226999993418,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.824,122.046],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.741,0.49],[0,0],[0,0],[0,0],[0.364,1.86]],"o":[[0,0],[0,0],[0,0],[-1.74,0.491],[-0.363,-1.859]],"v":[[-2.056,-2.817],[3.595,-4.409],[4.912,2.326],[-0.74,3.918],[-4.549,1.438]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.917,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[294.525,121.997],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"шея","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[314.796,168.28,0],"ix":2},"a":{"a":0,"k":[314.796,168.28,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[17.971,27.374],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.96,-29.237],[13.373,1.337],[-13.374,2.799],[-7.394,-30.173]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.78431372549,0.402152985218,0.347558623669,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[314.518,134.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[20.618,13.93],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.277,-23.506],[18.11,3.446],[-18.11,9.576],[-13.519,-22.467]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.475,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[314.796,159.076],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"рука Outlines","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[11]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":43,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":68,"s":[11]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[649.916,265.806,0],"ix":2},"a":{"a":0,"k":[649.916,265.806,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.024,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0.001,1.571],[0.001,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[670.027,192.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.025,0],[2.024,0]],"o":[[2.021,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[656.097,188.712],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.024,0],[2.025,0]],"o":[[2.022,0],[-2.021,0]],"v":[[0,1.571],[0,-1.571]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[645.51,184.811],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.886,-0.69],[0,0],[1.887,0.691],[12.86,4.709]],"o":[[0,0],[1.901,0.696],[-12.86,-4.709],[-1.901,-0.697]],"v":[[-19.708,-5.549],[18.872,8.578],[19.707,5.548],[-18.874,-8.578]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[654.668,198.283],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.886,-0.692],[-13.572,-4.978],[1.884,0.691],[13.572,4.979]],"o":[[13.573,4.979],[1.901,0.697],[-13.574,-4.979],[-1.901,-0.697]],"v":[[-20.776,-5.953],[19.942,8.983],[20.778,5.953],[-19.94,-8.983]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[654.118,204.668],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-20.061,30.09],[0,0],[35.662,3.9]],"o":[[0,0],[0,0],[-35.662,-3.901]],"v":[[-5.572,-56.001],[27.862,-45.414],[0,52.101]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[647.739,229.667],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"кисть","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[-6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[9]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":43,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[-6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":68,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[9]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[659.302,183.495,0],"ix":2},"a":{"a":0,"k":[659.11,184.879,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.136,7.276],[-4.178,-3.761],[0,0],[-3.761,-0.836],[-1.672,-0.836],[-2.926,-0.835],[-1.671,1.254],[-2.508,-1.254],[0,0],[-2.506,-1.254],[0,0],[14.429,4.626]],"o":[[0,0],[4.18,3.762],[0,0],[3.762,0.836],[1.672,0.836],[2.925,0.836],[1.672,-1.254],[2.508,1.253],[0,0],[2.508,1.254],[0,0],[-6.953,-2.229]],"v":[[-5.432,-36.568],[-10.449,-55.793],[-0.418,-44.508],[5.85,-77.524],[8.358,-54.121],[15.045,-76.271],[15.88,-54.121],[24.24,-72.091],[22.568,-51.195],[30.507,-62.479],[22.985,-27.792],[7.825,-14.686]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[650.107,205.498],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"тело Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[6]},{"t":75,"s":[0]}],"ix":10},"p":{"a":0,"k":[1558.818,989.794,0],"ix":2},"a":{"a":0,"k":[576.739,336.568,0],"ix":1},"s":{"a":0,"k":[277,277,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[8.565,-9.377]],"o":[[0,0],[0,0],[0,0],[-8.566,9.378]],"v":[[-61.703,17.46],[-61.302,-6.873],[54.602,-17.46],[53.137,7.153]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.628,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[580.878,329.875],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[8.565,-9.377]],"o":[[0,0],[0,0],[0,0],[-8.566,9.378]],"v":[[-61.703,17.46],[-61.302,-6.873],[54.602,-17.46],[53.137,7.153]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[580.878,329.875],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.59,-1.942],[-24.832,-1.587],[-9.204,7.632],[-4.579,11.782],[0.726,-1.867],[8.475,-7.733],[11.903,0.761],[6.548,21.586]],"o":[[6.976,22.999],[11.879,0.76],[9.904,-8.212],[0.734,-1.886],[-4.098,10.543],[-8.868,8.092],[-23.394,-1.495],[-0.585,-1.93]],"v":[[-50.677,-16.06],[-1.434,22.892],[31.59,12.553],[51.305,-17.629],[48.592,-19.141],[31.153,8.785],[-1.434,19.75],[-47.648,-16.895]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[570.116,189.814],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.273,-0.977],[-20.282,-0.215],[-8.771,6.845],[-3.246,10.003],[0.312,-0.959],[8.289,-6.511],[10.632,0.091],[4.964,17.773]],"o":[[5.164,18.487],[10.977,0.116],[8.608,-6.718],[0.313,-0.964],[-3.137,9.665],[-8.471,6.654],[-19.577,-0.167],[-0.272,-0.972]],"v":[[-44.221,-14.651],[-3.956,19.33],[29.117,9.351],[44.273,-17.347],[42.713,-17.765],[28.218,8.018],[-3.956,17.76],[-42.706,-15.069]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[570.853,185.616],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.005,0.112],[-1.573,-0.538],[0.952,0.326],[1.777,-0.198]],"o":[[1.651,-0.184],[0.959,0.328],[-1.692,-0.579],[-0.993,0.111]],"v":[[-2.584,0.459],[2.219,0.982],[2.638,-0.533],[-2.584,-1.112]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[599.06,175.674],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.887,-0.488],[-1.674,-0.922],[0.887,0.488],[1.675,0.921]],"o":[[1.675,0.922],[0.887,0.488],[-1.674,-0.922],[-0.887,-0.488]],"v":[[-2.909,-0.705],[2.116,2.061],[2.909,0.705],[-2.116,-2.061]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[594.495,184.028],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.643,-0.772],[-0.929,-1.114],[0.643,0.772],[0.929,1.114]],"o":[[0.929,1.114],[0.649,0.778],[-0.928,-1.114],[-0.648,-0.777]],"v":[[-1.948,-1.117],[0.837,2.227],[1.948,1.116],[-0.838,-2.228]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[587.837,190.941],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.304,-0.968],[-1.045,-1.298],[0.627,0.781],[0.414,1.32]],"o":[[0.501,1.592],[0.635,0.788],[-0.87,-1.08],[-0.303,-0.961]],"v":[[-1.88,-1.863],[0.445,2.454],[1.557,1.343],[-0.364,-2.281]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[576.457,194.673],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.172,-0.99],[-0.193,-1.113],[0.172,0.991],[0.192,1.113]],"o":[[0.192,1.113],[0.172,0.994],[-0.193,-1.113],[-0.173,-0.995]],"v":[[-1.046,-1.461],[-0.469,1.879],[1.047,1.461],[0.469,-1.878]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[566.729,195.387],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":4,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.175,-0.996],[0,0],[-0.175,0.996],[0,0]],"o":[[0,0],[-0.174,0.989],[0,0],[0.173,-0.988]],"v":[[-0.417,-2.148],[-1.097,1.731],[0.418,2.148],[1.098,-1.731]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[557.195,192.892],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.575,-0.824],[0.914,-1.31],[-0.575,0.824],[-0.914,1.311]],"o":[[-0.914,1.311],[-0.58,0.831],[0.914,-1.31],[0.581,-0.831]],"v":[[0.693,-2.362],[-2.05,1.569],[-0.694,2.362],[2.049,-1.569]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[551.102,188.461],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":4,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.716,-0.716],[0,0],[-0.716,0.716],[0,0]],"o":[[0,0],[-0.716,0.716],[0,0],[0.716,-0.716]],"v":[[0.838,-1.949],[-1.948,0.837],[-0.838,1.948],[1.948,-0.837]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[545.488,183.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.843,-0.564],[1.455,-0.975],[-0.843,0.565],[0,0]],"o":[[-1.456,0.975],[-0.836,0.559],[0,0],[0.836,-0.559]],"v":[[1.787,-2.141],[-2.579,0.784],[-1.786,2.14],[2.579,-0.784]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[540.798,179.03],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[27.304,42.349],[0,0],[-22.845,23.404],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.731,-15.881],[-17.929,-26.468],[19.961,-25.911],[25.731,-16.616]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[570.383,186.204],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[27.304,42.349],[0,0],[-22.845,23.404],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.731,-15.881],[-17.929,-26.468],[19.961,-25.911],[25.731,-16.616]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[570.383,186.204],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.558,-0.154],[-10.976,-1.083],[1.557,0.154],[10.975,1.083]],"o":[[10.975,1.083],[1.568,0.155],[-10.976,-1.083],[-1.568,-0.154]],"v":[[-16.462,-0.4],[16.463,2.85],[16.463,0.398],[-16.462,-2.85]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[578.293,250.735],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.117,1.417],[0,0],[0,0],[-8.784,-9.35],[0,0],[2.596,-3.117]],"o":[[0,0],[3.117,-1.416],[0,0],[0,0],[0,0],[0,0],[-2.834,3.4]],"v":[[-23.257,9.067],[-24.107,3.683],[-15.891,3.966],[-14.473,-11.051],[20.945,-8.217],[18.111,7.367],[24.629,14.167]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.2,0.322000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[577.73,245.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":4,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.189,0.931],[-0.228,-0.423],[-0.007,-0.484],[0.245,-0.421],[0.459,-0.166],[-0.049,0.381],[0.007,0.364]],"o":[[0.456,0.175],[0.239,0.424],[-0.013,0.486],[-0.235,0.419],[0.098,-0.473],[0.039,-0.38],[0.01,-0.74]],"v":[[-0.674,-2.351],[0.359,-1.386],[0.707,0.01],[0.341,1.403],[-0.708,2.351],[-0.49,1.108],[-0.423,0.003]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[564.71,278.424],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":4,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.145,1.176],[-0.144,-1.206],[0.229,-0.569],[0.529,-0.288],[-0.037,0.501],[0.059,0.487]],"o":[[0.921,0.735],[0.052,0.606],[-0.219,0.566],[0.152,-0.576],[0.026,-0.5],[-0.084,-0.988]],"v":[[-0.847,-3.102],[0.795,-0.07],[0.56,1.727],[-0.567,3.102],[-0.298,1.521],[-0.33,0.045]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[568.268,278.903],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":4,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.394,-0.98],[2.462,-2.268],[-1.54,1.275]],"o":[[1.362,0.558],[-2.462,2.267],[1.54,-1.274]],"v":[[4.251,-3.563],[5.019,2.276],[-5.941,-1.787]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.961,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[565.421,279.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.394,-0.98],[2.462,-2.268],[-1.54,1.275]],"o":[[1.362,0.558],[-2.462,2.267],[1.54,-1.274]],"v":[[4.251,-3.563],[5.019,2.276],[-5.941,-1.787]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[565.421,279.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":4,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.283,1.337],[-1.73,-0.446],[-1.713,0.323],[-1.437,1.065],[-1.318,1.307],[1.425,-1.266],[1.931,-0.324],[1.79,0.653]],"o":[[1.563,1],[1.725,0.444],[1.725,-0.273],[1.433,-1.077],[-0.973,1.577],[-1.4,1.273],[-1.922,0.338],[-1.803,-0.623]],"v":[[-9.5,-0.29],[-4.544,1.922],[0.69,2.191],[5.442,0.044],[9.5,-3.642],[6.001,0.728],[0.888,3.303],[-4.805,2.762]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[571.564,283.712],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.448,2.765],[2.764,0.448],[0.448,-2.764],[-2.765,-0.448]],"o":[[0.448,-2.765],[-2.765,-0.449],[-0.448,2.765],[2.764,0.449]],"v":[[5.005,0.811],[0.811,-5.005],[-5.006,-0.812],[-0.812,5.005]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.795999983245,0.804000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[555.253,277.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":4,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.443,2.734],[2.735,0.443],[0.443,-2.735],[-2.734,-0.443]],"o":[[0.442,-2.734],[-2.735,-0.443],[-0.444,2.734],[2.735,0.444]],"v":[[4.953,0.803],[0.803,-4.952],[-4.951,-0.802],[-0.802,4.951]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.795999983245,0.804000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[582.885,281.383],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":4,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.134,0.819],[0.819,0.133],[0.133,-0.821],[-0.82,-0.133]],"o":[[0.133,-0.82],[-0.82,-0.132],[-0.134,0.819],[0.82,0.133]],"v":[[1.486,0.24],[0.242,-1.486],[-1.484,-0.241],[-0.24,1.484]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.459,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[575.559,275.466],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.134,0.819],[0.819,0.133],[0.133,-0.821],[-0.82,-0.133]],"o":[[0.133,-0.82],[-0.82,-0.132],[-0.134,0.819],[0.82,0.133]],"v":[[1.486,0.24],[0.242,-1.486],[-1.484,-0.241],[-0.24,1.484]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[575.559,275.466],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":4,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.133,0.82],[0.82,0.133],[0.133,-0.821],[-0.82,-0.133]],"o":[[0.133,-0.82],[-0.82,-0.132],[-0.133,0.82],[0.821,0.133]],"v":[[1.485,0.24],[0.241,-1.486],[-1.485,-0.24],[-0.241,1.484]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.459,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[562.582,273.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.133,0.82],[0.82,0.133],[0.133,-0.821],[-0.82,-0.133]],"o":[[0.133,-0.82],[-0.82,-0.132],[-0.133,0.82],[0.821,0.133]],"v":[[1.485,0.24],[0.241,-1.486],[-1.485,-0.24],[-0.241,1.484]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.2,0.258999992819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[562.582,273.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":4,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.203,4.844],[-0.864,-3.317],[13.528,-1.651],[4.453,8.555],[-13.308,-2.157],[-2.2,13.577]],"o":[[2.187,2.584],[3.687,14.156],[-10.217,1.246],[0.141,11.842],[15.444,2.504],[1.819,-11.215]],"v":[[11.689,-23.684],[16.384,-14.745],[-4.838,12.917],[-28.377,-0.454],[-3.858,23.264],[28.09,3.216]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.961000031116,0.929000016755,0.933000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[574.859,273.462],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":4,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.2,13.576],[15.444,2.503],[4.429,-15.259],[-15.445,-2.504]],"o":[[2.201,-13.575],[-15.444,-2.504],[-4.171,14.372],[15.444,2.504]],"v":[[28.818,4.533],[4.839,-24.581],[-26.848,-4.98],[-3.131,24.58]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.961000031116,0.922000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[574.132,272.147],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":4,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-44.237,-44.904],[46.451,37.845],[-46.451,44.904]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[565.626,302.432],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":4,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[39.971,-22.413],[1.518,-0.395],[22.636,0.736],[9.837,-7.907],[0,0],[-5.012,-5.015],[0,0],[0,0],[0,0],[0.345,5.483],[0,0]],"o":[[0,0],[-1.403,0.786],[-13.605,2.129],[-10.692,-3.952],[0,0],[0,0],[0,0],[1.904,44.969],[0,0],[5.477,-0.428],[0,0],[0,0]],"v":[[114.286,-2.938],[48.62,-77.667],[43.959,-76.747],[-6.438,-76.724],[-40.734,-67.459],[-114.286,11.945],[-83.777,49.558],[-24.669,13.664],[-24.669,100.08],[80.189,91.886],[89.44,81.231],[87.15,24.482]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[547.493,247.255],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":4,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[72.357,52.291],[0,0],[-32.227,44.995]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[65.365,-11.249],[-65.365,1.521],[-59.93,-41.44],[35.57,-53.811]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[442.984,276.847],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":4,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"fl","c":{"a":0,"k":[0.510000011968,0.611999990426,0.573000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375,250],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":1,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"шляпа Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[576.795,100.128,0],"ix":2},"a":{"a":0,"k":[576.795,100.128,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,3.385],[3.385,0],[0,-3.385],[-3.385,0]],"o":[[0,-3.385],[-3.385,0],[0,3.385],[3.385,0]],"v":[[6.13,0],[0,-6.129],[-6.13,0],[0,6.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.214},"t":23,"s":[592.016,66.122],"to":[-0.78,-0.354],"ti":[0,0]},{"i":{"x":0.833,"y":0.786},"o":{"x":0.333,"y":0},"t":33,"s":[587.339,63.997],"to":[0,0],"ti":[-0.78,-0.354]},{"t":52,"s":[592.016,66.122]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.801,-7.244],[-6.923,6.098],[-0.557,-6.13],[0,0]],"o":[[0,0],[0.935,-0.823],[0,0],[0,0]],"v":[[-24.797,5.572],[-20.339,-13.373],[24.796,2.786],[19.781,13.93]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.987999949736,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0.398,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.948999980852,0.913999968884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[573.906,101.784],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[9.473,-39.005],[-7.801,-7.801],[8.358,13.93]],"o":[[0,0],[0,0],[0,0]],"v":[[-23.961,14.766],[16.716,24.239],[15.602,-21.453]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[{"i":[[9.473,-39.005],[-7.801,-7.801],[15.59,14.716]],"o":[[0,0],[0,0],[0,0]],"v":[[-23.961,14.766],[16.716,24.239],[11.242,-22.274]],"c":true}]},{"t":52,"s":[{"i":[[9.473,-39.005],[-7.801,-7.801],[8.358,13.93]],"o":[[0,0],[0,0],[0,0]],"v":[[-23.961,14.766],[16.716,24.239],[15.602,-21.453]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.184000007779,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[576.414,87.018],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"голова Outlines","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[-12]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[-12]},{"t":64,"s":[0]}],"ix":10},"p":{"a":0,"k":[573.148,148.163,0],"ix":2},"a":{"a":0,"k":[573.148,148.163,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.113,0.127],[-0.084,-0.053],[0,0]],"o":[[0.078,0.061],[0,0],[-0.059,-0.16]],"v":[[9.669,1.521],[9.925,1.671],[9.916,1.961]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0.221,-0.451],[-0.12,-3.079],[-1.333,-0.27],[-1.897,3.677],[-1.588,-0.536],[-0.912,1.007],[-1.87,-0.742],[-1.048,0.666],[-0.148,0.377],[0,0],[-1.218,-0.172],[0.665,2.108],[0.115,0.307],[0.231,1.665],[2.827,3.873],[0.136,0.59],[2.369,-0.84]],"o":[[-0.267,0.426],[-1.376,2.817],[0.057,1.461],[0.726,0.146],[1.977,-0.677],[1.292,0.437],[0.912,-1.008],[1.151,0.456],[0.343,-0.217],[0,0],[0.732,1.5],[0.933,0.132],[-0.104,-0.33],[1.55,-0.494],[-0.233,-1.678],[0.183,-0.578],[-0.294,-1.27],[-27.711,-14.153]],"v":[[-21.054,2.74],[-21.796,4.052],[-23.526,13.145],[-20.358,23.396],[-13.132,5.026],[-4.52,5.293],[-0.845,4.078],[5.543,4.25],[9.131,4.251],[9.874,3.318],[9.835,4.564],[19.465,18.845],[18.336,5.539],[18.005,4.585],[20.342,0.883],[20.818,-5.953],[20.929,-7.72],[17.933,-9.388]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.611999990426,0.219999994016,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[573.804,99.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.976,-1.973],[1.674,0.4],[0.345,-1.446]],"o":[[1.239,0.821],[-1.674,-0.4],[0,0]],"v":[[2.411,1.46],[0.006,-1.881],[-3.651,0.013]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[579.956,116.234],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.922,-2.051],[-1.663,0.444],[-0.383,-1.436]],"o":[[-1.218,0.854],[1.663,-0.444],[0,0]],"v":[[-2.401,1.497],[-0.086,-1.907],[3.62,-0.11]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.178},"t":23,"s":[565.76,117.35],"to":[0,0],"ti":[0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":28,"s":[566.533,118.954],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.822},"o":{"x":0.333,"y":0},"t":33,"s":[566.533,118.954],"to":[0,0],"ti":[0,0]},{"t":38,"s":[565.76,117.35]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.521,0.025],[0,0],[-0.234,0.546],[0,0],[-0.242,-0.622],[0,0]],"o":[[0,0],[-0.5,-0.024],[0,0],[0.265,-0.619],[0,0],[0.223,0.572]],"v":[[1.985,3.442],[-2.07,3.244],[-2.637,2.026],[-0.552,-2.848],[0.678,-2.842],[2.648,2.229]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.477999997606,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[573.285,127.417],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.091,-0.86],[0.628,0.066],[-0.091,0.86],[-0.628,-0.067]],"o":[[-0.092,0.86],[-0.628,-0.067],[0.09,-0.86],[0.627,0.066]],"v":[[1.137,0.12],[-0.165,1.557],[-1.136,-0.121],[0.164,-1.556]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[578.594,123.691],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.084,-0.857],[0.628,0.062],[-0.084,0.858],[-0.628,-0.062]],"o":[[-0.084,0.858],[-0.628,-0.061],[0.084,-0.858],[0.628,0.061]],"v":[[1.137,0.111],[-0.152,1.552],[-1.137,-0.112],[0.152,-1.552]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[568.261,123.751],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0.167]},"t":23,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":28,"s":[100,9]},{"i":{"x":[0.833,0.833],"y":[1,0.833]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":33,"s":[100,9]},{"t":38,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.956,-0.345],[0.258,3.977],[0,0]],"o":[[-3.369,0.393],[0,0],[-0.31,4.144]],"v":[[0.209,3.007],[-6.478,-3.4],[6.478,-2.982]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[573.419,135.693],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.569,0.583],[0,0],[-0.969,11.762],[0,0],[-10.965,-0.253],[0,0],[0.97,-11.762],[0,0]],"o":[[0,0],[-13.839,-0.824],[0,0],[0.969,-11.762],[0,0],[10.964,0.253],[0,0],[-0.97,11.762]],"v":[[-1.982,26.32],[-2.112,26.339],[-19.891,3.88],[-19.817,2.98],[0.399,-26.65],[0.38,-26.779],[19.889,3.898],[19.816,4.798]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.955,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[573.019,123.103],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.752,-0.012],[0,0],[0,0],[0,0],[-0.039,0.805]],"o":[[0,0],[0,0],[0,0],[0.753,-0.012],[0.039,-0.806]],"v":[[0.628,-1.471],[-1.815,-1.433],[-1.958,1.483],[0.485,1.445],[1.919,-0.034]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8,0.481999984442,0.416000007181,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.993,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.481999984442,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[595.466,122.459],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.824,-0.061],[0,0],[0,0],[0,0],[0.064,-1.949]],"o":[[0,0],[0,0],[0,0],[1.825,-0.062],[-0.064,1.95]],"v":[[1.22,3.461],[-4.703,3.66],[-4.47,-3.4],[1.452,-3.599],[4.639,-0.181]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.955,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[594.627,122.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.75,0.131],[0,0],[0,0],[0,0],[0.074,0.795]],"o":[[0,0],[0,0],[0,0],[-0.75,0.131],[-0.073,-0.795]],"v":[[-0.7,-1.291],[1.736,-1.717],[1.999,1.161],[-0.435,1.586],[-1.926,0.385]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8,0.481999984442,0.416000007181,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.993,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.481999984442,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[551.411,126.06],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.816,0.317],[0,0],[0,0],[0,0],[0.177,1.924]],"o":[[0,0],[0,0],[0,0],[-1.817,0.318],[-0.176,-1.925]],"v":[[-1.696,-3.128],[4.202,-4.159],[4.842,2.81],[-1.057,3.841],[-4.666,0.932]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.955,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[552.071,126.117],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"шея","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[570.802,172.531,0],"ix":2},"a":{"a":0,"k":[570.802,172.531,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[12.247,36.398],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.018,-32.424],[15.115,1.12],[-15.115,-1.022],[-4.52,-35.376]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870588235294,0.61809536803,0.501868483599,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[571.335,144.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[27.583,23.404],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.745,-24.6],[19.433,3.434],[-19.433,3.016],[-12.566,-26.42]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.961000031116,0.713999968884,0.6,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[570.075,168.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"ноги Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1570.608,982.96,0],"ix":2},"a":{"a":0,"k":[580.996,334.101,0],"ix":1},"s":{"a":0,"k":[277,277,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[10.005,-3.524],[0,0]],"o":[[0,0],[0.865,10.573],[0,0],[0,0]],"v":[[9.465,-31.261],[12.333,3.811],[-3.18,27.733],[-13.198,31.261]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.161000001197,0.204000001795,0.352999997606,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.373,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[542.649,338.863],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-11.164,0.225],[0,0]],"o":[[0,0],[3.068,10.199],[0,0],[0,0]],"v":[[-20.477,-25.493],[-10.299,8.342],[13.854,25.268],[20.477,25.31]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.161000001197,0.204000001795,0.352999997606,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.409,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[616.287,334.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-46.578,5.481],[0,0]],"o":[[0,0],[46.578,-5.479],[0,0]],"v":[[-49.774,-3.636],[-0.457,12.802],[49.774,-13.683]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[584.241,350.711],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-2.78,-7.767],[0,0],[0,0],[34.62,129.471]],"o":[[0,0],[0,0],[0,0],[2.591,-7.845],[0,0],[0,0],[0,0],[0,0]],"v":[[-41.12,-86.828],[-81.004,218.824],[-44.245,218.071],[2.206,25.568],[16.263,25.568],[37.083,219.204],[71.669,218.702],[46.383,-99.431]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.023999999551,0.054999998504,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[577.87,400.569],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 3","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[333.5,200,0],"ix":2},"a":{"a":0,"k":[1000,600,0],"ix":1},"s":{"a":0,"k":[33.333,33.333,100],"ix":6}},"ao":0,"w":2000,"h":1200,"ip":0,"op":150,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index e69de29b..db887b2b 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -0,0 +1 @@ +{"v":"5.5.1","fr":25,"ip":0,"op":83,"w":512,"h":512,"nm":"Find","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Searh HK Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":39,"s":[17]},{"t":82,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[349,318.089,0],"to":[-0.899,-1.186,0],"ti":[-0.663,-0.874,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39,"s":[351.074,282.958,0],"to":[0.566,0.746,0],"ti":[3.667,4.833,0]},{"t":82,"s":[349,318.089,0]}],"ix":2},"a":{"a":0,"k":[227,230,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[85,85,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":39,"s":[100,100,100]},{"t":82,"s":[85,85,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-27.95,12.823],[-15.665,28.017],[27.95,-15.598],[12.89,-28.017]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[419.166,420.413],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[60.213,0],[0,60.213],[-60.213,0],[0,-60.213]],"o":[[-60.213,0],[0,-60.213],[60.213,0],[0,60.213]],"v":[[1.193,107.788],[-107.832,-1.238],[1.193,-110.263],[110.219,-1.238]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[79.665,0],[0,-79.664],[-79.664,0],[0,79.665]],"o":[[-79.664,0],[0,79.665],[79.665,0],[0,-79.664]],"v":[[-0.001,-144.245],[-144.245,-0.001],[-0.001,144.245],[144.245,-0.001]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.144,0.588,0.987,0.479,0.302,0.708,0.994,1,0.459,0.827,1],"ix":9}},"s":{"a":0,"k":[-175.723,19.811],"ix":5},"e":{"a":0,"k":[224.922,17.593],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[215.852,217.082],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[107.615,107.615],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.599,-6.553],[0,0],[-13.321,13.321],[14.44,11.908],[0,0],[6.127,-6.127],[0,0]],"o":[[0,0],[11.843,14.65],[13.235,-13.234],[0,0],[-6.547,-5.676],[0,0],[-6.094,6.093]],"v":[[-59.871,-30.35],[5.144,50.062],[52.236,52.548],[49.987,5.649],[-29.859,-60.194],[-52.352,-59.393],[-58.993,-52.752]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.144,0.588,0.987,0.426,0.302,0.708,0.994,1,0.459,0.827,1],"ix":9}},"s":{"a":0,"k":[-11.385,26.938],"ix":5},"e":{"a":0,"k":[21.51,-15.222],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[403.406,404.022],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.586,50.51],[-50.511,-37.585],[-37.585,-50.51],[50.511,37.586]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,1,0.608,0.275,0.426,1,0.743,0.414,1,1,0.878,0.553],"ix":9}},"s":{"a":0,"k":[-33.473,-19.991],"ix":5},"e":{"a":0,"k":[-10.956,-29.023],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[365.441,366.708],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Searh HK 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[380.574,380.604,0],"ix":2},"a":{"a":0,"k":[252.841,308.282,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":39,"s":[85,85,100]},{"t":82,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-20.068,0],[-12.985,13.31],[-0.004,0.019],[0.726,1.772],[7.927,0.34],[6.086,0.019],[0.033,-3.281],[7.976,-0.032],[0.096,8.014],[0.032,3.283],[5.702,0.003],[2.089,-10.759],[0.181,-0.551],[-0.002,-0.015]],"o":[[20.065,0],[0.004,-0.019],[-0.556,-1.843],[-3.145,-7.687],[-6.076,-0.26],[-0.03,3.282],[-0.082,8.09],[-7.928,0.03],[-0.039,-3.282],[-5.702,-0.013],[-9.029,-0.004],[-0.109,0.564],[0.001,0.015],[12.986,13.314]],"v":[[0,19.396],[51.181,-2.183],[51.197,-2.238],[49.505,-7.754],[32.265,-19.136],[14.008,-19.24],[13.917,-9.394],[0.048,4.581],[-13.923,-9.311],[-14.02,-19.158],[-31.125,-19.196],[-50.662,-3.884],[-51.196,-2.231],[-51.188,-2.189]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.001,1,0.627,0.294,0.426,1,0.71,0.378,1,1,0.792,0.463],"ix":9}},"s":{"a":0,"k":[0,0],"ix":5},"e":{"a":0,"k":[100,0],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.146,279.595],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[4.804,0],[2.501,2.241]],"o":[[-2.501,2.241],[-4.803,0],[0,0]],"v":[[11.54,-1.858],[-0.001,1.858],[-11.54,-1.858]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.952999997606,0.713999968884,0.510000011968,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[220.146,237.943],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.726],[2.726,0],[0,2.726],[-2.725,0]],"o":[[0,2.726],[-2.725,0],[0,-2.726],[2.726,0]],"v":[[4.936,0],[-0.001,4.936],[-4.936,0],[-0.001,-4.936]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.862999949736,0.698000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.692,222.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.726],[2.726,0],[0,2.726],[-2.726,0]],"o":[[0,2.726],[-2.726,0],[0,-2.726],[2.726,0]],"v":[[4.936,0],[0,4.936],[-4.936,0],[0,-4.936]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.862999949736,0.698000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.576,222.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.015,-0.767],[0.785,0.024],[-0.033,0.79],[-0.782,-0.018]],"o":[[-0.071,0.785],[-0.782,-0.024],[0.032,-0.779],[0.79,0.019]],"v":[[1.237,0.022],[-0.031,1.212],[-1.203,-0.038],[0.053,-1.217]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.991999966491,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.572,202.966],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.023,-0.777],[0.773,0.057],[-0.056,0.77],[-0.773,-0.058]],"o":[[-0.097,0.792],[-0.797,-0.059],[0.059,-0.794],[0.794,0.06]],"v":[[1.241,0.109],[-0.096,1.219],[-1.208,-0.109],[0.121,-1.218]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.991999966491,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.69,202.956],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.822,0.136],[1.835,0],[1.32,-0.205],[-0.102,1.998],[-1.34,-0.027],[-3.57,0.117],[-0.088,-1.128]],"o":[[-1.825,-0.137],[-1.352,0.001],[-2.568,0.401],[0.06,-1.159],[3.572,0.07],[2.191,-0.072],[0.097,1.231]],"v":[[18.097,-33.976],[12.594,-34.006],[8.543,-33.968],[5.842,-36.946],[7.441,-38.678],[18.16,-38.687],[19.803,-36.152]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.549,0.056],[0.002,2.477],[-2.491,0.014],[-0.077,-2.461]],"o":[[-2.463,-0.053],[-0.002,-2.497],[2.485,-0.013],[0.08,2.545]],"v":[[12.754,-22.402],[8.211,-27.066],[12.777,-31.674],[17.487,-27.174]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-2.706,-0.035],[-0.966,-0.005],[-2.902,0.005],[-0.229,-0.228],[4.226,-0.008],[2.497,0.012],[-0.25,1.724]],"o":[[0.966,0.005],[2.902,-0.005],[0.228,0.229],[-0.24,4.061],[-2.497,0.005],[-1.021,-0.005],[0.186,-1.274]],"v":[[-29.501,-38.752],[-26.604,-38.738],[-17.898,-38.752],[-17.213,-38.067],[-21.679,-33.994],[-29.171,-34.007],[-31.236,-35.463]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[2.467,0.042],[0.013,2.467],[-2.572,-0.118],[0.061,-2.474]],"o":[[-2.483,-0.042],[-0.014,-2.581],[2.472,0.115],[-0.061,2.471]],"v":[[-24.333,-22.411],[-28.925,-27.027],[-24.088,-31.682],[-19.647,-26.915]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[4.604,7.144],[1.691,0.116],[-0.044,2.104],[0,5.737],[8.185,-0.049],[4.872,0.971],[0.772,0.209],[2.397,0.321],[0.814,0.035],[4.594,1.312],[-0.004,-1.369],[0.01,-7.396],[-0.003,-6.228],[-2.048,-4.425],[-6.779,-3.611],[0.052,-2.337],[-0.039,-3.282],[-7.928,0.03],[-0.082,8.09],[-0.03,3.283],[0.1,0.664],[-3.007,1.873],[-0.762,10.924],[-1.299,0.429]],"o":[[-1.368,-0.868],[-2.627,-0.181],[0.117,-5.519],[-9.987,5.567],[-4.966,-0.569],[-0.773,-0.209],[-2.264,-0.827],[-0.652,-0.61],[-4.598,-1.301],[-1.97,-0.563],[0.022,7.396],[0.004,6.227],[0.021,4.864],[3.286,7.104],[-0.053,2.337],[0.032,3.283],[0.096,8.014],[7.976,-0.032],[0.033,-3.281],[-0.027,-0.673],[-0.489,-3.264],[9.277,-5.777],[0.069,-0.987],[8.152,-2.688]],"v":[[33.671,-24.223],[29.448,-26.583],[26.728,-30.416],[26.768,-47.195],[3.561,-40.911],[-10.94,-44.314],[-13.258,-44.941],[-20.224,-46.761],[-22.513,-47.41],[-36.305,-51.316],[-38.218,-49.299],[-38.232,-27.111],[-38.222,-8.429],[-35.073,5.464],[-19.578,21.098],[-19.735,28.11],[-19.639,37.956],[-5.668,51.848],[8.201,37.873],[8.293,28.027],[8.202,26.006],[11.841,18.864],[26.755,-6.493],[28.109,-8.579]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.819999964097,0.642999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[225.862,232.328],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":7,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.071,0.785],[0.79,0.019],[0.032,-0.779],[-0.782,-0.024]],"o":[[-0.015,-0.767],[-0.782,-0.018],[-0.033,0.79],[0.785,0.024]],"v":[[1.209,-2.256],[0.026,-3.495],[-1.231,-2.316],[-0.058,-1.066]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.061,-2.474],[2.466,0.042],[0.013,2.467],[-2.573,-0.118]],"o":[[-0.06,2.472],[-2.483,-0.042],[-0.013,-2.581],[2.471,0.113]],"v":[[4.615,0.167],[-0.07,4.674],[-4.663,0.055],[0.175,-4.597]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.6,205.244],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.902,0.005],[-0.228,-0.228],[4.226,-0.008],[2.497,0.012],[-0.251,1.724],[-2.706,-0.035],[-0.965,-0.005]],"o":[[0.229,0.229],[-0.24,4.061],[-2.497,0.005],[-1.021,-0.005],[0.185,-1.274],[0.966,0.004],[2.902,-0.005]],"v":[[6.812,-2.49],[7.497,-1.804],[3.031,2.269],[-4.46,2.256],[-6.525,0.8],[-4.791,-2.49],[-1.894,-2.476]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.152,196.065],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.097,0.794],[0.794,0.06],[0.058,-0.794],[-0.797,-0.059]],"o":[[0.022,-0.775],[-0.774,-0.058],[-0.057,0.77],[0.774,0.057]],"v":[[1.181,-2.248],[0.061,-3.574],[-1.268,-2.464],[-0.157,-1.135]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-2.491,0.014],[-0.078,-2.46],[2.548,0.056],[0.002,2.477]],"o":[[2.484,-0.014],[0.08,2.545],[-2.463,-0.054],[-0.002,-2.497]],"v":[[-0.111,-4.657],[4.599,-0.159],[-0.134,4.615],[-4.677,-0.051]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.75,205.311],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.835,-0.001],[1.32,-0.206],[-0.103,1.998],[-1.34,-0.026],[-3.57,0.117],[-0.088,-1.127],[1.822,0.137]],"o":[[-1.352,0],[-2.568,0.4],[0.059,-1.16],[3.572,0.07],[2.191,-0.071],[0.097,1.231],[-1.825,-0.136]],"v":[[-0.451,2.158],[-4.503,2.196],[-7.202,-0.782],[-5.604,-2.514],[5.115,-2.524],[6.758,0.012],[5.051,2.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.908,196.164],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.69,0.024],[-0.003,-6.227],[-4.898,7.586]],"o":[[0.003,6.227],[-8.631,-0.966],[2.036,-1.576]],"v":[[5.883,-9.341],[5.892,9.341],[-0.994,-6.438]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.819999964097,0.642999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[181.747,214.557],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.462,-4.326],[0.039,-7.321],[1.692,0.117],[-0.044,2.104],[0,5.737],[8.186,-0.048],[4.872,0.971],[0.772,0.208],[2.396,0.321],[0.815,0.035],[4.594,1.313],[-0.005,-1.37],[0.01,-7.396],[2.035,-1.576],[0.074,7.176],[-0.038,5.893],[-9,0.007],[-23.588,0.12],[0.273,-2.172],[3.763,-4.884]],"o":[[-0.04,7.322],[-1.368,-0.867],[-2.627,-0.18],[0.117,-5.519],[-9.988,5.567],[-4.966,-0.569],[-0.773,-0.208],[-2.265,-0.829],[-0.652,-0.611],[-4.597,-1.3],[-1.97,-0.562],[0.022,7.395],[-2.69,0.025],[-0.075,-7.175],[0.055,-5.892],[0.057,-9.006],[23.589,-0.019],[2.718,-0.014],[-0.77,6.125],[-2.848,3.695]],"v":[[34.848,5.004],[34.73,26.969],[30.506,24.609],[27.787,20.776],[27.827,3.996],[4.619,10.281],[-9.881,6.878],[-12.199,6.253],[-19.165,4.431],[-21.455,3.783],[-35.246,-0.124],[-37.159,1.893],[-37.173,24.081],[-44.049,26.983],[-44.272,5.457],[-44.109,-12.22],[-29.438,-26.893],[41.329,-26.97],[43.999,-23.792],[37.95,-6.798]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.282000014361,0.282000014361,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[224.803,181.135],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":125,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":54,"s":[0]},{"t":78,"s":[90]}],"ix":10},"p":{"a":0,"k":[415,319.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":54,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":68,"s":[50,50,100]},{"t":78,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":54,"op":81,"st":54,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":28,"s":[0]},{"t":52,"s":[90]}],"ix":10},"p":{"a":0,"k":[191,76.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":28,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":42,"s":[100,100,100]},{"t":52,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":28,"op":55,"st":28,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":42,"s":[0]},{"t":66,"s":[90]}],"ix":10},"p":{"a":0,"k":[131,366.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":42,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":56,"s":[80,80,100]},{"t":66,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":42,"op":69,"st":42,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"t":44,"s":[90]}],"ix":10},"p":{"a":0,"k":[158,198.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":34,"s":[85,85,100]},{"t":44,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":47,"st":20,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[0]},{"t":35,"s":[90]}],"ix":10},"p":{"a":0,"k":[330,254.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":11,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":25,"s":[100,100,100]},{"t":35,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":38,"st":11,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[0]},{"t":62,"s":[90]}],"ix":10},"p":{"a":0,"k":[405.5,165,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":38,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":52,"s":[100,100,100]},{"t":62,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":38,"op":65,"st":38,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":24,"s":[90]}],"ix":10},"p":{"a":0,"k":[87,149.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":14,"s":[100,100,100]},{"t":24,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":27,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":0,"nm":"Pre-comp 2","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,227.881,0],"ix":2},"a":{"a":0,"k":[366,306,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":732,"h":612,"ip":0,"op":84,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Bg3 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,209.135,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,17.658],[-17.428,26.819],[-14.1,7.414],[-28.2,-6.331],[-8.714,-9.161],[0,-26.82],[8.714,-9.161],[28.2,-6.331],[14.1,7.414],[17.428,26.819]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.972999961703,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[160.002,375.077],"to":[2.854,3.013],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[177.127,393.157],"to":[0,0],"ti":[2.854,3.013]},{"t":82,"s":[160.002,375.077]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.35,6.393],[0,0],[9.68,-7.135],[13.73,0],[0,-25.643],[-33.636,0],[0,25.642]],"o":[[1.254,-13.188],[0,0],[-10.186,-5.844],[-33.636,0],[0,25.642],[33.636,0],[0,-7.699]],"v":[[54.094,-18.849],[56.118,-48.93],[36.584,-34.62],[0,-43.929],[-60.904,2.501],[0,48.93],[60.904,2.501]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[160.003,375.078],"to":[2.854,3.013],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[177.128,393.158],"to":[0,0],"ti":[2.854,3.013]},{"t":82,"s":[160.003,375.078]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,7.255],[-7.162,11.021],[-5.794,3.046],[-11.588,-2.602],[-3.581,-3.766],[0,-11.021],[3.581,-3.766],[11.588,-2.602],[5.794,3.046],[7.162,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[155.085,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,7.255],[-7.162,11.021],[-5.794,3.046],[-11.588,-2.602],[-3.581,-3.766],[0,-11.021],[3.581,-3.766],[11.588,-2.602],[5.794,3.046],[7.162,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[130.712,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,7.255],[-7.162,11.021],[-5.794,3.046],[-11.588,-2.602],[-3.581,-3.766],[0,-11.021],[3.581,-3.766],[11.588,-2.602],[5.794,3.046],[7.162,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.69,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,7.255],[-7.161,11.021],[-5.794,3.046],[-11.589,-2.602],[-3.581,-3.766],[0.001,-11.021],[3.581,-3.766],[11.589,-2.602],[5.795,3.046],[7.163,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[80.09,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,7.255],[-7.161,11.021],[-5.794,3.046],[-11.589,-2.602],[-3.581,-3.766],[0.001,-11.021],[3.581,-3.766],[11.589,-2.602],[5.795,3.046],[7.163,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[54.068,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[3.844,0],[0,0],[0,-3.845],[0,0],[-3.845,0],[0,0],[0,0]],"o":[[0,0],[0,-3.845],[0,0],[-3.845,0],[0,0],[0,3.845],[0,0],[0,0],[0,0]],"v":[[65.433,3.673],[65.433,-25.724],[58.443,-32.715],[-68.822,-32.715],[-75.812,-25.724],[-75.812,13.261],[-68.822,20.252],[30.948,20.252],[75.812,32.715]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.972999961703,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[108.231,244.588],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.568,6.886],[6.885,-6.569],[6.885,-6.568],[-6.568,-6.885],[0,0],[0,0]],"o":[[-6.567,-6.885],[-6.568,-6.885],[-6.886,6.568],[0,0],[0,0],[6.885,-6.568]],"v":[[24.646,-20.216],[0.287,-20.789],[-24.072,-21.362],[-24.646,2.996],[-0.86,27.93],[24.073,4.143]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882000014361,0.929000016755,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[420.738,350.511],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.787,18.825],[18.825,-15.787],[1.072,-11.216],[0,0],[0,0],[-3.215,-3.834],[-18.825,15.787]],"o":[[-15.787,-18.824],[-9.315,7.812],[0,0],[0,0],[1.717,4.417],[15.787,18.824],[18.824,-15.787]],"v":[[40.543,-28.585],[-22.128,-34.085],[-37.816,-4.237],[-56.329,10.35],[-35.004,16.115],[-27.626,28.586],[35.043,34.085]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[417.989,348.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.96,0],[-3.778,-6.21],[-1.545,0],[-0.992,-9.424],[0,-7.91],[10.566,0],[0,0],[0,10.567],[-8.625,1.865],[-5.783,0.762]],"o":[[7.785,0],[1.458,-0.359],[9.682,0],[6.855,2.923],[0,10.567],[0,0],[-10.566,0],[0,-9.175],[2.437,-5.068],[2.439,-9.205]],"v":[[-2.124,-31.708],[16.271,-21.342],[20.788,-21.889],[39.456,-5.096],[51.128,12.542],[31.964,31.708],[-31.964,31.708],[-51.127,12.542],[-36.021,-6.188],[-22.925,-15.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.972999961703,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[226.999,158.537],"to":[-0.464,0.345],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[224.217,160.605],"to":[0,0],"ti":[-0.464,0.345]},{"t":82,"s":[226.999,158.537]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.939,0],[0,-18.627],[0,0],[0,-9.725],[0.008,-0.251],[0,-10.523],[15.016,0],[0,0],[0,13.688],[-10.437,3.023],[-15.964,0],[-3.086,-1.045],[-8.302,0],[-0.077,-0.001]],"o":[[18.626,0],[0,0],[8.916,3.014],[0,0.251],[9.291,4.529],[0,15.016],[0,0],[-13.687,0],[0,-11.216],[0.868,-15.751],[3.272,0],[4.773,-6.679],[0.078,0],[5.045,-12.723]],"v":[[22.799,-53.748],[56.58,-19.967],[56.58,-19.885],[71.791,1.31],[71.779,2.063],[87.087,26.515],[59.854,53.748],[-62.262,53.748],[-87.087,28.923],[-69.213,5.084],[-39.292,-23.216],[-29.672,-21.628],[-8.809,-32.438],[-8.575,-32.437]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882000014361,0.929000016755,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[155.588,146.42],"to":[-4.962,-2.929],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[125.817,128.846],"to":[0,0],"ti":[-4.962,-2.929]},{"t":82,"s":[155.588,146.42]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.816,0],[-4.366,-19.143],[0,-17.44],[20.593,0],[0,0],[0,17.66],[-16.222,1.553],[-16.468,0],[-2.078,-0.376]],"o":[[20.445,0],[16.186,4.089],[0,20.592],[0,0],[-17.66,0],[0,-16.622],[3.964,-15.246],[2.142,0],[7.967,-10.608]],"v":[[16.911,-53.516],[58.884,-20.046],[87.086,16.169],[49.739,53.516],[-55.059,53.516],[-87.086,21.487],[-58.136,-10.393],[-23.823,-36.927],[-17.483,-36.36]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882000014361,0.929000016755,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[395.786,230.975],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":40,"s":[85,85]},{"t":82,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[33.299,-11.734],[0,0],[67.598,-67.169],[-19.657,-52.473],[-117.983,79.089]],"o":[[-99.862,35.19],[0,0],[-56.546,56.186],[120.956,-11.874],[-32.254,-12.306]],"v":[[79.299,26.739],[-56.525,-20.831],[-158.202,-39.661],[-174.548,106.83],[214.35,-15.831]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.783999992819,0.875,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[214.35,179.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.03,14.8],[33.987,-11.977],[0,0],[67.598,-67.169],[-15.717,-83.552],[-1.629,-10.976],[-127.312,107.172]],"o":[[-31.318,-14.937],[-99.862,35.19],[0,0],[-73.533,73.066],[2.54,13.499],[107.638,-1.355],[-9.808,-36.584]],"v":[[185.052,-59.426],[48.044,-17.68],[-87.78,-65.251],[-189.457,-84.081],[-190.442,114.557],[-184.527,151.25],[247.01,24.221]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.745000023935,0.851000019148,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[247.01,222.81],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[67.598,-67.169],[-15.718,-83.553],[-135.003,11.898],[-135.917,91.942],[78.523,37.451],[33.987,-11.976]],"o":[[0,0],[-73.533,73.066],[16.49,87.656],[129.283,-11.395],[71.317,-48.245],[-31.318,-14.937],[-99.862,35.19]],"v":[[-96.226,-123.354],[-197.904,-142.184],[-198.888,56.456],[-64.357,166.031],[198.941,117.411],[176.605,-117.528],[39.597,-75.784]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.705999995213,0.830999995213,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256,284.169],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[160.002,375.077],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":0,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[160.003,375.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":0,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":84,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/walkthrough.json b/example/shared/src/commonMain/composeResources/files/walkthrough.json new file mode 100644 index 00000000..a41a24e2 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/walkthrough.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":1,"nm":"MASTER","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[{"i":{"x":0.119,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p119_1_0p167_0p167","t":120,"s":[381.957,254.322,0],"e":[203.957,254.322,0],"to":[-29.6666660308838,0,0],"ti":[29.6666660308838,0,0]},{"t":180}]},"a":{"k":[60,60,0]},"s":{"k":[61.8,61.8,100]}},"ao":0,"sw":120,"sh":120,"sc":"#ffffff","ip":117,"op":181,"st":105,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"L-B","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[25.671,-4.167],[1.456,6.902],[-8.481,1.863],[-47.562,13.01],[-0.501,0.133],[-71.423,-2.315]],"o":[[0,0],[-8.224,1.335],[-1.456,-6.903],[23.817,-5.233],[0.16,-0.044],[0.501,-0.133],[0,0]],"v":[[-8.837,-58.229],[-35.834,33.662],[-51.688,23.148],[-41.174,7.293],[51.797,44.178],[53.188,43.741],[140.394,43.672]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":9.194},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[166.029,270.643],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8"},{"ty":"tm","s":{"k":[{"i":{"x":[0.703],"y":[0.821]},"o":{"x":[0.167],"y":[0.167]},"n":["0p703_0p821_0p167_0p167"],"t":123,"s":[80],"e":[50]},{"i":{"x":[0.263],"y":[1]},"o":{"x":[0.037],"y":[0.168]},"n":["0p263_1_0p037_0p168"],"t":128,"s":[50],"e":[30]},{"t":160}],"ix":1},"e":{"k":[{"i":{"x":[0.337],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p337_1_0p167_0p167"],"t":123,"s":[81],"e":[73.4]},{"t":134}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":123,"op":181,"st":113,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"L-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[25.671,-4.167],[1.456,6.902],[-8.481,1.863],[-47.562,13.01],[-0.501,0.133],[-71.423,-2.315]],"o":[[0,0],[-8.224,1.335],[-1.456,-6.903],[23.817,-5.233],[0.16,-0.044],[0.501,-0.133],[0,0]],"v":[[-8.837,-58.229],[-35.834,33.662],[-51.688,23.148],[-41.174,7.293],[51.797,44.178],[53.188,43.741],[140.394,43.672]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":8.4},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[166.029,270.643],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8"},{"ty":"tm","s":{"k":[{"i":{"x":[0.703],"y":[0.857]},"o":{"x":[0.167],"y":[0.167]},"n":["0p703_0p857_0p167_0p167"],"t":121,"s":[80],"e":[50]},{"i":{"x":[0.938],"y":[1]},"o":{"x":[0.333],"y":[0.202]},"n":["0p938_1_0p333_0p202"],"t":125,"s":[50],"e":[0]},{"t":133}],"ix":1},"e":{"k":[{"i":{"x":[0.337],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p337_1_0p167_0p167"],"t":121,"s":[81],"e":[73.4]},{"t":132}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":121,"op":181,"st":113,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":1,"nm":"N","parent":0,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[{"i":{"x":0.26,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p26_1_0p167_0p167","t":132,"s":[-33.667,8.182,0],"e":[-33.667,-72.818,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.74,"y":0},"n":"0p833_0p833_0p74_0","t":144,"s":[-33.667,-72.818,0],"e":[-33.667,102.057,0],"to":[0,0,0],"ti":[0,0,0]},{"t":158}]},"a":{"k":[60,60,0]},"s":{"k":[100,100,100]}},"ao":0,"sw":120,"sh":120,"sc":"#ffffff","ip":132,"op":158,"st":104,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"T1a-B","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,250,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.5,9.501],[-0.048,5.655],[0.054,0.06],[0.946,1.486],[-9.967,8.05],[-40.546,0]],"o":[[0.031,-0.594],[0.076,-8.978],[-1.161,-1.3],[-5.939,-9.327],[24.677,-19.929],[0,0]],"v":[[-30.72,63.761],[-30.741,45.192],[-37.397,27.014],[-40.698,22.661],[-37.873,-7.117],[49.506,11.559]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":24.9,"ix":1},"e":{"k":[{"i":{"x":[0.673],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p673_1_0p167_0p167"],"t":139,"s":[24.9],"e":[89.1]},{"t":153}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.194},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[227.677,234.375],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9"}],"ip":139,"op":181,"st":86,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"T2a-B","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.681,-29.992],[-1.681,29.992]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.06],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p06_1_0p167_0p167"],"t":144,"s":[50],"e":[0]},{"t":154}],"ix":1},"e":{"k":[{"i":{"x":[0.06],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p06_1_0p167_0p167"],"t":144,"s":[50],"e":[100]},{"t":154}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":9.194},"lc":3,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[277.698,247.258],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7"}],"ip":144,"op":181,"st":84,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"T1a-Y 2","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":125,"s":[39.043,48.678,0],"e":[39.043,45.678,0],"to":[0,0,0],"ti":[0,0,0]},{"t":133}]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.5,9.501],[-0.048,5.655],[0.054,0.06],[0.946,1.486],[-9.967,8.05],[-40.546,0]],"o":[[0.031,-0.594],[0.076,-8.978],[-1.161,-1.3],[-5.939,-9.327],[24.677,-19.929],[0,0]],"v":[[-30.72,63.761],[-30.741,45.192],[-37.397,27.014],[-40.698,22.661],[-37.873,-7.117],[49.506,11.559]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.301],"y":[0]},"n":["0p833_1_0p301_0"],"t":123,"s":[0],"e":[24.9]},{"t":139}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.301],"y":[0]},"n":["0p667_1_0p301_0"],"t":123,"s":[0],"e":[100]},{"t":147}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":8.4},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[227.677,234.375],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9"}],"ip":128,"op":181,"st":81,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"O-B","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":100,"s":[-62.792,73.057,0],"e":[-53.792,7.557,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.638,"y":1},"o":{"x":0.167,"y":0.198},"n":"0p638_1_0p167_0p198","t":104.257,"s":[-53.792,7.557,0],"e":[-33.667,-72.818,0],"to":[0,0,0],"ti":[-19.1562919616699,1.73831975460052,0]},{"i":{"x":0.795,"y":1},"o":{"x":0.523,"y":0},"n":"0p795_1_0p523_0","t":113,"s":[-33.667,-72.818,0],"e":[-14.167,102.182,0],"to":[16.2075271606445,-1.47073686122894,0],"ti":[0,0,0]},{"i":{"x":0.348,"y":1},"o":{"x":0.18,"y":0},"n":"0p348_1_0p18_0","t":123,"s":[-14.167,102.182,0],"e":[-14.167,59.182,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.27,"y":1},"o":{"x":0.693,"y":0},"n":"0p27_1_0p693_0","t":132,"s":[-14.167,59.182,0],"e":[-14.167,62.182,0],"to":[0,0,0],"ti":[0,0,0]},{"t":142}]},"a":{"k":[196.791,266.504,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":123,"s":[3,3],"e":[44.6,44.6]},{"t":130}]},"p":{"k":[0.8,-0.5]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":9.194},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[196,267],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":123,"s":[0],"e":[30]},{"i":{"x":[0.432],"y":[1]},"o":{"x":[0.167],"y":[1.124]},"n":["0p432_1_0p167_1p124"],"t":132,"s":[30],"e":[39.9]},{"t":160}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":123,"s":[100],"e":[88]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":132,"s":[88],"e":[88]},{"t":160}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":123,"op":181,"st":73,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"O-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":100,"s":[-62.792,73.057,0],"e":[-53.792,7.557,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.638,"y":1},"o":{"x":0.167,"y":0.198},"n":"0p638_1_0p167_0p198","t":104.257,"s":[-53.792,7.557,0],"e":[-33.667,-72.818,0],"to":[0,0,0],"ti":[-19.1562919616699,1.73831975460052,0]},{"i":{"x":0.795,"y":1},"o":{"x":0.523,"y":0},"n":"0p795_1_0p523_0","t":113,"s":[-33.667,-72.818,0],"e":[-14.167,102.182,0],"to":[16.2075271606445,-1.47073686122894,0],"ti":[0,0,0]},{"i":{"x":0.348,"y":1},"o":{"x":0.18,"y":0},"n":"0p348_1_0p18_0","t":123,"s":[-14.167,102.182,0],"e":[-14.167,59.182,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.27,"y":1},"o":{"x":0.693,"y":0},"n":"0p27_1_0p693_0","t":132,"s":[-14.167,59.182,0],"e":[-14.167,62.182,0],"to":[0,0,0],"ti":[0,0,0]},{"t":142}]},"a":{"k":[196.791,266.504,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":123,"s":[3,3],"e":[44.6,44.6]},{"t":130}]},"p":{"k":[0.8,-0.5]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":8.8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[196,267],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":123,"op":181,"st":73,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"T1b-B","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.768,-25.966],[-1.768,25.966]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.21],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p21_1_0p167_0p167"],"t":150,"s":[11.7],"e":[100]},{"t":157}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.194},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[242.756,265.581],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10"}],"ip":150,"op":181,"st":95,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"T1b-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.768,-25.966],[-1.768,25.966]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":139,"s":[0],"e":[0]},{"t":144}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":139,"s":[11.7],"e":[100]},{"t":144}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":8.4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[242.756,265.581],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10"}],"ip":139,"op":181,"st":84,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"T2b-B","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[246.65,213.814],[340.956,213.628]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":151,"s":[29],"e":[0]},{"t":160}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":151,"s":[41.1],"e":[66.5]},{"t":160}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":9.194},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5"}],"ip":151,"op":181,"st":52,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"T2a-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.681,-29.992],[-1.681,29.992]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.06],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p06_1_0p167_0p167"],"t":141,"s":[50],"e":[0]},{"t":151}],"ix":1},"e":{"k":[{"i":{"x":[0.06],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p06_1_0p167_0p167"],"t":141,"s":[50],"e":[100]},{"t":151}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.194},"lc":3,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[277.698,247.258],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7"}],"ip":141,"op":158,"st":81,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"T2b-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[39.043,45.678,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[246.65,213.814],[340.956,213.628]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":145,"s":[29],"e":[0]},{"t":154}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":145,"s":[41.1],"e":[66.5]},{"t":154}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.194},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5"}],"ip":145,"op":161,"st":46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"T1a-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":125,"s":[39.043,48.678,0],"e":[39.043,45.678,0],"to":[0,0,0],"ti":[0,0,0]},{"t":133}]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.5,9.501],[-0.048,5.655],[0.054,0.06],[0.946,1.486],[-9.967,8.05],[-40.546,0]],"o":[[0.031,-0.594],[0.076,-8.978],[-1.161,-1.3],[-5.939,-9.327],[24.677,-19.929],[0,0]],"v":[[-30.72,63.761],[-30.741,45.192],[-37.397,27.014],[-40.698,22.661],[-37.873,-7.117],[49.506,11.559]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.301],"y":[0]},"n":["0p833_1_0p301_0"],"t":123,"s":[0],"e":[24.9]},{"t":139}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.301],"y":[0]},"n":["0p667_1_0p301_0"],"t":123,"s":[0],"e":[100]},{"t":143}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":8.4},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[227.677,234.375],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9"}],"ip":128,"op":181,"st":81,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"E1-B","parent":16,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[344.672,214.842,0]},"a":{"k":[344.672,214.842,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-13.664,-0.145],[62.163,0.29]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.562},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[344.672,214.842],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[0.12]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_0p12_0p167_0p167"],"t":153,"s":[0],"e":[0]},{"t":162}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":153,"s":[0],"e":[37.5]},{"t":162}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":153,"op":181,"st":153,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"E1-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p12_1_0p167_0p167","t":148,"s":[113.715,9.146,0],"e":[137.715,9.146,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0},"n":"0p12_1_0p167_0","t":157,"s":[137.715,9.146,0],"e":[133.715,9.146,0],"to":[0,0,0],"ti":[0,0,0]},{"t":161}]},"a":{"k":[344.672,214.842,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-13.664,-0.145],[62.163,0.29]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":8.4},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[344.672,214.842],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[0.12]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_0p12_0p167_0p167"],"t":148,"s":[0],"e":[0]},{"t":157}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":148,"s":[0],"e":[37.5]},{"t":157}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":148,"op":163,"st":148,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"E2-B","parent":18,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[332.05,237.932,0]},"a":{"k":[332.05,237.932,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-26.67,-0.283],[99.171,0.066]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[0.12]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_0p12_0p167_0p167"],"t":155,"s":[0],"e":[0]},{"t":164}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":155,"s":[0],"e":[43]},{"t":164}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.562},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[331.664,238.14],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"}],"ip":155,"op":181,"st":155,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"E2-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p12_1_0p167_0p167","t":152,"s":[109.092,33.61,0],"e":[121.092,33.61,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":0.12},"o":{"x":0.167,"y":0.167},"n":"0p12_0p12_0p167_0p167","t":161,"s":[121.092,33.61,0],"e":[121.092,33.61,0],"to":[0,0,0],"ti":[0,0,0]},{"t":165}]},"a":{"k":[332.05,237.932,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-26.67,-0.283],[99.171,0.066]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[0.12]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_0p12_0p167_0p167"],"t":152,"s":[0],"e":[0]},{"t":161}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":152,"s":[0],"e":[43]},{"t":161}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":8.4},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[331.664,238.14],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"}],"ip":152,"op":165,"st":152,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"I-B","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[303.802,282.182,0]},"a":{"k":[303.802,282.182,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.859,-21.143],[-4.359,70.392]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[0.12]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_0p12_0p167_0p167"],"t":150,"s":[0],"e":[0]},{"t":160}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":150,"s":[0],"e":[45.7]},{"t":160}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.194},"lc":3,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[304.135,282.409],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6"}],"ip":150,"op":181,"st":87,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"I-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p12_1_0p167_0p167","t":147,"s":[93.594,62.861,0],"e":[92.626,82.829,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0},"n":"0p12_1_0p167_0","t":157,"s":[92.626,82.829,0],"e":[92.844,77.861,0],"to":[0,0,0],"ti":[0,0,0]},{"t":161}]},"a":{"k":[303.802,282.182,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.859,-21.143],[-4.359,70.392]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.12],"y":[0.12]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_0p12_0p167_0p167"],"t":147,"s":[0],"e":[0]},{"t":157}],"ix":1},"e":{"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p12_1_0p167_0p167"],"t":147,"s":[0],"e":[45.7]},{"t":157}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":8.4},"lc":3,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[304.135,282.409],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6"}],"ip":147,"op":162,"st":84,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"E3-B","parent":22,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[345.189,261.801,0]},"a":{"k":[345.124,261.801,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-13.664,-0.145],[75.663,0.29]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":161,"s":[0],"e":[0]},{"t":166}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":161,"s":[0],"e":[31.6]},{"t":166}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":9.562},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[344.674,261.877],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":161,"op":181,"st":98,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"E3-Y","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":153,"s":[119.167,57.479,0],"e":[137.167,57.479,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":161,"s":[137.167,57.479,0],"e":[134.167,57.479,0],"to":[0,0,0],"ti":[0,0,0]},{"t":165}]},"a":{"k":[345.124,261.801,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-13.664,-0.145],[75.663,0.29]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":153,"s":[0],"e":[0]},{"t":161}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":153,"s":[0],"e":[31.6]},{"t":161}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.48,0.53,1]},"o":{"k":100},"w":{"k":9.562},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[344.674,261.877],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":153,"op":171,"st":90,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"Dot-Y","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0,"y":0.812},"o":{"x":0,"y":0},"n":"0_0p812_0_0","t":165,"s":[43.263,59.75,0],"e":[62.513,59.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.708,"y":1},"o":{"x":0.39,"y":0.303},"n":"0p708_1_0p39_0p303","t":177,"s":[62.513,59.75,0],"e":[63.763,59.75,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180}]},"a":{"k":[196.791,266.504,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[9.2,9.2]},"p":{"k":[0.8,-0.5]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[196,267],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":165,"op":181,"st":134,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":1,"nm":"Bncr","parent":0,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[{"i":{"x":0.18,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p18_1_0p167_0p167","t":165,"s":[164.782,57.473,0],"e":[164.782,55.473,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":168,"s":[164.782,55.473,0],"e":[164.782,57.473,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.18,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p18_1_0p167_0p167","t":171,"s":[164.782,57.473,0],"e":[164.782,56.909,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":174,"s":[164.782,56.909,0],"e":[164.782,57.473,0],"to":[0,0,0],"ti":[0,0,0]},{"t":177}]},"a":{"k":[60,60,0]},"s":{"k":[100,100,100]}},"ao":0,"sw":120,"sh":120,"sc":"#ffffff","ip":165,"op":181,"st":84,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[1665.5,60,0],"e":[25.5,260,0],"to":[-273.333343505859,33.3333320617676,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":60,"s":[25.5,260,0],"e":[-3724.5,160,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":120,"s":[-3724.5,160,0],"e":[-5224.5,160,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180}]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":0,"s":[348,348,100],"e":[140,140,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":60,"s":[140,140,100],"e":[350,350,100]},{"t":120}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[163.464,0],[160.759,0],[127.058,0],[141.102,0],[23.956,14.264],[1.023,0.84]],"o":[[0,0],[-163.464,0],[-160.76,0],[-117.888,0],[-105.065,0],[-16.798,-10.002],[0,0]],"v":[[798.186,62.256],[571.65,-57.36],[112.186,71.36],[-282.756,-71.36],[-619.479,67.362],[-823.238,21.419],[-899.622,-35.891]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[399.375,42.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":0,"s":[100],"e":[85.1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":20,"s":[85.1],"e":[0]},{"t":60}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":0,"s":[100],"e":[100]},{"t":60}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":0,"op":181,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":4,"nm":"Shape Layer 2","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.748},"o":{"x":0.64,"y":0},"n":"0p833_0p748_0p64_0","t":0,"s":[-424.344,63.484,0],"e":[-220.585,109.428,0],"to":[23.9563598632812,14.2642517089844,0],"ti":[-105.06494140625,0,0]},{"i":{"x":0.699,"y":1},"o":{"x":0.167,"y":0.118},"n":"0p699_1_0p167_0p118","t":32.938,"s":[-220.585,109.428,0],"e":[116.138,-29.294,0],"to":[141.102416992188,0,0],"ti":[-117.888366699219,0,0]},{"i":{"x":0.417,"y":0.338},"o":{"x":0.333,"y":0},"n":"0p417_0p338_0p333_0","t":60,"s":[116.138,-29.294,0],"e":[511.08,113.426,0],"to":[127.05810546875,0,0],"ti":[-160.759521484375,0,0]},{"i":{"x":0.608,"y":0.8},"o":{"x":0.211,"y":0.203},"n":"0p608_0p8_0p211_0p203","t":79.626,"s":[511.08,113.426,0],"e":[970.544,-15.294,0],"to":[160.759155273438,0,0],"ti":[-163.464111328125,0,0]},{"i":{"x":0.318,"y":1},"o":{"x":0.347,"y":0.767},"n":"0p318_1_0p347_0p767","t":98.478,"s":[970.544,-15.294,0],"e":[1093.398,11.416,0],"to":[49.9817848205566,0,0],"ti":[-32.2767219543457,-15.5276231765747,0]},{"i":{"x":0.833,"y":0.815},"o":{"x":0.333,"y":0},"n":"0p833_0p815_0p333_0","t":120,"s":[1093.398,11.416,0],"e":[1197.08,104.322,0],"to":[73.283447265625,35.2550582885742,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":135.517,"s":[1197.08,104.322,0],"e":[1231.937,166.608,0],"to":[0,0,0],"ti":[0,0,0]},{"t":141}]},"a":{"k":[-135.5,18.8,0]},"s":{"k":[28.736,28.736,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[51.156,51.156]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.82,0.76,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-135.5,-11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":0,"op":181,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":181,"fr":30,"w":375,"h":500} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 7524c23c..d114e018 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,20 +1,17 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.BottomSheetScaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.blur import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.Paint import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res +import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants @@ -22,7 +19,6 @@ import io.github.alexzhirkevich.compottie.assets.rememberLottieAssetsManager import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi -import kotlin.math.roundToInt private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -47,11 +43,16 @@ private val TEXT = "text.json" private val IMAGE_ASSET = "image_asset.json" private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" +@OptIn(ExperimentalResourceApi::class) @Composable fun App() { val composition = rememberLottieComposition( - LottieCompositionSpec.Resource(ROBOT) + spec = LottieCompositionSpec.DotLottie { + Res.readBytes("files/dotlottie/dot.lottie") + }, +// spec = LottieCompositionSpec.Resource(ROBOT), + assetsManager = rememberResourcesAssetsManager() ) LaunchedEffect(composition) { @@ -66,7 +67,6 @@ fun App() { composition = composition.value, iterations = LottieConstants.IterateForever, onLoadError = { throw it }, - assetManager = rememberResourcesAssetsManager() ), contentDescription = null ) diff --git a/example/shared/src/iosMain/kotlin/main.ios.kt b/example/shared/src/iosMain/kotlin/main.ios.kt index a5124304..6722258d 100644 --- a/example/shared/src/iosMain/kotlin/main.ios.kt +++ b/example/shared/src/iosMain/kotlin/main.ios.kt @@ -1,5 +1,5 @@ import androidx.compose.ui.window.ComposeUIViewController -fun MainViewController() = ComposeUIViewController { +fun MainViewController() = ComposeUIViewController { App() } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e9206640..e61110ed 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,10 +5,13 @@ dokka="1.9.0" compose="1.6.10" androidGradlePlugin = "8.1.1" lottie-android="6.4.0" +okio = "3.9.0" serialization="1.6.2" [libraries] lottie-android = { module ="com.airbnb.android:lottie-compose", version.ref = "lottie-android" } +okio = { module = "com.squareup.okio:okio", version.ref = "okio" } +okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "okio" } serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } [plugins] @@ -20,3 +23,4 @@ android-library = { id = "com.android.library", version.ref = "androidGradlePlug dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } + diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index f1ee1531..5ca1dbde 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -634,6 +634,13 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserify-zlib@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.21.10: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" @@ -2125,6 +2132,16 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" diff --git a/settings.gradle.kts b/settings.gradle.kts index 279a49de..e001aa9b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -19,6 +19,7 @@ dependencyResolutionManagement { rootProject.name = "compottie" include(":compottie") +include(":compottie-dot") include(":example:desktopApp") include(":example:webApp") include(":example:androidapp") From b90430059260b74599ac33b7ecfb521fffb2e10a Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Fri, 7 Jun 2024 16:13:19 +0300 Subject: [PATCH 034/100] wip network --- build.gradle.kts | 7 + compottie-dot/build.gradle.kts | 11 - .../alexzhirkevich/compottie/DotLottie.kt | 2 +- .../compottie/DotLottieAssetsManager.kt | 46 + .../compottie/DotLottieCompositionSpec.kt | 60 +- .../compottie/DotLottieManifest.kt | 15 + .../alexzhirkevich/compottie/Pako.js.kt | 58 -- .../compottie/ZipFileSystem.js.kt | 47 + .../compottie/DotLottie.jvmNative.kt | 5 +- .../compottie/ZipFileSystem.web.kt | 16 + compottie-network/build.gradle.kts | 177 ++++ .../compottie/DefaultHttpClient.kt | 18 + .../alexzhirkevich/compottie/DiskCache.kt | 204 +++++ .../compottie/DiskCacheStrategy.kt | 33 + .../compottie/LottieCacheStrategy.kt | 17 + .../alexzhirkevich/compottie/LruDiskCache.kt | 847 ++++++++++++++++++ .../compottie/NetworkAssetsManager.kt | 58 ++ .../compottie/NetworkCompositionSpec.kt | 128 +++ .../internal/platform/PlatformPath.android.kt | 2 +- .../compottie/InternalCompottieApi.kt | 5 + .../io/github/alexzhirkevich/compottie/L.kt | 6 + .../compottie/LottieAnimationFormat.kt | 5 + .../compottie/LottieComposition.kt | 47 +- .../compottie/LottieCompositionSpec.kt | 20 +- .../alexzhirkevich/compottie/LottieLogger.kt | 19 + .../alexzhirkevich/compottie/LottiePainter.kt | 12 +- .../assets/CompoundLottieAssetsFetcher.kt | 55 +- .../compottie/assets/LottieAsset.kt | 41 + .../compottie/assets/LottieAssetManager.kt | 21 +- .../internal/helpers/CompoundTrimPath.kt | 68 +- .../internal/platform/PlatformPath.kt | 100 +-- .../internal/shapes/BaseStrokeShape.kt | 48 +- .../internal/shapes/SolidStrokeShape.kt | 2 + example/shared/build.gradle.kts | 32 +- .../files/dotlottie/dot_with_image.lottie | Bin 0 -> 583821 bytes .../composeResources/files/test.json | 1 - example/shared/src/commonMain/kotlin/App.kt | 52 +- gradle/libs.versions.toml | 7 + settings.gradle.kts | 3 +- 39 files changed, 1996 insertions(+), 299 deletions(-) create mode 100644 compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt create mode 100644 compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieManifest.kt delete mode 100644 compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt create mode 100644 compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt create mode 100644 compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt create mode 100644 compottie-network/build.gradle.kts create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkCompositionSpec.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAsset.kt create mode 100644 example/shared/src/commonMain/composeResources/files/dotlottie/dot_with_image.lottie diff --git a/build.gradle.kts b/build.gradle.kts index 3e93bef8..32d76cd3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,13 @@ plugins { alias(libs.plugins.serialization).apply(false) } +buildscript { + dependencies { + classpath(libs.gp.atomicfu) + + } +} + //tasks.register("clean", Delete::class) { // delete(rootProject.buildDir) //} diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts index 4b736bde..8215891d 100644 --- a/compottie-dot/build.gradle.kts +++ b/compottie-dot/build.gradle.kts @@ -91,17 +91,6 @@ kotlin { // implementation(npm("pako","2.1.0")) implementation(npm("browserify-zlib","0.2.0")) } - - val skikoMain by creating { - dependsOn(commonMain.get()) - desktopMain.dependsOn(this) - iosMain.get().dependsOn(this) - macosMain.get().dependsOn(this) - jsMain.get().dependsOn(this) - webMain.dependsOn(this) - } - - } } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt index 076fb588..ee1e88e4 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt @@ -4,5 +4,5 @@ import okio.FileSystem import okio.Path internal expect class ZipFileSystem(encoded : ByteArray, parent : FileSystem, path : Path) { - suspend fun read(entry: ZipEntry) : ByteArray + suspend fun read(path: Path) : ByteArray } \ No newline at end of file diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt new file mode 100644 index 00000000..15c86b38 --- /dev/null +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -0,0 +1,46 @@ +package io.github.alexzhirkevich.compottie + +import io.github.alexzhirkevich.compottie.assets.LottieAsset +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import okio.FileNotFoundException +import okio.IOException +import okio.Path.Companion.toPath + +internal class DotLottieAssetsManager( + private val zipFileSystem: ZipFileSystem, +) : LottieAssetsManager { + + override suspend fun fetch(asset: LottieAsset): ByteArray? { + + val trimPath = asset.path + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val trimName = asset.name + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + load(null, trimPath, trimName)?.let { + return it + } + + val dir = when (asset.type) { + LottieAsset.AssetType.Image -> "/images" + } + + return load(dir, trimPath, trimName) + } + + private suspend fun load(root: String?, trimPath: String?, trimName: String?): ByteArray? { + val fullPath = listOfNotNull(root, trimPath, trimName) + .joinToString("/") + + return try { + zipFileSystem.read(fullPath.toPath()) + } catch (t: IOException) { + null + } + } +} \ No newline at end of file diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 5b4229c9..7e5df2a1 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -1,22 +1,38 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json import okio.Path.Companion.toPath import okio.fakefilesystem.FakeFileSystem -import kotlin.io.encoding.Base64 -import kotlin.io.encoding.ExperimentalEncodingApi +/** + * [LottieComposition] from a dotLottie zip archive. + * + * @param archive archive bytes supplier + * @param assetsManager required only if animation contains assets that are not included to the archive + * */ @Stable fun LottieCompositionSpec.Companion.DotLottie( - archive: suspend () -> ByteArray -) : LottieCompositionSpec = DotLottieCompositionSpec(archive) + assetsManager: LottieAssetsManager = LottieAssetsManager, + archive: suspend () -> ByteArray, +) : LottieCompositionSpec = DotLottieCompositionSpec(archive, assetsManager) +@OptIn(ExperimentalSerializationApi::class) +private val DotLottieJson = Json { + isLenient = true + ignoreUnknownKeys = true + allowTrailingComma = true +} + private class DotLottieCompositionSpec( - private val archive : suspend () -> ByteArray + private val archive : suspend () -> ByteArray, + private val assetsManager: LottieAssetsManager ) : LottieCompositionSpec { - @OptIn(ExperimentalEncodingApi::class) + @OptIn(InternalCompottieApi::class) override suspend fun load(): LottieComposition { val fileSystem = FakeFileSystem() @@ -24,25 +40,39 @@ private class DotLottieCompositionSpec( val bytes = archive() - fileSystem.write(path){ + fileSystem.write(path) { write(bytes) } - val entries = fileSystem.listZipEntries(path) - val zipSystem = ZipFileSystem(bytes, fileSystem, path) - val animations = entries[("/animations".toPath())]!!.children - val animBytes = zipSystem.read(animations.first()) - println(animBytes.decodeToString()) - return LottieComposition.parse(animBytes.decodeToString()) + val manifest = DotLottieJson.decodeFromString( + zipSystem.read("manifest.json".toPath()).decodeToString() + ) + + val animation = manifest.animations.first() + + val anim = zipSystem.read("animations/${animation.id}.json".toPath()) + + return LottieComposition.parse(anim.decodeToString()).apply { + + speed = animation.speed + if (animation.loop) { + iterations = LottieConstants.IterateForever + } + prepare(DotLottieAssetsManager(zipSystem)) + prepare(assetsManager) + } } override fun hashCode(): Int { - return 31 * archive.hashCode() + return 31 * archive.hashCode() + assetsManager.hashCode() } override fun equals(other: Any?): Boolean { - return (other as? DotLottieCompositionSpec)?.archive == archive + return (other as? DotLottieCompositionSpec)?.let { + it.archive == archive && + it.assetsManager == assetsManager + } == true } } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieManifest.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieManifest.kt new file mode 100644 index 00000000..a1faf0e7 --- /dev/null +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieManifest.kt @@ -0,0 +1,15 @@ +package io.github.alexzhirkevich.compottie + +import kotlinx.serialization.Serializable + +@Serializable +internal class DotLottieManifest( + val animations : List +) + +@Serializable +internal class DotLottieAnimation( + val id : String? = null, + val speed : Float = 1f, + val loop : Boolean = false +) \ No newline at end of file diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt deleted file mode 100644 index 90a80f00..00000000 --- a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/Pako.js.kt +++ /dev/null @@ -1,58 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import okio.FileSystem -import okio.Path -import org.khronos.webgl.ArrayBuffer -import org.khronos.webgl.ArrayBufferView -import org.khronos.webgl.Int8Array -import org.khronos.webgl.Uint8Array -import org.w3c.files.Blob -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException -import kotlin.coroutines.suspendCoroutine -import kotlin.io.encoding.Base64 -import kotlin.io.encoding.ExperimentalEncodingApi -import kotlin.js.Promise -import kotlin.js.collections.JsArray -import kotlin.reflect.typeOf - -external fun require(lib : String) : dynamic - -internal suspend fun decompress(array: ByteArray) : ByteArray { - - val ds = DecompressionStream("deflate-raw") - - val reader = Blob(array.toTypedArray()) - .asDynamic() - .stream() - .pipeThrough(ds) - .getReader() - .read() as Promise<*> - - return suspendCoroutine { cont -> - reader.then { - val value = it.asDynamic().value as ArrayBufferView - cont.resume(Uint8Array(value.buffer).unsafeCast()) - }.catch { - cont.resumeWithException(it) - } - } -} - -external class DecompressionStream(alg : String) - -internal actual class ZipFileSystem actual constructor( - private val encoded : ByteArray, - private val parent : FileSystem, - path : Path - -) { - - actual suspend fun read(entry: ZipEntry): ByteArray { - return encoded - .copyOfRange(entry.offset.toInt()+39, (entry.offset + entry.compressedSize).toInt()) - .let { - decompress(it) - } - } -} \ No newline at end of file diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt new file mode 100644 index 00000000..095dcf14 --- /dev/null +++ b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt @@ -0,0 +1,47 @@ +//package io.github.alexzhirkevich.compottie +// +//import okio.FileSystem +//import okio.Path +//import org.khronos.webgl.ArrayBufferView +//import org.khronos.webgl.Uint8Array +//import org.w3c.files.Blob +//import kotlin.coroutines.resume +//import kotlin.coroutines.resumeWithException +//import kotlin.coroutines.suspendCoroutine +//import kotlin.js.Promise +// +//external fun require(lib : String) : dynamic +// +//internal suspend fun decompress(array: ByteArray) : ByteArray { +// +// val ds = DecompressionStream("deflate-raw") +// +// val reader = Blob(array.toTypedArray()) +// .asDynamic() +// .stream() +// .pipeThrough(ds) +// .getReader() +// .read() as Promise<*> +// +// return suspendCoroutine { cont -> +// reader.then { +// val value = it.asDynamic().value as ArrayBufferView +// cont.resume(Uint8Array(value.buffer).unsafeCast()) +// }.catch { +// cont.resumeWithException(it) +// } +// } +//} +// +//external class DecompressionStream(alg : String) +// +//internal actual class ZipFileSystem actual constructor( +// private val encoded : ByteArray, +// private val parent : FileSystem, +// path : Path +// +//) { +// actual suspend fun read(path: Path): ByteArray { +// TODO("DotLottie is not available for JS yet") +// } +//} \ No newline at end of file diff --git a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt index 9db33dd8..1e8135e2 100644 --- a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt +++ b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt @@ -4,7 +4,6 @@ import okio.FileSystem import okio.Path import okio.openZip - internal actual class ZipFileSystem actual constructor( encoded : ByteArray, parent : FileSystem, @@ -13,8 +12,8 @@ internal actual class ZipFileSystem actual constructor( private val zipFileSystem = parent.openZip(path) - actual suspend fun read(entry: ZipEntry) : ByteArray { - return zipFileSystem.read(entry.canonicalPath) { + actual suspend fun read(path: Path): ByteArray { + return zipFileSystem.read(path) { readByteArray() } } diff --git a/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt new file mode 100644 index 00000000..3f1b707d --- /dev/null +++ b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt @@ -0,0 +1,16 @@ +package io.github.alexzhirkevich.compottie + +import okio.FileSystem +import okio.Path + +internal actual class ZipFileSystem actual constructor( + private val encoded : ByteArray, + private val parent : FileSystem, + path : Path + +) { + + actual suspend fun read(path: Path): ByteArray { + TODO("DotLottie is not available for web yet") + } +} \ No newline at end of file diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts new file mode 100644 index 00000000..9dd180e6 --- /dev/null +++ b/compottie-network/build.gradle.kts @@ -0,0 +1,177 @@ + @file:Suppress("DSL_SCOPE_VIOLATION") + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import java.util.Base64 + +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.android.library) + alias(libs.plugins.compose) + alias(libs.plugins.composeCompiler) + alias(libs.plugins.dokka) + alias(libs.plugins.serialization) + id("kotlinx-atomicfu") + id("maven-publish") + id("signing") +} + +group = "io.github.alexzhirkevich" +version = libs.versions.compottie.get() + +val _jvmTarget = findProperty("jvmTarget") as String + +kotlin { + + @OptIn(ExperimentalKotlinGradlePluginApi::class) + applyDefaultHierarchyTemplate { + common { + group("jvmNative") { + withAndroidTarget() + withJvm() + withIos() + withMacos() + } + group("web"){ + withJs() + withWasmJs() + } + } + } + + androidTarget{ + publishLibraryVariants("release") + compilations.all { + kotlinOptions { + jvmTarget = _jvmTarget + } + } + } + + + iosArm64() + iosX64() + iosSimulatorArm64() + + wasmJs(){ + browser() + } + js(IR){ + browser() + } + jvm("desktop"){ + compilations.all { + kotlinOptions { + jvmTarget = _jvmTarget + } + } + } + + macosArm64() + macosX64() + + + sourceSets { + commonMain.dependencies { + implementation(compose.runtime) + implementation(libs.serialization) + implementation(libs.okio) + api(libs.ktor.client.core) + implementation(project(":compottie")) + implementation(project(":compottie-dot")) + } + } +} + +android { + namespace = "io.github.alexzhirkevich.compottie" + compileSdk = 34 + defaultConfig { + minSdk = 21 + } + + compileOptions { + sourceCompatibility = JavaVersion.toVersion(_jvmTarget) + targetCompatibility = JavaVersion.toVersion(_jvmTarget) + } +} + +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} +// https://github.com/gradle/gradle/issues/26091 +val signingTasks = tasks.withType() +tasks.withType().configureEach { + dependsOn(signingTasks) +} + +publishing { + if (System.getenv("OSSRH_PASSWORD")!=null) { + + repositories { + maven { + val releasesRepoUrl = + "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + val snapshotsRepoUrl = + "https://s01.oss.sonatype.org/content/repositories/snapshots/" + url = if (version.toString().contains("dev")) { + uri(snapshotsRepoUrl) + } else { + uri(releasesRepoUrl) + } + credentials { + username = System.getenv("OSSRH_USERNAME") + password = System.getenv("OSSRH_PASSWORD") + } + } + } + } + + publications.withType { + artifact(javadocJar) + pom { + name.set("compottie-network") + description.set("Compose Multiplatform lottie animation") + url.set("https://github.com/alexzhirkevich/compottie") + + licenses { + license { + name.set("MIT") + url.set("https://opensource.org/licenses/MIT") + } + } + developers { + developer { + id.set("alexzhirkevich") + name.set("Alexander Zhirkevich") + email.set("sasha.zhirkevich@gmail.com") + } + } + scm { + url.set("https://github.com/alexzhirkevich/compottie") + connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + } + } + } +} + +if (System.getenv("GPG_KEY") != null) { + signing { + useInMemoryPgpKeys( + Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), + System.getenv("GPG_KEY_PWD"), + ) + sign(publishing.publications) + } +} + + +configurations.all { + resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } + } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt new file mode 100644 index 00000000..ef481645 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt @@ -0,0 +1,18 @@ +package io.github.alexzhirkevich.compottie + +import io.ktor.client.HttpClient +import io.ktor.client.request.get +import io.ktor.client.statement.HttpResponse +import io.ktor.http.Url + +internal val DefaultHttpClient by lazy { + HttpClient { + expectSuccess = true + } +} + +typealias NetworkRequest = suspend (HttpClient, Url) -> HttpResponse + +internal val GetRequest : NetworkRequest by lazy { + { c, u -> c.get(u) } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt new file mode 100644 index 00000000..d296c863 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt @@ -0,0 +1,204 @@ +//package io.github.alexzhirkevich.compottie +// +//import coil3.util.defaultFileSystem +//import coil3.util.ioCoroutineDispatcher +//import coil3.util.remainingFreeSpaceBytes +//import kotlinx.coroutines.CoroutineDispatcher +//import okio.Closeable +//import okio.FileSystem +//import okio.Path +// +///** +// * An LRU cache of files. +// */ +//interface DiskCache { +// +// /** The current size of the cache in bytes. */ +// val size: Long +// +// /** The maximum size of the cache in bytes. */ +// val maxSize: Long +// +// /** The directory that contains the cache's files. */ +// val directory: Path +// +// /** The file system that contains the cache's files. */ +// val fileSystem: FileSystem +// +// /** +// * Read the entry associated with [key]. +// * +// * IMPORTANT: **You must** call either [Snapshot.close] or [Snapshot.closeAndOpenEditor] when +// * finished reading the snapshot. An open snapshot prevents opening a new [Editor] or deleting +// * the entry on disk. +// */ +// fun openSnapshot(key: String): Snapshot? +// +// /** +// * Write to the entry associated with [key]. +// * +// * IMPORTANT: **You must** call one of [Editor.commit], [Editor.commitAndOpenSnapshot], or +// * [Editor.abort] to complete the edit. An open editor prevents opening a new [Snapshot], +// * opening a new [Editor], or deleting the entry on disk. +// */ +// fun openEditor(key: String): Editor? +// +// /** +// * Delete the entry referenced by [key]. +// * +// * @return 'true' if [key] was removed successfully. Else, return 'false'. +// */ +// fun remove(key: String): Boolean +// +// /** +// * Delete all entries in the disk cache. +// */ +// fun clear() +// +// /** +// * Close any open snapshots, abort all in-progress edits, and close any open system resources. +// */ +// fun shutdown() +// +// /** +// * A snapshot of the values for an entry. +// * +// * IMPORTANT: You must **only read** [metadata] or [data]. Mutating either file can corrupt the +// * disk cache. To modify the contents of those files, use [openEditor]. +// */ +// interface Snapshot : Closeable { +// +// /** Get the metadata file path for this entry. */ +// val metadata: Path +// +// /** Get the data file path for this entry. */ +// val data: Path +// +// /** Close the snapshot to allow editing. */ +// override fun close() +// +// /** Close the snapshot and call [openEditor] for this entry atomically. */ +// fun closeAndOpenEditor(): Editor? +// } +// +// /** +// * Edits the values for an entry. +// * +// * Calling [metadata] or [data] marks that file as dirty so it will be persisted to disk +// * if this editor is committed. +// * +// * IMPORTANT: You must **only read or modify the contents** of [metadata] or [data]. +// * Renaming, locking, or other mutating file operations can corrupt the disk cache. +// */ +// interface Editor { +// +// /** Get the metadata file path for this entry. */ +// val metadata: Path +// +// /** Get the data file path for this entry. */ +// val data: Path +// +// /** Commit the edit so the changes are visible to readers. */ +// fun commit() +// +// /** Commit the write and call [openSnapshot] for this entry atomically. */ +// fun commitAndOpenSnapshot(): Snapshot? +// +// /** Abort the edit. Any written data will be discarded. */ +// fun abort() +// } +// +// class Builder { +// +// private var directory: Path? = null +// private var fileSystem = defaultFileSystem() +// private var maxSizePercent = 0.02 // 2% +// private var minimumMaxSizeBytes = 10L * 1024 * 1024 // 10MB +// private var maximumMaxSizeBytes = 250L * 1024 * 1024 // 250MB +// private var maxSizeBytes = 0L +// private var cleanupDispatcher = ioCoroutineDispatcher() +// +// /** +// * Set the [directory] where the cache stores its data. +// * +// * IMPORTANT: It is an error to have two [DiskCache] instances active in the same +// * directory at the same time as this can corrupt the disk cache. +// */ +// fun directory(directory: Path) = apply { +// this.directory = directory +// } +// +// /** +// * Set the [fileSystem] where the cache stores its data. +// */ +// fun fileSystem(fileSystem: FileSystem) = apply { +// this.fileSystem = fileSystem +// } +// +// /** +// * Set the maximum size of the disk cache as a percentage of the device's free disk space. +// */ +// fun maxSizePercent(percent: Double) = apply { +// require(percent in 0.0..1.0) { "percent must be in the range [0.0, 1.0]." } +// this.maxSizeBytes = 0 +// this.maxSizePercent = percent +// } +// +// /** +// * Set the minimum size of the disk cache in bytes. +// * This is ignored if [maxSizeBytes] is set. +// */ +// fun minimumMaxSizeBytes(size: Long) = apply { +// require(size > 0) { "size must be > 0." } +// this.minimumMaxSizeBytes = size +// } +// +// /** +// * Set the maximum size of the disk cache in bytes. +// * This is ignored if [maxSizeBytes] is set. +// */ +// fun maximumMaxSizeBytes(size: Long) = apply { +// require(size > 0) { "size must be > 0." } +// this.maximumMaxSizeBytes = size +// } +// +// /** +// * Set the maximum size of the disk cache in bytes. +// */ +// fun maxSizeBytes(size: Long) = apply { +// require(size > 0) { "size must be > 0." } +// this.maxSizePercent = 0.0 +// this.maxSizeBytes = size +// } +// +// /** +// * Set the [CoroutineDispatcher] that cache size trim operations will be executed on. +// */ +// fun cleanupDispatcher(dispatcher: CoroutineDispatcher) = apply { +// this.cleanupDispatcher = dispatcher +// } +// +// /** +// * Create a new [DiskCache] instance. +// */ +// fun build(): DiskCache { +// val directory = checkNotNull(directory) { "directory == null" } +// val maxSize = if (maxSizePercent > 0) { +// try { +// val size = maxSizePercent * fileSystem.remainingFreeSpaceBytes(directory) +// size.toLong().coerceIn(minimumMaxSizeBytes, maximumMaxSizeBytes) +// } catch (_: Exception) { +// minimumMaxSizeBytes +// } +// } else { +// maxSizeBytes +// } +// return RealDiskCache( +// maxSize = maxSize, +// directory = directory, +// fileSystem = fileSystem, +// cleanupDispatcher = cleanupDispatcher, +// ) +// } +// } +//} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt new file mode 100644 index 00000000..56991fda --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -0,0 +1,33 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.runtime.remember +import okio.Buffer +import okio.FileSystem + + +@Composable +fun rememberDiskCacheStrategy() : LottieCacheStrategy { + return remember { + DiskCacheStrategy() + } + + +} + +@Stable +class DiskCacheStrategy : LottieCacheStrategy { + + override suspend fun save(url: String, byteArray: ByteArray) { + val key = Buffer().write(url.encodeToByteArray()).md5().hex() + + FileSystem.SYSTEM_TEMPORARY_DIRECTORY + } + + override suspend fun load(url: String): ByteArray? { + return null + } +} + +//internal expect fun FileSystem.Companion.System : FileSystem \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt new file mode 100644 index 00000000..1ca5792d --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt @@ -0,0 +1,17 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Stable + +@Stable +interface LottieCacheStrategy { + + suspend fun save( + url: String, + byteArray: ByteArray + ) + + suspend fun load( + url: String + ): ByteArray? +} + diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt new file mode 100644 index 00000000..c486e0b4 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt @@ -0,0 +1,847 @@ +//package io.github.alexzhirkevich.compottie +// +// +//import coil3.util.LruMutableMap +//import coil3.util.createFile +//import coil3.util.deleteContents +//import coil3.util.forEachIndices +//import kotlinx.atomicfu.locks.SynchronizedObject +//import kotlinx.atomicfu.locks.synchronized +//import kotlinx.coroutines.CoroutineDispatcher +//import kotlinx.coroutines.CoroutineScope +//import kotlinx.coroutines.ExperimentalCoroutinesApi +//import kotlinx.coroutines.SupervisorJob +//import kotlinx.coroutines.cancel +//import kotlinx.coroutines.launch +//import okio.BufferedSink +//import okio.Closeable +//import okio.EOFException +//import okio.FileSystem +//import okio.ForwardingFileSystem +//import okio.IOException +//import okio.Path +//import okio.Sink +//import okio.blackholeSink +//import okio.buffer +// +///** +// * A cache that uses a bounded amount of space on a filesystem. Each cache entry has a string key +// * and a fixed number of values. Each key must match the regex `[a-z0-9_-]{1,64}`. Values are byte +// * sequences, accessible as streams or files. Each value must be between `0` and `Int.MAX_VALUE` +// * bytes in length. +// * +// * The cache stores its data in a directory on the filesystem. This directory must be exclusive to +// * the cache; the cache may delete or overwrite files from its directory. It is an error for +// * multiple processes to use the same cache directory at the same time. +// * +// * This cache limits the number of bytes that it will store on the filesystem. When the number of +// * stored bytes exceeds the limit, the cache will remove entries in the background until the limit +// * is satisfied. The limit is not strict: the cache may temporarily exceed it while waiting for +// * files to be deleted. The limit does not include filesystem overhead or the cache journal so +// * space-sensitive applications should set a conservative limit. +// * +// * Clients call [edit] to create or update the values of an entry. An entry may have only one editor +// * at one time; if a value is not available to be edited then [edit] will return null. +// * +// * * When an entry is being **created** it is necessary to supply a full set of values; the empty +// * value should be used as a placeholder if necessary. +// * +// * * When an entry is being **edited**, it is not necessary to supply data for every value; values +// * default to their previous value. +// * +// * Every [edit] call must be matched by a call to [Editor.commit] or [Editor.abort]. Committing is +// * atomic: a read observes the full set of values as they were before or after the commit, but never +// * a mix of values. +// * +// * Clients call [get] to read a snapshot of an entry. The read will observe the value at the time +// * that [get] was called. Updates and removals after the call do not impact ongoing reads. +// * +// * This class is tolerant of some I/O errors. If files are missing from the filesystem, the +// * corresponding entries will be dropped from the cache. If an error occurs while writing a cache +// * value, the edit will fail silently. Callers should handle other problems by catching +// * `IOException` and responding appropriately. +// * +// * @constructor Create a cache which will reside in [directory]. This cache is lazily initialized on +// * first access and will be created if it does not exist. +// * @param directory a writable directory. +// * @param cleanupDispatcher the dispatcher to run cache size trim operations on. +// * @param valueCount the number of values per cache entry. Must be positive. +// * @param maxSize the maximum number of bytes this cache should use to store. +// */ +//internal class DiskLruCache( +// fileSystem: FileSystem, +// private val directory: Path, +// cleanupDispatcher: CoroutineDispatcher, +// private val maxSize: Long, +// private val appVersion: Int, +// private val valueCount: Int, +//) : Closeable { +// +// /* +// * This cache uses a journal file named "journal". A typical journal file looks like this: +// * +// * libcore.io.DiskLruCache +// * 1 +// * 100 +// * 2 +// * +// * CLEAN 3400330d1dfc7f3f7f4b8d4d803dfcf6 832 21054 +// * DIRTY 335c4c6028171cfddfbaae1a9c313c52 +// * CLEAN 335c4c6028171cfddfbaae1a9c313c52 3934 2342 +// * REMOVE 335c4c6028171cfddfbaae1a9c313c52 +// * DIRTY 1ab96a171faeeee38496d8b330771a7a +// * CLEAN 1ab96a171faeeee38496d8b330771a7a 1600 234 +// * READ 335c4c6028171cfddfbaae1a9c313c52 +// * READ 3400330d1dfc7f3f7f4b8d4d803dfcf6 +// * +// * The first five lines of the journal form its header. They are the constant string +// * "libcore.io.DiskLruCache", the disk cache's version, the application's version, the value +// * count, and a blank line. +// * +// * Each of the subsequent lines in the file is a record of the state of a cache entry. Each line +// * contains space-separated values: a state, a key, and optional state-specific values. +// * +// * o DIRTY lines track that an entry is actively being created or updated. Every successful +// * DIRTY action should be followed by a CLEAN or REMOVE action. DIRTY lines without a matching +// * CLEAN or REMOVE indicate that temporary files may need to be deleted. +// * +// * o CLEAN lines track a cache entry that has been successfully published and may be read. A +// * publish line is followed by the lengths of each of its values. +// * +// * o READ lines track accesses for LRU. +// * +// * o REMOVE lines track entries that have been deleted. +// * +// * The journal file is appended to as cache operations occur. The journal may occasionally be +// * compacted by dropping redundant lines. A temporary file named "journal.tmp" will be used during +// * compaction; that file should be deleted if it exists when the cache is opened. +// */ +// +// init { +// require(maxSize > 0L) { "maxSize <= 0" } +// require(valueCount > 0) { "valueCount <= 0" } +// } +// +// private val journalFile = directory / JOURNAL_FILE +// private val journalFileTmp = directory / JOURNAL_FILE_TMP +// private val journalFileBackup = directory / JOURNAL_FILE_BACKUP +// private val lruEntries = LruMutableMap() +// private val cleanupScope = +// @OptIn(ExperimentalCoroutinesApi::class) +// CoroutineScope(SupervisorJob() + cleanupDispatcher.limitedParallelism(1)) +// private val lock = SynchronizedObject() +// private var size = 0L +// private var operationsSinceRewrite = 0 +// private var journalWriter: BufferedSink? = null +// private var hasJournalErrors = false +// private var initialized = false +// private var closed = false +// private var mostRecentTrimFailed = false +// private var mostRecentRebuildFailed = false +// +// private val fileSystem = object : ForwardingFileSystem(fileSystem) { +// override fun sink(file: Path, mustCreate: Boolean): Sink { +// // Ensure the parent directory exists. +// file.parent?.let(::createDirectories) +// return super.sink(file, mustCreate) +// } +// } +// +// fun initialize() = synchronized(lock) { +// if (initialized) return +// +// // If a temporary file exists, delete it. +// fileSystem.delete(journalFileTmp) +// +// // If a backup file exists, use it instead. +// if (fileSystem.exists(journalFileBackup)) { +// // If journal file also exists just delete backup file. +// if (fileSystem.exists(journalFile)) { +// fileSystem.delete(journalFileBackup) +// } else { +// fileSystem.atomicMove(journalFileBackup, journalFile) +// } +// } +// +// // Prefer to pick up where we left off. +// if (fileSystem.exists(journalFile)) { +// try { +// readJournal() +// processJournal() +// initialized = true +// return +// } catch (_: IOException) { +// // The journal is corrupt. +// } +// +// // The cache is corrupted; attempt to delete the contents of the directory. +// // This can throw and we'll let that propagate out as it likely means there +// // is a severe filesystem problem. +// try { +// delete() +// } finally { +// closed = false +// } +// } +// +// writeJournal() +// initialized = true +// } +// +// /** +// * Reads the journal and initializes [lruEntries]. +// */ +// private fun readJournal() { +// fileSystem.read(journalFile) { +// val magic = readUtf8LineStrict() +// val version = readUtf8LineStrict() +// val appVersionString = readUtf8LineStrict() +// val valueCountString = readUtf8LineStrict() +// val blank = readUtf8LineStrict() +// +// if (MAGIC != magic || +// VERSION != version || +// appVersion.toString() != appVersionString || +// valueCount.toString() != valueCountString || +// blank.isNotEmpty() +// ) { +// throw IOException("unexpected journal header: " + +// "[$magic, $version, $appVersionString, $valueCountString, $blank]") +// } +// +// var lineCount = 0 +// while (true) { +// try { +// readJournalLine(readUtf8LineStrict()) +// lineCount++ +// } catch (_: EOFException) { +// break // End of journal. +// } +// } +// +// operationsSinceRewrite = lineCount - lruEntries.size +// +// // If we ended on a truncated line, rebuild the journal before appending to it. +// if (!exhausted()) { +// writeJournal() +// } else { +// journalWriter = newJournalWriter() +// } +// } +// } +// +// private fun newJournalWriter(): BufferedSink { +// val fileSink = fileSystem.appendingSink(journalFile) +// val faultHidingSink = FaultHidingSink(fileSink) { +// hasJournalErrors = true +// } +// return faultHidingSink.buffer() +// } +// +// private fun readJournalLine(line: String) { +// val firstSpace = line.indexOf(' ') +// if (firstSpace == -1) throw IOException("unexpected journal line: $line") +// +// val keyBegin = firstSpace + 1 +// val secondSpace = line.indexOf(' ', keyBegin) +// val key: String +// if (secondSpace == -1) { +// key = line.substring(keyBegin) +// if (firstSpace == REMOVE.length && line.startsWith(REMOVE)) { +// lruEntries.remove(key) +// return +// } +// } else { +// key = line.substring(keyBegin, secondSpace) +// } +// +// val entry = lruEntries.getOrPut(key) { Entry(key) } +// when { +// secondSpace != -1 && firstSpace == CLEAN.length && line.startsWith(CLEAN) -> { +// val parts = line.substring(secondSpace + 1).split(' ') +// entry.readable = true +// entry.currentEditor = null +// entry.setLengths(parts) +// } +// secondSpace == -1 && firstSpace == DIRTY.length && line.startsWith(DIRTY) -> { +// entry.currentEditor = Editor(entry) +// } +// secondSpace == -1 && firstSpace == READ.length && line.startsWith(READ) -> { +// // This work was already done by calling lruEntries.get(). +// } +// else -> throw IOException("unexpected journal line: $line") +// } +// } +// +// /** +// * Computes the current size and collects garbage as a part of initializing the cache. +// * Dirty entries are assumed to be inconsistent and will be deleted. +// */ +// private fun processJournal() { +// var size = 0L +// val iterator = lruEntries.values.iterator() +// while (iterator.hasNext()) { +// val entry = iterator.next() +// if (entry.currentEditor == null) { +// for (i in 0 until valueCount) { +// size += entry.lengths[i] +// } +// } else { +// entry.currentEditor = null +// for (i in 0 until valueCount) { +// fileSystem.delete(entry.cleanFiles[i]) +// fileSystem.delete(entry.dirtyFiles[i]) +// } +// iterator.remove() +// } +// } +// this.size = size +// } +// +// /** +// * Writes [lruEntries] to a new journal file. This replaces the current journal if it exists. +// */ +// private fun writeJournal() = synchronized(lock) { +// journalWriter?.close() +// +// fileSystem.write(journalFileTmp) { +// writeUtf8(MAGIC).writeByte('\n'.code) +// writeUtf8(VERSION).writeByte('\n'.code) +// writeDecimalLong(appVersion.toLong()).writeByte('\n'.code) +// writeDecimalLong(valueCount.toLong()).writeByte('\n'.code) +// writeByte('\n'.code) +// +// for (entry in lruEntries.values) { +// if (entry.currentEditor != null) { +// writeUtf8(DIRTY) +// writeByte(' '.code) +// writeUtf8(entry.key) +// writeByte('\n'.code) +// } else { +// writeUtf8(CLEAN) +// writeByte(' '.code) +// writeUtf8(entry.key) +// entry.writeLengths(this) +// writeByte('\n'.code) +// } +// } +// } +// +// if (fileSystem.exists(journalFile)) { +// fileSystem.atomicMove(journalFile, journalFileBackup) +// fileSystem.atomicMove(journalFileTmp, journalFile) +// fileSystem.delete(journalFileBackup) +// } else { +// fileSystem.atomicMove(journalFileTmp, journalFile) +// } +// +// journalWriter = newJournalWriter() +// operationsSinceRewrite = 0 +// hasJournalErrors = false +// mostRecentRebuildFailed = false +// } +// +// /** +// * Returns a snapshot of the entry named [key], or null if it doesn't exist or is not currently +// * readable. If a value is returned, it is moved to the head of the LRU queue. +// */ +// operator fun get(key: String): Snapshot? = synchronized(lock) { +// checkNotClosed() +// validateKey(key) +// initialize() +// +// val snapshot = lruEntries[key]?.snapshot() ?: return null +// +// operationsSinceRewrite++ +// journalWriter!!.apply { +// writeUtf8(READ) +// writeByte(' '.code) +// writeUtf8(key) +// writeByte('\n'.code) +// } +// +// if (journalRewriteRequired()) { +// launchCleanup() +// } +// +// return snapshot +// } +// +// /** Returns an editor for the entry named [key], or null if another edit is in progress. */ +// fun edit(key: String): Editor? = synchronized(lock) { +// checkNotClosed() +// validateKey(key) +// initialize() +// +// var entry = lruEntries[key] +// +// if (entry?.currentEditor != null) { +// return null // Another edit is in progress. +// } +// +// if (entry != null && entry.lockingSnapshotCount != 0) { +// return null // We can't write this file because a reader is still reading it. +// } +// +// if (mostRecentTrimFailed || mostRecentRebuildFailed) { +// // The OS has become our enemy! If the trim job failed, it means we are storing more +// // data than requested by the user. Do not allow edits so we do not go over that limit +// // any further. If the journal rebuild failed, the journal writer will not be active, +// // meaning we will not be able to record the edit, causing file leaks. In both cases, +// // we want to retry the clean up so we can get out of this state! +// launchCleanup() +// return null +// } +// +// // Flush the journal before creating files to prevent file leaks. +// journalWriter!!.apply { +// writeUtf8(DIRTY) +// writeByte(' '.code) +// writeUtf8(key) +// writeByte('\n'.code) +// flush() +// } +// +// if (hasJournalErrors) { +// return null // Don't edit; the journal can't be written. +// } +// +// if (entry == null) { +// entry = Entry(key) +// lruEntries[key] = entry +// } +// val editor = Editor(entry) +// entry.currentEditor = editor +// return editor +// } +// +// /** +// * Returns the number of bytes currently being used to store the values in this cache. +// * This may be greater than the max size if a background deletion is pending. +// */ +// fun size(): Long = synchronized(lock) { +// initialize() +// return size +// } +// +// private fun completeEdit(editor: Editor, success: Boolean) = synchronized(lock) { +// val entry = editor.entry +// check(entry.currentEditor == editor) +// +// if (success && !entry.zombie) { +// // Ensure all files that have been written to have an associated dirty file. +// for (i in 0 until valueCount) { +// if (editor.written[i] && !fileSystem.exists(entry.dirtyFiles[i])) { +// editor.abort() +// return +// } +// } +// +// // Replace the clean files with the dirty ones. +// for (i in 0 until valueCount) { +// val dirty = entry.dirtyFiles[i] +// val clean = entry.cleanFiles[i] +// if (fileSystem.exists(dirty)) { +// fileSystem.atomicMove(dirty, clean) +// } else { +// // Ensure every entry is complete. +// fileSystem.createFile(entry.cleanFiles[i]) +// } +// val oldLength = entry.lengths[i] +// val newLength = fileSystem.metadata(clean).size ?: 0 +// entry.lengths[i] = newLength +// size = size - oldLength + newLength +// } +// } else { +// // Discard any dirty files. +// for (i in 0 until valueCount) { +// fileSystem.delete(entry.dirtyFiles[i]) +// } +// } +// +// entry.currentEditor = null +// if (entry.zombie) { +// removeEntry(entry) +// return +// } +// +// operationsSinceRewrite++ +// journalWriter!!.apply { +// if (success || entry.readable) { +// entry.readable = true +// writeUtf8(CLEAN) +// writeByte(' '.code) +// writeUtf8(entry.key) +// entry.writeLengths(this) +// writeByte('\n'.code) +// } else { +// lruEntries.remove(entry.key) +// writeUtf8(REMOVE) +// writeByte(' '.code) +// writeUtf8(entry.key) +// writeByte('\n'.code) +// } +// flush() +// } +// +// if (size > maxSize || journalRewriteRequired()) { +// launchCleanup() +// } +// } +// +// /** +// * We rewrite [lruEntries] to the on-disk journal after a sufficient number of operations. +// */ +// private fun journalRewriteRequired() = operationsSinceRewrite >= 2000 +// +// /** +// * Drops the entry for [key] if it exists and can be removed. If the entry for [key] is +// * currently being edited, that edit will complete normally but its value will not be stored. +// * +// * @return true if an entry was removed. +// */ +// fun remove(key: String): Boolean = synchronized(lock) { +// checkNotClosed() +// validateKey(key) +// initialize() +// +// val entry = lruEntries[key] ?: return false +// val removed = removeEntry(entry) +// if (removed && size <= maxSize) mostRecentTrimFailed = false +// return removed +// } +// +// private fun removeEntry(entry: Entry): Boolean { +// // If we can't delete files that are still open, mark this entry as a zombie so its files +// // will be deleted when those files are closed. +// if (entry.lockingSnapshotCount > 0) { +// // Mark this entry as 'DIRTY' so that if the process crashes this entry won't be used. +// journalWriter?.apply { +// writeUtf8(DIRTY) +// writeByte(' '.code) +// writeUtf8(entry.key) +// writeByte('\n'.code) +// flush() +// } +// } +// if (entry.lockingSnapshotCount > 0 || entry.currentEditor != null) { +// entry.zombie = true +// return true +// } +// +// for (i in 0 until valueCount) { +// fileSystem.delete(entry.cleanFiles[i]) +// size -= entry.lengths[i] +// entry.lengths[i] = 0 +// } +// +// operationsSinceRewrite++ +// journalWriter?.apply { +// writeUtf8(REMOVE) +// writeByte(' '.code) +// writeUtf8(entry.key) +// writeByte('\n'.code) +// } +// lruEntries.remove(entry.key) +// +// if (journalRewriteRequired()) { +// launchCleanup() +// } +// +// return true +// } +// +// private fun checkNotClosed() { +// check(!closed) { "cache is closed" } +// } +// +// /** Closes this cache. Stored values will remain on the filesystem. */ +// override fun close() = synchronized(lock) { +// if (!initialized || closed) { +// closed = true +// return +// } +// +// // Copying for concurrent iteration. +// for (entry in lruEntries.values.toTypedArray()) { +// // Prevent the edit from completing normally. +// entry.currentEditor?.detach() +// } +// +// trimToSize() +// cleanupScope.cancel() +// journalWriter!!.close() +// journalWriter = null +// closed = true +// } +// +// fun flush() = synchronized(lock) { +// if (!initialized) return +// +// checkNotClosed() +// trimToSize() +// journalWriter!!.flush() +// } +// +// private fun trimToSize() { +// while (size > maxSize) { +// if (!removeOldestEntry()) return +// } +// mostRecentTrimFailed = false +// } +// +// /** Returns true if an entry was removed. This will return false if all entries are zombies. */ +// private fun removeOldestEntry(): Boolean { +// for (toEvict in lruEntries.values) { +// if (!toEvict.zombie) { +// removeEntry(toEvict) +// return true +// } +// } +// return false +// } +// +// /** +// * Closes the cache and deletes all of its stored values. This will delete all files in the +// * cache directory including files that weren't created by the cache. +// */ +// private fun delete() { +// close() +// fileSystem.deleteContents(directory) +// } +// +// /** +// * Deletes all stored values from the cache. In-flight edits will complete normally but their +// * values will not be stored. +// */ +// fun evictAll() = synchronized(lock) { +// initialize() +// // Copying for concurrent iteration. +// for (entry in lruEntries.values.toTypedArray()) { +// removeEntry(entry) +// } +// mostRecentTrimFailed = false +// } +// +// /** +// * Launch an asynchronous operation to trim files from the disk cache and update the journal. +// */ +// private fun launchCleanup() { +// cleanupScope.launch { +// synchronized(lock) { +// if (!initialized || closed) return@launch +// try { +// trimToSize() +// } catch (_: IOException) { +// mostRecentTrimFailed = true +// } +// try { +// if (journalRewriteRequired()) { +// writeJournal() +// } +// } catch (_: IOException) { +// mostRecentRebuildFailed = true +// journalWriter = blackholeSink().buffer() +// } +// } +// } +// } +// +// private fun validateKey(key: String) { +// require(LEGAL_KEY_PATTERN matches key) { +// "keys must match regex [a-z0-9_-]{1,120}: \"$key\"" +// } +// } +// +// /** A snapshot of the values for an entry. */ +// inner class Snapshot(val entry: Entry) : Closeable { +// +// private var closed = false +// +// fun file(index: Int): Path { +// check(!closed) { "snapshot is closed" } +// return entry.cleanFiles[index] +// } +// +// override fun close() { +// if (!closed) { +// closed = true +// synchronized(lock) { +// entry.lockingSnapshotCount-- +// if (entry.lockingSnapshotCount == 0 && entry.zombie) { +// removeEntry(entry) +// } +// } +// } +// } +// +// fun closeAndEdit(): Editor? { +// synchronized(lock) { +// close() +// return edit(entry.key) +// } +// } +// } +// +// /** Edits the values for an entry. */ +// inner class Editor(val entry: Entry) { +// +// private var closed = false +// +// /** +// * True for a given index if that index's file has been written to. +// */ +// val written = BooleanArray(valueCount) +// +// /** +// * Get the file to read from/write to for [index]. +// * This file will become the new value for this index if committed. +// */ +// fun file(index: Int): Path { +// synchronized(lock) { +// check(!closed) { "editor is closed" } +// written[index] = true +// return entry.dirtyFiles[index].also(fileSystem::createFile) +// } +// } +// +// /** +// * Prevents this editor from completing normally. +// * This is necessary if the target entry is evicted while this editor is active. +// */ +// fun detach() { +// if (entry.currentEditor == this) { +// entry.zombie = true // We can't delete it until the current edit completes. +// } +// } +// +// /** +// * Commits this edit so it is visible to readers. +// * This releases the edit lock so another edit may be started on the same key. +// */ +// fun commit() = complete(true) +// +// /** +// * Commit the edit and open a new [Snapshot] atomically. +// */ +// fun commitAndGet(): Snapshot? { +// synchronized(lock) { +// commit() +// return get(entry.key) +// } +// } +// +// /** +// * Aborts this edit. +// * This releases the edit lock so another edit may be started on the same key. +// */ +// fun abort() = complete(false) +// +// /** +// * Complete this edit either successfully or unsuccessfully. +// */ +// private fun complete(success: Boolean) { +// synchronized(lock) { +// check(!closed) { "editor is closed" } +// if (entry.currentEditor == this) { +// completeEdit(this, success) +// } +// closed = true +// } +// } +// } +// +// inner class Entry(val key: String) { +// +// /** Lengths of this entry's files. */ +// val lengths = LongArray(valueCount) +// val cleanFiles = ArrayList(valueCount) +// val dirtyFiles = ArrayList(valueCount) +// +// /** True if this entry has ever been published. */ +// var readable = false +// +// /** True if this entry must be deleted when the current edit or read completes. */ +// var zombie = false +// +// /** +// * The ongoing edit or null if this entry is not being edited. When setting this to null +// * the entry must be removed if it is a zombie. +// */ +// var currentEditor: Editor? = null +// +// /** +// * Snapshots currently reading this entry before a write or delete can proceed. When +// * decrementing this to zero, the entry must be removed if it is a zombie. +// */ +// var lockingSnapshotCount = 0 +// +// init { +// // The names are repetitive so re-use the same builder to avoid allocations. +// val fileBuilder = StringBuilder(key).append('.') +// val truncateTo = fileBuilder.length +// for (i in 0 until valueCount) { +// fileBuilder.append(i) +// cleanFiles += directory / fileBuilder.toString() +// fileBuilder.append(".tmp") +// dirtyFiles += directory / fileBuilder.toString() +// fileBuilder.setLength(truncateTo) +// } +// } +// +// /** Set lengths using decimal numbers like "10123". */ +// fun setLengths(strings: List) { +// if (strings.size != valueCount) { +// throw IOException("unexpected journal line: $strings") +// } +// +// try { +// for (i in strings.indices) { +// lengths[i] = strings[i].toLong() +// } +// } catch (_: NumberFormatException) { +// throw IOException("unexpected journal line: $strings") +// } +// } +// +// /** Append space-prefixed lengths to [writer]. */ +// fun writeLengths(writer: BufferedSink) { +// for (length in lengths) { +// writer.writeByte(' '.code).writeDecimalLong(length) +// } +// } +// +// /** Returns a snapshot of this entry. */ +// fun snapshot(): Snapshot? { +// if (!readable) return null +// if (currentEditor != null || zombie) return null +// +// // Ensure that the entry's files still exist. +// cleanFiles.forEachIndices { file -> +// if (!fileSystem.exists(file)) { +// // Since the entry is no longer valid, remove it so the metadata is accurate +// // (i.e. the cache size). +// try { +// removeEntry(this) +// } catch (_: IOException) {} +// return null +// } +// } +// lockingSnapshotCount++ +// return Snapshot(this) +// } +// } +// +// companion object { +// @VisibleForTesting internal const val JOURNAL_FILE = "journal" +// @VisibleForTesting internal const val JOURNAL_FILE_TMP = "journal.tmp" +// @VisibleForTesting internal const val JOURNAL_FILE_BACKUP = "journal.bkp" +// @VisibleForTesting internal const val MAGIC = "libcore.io.DiskLruCache" +// @VisibleForTesting internal const val VERSION = "1" +// private const val CLEAN = "CLEAN" +// private const val DIRTY = "DIRTY" +// private const val REMOVE = "REMOVE" +// private const val READ = "READ" +// private val LEGAL_KEY_PATTERN = "[a-z0-9_-]{1,120}".toRegex() +// } +//} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt new file mode 100644 index 00000000..7aed1d12 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -0,0 +1,58 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import io.github.alexzhirkevich.compottie.assets.LottieAsset +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.ktor.client.HttpClient +import io.ktor.client.statement.bodyAsChannel +import io.ktor.http.URLParserException +import io.ktor.http.Url +import io.ktor.util.toByteArray + +@Composable +fun rememberNetworkAssetsManager( + client: HttpClient = DefaultHttpClient, + cacheStrategy: LottieCacheStrategy = rememberDiskCacheStrategy(), + request : NetworkRequest = GetRequest, +) { + val updatedRequest by rememberUpdatedState(request) + + return remember(client, cacheStrategy) { + NetworkAssetsManager(client, cacheStrategy) { c, u -> + updatedRequest.invoke(c, u) + } + } +} + +class NetworkAssetsManager( + private val client: HttpClient, + private val cacheStrategy: LottieCacheStrategy, + private val request : NetworkRequest, +) : LottieAssetsManager { + + override suspend fun fetch(asset: LottieAsset): ByteArray? { + return try { + val path = asset.path + asset.name + + val url = try { + Url(path) + } catch (t: URLParserException) { + L.logger.error("Failed to load lottie asset ${asset.id} - incorrect url", t) + return null + } + + cacheStrategy.load(path)?.let { + return it + } + + request(client, url).bodyAsChannel().toByteArray().also { + cacheStrategy.save(path, it) + } + } catch (t: Throwable) { + null + } + } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkCompositionSpec.kt new file mode 100644 index 00000000..42e88c4a --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkCompositionSpec.kt @@ -0,0 +1,128 @@ +import androidx.compose.runtime.Stable +import io.github.alexzhirkevich.compottie.DefaultHttpClient +import io.github.alexzhirkevich.compottie.DiskCacheStrategy +import io.github.alexzhirkevich.compottie.DotLottie +import io.github.alexzhirkevich.compottie.GetRequest +import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.LottieAnimationFormat +import io.github.alexzhirkevich.compottie.LottieCacheStrategy +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.LottieCompositionSpec +import io.github.alexzhirkevich.compottie.NetworkAssetsManager +import io.github.alexzhirkevich.compottie.NetworkRequest +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.rememberNetworkAssetsManager +import io.ktor.client.HttpClient +import io.ktor.client.plugins.ClientRequestException +import io.ktor.client.statement.bodyAsChannel +import io.ktor.client.statement.bodyAsText +import io.ktor.http.HttpHeaders +import io.ktor.http.Url +import io.ktor.http.isSuccess +import io.ktor.util.toByteArray + +/** + * [LottieComposition] from web [url] + * + * @param client Ktor http client to use + * @param assetsManager lottie assets manager. By default no-op manager is used. + * Use [NetworkAssetsManager] if assets use web URLs too + * + * @see rememberNetworkAssetsManager + * */ +@Stable +fun LottieCompositionSpec.Companion.Url( + url : String, + format: LottieAnimationFormat = LottieAnimationFormat.Unknown, + client: HttpClient = DefaultHttpClient, + assetsManager: LottieAssetsManager = LottieAssetsManager, + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + request : NetworkRequest = GetRequest, +) : LottieCompositionSpec = NetworkCompositionSpec( + url = url, + format = format, + client = client, + assetsManager = assetsManager, + cacheStrategy = cacheStrategy, + request = request +) + +@Stable +private class NetworkCompositionSpec( + private val url : String, + private val format: LottieAnimationFormat, + private val client : HttpClient, + private val assetsManager: LottieAssetsManager, + private val cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + private val request : NetworkRequest, +) : LottieCompositionSpec { + + override suspend fun load(): LottieComposition { + + cacheStrategy.load(url)?.let { + val delegate = if (byteArrayOf(it[0]).decodeToString() == "{") { + LottieCompositionSpec.JsonString(assetsManager) { it.decodeToString() } + } else { + LottieCompositionSpec.DotLottie(assetsManager) { it } + } + + return delegate.load() + } + + val resp = request(this.client, Url(url)) + + if (!resp.status.isSuccess()) { + throw ClientRequestException(resp, resp.bodyAsText()) + } + + val contentType = resp.headers[HttpHeaders.ContentType]?.lowercase() + + val isJson = format == LottieAnimationFormat.Json || + contentType == null || + contentType == "application/json" || + contentType.startsWith("text") + + val bytes = resp.bodyAsChannel().toByteArray() + + val delegate = if (isJson) { + LottieCompositionSpec.JsonString(assetsManager) { bytes.decodeToString() } + } else { + LottieCompositionSpec.DotLottie(assetsManager) { bytes } + } + + val composition = delegate.load() + + try { + cacheStrategy.save(url, bytes) + } catch (t: Throwable) { + L.logger.error("Lottie disk cache strategy error", t) + } + return composition + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as NetworkCompositionSpec + + if (url != other.url) return false + if (format != other.format) return false + if (client != other.client) return false + if (assetsManager != other.assetsManager) return false + if (cacheStrategy != other.cacheStrategy) return false + if (request != other.request) return false + + return true + } + + override fun hashCode(): Int { + var result = url.hashCode() + result = 31 * result + format.hashCode() + result = 31 * result + client.hashCode() + result = 31 * result + assetsManager.hashCode() + result = 31 * result + cacheStrategy.hashCode() + result = 31 * result + request.hashCode() + return result + } +} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt index 9aa8fe1e..86d4e416 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt @@ -32,6 +32,7 @@ private class AndroidExtendedPathMeasure( ) : ExtendedPathMeasure { override fun nextContour(): Boolean { + return internalPathMeasure.nextContour() } @@ -67,7 +68,6 @@ private class AndroidExtendedPathMeasure( override fun getPosition( distance: Float ): Offset { - val result = internalPathMeasure.getPosTan(distance, positionArray, tangentArray) return if (result) { Offset(positionArray[0], positionArray[1]) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt new file mode 100644 index 00000000..7cbf5b82 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie + +@RequiresOptIn("This is internal api used but compottie modules") +@Retention(value = AnnotationRetention.BINARY) +annotation class InternalCompottieApi() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt new file mode 100644 index 00000000..0771455c --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie + +object L { + + var logger : LottieLogger = LottieLogger.Default +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt new file mode 100644 index 00000000..72269ef1 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie + +enum class LottieAnimationFormat { + Json, DotLottie, Unknown +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index b918cde1..a38b99d6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -4,11 +4,15 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.text.font.FontFamily +import io.github.alexzhirkevich.compottie.assets.LottieAsset import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.NoOpAssetsManager import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset @@ -26,7 +30,7 @@ import kotlin.jvm.JvmInline @Stable class LottieComposition internal constructor( internal val lottieData: LottieData, - val fonts : Map = emptyMap(), + internal val fonts : Map = emptyMap(), ) { val startFrame: Float get() = lottieData.inPoint @@ -36,8 +40,17 @@ class LottieComposition internal constructor( val frameRate: Float get() = lottieData.frameRate + @InternalCompottieApi + var iterations : Int by mutableStateOf(1) + + @InternalCompottieApi + var speed : Float by mutableFloatStateOf(1f) + /** - * Preload assets for instant animation displaying + * Preload assets for instant animation displaying. + * + * Assets that are already loaded (such as embedded base64 images or assets + * successfully loaded at prev [prepare] call) will not be loaded again * */ suspend fun prepare( assetsManager: LottieAssetsManager @@ -48,10 +61,16 @@ class LottieComposition internal constructor( when (asset) { is ImageAsset -> { if (asset.bitmap == null) { - assetsManager.fetch(asset.id, asset.path, asset.fileName) - ?.let { - asset.setBitmap(ImageBitmap.fromBytes(it)) - } + assetsManager.fetch( + LottieAsset( + id = asset.id, + type = LottieAsset.AssetType.Image, + path = asset.path, + name = asset.fileName + ) + )?.let { + asset.setBitmap(ImageBitmap.fromBytes(it)) + } } } @@ -62,22 +81,24 @@ class LottieComposition internal constructor( } } - internal fun marker(name : String?) = + internal fun marker(name: String?) = lottieData.markers.firstOrNull { it.name == name } companion object { - fun parse(json: String) = - LottieComposition( - lottieData = LottieJson.decodeFromString(json), - ) + fun parse(json: String) = LottieComposition( + lottieData = LottieJson.decodeFromString(json), + ) } } +/** + * Load and prepare [LottieComposition] for displaying + * */ @Composable @Stable fun rememberLottieComposition( spec : LottieCompositionSpec, - assetsManager: LottieAssetsManager = NoOpAssetsManager, + assetsManager: LottieAssetsManager = LottieAssetsManager, ) : LottieCompositionResult { val result = remember(spec) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 367d5f1c..8e63ba93 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -2,7 +2,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import androidx.compose.ui.text.font.FontFamily +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import kotlin.jvm.JvmInline @Stable @@ -18,7 +18,7 @@ interface LottieCompositionSpec { */ @Stable @Deprecated( - "Use overload with lazy loading instead", + "Use overload with lazy loading and assets manager instead", replaceWith = ReplaceWith( "JsonString { jsonString }" ) @@ -32,10 +32,12 @@ interface LottieCompositionSpec { * * Lambda should be stable. Otherwise this spec must be remembered if created in composition * */ + @OptIn(InternalCompottieApi::class) @Stable fun JsonString( - jsonString: suspend () -> String - ): LottieCompositionSpec = LazyJsonString(jsonString) + assetsManager: LottieAssetsManager = LottieAssetsManager, + jsonString: suspend () -> String, + ): LottieCompositionSpec = LazyJsonString(jsonString, assetsManager) } } @@ -57,7 +59,8 @@ private value class JsonStringImpl( @Immutable private class LazyJsonString( - private val jsonString : suspend () -> String + private val jsonString : suspend () -> String, + private val assetsManager: LottieAssetsManager, ) : LottieCompositionSpec { override suspend fun load(): LottieComposition { @@ -69,11 +72,14 @@ private class LazyJsonString( } override fun equals(other: Any?): Boolean { - return (other as? LazyJsonString)?.jsonString == jsonString + return (other as? LazyJsonString)?.let { + it.jsonString == jsonString && + it.assetsManager == assetsManager + } == true } override fun hashCode(): Int { - return jsonString.hashCode() + return 31 * jsonString.hashCode() + assetsManager.hashCode() } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt new file mode 100644 index 00000000..20ac0c6e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt @@ -0,0 +1,19 @@ +package io.github.alexzhirkevich.compottie + +interface LottieLogger { + + fun log(message: String) + + fun error(message: String, throwable: Throwable) + + object Default : LottieLogger { + override fun log(message: String) { + println(message) + } + + override fun error(message: String, throwable: Throwable) { + println(message) + throwable.printStackTrace() + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 093b9cf5..f63a22b1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -20,8 +20,6 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize -import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.NoOpAssetsManager import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer @@ -30,6 +28,7 @@ import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import kotlin.math.roundToInt import kotlin.time.measureTime +@OptIn(InternalCompottieApi::class) @Composable fun rememberLottiePainter( composition : LottieComposition?, @@ -37,12 +36,11 @@ fun rememberLottiePainter( restartOnPlay: Boolean = true, reverseOnRepeat: Boolean = false, clipSpec: LottieClipSpec? = null, - speed: Float = 1f, - iterations: Int = 1, + speed: Float = composition?.speed ?: 1f, + iterations: Int = composition?.iterations ?: 1, cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, useCompositionFrameRate: Boolean = false, maintainOriginalImageBounds: Boolean = false, - onLoadError : (Throwable) -> Painter = { EmptyPainter }, ) : Painter { val progress = animateLottieCompositionAsState( @@ -61,7 +59,6 @@ fun rememberLottiePainter( composition = composition, progress = { progress.value }, maintainOriginalImageBounds = maintainOriginalImageBounds, - onLoadError = onLoadError ) } @@ -70,8 +67,7 @@ fun rememberLottiePainter( composition : LottieComposition?, progress : () -> Float, maintainOriginalImageBounds: Boolean = false, - clipTextToBoundingBoxes: Boolean = false, - onLoadError : (Throwable) -> Painter = { EmptyPainter }, + clipTextToBoundingBoxes: Boolean = false ) : Painter { val fontFamilyResolver = LocalFontFamilyResolver.current diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt index 0cda3437..cbf55294 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt @@ -1,25 +1,30 @@ -package io.github.alexzhirkevich.compottie.assets - -internal class CompoundLottieAssetsFetcher( - private val localFetcher: LottieAssetsManager, - private val remoteFetcher : LottieAssetsManager, - private val cache : LottieAssetsCache -) : LottieAssetsManager { - - override suspend fun fetch(id: String, path: String, name: String): ByteArray? { - return if (path.startsWith("https://", true) || - path.startsWith("http://", true) - ) { - cache.loadFromCache(id, path, name)?.let { - return it - } - - remoteFetcher.fetch(id, path, name)?.also { - cache.saveToCache(it, id, path, name) - } - - } else { - localFetcher.fetch(id, path, name) - } - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie.assets +// +//internal class CompoundLottieAssetsFetcher( +// private val localFetcher: LottieAssetsManager, +// private val remoteFetcher : LottieAssetsManager, +// private val cache : LottieAssetsCache +//) : LottieAssetsManager { +// +// override suspend fun fetch( +// id: String, +// type: LottieAssetsManager.AssetType, +// path: String, +// name: String +// ): ByteArray? { +// return if (path.startsWith("https://", true) || +// path.startsWith("http://", true) +// ) { +// cache.loadFromCache(id, path, name)?.let { +// return it +// } +// +// remoteFetcher.fetch(id, type, path, name)?.also { +// cache.saveToCache(it, id, path, name) +// } +// +// } else { +// localFetcher.fetch(id, type, path, name) +// } +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAsset.kt new file mode 100644 index 00000000..a6ba3721 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAsset.kt @@ -0,0 +1,41 @@ +package io.github.alexzhirkevich.compottie.assets + +import androidx.compose.runtime.Immutable + +@Immutable +class LottieAsset internal constructor( + val id : String, + val type : AssetType, + val path: String, + val name : String +) { + enum class AssetType { + Image + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as LottieAsset + + if (id != other.id) return false + if (type != other.type) return false + if (path != other.path) return false + if (name != other.name) return false + + return true + } + + override fun hashCode(): Int { + var result = id.hashCode() + result = 31 * result + type.hashCode() + result = 31 * result + path.hashCode() + result = 31 * result + name.hashCode() + return result + } + + override fun toString(): String { + return "LottieAsset(id='$id', type=$type, path='$path', name='$name')" + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt index 322228f2..c8cc2563 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt @@ -1,8 +1,11 @@ package io.github.alexzhirkevich.compottie.assets import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.InternalComposeApi import androidx.compose.runtime.Stable import androidx.compose.runtime.remember +import io.github.alexzhirkevich.compottie.InternalCompottieApi /** * Used to fetch lottie assets that are not embedded to the animation JSON file @@ -21,25 +24,19 @@ fun interface LottieAssetsManager { * * @param name asset name and extension (for example image.png) * */ - suspend fun fetch(id: String, path: String, name: String): ByteArray? - - companion object { - fun Compound( - networkFetcher: LottieAssetsManager, - localFetcher: LottieAssetsManager, - cache: LottieAssetsCache - ): LottieAssetsManager = CompoundLottieAssetsFetcher(networkFetcher, localFetcher, cache) + suspend fun fetch(asset: LottieAsset): ByteArray? + + companion object : LottieAssetsManager { + + override suspend fun fetch(asset: LottieAsset): ByteArray? = null } } @Composable fun rememberLottieAssetsManager( - fetch : suspend (id: String, path: String, name: String) -> ByteArray + fetch : suspend (LottieAsset) -> ByteArray? ) : LottieAssetsManager { return remember { LottieAssetsManager(fetch) } } -internal val NoOpAssetsManager = LottieAssetsManager { _, _, _ -> null } - - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt index 7c0d4df0..1350f0b1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt @@ -3,8 +3,11 @@ package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.platform.applyTrimPath +import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure +import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape +import io.github.alexzhirkevich.compottie.internal.utils.floorMod +import kotlin.math.abs internal class CompoundTrimPath { private val contents: MutableList = mutableListOf() @@ -19,3 +22,66 @@ internal class CompoundTrimPath { } } } + +internal fun Path.applyTrimPath(trimPath: TrimPathShape, state: AnimationState) { + if (trimPath.hidden) { + return + } + val start: Float = trimPath.start.interpolated(state) + val end: Float = trimPath.end.interpolated(state) + val offset: Float = trimPath.offset.interpolated(state) + + applyTrimPath( + startValue = start / 100f, + endValue = end / 100f, + offsetValue = offset / 360f + ) +} + + +private val pathMeasure by lazy { + ExtendedPathMeasure() +} + +private val tempPath = Path() + +internal fun Path.applyTrimPath( + startValue: Float, + endValue: Float, + offsetValue: Float, +) { + pathMeasure.setPath(this, false) + + val length = pathMeasure.length + if (startValue == 1f && endValue == 0f) { + return + } + if (length < 1f || abs((endValue - startValue - 1)) < .01f) { + return + } + + var start = (length * ((startValue + offsetValue) % 1f)) + var end = (length * ((endValue + offsetValue) % 1f)) + + if (start >= length && end >= length) { + start = floorMod(start, length).toFloat() + end = floorMod(end, length).toFloat() + } + + if (start < 0) { + start = floorMod(start, length).toFloat() + } + if (end < 0) { + end = floorMod(end, length).toFloat() + } + tempPath.reset() + + if (start > end) { + pathMeasure.getSegment(start, length, tempPath, true) + pathMeasure.getSegment(0f, end, tempPath, true) + } else { + pathMeasure.getSegment(start, end, tempPath, true) + } + set(tempPath) +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index 09fec295..a97982e2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.PathFillType import androidx.compose.ui.graphics.PathMeasure import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape @@ -9,6 +10,7 @@ import io.github.alexzhirkevich.compottie.internal.utils.floorMod import kotlin.math.abs import kotlin.math.max import kotlin.math.min +import kotlin.math.roundToInt internal expect fun ExtendedPathMeasure() : ExtendedPathMeasure @@ -25,101 +27,3 @@ internal fun Path.set(other : Path){ internal expect fun Path.addPath(path: Path, matrix: Matrix) : Path -internal fun Path.applyTrimPath(trimPath: TrimPathShape, state: AnimationState) { - if (trimPath.hidden) { - return - } - val start: Float = trimPath.start.interpolated(state) - val end: Float = trimPath.end.interpolated(state) - val offset: Float = trimPath.offset.interpolated(state) - - applyTrimPath( - startValue = start / 100f, - endValue = end / 100f, - offsetValue = offset / 360f - ) -} - - -private val pathMeasure = ExtendedPathMeasure() -private val tempPath = Path() -private val tempPath2 = Path() - -internal fun Path.applyTrimPath( - startValue: Float, - endValue: Float, - offsetValue: Float, -) { - pathMeasure.setPath(this, false) - - val length: Float = pathMeasure.length - if (startValue == 1f && endValue == 0f) { - return - } - if (length < 1f || abs((endValue - startValue - 1)) < .01f) { - return - } - val start = length * startValue - val end = length * endValue - - var newStart = min(start, end) - var newEnd = max(start, end) - - val offset = offsetValue * length - newStart += offset - newEnd += offset - - // If the trim path has rotated around the path, we need to shift it back. - if (newStart >= length && newEnd >= length) { - newStart = floorMod(newStart, length).toFloat() - newEnd = floorMod(newEnd, length).toFloat() - } - - if (newStart < 0) { - newStart = floorMod(newStart, length).toFloat() - } - if (newEnd < 0) { - newEnd = floorMod(newEnd, length).toFloat() - } - - // If the start and end are equals, return an empty path. - if (newStart == newEnd) { - reset() - return - } - - if (newStart >= newEnd) { - newStart -= length - } - - - tempPath.reset() - pathMeasure.getSegment( - startDistance = newStart, - stopDistance = newEnd, - destination = tempPath, - startWithMoveTo = true - ) - - if (newEnd > length) { - tempPath2.reset() - pathMeasure.getSegment( - startDistance = 0f, - stopDistance = newEnd % length, - destination = tempPath2, - startWithMoveTo = true - ) - tempPath.addPath(tempPath2) - } else if (newStart < 0) { - tempPath2.reset() - pathMeasure.getSegment( - startDistance = length + newStart, - stopDistance = length, - destination = tempPath2, - startWithMoveTo = true - ) - tempPath.addPath(tempPath2) - } - - set(tempPath) -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 5e945115..7883f989 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -21,17 +21,17 @@ import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.helpers.DashType import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash +import io.github.alexzhirkevich.compottie.internal.helpers.applyTrimPath import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.platform.applyTrimPath import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.utils.scale import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient import kotlin.jvm.JvmInline import kotlin.math.min - @Serializable @JvmInline internal value class LineCap(val type : Byte) { @@ -40,6 +40,15 @@ internal value class LineCap(val type : Byte) { val Round = LineCap(2) val Square = LineCap(3) } + + fun asStrokeCap(): StrokeCap { + return when (this) { + Butt -> StrokeCap.Butt + Round -> StrokeCap.Round + Square -> StrokeCap.Square + else -> error("Unknown line cap: $this") + } + } } @Serializable @@ -50,25 +59,17 @@ internal value class LineJoin(val type : Byte) { val Round = LineJoin(2) val Bevel = LineJoin(3) } -} -internal fun LineJoin.asStrokeJoin() : StrokeJoin { - return when(this){ - LineJoin.Miter -> StrokeJoin.Miter - LineJoin.Round -> StrokeJoin.Round - LineJoin.Bevel -> StrokeJoin.Bevel - else -> StrokeJoin.Round// error("Unknown line join: $this") + fun asStrokeJoin() : StrokeJoin { + return when(this){ + Miter -> StrokeJoin.Miter + Round -> StrokeJoin.Round + Bevel -> StrokeJoin.Bevel + else -> error("Unknown line join: $this") + } } } -internal fun LineCap.asStrokeCap() : StrokeCap { - return when(this){ - LineCap.Butt -> StrokeCap.Butt - LineCap.Round -> StrokeCap.Round - LineCap.Square -> StrokeCap.Square - else -> StrokeCap.Round //error("Unknown line cap: $this") - } -} internal abstract class BaseStrokeShape() : Shape, DrawingContent { @@ -81,15 +82,16 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private val pathGroups = mutableListOf() - private val trimPathPath = Path() private val path = Path() private val rect = MutableRect(0f, 0f, 0f, 0f) - protected val paint = Paint().apply { - isAntiAlias = true - strokeMiterLimit = strokeMiter - strokeCap = lineCap.asStrokeCap() - strokeJoin = lineJoin.asStrokeJoin() + protected val paint by lazy { + Paint().apply { + isAntiAlias = true + strokeMiterLimit = strokeMiter + strokeCap = lineCap.asStrokeCap() + strokeJoin = lineJoin.asStrokeJoin() + } } private val pm = ExtendedPathMeasure() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 62df624d..b0a033f9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -11,6 +11,7 @@ import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonContentPolymorphicSerializer @Serializable @SerialName("st") @@ -59,3 +60,4 @@ internal class SolidStrokeShape( super.draw(drawScope, parentMatrix, parentAlpha, state) } } + diff --git a/example/shared/build.gradle.kts b/example/shared/build.gradle.kts index 2f703b47..15bdca68 100644 --- a/example/shared/build.gradle.kts +++ b/example/shared/build.gradle.kts @@ -3,7 +3,6 @@ plugins { id("com.android.library") id("org.jetbrains.compose") alias(libs.plugins.composeCompiler) - } val _jvmTarget = findProperty("jvmTarget") as String @@ -48,6 +47,7 @@ kotlin { commonMain.dependencies { implementation(project(":compottie")) implementation(project(":compottie-dot")) + implementation(project(":compottie-network")) implementation(compose.ui) implementation(compose.runtime) implementation(compose.material3) @@ -55,6 +55,26 @@ kotlin { @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) implementation(compose.components.resources) } + androidMain.dependencies { + implementation(libs.ktor.client.okhttp) + } + + iosMain.dependencies { + implementation(libs.ktor.client.ios) + } + + val desktopMain by getting { + dependencies { + implementation(libs.ktor.client.okhttp) + } + } + + jsMain.dependencies { + implementation(libs.ktor.client.js) + } + wasmJsMain.dependencies { + implementation(libs.ktor.client.js) + } } } @@ -74,4 +94,14 @@ android { defaultConfig { minSdk = 24 } +} + +configurations.all { + resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } + } } \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/dotlottie/dot_with_image.lottie b/example/shared/src/commonMain/composeResources/files/dotlottie/dot_with_image.lottie new file mode 100644 index 0000000000000000000000000000000000000000..a65923b51aef0af690b6dfcfa9eccc2bd2dce512 GIT binary patch literal 583821 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 z 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 VB#+hzJvnvbV?)M?MBX_vk?Y_M$EW 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

    &~_9*4VEQEf()Ch-+q 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�f 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 Hz3Be|rT4?g literal 0 HcmV?d00001 diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index db887b2b..e69de29b 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1 +0,0 @@ -{"v":"5.5.1","fr":25,"ip":0,"op":83,"w":512,"h":512,"nm":"Find","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Searh HK Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":39,"s":[17]},{"t":82,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[349,318.089,0],"to":[-0.899,-1.186,0],"ti":[-0.663,-0.874,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39,"s":[351.074,282.958,0],"to":[0.566,0.746,0],"ti":[3.667,4.833,0]},{"t":82,"s":[349,318.089,0]}],"ix":2},"a":{"a":0,"k":[227,230,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[85,85,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":39,"s":[100,100,100]},{"t":82,"s":[85,85,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-27.95,12.823],[-15.665,28.017],[27.95,-15.598],[12.89,-28.017]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[419.166,420.413],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[60.213,0],[0,60.213],[-60.213,0],[0,-60.213]],"o":[[-60.213,0],[0,-60.213],[60.213,0],[0,60.213]],"v":[[1.193,107.788],[-107.832,-1.238],[1.193,-110.263],[110.219,-1.238]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[79.665,0],[0,-79.664],[-79.664,0],[0,79.665]],"o":[[-79.664,0],[0,79.665],[79.665,0],[0,-79.664]],"v":[[-0.001,-144.245],[-144.245,-0.001],[-0.001,144.245],[144.245,-0.001]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.144,0.588,0.987,0.479,0.302,0.708,0.994,1,0.459,0.827,1],"ix":9}},"s":{"a":0,"k":[-175.723,19.811],"ix":5},"e":{"a":0,"k":[224.922,17.593],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[215.852,217.082],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[107.615,107.615],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.599,-6.553],[0,0],[-13.321,13.321],[14.44,11.908],[0,0],[6.127,-6.127],[0,0]],"o":[[0,0],[11.843,14.65],[13.235,-13.234],[0,0],[-6.547,-5.676],[0,0],[-6.094,6.093]],"v":[[-59.871,-30.35],[5.144,50.062],[52.236,52.548],[49.987,5.649],[-29.859,-60.194],[-52.352,-59.393],[-58.993,-52.752]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.144,0.588,0.987,0.426,0.302,0.708,0.994,1,0.459,0.827,1],"ix":9}},"s":{"a":0,"k":[-11.385,26.938],"ix":5},"e":{"a":0,"k":[21.51,-15.222],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[403.406,404.022],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.586,50.51],[-50.511,-37.585],[-37.585,-50.51],[50.511,37.586]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,1,0.608,0.275,0.426,1,0.743,0.414,1,1,0.878,0.553],"ix":9}},"s":{"a":0,"k":[-33.473,-19.991],"ix":5},"e":{"a":0,"k":[-10.956,-29.023],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[365.441,366.708],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":125,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Searh HK 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[380.574,380.604,0],"ix":2},"a":{"a":0,"k":[252.841,308.282,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":39,"s":[85,85,100]},{"t":82,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-20.068,0],[-12.985,13.31],[-0.004,0.019],[0.726,1.772],[7.927,0.34],[6.086,0.019],[0.033,-3.281],[7.976,-0.032],[0.096,8.014],[0.032,3.283],[5.702,0.003],[2.089,-10.759],[0.181,-0.551],[-0.002,-0.015]],"o":[[20.065,0],[0.004,-0.019],[-0.556,-1.843],[-3.145,-7.687],[-6.076,-0.26],[-0.03,3.282],[-0.082,8.09],[-7.928,0.03],[-0.039,-3.282],[-5.702,-0.013],[-9.029,-0.004],[-0.109,0.564],[0.001,0.015],[12.986,13.314]],"v":[[0,19.396],[51.181,-2.183],[51.197,-2.238],[49.505,-7.754],[32.265,-19.136],[14.008,-19.24],[13.917,-9.394],[0.048,4.581],[-13.923,-9.311],[-14.02,-19.158],[-31.125,-19.196],[-50.662,-3.884],[-51.196,-2.231],[-51.188,-2.189]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.001,1,0.627,0.294,0.426,1,0.71,0.378,1,1,0.792,0.463],"ix":9}},"s":{"a":0,"k":[0,0],"ix":5},"e":{"a":0,"k":[100,0],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.146,279.595],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[4.804,0],[2.501,2.241]],"o":[[-2.501,2.241],[-4.803,0],[0,0]],"v":[[11.54,-1.858],[-0.001,1.858],[-11.54,-1.858]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.952999997606,0.713999968884,0.510000011968,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[220.146,237.943],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.726],[2.726,0],[0,2.726],[-2.725,0]],"o":[[0,2.726],[-2.725,0],[0,-2.726],[2.726,0]],"v":[[4.936,0],[-0.001,4.936],[-4.936,0],[-0.001,-4.936]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.862999949736,0.698000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.692,222.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.726],[2.726,0],[0,2.726],[-2.726,0]],"o":[[0,2.726],[-2.726,0],[0,-2.726],[2.726,0]],"v":[[4.936,0],[0,4.936],[-4.936,0],[0,-4.936]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.862999949736,0.698000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.576,222.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.015,-0.767],[0.785,0.024],[-0.033,0.79],[-0.782,-0.018]],"o":[[-0.071,0.785],[-0.782,-0.024],[0.032,-0.779],[0.79,0.019]],"v":[[1.237,0.022],[-0.031,1.212],[-1.203,-0.038],[0.053,-1.217]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.991999966491,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.572,202.966],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.023,-0.777],[0.773,0.057],[-0.056,0.77],[-0.773,-0.058]],"o":[[-0.097,0.792],[-0.797,-0.059],[0.059,-0.794],[0.794,0.06]],"v":[[1.241,0.109],[-0.096,1.219],[-1.208,-0.109],[0.121,-1.218]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.991999966491,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.69,202.956],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.822,0.136],[1.835,0],[1.32,-0.205],[-0.102,1.998],[-1.34,-0.027],[-3.57,0.117],[-0.088,-1.128]],"o":[[-1.825,-0.137],[-1.352,0.001],[-2.568,0.401],[0.06,-1.159],[3.572,0.07],[2.191,-0.072],[0.097,1.231]],"v":[[18.097,-33.976],[12.594,-34.006],[8.543,-33.968],[5.842,-36.946],[7.441,-38.678],[18.16,-38.687],[19.803,-36.152]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.549,0.056],[0.002,2.477],[-2.491,0.014],[-0.077,-2.461]],"o":[[-2.463,-0.053],[-0.002,-2.497],[2.485,-0.013],[0.08,2.545]],"v":[[12.754,-22.402],[8.211,-27.066],[12.777,-31.674],[17.487,-27.174]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-2.706,-0.035],[-0.966,-0.005],[-2.902,0.005],[-0.229,-0.228],[4.226,-0.008],[2.497,0.012],[-0.25,1.724]],"o":[[0.966,0.005],[2.902,-0.005],[0.228,0.229],[-0.24,4.061],[-2.497,0.005],[-1.021,-0.005],[0.186,-1.274]],"v":[[-29.501,-38.752],[-26.604,-38.738],[-17.898,-38.752],[-17.213,-38.067],[-21.679,-33.994],[-29.171,-34.007],[-31.236,-35.463]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[2.467,0.042],[0.013,2.467],[-2.572,-0.118],[0.061,-2.474]],"o":[[-2.483,-0.042],[-0.014,-2.581],[2.472,0.115],[-0.061,2.471]],"v":[[-24.333,-22.411],[-28.925,-27.027],[-24.088,-31.682],[-19.647,-26.915]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[4.604,7.144],[1.691,0.116],[-0.044,2.104],[0,5.737],[8.185,-0.049],[4.872,0.971],[0.772,0.209],[2.397,0.321],[0.814,0.035],[4.594,1.312],[-0.004,-1.369],[0.01,-7.396],[-0.003,-6.228],[-2.048,-4.425],[-6.779,-3.611],[0.052,-2.337],[-0.039,-3.282],[-7.928,0.03],[-0.082,8.09],[-0.03,3.283],[0.1,0.664],[-3.007,1.873],[-0.762,10.924],[-1.299,0.429]],"o":[[-1.368,-0.868],[-2.627,-0.181],[0.117,-5.519],[-9.987,5.567],[-4.966,-0.569],[-0.773,-0.209],[-2.264,-0.827],[-0.652,-0.61],[-4.598,-1.301],[-1.97,-0.563],[0.022,7.396],[0.004,6.227],[0.021,4.864],[3.286,7.104],[-0.053,2.337],[0.032,3.283],[0.096,8.014],[7.976,-0.032],[0.033,-3.281],[-0.027,-0.673],[-0.489,-3.264],[9.277,-5.777],[0.069,-0.987],[8.152,-2.688]],"v":[[33.671,-24.223],[29.448,-26.583],[26.728,-30.416],[26.768,-47.195],[3.561,-40.911],[-10.94,-44.314],[-13.258,-44.941],[-20.224,-46.761],[-22.513,-47.41],[-36.305,-51.316],[-38.218,-49.299],[-38.232,-27.111],[-38.222,-8.429],[-35.073,5.464],[-19.578,21.098],[-19.735,28.11],[-19.639,37.956],[-5.668,51.848],[8.201,37.873],[8.293,28.027],[8.202,26.006],[11.841,18.864],[26.755,-6.493],[28.109,-8.579]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.819999964097,0.642999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[225.862,232.328],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":7,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.071,0.785],[0.79,0.019],[0.032,-0.779],[-0.782,-0.024]],"o":[[-0.015,-0.767],[-0.782,-0.018],[-0.033,0.79],[0.785,0.024]],"v":[[1.209,-2.256],[0.026,-3.495],[-1.231,-2.316],[-0.058,-1.066]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.061,-2.474],[2.466,0.042],[0.013,2.467],[-2.573,-0.118]],"o":[[-0.06,2.472],[-2.483,-0.042],[-0.013,-2.581],[2.471,0.113]],"v":[[4.615,0.167],[-0.07,4.674],[-4.663,0.055],[0.175,-4.597]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.6,205.244],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.902,0.005],[-0.228,-0.228],[4.226,-0.008],[2.497,0.012],[-0.251,1.724],[-2.706,-0.035],[-0.965,-0.005]],"o":[[0.229,0.229],[-0.24,4.061],[-2.497,0.005],[-1.021,-0.005],[0.185,-1.274],[0.966,0.004],[2.902,-0.005]],"v":[[6.812,-2.49],[7.497,-1.804],[3.031,2.269],[-4.46,2.256],[-6.525,0.8],[-4.791,-2.49],[-1.894,-2.476]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.152,196.065],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.097,0.794],[0.794,0.06],[0.058,-0.794],[-0.797,-0.059]],"o":[[0.022,-0.775],[-0.774,-0.058],[-0.057,0.77],[0.774,0.057]],"v":[[1.181,-2.248],[0.061,-3.574],[-1.268,-2.464],[-0.157,-1.135]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-2.491,0.014],[-0.078,-2.46],[2.548,0.056],[0.002,2.477]],"o":[[2.484,-0.014],[0.08,2.545],[-2.463,-0.054],[-0.002,-2.497]],"v":[[-0.111,-4.657],[4.599,-0.159],[-0.134,4.615],[-4.677,-0.051]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.75,205.311],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.835,-0.001],[1.32,-0.206],[-0.103,1.998],[-1.34,-0.026],[-3.57,0.117],[-0.088,-1.127],[1.822,0.137]],"o":[[-1.352,0],[-2.568,0.4],[0.059,-1.16],[3.572,0.07],[2.191,-0.071],[0.097,1.231],[-1.825,-0.136]],"v":[[-0.451,2.158],[-4.503,2.196],[-7.202,-0.782],[-5.604,-2.514],[5.115,-2.524],[6.758,0.012],[5.051,2.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.19199999641,0.277999997606,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.908,196.164],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.69,0.024],[-0.003,-6.227],[-4.898,7.586]],"o":[[0.003,6.227],[-8.631,-0.966],[2.036,-1.576]],"v":[[5.883,-9.341],[5.892,9.341],[-0.994,-6.438]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.991999966491,0.819999964097,0.642999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[181.747,214.557],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.462,-4.326],[0.039,-7.321],[1.692,0.117],[-0.044,2.104],[0,5.737],[8.186,-0.048],[4.872,0.971],[0.772,0.208],[2.396,0.321],[0.815,0.035],[4.594,1.313],[-0.005,-1.37],[0.01,-7.396],[2.035,-1.576],[0.074,7.176],[-0.038,5.893],[-9,0.007],[-23.588,0.12],[0.273,-2.172],[3.763,-4.884]],"o":[[-0.04,7.322],[-1.368,-0.867],[-2.627,-0.18],[0.117,-5.519],[-9.988,5.567],[-4.966,-0.569],[-0.773,-0.208],[-2.265,-0.829],[-0.652,-0.611],[-4.597,-1.3],[-1.97,-0.562],[0.022,7.395],[-2.69,0.025],[-0.075,-7.175],[0.055,-5.892],[0.057,-9.006],[23.589,-0.019],[2.718,-0.014],[-0.77,6.125],[-2.848,3.695]],"v":[[34.848,5.004],[34.73,26.969],[30.506,24.609],[27.787,20.776],[27.827,3.996],[4.619,10.281],[-9.881,6.878],[-12.199,6.253],[-19.165,4.431],[-21.455,3.783],[-35.246,-0.124],[-37.159,1.893],[-37.173,24.081],[-44.049,26.983],[-44.272,5.457],[-44.109,-12.22],[-29.438,-26.893],[41.329,-26.97],[43.999,-23.792],[37.95,-6.798]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.282000014361,0.282000014361,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[224.803,181.135],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":125,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":54,"s":[0]},{"t":78,"s":[90]}],"ix":10},"p":{"a":0,"k":[415,319.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":54,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":68,"s":[50,50,100]},{"t":78,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":54,"op":81,"st":54,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":28,"s":[0]},{"t":52,"s":[90]}],"ix":10},"p":{"a":0,"k":[191,76.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":28,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":42,"s":[100,100,100]},{"t":52,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":28,"op":55,"st":28,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":42,"s":[0]},{"t":66,"s":[90]}],"ix":10},"p":{"a":0,"k":[131,366.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":42,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":56,"s":[80,80,100]},{"t":66,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":42,"op":69,"st":42,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"t":44,"s":[90]}],"ix":10},"p":{"a":0,"k":[158,198.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":34,"s":[85,85,100]},{"t":44,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":47,"st":20,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[0]},{"t":35,"s":[90]}],"ix":10},"p":{"a":0,"k":[330,254.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":11,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":25,"s":[100,100,100]},{"t":35,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":11,"op":38,"st":11,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[0]},{"t":62,"s":[90]}],"ix":10},"p":{"a":0,"k":[405.5,165,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":38,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":52,"s":[100,100,100]},{"t":62,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":38,"op":65,"st":38,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":24,"s":[90]}],"ix":10},"p":{"a":0,"k":[87,149.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":14,"s":[100,100,100]},{"t":24,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.077,-1.01],[0,0],[4.432,-2.829],[0,0],[-0.247,-0.982],[-1.008,-0.075],[0,0],[-2.829,-4.431],[0,0],[-0.98,0.247],[-0.077,1.009],[0,0],[-4.433,2.83],[0,0],[0.247,0.981],[1.01,0.076],[0,0],[2.827,4.431],[0,0],[0.98,-0.247]],"o":[[0,0],[-0.396,5.242],[0,0],[-0.852,0.543],[0.247,0.98],[0,0],[5.243,0.396],[0,0],[0.545,0.853],[0.981,-0.247],[0,0],[0.395,-5.242],[0,0],[0.854,-0.543],[-0.247,-0.981],[0,0],[-5.244,-0.395],[0,0],[-0.545,-0.854],[-0.98,0.247]],"v":[[-7.833,-22.164],[-8.485,-13.503],[-15.91,-1.089],[-23.233,3.583],[-24.23,6.093],[-22.165,7.833],[-13.502,8.486],[-1.089,15.91],[3.582,23.233],[6.093,24.23],[7.833,22.164],[8.487,13.502],[15.911,1.089],[23.233,-3.583],[24.23,-6.093],[22.165,-7.833],[13.503,-8.486],[1.091,-15.911],[-3.582,-23.233],[-6.093,-24.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":27,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":0,"nm":"Pre-comp 2","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,227.881,0],"ix":2},"a":{"a":0,"k":[366,306,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":732,"h":612,"ip":0,"op":84,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Bg3 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,209.135,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,17.658],[-17.428,26.819],[-14.1,7.414],[-28.2,-6.331],[-8.714,-9.161],[0,-26.82],[8.714,-9.161],[28.2,-6.331],[14.1,7.414],[17.428,26.819]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.972999961703,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[160.002,375.077],"to":[2.854,3.013],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[177.127,393.157],"to":[0,0],"ti":[2.854,3.013]},{"t":82,"s":[160.002,375.077]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.35,6.393],[0,0],[9.68,-7.135],[13.73,0],[0,-25.643],[-33.636,0],[0,25.642]],"o":[[1.254,-13.188],[0,0],[-10.186,-5.844],[-33.636,0],[0,25.642],[33.636,0],[0,-7.699]],"v":[[54.094,-18.849],[56.118,-48.93],[36.584,-34.62],[0,-43.929],[-60.904,2.501],[0,48.93],[60.904,2.501]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[160.003,375.078],"to":[2.854,3.013],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[177.128,393.158],"to":[0,0],"ti":[2.854,3.013]},{"t":82,"s":[160.003,375.078]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,7.255],[-7.162,11.021],[-5.794,3.046],[-11.588,-2.602],[-3.581,-3.766],[0,-11.021],[3.581,-3.766],[11.588,-2.602],[5.794,3.046],[7.162,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[155.085,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,7.255],[-7.162,11.021],[-5.794,3.046],[-11.588,-2.602],[-3.581,-3.766],[0,-11.021],[3.581,-3.766],[11.588,-2.602],[5.794,3.046],[7.162,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[130.712,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,7.255],[-7.162,11.021],[-5.794,3.046],[-11.588,-2.602],[-3.581,-3.766],[0,-11.021],[3.581,-3.766],[11.588,-2.602],[5.794,3.046],[7.162,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.69,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,7.255],[-7.161,11.021],[-5.794,3.046],[-11.589,-2.602],[-3.581,-3.766],[0.001,-11.021],[3.581,-3.766],[11.589,-2.602],[5.795,3.046],[7.163,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[80.09,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,7.255],[-7.161,11.021],[-5.794,3.046],[-11.589,-2.602],[-3.581,-3.766],[0.001,-11.021],[3.581,-3.766],[11.589,-2.602],[5.795,3.046],[7.163,11.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[54.068,233.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[3.844,0],[0,0],[0,-3.845],[0,0],[-3.845,0],[0,0],[0,0]],"o":[[0,0],[0,-3.845],[0,0],[-3.845,0],[0,0],[0,3.845],[0,0],[0,0],[0,0]],"v":[[65.433,3.673],[65.433,-25.724],[58.443,-32.715],[-68.822,-32.715],[-75.812,-25.724],[-75.812,13.261],[-68.822,20.252],[30.948,20.252],[75.812,32.715]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.972999961703,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[108.231,244.588],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.568,6.886],[6.885,-6.569],[6.885,-6.568],[-6.568,-6.885],[0,0],[0,0]],"o":[[-6.567,-6.885],[-6.568,-6.885],[-6.886,6.568],[0,0],[0,0],[6.885,-6.568]],"v":[[24.646,-20.216],[0.287,-20.789],[-24.072,-21.362],[-24.646,2.996],[-0.86,27.93],[24.073,4.143]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882000014361,0.929000016755,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[420.738,350.511],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.787,18.825],[18.825,-15.787],[1.072,-11.216],[0,0],[0,0],[-3.215,-3.834],[-18.825,15.787]],"o":[[-15.787,-18.824],[-9.315,7.812],[0,0],[0,0],[1.717,4.417],[15.787,18.824],[18.824,-15.787]],"v":[[40.543,-28.585],[-22.128,-34.085],[-37.816,-4.237],[-56.329,10.35],[-35.004,16.115],[-27.626,28.586],[35.043,34.085]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.889999988032,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[417.989,348.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.96,0],[-3.778,-6.21],[-1.545,0],[-0.992,-9.424],[0,-7.91],[10.566,0],[0,0],[0,10.567],[-8.625,1.865],[-5.783,0.762]],"o":[[7.785,0],[1.458,-0.359],[9.682,0],[6.855,2.923],[0,10.567],[0,0],[-10.566,0],[0,-9.175],[2.437,-5.068],[2.439,-9.205]],"v":[[-2.124,-31.708],[16.271,-21.342],[20.788,-21.889],[39.456,-5.096],[51.128,12.542],[31.964,31.708],[-31.964,31.708],[-51.127,12.542],[-36.021,-6.188],[-22.925,-15.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.972999961703,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[226.999,158.537],"to":[-0.464,0.345],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[224.217,160.605],"to":[0,0],"ti":[-0.464,0.345]},{"t":82,"s":[226.999,158.537]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.939,0],[0,-18.627],[0,0],[0,-9.725],[0.008,-0.251],[0,-10.523],[15.016,0],[0,0],[0,13.688],[-10.437,3.023],[-15.964,0],[-3.086,-1.045],[-8.302,0],[-0.077,-0.001]],"o":[[18.626,0],[0,0],[8.916,3.014],[0,0.251],[9.291,4.529],[0,15.016],[0,0],[-13.687,0],[0,-11.216],[0.868,-15.751],[3.272,0],[4.773,-6.679],[0.078,0],[5.045,-12.723]],"v":[[22.799,-53.748],[56.58,-19.967],[56.58,-19.885],[71.791,1.31],[71.779,2.063],[87.087,26.515],[59.854,53.748],[-62.262,53.748],[-87.087,28.923],[-69.213,5.084],[-39.292,-23.216],[-29.672,-21.628],[-8.809,-32.438],[-8.575,-32.437]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882000014361,0.929000016755,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[155.588,146.42],"to":[-4.962,-2.929],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[125.817,128.846],"to":[0,0],"ti":[-4.962,-2.929]},{"t":82,"s":[155.588,146.42]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.816,0],[-4.366,-19.143],[0,-17.44],[20.593,0],[0,0],[0,17.66],[-16.222,1.553],[-16.468,0],[-2.078,-0.376]],"o":[[20.445,0],[16.186,4.089],[0,20.592],[0,0],[-17.66,0],[0,-16.622],[3.964,-15.246],[2.142,0],[7.967,-10.608]],"v":[[16.911,-53.516],[58.884,-20.046],[87.086,16.169],[49.739,53.516],[-55.059,53.516],[-87.086,21.487],[-58.136,-10.393],[-23.823,-36.927],[-17.483,-36.36]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882000014361,0.929000016755,0.995999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[395.786,230.975],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":40,"s":[85,85]},{"t":82,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[33.299,-11.734],[0,0],[67.598,-67.169],[-19.657,-52.473],[-117.983,79.089]],"o":[[-99.862,35.19],[0,0],[-56.546,56.186],[120.956,-11.874],[-32.254,-12.306]],"v":[[79.299,26.739],[-56.525,-20.831],[-158.202,-39.661],[-174.548,106.83],[214.35,-15.831]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.783999992819,0.875,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[214.35,179.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.03,14.8],[33.987,-11.977],[0,0],[67.598,-67.169],[-15.717,-83.552],[-1.629,-10.976],[-127.312,107.172]],"o":[[-31.318,-14.937],[-99.862,35.19],[0,0],[-73.533,73.066],[2.54,13.499],[107.638,-1.355],[-9.808,-36.584]],"v":[[185.052,-59.426],[48.044,-17.68],[-87.78,-65.251],[-189.457,-84.081],[-190.442,114.557],[-184.527,151.25],[247.01,24.221]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.745000023935,0.851000019148,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[247.01,222.81],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[67.598,-67.169],[-15.718,-83.553],[-135.003,11.898],[-135.917,91.942],[78.523,37.451],[33.987,-11.976]],"o":[[0,0],[-73.533,73.066],[16.49,87.656],[129.283,-11.395],[71.317,-48.245],[-31.318,-14.937],[-99.862,35.19]],"v":[[-96.226,-123.354],[-197.904,-142.184],[-198.888,56.456],[-64.357,166.031],[198.941,117.411],[176.605,-117.528],[39.597,-75.784]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.705999995213,0.830999995213,0.991999966491,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256,284.169],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[160.002,375.077],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":0,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[160.003,375.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":0,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":84,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index d114e018..1e55204c 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -8,6 +8,10 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.group +import androidx.compose.ui.graphics.vector.path +import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res @@ -19,6 +23,7 @@ import io.github.alexzhirkevich.compottie.assets.rememberLottieAssetsManager import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi +import org.jetbrains.compose.resources.MissingResourceException private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -43,30 +48,34 @@ private val TEXT = "text.json" private val IMAGE_ASSET = "image_asset.json" private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" +private val DOT = "dotlottie/dot.lottie" +private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" + @OptIn(ExperimentalResourceApi::class) @Composable fun App() { val composition = rememberLottieComposition( - spec = LottieCompositionSpec.DotLottie { - Res.readBytes("files/dotlottie/dot.lottie") - }, -// spec = LottieCompositionSpec.Resource(ROBOT), - assetsManager = rememberResourcesAssetsManager() +// spec = LottieCompositionSpec.DotLottie { +// Res.readBytes("files/$DOT_WITH_IMAGE") +// }, + spec = LottieCompositionSpec.Resource(ROBOT), +// spec = LottieCompositionSpec.Url("https://assets-v2.lottiefiles.com/a/e3b38514-1150-11ee-9dde-3789514b5871/ZNdbOpdPyr.lottie"), + assetsManager = rememberResourcesAssetsManager() ) LaunchedEffect(composition) { composition.await() } + Image( modifier = Modifier .fillMaxSize() .opacityGrid(), painter = rememberLottiePainter( composition = composition.value, - iterations = LottieConstants.IterateForever, - onLoadError = { throw it }, + iterations = LottieConstants.IterateForever ), contentDescription = null ) @@ -100,22 +109,25 @@ private fun rememberResourcesAssetsManager( relativeTo : String = "files", readBytes : suspend (path : String) -> ByteArray = Res::readBytes, ) = - rememberLottieAssetsManager { _, path, name -> - val trimPath = path - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) + rememberLottieAssetsManager { asset -> + try { + val trimPath = asset.path + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) - val trimName = name - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) + val trimName = asset.name + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) - val fullPath = listOf(relativeTo.takeIf(String::isNotEmpty), trimPath, trimName) - .filterNotNull() - .joinToString("/") + val fullPath = listOfNotNull(relativeTo.takeIf(String::isNotEmpty), trimPath, trimName) + .joinToString("/") - readBytes(fullPath) + readBytes(fullPath) + } catch (x: MissingResourceException) { + null + } } private val DarkOpacity = Color(0xff7f7f7f) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e61110ed..29ac2ff7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,12 +7,19 @@ androidGradlePlugin = "8.1.1" lottie-android="6.4.0" okio = "3.9.0" serialization="1.6.2" +ktor="2.3.11" +atomicfu="0.23.1" [libraries] lottie-android = { module ="com.airbnb.android:lottie-compose", version.ref = "lottie-android" } okio = { module = "com.squareup.okio:okio", version.ref = "okio" } okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "okio" } serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } +ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } +ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" } +ktor-client-ios = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" } +ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } +gp-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu-gradle-plugin", version.ref = "atomicfu" } [plugins] compose = { id = "org.jetbrains.compose", version.ref = "compose" } diff --git a/settings.gradle.kts b/settings.gradle.kts index e001aa9b..093fb3e1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,13 +13,14 @@ dependencyResolutionManagement { google() mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - + maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental") } } rootProject.name = "compottie" include(":compottie") include(":compottie-dot") +include(":compottie-network") include(":example:desktopApp") include(":example:webApp") include(":example:androidapp") From 38f76281999b27031876e773cf62d3cd2748b1fc Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Mon, 10 Jun 2024 17:37:04 +0300 Subject: [PATCH 035/100] dotlottie zip decoding for web --- .../alexzhirkevich/compottie/DotLottie.kt | 8 +- .../compottie/DotLottieCompositionSpec.kt | 5 +- .../alexzhirkevich/compottie/ZipEntry.kt | 4 + .../alexzhirkevich/compottie/ZipFiles.kt | 87 ++++++++++--------- .../compottie/DecompressionStream.js.kt | 42 +++++++++ .../compottie/ZipFileSystem.js.kt | 84 ++++++++---------- .../compottie/DotLottie.jvmNative.kt | 2 +- .../compottie/DecompressionStream.wasmJs.kt | 61 +++++++++++++ .../compottie/ZipFileSystem.wasmJs.kt | 59 +++++++++++++ .../compottie/DecompressionStream.web.kt | 6 ++ .../compottie/ZipFileSystem.web.kt | 30 +++++-- .../webApp/src/jsMain/resources/index.html | 2 +- .../src/wasmJsMain/resources/index.html | 2 +- 13 files changed, 293 insertions(+), 99 deletions(-) create mode 100644 compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.js.kt create mode 100644 compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt create mode 100644 compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt create mode 100644 compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.web.kt diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt index ee1e88e4..9dc4d55e 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt @@ -3,6 +3,10 @@ package io.github.alexzhirkevich.compottie import okio.FileSystem import okio.Path -internal expect class ZipFileSystem(encoded : ByteArray, parent : FileSystem, path : Path) { +internal expect class ZipFileSystem( + parent : FileSystem, + entries: Map, + path : Path +) { suspend fun read(path: Path) : ByteArray -} \ No newline at end of file +} diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 7e5df2a1..64d20a01 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -44,7 +44,9 @@ private class DotLottieCompositionSpec( write(bytes) } - val zipSystem = ZipFileSystem(bytes, fileSystem, path) + val entries = fileSystem.listZipEntries(path) + + val zipSystem = ZipFileSystem(fileSystem, entries, path) val manifest = DotLottieJson.decodeFromString( zipSystem.read("manifest.json".toPath()).decodeToString() @@ -55,7 +57,6 @@ private class DotLottieCompositionSpec( val anim = zipSystem.read("animations/${animation.id}.json".toPath()) return LottieComposition.parse(anim.decodeToString()).apply { - speed = animation.speed if (animation.loop) { iterations = LottieConstants.IterateForever diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt index e61d358d..ea50059a 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipEntry.kt @@ -86,6 +86,8 @@ internal data class ZipEntry( val extendedLastModifiedAtSeconds: Int? = null, val extendedLastAccessedAtSeconds: Int? = null, val extendedCreatedAtSeconds: Int? = null, + val extraSize: Int, + val nameSize: Int, ) { val children = mutableListOf() @@ -110,6 +112,8 @@ internal data class ZipEntry( extendedLastModifiedAtSeconds = extendedLastModifiedAtSeconds, extendedLastAccessedAtSeconds = extendedLastAccessedAtSeconds, extendedCreatedAtSeconds = extendedCreatedAtSeconds, + extraSize = extraSize, + nameSize = nameSize, ) internal val lastAccessedAtMillis: Long? diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt index 966e8fad..a9c70a03 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt @@ -137,7 +137,7 @@ internal fun FileSystem.listZipEntries( } // Organize the entries into a tree. - return buildIndex(entries) + return entries.associateBy { it.canonicalPath } } } @@ -145,44 +145,51 @@ internal fun FileSystem.listZipEntries( * Returns a map containing all of [entries], plus parent entries required so that all entries * (other than the file system root `/`) have a parent. */ -private fun buildIndex(entries: List): Map { - val root = "/".toPath() - val result = mutableMapOf( - root to ZipEntry(canonicalPath = root, isDirectory = true), - ) - - // Iterate in sorted order so each path is preceded by its parent. - for (entry in entries.sortedBy { it.canonicalPath }) { - // Note that this may clobber an existing element in the map. For consistency with java.util.zip - // and java.nio.file.FileSystem, this prefers the last-encountered element. - val replaced = result.put(entry.canonicalPath, entry) - if (replaced != null) continue - - // Make sure this parent directories exist all the way up to the file system root. - var child = entry - while (true) { - val parentPath = child.canonicalPath.parent ?: break // child is '/'. - var parentEntry = result[parentPath] - - // We've found a parent that already exists! Add the child; we're done. - if (parentEntry != null) { - parentEntry.children += child - break - } - - // A parent is missing! Synthesize one. - parentEntry = ZipEntry( - canonicalPath = parentPath, - isDirectory = true, - ) - result[parentPath] = parentEntry - parentEntry.children += child - child = parentEntry - } - } - - return result -} +//private fun buildIndex(entries: List): Map { +// val root = "/".toPath() +// val result = mutableMapOf( +// root to ZipEntry( +// canonicalPath = root, +// isDirectory = true, +// extraSize = extraSize, +// nameSize = nameSize +// ), +// ) +// +// // Iterate in sorted order so each path is preceded by its parent. +// for (entry in entries.sortedBy { it.canonicalPath }) { +// // Note that this may clobber an existing element in the map. For consistency with java.util.zip +// // and java.nio.file.FileSystem, this prefers the last-encountered element. +// val replaced = result.put(entry.canonicalPath, entry) +// if (replaced != null) continue +// +// // Make sure this parent directories exist all the way up to the file system root. +// var child = entry +// while (true) { +// val parentPath = child.canonicalPath.parent ?: break // child is '/'. +// var parentEntry = result[parentPath] +// +// // We've found a parent that already exists! Add the child; we're done. +// if (parentEntry != null) { +// parentEntry.children += child +// break +// } +// +// // A parent is missing! Synthesize one. +// parentEntry = ZipEntry( +// canonicalPath = parentPath, +// isDirectory = true, +// extraSize = extraSize, +// nameSize = nameSize, +// ) +// result[parentPath] = parentEntry +// parentEntry.children += child +// child = parentEntry +// } +// } +// +// return result +//} /** When this returns, [this] will be positioned at the start of the next entry. */ @Throws(IOException::class) @@ -292,6 +299,8 @@ internal fun BufferedSource.readCentralDirectoryZipEntry(): ZipEntry { crc = crc, compressedSize = compressedSize, size = size, + nameSize = nameSize, + extraSize = extraSize, compressionMethod = compressionMethod, offset = offset, dosLastModifiedAtDate = dosLastModifiedDate, diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.js.kt new file mode 100644 index 00000000..2beb430b --- /dev/null +++ b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.js.kt @@ -0,0 +1,42 @@ +package io.github.alexzhirkevich.compottie + +import org.khronos.webgl.ArrayBufferView +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.coroutines.suspendCoroutine +import kotlin.js.Promise + +external class DecompressionStream(alg : String) + +external interface UnderlyingSource { + fun start(controller: SourceController) +} + +external interface SourceController { + fun enqueue(data : ByteArray) + + fun close() +} + +external class ReadableStream( + source: UnderlyingSource +) { + fun pipeThrough(decompressionStream: DecompressionStream) : ReadableStream + + fun getReader() : StreamReader +} + +external interface StreamReader { + fun read() : Promise +} + +external interface StreamReadResult { + val done : Boolean + + val value : ArrayBufferView +} + +internal suspend fun Promise.await() = suspendCoroutine { cont -> + then { cont.resume(it) } + .catch { cont.resumeWithException(Exception(it.toString())) } +} \ No newline at end of file diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt index 095dcf14..9af8d2bf 100644 --- a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt +++ b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt @@ -1,47 +1,37 @@ -//package io.github.alexzhirkevich.compottie -// -//import okio.FileSystem -//import okio.Path -//import org.khronos.webgl.ArrayBufferView -//import org.khronos.webgl.Uint8Array -//import org.w3c.files.Blob -//import kotlin.coroutines.resume -//import kotlin.coroutines.resumeWithException -//import kotlin.coroutines.suspendCoroutine -//import kotlin.js.Promise -// -//external fun require(lib : String) : dynamic -// -//internal suspend fun decompress(array: ByteArray) : ByteArray { -// -// val ds = DecompressionStream("deflate-raw") -// -// val reader = Blob(array.toTypedArray()) -// .asDynamic() -// .stream() -// .pipeThrough(ds) -// .getReader() -// .read() as Promise<*> -// -// return suspendCoroutine { cont -> -// reader.then { -// val value = it.asDynamic().value as ArrayBufferView -// cont.resume(Uint8Array(value.buffer).unsafeCast()) -// }.catch { -// cont.resumeWithException(it) -// } -// } -//} -// -//external class DecompressionStream(alg : String) -// -//internal actual class ZipFileSystem actual constructor( -// private val encoded : ByteArray, -// private val parent : FileSystem, -// path : Path -// -//) { -// actual suspend fun read(path: Path): ByteArray { -// TODO("DotLottie is not available for JS yet") -// } -//} \ No newline at end of file +package io.github.alexzhirkevich.compottie + +import org.khronos.webgl.Uint8Array + +internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : ByteArray { + + val ds = DecompressionStream("deflate-raw") + + val source = object : UnderlyingSource { + override fun start(controller: SourceController) { + controller.enqueue(array); + controller.close(); + } + } + + val stream = ReadableStream(source) + + val reader = stream + .pipeThrough(ds) + .getReader() + + val inflatedResult = ArrayList(inflatedSize) + + while (true) { + val result = reader.read().await() + if (result.done) { + break + } + + inflatedResult.addAll( + Uint8Array(result.value.buffer).unsafeCast>() + ) + } + + return inflatedResult.toByteArray() +} + diff --git a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt index 1e8135e2..fcda118d 100644 --- a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt +++ b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt @@ -5,8 +5,8 @@ import okio.Path import okio.openZip internal actual class ZipFileSystem actual constructor( - encoded : ByteArray, parent : FileSystem, + entries: Map, path : Path ) { diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt new file mode 100644 index 00000000..d53b40de --- /dev/null +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt @@ -0,0 +1,61 @@ +package io.github.alexzhirkevich.compottie + +import org.khronos.webgl.ArrayBufferView +import org.khronos.webgl.Int8Array +import org.khronos.webgl.set +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.coroutines.suspendCoroutine +import kotlin.js.Promise + +external class DecompressionStream(alg : String) + +//external interface UnderlyingSource : JsAny { +// fun start(controller: SourceController) +//} +// +//interface SourceController { +// fun enqueue(data : ByteArray) +// +// fun close() +//} + +fun createSource(data : Int8Array) : JsAny = js(""" +({ + start(c){ + console.log(data) + c.enqueue(data) + c.close() + } +}) +""") + + + +external class ReadableStream( + source: JsAny +) { + fun pipeThrough(decompressionStream: DecompressionStream) : ReadableStream + + fun getReader() : StreamReader +} + +external interface StreamReader { + fun read() : Promise +} + +external interface StreamReadResult : JsAny { + val done : Boolean + + val value : ArrayBufferView +} + +internal suspend fun Promise.await() = suspendCoroutine { cont -> + then { + cont.resume(it) + null + }.catch { + cont.resumeWithException(Exception(it.toString())) + null + } +} \ No newline at end of file diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt new file mode 100644 index 00000000..e19d759f --- /dev/null +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt @@ -0,0 +1,59 @@ +package io.github.alexzhirkevich.compottie + + +import org.khronos.webgl.Int8Array +import org.khronos.webgl.get +import org.khronos.webgl.set +import kotlin.time.measureTime + +internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : ByteArray { + + val ds = DecompressionStream("deflate-raw") + + val stream = ReadableStream(createSource(copyToInt8Array(array))) + + val reader = stream + .pipeThrough(ds) + .getReader() + + val inflatedResult = ArrayList(inflatedSize) + + + while (true) { + val result = reader.read().await() + if (result.done) { + break + } + + inflatedResult.addAll( + copyToByteArray(Int8Array(result.value.buffer)) + ) + } + + return inflatedResult.toByteArray() +} + +internal fun copyToByteArray(array: Int8Array): List { + var res : List + measureTime { + res = List(array.byteLength) { + array[it] + } + }.also { + println("Copy to js array. Size: ${array.byteLength}. Time: $it") + } + + return res +} + +private fun copyToInt8Array(array: ByteArray): Int8Array { + val result = Int8Array(array.size) + measureTime { + for (i in array.indices) { + result[i] = array[i] + } + }.also { + println("Copy from js array. Size: ${array.size}. Time:$it") + } + return result +} \ No newline at end of file diff --git a/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.web.kt b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.web.kt new file mode 100644 index 00000000..0ebf10f3 --- /dev/null +++ b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.web.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie + +//external class DecompressionStream(alg : String) +// +//external interface UnderlyingSource + diff --git a/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt index 3f1b707d..deb98fa7 100644 --- a/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt +++ b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt @@ -2,15 +2,33 @@ package io.github.alexzhirkevich.compottie import okio.FileSystem import okio.Path +import okio.Path.Companion.toPath +import okio.buffer +import okio.use + +internal expect suspend fun decompress(array: ByteArray, inflatedSize : Int) : ByteArray internal actual class ZipFileSystem actual constructor( - private val encoded : ByteArray, private val parent : FileSystem, - path : Path - + private val entries: Map, + private val path : Path ) { + actual suspend fun read(path: Path) : ByteArray { + val entry = entries[root.resolve(path, true)] ?: error("Invalid entry") + + val source = parent.openReadOnly(this.path).use { fileHandle -> + fileHandle.source(entry.offset).buffer() + } + source.skipLocalHeader() + + val bytes = source.readByteArray(entry.compressedSize) - actual suspend fun read(path: Path): ByteArray { - TODO("DotLottie is not available for web yet") + if (entry.compressionMethod == COMPRESSION_METHOD_STORED) + return bytes + + return decompress(bytes, entry.compressedSize.toInt()) } -} \ No newline at end of file + + private val root = "/".toPath() +} + diff --git a/example/webApp/src/jsMain/resources/index.html b/example/webApp/src/jsMain/resources/index.html index 36cdb2fd..cd189dab 100644 --- a/example/webApp/src/jsMain/resources/index.html +++ b/example/webApp/src/jsMain/resources/index.html @@ -1,7 +1,7 @@ - QRose example + Compottie example diff --git a/example/webApp/src/wasmJsMain/resources/index.html b/example/webApp/src/wasmJsMain/resources/index.html index 36cdb2fd..cd189dab 100644 --- a/example/webApp/src/wasmJsMain/resources/index.html +++ b/example/webApp/src/wasmJsMain/resources/index.html @@ -1,7 +1,7 @@ - QRose example + Compottie example From 5d7139de89b68bcdfdb90f70a50c934e93dda9e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 10 Jun 2024 22:30:31 +0300 Subject: [PATCH 036/100] small refactoring --- compottie-dot/build.gradle.kts | 2 +- .../compottie/DotLottieCompositionSpec.kt | 13 ++ .../compottie/DotLottie.jvmNative.kt | 9 +- .../compottie/Conversion.wasmJs.kt | 94 +++++++++++++++ .../compottie/DecompressionStream.wasmJs.kt | 23 ---- .../compottie/ZipFileSystem.wasmJs.kt | 40 ++---- compottie-network/build.gradle.kts | 18 +-- .../compottie/DefaultHttpClient.kt | 1 + .../compottie/DiskCacheStrategy.kt | 8 ++ .../compottie/NetworkAssetsManager.kt | 44 ++++--- ...mpositionSpec.kt => UrlCompositionSpec.kt} | 13 +- compottie/build.gradle.kts | 17 ++- .../compottie/ExperimentalCompottieApi.kt | 5 + .../alexzhirkevich/compottie/IODispatcher.kt | 6 + .../compottie/LottieAnimationFormat.kt | 2 +- .../compottie/LottieComposition.kt | 47 +++++--- .../compottie/LottieCompositionSpec.kt | 7 +- .../alexzhirkevich/compottie/LottiePainter.kt | 19 +-- .../compottie/assets/LottieAssetManager.kt | 10 +- .../compottie/internal/layers/BaseLayer.kt | 114 +++++++++--------- .../compottie/IoDispatcher.jvmNative.kt | 8 ++ .../compottie/IoDispatcher.web.kt | 7 ++ example/shared/build.gradle.kts | 18 +-- example/shared/src/commonMain/kotlin/App.kt | 105 +++++++++------- example/webApp/build.gradle.kts | 12 ++ gradle/libs.versions.toml | 2 + kotlin-js-store/yarn.lock | 42 +++++++ 27 files changed, 443 insertions(+), 243 deletions(-) create mode 100644 compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt rename compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/{NetworkCompositionSpec.kt => UrlCompositionSpec.kt} (91%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt create mode 100644 compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt create mode 100644 compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts index 8215891d..ab8c63fe 100644 --- a/compottie-dot/build.gradle.kts +++ b/compottie-dot/build.gradle.kts @@ -75,8 +75,8 @@ kotlin { implementation(libs.serialization) implementation(libs.okio) implementation(libs.okio.fakefilesystem) + implementation(libs.coroutines.core) implementation(project(":compottie")) - } val desktopMain by getting diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 64d20a01..77d1bf83 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -7,6 +7,19 @@ import kotlinx.serialization.json.Json import okio.Path.Companion.toPath import okio.fakefilesystem.FakeFileSystem + + +private var _useStableWasmMemoryManagement : Boolean = false + +/** + * Stable memory management will be much slower but more compatible with Kotlin compiler + * versions. + * + * It is disabled by default. Turn this on if you have problems with dotLottie decompression on wasm + * */ +@ExperimentalCompottieApi +var L.useStableWasmMemoryManagement by ::_useStableWasmMemoryManagement + /** * [LottieComposition] from a dotLottie zip archive. * diff --git a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt index fcda118d..c834eb9e 100644 --- a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt +++ b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt @@ -1,5 +1,8 @@ package io.github.alexzhirkevich.compottie +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO +import kotlinx.coroutines.withContext import okio.FileSystem import okio.Path import okio.openZip @@ -13,8 +16,10 @@ internal actual class ZipFileSystem actual constructor( private val zipFileSystem = parent.openZip(path) actual suspend fun read(path: Path): ByteArray { - return zipFileSystem.read(path) { - readByteArray() + return withContext(Dispatchers.IO) { + zipFileSystem.read(path) { + readByteArray() + } } } } diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt new file mode 100644 index 00000000..c2baf1e8 --- /dev/null +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt @@ -0,0 +1,94 @@ +package io.github.alexzhirkevich.compottie + +import org.khronos.webgl.Int8Array +import org.khronos.webgl.get +import org.khronos.webgl.set +import kotlin.wasm.unsafe.UnsafeWasmMemoryApi +import kotlin.wasm.unsafe.withScopedMemoryAllocator + +internal fun createSourceStable(data : Int8Array) : JsAny = js(""" +({ + start(c){ + console.log(data) + c.enqueue(data) + c.close() + } +}) +""") + +internal fun createSourceUnstable(data : JsReference) : JsAny = js(""" +({ + start(c){ + const size = wasmExports.kotlinArraySize(data); + const result = new Int8Array(size); + for (let i = 0; i < size; i++) { + result[i] = wasmExports.kotlinArrayGet(data, i); + } + c.enqueue(result) + c.close() + } +}) +""") + +@OptIn(ExperimentalCompottieApi::class) +internal fun Int8Array.toByteArray(): Array { + if (L.useStableWasmMemoryManagement) { + return Array(byteLength) { + this[it] + } + } + return jsInt8ArrayToKotlinByteArray(this) +} + +@OptIn(ExperimentalCompottieApi::class) +internal fun ByteArray.toInt8Array() : Int8Array { + if (L.useStableWasmMemoryManagement) { + val result = Int8Array(size) + for (i in indices) { + result[i] = this[i] + } + return result + } + return byteArrayToInt8ArrayImpl(toJsReference()) +} + +@OptIn(ExperimentalJsExport::class) +@JsExport +private fun kotlinArrayGet(a: JsReference, i: Int): Byte = a.get()[i] + +@OptIn(ExperimentalJsExport::class) +@JsExport +private fun kotlinArraySize(a: JsReference): Int = a.get().size + + +private fun byteArrayToInt8ArrayImpl(a: JsReference): Int8Array = js("""{ + const size = wasmExports.kotlinArraySize(a); + const result = new Int8Array(size); + for (let i = 0; i < size; i++) { + result[i] = wasmExports.kotlinArrayGet(a, i); + } + return result; +}""") + + + +@JsFun( + """ (src, size, dstAddr) => { + const mem8 = new Int8Array(wasmExports.memory.buffer, dstAddr, size); + mem8.set(src); + } +""" +) +private external fun jsExportInt8ArrayToWasm(src: Int8Array, size: Int, dstAddr: Int) + +private fun jsInt8ArrayToKotlinByteArray(x: Int8Array): Array { + val size = x.length + + @OptIn(UnsafeWasmMemoryApi::class) + return withScopedMemoryAllocator { allocator -> + val memBuffer = allocator.allocate(size) + val dstAddress = memBuffer.address.toInt() + jsExportInt8ArrayToWasm(x, size, dstAddress) + Array(size) { i -> (memBuffer + i).loadByte() } + } +} diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt index d53b40de..9fb25032 100644 --- a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/DecompressionStream.wasmJs.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie import org.khronos.webgl.ArrayBufferView import org.khronos.webgl.Int8Array -import org.khronos.webgl.set import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException import kotlin.coroutines.suspendCoroutine @@ -10,28 +9,6 @@ import kotlin.js.Promise external class DecompressionStream(alg : String) -//external interface UnderlyingSource : JsAny { -// fun start(controller: SourceController) -//} -// -//interface SourceController { -// fun enqueue(data : ByteArray) -// -// fun close() -//} - -fun createSource(data : Int8Array) : JsAny = js(""" -({ - start(c){ - console.log(data) - c.enqueue(data) - c.close() - } -}) -""") - - - external class ReadableStream( source: JsAny ) { diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt index e19d759f..58e5ad64 100644 --- a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt @@ -2,15 +2,18 @@ package io.github.alexzhirkevich.compottie import org.khronos.webgl.Int8Array -import org.khronos.webgl.get -import org.khronos.webgl.set -import kotlin.time.measureTime +@OptIn(ExperimentalCompottieApi::class) internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : ByteArray { val ds = DecompressionStream("deflate-raw") - val stream = ReadableStream(createSource(copyToInt8Array(array))) + val source = if (L.useStableWasmMemoryManagement) { + createSourceStable(array.toInt8Array()) + } else { + createSourceUnstable(array.toJsReference()) + } + val stream = ReadableStream(source) val reader = stream .pipeThrough(ds) @@ -18,42 +21,15 @@ internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : B val inflatedResult = ArrayList(inflatedSize) - while (true) { val result = reader.read().await() if (result.done) { break } - inflatedResult.addAll( - copyToByteArray(Int8Array(result.value.buffer)) - ) + inflatedResult += Int8Array(result.value.buffer).toByteArray() } return inflatedResult.toByteArray() } -internal fun copyToByteArray(array: Int8Array): List { - var res : List - measureTime { - res = List(array.byteLength) { - array[it] - } - }.also { - println("Copy to js array. Size: ${array.byteLength}. Time: $it") - } - - return res -} - -private fun copyToInt8Array(array: ByteArray): Int8Array { - val result = Int8Array(array.size) - measureTime { - for (i in array.indices) { - result[i] = array[i] - } - }.also { - println("Copy from js array. Size: ${array.size}. Time:$it") - } - return result -} \ No newline at end of file diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index 9dd180e6..ec6e333f 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -166,12 +166,14 @@ if (System.getenv("GPG_KEY") != null) { } -configurations.all { - resolutionStrategy.eachDependency { - if (requested.group.startsWith("io.ktor") && - requested.name.startsWith("ktor-client-") - ) { - useVersion("3.0.0-wasm2") +configurations + .filter { it.name.contains("wasmJs") } + .onEach { + it.resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } } - } -} \ No newline at end of file + } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt index ef481645..2744ec41 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.runtime.Stable import io.ktor.client.HttpClient import io.ktor.client.request.get import io.ktor.client.statement.HttpResponse diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt index 56991fda..2d9c3a33 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -28,6 +28,14 @@ class DiskCacheStrategy : LottieCacheStrategy { override suspend fun load(url: String): ByteArray? { return null } + + override fun equals(other: Any?): Boolean { + return true + } + + override fun hashCode(): Int { + return 1 + } } //internal expect fun FileSystem.Companion.System : FileSystem \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index 7aed1d12..97a3e33f 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState @@ -12,25 +13,36 @@ import io.ktor.http.URLParserException import io.ktor.http.Url import io.ktor.util.toByteArray -@Composable -fun rememberNetworkAssetsManager( +//@Composable +//@Stable +//fun rememberNetworkAssetsManager( +// client: HttpClient = DefaultHttpClient, +// cacheStrategy: LottieCacheStrategy = rememberDiskCacheStrategy(), +// request : NetworkRequest = GetRequest, +//) : NetworkAssetsManager { +// val updatedRequest by rememberUpdatedState(request) +// +// return remember(client, cacheStrategy) { +// NetworkAssetsManager(client, cacheStrategy) { c, u -> +// updatedRequest.invoke(c, u) +// } +// } +//} + +fun NetworkAssetsManager( client: HttpClient = DefaultHttpClient, - cacheStrategy: LottieCacheStrategy = rememberDiskCacheStrategy(), + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), request : NetworkRequest = GetRequest, -) { - val updatedRequest by rememberUpdatedState(request) - - return remember(client, cacheStrategy) { - NetworkAssetsManager(client, cacheStrategy) { c, u -> - updatedRequest.invoke(c, u) - } - } -} +) : LottieAssetsManager = NetworkAssetsManagerImpl( + client = client, + cacheStrategy = cacheStrategy, + request = request +) -class NetworkAssetsManager( - private val client: HttpClient, - private val cacheStrategy: LottieCacheStrategy, - private val request : NetworkRequest, +private class NetworkAssetsManagerImpl( + private val client: HttpClient = DefaultHttpClient, + private val cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + private val request : NetworkRequest = GetRequest, ) : LottieAssetsManager { override suspend fun fetch(asset: LottieAsset): ByteArray? { diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt similarity index 91% rename from compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkCompositionSpec.kt rename to compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 42e88c4a..06ab55df 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -11,7 +11,6 @@ import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.NetworkAssetsManager import io.github.alexzhirkevich.compottie.NetworkRequest import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.rememberNetworkAssetsManager import io.ktor.client.HttpClient import io.ktor.client.plugins.ClientRequestException import io.ktor.client.statement.bodyAsChannel @@ -25,19 +24,17 @@ import io.ktor.util.toByteArray * [LottieComposition] from web [url] * * @param client Ktor http client to use - * @param assetsManager lottie assets manager. By default no-op manager is used. - * Use [NetworkAssetsManager] if assets use web URLs too - * - * @see rememberNetworkAssetsManager + * @param assetsManager manager for assets that not embedded to the animation JSON or dotLottie archive. + * [NetworkAssetsManager] is used by default * */ @Stable fun LottieCompositionSpec.Companion.Url( url : String, - format: LottieAnimationFormat = LottieAnimationFormat.Unknown, + format: LottieAnimationFormat = LottieAnimationFormat.Undefined, client: HttpClient = DefaultHttpClient, - assetsManager: LottieAssetsManager = LottieAssetsManager, - cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), request : NetworkRequest = GetRequest, + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + assetsManager: LottieAssetsManager = NetworkAssetsManager(client,cacheStrategy, request), ) : LottieCompositionSpec = NetworkCompositionSpec( url = url, format = format, diff --git a/compottie/build.gradle.kts b/compottie/build.gradle.kts index 2b5d9848..89b11764 100644 --- a/compottie/build.gradle.kts +++ b/compottie/build.gradle.kts @@ -1,5 +1,6 @@ @file:Suppress("DSL_SCOPE_VIOLATION") +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import java.util.Base64 plugins { @@ -20,7 +21,21 @@ val _jvmTarget = findProperty("jvmTarget") as String kotlin { - applyDefaultHierarchyTemplate() + applyDefaultHierarchyTemplate{ + @OptIn(ExperimentalKotlinGradlePluginApi::class) + common { + group("jvmNative") { + withAndroidTarget() + withJvm() + withIos() + withMacos() + } + group("web"){ + withJs() + withWasmJs() + } + } + } androidTarget{ publishLibraryVariants("release") diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt new file mode 100644 index 00000000..2046d3e8 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie + +@RequiresOptIn("This is experimental/temporary/unstable api", RequiresOptIn.Level.WARNING) +@Retention(value = AnnotationRetention.BINARY) +annotation class ExperimentalCompottieApi() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt new file mode 100644 index 00000000..a8614e94 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers + +internal expect val Dispatchers.IODispatcher : CoroutineDispatcher \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt index 72269ef1..48337dc8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimationFormat.kt @@ -1,5 +1,5 @@ package io.github.alexzhirkevich.compottie enum class LottieAnimationFormat { - Json, DotLottie, Unknown + Json, DotLottie, Undefined } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index a38b99d6..dff91d9b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -8,6 +8,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.text.font.FontFamily @@ -92,13 +93,14 @@ class LottieComposition internal constructor( } /** - * Load and prepare [LottieComposition] for displaying + * Load and prepare [LottieComposition]. + * + * [spec] should be remembered * */ @Composable @Stable fun rememberLottieComposition( spec : LottieCompositionSpec, - assetsManager: LottieAssetsManager = LottieAssetsManager, ) : LottieCompositionResult { val result = remember(spec) { @@ -106,9 +108,9 @@ fun rememberLottieComposition( } LaunchedEffect(result) { - withContext(Dispatchers.Default) { + withContext(Dispatchers.IODispatcher) { try { - result.complete(spec.load().apply { prepare(assetsManager) }) + result.complete(spec.load()) } catch (c: CancellationException) { throw c } catch (t: Throwable) { @@ -120,20 +122,35 @@ fun rememberLottieComposition( return result } +/** + * Load and prepare [LottieComposition] for displaying. + * + * Instance produces by [spec] will be remembered until [keys] are changed + * */ +@Composable +@Stable +fun rememberLottieComposition( + vararg keys : Any?, + spec : suspend () -> LottieCompositionSpec, +) : LottieCompositionResult { + val updatedSpec by rememberUpdatedState(spec) - -@Immutable -@JvmInline -internal value class JsonStringCompositionSpec( - private val jsonString: String -) : LottieCompositionSpec { - - override suspend fun load(): LottieComposition { - return LottieComposition.parse(jsonString) + val result = remember(*keys) { + LottieCompositionResultImpl() } - override fun toString(): String { - return "JsonString(jsonString='$jsonString')" + LaunchedEffect(result) { + withContext(Dispatchers.IODispatcher) { + try { + result.complete(updatedSpec().load()) + } catch (c: CancellationException) { + throw c + } catch (t: Throwable) { + result.completeExceptionally(t) + } + } } + + return result } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 8e63ba93..cf39c2ae 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -32,7 +32,6 @@ interface LottieCompositionSpec { * * Lambda should be stable. Otherwise this spec must be remembered if created in composition * */ - @OptIn(InternalCompottieApi::class) @Stable fun JsonString( assetsManager: LottieAssetsManager = LottieAssetsManager, @@ -64,7 +63,9 @@ private class LazyJsonString( ) : LottieCompositionSpec { override suspend fun load(): LottieComposition { - return LottieComposition.parse(jsonString()) + return LottieComposition.parse(jsonString()).apply { + prepare(assetsManager) + } } override fun toString(): String { @@ -81,8 +82,6 @@ private class LazyJsonString( override fun hashCode(): Int { return 31 * jsonString.hashCode() + assetsManager.hashCode() } - - } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index f63a22b1..5bbe4c30 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -134,7 +134,7 @@ private class LottiePainter( p.coerceAtLeast(0f) } - val compositionLayer: BaseCompositionLayer = composition.lottieData + val compositionLayer: BaseCompositionLayer = composition.lottieData .layers .takeIf { it.size == 1 // don't create extra composition layer @@ -186,20 +186,9 @@ private class LottiePainter( matrix.reset() - measureTime { - scale(scale.scaleX, scale.scaleY) { - translate(offset.x.toFloat(), offset.y.toFloat()) { - try { - compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) - } catch (t: Throwable) { - println("Lottie crashed in draw :(") - t.printStackTrace() - } - } - } - }.let { - if (it.inWholeMilliseconds > 0) { -// println(it.inWholeMilliseconds) + scale(scale.scaleX, scale.scaleY) { + translate(offset.x.toFloat(), offset.y.toFloat()) { + compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt index c8cc2563..0d075d38 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt @@ -26,17 +26,9 @@ fun interface LottieAssetsManager { * */ suspend fun fetch(asset: LottieAsset): ByteArray? + @Stable companion object : LottieAssetsManager { override suspend fun fetch(asset: LottieAsset): ByteArray? = null } } - - -@Composable -fun rememberLottieAssetsManager( - fetch : suspend (LottieAsset) -> ByteArray? -) : LottieAssetsManager { - return remember { LottieAssetsManager(fetch) } -} - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index be7c3c22..442d7fca 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.graphics.isIdentity import androidx.compose.ui.util.fastFirstOrNull import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.L import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent @@ -109,79 +110,81 @@ internal abstract class BaseLayer() : Layer, DrawingContent { state: AnimationState, ) { - val frame = state.frame - - if (hidden || (inPoint ?: 0f) > frame || (outPoint ?: Float.MAX_VALUE) < frame) - return + try { - buildParentLayerListIfNeeded() - matrix.reset() + val frame = state.frame - matrix.setFrom(parentMatrix) - parentLayers?.fastForEachReversed { - matrix.preConcat(it.transform.matrix(state)) - } + if (hidden || (inPoint ?: 0f) > frame || (outPoint ?: Float.MAX_VALUE) < frame) + return - var alpha = parentAlpha + buildParentLayerListIfNeeded() + matrix.reset() - transform.opacity?.interpolated(state)?.let { - alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) - } + matrix.setFrom(parentMatrix) + parentLayers?.fastForEachReversed { + matrix.preConcat(it.transform.matrix(state)) + } + var alpha = parentAlpha - if (matteLayer == null && !hasMask()) { - matrix.preConcat(transform.matrix(state)) - drawLayer(drawScope, matrix, alpha, state) - return - } + transform.opacity?.interpolated(state)?.let { + alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) + } - getBounds(drawScope, matrix, false, state, rect) - intersectBoundsWithMatte(drawScope, rect, matrix, state) + if (matteLayer == null && !hasMask()) { + matrix.preConcat(transform.matrix(state)) + drawLayer(drawScope, matrix, alpha, state) + return + } - matrix.preConcat(transform.matrix(state)) - intersectBoundsWithMask(rect, matrix, state) + getBounds(drawScope, matrix, false, state, rect) - // Intersect the mask and matte rect with the canvas bounds. - // If the canvas has a transform, then we need to transform its bounds by its matrix - // so that we know the coordinate space that the canvas is showing. - canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) - drawScope.drawIntoCanvas { canvas -> - canvas.getMatrix(canvasMatrix) + intersectBoundsWithMatte(drawScope, rect, matrix, state) - //TODO: fix mask canvas mapping - if (!canvasMatrix.isIdentity()) { - canvasMatrix.invert() - canvasMatrix.map(canvasBounds) - } + matrix.preConcat(transform.matrix(state)) + intersectBoundsWithMask(rect, matrix, state) + + // Intersect the mask and matte rect with the canvas bounds. + // If the canvas has a transform, then we need to transform its bounds by its matrix + // so that we know the coordinate space that the canvas is showing. + canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) + drawScope.drawIntoCanvas { canvas -> + canvas.getMatrix(canvasMatrix) + + //TODO: fix mask canvas mapping + if (!canvasMatrix.isIdentity()) { + canvasMatrix.invert() + canvasMatrix.map(canvasBounds) + } - rect.intersectOrReset(canvasBounds) + rect.intersectOrReset(canvasBounds) - // Ensure that what we are drawing is >=1px of width and height. - // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. - // https://github.com/airbnb/lottie-android/issues/1625 - if (rect.width >= 1f && rect.height >= 1f) { - contentPaint.alpha = 1f - canvas.saveLayer(rect, contentPaint) + // Ensure that what we are drawing is >=1px of width and height. + // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. + // https://github.com/airbnb/lottie-android/issues/1625 + if (rect.width >= 1f && rect.height >= 1f) { + contentPaint.alpha = 1f + canvas.saveLayer(rect, contentPaint) - // Clear the off screen buffer. This is necessary for some phones. - clearCanvas(canvas) - drawLayer(drawScope, matrix, alpha, state) + // Clear the off screen buffer. This is necessary for some phones. + clearCanvas(canvas) + drawLayer(drawScope, matrix, alpha, state) - if (hasMask()) { - applyMasks(canvas, matrix, state) - } + if (hasMask()) { + applyMasks(canvas, matrix, state) + } + + matteLayer?.let { + canvas.saveLayer(rect, mattePaint, SAVE_FLAGS) + clearCanvas(canvas) + it.draw(drawScope, parentMatrix, alpha, state) + canvas.restore() + } - matteLayer?.let { - canvas.saveLayer(rect, mattePaint, SAVE_FLAGS) - clearCanvas(canvas) - it.draw(drawScope, parentMatrix, alpha, state) canvas.restore() } - canvas.restore() - } - // if (outlineMasksAndMattes && outlineMasksAndMattesPaint != null) { // outlineMasksAndMattesPaint.setStyle(android.graphics.Paint.Style.STROKE) // outlineMasksAndMattesPaint.setColor(-0x3d7fd) @@ -191,6 +194,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { // outlineMasksAndMattesPaint.setColor(0x50EBEBEB) // canvas.drawRect(rect, outlineMasksAndMattesPaint) // } + } + } catch (t: Throwable) { + L.logger.error("Lottie crashed in draw :(", t) } } diff --git a/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt b/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt new file mode 100644 index 00000000..556ff4c8 --- /dev/null +++ b/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO + +internal actual val Dispatchers.IODispatcher : CoroutineDispatcher + get() = Dispatchers.IO \ No newline at end of file diff --git a/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt b/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt new file mode 100644 index 00000000..9933539a --- /dev/null +++ b/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt @@ -0,0 +1,7 @@ +package io.github.alexzhirkevich.compottie + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers + +internal actual val Dispatchers.IODispatcher : CoroutineDispatcher + get() = Dispatchers.Default \ No newline at end of file diff --git a/example/shared/build.gradle.kts b/example/shared/build.gradle.kts index 15bdca68..d8ce4025 100644 --- a/example/shared/build.gradle.kts +++ b/example/shared/build.gradle.kts @@ -96,12 +96,14 @@ android { } } -configurations.all { - resolutionStrategy.eachDependency { - if (requested.group.startsWith("io.ktor") && - requested.name.startsWith("ktor-client-") - ) { - useVersion("3.0.0-wasm2") +configurations + .filter { it.name.contains("wasmJs") } + .onEach { + it.resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } } - } -} \ No newline at end of file + } \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 1e55204c..5ffa1d19 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,17 +1,16 @@ import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.graphics.vector.group -import androidx.compose.ui.graphics.vector.path -import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res @@ -19,7 +18,7 @@ import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants -import io.github.alexzhirkevich.compottie.assets.rememberLottieAssetsManager +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi @@ -51,34 +50,48 @@ private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" private val DOT = "dotlottie/dot.lottie" private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" + @OptIn(ExperimentalResourceApi::class) @Composable fun App() { - val composition = rememberLottieComposition( -// spec = LottieCompositionSpec.DotLottie { -// Res.readBytes("files/$DOT_WITH_IMAGE") -// }, - spec = LottieCompositionSpec.Resource(ROBOT), -// spec = LottieCompositionSpec.Url("https://assets-v2.lottiefiles.com/a/e3b38514-1150-11ee-9dde-3789514b5871/ZNdbOpdPyr.lottie"), - assetsManager = rememberResourcesAssetsManager() - ) + + val composition = rememberLottieComposition { + + LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { + Res.readBytes("files/$DOT") + } +// LottieCompositionSpec.Resource(ROBOT) + +// LottieCompositionSpec.Resource(IMAGE_ASSET) + +// LottieCompositionSpec.Url( +// url = "https://assets-v2.lottiefiles.com/a/e3b38514-1150-11ee-9dde-3789514b5871/ZNdbOpdPyr.lottie", +// assetsManager = NetworkAssetsManager() +// ) + } LaunchedEffect(composition) { composition.await() } - Image( - modifier = Modifier - .fillMaxSize() - .opacityGrid(), - painter = rememberLottiePainter( - composition = composition.value, - iterations = LottieConstants.IterateForever - ), - contentDescription = null - ) + Box(contentAlignment = Alignment.Center) { + Image( + modifier = Modifier + .fillMaxSize() + .opacityGrid(), + painter = rememberLottiePainter( + composition = composition.value, + iterations = LottieConstants.IterateForever + ), + contentDescription = null + ) + + if (composition.value == null) { + CircularProgressIndicator() + } + } } /** @@ -89,8 +102,9 @@ fun App() { fun LottieCompositionSpec.Companion.Resource( path : String, dir : String = "files", + assetsManager: LottieAssetsManager = ResourcesAssetsManager(), readBytes: suspend (path: String) -> ByteArray = Res::readBytes -) : LottieCompositionSpec = JsonString { readBytes("$dir/$path").decodeToString() } +) : LottieCompositionSpec = JsonString(assetsManager) { readBytes("$dir/$path").decodeToString() } /** * Compose resources asset manager. @@ -104,31 +118,30 @@ fun LottieCompositionSpec.Companion.Resource( * - path="", name="images/image.png" * */ @OptIn(ExperimentalResourceApi::class) -@Composable -private fun rememberResourcesAssetsManager( +private fun ResourcesAssetsManager( relativeTo : String = "files", readBytes : suspend (path : String) -> ByteArray = Res::readBytes, -) = - rememberLottieAssetsManager { asset -> - try { - val trimPath = asset.path - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) - - val trimName = asset.name - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) - - val fullPath = listOfNotNull(relativeTo.takeIf(String::isNotEmpty), trimPath, trimName) - .joinToString("/") - - readBytes(fullPath) - } catch (x: MissingResourceException) { - null - } +) = LottieAssetsManager { asset -> + try { + val trimPath = asset.path + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val trimName = asset.name + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val fullPath = listOfNotNull(relativeTo.takeIf(String::isNotEmpty), trimPath, trimName) + .joinToString("/") + + readBytes(fullPath) + } catch (x: MissingResourceException) { + null } +} + private val DarkOpacity = Color(0xff7f7f7f) private val LightOpacity = Color(0xffb2b2b2) diff --git a/example/webApp/build.gradle.kts b/example/webApp/build.gradle.kts index 50f6f50e..4efa0779 100644 --- a/example/webApp/build.gradle.kts +++ b/example/webApp/build.gradle.kts @@ -24,3 +24,15 @@ kotlin { } } +configurations + .filter { it.name.contains("wasmJs") } + .onEach { + it.resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } + } + } + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 29ac2ff7..bbfc2352 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,6 +9,7 @@ okio = "3.9.0" serialization="1.6.2" ktor="2.3.11" atomicfu="0.23.1" +coroutines="1.8.0" [libraries] lottie-android = { module ="com.airbnb.android:lottie-compose", version.ref = "lottie-android" } @@ -20,6 +21,7 @@ ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" } ktor-client-ios = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" } ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } gp-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu-gradle-plugin", version.ref = "atomicfu" } +coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } [plugins] compose = { id = "org.jetbrains.compose", version.ref = "compose" } diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index 5ca1dbde..d2598c6d 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -436,6 +436,13 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +abort-controller@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -1112,6 +1119,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -2010,6 +2022,13 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -2770,6 +2789,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + tree-dump@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.0.1.tgz#b448758da7495580e6b7830d6b7834fca4c45b96" @@ -2868,6 +2892,11 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webpack-cli@5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" @@ -3000,6 +3029,14 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3047,6 +3084,11 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + ws@^8.16.0: version "8.17.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" From 3cc5107c7aed006fd31bbb7810ba26618547bafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 11 Jun 2024 05:00:22 +0300 Subject: [PATCH 037/100] font asset, fix rect union, jung cubic easing --- compottie-dot/build.gradle.kts | 2 +- .../compottie/DotLottieAssetsManager.kt | 23 ++-- .../compottie/DotLottieCompositionSpec.kt | 5 +- compottie-network/build.gradle.kts | 2 +- .../compottie/NetworkAssetsManager.kt | 59 +++++----- .../compottie/UrlCompositionSpec.kt | 2 +- .../platform/PlatformImage.android.kt | 1 + .../compottie/LottieComposition.kt | 86 +++++++++++--- .../compottie/LottieCompositionSpec.kt | 2 +- .../alexzhirkevich/compottie/LottiePainter.kt | 15 +-- .../compottie/assets/ImageRepresentable.kt | 55 +++++++++ .../compottie/assets/LottieAssetManager.kt | 55 +++++++-- .../compottie/assets/LottieFont.kt | 13 +++ .../assets/{LottieAsset.kt => LottieImage.kt} | 9 +- .../compottie/internal/LottieData.kt | 3 + .../compottie/internal/animation/Keyframe.kt | 107 +++++++++++++----- .../internal/animation/ValueKeyframe.kt | 1 - .../compottie/internal/assets/ImageAsset.kt | 8 +- .../internal/assets/LottieFontAsset.kt | 45 ++++++++ .../compottie/internal/helpers/MatteMode.kt | 9 +- .../internal/layers/BaseCompositionLayer.kt | 3 + .../compottie/internal/layers/BaseLayer.kt | 12 +- .../compottie/internal/layers/ImageLayer.kt | 49 ++------ .../compottie/internal/layers/Layer.kt | 2 - .../internal/platform/PlatformShader.kt | 13 +-- .../compottie/internal/utils/Matrix.kt | 32 +++--- .../compottie/internal/utils/MutableRect.kt | 12 +- .../composeResources/files/test.json | 0 .../composeResources/files/wonders.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 68 ++++++----- 30 files changed, 459 insertions(+), 235 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/ImageRepresentable.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFont.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/{LottieAsset.kt => LottieImage.kt} (74%) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt delete mode 100644 example/shared/src/commonMain/composeResources/files/test.json create mode 100644 example/shared/src/commonMain/composeResources/files/wonders.json diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts index ab8c63fe..e565ed0e 100644 --- a/compottie-dot/build.gradle.kts +++ b/compottie-dot/build.gradle.kts @@ -71,7 +71,7 @@ kotlin { sourceSets { commonMain.dependencies { - implementation(compose.runtime) + implementation(compose.ui) implementation(libs.serialization) implementation(libs.okio) implementation(libs.okio.fakefilesystem) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index 15c86b38..f4438a0a 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -1,8 +1,11 @@ package io.github.alexzhirkevich.compottie -import io.github.alexzhirkevich.compottie.assets.LottieAsset +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import io.github.alexzhirkevich.compottie.assets.ImageRepresentable +import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import okio.FileNotFoundException +import io.github.alexzhirkevich.compottie.assets.LottieFont import okio.IOException import okio.Path.Companion.toPath @@ -10,29 +13,29 @@ internal class DotLottieAssetsManager( private val zipFileSystem: ZipFileSystem, ) : LottieAssetsManager { - override suspend fun fetch(asset: LottieAsset): ByteArray? { + override suspend fun image(image: LottieImage): ImageRepresentable? { - val trimPath = asset.path + val trimPath = image.path .removePrefix("/") .removeSuffix("/") .takeIf(String::isNotEmpty) - val trimName = asset.name + val trimName = image.name .removePrefix("/") .removeSuffix("/") .takeIf(String::isNotEmpty) load(null, trimPath, trimName)?.let { - return it + return ImageRepresentable.Bytes(it) } - val dir = when (asset.type) { - LottieAsset.AssetType.Image -> "/images" + return load("/images", trimPath, trimName)?.let { + ImageRepresentable.Bytes(it) } - - return load(dir, trimPath, trimName) } + override suspend fun font(font: LottieFont): Font? = null + private suspend fun load(root: String?, trimPath: String?, trimName: String?): ByteArray? { val fullPath = listOfNotNull(root, trimPath, trimName) .joinToString("/") diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 77d1bf83..a0fd888d 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -24,11 +24,12 @@ var L.useStableWasmMemoryManagement by ::_useStableWasmMemoryManagement * [LottieComposition] from a dotLottie zip archive. * * @param archive archive bytes supplier - * @param assetsManager required only if animation contains assets that are not included to the archive + * @param assetsManager required only if animation contains assets that are not included in the archive + * (like fonts, resource images, etc.) * */ @Stable fun LottieCompositionSpec.Companion.DotLottie( - assetsManager: LottieAssetsManager = LottieAssetsManager, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, archive: suspend () -> ByteArray, ) : LottieCompositionSpec = DotLottieCompositionSpec(archive, assetsManager) diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index ec6e333f..aa1fa85b 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -72,7 +72,7 @@ kotlin { sourceSets { commonMain.dependencies { - implementation(compose.runtime) + implementation(compose.ui) implementation(libs.serialization) implementation(libs.okio) api(libs.ktor.client.core) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index 97a3e33f..453ec35d 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -1,34 +1,25 @@ package io.github.alexzhirkevich.compottie -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberUpdatedState -import io.github.alexzhirkevich.compottie.assets.LottieAsset +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.platform.Font +import io.github.alexzhirkevich.compottie.assets.ImageRepresentable +import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.assets.LottieFont import io.ktor.client.HttpClient import io.ktor.client.statement.bodyAsChannel import io.ktor.http.URLParserException import io.ktor.http.Url import io.ktor.util.toByteArray -//@Composable -//@Stable -//fun rememberNetworkAssetsManager( -// client: HttpClient = DefaultHttpClient, -// cacheStrategy: LottieCacheStrategy = rememberDiskCacheStrategy(), -// request : NetworkRequest = GetRequest, -//) : NetworkAssetsManager { -// val updatedRequest by rememberUpdatedState(request) -// -// return remember(client, cacheStrategy) { -// NetworkAssetsManager(client, cacheStrategy) { c, u -> -// updatedRequest.invoke(c, u) -// } -// } -//} - +/** + * Asset manager that load images from web. + * + * It can't be used to download fonts. Combine it with other font-loading manager + * using [LottieAssetsManager.combine] if needed + * */ fun NetworkAssetsManager( client: HttpClient = DefaultHttpClient, cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), @@ -36,35 +27,37 @@ fun NetworkAssetsManager( ) : LottieAssetsManager = NetworkAssetsManagerImpl( client = client, cacheStrategy = cacheStrategy, - request = request + request = request, ) private class NetworkAssetsManagerImpl( - private val client: HttpClient = DefaultHttpClient, - private val cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), - private val request : NetworkRequest = GetRequest, + private val client: HttpClient, + private val cacheStrategy: LottieCacheStrategy, + private val request : NetworkRequest, ) : LottieAssetsManager { - override suspend fun fetch(asset: LottieAsset): ByteArray? { + override suspend fun image(image: LottieImage): ImageRepresentable? { return try { - val path = asset.path + asset.name + val path = image.path + image.name val url = try { Url(path) } catch (t: URLParserException) { - L.logger.error("Failed to load lottie asset ${asset.id} - incorrect url", t) + L.logger.error("Failed to load lottie asset ${image.id} - incorrect url", t) return null } cacheStrategy.load(path)?.let { - return it + return ImageRepresentable.Bytes(it) } - request(client, url).bodyAsChannel().toByteArray().also { - cacheStrategy.save(path, it) - } + val bytes = request(client, url).bodyAsChannel().toByteArray() + cacheStrategy.save(path, bytes) + ImageRepresentable.Bytes(bytes) } catch (t: Throwable) { null } } + + override suspend fun font(font: LottieFont): Font? = null } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 06ab55df..9740c8ff 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -34,7 +34,7 @@ fun LottieCompositionSpec.Companion.Url( client: HttpClient = DefaultHttpClient, request : NetworkRequest = GetRequest, cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), - assetsManager: LottieAssetsManager = NetworkAssetsManager(client,cacheStrategy, request), + assetsManager: LottieAssetsManager = NetworkAssetsManager(client, cacheStrategy, request), ) : LottieCompositionSpec = NetworkCompositionSpec( url = url, format = format, diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt index 8e7f965f..6d97bbf2 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.platform import android.graphics.BitmapFactory import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.text.font.Font internal actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { return BitmapFactory diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index dff91d9b..70c05ee2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable -import androidx.compose.runtime.Immutable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue @@ -12,26 +11,30 @@ import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.text.font.FontFamily -import io.github.alexzhirkevich.compottie.assets.LottieAsset +import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.assets.LottieFont import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.durationMillis import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext -import kotlin.jvm.JvmInline @Stable class LottieComposition internal constructor( internal val lottieData: LottieData, - internal val fonts : Map = emptyMap(), ) { val startFrame: Float get() = lottieData.inPoint @@ -42,10 +45,14 @@ class LottieComposition internal constructor( val frameRate: Float get() = lottieData.frameRate @InternalCompottieApi - var iterations : Int by mutableStateOf(1) + var iterations: Int by mutableStateOf(1) @InternalCompottieApi - var speed : Float by mutableFloatStateOf(1f) + var speed: Float by mutableFloatStateOf(1f) + + internal var fonts: Map = emptyMap() + + private val fontMutex = Mutex() /** * Preload assets for instant animation displaying. @@ -57,31 +64,74 @@ class LottieComposition internal constructor( assetsManager: LottieAssetsManager ) { coroutineScope { - lottieData.assets.map { asset -> - launch(Dispatchers.Default) { - when (asset) { - is ImageAsset -> { - if (asset.bitmap == null) { - assetsManager.fetch( - LottieAsset( + launch { + loadAssets(assetsManager) + } + launch { + loadFonts(assetsManager) + } + } + } + + private suspend fun loadAssets(assetsManager: LottieAssetsManager) { + coroutineScope { + lottieData.assets.mapNotNull { asset -> + when (asset) { + is ImageAsset -> { + if (asset.bitmap == null) { + launch(Dispatchers.Default) { + assetsManager.image( + LottieImage( id = asset.id, - type = LottieAsset.AssetType.Image, path = asset.path, name = asset.fileName ) )?.let { - asset.setBitmap(ImageBitmap.fromBytes(it)) + asset.setBitmap(it.toBitmap(asset.width, asset.height)) } } - } - - else -> {} + } else null } + + else -> null } }.joinAll() } } + + private suspend fun loadFonts(assetsManager: LottieAssetsManager) { + fontMutex.withLock { + coroutineScope { + fonts = lottieData.fonts + ?.map { + async { + val f = it.font ?: assetsManager.font( + LottieFont( + family = it.family, + name = it.name, + style = it.fontStyle, + weight = it.weight, + path = it.path + ) + ) + + it.font = f + if (f == null) + null + else it.family to f + } + } + ?.awaitAll() + ?.filterNotNull() + ?.groupBy { it.first } + ?.filterValues { it.isNotEmpty() } + ?.mapValues { FontFamily(it.value.map { it.second }) } + .orEmpty() + } + } + } + internal fun marker(name: String?) = lottieData.markers.firstOrNull { it.name == name } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index cf39c2ae..5bbdb986 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -34,7 +34,7 @@ interface LottieCompositionSpec { * */ @Stable fun JsonString( - assetsManager: LottieAssetsManager = LottieAssetsManager, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, jsonString: suspend () -> String, ): LottieCompositionSpec = LazyJsonString(jsonString, assetsManager) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 5bbe4c30..b7682fa8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -39,8 +39,7 @@ fun rememberLottiePainter( speed: Float = composition?.speed ?: 1f, iterations: Int = composition?.iterations ?: 1, cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, - useCompositionFrameRate: Boolean = false, - maintainOriginalImageBounds: Boolean = false, + useCompositionFrameRate: Boolean = false ) : Painter { val progress = animateLottieCompositionAsState( @@ -58,7 +57,6 @@ fun rememberLottiePainter( return rememberLottiePainter( composition = composition, progress = { progress.value }, - maintainOriginalImageBounds = maintainOriginalImageBounds, ) } @@ -66,7 +64,6 @@ fun rememberLottiePainter( fun rememberLottiePainter( composition : LottieComposition?, progress : () -> Float, - maintainOriginalImageBounds: Boolean = false, clipTextToBoundingBoxes: Boolean = false ) : Painter { @@ -75,7 +72,6 @@ fun rememberLottiePainter( val painter by produceState( EmptyPainter, composition, - maintainOriginalImageBounds, clipTextToBoundingBoxes, fontFamilyResolver ) { @@ -83,7 +79,6 @@ fun rememberLottiePainter( if (composition != null) { value = LottiePainter( composition = composition, - maintainOriginalImageBounds = maintainOriginalImageBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver ) @@ -113,7 +108,6 @@ private object EmptyPainter : Painter() { private class LottiePainter( private val composition: LottieComposition, private val fontFamilyResolver : FontFamily.Resolver, - private val maintainOriginalImageBounds : Boolean, private val clipTextToBoundingBoxes : Boolean, ) : Painter() { @@ -146,7 +140,6 @@ private class LottiePainter( compositionLayer.painterProperties = PainterProperties( assets = composition.lottieData.assets.associateBy(LottieAsset::id), composition = composition, - maintainOriginalImageBounds = maintainOriginalImageBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver ) @@ -188,7 +181,11 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { - compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) + measureTime { + compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) + }.also { + println(it.inWholeMilliseconds) + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/ImageRepresentable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/ImageRepresentable.kt new file mode 100644 index 00000000..1f015173 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/ImageRepresentable.kt @@ -0,0 +1,55 @@ +package io.github.alexzhirkevich.compottie.assets + +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Canvas +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.drawscope.CanvasDrawScope +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.LayoutDirection +import io.github.alexzhirkevich.compottie.internal.assets.resize +import io.github.alexzhirkevich.compottie.internal.platform.fromBytes +import androidx.compose.ui.graphics.painter.Painter as ComposePainter + +interface ImageRepresentable { + + fun toBitmap(width: Int, height: Int): ImageBitmap + + class Bytes(private val bytes: ByteArray) : ImageRepresentable { + override fun toBitmap(width: Int, height: Int): ImageBitmap { + return ImageBitmap.fromBytes(bytes).resize(width, height) + } + } + + class Painter(private val painter: ComposePainter) : ImageRepresentable { + override fun toBitmap(width: Int, height: Int): ImageBitmap { + return painter.toBitmap(width, height) + } + } + + class Bitmap(private val bitmap: ImageBitmap) : ImageRepresentable { + override fun toBitmap(width: Int, height: Int): ImageBitmap { + return bitmap.resize(width, height) + } + } +} + +private fun ComposePainter.toBitmap(w : Int, h : Int) : ImageBitmap { + val bitmap = ImageBitmap(w, h) + + val bmp = ImageBitmap(w, h) + val canvas = Canvas(bmp) + + CanvasDrawScope().draw( + density = Density(1f, 1f), + layoutDirection = LayoutDirection.Ltr, + canvas = canvas, + size = Size(w.toFloat(), h.toFloat()) + ) { + draw(this@draw.size) + } + + return bitmap +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt index 0d075d38..916c8643 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt @@ -1,20 +1,17 @@ package io.github.alexzhirkevich.compottie.assets -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Immutable -import androidx.compose.runtime.InternalComposeApi import androidx.compose.runtime.Stable -import androidx.compose.runtime.remember -import io.github.alexzhirkevich.compottie.InternalCompottieApi +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily /** * Used to fetch lottie assets that are not embedded to the animation JSON file * */ @Stable -fun interface LottieAssetsManager { +interface LottieAssetsManager { /** - * Fetch asset + * Load image asset * * @param id unique asset id that is used for referring from animation layers * @param path relative system path or web URL excluding file name. For example: @@ -24,11 +21,47 @@ fun interface LottieAssetsManager { * * @param name asset name and extension (for example image.png) * */ - suspend fun fetch(asset: LottieAsset): ByteArray? + suspend fun image(image: LottieImage): ImageRepresentable? - @Stable - companion object : LottieAssetsManager { + /** + * Load font asset + * + * @param id unique asset id that is used for referring from animation layers + * @param path relative system path or web URL excluding file name. For example: + * + * - /path/to/images/ + * - https://example.com/images/ + * + * @param name asset name and extension (for example image.png) + * */ + suspend fun font(font: LottieFont): Font? + + companion object { + + /** + * Combine asset managers. + * + * Asset will be loaded by all managers one-by-one until non-null + * asset will is received + * */ + fun combine( + vararg managers: LottieAssetsManager + ) = object : LottieAssetsManager { + override suspend fun image(image: LottieImage): ImageRepresentable? { + return managers.firstNotNullOfOrNull { it.image(image) } + } - override suspend fun fetch(asset: LottieAsset): ByteArray? = null + override suspend fun font(font: LottieFont): Font? { + return managers.firstNotNullOfOrNull { it.font(font) } + } + } + + val Empty = object : LottieAssetsManager { + + override suspend fun image(image: LottieImage): ImageRepresentable? = null + + override suspend fun font(font: LottieFont): Font? = null + } } } + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFont.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFont.kt new file mode 100644 index 00000000..db7c3981 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFont.kt @@ -0,0 +1,13 @@ +package io.github.alexzhirkevich.compottie.assets + +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import io.github.alexzhirkevich.compottie.internal.assets.LottieFontAsset + +class LottieFont( + val family : String, + val name : String, + val style : FontStyle, + val weight : FontWeight, + val path : String? +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieImage.kt similarity index 74% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAsset.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieImage.kt index a6ba3721..8ed51613 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieImage.kt @@ -3,9 +3,8 @@ package io.github.alexzhirkevich.compottie.assets import androidx.compose.runtime.Immutable @Immutable -class LottieAsset internal constructor( +class LottieImage internal constructor( val id : String, - val type : AssetType, val path: String, val name : String ) { @@ -17,10 +16,9 @@ class LottieAsset internal constructor( if (this === other) return true if (other == null || this::class != other::class) return false - other as LottieAsset + other as LottieImage if (id != other.id) return false - if (type != other.type) return false if (path != other.path) return false if (name != other.name) return false @@ -29,13 +27,12 @@ class LottieAsset internal constructor( override fun hashCode(): Int { var result = id.hashCode() - result = 31 * result + type.hashCode() result = 31 * result + path.hashCode() result = 31 * result + name.hashCode() return result } override fun toString(): String { - return "LottieAsset(id='$id', type=$type, path='$path', name='$name')" + return "LottieAsset(id='$id', path='$path', name='$name')" } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index 0d5e4eb5..2b943a77 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal import io.github.alexzhirkevich.compottie.internal.helpers.Marker import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.assets.LottieFontAsset import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -34,6 +35,8 @@ internal data class LottieData( val assets : List = emptyList(), + val fonts : List? = null, + val markers : List = emptyList() ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt index ea1a94ff..7ab1195b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt @@ -1,11 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.animation -import androidx.compose.animation.core.CubicBezierEasing import androidx.compose.animation.core.Easing import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.LinearOutSlowInEasing import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import kotlin.math.abs +import kotlin.math.absoluteValue -internal abstract class Keyframe { +internal abstract class Keyframe() { abstract val start: T? abstract val end: T? abstract val time: Float @@ -16,46 +18,91 @@ internal abstract class Keyframe { val endHold get() = if (hold == BooleanInt.Yes) start else end val easingX: Easing by lazy { - if (hold == BooleanInt.Yes) { + val i = inValue + val o = outValue + + if (hold == BooleanInt.Yes || i == null || o == null) { LinearEasing } else { - val i = inValue - val o = outValue - - if (!i?.x.isNullOrEmpty() && - !i?.y.isNullOrEmpty() && - !o?.x.isNullOrEmpty() && !o?.y.isNullOrEmpty() + if (i.x.isNotEmpty() && + i.y.isNotEmpty() && + o.x.isNotEmpty() && + o.y.isNotEmpty() ) { - CubicBezierEasing( - o!!.x[0].normalize(), - o.y[0] .normalize(), - i!!.x[0].normalize(), - i.y[0] .normalize() + PreciseCubicBezier( + o.x[0].clampX(), + o.y[0].clampY(), + i.x[0].clampX(), + i.y[0].clampY() ) } else LinearEasing } } val easingY by lazy { - if (hold == BooleanInt.Yes) { - LinearEasing - } else { - val i = inValue - val o = outValue - - if (i?.x?.size == 2 && i.y.size == 2 && o?.x?.size == 2 && o.y.size == 2) { - CubicBezierEasing( - o.x[1].normalize(), - o.y[1].normalize(), - i.x[1].normalize(), - i.y[1].normalize() - ) - } else { - easingX + + val i = inValue + val o = outValue + + if (hold == BooleanInt.Yes || i == null || o == null) { + return@lazy LinearEasing + } + + if (i.x.size < 2 || i.y.size < 2 || o.x.size < 2 || o.y.size == 2) { + return@lazy easingX + } + + PreciseCubicBezier( + o.x[1].clampX(), + o.y[1].clampY(), + i.x[1].clampX(), + i.y[1].clampY() + ) + } +} + +private fun Float.clampX() = coerceIn(-1f,1f) +private fun Float.clampY() = coerceIn(-100f,100f) + +private class PreciseCubicBezier( + private val a: Float, + private val b: Float, + private val c: Float, + private val d: Float +) : Easing { + + private val isLinear = (abs(a - b) < CubicErrorBound && abs(c-d) < CubicErrorBound) + + private fun evaluateCubic(a: Float, b: Float, m: Float): Float { + return 3 * a * (1 - m) * (1 - m) * m + + 3 * b * (1 - m) * /* */ m * m + + /* */ m * m * m + } + + override fun transform(fraction: Float): Float { + + if (isLinear) + return fraction + + if (fraction > 0f && fraction < 1f) { + var start = 0.0f + var end = 1.0f + while (true) { + val midpoint = (start + end) / 2 + val estimate = evaluateCubic(a, c, midpoint) + if ((fraction - estimate).absoluteValue < CubicErrorBound) + return evaluateCubic(b, d, midpoint) + if (estimate < fraction) + start = midpoint + else + end = midpoint } + } else { + return fraction } } } -private fun Float.normalize() = coerceIn(0f,1f) +private const val CubicErrorBound: Float = 0.0001f + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt index 87237772..16481d36 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt @@ -30,4 +30,3 @@ internal class ValueKeyframe( override val outValue : BezierInterpolation? = null, ) : Keyframe() - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt index 54787444..6934e38e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.assets import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.platform.fromBytes @@ -24,7 +25,6 @@ internal class ImageAsset( @SerialName("u") override val path: String ="", - @SerialName("sid") override val slotId: String? = null, @@ -73,6 +73,9 @@ private val String.isBase64Data : Boolean get() = private val emptyPaint = Paint() internal fun ImageBitmap.resize(w : Int, h : Int) : ImageBitmap { + if (width == w && h == h){ + return this + } val bitmap = ImageBitmap(w, h) Canvas(bitmap).apply { @@ -84,4 +87,5 @@ internal fun ImageBitmap.resize(w : Int, h : Int) : ImageBitmap { } return bitmap -} \ No newline at end of file +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt new file mode 100644 index 00000000..132f4e80 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt @@ -0,0 +1,45 @@ +package io.github.alexzhirkevich.compottie.internal.assets + +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +internal class LottieFontAsset( + + @SerialName("fFamily") + val family : String, + + @SerialName("fName") + val name : String, + + @SerialName("fStyle") + val style : String, + + @SerialName("fPath") + val path : String? = null +) { + + @Transient + private val lStyle = style.lowercase() + + @Transient + val weight = when { + "extra" in lStyle && "light" in lStyle -> FontWeight.ExtraLight + "light" in lStyle -> FontWeight.Light + "extra" in lStyle && "bold" in lStyle -> FontWeight.ExtraBold + "semi" in style && "bold" in lStyle -> FontWeight.SemiBold + "bold" in lStyle -> FontWeight.Bold + "black" in lStyle -> FontWeight.Black + else -> FontWeight.Normal + } + + @Transient + val fontStyle = if ("italic" in lStyle) + FontStyle.Italic else FontStyle.Normal + + var font : Font? = null +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt index 05e1b4e7..b9f9d0ab 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt @@ -18,7 +18,8 @@ value class MatteMode(val mode : Byte) { fun MatteMode.isInvert() : Boolean = this == MatteMode.Invert || this == MatteMode.InvertedLuma fun MatteMode.isLuma() : Boolean = this == MatteMode.Luma || this == MatteMode.InvertedLuma -fun MatteMode.isSupported() = this == MatteMode.Add || - this == MatteMode.Invert || - this == MatteMode.Luma || - this == MatteMode.InvertedLuma \ No newline at end of file +fun MatteMode.isSupported() = + this == MatteMode.Add + || this == MatteMode.Invert +// || this == MatteMode.Luma +// || this == MatteMode.InvertedLuma \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index c0b4c895..a856c5b5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -23,6 +23,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { abstract val timeRemapping : AnimatedNumber? + private val rect = MutableRect(0f, 0f, 0f, 0f) + @Transient private val newClipRect = MutableRect(0f, 0f, 0f, 0f) @@ -139,6 +141,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { outBounds: MutableRect ) { super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) + layers.fastForEachReversed { rect.set(0f, 0f, 0f, 0f) it.getBounds(drawScope, boundsMatrix, true, state, rect) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 442d7fca..aa8ff41e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -86,7 +86,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { } else BlendMode.DstIn } } - protected val rect = MutableRect(0f, 0f, 0f, 0f) + private val rect = MutableRect(0f, 0f, 0f, 0f) private var parentLayers: MutableList? = null private var parentLayer: BaseLayer? = null @@ -166,6 +166,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { if (rect.width >= 1f && rect.height >= 1f) { contentPaint.alpha = 1f canvas.saveLayer(rect, contentPaint) + canvas.save() // Clear the off screen buffer. This is necessary for some phones. clearCanvas(canvas) @@ -212,9 +213,12 @@ internal abstract class BaseLayer() : Layer, DrawingContent { boundsMatrix.setFrom(parentMatrix) if (applyParents) { - parentLayers?.fastForEachReversed { - boundsMatrix.preConcat(it.transform.matrix(state)) - } ?: run { + val p = parentLayers + if (p != null){ + p.fastForEachReversed { + boundsMatrix.preConcat(it.transform.matrix(state)) + } + } else { parentLayer?.transform?.matrix(state)?.let { boundsMatrix.preConcat(it) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 2b92b06a..6aaf5ea9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -1,10 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.drawscope.withTransform import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset @@ -83,12 +85,6 @@ internal class ImageLayer( val refId : String, ) : BaseLayer() { - @Transient - private val src = MutableRect(0f,0f,0f,0f) - - @Transient - private val dst = MutableRect(0f,0f,0f,0f) - @Transient private val paint = Paint() @@ -106,38 +102,17 @@ internal class ImageLayer( lastBlurRadius = applyBlurEffectIfNeeded(paint, state, lastBlurRadius) - val canvas = drawScope.drawContext.canvas + drawScope.drawIntoCanvas { canvas -> + canvas.save() + canvas.concat(parentMatrix) - canvas.save() - canvas.concat(parentMatrix) - src.set(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat()) - - val maintainOriginalImageBounds = painterProperties?.maintainOriginalImageBounds == true - - val dstSize = if (maintainOriginalImageBounds) { - IntSize( - (mAsset.width * drawScope.density).roundToInt(), - (mAsset.height * drawScope.density).roundToInt() - ) - } else { - IntSize( - (bitmap.width * drawScope.density).roundToInt(), - (bitmap.height * drawScope.density).roundToInt() + canvas.drawImage( + image = bitmap, + topLeftOffset = Offset.Zero, + paint = paint ) + canvas.restore() } - - val srcSize = IntSize( - (bitmap.width * drawScope.density).toInt(), - (bitmap.height * drawScope.density).toInt() - ) - - canvas.drawImageRect( - bitmap, - srcSize = srcSize, - dstSize = dstSize, - paint = paint - ) - canvas.restore() } override fun getBounds( @@ -153,8 +128,8 @@ internal class ImageLayer( outBounds.set( left = 0f, top = 0f, - right = it.width * drawScope.density, - bottom = it.height * drawScope.density + right = it.width.toFloat(), + bottom = it.height.toFloat() ) boundsMatrix.map(outBounds) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 6bd8944f..1918c09d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -68,8 +68,6 @@ internal class PainterProperties( val assets: Map = emptyMap(), - val maintainOriginalImageBounds: Boolean = false, - val clipTextToBoundingBoxes : Boolean = false, val fontFamilyResolver: FontFamily.Resolver? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 9b78d7d9..c83288e3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -157,20 +157,9 @@ internal expect fun Paint.setBlurMaskFilter(radius: Float, isImage : Boolean = f internal val ColorFilter.Companion.Luma : ColorFilter - get() = org.jetbrains.skia.ColorFilter.luma.asComposeColorFilter() + get() = LumaColorFilter//org.jetbrains.skia.ColorFilter.luma.asComposeColorFilter() -fun foo(){ - ColorFilter - ColorMatrix( - floatArrayOf( - 0f, 0f, 0f, 0f, 0f, - 0f, 0f, 0f, 0f, 0f, - 0f, 0f, 0f, 0f, 0f, - 0.2126f, 0.7152f, 0.0722f, 0f, 0f - ) - ) -} private val LumaColorFilter by lazy { ColorFilter.colorMatrix( ColorMatrix( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index aeb052de..d15d7f11 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -26,11 +26,11 @@ val Matrix.scale: Float get() { fun Matrix.preTranslate(x : Float, y : Float) { - preConcat(tempMatrixTransform.apply { - reset() - translate(x, y) - }) -// return translate(x, y) +// preConcat(tempMatrixTransform.apply { +// reset() +// translate(x, y) +// }) + return translate(x, y) } fun Matrix.preConcat(other : Matrix) { @@ -53,22 +53,22 @@ fun Matrix.setValues(values : FloatArray){ } fun Matrix.preRotate(degree : Float) { - preConcat(tempMatrixTransform.apply { - reset() - rotateZ(degree) - }) - -// return rotateZ(degree) +// preConcat(tempMatrixTransform.apply { +// reset() +// rotateZ(degree) +// }) +// + return rotateZ(degree) } fun Matrix.preScale(x : Float, y : Float) { - preConcat(tempMatrixTransform.apply { - reset() - scale(x, y) - }) -// return scale(x,y) +// preConcat(tempMatrixTransform.apply { +// reset() +// scale(x, y) +// }) + return scale(x,y) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt index fd74e6ec..b7d40d88 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt @@ -36,14 +36,14 @@ internal fun MutableRect.union(other : MutableRect) { } if ((left < right) && (top < bottom)) { - set(other) + + left = min(left, other.left) + top = min(top, other.top) + right = max(right, other.top) + bottom = max(right, other.bottom) return } - - left = min(left, other.left) - top = min(top, other.top) - right = max(right, other.top) - bottom = max(right, other.bottom) + set(other) } internal fun MutableRect.set(other : MutableRect){ diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json deleted file mode 100644 index e69de29b..00000000 diff --git a/example/shared/src/commonMain/composeResources/files/wonders.json b/example/shared/src/commonMain/composeResources/files/wonders.json new file mode 100644 index 00000000..b6605b8c --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/wonders.json @@ -0,0 +1 @@ +{"v":"5.2.1","fr":29.9700012207031,"ip":0,"op":900.000036657751,"w":237,"h":237,"nm":"final","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":0,"nm":"flight","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.9]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p9_0p167_0p167"],"t":0,"s":[-50],"e":[0]},{"t":180.00000733155}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.894},"o":{"x":0.167,"y":0.167},"n":"0p833_0p894_0p167_0p167","t":0,"s":[-50,141.805,0],"e":[118,38.61,0],"to":[28,-17.1991653442383,0],"ti":[-78,4.31500005722046,0]},{"i":{"x":0.538,"y":0.736},"o":{"x":0.05,"y":1},"n":"0p538_0p736_0p05_1","t":180,"s":[118,38.61,0],"e":[118,38.61,0],"to":[0.02864627912641,-2.52048540115356,0],"ti":[0.00681143719703,0.76931047439575,0]},{"i":{"x":0.833,"y":0.761},"o":{"x":0.422,"y":0.048},"n":"0p833_0p761_0p422_0p048","t":242,"s":[118,38.61,0],"e":[118,33,0],"to":[-0.00714083854109,-0.80651438236237,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.821},"o":{"x":0.167,"y":0.126},"n":"0p833_0p821_0p167_0p126","t":274,"s":[118,33,0],"e":[118,43,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.845},"o":{"x":0.167,"y":0.155},"n":"0p833_0p845_0p167_0p155","t":304,"s":[118,43,0],"e":[118,33,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.179},"n":"0p833_0p833_0p167_0p179","t":330,"s":[118,33,0],"e":[118,43,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.828},"o":{"x":0.167,"y":0.178},"n":"0p833_0p828_0p167_0p178","t":360,"s":[118,43,0],"e":[118,33,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.161},"n":"0p833_0p833_0p167_0p161","t":392,"s":[118,33,0],"e":[118,43,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.831},"o":{"x":0.167,"y":0.172},"n":"0p833_0p831_0p167_0p172","t":422,"s":[118,43,0],"e":[118,33,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.164},"n":"0p833_0p833_0p167_0p164","t":453,"s":[118,33,0],"e":[118,43,0],"to":[0,0,0],"ti":[0,0,0]},{"t":483.000019672993}],"ix":2},"a":{"a":0,"k":[45.5,50.5,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":9,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":51,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":6,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":0,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}},{"ty":7,"nm":"GPU Rendering","mn":"ADBE Force CPU GPU","ix":7,"v":{"a":0,"k":1,"ix":7}}]}],"w":91,"h":101,"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"may","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.233,118.5,0],"ix":2},"a":{"a":0,"k":[219.5,200.5,0],"ix":1},"s":{"a":0,"k":[54.504,54.504,100],"ix":6}},"ao":0,"tm":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[14.114]},{"t":423.000017229143}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":439,"h":401,"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"loading 2","refId":"comp_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[119,221,0],"ix":2},"a":{"a":0,"k":[219.5,200.5,0],"ix":1},"s":{"a":0,"k":[78,78,100],"ix":6}},"ao":0,"w":439,"h":401,"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.5,118.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[237,237],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":8},"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":true},{"ty":"fl","c":{"a":0,"k":[0.780392169952,0.898039221764,0.941176474094,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"flight Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[45.5,50.5,0],"ix":2},"a":{"a":0,"k":[45.5,50.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.198,-0.314],[6.473,-9.04],[-0.216,0.302],[-5.936,9.402]],"o":[[-5.936,9.401],[-0.215,0.301],[6.472,-9.04],[0.195,-0.31]],"v":[[9.09,-14.003],[-9.523,13.66],[-9.07,14.016],[9.544,-13.648]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.956,79.611],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.205,-0.309],[-5.842,-8.82],[0.205,0.308],[5.843,8.821]],"o":[[5.842,8.821],[0.204,0.309],[-5.841,-8.822],[-0.204,-0.309]],"v":[[-8.993,-13.058],[8.533,13.405],[8.993,13.059],[-8.534,-13.404]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.114,19.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.369,0.039],[0.49,-2.332],[-0.076,0.362],[-1.761,-0.183]],"o":[[-2.103,-0.219],[-0.077,0.364],[0.422,-2.007],[0.368,0.039]],"v":[[2.336,-1.493],[-2.628,1.262],[-2.059,1.35],[2.249,-0.924]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.746,46.668],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.37,0.025],[13.095,0.205],[-0.366,-0.005],[-13.016,-0.89]],"o":[[-13.065,-0.895],[-0.37,-0.005],[13.044,0.203],[0.368,0.025]],"v":[[19.622,0.529],[-19.622,-1.118],[-19.559,-0.544],[19.535,1.098]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[42.202,55.706],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.165,0.168],[0,0],[4.254,-5.523]],"o":[[4.098,-5.319],[0,0],[1.888,1.922],[0,0]],"v":[[-3.046,4.854],[-2.941,-4.643],[-1.288,-6.268],[-1.208,6.269]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.149,50.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.005,3.843],[0,0],[-3.843,-0.005],[0,0],[0.005,-3.844],[0,0],[2.605,0.003]],"o":[[-3.843,-0.005],[0,0],[0.004,-3.843],[0,0],[2.605,0.003],[0,0],[-0.005,3.844],[0,0]],"v":[[-38.359,6.178],[-45.216,0.139],[-45.216,-0.324],[-38.345,-6.346],[35.679,-8.583],[45.217,-0.223],[45.217,0.241],[35.66,8.579]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.217,50.14],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.985,6.836],[-2.241,-6.833],[-4.654,-6.836],[-4.985,6.722]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.21,41.265],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.985,-6.447],[-2.27,6.639],[-4.684,6.635],[-4.985,-6.639]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.206,58.417],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[19.148,21.952],[-9.561,-21.942],[-19.148,-21.952],[-6.827,21.947]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.941000007181,0.957000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.136,21.953],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[19.197,-21.96],[-9.609,21.966],[-19.197,21.955],[-6.778,-21.965]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.941000007181,0.957000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.073,79.006],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.002,-1.534],[-1.66,-0.002],[0,0],[-0.001,1.534],[1.659,0.002]],"o":[[-1.659,-0.002],[-0.002,1.534],[0,0],[1.66,0.002],[0.002,-1.534],[0,0]],"v":[[-4.503,-2.876],[-7.511,-0.008],[-4.509,2.865],[4.503,2.876],[7.511,0.008],[4.51,-2.866]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52.114,70.847],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.002,-1.534],[-1.66,-0.002],[0,0],[-0.001,1.533],[1.659,0.002]],"o":[[-1.659,-0.002],[-0.001,1.533],[0,0],[1.659,0.001],[0.002,-1.534],[0,0]],"v":[[-4.503,-2.876],[-7.512,-0.008],[-4.51,2.865],[4.504,2.876],[7.51,0.008],[4.51,-2.866]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.54,78.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.001,-1.534],[-1.66,-0.002],[0,0],[-0.001,1.534],[1.659,0.002]],"o":[[-1.659,-0.002],[-0.002,1.534],[0,0],[1.659,0.002],[0.002,-1.533],[0,0]],"v":[[-4.503,-2.876],[-7.51,-0.009],[-4.51,2.865],[4.504,2.876],[7.51,0.008],[4.51,-2.866]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.892,86.626],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.002,1.534],[-1.659,-0.002],[0,0],[0.001,-1.533],[1.659,0.002]],"o":[[-1.659,-0.002],[0.001,-1.533],[0,0],[1.659,0.002],[-0.002,1.534],[0,0]],"v":[[-4.51,3.105],[-7.51,-0.009],[-4.503,-3.115],[4.51,-3.105],[7.512,0.008],[4.503,3.115]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52.16,29.937],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.002,1.534],[-1.659,-0.002],[0,0],[0.001,-1.534],[1.659,0.002]],"o":[[-1.659,-0.001],[0.001,-1.534],[0,0],[1.659,0.001],[-0.002,1.534],[0,0]],"v":[[-4.51,2.866],[-7.51,-0.008],[-4.504,-2.876],[4.51,-2.865],[7.512,0.009],[4.503,2.876]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.602,22.036],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.002,1.533],[-1.659,-0.002],[0,0],[0.001,-1.534],[1.659,0.002]],"o":[[-1.659,-0.002],[0.001,-1.534],[0,0],[1.659,0.002],[-0.002,1.534],[0,0]],"v":[[-4.51,2.626],[-7.51,-0.008],[-4.504,-2.636],[4.51,-2.626],[7.512,0.008],[4.503,2.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.067000003889,0.513999968884,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.973,14.136],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"ix":16,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"may Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[659.5,200.5,0],"e":[219.5,200.5,0],"to":[-73.3333358764648,0,0],"ti":[147.91667175293,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":210,"s":[219.5,200.5,0],"e":[-228,200.5,0],"to":[-147.91667175293,0,0],"ti":[74.5833358764648,0,0]},{"t":422.000017188412}],"ix":2},"a":{"a":0,"k":[219.5,200.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.095,0],[1.385,-0.513],[7.344,0],[2.766,-3.613],[1.865,0],[0,-4.831],[-0.005,-0.121],[0,-5.671],[-6.637,0],[0,0],[0,7.132]],"o":[[-1.562,0],[-1.373,-6.977],[-4.885,0],[-1.417,-1.005],[-4.806,0],[0,0.123],[-5.243,1.3],[0,6.672],[0,0],[7.095,0],[0,-7.132]],"v":[[20.617,-7.197],[16.18,-6.39],[1.346,-18.63],[-10.637,-12.678],[-15.644,-14.279],[-24.347,-5.531],[-24.328,-5.167],[-33.464,6.549],[-21.446,18.63],[20.617,18.63],[33.464,5.716]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[327.953,358.029],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[18.395,0],[3.59,-1.33],[19.04,0],[7.17,-9.368],[4.838,0],[0,-12.526],[-0.013,-0.316],[0,-14.703],[-17.209,0],[0,0],[0,18.491]],"o":[[-4.049,0],[-3.559,-18.09],[-12.667,0],[-3.674,-2.606],[-12.462,0],[0,0.319],[-13.592,3.37],[0,17.298],[0,0],[18.395,0],[0,-18.49]],"v":[[53.453,-18.66],[41.951,-16.567],[3.492,-48.3],[-27.576,-32.87],[-40.559,-37.02],[-63.123,-14.34],[-63.075,-13.395],[-86.76,16.98],[-55.601,48.3],[53.453,48.3],[86.76,14.82]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":60,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[86.76,129.24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.854,0.878],[0,2.671],[16.764,0],[5.258,-3.936],[2.695,0],[2.314,-7.548],[2.282,0],[0.843,-5.282],[0,-11.883],[-14.669,0],[0,0],[0,10.595]],"o":[[0.792,-2.44],[0,-15.106],[-7.37,0],[-2.342,-0.877],[-9.112,0],[-1.821,-0.989],[-6.095,0],[-12.599,1.871],[0,13.217],[0,0],[11.759,0],[0,-10.01]],"v":[[48.09,-1.622],[49.326,-9.308],[18.972,-36.66],[-0.409,-30.355],[-8.011,-31.722],[-27.093,-18.623],[-33.306,-20.215],[-45.236,-10.86],[-67.455,12.727],[-40.894,36.66],[46.164,36.66],[67.455,17.475]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":60,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[356.554,258.559],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.611,0.849],[0,0.379],[2.987,0],[0.684,-0.314],[5.387,0],[1.96,-3.103],[1.255,0],[0,-3.264],[-0.012,-0.153],[0,-4.09],[-4.849,0],[0,0],[0,3.612]],"o":[[0.073,-0.358],[0,-3.003],[-0.801,0],[-0.98,-5.128],[-3.926,0],[-0.955,-0.674],[-3.247,0],[0,0.156],[-3.756,1],[0,4.874],[0,0],[3.593,0],[0,-2.908]],"v":[[19.483,1.147],[19.595,0.04],[14.186,-5.397],[11.944,-4.903],[1.096,-13.906],[-8.23,-8.737],[-11.6,-9.809],[-17.479,-3.9],[-17.456,-3.439],[-23.984,5.082],[-15.206,13.906],[17.478,13.906],[23.984,7.367]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":28,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[414.784,81.916],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.3,0.748],[0,0.334],[2.63,0],[0.602,-0.277],[4.743,0],[1.725,-2.733],[1.105,0],[0,-2.874],[-0.011,-0.135],[0,-3.602],[-4.27,0],[0,0],[0,3.179]],"o":[[0.064,-0.314],[0,-2.643],[-0.705,0],[-0.862,-4.515],[-3.458,0],[-0.841,-0.593],[-2.859,0],[0,0.136],[-3.308,0.881],[0,4.291],[0,0],[3.164,0],[0,-2.562]],"v":[[17.155,1.009],[17.254,0.034],[12.492,-4.753],[10.517,-4.318],[0.966,-12.245],[-7.247,-7.694],[-10.215,-8.637],[-15.391,-3.434],[-15.37,-3.027],[-21.119,4.475],[-13.389,12.245],[15.39,12.245],[21.119,6.487]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":28,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[57.252,358.911],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.302,1.074],[0,0.48],[3.776,0],[0.864,-0.397],[6.809,0],[2.478,-3.923],[1.586,0],[0,-4.125],[-0.015,-0.193],[0,-5.17],[-6.129,0],[0,0],[0,4.566]],"o":[[0.093,-0.452],[0,-3.795],[-1.012,0],[-1.239,-6.482],[-4.965,0],[-1.207,-0.851],[-4.104,0],[0,0.196],[-4.748,1.264],[0,6.161],[0,0],[4.542,0],[0,-3.676]],"v":[[24.627,1.449],[24.77,0.049],[17.933,-6.822],[15.099,-6.198],[1.387,-17.579],[-10.404,-11.045],[-14.664,-12.4],[-22.095,-4.93],[-22.065,-4.347],[-30.318,6.423],[-19.221,17.578],[22.094,17.578],[30.318,9.311]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":28,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[178.451,17.578],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.038,1.313],[0,0.587],[4.619,0],[1.057,-0.485],[8.328,0],[3.032,-4.798],[1.941,0],[0,-5.045],[-0.019,-0.236],[0,-6.324],[-7.496,0],[0,0],[0,5.584]],"o":[[0.114,-0.553],[0,-4.642],[-1.238,0],[-1.515,-7.927],[-6.072,0],[-1.475,-1.041],[-5.019,0],[0,0.241],[-5.808,1.547],[0,7.535],[0,0],[5.556,0],[0,-4.497]],"v":[[30.121,1.772],[30.296,0.061],[21.933,-8.344],[18.467,-7.581],[1.696,-21.501],[-12.726,-13.51],[-17.936,-15.166],[-27.025,-6.031],[-26.988,-5.318],[-37.082,7.856],[-23.51,21.501],[27.023,21.501],[37.082,11.389]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[387.882,97.702],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.89,1.231],[0,2.922],[12.448,0],[3.63,-7.622],[3.085,0],[0,-8.534],[-0.029,-0.39],[0.106,0],[0,-7.229],[-7.192,0],[0,0],[0,6.247]],"o":[[1.002,-2.564],[0,-12.512],[-8.968,0],[-2.408,-1.573],[-8.491,0],[0,0.398],[-0.105,-0.002],[-7.192,0],[0,7.229],[0,0],[6.215,0],[0,-5.297]],"v":[[34.89,4.326],[36.461,-3.943],[13.922,-26.6],[-6.397,-13.699],[-14.758,-16.195],[-30.131,-0.743],[-30.072,0.436],[-30.385,0.421],[-43.407,13.51],[-30.385,26.6],[32.153,26.6],[43.407,15.288]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[204.97,46.37],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.864,0.973],[0,2.308],[9.837,0],[2.868,-6.024],[2.438,0],[0,-6.744],[-0.023,-0.309],[0.084,0],[0,-5.712],[-5.683,0],[0,0],[0,4.937]],"o":[[0.792,-2.026],[0,-9.888],[-7.087,0],[-1.903,-1.244],[-6.709,0],[0,0.315],[-0.083,-0.002],[-5.683,0],[0,5.713],[0,0],[4.911,0],[0,-4.185]],"v":[[27.571,3.418],[28.813,-3.116],[11.002,-21.019],[-5.054,-10.825],[-11.661,-12.799],[-23.809,-0.588],[-23.762,0.344],[-24.01,0.331],[-34.3,10.675],[-24.01,21.019],[25.408,21.019],[34.3,12.08]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74.011,377.794],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":4,"cix":2,"ix":9,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":423.000017229143,"st":0,"bm":0}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"loading 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[-360]},{"t":899.000036617021}],"ix":10},"p":{"a":0,"k":[219.5,200.5,0],"ix":2},"a":{"a":0,"k":[219.5,200.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.817,-12.686],[-0.161,0.161],[-0.619,-0.249],[-0.372,0.747],[0.557,0.56],[-0.248,0.498],[0,0.499],[0.682,0.686],[1.61,0.872],[0.744,0.747],[0.62,0.872],[1.115,0.498],[0.868,0.872],[0.682,0.685],[0.992,0],[0.455,-0.595]],"o":[[0.366,-0.521],[0.42,-0.423],[0.62,0.249],[0.372,-0.748],[-0.558,-0.561],[0.247,-0.499],[0,-0.498],[-0.682,-0.685],[-1.612,-0.873],[-0.743,-0.748],[-0.62,-0.872],[-1.116,-0.499],[-0.867,-0.872],[-0.681,-0.685],[-0.475,0],[5.873,18.33]],"v":[[11.83,24.201],[12.704,23.046],[16.546,23.017],[18.034,21.024],[16.051,16.788],[16.299,13.798],[18.034,9.436],[15.307,5.077],[8.119,-0.155],[1.797,-4.516],[-2.045,-10.869],[-6.011,-13.112],[-8.738,-18.345],[-13.2,-21.709],[-16.918,-24.2],[-18.406,-23.034]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[134.939,259.809],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.079,-0.079],[-0.246,-0.247],[-0.281,0.282],[-0.351,0.494],[-0.069,0.282],[0.633,0.141],[0.099,0.171],[0.673,-1.216]],"o":[[0.175,0.176],[0.246,0.247],[0.281,-0.283],[0.352,-0.495],[0.071,-0.283],[-0.135,-0.03],[-0.717,1.186],[0.231,0.013]],"v":[[-1.315,1.19],[-0.894,2.249],[-0.051,2.249],[0.862,0.344],[1.775,-1.281],[0.581,-2.199],[0.235,-2.531],[-1.846,1.076]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.84,148.991],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.22,0],[-0.14,0.283],[-0.14,0.141],[-0.176,0.176],[0.07,0.283],[0.211,0.353],[0.405,0.177],[0.836,-1.85]],"o":[[0.421,0],[0.141,-0.282],[0.141,-0.141],[0.176,-0.176],[-0.071,-0.282],[-0.166,-0.281],[-0.935,1.793],[0.562,0.215]],"v":[[-1.029,2.926],[-0.327,1.938],[-0.257,0.243],[2.272,1.161],[1.992,-0.674],[1.429,-2.015],[0.214,-2.926],[-2.448,2.538]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[123.463,155.445],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.479,-0.481],[0,-0.412],[-0.205,0.206],[0,0.344],[0,0.481],[0.342,0],[0,0]],"o":[[0.479,0.481],[0,0.413],[0.205,-0.206],[0,-0.344],[0,-0.481],[0,0],[-0.068,0.206]],"v":[[-0.956,-0.995],[-0.752,1.34],[0.068,2.302],[1.025,1.203],[1.436,-1.82],[0.82,-2.507],[-0.752,-2.507]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.388,194.4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.137,0.343],[0.359,-0.328],[0.068,-0.344],[-0.329,0]],"o":[[-0.137,-0.344],[0,0],[-0.068,0.343],[0.329,0]],"v":[[0.786,0.748],[0.102,-1.038],[-0.855,0.061],[-0.227,1.367]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.765,189.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.41,-0.069],[-0.342,0],[0.136,0.137],[0.479,-0.138],[0.41,-0.619],[-0.41,-0.138]],"o":[[0.41,0.068],[0.341,0],[-0.137,-0.138],[0,0],[0,0],[0.41,0.136]],"v":[[-0.307,0.515],[1.606,0.927],[2.154,0.173],[0.512,-0.103],[-1.88,-0.309],[-1.88,0.653]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[235.393,203.88],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.479,-0.137],[0,0],[0,0.413],[0.41,0],[0.342,0],[0,0],[-0.342,-0.069]],"o":[[0.479,0.137],[0.957,-0.275],[0,-0.412],[-0.41,0],[-0.341,0],[0,0],[0.341,0.069]],"v":[[0.205,0.549],[1.435,1.443],[2.324,-0.275],[1.435,-1.305],[-0.957,-1.442],[-2.392,-1.03],[-1.572,-0.206]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[217.59,199.587],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.544,0.21],[0,0.799],[0.293,0.546],[0.669,-0.042],[0.209,0.294],[0.334,-0.337],[0.502,-0.169],[-0.137,-0.137],[1.004,0.042],[0.167,-0.378],[-0.167,-0.252],[-0.065,-0.252],[0,0],[0,0],[0.23,-0.231],[-0.209,-0.505],[-0.376,0],[-0.419,0.421],[-0.878,0],[-0.418,0.126],[-0.168,0.505],[-0.041,0.421],[0.125,0.463]],"o":[[0.543,-0.21],[0,-0.799],[-0.293,-0.547],[-0.669,0.042],[-0.209,-0.294],[-0.188,0.189],[-0.502,0.168],[0.136,0.137],[-1.004,-0.042],[-0.167,0.378],[0.168,0.252],[0.064,0.252],[0,0],[0,0],[-0.23,0.231],[0.209,0.504],[0.377,0],[0.418,-0.42],[0.879,0],[0.418,-0.126],[0.167,-0.504],[0.042,-0.42],[-0.126,-0.463]],"v":[[2.615,-1.43],[3.576,-2.061],[3.451,-3.532],[2.572,-4.289],[1.317,-3.995],[-0.021,-4.415],[-0.816,-3.49],[-1.276,-2.419],[-1.151,-1.682],[-2.991,-1.598],[-3.033,-0.505],[-3.139,0.168],[-2.531,0.924],[-2.74,1.808],[-3.326,2.691],[-3.535,3.784],[-3.075,4.709],[-1.569,4.33],[-0.482,3.405],[1.401,3.027],[2.238,2.312],[2.53,0.924],[2.405,-0.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[183.841,165.018],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.14,0.635],[-0.14,0.847],[0.386,0.388],[0,0.212],[-0.14,0.424],[-0.351,0.353],[-0.07,0.353],[0.14,0.706],[-0.176,0.177],[-0.07,-0.283],[-0.141,-0.353],[0,0],[-0.457,0.459],[-0.211,0.353],[0.351,-0.141],[0.562,0.071],[0.211,0.211],[-0.176,0.176],[0.421,0],[0.211,-0.353],[0.211,-0.212],[-0.07,0.423],[-0.141,0.424],[-0.597,0.6],[-0.632,0.283],[-0.421,0.211],[-0.351,0.494],[-0.246,0.247],[0,0.442],[0.211,0.565],[0.731,0.494],[-0.141,0.424],[0,0.283],[0.28,0.282],[0.312,-0.313],[0.352,0.07],[-0.141,0.424],[0.07,0.212],[0.159,-0.015],[0,-15.127],[-0.033,-1.1],[-0.36,0.726]],"o":[[0.139,-0.636],[0.14,-0.847],[-0.387,-0.388],[0,-0.211],[0.14,-0.423],[0.351,-0.354],[0.071,-0.353],[-0.141,-0.707],[0.176,-0.176],[0.071,0.282],[0.14,0.353],[0,0],[0.456,-0.459],[0.21,-0.353],[-0.351,0.141],[-0.562,-0.07],[-0.21,-0.212],[0.175,-0.177],[-0.421,0],[-0.211,0.353],[-0.21,0.212],[0.071,-0.424],[0.141,-0.424],[0.597,-0.6],[0.632,-0.282],[0.422,-0.212],[0.352,-0.494],[0.246,-0.247],[0,-0.443],[-0.21,-0.565],[-0.731,-0.494],[0.14,-0.424],[0,-0.282],[-0.281,-0.282],[-0.312,0.314],[-0.351,-0.071],[0.14,-0.423],[-0.025,-0.073],[-5.521,13.103],[0,1.107],[0.262,-0.377],[0.632,-1.27]],"v":[[-7.011,19.531],[-6.378,16.989],[-6.869,15.506],[-6.729,14.235],[-5.816,12.823],[-5.465,10.776],[-3.709,9.152],[-3.568,6.822],[-2.023,4.915],[-0.899,4.421],[-0.828,5.974],[0.085,5.339],[1.63,3.503],[2.965,2.514],[2.403,2.02],[0.787,1.949],[-0.197,0.114],[0.717,-2.075],[-0.056,-2.923],[-1.531,-1.299],[-2.655,0.961],[-2.936,-0.451],[-2.093,-3.064],[-0.688,-4.688],[1.068,-5.465],[3.807,-5.888],[5.282,-8.077],[7.671,-9.419],[8.233,-10.991],[7.6,-13.373],[4.762,-15.844],[4.44,-17.609],[4.931,-20.01],[3.878,-21.916],[2.543,-20.937],[1.208,-19.515],[0.647,-20.716],[0.647,-22.905],[0.343,-22.967],[-8.233,19.673],[-8.179,22.982],[-7.221,21.366]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.54,183.536],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":4,"cix":2,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.374,-0.15],[0,-0.376],[0.149,-0.528],[-0.599,0],[-0.525,0.15],[-0.3,0.602],[-0.299,0.452],[0,0.602],[0.899,-0.452],[1.198,-0.828],[0.674,-0.301],[0,-0.376],[-0.149,-0.301]],"o":[[-0.375,0.15],[0,0.377],[-0.151,0.526],[0.599,0],[0.523,-0.151],[0.299,-0.602],[0.3,-0.452],[0,-0.602],[0,0],[-1.198,0.827],[-0.674,0.301],[0,0.376],[0.149,0.302]],"v":[[-4.004,3.273],[-5.277,4.552],[-4.902,6.585],[-3.78,7.788],[-1.234,7.036],[2.358,1.844],[4.229,-3.122],[5.277,-5.003],[4.229,-7.335],[2.358,-4.401],[-1.16,-2.595],[-3.481,-0.714],[-3.256,1.317]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[262.589,286.337],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":4,"cix":2,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.219,-0.514],[0.145,-0.146],[-0.584,-0.22],[-0.072,-0.806],[0,-0.513],[0.658,-0.147],[0.657,0.294],[0,0.367],[-0.145,0.293],[0.219,0.586],[0.438,0.953],[0.146,0.733],[0.364,0.366],[-0.511,0.514],[-0.548,0.55],[-1.167,0],[-1.022,0.366],[-0.366,-0.66],[-0.147,-0.807],[-0.729,-0.147],[0.219,-0.514],[0,0],[0.292,0.66],[0.511,0.073],[0.218,-0.367],[-0.146,-0.44],[0,-0.514],[-0.73,-0.22],[-0.219,-0.366],[-0.219,-0.367],[-0.328,0.33],[-0.219,-0.44]],"o":[[-0.219,0.513],[-0.147,0.147],[0.584,0.22],[0.073,0.807],[0,0.513],[-0.656,0.146],[-0.657,-0.293],[0,-0.367],[0.146,-0.293],[-0.219,-0.587],[-0.438,-0.953],[-0.146,-0.733],[-0.365,-0.367],[0.51,-0.513],[0.547,-0.55],[1.167,0],[1.021,-0.367],[0.364,0.66],[0.145,0.806],[0.73,0.147],[-0.219,0.513],[-0.073,-1.027],[-0.292,-0.659],[-0.51,-0.073],[-0.219,0.367],[0.146,0.44],[0,0.513],[0.729,0.22],[0.219,0.367],[0.219,0.366],[0.328,-0.33],[0.219,0.44]],"v":[[31.062,-18.783],[28.655,-18.856],[29.311,-17.902],[30.478,-15.336],[30.406,-11.082],[28.508,-10.495],[24.204,-11.889],[23.329,-13.429],[23.839,-16.802],[24.569,-19.076],[21.286,-23.329],[21.067,-26.262],[19.681,-27.142],[21.578,-29.416],[23.183,-30.882],[25.298,-31.469],[27.706,-32.642],[28.874,-31.762],[29.166,-29.562],[30.478,-29.049],[30.77,-28.095],[29.457,-26.63],[28.363,-28.316],[26.684,-28.462],[26.247,-27.362],[25.736,-26.555],[26.174,-25.455],[27.195,-23.77],[28.363,-22.229],[28.363,-20.542],[29.603,-21.716],[30.916,-20.322]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[17.287,19.368],[0.068,0.023],[0.236,-0.238],[-0.052,-0.476],[-0.183,-0.185],[0.132,0.132],[0.236,0.237],[0.262,-0.106],[0.211,0],[0,0.529],[0.052,-0.158],[0,0],[-0.132,-0.132],[-0.316,-0.159],[-0.052,-0.369],[0.105,-0.211],[0.157,0.159],[-0.105,0.317],[0.053,0.158],[0,0],[-0.106,0.317],[0.159,0.158],[0.368,0],[0.211,-0.211],[0,-0.528],[0.21,-0.211],[-0.21,-0.211],[0.236,-0.237],[-0.342,-0.343],[0,0],[2.863,1.466],[0.918,0.434],[2.647,0.326],[0.055,0.327],[0.055,0.435],[0.918,0.271],[1.08,0.272],[0.378,0.76],[-0.216,0.869],[-0.432,0.435],[-1.135,0.434],[-1.135,0],[-0.324,0.109],[0.054,0.326],[0.432,0],[1.188,0.109],[0.703,-0.109],[1.026,0.109],[0.486,-0.217],[0.135,-0.136],[0.162,-0.543],[0.189,-0.19],[0.378,-0.598],[0.324,-0.815],[-0.756,-0.325],[0.595,-0.109],[-0.378,-0.706],[-0.27,-1.249],[0.35,-0.353],[0.378,0.815],[-0.055,-0.38],[0.216,-0.217],[0.27,0.271],[0.433,-0.217],[0.053,-0.217],[0.109,-0.108],[0.379,0.108],[0.162,-0.272],[-0.431,-0.163],[0.189,-0.189],[0.595,0.163],[0.757,0.435],[0,0.434],[-0.162,0.814],[0.216,0.434],[-0.432,0],[-0.648,-0.163],[-0.919,-0.326],[-0.486,0],[-0.325,0.435],[-0.107,0.489],[0.243,0.244],[0.649,0.38],[0.27,0.108],[0.27,0],[0.135,0.136],[0.81,-0.108],[0.324,0.054],[-0.324,0.162],[-0.298,0.298],[0.324,0.326],[0.702,0],[0.324,0.163],[0.405,-0.408],[0.216,-0.054],[0.27,0.055],[0.325,0],[0.379,-0.217],[0.864,-0.488],[1.08,-0.163],[1.188,-0.435],[0.622,-0.624],[0.676,-0.679],[0.433,-0.76],[0.405,-0.407],[0.54,-0.326],[0.27,-0.651],[-0.054,-0.76],[-0.595,-0.109],[-0.919,0.217],[-0.243,0.244],[-0.648,-0.163],[-0.054,-0.597],[-0.487,-0.489],[-0.27,-0.706],[-0.54,0],[-0.162,0.326],[-0.756,0.163],[-0.486,0.489],[-0.054,1.25],[-0.109,0.761],[-0.487,0.326],[-0.108,0.488],[0,0.272],[0.162,0.163],[0.378,0.108],[0.298,0.299],[0,0.489],[-0.54,0.923],[-0.595,0.381],[-0.486,0.109],[0.216,0.326],[-0.324,0.543],[-0.866,0.271],[-0.54,-0.325],[-0.108,-0.434],[0.323,-0.327],[0.459,-0.462],[0.648,-0.651],[0.188,-0.19],[-0.216,-0.434],[-0.324,-0.163],[-0.702,-0.435],[-0.81,0.054],[-0.81,0.163],[-0.378,0.163],[-0.324,-0.325],[0,-0.434],[0.323,0],[0.648,0],[0.648,0],[0.135,-0.136],[-0.217,-0.325],[-0.593,-0.109],[0.109,-0.489],[0.324,-0.163],[0.136,0.135],[0.19,-0.19],[0.108,-0.597],[-0.054,-0.217],[0.433,0],[0.162,-0.38],[0.378,0],[0.136,0.136],[0.163,-0.162],[0.27,-0.271],[0.54,-0.163],[-0.054,-0.435],[0.216,0.217],[0.109,0.109],[0.324,0],[0.27,-0.109],[0.107,0.489],[0.216,0.217],[0.054,0.434],[-0.243,0.245],[-0.107,0.272],[-0.055,0.325],[0.136,-0.136],[0.54,-0.109],[0.378,-0.489],[0.053,-0.652],[-0.297,-0.298],[-0.108,-0.326],[0.27,-0.543],[0.486,0.108],[0.325,0],[0.593,-0.163],[0.325,-0.435],[0.216,-0.543],[0.756,-0.271],[0.217,-0.326],[0.162,-0.272],[0.271,0],[0.108,-0.271],[0.163,0.163],[0.27,-0.054],[-0.162,-0.327],[0.122,-0.122],[0.324,0.109],[0.324,-0.108],[0.216,-0.326],[0,-0.434],[-0.594,-0.434],[-0.54,0],[-0.215,-0.652],[-0.297,-0.298],[0.054,-0.652],[0.487,-0.325],[1.08,0],[0.649,0.217],[0.378,-0.109],[0.216,-0.217],[0,0],[-0.27,-0.924],[0,-1.086],[0.162,-0.434],[-0.594,-0.706],[-0.108,-0.271],[-0.324,-0.326],[-0.487,-0.108],[-0.189,0.19],[-0.432,-0.055],[0,0.434],[-0.756,0.435],[-0.216,0.434],[0.108,0.489],[-0.27,0.815],[-0.648,0.272],[-0.324,0.543],[0,1.086],[-0.27,0.271],[-0.54,0],[-0.756,0.597],[-0.486,0],[-0.432,-0.651],[-0.297,-0.299],[-0.594,-0.434],[-0.324,-0.326],[-0.405,-0.407],[-0.053,-0.543],[0,-0.163],[-0.378,0],[-0.216,0.543],[-0.162,0.49],[0,0.271],[0.459,0.461],[-0.163,0.38],[-0.431,-0.054],[-0.162,-0.271],[0,0],[0.297,0.299],[0.594,0.327],[0.513,0.516],[0.594,0.598],[0.27,0.652],[0.702,0.543],[-0.054,1.032],[-0.811,0.163],[-0.108,-0.272],[-0.324,0.326],[-0.27,-0.597],[-0.216,-0.488],[-0.972,-0.217],[-0.433,-0.434],[-0.108,-0.977],[-0.432,-0.108],[-0.054,-0.598],[-0.486,-0.272],[0.054,-0.543],[-0.702,-0.163],[-0.216,-0.217],[-0.162,0.272],[-0.109,0.651],[-0.217,0.218],[0.379,0.101],[-0.216,0.326],[0.379,0.489],[-0.108,0.217],[-0.431,-0.055],[-0.054,0.38],[-1.027,0],[-0.379,-0.38],[-0.703,0.49],[-0.541,0],[0.431,0.434],[0.325,0.489],[-0.595,0.598],[-0.162,0.325],[-0.648,0.163],[0.162,0.706],[-0.595,0.38],[-0.702,-0.217],[-0.405,-0.407],[-0.217,-0.434],[-0.055,-0.381],[-0.432,-0.272],[-0.217,0.217],[-0.271,0.272],[0.594,0.38],[-0.162,0.38],[-1.297,0.218],[-0.595,-0.217],[0.271,-0.272],[0.378,0],[0,-0.488],[0.055,-0.217],[-0.486,-0.163],[-0.485,-0.326],[-0.161,-1.574],[0.648,-0.218],[1.189,0.271],[0.716,0.239],[0.299,-0.3],[0.477,0],[0.716,-0.119],[0.478,-0.479],[-0.477,0],[-0.238,-0.839],[-0.835,0],[-0.954,-0.599],[-1.669,0.719],[-0.477,0],[0,-1.079],[0.477,-1.438],[0.954,-0.6],[1.074,0.24],[0.596,-0.6],[1.192,0.24],[0.657,0.659],[1.075,-0.599],[0,-0.6],[1.193,0.359],[0.716,0.719],[1.551,0.36],[0.358,1.439],[-0.357,0.6],[0.716,0],[1.192,-0.36],[1.074,0],[0.835,-0.479],[1.073,0],[0.358,-0.36],[1.312,-1.318],[0.239,-0.48],[0.358,-1.799],[1.073,-1.078],[0.239,-1.079],[0,-1.078],[-0.358,-2.279],[0,-0.96],[-1.074,-1.439],[-0.835,-0.839],[-0.477,0],[-1.312,0],[-1.192,0],[-1.193,-0.359],[-1.67,0.24],[-0.656,-0.66],[-1.431,0],[-1.431,-1.678],[0,-0.959],[-1.55,-1.798],[-0.358,-0.959],[0.239,-1.319],[0,-0.6],[-0.835,-1.799],[-0.358,-1.559],[-1.313,-0.36],[-0.596,-1.079],[-0.476,-0.48],[-1.073,0],[-1.67,0.72],[-0.955,0.959],[0,0],[-0.656,0.659],[0,0.839],[-0.775,0.779],[-1.133,1.14],[0,0.839],[0,0.839],[0,0.481],[-0.835,1.319],[-1.073,1.079],[-1.312,1.559],[-0.238,0.839],[0,0],[0.597,0],[0.596,-0.6],[0.418,0.42],[0.417,0.42],[0.477,0],[0.358,0.72],[0.239,0.72],[0.716,0.72],[0,0.839],[0.536,0.539],[0.238,0.599],[0.477,0.72],[-0.358,0],[0,0],[0,0],[-0.476,-0.479],[-0.597,-0.839],[0,-0.36],[-0.537,-0.539],[-0.477,-1.318],[0,-1.199],[0,0],[-0.357,0.359],[-0.597,0],[-1.073,0.599],[-0.835,0.479],[0,0],[0.418,0.419],[0.716,0.359],[0,0],[0.835,-0.241],[0,0],[0.299,-0.299],[0.536,0.539],[0,0.838],[-1.193,0],[-0.298,-0.3],[-0.715,-0.719],[-1.194,0],[0,0],[-0.716,-0.24],[-1.075,0],[0,0],[-0.537,-0.539],[0.358,-0.36],[0,-0.839],[-0.716,0],[0,0],[0.238,-1.079],[-1.073,-1.798],[0,0],[-0.298,0.3],[0,-0.239],[-0.596,0.6],[0,0],[0,0.48],[0,0.359],[-1.074,0.72],[-0.656,0.66],[0,0],[-0.239,-0.6],[0.358,-0.6],[-0.478,0],[0,0],[0,0],[0,-0.599],[-0.358,-1.079],[-0.002,-0.007],[-0.176,0.457],[0,0.152],[0,0],[0,0],[-0.835,-0.36],[-0.088,-0.109],[0,11.336]],"o":[[-0.124,-0.059],[-0.314,-0.105],[-0.237,0.238],[0.052,0.475],[0.185,0.185],[-0.131,-0.133],[-0.238,-0.238],[-0.263,0.106],[-0.21,0],[0,-0.528],[-0.053,0.159],[0,0],[0.131,0.132],[0.315,0.158],[0.053,0.371],[-0.105,0.212],[-0.158,-0.158],[0.106,-0.317],[-0.052,-0.159],[0,0],[0.104,-0.317],[-0.157,-0.159],[-0.368,0],[-0.21,0.212],[0,0.528],[-0.211,0.212],[0.211,0.211],[-0.237,0.238],[0.341,0.343],[-0.108,0.271],[-2.864,-1.466],[-0.919,-0.435],[-2.648,-0.325],[-0.053,-0.325],[-0.053,-0.434],[-0.919,-0.272],[-1.081,-0.271],[-0.378,-0.761],[0.216,-0.869],[0.433,-0.434],[1.135,-0.435],[1.134,0],[0.324,-0.108],[-0.054,-0.326],[-0.432,0],[-1.189,-0.108],[-0.703,0.109],[-1.027,-0.109],[-0.485,0.217],[-0.135,0.136],[-0.162,0.543],[-0.188,0.19],[-0.378,0.597],[-0.324,0.814],[0.756,0.326],[-0.594,0.108],[0.378,0.706],[0.271,1.249],[-0.352,0.353],[-0.378,-0.815],[0.053,0.38],[-0.216,0.217],[-0.27,-0.272],[-0.432,0.218],[-0.054,0.217],[-0.108,0.109],[-0.378,-0.109],[-0.162,0.271],[0.433,0.163],[-0.189,0.19],[-0.595,-0.162],[-0.756,-0.434],[0,-0.435],[0.162,-0.815],[-0.216,-0.435],[0.433,0],[0.649,0.163],[0.918,0.326],[0.486,0],[0.324,-0.434],[0.108,-0.489],[-0.243,-0.245],[-0.648,-0.38],[-0.27,-0.109],[-0.27,0],[-0.135,-0.136],[-0.811,0.109],[-0.324,-0.055],[0.324,-0.163],[0.297,-0.299],[-0.324,-0.325],[-0.703,0],[-0.324,-0.164],[-0.405,0.407],[-0.215,0.055],[-0.271,-0.054],[-0.323,0],[-0.378,0.217],[-0.864,0.489],[-1.081,0.163],[-1.189,0.434],[-0.621,0.625],[-0.675,0.679],[-0.432,0.76],[-0.405,0.408],[-0.541,0.326],[-0.27,0.652],[0.054,0.76],[0.594,0.108],[0.918,-0.218],[0.243,-0.245],[0.648,0.163],[0.054,0.598],[0.485,0.489],[0.271,0.706],[0.54,0],[0.162,-0.326],[0.757,-0.162],[0.486,-0.489],[0.055,-1.249],[0.107,-0.76],[0.486,-0.325],[0.108,-0.489],[0,-0.271],[-0.162,-0.163],[-0.379,-0.109],[-0.297,-0.299],[0,-0.489],[0.54,-0.923],[0.595,-0.38],[0.486,-0.108],[-0.216,-0.326],[0.324,-0.543],[0.864,-0.272],[0.54,0.327],[0.108,0.435],[-0.324,0.325],[-0.459,0.461],[-0.649,0.652],[-0.19,0.19],[0.216,0.435],[0.324,0.163],[0.702,0.434],[0.811,-0.054],[0.811,-0.163],[0.378,-0.163],[0.324,0.326],[0,0.435],[-0.324,0],[-0.649,0],[-0.648,0],[-0.136,0.136],[0.216,0.326],[0.595,0.108],[-0.107,0.488],[-0.324,0.162],[-0.135,-0.136],[-0.189,0.19],[-0.108,0.597],[0.053,0.217],[-0.432,0],[-0.162,0.38],[-0.378,0],[-0.135,-0.136],[-0.162,0.163],[-0.27,0.272],[-0.54,0.163],[0.054,0.434],[-0.216,-0.218],[-0.107,-0.109],[-0.324,0],[-0.27,0.108],[-0.108,-0.489],[-0.216,-0.217],[-0.054,-0.434],[0.243,-0.244],[0.109,-0.271],[0.053,-0.326],[-0.135,0.136],[-0.541,0.109],[-0.378,0.488],[-0.054,0.651],[0.297,0.299],[0.108,0.326],[-0.27,0.543],[-0.486,-0.109],[-0.324,0],[-0.595,0.163],[-0.323,0.435],[-0.216,0.543],[-0.757,0.272],[-0.216,0.326],[-0.162,0.271],[-0.27,0],[-0.108,0.272],[-0.162,-0.163],[-0.27,0.055],[0.162,0.325],[-0.121,0.122],[-0.324,-0.108],[-0.324,0.109],[-0.216,0.325],[0,0.435],[0.595,0.435],[0.54,0],[0.217,0.651],[0.298,0.299],[-0.054,0.651],[-0.486,0.326],[-1.08,0],[-0.648,-0.217],[-0.378,0.109],[-0.216,0.217],[0,0],[0.27,0.923],[0,1.086],[-0.163,0.434],[0.594,0.706],[0.108,0.272],[0.324,0.326],[0.486,0.108],[0.189,-0.19],[0.433,0.054],[0,-0.435],[0.756,-0.435],[0.216,-0.435],[-0.108,-0.489],[0.27,-0.814],[0.649,-0.271],[0.325,-0.543],[0,-1.086],[0.27,-0.272],[0.541,0],[0.757,-0.598],[0.486,0],[0.432,0.652],[0.297,0.298],[0.594,0.435],[0.324,0.326],[0.405,0.407],[0.055,0.543],[0,0.164],[0.378,0],[0.217,-0.543],[0.162,-0.488],[0,-0.272],[-0.459,-0.462],[0.162,-0.38],[0.433,0.055],[0.163,0.272],[0,0],[-0.298,-0.299],[-0.595,-0.325],[-0.513,-0.515],[-0.595,-0.597],[-0.27,-0.651],[-0.702,-0.543],[0.054,-1.032],[0.81,-0.163],[0.108,0.271],[0.325,-0.326],[0.27,0.597],[0.217,0.489],[0.973,0.217],[0.431,0.435],[0.107,0.978],[0.432,0.109],[0.053,0.597],[0.486,0.272],[-0.054,0.543],[0.703,0.163],[0.217,0.217],[0.162,-0.272],[0.108,-0.652],[0.215,-0.217],[-0.378,-0.101],[0.215,-0.326],[-0.378,-0.488],[0.108,-0.217],[0.433,0.054],[0.054,-0.38],[1.026,0],[0.377,0.38],[0.703,-0.488],[0.54,0],[-0.433,-0.435],[-0.324,-0.489],[0.593,-0.597],[0.162,-0.326],[0.649,-0.163],[-0.162,-0.706],[0.593,-0.38],[0.702,0.217],[0.406,0.407],[0.216,0.435],[0.054,0.38],[0.432,0.271],[0.216,-0.218],[0.27,-0.271],[-0.595,-0.38],[0.162,-0.38],[1.297,-0.217],[0.593,0.218],[-0.269,0.271],[-0.379,0],[0,0.489],[-0.053,0.217],[0.487,0.163],[0.486,0.326],[0.162,1.576],[-0.648,0.217],[-1.188,-0.272],[-0.715,-0.24],[-0.298,0.299],[-0.477,0],[-0.716,0.12],[-0.477,0.48],[0.478,0],[0.24,0.839],[0.835,0],[0.954,0.6],[1.67,-0.72],[0.477,0],[0,1.079],[-0.477,1.44],[-0.954,0.598],[-1.073,-0.24],[-0.597,0.6],[-1.193,-0.24],[-0.655,-0.659],[-1.073,0.6],[0,0.6],[-1.192,-0.361],[-0.715,-0.719],[-1.551,-0.359],[-0.358,-1.439],[0.358,-0.599],[-0.716,0],[-1.193,0.36],[-1.073,0],[-0.834,0.48],[-1.074,0],[-0.357,0.359],[-1.312,1.32],[-0.238,0.48],[-0.358,1.798],[-1.073,1.08],[-0.238,1.078],[0,1.08],[0.357,2.278],[0,0.959],[1.073,1.439],[0.835,0.84],[0.477,0],[1.312,0],[1.193,0],[1.193,0.361],[1.67,-0.24],[0.656,0.659],[1.431,0],[1.431,1.679],[0,0.959],[1.551,1.799],[0.358,0.959],[-0.239,1.318],[0,0.6],[0.835,1.798],[0.358,1.558],[1.311,0.36],[0.596,1.079],[0.478,0.479],[1.073,0],[1.669,-0.719],[0.954,-0.96],[0,0],[0.656,-0.659],[0,-0.839],[0.776,-0.779],[1.133,-1.139],[0,-0.84],[0,-0.839],[0,-0.479],[0.835,-1.319],[1.074,-1.079],[1.312,-1.559],[0.239,-0.84],[0,0],[-0.596,0],[-0.596,0.599],[-0.417,-0.42],[-0.418,-0.42],[-0.477,0],[-0.358,-0.72],[-0.238,-0.72],[-0.716,-0.72],[0,-0.84],[-0.537,-0.54],[-0.239,-0.599],[-0.477,-0.719],[0.358,0],[0,0],[0,0],[0.478,0.48],[0.596,0.839],[0,0.359],[0.536,0.54],[0.478,1.319],[0,1.199],[0,0],[0.358,-0.36],[0.596,0],[1.074,-0.599],[0.835,-0.48],[0,0],[-0.417,-0.42],[-0.716,-0.36],[0,0],[-0.835,0.239],[0,0],[-0.298,0.3],[-0.537,-0.54],[0,-0.84],[1.193,0],[0.298,0.299],[0.716,0.719],[1.192,0],[0,0],[0.716,0.239],[1.073,0],[0,0],[0.537,0.54],[-0.358,0.36],[0,0.84],[0.714,0],[0,0],[-0.238,1.08],[1.073,1.799],[0,0],[0.298,-0.299],[0,0.24],[0.597,-0.6],[0,0],[0,-0.48],[0,-0.36],[1.073,-0.72],[0.656,-0.659],[0,0],[0.239,0.6],[-0.357,0.599],[0.476,0],[0,0],[0,1.079],[0,0.6],[0.002,0.007],[0.181,-0.455],[-0.098,-0.522],[0,0],[0,-0.838],[0,0],[0.13,0.056],[3.184,-10.283],[0,-28.068]],"v":[[51.736,-81.983],[51.435,-82.115],[50.49,-82.062],[50.542,-81.111],[51.382,-80.319],[50.647,-79.896],[49.702,-80.477],[48.283,-80.319],[48.387,-79.051],[46.968,-80.425],[46.496,-81.534],[45.498,-81.111],[45.445,-80.214],[46.443,-79.262],[46.758,-77.467],[46.338,-75.671],[45.235,-75.988],[45.129,-77.942],[44.551,-79.685],[43.658,-80.583],[43.816,-82.485],[43.132,-83.488],[41.556,-84.016],[40.294,-84.546],[40.084,-82.643],[38.824,-82.168],[39.191,-80.847],[39.402,-79.844],[40.663,-77.889],[41.251,-76.796],[37.74,-78.153],[35.525,-79.402],[32.121,-79.837],[31.634,-81.033],[31.256,-82.335],[29.204,-83.312],[27.205,-84.073],[26.07,-85.81],[26.232,-87.711],[26.772,-89.178],[28.555,-90.318],[35.579,-91.404],[38.226,-91.676],[37.902,-92.436],[36.119,-92.925],[33.04,-93.251],[30.338,-93.142],[27.313,-92.979],[25.313,-92.654],[24.233,-91.947],[23.531,-90.861],[22.936,-90.102],[22.18,-88.797],[20.559,-86.516],[22.504,-84.943],[20.559,-84.344],[18.668,-83.149],[19.046,-80.651],[16.832,-78.589],[13.86,-78.153],[12.996,-77.61],[14.4,-75.492],[12.455,-76.253],[9.267,-75.927],[7.539,-74.623],[7.376,-72.615],[3.756,-74.514],[2.676,-73.754],[3.918,-72.559],[4.567,-71.365],[2.352,-71.528],[-0.133,-72.777],[-0.673,-73.809],[-0.62,-75.709],[-1.376,-77.012],[-1.268,-77.882],[0.461,-77.61],[2.623,-76.741],[5.972,-76.198],[8.079,-76.633],[8.727,-78.099],[7.863,-79.999],[4.135,-81.466],[-1.268,-83.909],[-3.591,-84.073],[-3.321,-85.159],[-5.806,-85.159],[-8.183,-85.43],[-8.237,-86.353],[-6.724,-86.68],[-7.697,-87.44],[-10.074,-87.386],[-10.615,-88.471],[-12.181,-87.766],[-13.208,-87.82],[-14.342,-87.386],[-14.451,-88.526],[-15.801,-88.201],[-17.53,-87.06],[-19.907,-86.734],[-22.878,-85.81],[-27.039,-83.421],[-31.199,-79.783],[-33.414,-76.253],[-35.899,-73.483],[-42.76,-68.812],[-44.597,-67.346],[-44.597,-60.123],[-42.922,-58.439],[-40.491,-58.439],[-37.79,-61.643],[-36.277,-61.915],[-35.737,-59.906],[-35.358,-57.679],[-33.198,-54.095],[-32.441,-52.574],[-31.469,-52.954],[-29.686,-54.421],[-27.633,-55.344],[-27.309,-57.572],[-27.092,-59.526],[-25.417,-61.318],[-23.959,-62.512],[-24.175,-63.219],[-24.769,-63.653],[-25.742,-64.141],[-26.823,-65.229],[-27.254,-66.531],[-26.174,-68.975],[-23.689,-71.528],[-20.285,-72.94],[-20.393,-73.754],[-19.961,-75.655],[-17.421,-76.958],[-15.044,-76.633],[-13.964,-74.895],[-14.774,-74.352],[-16.017,-73.048],[-18.34,-71.039],[-20.393,-69.681],[-20.177,-68.921],[-19.637,-64.686],[-18.178,-63.598],[-15.369,-63.49],[-11.911,-64.25],[-8.994,-64.74],[-8.021,-63.816],[-6.67,-62.567],[-9.263,-62.35],[-11.046,-61.806],[-14.126,-61.97],[-16.395,-61.535],[-16.233,-60.069],[-14.991,-59.199],[-14.991,-57.408],[-15.855,-55.995],[-17.476,-57.354],[-19.205,-57.679],[-19.961,-55.725],[-20.177,-52.031],[-21.528,-51.434],[-22.987,-50.565],[-24.067,-50.186],[-25.148,-50.945],[-26.499,-50.729],[-28.119,-49.859],[-30.172,-49.37],[-30.496,-48.229],[-31.523,-48.501],[-32.604,-49.859],[-34.116,-50.076],[-35.845,-48.936],[-36.709,-50.24],[-38.06,-50.783],[-38.222,-52.194],[-37.304,-53.552],[-36.602,-54.638],[-37.195,-56.158],[-37.574,-57.299],[-38.924,-56.757],[-40.545,-55.615],[-41.031,-53.824],[-40.275,-52.466],[-39.681,-51.162],[-40.113,-48.827],[-41.788,-48.393],[-42.977,-47.632],[-45.299,-47.199],[-46.813,-45.677],[-47.569,-43.342],[-50.216,-42.311],[-51.513,-41.604],[-51.891,-39.594],[-53.404,-39.486],[-53.728,-38.4],[-55.187,-38.237],[-56.429,-39.052],[-56.699,-38.182],[-56.916,-36.689],[-58.266,-36.608],[-59.887,-36.608],[-61.021,-36.337],[-61.129,-35.359],[-59.887,-34.327],[-57.942,-34.11],[-57.078,-32.48],[-55.781,-31.177],[-55.781,-28.408],[-57.078,-25.149],[-59.725,-24.931],[-63.345,-25.529],[-65.56,-25.04],[-66.856,-25.203],[-68.423,-24.443],[-68.153,-23.085],[-68.207,-18.306],[-68.963,-16.188],[-68.369,-14.667],[-68.045,-11.844],[-64.371,-11.41],[-63.128,-10.16],[-61.994,-10.867],[-58.645,-10.811],[-57.564,-11.464],[-56.375,-12.821],[-54.484,-14.776],[-54.484,-16.405],[-53.782,-18.904],[-51.513,-20.75],[-49.082,-22.108],[-49.514,-24.117],[-47.947,-25.583],[-45.354,-24.714],[-43.841,-25.094],[-39.627,-27.375],[-37.844,-25.529],[-35.575,-22.596],[-31.793,-20.153],[-30.658,-18.306],[-29.146,-17.22],[-28.66,-15.591],[-28.984,-13.636],[-28.227,-13.311],[-27.471,-13.908],[-27.147,-15.211],[-26.552,-16.405],[-27.201,-17.274],[-27.254,-18.74],[-25.959,-18.632],[-25.04,-17.546],[-24.284,-18.089],[-24.769,-19.066],[-26.876,-20.153],[-28.713,-21.565],[-31.09,-23.303],[-32.063,-25.258],[-34.224,-26.669],[-34.386,-29.059],[-32.711,-30.688],[-32.063,-29.493],[-31.037,-29.602],[-29.848,-28.354],[-28.984,-25.692],[-26.661,-24.66],[-22.932,-21.945],[-22.608,-19.555],[-21.96,-16.949],[-20.879,-16.079],[-19.475,-14.233],[-19.961,-12.658],[-18.665,-11.3],[-17.476,-10.594],[-16.935,-11.083],[-16.503,-12.929],[-15.422,-13.636],[-16.288,-14.551],[-16.881,-15.862],[-17.314,-17.383],[-17.692,-18.849],[-16.666,-18.36],[-16.017,-19.339],[-13.045,-19.772],[-11.586,-18.632],[-10.128,-19.61],[-8.399,-20.098],[-7.588,-20.858],[-9.534,-22.759],[-9.209,-24.823],[-8.021,-26.832],[-6.617,-28.354],[-6.508,-29.711],[-5.049,-32.046],[-2.186,-32.372],[-1.7,-31.177],[-0.241,-30.634],[-0.889,-29.167],[0.137,-28.19],[1.272,-27.701],[3.271,-29.059],[1.974,-29.928],[1.866,-31.829],[5.053,-32.752],[8.62,-33.404],[7.214,-31.938],[6.783,-30.852],[6.404,-29.548],[5.593,-28.733],[6.512,-28.027],[11.104,-24.497],[12.779,-22.108],[10.564,-19.936],[5.972,-19.882],[2.043,-22.579],[-1.774,-21.62],[-4.994,-20.421],[-6.425,-19.104],[-10.481,-17.904],[-10.481,-16.945],[-10.243,-12.868],[-6.187,-9.751],[-2.966,-10.59],[0.85,-10.35],[3.713,-11.189],[4.071,-8.552],[3.117,-3.277],[0.135,-0.158],[-4.279,-0.279],[-7.26,0.201],[-11.554,-0.039],[-15.372,-1.598],[-20.501,-2.438],[-22.05,1.28],[-25.152,0.921],[-29.208,-1.358],[-33.024,-3.158],[-37.795,-5.554],[-36.603,-8.552],[-38.153,-11.91],[-43.043,-11.549],[-49.723,-10.83],[-54.375,-9.751],[-58.549,-8.192],[-63.917,-8.791],[-65.706,-5.436],[-69.165,-2.798],[-70.119,2.359],[-73.22,4.635],[-76.202,9.913],[-79.542,16.266],[-78.11,24.42],[-79.065,28.976],[-74.651,34.37],[-71.073,40.725],[-66.183,44.922],[-63.678,45.882],[-60.1,44.802],[-56.402,45.521],[-51.631,43.603],[-45.906,44.323],[-42.805,46.841],[-38.511,48.159],[-38.988,55.953],[-34.933,59.909],[-32.189,67.582],[-32.547,70.699],[-34.694,75.616],[-32.905,79.332],[-30.4,85.327],[-27.895,87.844],[-25.629,90.962],[-23.244,92.88],[-17.637,92.16],[-11.912,89.763],[-7.379,86.286],[-5.829,83.409],[-2.37,81.729],[-3.205,78.612],[-0.581,75.854],[4.667,72.617],[6.099,67.703],[5.263,63.385],[5.383,60.388],[7.649,56.792],[13.732,50.557],[19.458,44.323],[24.109,36.769],[24.467,34.01],[20.054,35.57],[16.595,36.41],[14.329,35.689],[13.255,33.532],[10.273,29.814],[8.484,28.736],[7.172,23.939],[5.025,22.861],[4.548,17.226],[2.64,14.948],[0.97,10.392],[-1.416,5.236],[-1.416,3.558],[0.97,5.956],[1.924,4.038],[4.309,9.193],[6.099,12.79],[8.842,17.586],[8.842,19.624],[12.42,24.898],[13.852,28.976],[14.209,32.691],[15.879,31.614],[19.816,30.415],[22.797,28.495],[27.21,26.458],[36.157,16.027],[36.633,13.989],[33.89,11.711],[32.458,10.392],[29.119,12.551],[26.853,12.43],[25.779,10.991],[24.229,10.392],[21.843,2.839],[24.109,1.519],[25.541,2.839],[27.449,5.836],[30.074,7.394],[33.89,6.915],[35.56,9.312],[39.616,10.152],[46.175,9.312],[47.249,12.189],[49.754,13.629],[48.442,14.708],[49.874,16.385],[52.378,14.468],[51.901,21.301],[52.974,27.176],[54.763,34.491],[56.791,32.092],[56.791,35.57],[58.103,35.57],[57.268,30.535],[57.865,28.495],[58.938,23.461],[62.159,19.743],[65.737,13.148],[69.434,11.111],[70.508,14.948],[70.269,18.545],[70.747,19.984],[72.178,18.185],[72.178,21.782],[70.747,27.057],[71.701,31.853],[71.706,31.872],[72.243,30.505],[72.058,29.336],[72.058,26.098],[73.251,22.141],[74.325,23.34],[74.643,23.601],[79.542,-8.951]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[249.445,212.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":6,"cix":2,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.076,-0.152],[-0.566,0.228],[-0.792,-0.455],[-0.792,0.796],[-1.132,0.683],[-1.019,0.683],[0,0.569],[0.679,0.341],[0,0],[0.202,-0.05],[0.378,-0.077],[0.152,-0.711],[0.48,0.025],[0.151,-0.356],[0.177,0],[0,0.127],[-0.101,0.305],[0.202,0.076],[0.227,-0.102],[0.303,0.076],[0.151,-0.077],[0.051,-0.432],[0,-0.254],[-0.303,-0.076],[-0.253,0.153],[-0.177,-0.076],[0,-0.102],[0.127,0],[0.05,-0.127],[-0.278,0.076],[-0.202,-0.255]],"o":[[0.076,0.152],[0.566,-0.227],[0.792,0.455],[0.793,-0.797],[1.132,-0.682],[1.019,-0.682],[0,-0.569],[-0.679,-0.341],[0,0],[-0.203,0.051],[-0.379,0.076],[-0.151,0.711],[-0.48,-0.026],[-0.152,0.355],[-0.176,0],[0,-0.127],[0.101,-0.304],[-0.202,-0.076],[-0.227,0.102],[-0.303,-0.076],[-0.152,0.076],[-0.05,0.432],[0,0.254],[0.303,0.076],[0.252,-0.152],[0.177,0.076],[0,0.102],[-0.126,0],[-0.051,0.127],[0.278,-0.076],[0.202,0.254]],"v":[[-4.595,2.448],[-3.507,2.389],[-2.149,3.413],[-0.112,2.617],[2.718,1.365],[5.321,-0.228],[6.793,-2.503],[5.208,-3.527],[3.51,-3.755],[2.049,-3.317],[0.887,-3.189],[0.179,-2.174],[-1.437,-1.818],[-2.574,-1.386],[-3.282,-0.777],[-3.559,-1.285],[-3.155,-2.377],[-3.787,-2.834],[-4.671,-2.834],[-5.328,-2.351],[-6.035,-2.554],[-6.187,-1.488],[-6.793,-1.006],[-6.035,-0.574],[-5.075,-0.879],[-4.368,-0.625],[-4.57,0.01],[-5.606,0.365],[-6.136,0.645],[-5.353,0.848],[-4.671,1.331]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[170.849,140.674],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.251,0.378],[0.335,0],[0.125,0.379],[0.126,0.337],[0.376,0.378],[-0.052,0.505],[0.292,0.042],[0.084,0.084],[-0.146,0.147],[-0.167,0.169],[-0.188,0.189],[0.083,0.168],[0.168,0.042],[0.251,0.126],[-0.272,0.273],[-0.085,0.178],[0,0],[0.167,0],[0.168,-0.042],[0.083,-0.63],[0.229,-0.231],[-0.125,-0.253],[-0.041,-0.253],[-0.083,-0.336],[-0.167,-0.252],[-0.376,-0.21],[0.042,-0.673],[0,-0.504],[-0.418,-0.042],[-0.251,0],[0.125,-0.379],[-0.293,-0.294],[0.167,-0.421],[0.126,0],[0.083,-0.252],[-0.377,-0.378],[0.293,-0.378],[0,-0.211],[-0.46,-0.085],[0.104,-0.105],[0.168,0.042],[0.126,-0.21],[0.084,-0.21],[-0.251,-0.252],[-0.67,0.168],[-0.083,0.21],[-0.377,-0.085],[-0.168,0.252],[-0.334,-0.043],[-0.377,0],[-0.419,-0.084],[0,0.168],[0.334,0.126],[-0.189,0.189]],"o":[[-0.251,-0.378],[-0.334,0],[-0.126,-0.378],[-0.125,-0.336],[-0.377,-0.378],[0.051,-0.504],[-0.293,-0.042],[-0.083,-0.084],[0.147,-0.147],[0.168,-0.168],[0.188,-0.19],[-0.084,-0.168],[-0.287,-0.072],[-0.251,-0.127],[0.209,-0.211],[0.025,-0.052],[0.413,-0.729],[-0.167,0],[-0.167,0.042],[-0.084,0.631],[-0.23,0.232],[0.126,0.252],[0.042,0.252],[0.084,0.337],[0.168,0.253],[0.377,0.21],[-0.042,0.673],[0,0.505],[0.419,0.042],[0.251,0],[-0.126,0.378],[0.293,0.294],[-0.167,0.42],[-0.125,0],[-0.084,0.253],[0.376,0.379],[-0.293,0.379],[0,0.21],[0.46,0.084],[-0.105,0.106],[-0.167,-0.042],[-0.125,0.211],[-0.083,0.21],[0.251,0.253],[0.669,-0.169],[0.084,-0.21],[0.376,0.084],[0.167,-0.252],[0.335,0.042],[0.376,0],[0.418,0.084],[0,-0.169],[-0.335,-0.126],[0.188,-0.189]],"v":[[5.459,3.581],[4.161,3.329],[3.326,2.782],[2.949,1.268],[1.568,-0.708],[0.784,-2.39],[-0.062,-3.189],[-1.527,-3.525],[-1.192,-4.24],[-0.23,-4.871],[0.188,-5.879],[0.773,-6.931],[-0.021,-7.141],[-2.908,-7.351],[-1.904,-8.57],[-1.399,-9.369],[-1.359,-9.454],[-2.699,-9.748],[-3.786,-9.664],[-4.329,-8.613],[-5.249,-7.604],[-5.585,-6.594],[-5.208,-5.879],[-5.041,-5.039],[-4.999,-4.114],[-3.995,-3.735],[-3.911,-2.642],[-4.078,-1.549],[-3.535,-0.918],[-2.154,-1.086],[-2.322,-0.077],[-1.652,1.058],[-1.694,2.446],[-3.242,2.488],[-3.827,2.908],[-3.326,3.959],[-3.702,5.431],[-4.664,6.23],[-2.656,6.861],[-2.113,7.491],[-3.535,7.66],[-3.953,8.584],[-5.041,9.173],[-4.873,9.93],[-3.326,9.636],[-2.531,8.963],[-1.317,8.753],[-0.355,8.206],[0.857,7.618],[2.029,8.122],[4.372,7.744],[5.417,6.987],[4.12,6.692],[5.124,5.137]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.416,162.531],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.042,0.476],[10.285,-12.495],[-0.05,-0.5],[0.227,-0.797],[-0.565,-0.113],[-0.453,-0.113],[0.792,-0.455],[0.453,-0.455],[-0.113,-1.365],[-0.114,-1.024],[-0.906,-0.342],[-0.566,0],[-0.34,1.252],[0,0],[-1.019,0.228],[-0.566,0.228],[-0.567,0.797],[-0.68,0.683],[-0.679,0.682],[-0.679,0.683],[0,0.91],[-0.114,1.252],[0,0],[-0.34,0.57],[0.679,0.341],[-0.34,0.342],[-0.397,0.398],[0.226,0.227],[-0.736,0.74],[-0.679,0.227],[-0.566,0],[0.905,0],[0.906,-0.626],[0.679,0],[0,0],[-0.509,0.512]],"o":[[-14.8,6.914],[0.118,0.526],[0.113,1.138],[-0.226,0.796],[0.566,0.114],[0.452,0.114],[-0.793,0.455],[-0.452,0.455],[0.113,1.365],[0.113,1.024],[0.905,0.341],[0.566,0],[0.339,-1.251],[0,0],[1.019,-0.227],[0.566,-0.227],[0.566,-0.796],[0.679,-0.683],[0.679,-0.683],[0.679,-0.682],[0,-0.91],[0.113,-1.251],[0,0],[0.34,-0.568],[-0.679,-0.341],[0.339,-0.341],[0.396,-0.398],[-0.226,-0.228],[0.736,-0.739],[0.679,-0.228],[0.566,0],[-0.906,0],[-0.905,0.626],[-0.679,0],[0,0],[0.28,-0.282]],"v":[[14.18,-26.157],[-23.904,3.405],[-23.6,4.995],[-24.165,7.271],[-24.279,9.432],[-21.674,8.977],[-23.939,11.48],[-25.523,13.87],[-25.863,17.852],[-25.184,22.403],[-22.807,25.816],[-20.09,26.157],[-18.506,22.971],[-14.658,13.983],[-12.281,12.504],[-7.188,9.546],[-4.471,6.474],[-0.057,4.654],[5.262,0.9],[8.658,-1.49],[8.884,-4.106],[9.904,-6.837],[12.281,-8.999],[13.751,-11.047],[13.298,-13.208],[13.072,-14.915],[15.337,-16.621],[13.751,-17.645],[15.109,-19.466],[19.751,-22.651],[25.41,-25.211],[24.164,-25.95],[19.41,-25.211],[16.354,-24.358],[13.979,-23.561],[13.751,-24.813]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.481999984442,0.779999976065,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.155,130.103],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":4,"cix":2,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-60.423],[60.112,0],[0,60.423],[-60.11,0]],"o":[[0,60.423],[-60.11,0],[0,-60.423],[60.112,0]],"v":[[108.84,0],[-0.001,109.406],[-108.84,0],[-0.001,-109.406]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.051000000449,0.340999977261,0.670999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.147,203.209],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.496,10.504],[-2.392,-10.504],[-9.495,-6.484],[-2.823,-2.401],[-4.845,-1.258],[1.825,2.824],[0.518,3.563],[5.262,6.466],[4.033,7.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.670999983245,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[282.776,302.485],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-9.496,-4.475],[-2.824,-0.392],[-4.846,0.753],[1.824,4.834],[0.518,5.572],[5.261,8.475],[4.032,9.171],[9.495,12.513],[9.441,6.109],[8.214,6.805],[8.167,1.244],[6.861,1.983],[6.796,-5.836],[4.775,-4.693],[4.71,-12.514]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090000002992,0.788000009574,0.008000000785,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[282.776,300.475],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":4,"cix":2,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-3.833,11.759],[4.551,-8.924],[-2.442,-11.759],[-1.566,-4.58],[-3.555,-5.387],[-2.679,1.79],[-3.965,1.269],[-3.342,6.372],[-4.551,5.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.670999983245,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.517,311.743],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":4,"cix":2,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-5.939,-11.759],[-5.064,-4.58],[-7.053,-5.387],[-6.176,1.79],[-7.462,1.268],[-6.839,6.372],[-8.048,5.882],[-7.331,11.759],[-2.723,8.04],[-3.932,7.55],[0.069,4.321],[-1.217,3.8],[4.41,-0.74],[2.419,-1.547],[8.048,-6.089]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090000002992,0.788000009574,0.008000000785,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[180.014,311.743],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":4,"cix":2,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-6.057,14.554],[6.378,-10.349],[-2.042,-14.554],[-1.65,-5.543],[-4.045,-6.739],[-3.653,2.269],[-5.202,1.496],[-4.922,7.903],[-6.378,7.176]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.670999983245,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[166.017,309.236],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":4,"cix":2,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-6.252,-14.554],[-5.859,-5.542],[-8.255,-6.739],[-7.863,2.269],[-9.411,1.497],[-9.132,7.903],[-10.589,7.176],[-10.268,14.554],[-4.176,10.378],[-5.632,9.651],[-0.343,6.025],[-1.891,5.252],[5.545,0.153],[3.15,-1.043],[10.589,-6.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090000002992,0.788000009574,0.008000000785,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[170.228,309.236],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":4,"cix":2,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.814,8.682],[-7.943,-8.681],[-13.814,-1.325],[-4.918,0.174],[-6.589,2.267],[2.302,3.765],[1.223,5.118],[7.546,6.183],[6.531,7.454]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.670999983245,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.184,278.988],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.814,2.353],[-4.918,3.852],[-6.589,5.945],[2.302,7.443],[1.223,8.795],[7.546,9.861],[6.531,11.132],[13.814,12.36],[11.001,5.531],[9.987,6.802],[7.545,0.873],[6.465,2.226],[3.033,-6.112],[1.363,-4.019],[-2.072,-12.36]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090000002992,0.788000009574,0.008000000785,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.184,275.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":4,"cix":2,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.418,-9.441],[7.033,9.442],[13.418,2.527],[4.654,0.392],[6.47,-1.575],[-2.29,-3.709],[-1.116,-4.981],[-7.347,-6.498],[-6.243,-7.693]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.670999983245,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.631,128.631],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":4,"cix":2,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.418,-0.931],[4.654,-3.066],[6.47,-5.033],[-2.29,-7.166],[-1.116,-8.438],[-7.347,-9.955],[-6.243,-11.151],[-13.418,-12.899],[-11.104,-5.885],[-10,-7.081],[-7.992,-0.991],[-6.818,-2.263],[-3.994,6.3],[-2.177,4.333],[0.648,12.899]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090000002992,0.788000009574,0.008000000785,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.631,132.088],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":4,"cix":2,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-18.781,-14.691],[8.846,14.691],[18.781,5.35],[6.333,1.368],[9.16,-1.289],[-3.285,-5.269],[-1.458,-6.986],[-10.307,-9.816],[-8.59,-11.432]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.670999983245,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[140.776,111.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":4,"cix":2,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[18.782,0.678],[6.333,-3.303],[9.16,-5.96],[-3.285,-9.939],[-1.458,-11.658],[-10.307,-14.488],[-8.589,-16.102],[-18.781,-19.363],[-16.156,-8.989],[-14.438,-10.605],[-12.156,-1.597],[-10.329,-3.314],[-7.124,9.35],[-4.296,6.692],[-1.089,19.363]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090000002992,0.788000009574,0.008000000785,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[140.776,115.962],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":4,"cix":2,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.473,2.159],[0.281,-0.053],[2.266,3.786],[-0.345,-1.85],[-4.577,0.852]],"o":[[-0.274,0.065],[-5.764,1.072],[-1.427,1.317],[0.574,3.086],[3.234,-0.602]],"v":[[7.973,-0.129],[7.141,0.051],[-6.302,-4.736],[-7.866,0.217],[-0.062,4.545]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.28,193.918],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":4,"cix":2,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.577,-0.853],[0.575,3.086],[-4.578,0.852],[-0.574,-3.086]],"o":[[-4.577,0.852],[-0.575,-3.086],[4.577,-0.852],[0.576,3.085]],"v":[[-0.484,5.587],[-8.288,1.259],[-2.564,-5.587],[8.288,-1.827]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.702,192.875],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":4,"cix":2,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.663,1.391],[-3.919,0.021],[3.664,-1.391],[3.919,-0.02]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[331.293,194.007],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":4,"cix":2,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.207,1.606],[-0.046,-0.295],[4.024,-2.245],[-1.942,0.301],[0.744,4.805]],"o":[[0.06,0.288],[0.937,6.051],[1.33,1.531],[3.239,-0.502],[-0.526,-3.395]],"v":[[0.249,-8.311],[0.41,-7.437],[-5.014,6.443],[0.106,8.233],[4.872,0.225]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[215.704,83.975],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":4,"cix":2,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.744,-4.805],[3.24,-0.502],[0.743,4.805],[-3.24,0.501]],"o":[[0.744,4.805],[-3.238,0.501],[-0.745,-4.805],[3.239,-0.502]],"v":[[5.865,0.693],[1.099,8.701],[-5.864,2.509],[-1.594,-8.7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[214.711,83.507],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":4,"cix":2,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.336,3.868],[-0.103,4.092],[-1.336,-3.869],[0.104,-4.092]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[215.673,92.329],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":4,"cix":2,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.26,3.274],[0.08,-0.428],[6.617,-1.146],[-2.815,-0.524],[-1.296,6.967]],"o":[[-0.058,0.425],[-1.632,8.773],[1.089,2.748],[4.697,0.873],[0.915,-4.923]],"v":[[5.882,-11.423],[5.681,-10.143],[-8.476,6.328],[-2.299,11.261],[8.12,2.547]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[232.538,81.807],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":4,"cix":2,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.296,-6.967],[4.696,0.874],[-1.295,6.967],[-4.696,-0.873]],"o":[[-1.296,6.967],[-4.696,-0.873],[1.296,-6.967],[4.697,0.873]],"v":[[8.504,3.902],[-1.915,12.615],[-8.505,0.739],[2.777,-12.616]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[232.155,80.452],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":4,"cix":2,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.029,5.965],[-2.117,5.578],[0.03,-5.965],[2.117,-5.576]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[229.993,93.169],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":4,"cix":2,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.029,-3.263],[-0.256,0.25],[-4.982,-2.353],[1.642,1.679],[4.158,-4.063]],"o":[[0.239,-0.259],[5.235,-5.117],[0.565,-2.357],[-2.739,-2.803],[-2.938,2.872]],"v":[[-9.1,6.738],[-8.361,5.974],[8.912,1.602],[7.094,-4.622],[-4.009,-3.693]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.579,291.88],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":4,"cix":2,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.157,4.064],[-2.739,-2.802],[4.158,-4.063],[2.739,2.803]],"o":[[4.158,-4.063],[2.739,2.802],[-4.157,4.065],[-2.739,-2.803]],"v":[[-3.693,-6.263],[7.41,-7.193],[6.227,3.885],[-7.646,7.523]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.264,294.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":4,"cix":2,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.835,-3.989],[4.053,-2.743],[-2.834,3.989],[-4.052,2.743]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[144.887,287.306],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":4,"cix":2,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.32,-1.556],[-0.3,-0.06],[-0.744,-4.659],[-0.394,1.972],[4.881,0.974]],"o":[[0.298,0.044],[6.146,1.228],[1.939,-0.741],[0.657,-3.29],[-3.449,-0.689]],"v":[[-7.992,-4.259],[-7.095,-4.106],[4.341,5.99],[7.862,1.697],[1.84,-5.7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.648,153.918],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":4,"cix":2,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.881,-0.975],[0.657,-3.29],[4.88,0.974],[-0.657,3.29]],"o":[[4.881,0.975],[-0.657,3.291],[-4.881,-0.975],[0.657,-3.29]],"v":[[2.816,-5.957],[8.838,1.44],[0.437,5.958],[-8.837,-2.089]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[108.672,154.174],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":4,"cix":2,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.189,0.076],[3.896,1.538],[-4.189,-0.076],[-3.897,-1.538]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[117.579,155.789],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":4,"cix":2,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.785,-1.197],[-0.231,-0.046],[-0.572,-3.583],[-0.303,1.517],[3.755,0.75]],"o":[[0.229,0.034],[4.728,0.945],[1.492,-0.57],[0.506,-2.531],[-2.652,-0.53]],"v":[[-6.148,-3.276],[-5.458,-3.159],[3.339,4.607],[6.047,1.305],[1.414,-4.385]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[111.808,163.788],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":4,"cix":2,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.754,-0.75],[0.505,-2.53],[3.754,0.75],[-0.506,2.531]],"o":[[3.755,0.75],[-0.506,2.531],[-3.754,-0.75],[0.505,-2.531]],"v":[[2.166,-4.583],[6.799,1.107],[0.336,4.583],[-6.798,-1.607]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[111.057,163.985],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":4,"cix":2,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.222,0.058],[2.997,1.183],[-3.222,-0.059],[-2.998,-1.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[117.908,165.227],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":4,"cix":2,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.864,-2.582],[-0.134,0.267],[-4.569,-0.504],[1.752,0.88],[2.176,-4.335]],"o":[[0.118,-0.269],[2.74,-5.46],[-0.195,-2.014],[-2.922,-1.467],[-1.537,3.063]],"v":[[-6.198,7.009],[-5.823,6.206],[6.617,-1.934],[3.492,-6.352],[-5.015,-2.602]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[152.53,299.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":4,"cix":2,"ix":46,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.176,4.335],[-2.923,-1.467],[2.176,-4.335],[2.922,1.467]],"o":[[2.176,-4.335],[2.922,1.467],[-2.176,4.335],[-2.922,-1.468]],"v":[[-5.231,-4.1],[3.275,-7.85],[5.352,1.212],[-4.605,7.85]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[152.747,300.807],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":4,"cix":2,"ix":47,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.153,-3.917],[2.452,-3.265],[-1.153,3.917],[-2.452,3.266]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[156.204,292.938],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":4,"cix":2,"ix":48,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.045,-0.438],[0.278,0.348],[-3.536,5.89],[2.287,-1.83],[-4.529,-5.659]],"o":[[-0.291,-0.328],[-5.703,-7.127],[-2.856,-0.993],[-3.814,3.053],[3.201,4]],"v":[[7.674,11.722],[6.817,10.711],[3.526,-11.258],[-4.423,-9.771],[-4.639,4.118]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.470999983245,0.689999988032,0.081999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[301.735,296.291],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":4,"cix":2,"ix":49,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.528,5.659],[-3.815,3.053],[-4.529,-5.659],[3.816,-3.052]],"o":[[-4.529,-5.659],[3.815,-3.052],[4.529,5.659],[-3.814,3.053]],"v":[[-7.951,3.642],[-7.735,-10.248],[5.864,-7.413],[8.664,10.247]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.8,0.097999999102,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[305.048,296.768],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":4,"cix":2,"ix":50,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.599,-4.01],[-2.904,-5.366],[4.599,4.009],[2.903,5.366]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.344999994016,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.4,286.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 51","np":4,"cix":2,"ix":51,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.372,-7.247],[4.985,3.736],[-5.373,7.247],[-4.986,-3.735]],"o":[[-5.372,7.246],[-4.985,-3.734],[5.372,-7.246],[4.986,3.735]],"v":[[9.027,6.762],[-9.728,13.12],[-9.028,-6.762],[9.727,-13.121]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.375999989229,0.702000038297,0.195999998205,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[321.291,233.272],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 52","np":4,"cix":2,"ix":52,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.181,-8.96],[6.164,0.821],[-1.18,8.96],[-6.165,-0.821]],"o":[[-1.18,8.959],[-6.164,-0.82],[1.18,-8.959],[6.164,0.82]],"v":[[11.16,1.486],[-2.138,16.222],[-11.162,-1.486],[2.137,-16.222]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.375999989229,0.702000038297,0.195999998205,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[323.532,212.715],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 53","np":4,"cix":2,"ix":53,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.648,-4.751],[3.269,5.316],[-7.648,4.751],[-3.269,-5.318]],"o":[[-7.648,4.751],[-3.268,-5.318],[7.649,-4.751],[3.268,5.316]],"v":[[5.918,9.627],[-13.849,8.603],[-5.919,-9.627],[13.848,-8.602]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.375999989229,0.702000038297,0.195999998205,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[312.889,252.882],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 54","np":4,"cix":2,"ix":54,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.176,0.066],[-0.063,1.147],[0,0]],"o":[[0,0],[-0.062,1.149],[-1.175,-0.064],[0,0],[0,0]],"v":[[2.284,-3.182],[2.035,1.389],[-0.206,3.35],[-2.221,1.156],[-1.971,-3.417]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.543,357.135],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 55","np":4,"cix":2,"ix":55,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.278,-1.892],[17.382,0.013],[17.28,1.892],[-17.382,-0.013]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[210.392,341.086],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 56","np":4,"cix":2,"ix":56,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.278,-1.892],[17.382,0.014],[17.28,1.893],[-17.382,-0.012]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[211.327,323.889],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 57","np":4,"cix":2,"ix":57,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.641,0.091],[-0.087,1.601],[0,0]],"o":[[0,0],[-0.088,1.601],[-1.64,-0.09],[0,0],[0,0]],"v":[[3.187,-4.442],[2.84,1.941],[-0.288,4.677],[-3.1,1.615],[-2.752,-4.768]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.310000011968,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.052,331.91],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 58","np":4,"cix":2,"ix":58,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.64,0.09],[-0.087,1.601],[0,0]],"o":[[0,0],[-0.087,1.601],[-1.64,-0.091],[0,0],[0,0]],"v":[[3.187,-4.442],[2.839,1.941],[-0.288,4.678],[-3.1,1.615],[-2.753,-4.768]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.310000011968,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[210.896,332.451],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 59","np":4,"cix":2,"ix":59,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.641,0.09],[-0.088,1.601],[0,0]],"o":[[0,0],[-0.087,1.601],[-1.64,-0.091],[0,0],[0,0]],"v":[[3.188,-4.441],[2.839,1.941],[-0.289,4.678],[-3.1,1.615],[-2.753,-4.768]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.310000011968,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.738,332.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 60","np":4,"cix":2,"ix":60,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.199,-21.743],[18.461,-19.838],[16.199,21.743],[-18.461,19.838]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.532999973671,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[211.274,324.872],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 61","np":4,"cix":2,"ix":61,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.637,0.035],[-0.034,0.622],[0,0]],"o":[[0,0],[-0.034,0.622],[-0.637,-0.035],[0,0],[0,0]],"v":[[1.238,-1.725],[1.102,0.754],[-0.112,1.816],[-1.204,0.627],[-1.069,-1.851]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[190.908,320.988],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 62","np":4,"cix":2,"ix":62,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.637,0.035],[-0.034,0.622],[0,0]],"o":[[0,0],[-0.033,0.622],[-0.637,-0.035],[0,0],[0,0]],"v":[[1.238,-1.724],[1.102,0.754],[-0.112,1.816],[-1.204,0.627],[-1.069,-1.851]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[185.605,320.696],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 63","np":4,"cix":2,"ix":63,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.638,0.035],[-0.034,0.622],[0,0]],"o":[[0,0],[-0.034,0.622],[-0.636,-0.035],[0,0],[0,0]],"v":[[1.238,-1.725],[1.102,0.754],[-0.113,1.816],[-1.204,0.628],[-1.069,-1.852]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[180.302,320.405],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 64","np":4,"cix":2,"ix":64,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.637,0.035],[-0.034,0.622],[0,0]],"o":[[0,0],[-0.034,0.622],[-0.637,-0.034],[0,0],[0,0]],"v":[[1.238,-1.724],[1.102,0.754],[-0.112,1.816],[-1.204,0.627],[-1.069,-1.851]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[175,320.113],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 65","np":4,"cix":2,"ix":65,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.579,-2.785],[-1.269,-2.941],[-1.58,2.783],[1.267,2.94]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.604,326.537],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 66","np":4,"cix":2,"ix":66,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.58,-2.785],[-1.268,-2.941],[-1.579,2.784],[1.268,2.941]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.763,326.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 67","np":4,"cix":2,"ix":67,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.579,-2.784],[-1.269,-2.941],[-1.58,2.784],[1.267,2.941]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[182.922,326.004],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":4,"cix":2,"ix":68,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.579,-2.785],[-1.269,-2.941],[-1.58,2.783],[1.268,2.941]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[178.08,325.738],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 69","np":4,"cix":2,"ix":69,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.58,-2.784],[-1.268,-2.941],[-1.58,2.784],[1.268,2.941]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[173.239,325.472],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 70","np":4,"cix":2,"ix":70,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.477,-10.777],[-14.215,-12.41],[-15.477,10.778],[14.214,12.41]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.307,314.33],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 71","np":4,"cix":2,"ix":71,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.637,-0.035],[-0.033,0.623],[0,0]],"o":[[0,0],[-0.034,0.622],[0.637,0.035],[0,0],[0,0]],"v":[[-1.068,-1.851],[-1.204,0.627],[-0.112,1.816],[1.102,0.753],[1.238,-1.724]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[231.967,323.245],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 72","np":4,"cix":2,"ix":72,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.638,-0.035],[-0.034,0.623],[0,0]],"o":[[0,0],[-0.034,0.622],[0.637,0.035],[0,0],[0,0]],"v":[[-1.068,-1.852],[-1.204,0.628],[-0.112,1.816],[1.102,0.753],[1.238,-1.724]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[237.27,323.536],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 73","np":4,"cix":2,"ix":73,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.637,-0.034],[-0.034,0.623],[0,0]],"o":[[0,0],[-0.033,0.622],[0.637,0.035],[0,0],[0,0]],"v":[[-1.069,-1.851],[-1.204,0.627],[-0.113,1.816],[1.103,0.753],[1.238,-1.724]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.572,323.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 74","np":4,"cix":2,"ix":74,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.637,-0.035],[-0.034,0.623],[0,0]],"o":[[0,0],[-0.033,0.622],[0.637,0.035],[0,0],[0,0]],"v":[[-1.069,-1.851],[-1.204,0.627],[-0.113,1.816],[1.103,0.753],[1.238,-1.725]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[247.875,324.12],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 75","np":4,"cix":2,"ix":75,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.268,-2.941],[1.58,-2.784],[1.268,2.941],[-1.58,2.785]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[229.653,328.573],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 76","np":4,"cix":2,"ix":76,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.268,-2.941],[1.58,-2.785],[1.268,2.941],[-1.58,2.784]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[234.494,328.84],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 77","np":4,"cix":2,"ix":77,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.268,-2.941],[1.58,-2.784],[1.268,2.941],[-1.58,2.785]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[239.335,329.105],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 78","np":4,"cix":2,"ix":78,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.268,-2.941],[1.58,-2.785],[1.268,2.941],[-1.58,2.784]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[244.176,329.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 79","np":4,"cix":2,"ix":79,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.268,-2.941],[1.58,-2.784],[1.268,2.941],[-1.58,2.785]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[249.018,329.638],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 80","np":4,"cix":2,"ix":80,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.214,-12.41],[15.477,-10.777],[14.215,12.41],[-15.477,10.777]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.242,317.02],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 81","np":4,"cix":2,"ix":81,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.223,-3.981],[2.643,-3.713],[2.225,3.981],[-2.643,3.713]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.532999973671,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[195.246,344.844],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 82","np":4,"cix":2,"ix":82,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.224,-3.982],[2.643,-3.714],[2.224,3.982],[-2.643,3.714]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.532999973671,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[202.695,345.253],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 83","np":4,"cix":2,"ix":83,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.223,-3.982],[2.643,-3.712],[2.225,3.982],[-2.643,3.714]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.532999973671,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[210.143,345.663],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 84","np":4,"cix":2,"ix":84,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.224,-3.981],[2.643,-3.713],[2.224,3.981],[-2.643,3.713]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.532999973671,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[217.592,346.072],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 85","np":4,"cix":2,"ix":85,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.223,-3.981],[2.643,-3.713],[2.223,3.982],[-2.643,3.714]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.532999973671,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[225.04,346.482],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 86","np":4,"cix":2,"ix":86,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.518,4.388],[-14.252,-7.465],[-14.42,-4.386],[-0.685,7.465],[14.253,-2.81],[14.42,-5.888]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.559,361.528],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 87","np":4,"cix":2,"ix":87,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.979,14.031],[10.549,6.1],[11.579,-12.815],[0.515,-13.423],[-10.549,-14.031],[-11.579,4.885]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.642999985639,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[210.003,352.197],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 88","np":4,"cix":2,"ix":88,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.418,3.544],[-11.511,-6.029],[-11.647,-3.544],[-0.553,6.029],[11.513,-2.27],[11.647,-4.756]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.532999973671,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.355,364.277],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 89","np":4,"cix":2,"ix":89,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.394,3.329],[-10.817,-5.665],[-10.944,-3.33],[-0.521,5.665],[10.816,-2.134],[10.944,-4.469]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760999971278,0.4,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.257,365.852],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 90","np":4,"cix":2,"ix":90,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.722,0.457],[0.441,0.705],[0,0]],"o":[[0,0],[0.442,0.704],[0.722,-0.457],[0,0],[0,0]],"v":[[-2.622,-1.371],[-0.433,2.122],[1.674,2.57],[2.181,0.466],[-0.01,-3.027]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.365,335.847],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 91","np":4,"cix":2,"ix":91,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.722,0.457],[0.441,0.705],[0,0]],"o":[[0,0],[0.442,0.704],[0.722,-0.457],[0,0],[0,0]],"v":[[-2.622,-1.371],[-0.433,2.122],[1.674,2.57],[2.181,0.466],[-0.01,-3.027]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.604,333.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 92","np":4,"cix":2,"ix":92,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.722,0.457],[0.441,0.705],[0,0]],"o":[[0,0],[0.442,0.704],[0.722,-0.458],[0,0],[0,0]],"v":[[-2.622,-1.371],[-0.433,2.122],[1.674,2.57],[2.181,0.466],[-0.009,-3.027]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[301.843,330.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 93","np":4,"cix":2,"ix":93,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.722,0.457],[0.442,0.705],[0,0]],"o":[[0,0],[0.442,0.704],[0.722,-0.458],[0,0],[0,0]],"v":[[-2.623,-1.371],[-0.433,2.122],[1.674,2.57],[2.181,0.466],[-0.01,-3.027]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[306.083,327.79],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 94","np":4,"cix":2,"ix":94,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.722,0.457],[0.442,0.705],[0,0]],"o":[[0,0],[0.442,0.704],[0.722,-0.458],[0,0],[0,0]],"v":[[-2.623,-1.371],[-0.433,2.122],[1.674,2.57],[2.181,0.466],[-0.009,-3.027]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[310.322,325.105],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 95","np":4,"cix":2,"ix":95,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.56,5.379],[9.664,-8.7],[12.56,-7.09],[-12.365,8.7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[299.853,326.553],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 96","np":4,"cix":2,"ix":96,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.406,-2.865],[-1.101,-4.324],[3.406,2.865],[1.101,4.325]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[289.759,319.834],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 97","np":4,"cix":2,"ix":97,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.406,-2.865],[-1.101,-4.324],[3.406,2.865],[1.101,4.324]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.596,314.869],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 98","np":4,"cix":2,"ix":98,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.457,6.447],[4.294,5.917],[-3.457,-6.447],[-4.294,-5.915]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[285.166,322.52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 99","np":4,"cix":2,"ix":99,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.457,6.447],[4.294,5.917],[-3.457,-6.447],[-4.294,-5.915]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[287.096,321.297],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 100","np":4,"cix":2,"ix":100,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.137,1.884],[2.613,-1.126],[2.138,-1.884],[-2.613,1.126]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[290.75,329.277],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 101","np":4,"cix":2,"ix":101,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.343,0.919],[1.838,-1.728],[2.344,-0.921],[-1.836,1.728]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[290.259,328.495],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 102","np":4,"cix":2,"ix":102,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.823,-0.197],[1.041,-2.645],[2.823,0.197],[-1.042,2.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[281.365,314.307],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 103","np":4,"cix":2,"ix":103,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.457,6.446],[4.294,5.917],[-3.457,-6.447],[-4.294,-5.916]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[292.612,317.802],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 104","np":4,"cix":2,"ix":104,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.457,6.446],[4.294,5.916],[-3.457,-6.446],[-4.294,-5.916]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[294.542,316.58],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 105","np":4,"cix":2,"ix":105,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.138,1.884],[2.613,-1.126],[2.138,-1.884],[-2.613,1.126]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[298.197,324.559],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 106","np":4,"cix":2,"ix":106,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.344,0.92],[1.837,-1.728],[2.343,-0.921],[-1.837,1.728]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.706,323.777],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 107","np":4,"cix":2,"ix":107,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.823,-0.197],[1.042,-2.645],[2.823,0.196],[-1.042,2.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.811,309.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 108","np":4,"cix":2,"ix":108,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.457,6.446],[4.293,5.917],[-3.457,-6.447],[-4.293,-5.916]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[300.059,313.085],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 109","np":4,"cix":2,"ix":109,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.457,6.447],[4.293,5.917],[-3.457,-6.447],[-4.293,-5.915]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[301.989,311.862],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 110","np":4,"cix":2,"ix":110,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.137,1.884],[2.613,-1.126],[2.138,-1.884],[-2.613,1.126]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[305.643,319.842],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 111","np":4,"cix":2,"ix":111,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.344,0.919],[1.837,-1.728],[2.343,-0.921],[-1.837,1.729]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[305.152,319.059],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 112","np":4,"cix":2,"ix":112,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.823,-0.196],[1.042,-2.645],[2.823,0.197],[-1.042,2.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[296.258,304.872],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 113","np":4,"cix":2,"ix":113,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.272,0.435],[-0.433,0.274],[0,0],[-0.273,-0.435],[0.431,-0.274],[0,0]],"o":[[-0.272,-0.435],[0,0],[0.433,-0.275],[0.272,0.434],[0,0],[-0.432,0.274]],"v":[[-10.149,6.43],[-9.859,5.147],[8.872,-6.719],[10.149,-6.428],[9.86,-5.146],[-8.873,6.72]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[309.021,341.823],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 114","np":4,"cix":2,"ix":114,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.272,0.435],[-0.433,0.273],[0,0],[-0.273,-0.435],[0.431,-0.274],[0,0]],"o":[[-0.272,-0.435],[0,0],[0.432,-0.274],[0.272,0.434],[0,0],[-0.432,0.273]],"v":[[-11.794,7.472],[-11.505,6.19],[10.518,-7.762],[11.794,-7.471],[11.505,-6.189],[-10.519,7.763]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[287.427,307.382],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 115","np":4,"cix":2,"ix":115,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.347,0.854],[0.824,1.316],[0,0]],"o":[[0,0],[0.826,1.316],[1.348,-0.853],[0,0],[0,0]],"v":[[-4.219,-1.482],[-1.483,2.882],[2.449,3.719],[3.396,-0.208],[0.66,-4.573]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[273.306,300.204],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 116","np":4,"cix":2,"ix":116,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.348,0.854],[0.825,1.317],[0,0]],"o":[[0,0],[0.825,1.316],[1.347,-0.853],[0,0],[0,0]],"v":[[-4.22,-1.482],[-1.484,2.882],[2.449,3.719],[3.394,-0.209],[0.658,-4.573]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.108,295.896],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 117","np":4,"cix":2,"ix":117,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.347,0.854],[0.824,1.317],[0,0]],"o":[[0,0],[0.826,1.316],[1.348,-0.853],[0,0],[0,0]],"v":[[-4.219,-1.482],[-1.483,2.882],[2.449,3.719],[3.396,-0.209],[0.66,-4.573]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[286.909,291.587],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 118","np":4,"cix":2,"ix":118,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.616,9.517],[11.396,-1.893],[6.616,-9.517],[-11.396,1.893]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.638999968884,0.430999995213,0.246999987434,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[306.833,338.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 119","np":4,"cix":2,"ix":119,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.298,3.002],[8.431,-10.764],[13.298,-3.003],[-8.432,10.764]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[302.01,330.642],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 120","np":4,"cix":2,"ix":120,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.378,-1.911],[5.352,-15.677],[16.379,1.911],[-5.352,15.678]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[292.941,316.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 121","np":4,"cix":2,"ix":121,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.818,-0.149],[6.69,-14.409],[15.817,0.149],[-6.691,14.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[282.95,300.241],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 122","np":4,"cix":2,"ix":122,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.942,1.863],[1.801,2.873],[0,0]],"o":[[0,0],[1.8,2.872],[2.942,-1.865],[0,0],[0,0]],"v":[[-7.277,-0.146],[-5.177,3.205],[3.41,5.032],[5.477,-3.544],[3.375,-6.895]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[310.038,343.854],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 123","np":4,"cix":2,"ix":123,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-4.478,2.836],[2.741,4.372],[0,0]],"o":[[0,0],[2.741,4.372],[4.476,-2.836],[0,0],[0,0]],"v":[[-11.074,-0.221],[-7.879,4.876],[5.191,7.656],[8.333,-5.395],[5.137,-10.492]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.250999989229,0.122000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[310.924,345.482],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 124","np":4,"cix":2,"ix":124,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.196,0.047],[1.853,-3.785],[4.197,-0.047],[-1.853,3.785]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[315.836,352.693],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 125","np":4,"cix":2,"ix":125,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.28,0.81],[0.784,1.251],[0,0]],"o":[[0,0],[0.784,1.251],[1.282,-0.812],[0,0],[0,0]],"v":[[-3.168,-0.063],[-2.254,1.395],[1.484,2.191],[2.384,-1.543],[1.47,-3.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.356999984442,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.958,354.662],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 126","np":4,"cix":2,"ix":126,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.021,0.658],[0.533,-0.017],[-0.02,-0.659],[-0.533,0.017]],"o":[[-0.021,-0.657],[-0.534,0.016],[0.021,0.658],[0.533,-0.017]],"v":[[0.966,-0.031],[-0.038,-1.191],[-0.966,0.031],[0.036,1.191]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[319.313,360.217],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 127","np":4,"cix":2,"ix":127,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.732,0.381],[-0.308,0.599],[-0.732,-0.381],[0.308,-0.6]],"o":[[-0.732,-0.381],[0.31,-0.6],[0.733,0.381],[-0.309,0.6]],"v":[[-0.559,1.086],[-1.327,-0.69],[0.56,-1.087],[1.327,0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[321.627,358.875],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 128","np":4,"cix":2,"ix":128,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.339,0.216],[-0.214,-0.341],[0,0],[0.339,-0.214],[0.214,0.341]],"o":[[-0.215,-0.341],[0.339,-0.215],[0,0],[0.213,0.341],[-0.34,0.215],[0,0]],"v":[[-1.634,-1.238],[-1.408,-2.247],[-0.406,-2.018],[1.637,1.24],[1.409,2.246],[0.406,2.018]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.702000038297,0.510000011968,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[319.795,358.93],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 129","np":4,"cix":2,"ix":129,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,4.668],[3.245,-6.955],[6.069,-4.669],[-3.246,6.955]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.102000000898,0.39199999641,0.451000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[350.065,306.346],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 130","np":4,"cix":2,"ix":130,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.401,-6.124],[-7.742,-6.947],[8.401,6.125],[7.742,6.947]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[365.958,314.296],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 131","np":4,"cix":2,"ix":131,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-28.177,-21.734],[-27.124,-23.047],[28.177,21.733],[27.124,23.046]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.294000004787,0.564999988032,0.620000023935,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[338.879,290.608],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 132","np":4,"cix":2,"ix":132,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.558,1.943],[0,0],[2.022,1.638],[0,0]],"o":[[0,0],[1.557,-1.943],[0,0],[2.021,1.637]],"v":[[-7.211,14.216],[12.134,-9.924],[11.293,-16.407],[-13.691,14.77]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.102000000898,0.39199999641,0.451000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[300.702,276.136],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 133","np":4,"cix":2,"ix":133,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.965,8.484],[6.551,-9.629],[7.966,-8.483],[-6.549,9.63]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[306.679,285.872],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 134","np":4,"cix":2,"ix":134,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.966,8.483],[6.55,-9.629],[7.965,-8.483],[-6.55,9.629]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.184,289.52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 135","np":4,"cix":2,"ix":135,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.965,8.484],[6.551,-9.629],[7.966,-8.483],[-6.551,9.63]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[315.689,293.168],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 136","np":4,"cix":2,"ix":136,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.966,8.484],[6.55,-9.629],[7.966,-8.483],[-6.55,9.63]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[320.193,296.816],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 137","np":4,"cix":2,"ix":137,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.966,8.483],[6.55,-9.629],[7.966,-8.483],[-6.55,9.629]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[324.698,300.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 138","np":4,"cix":2,"ix":138,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.759,8.224],[6.342,-9.371],[7.758,-8.224],[-6.343,9.37]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[329.411,303.852],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 139","np":4,"cix":2,"ix":139,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.344,7.707],[5.927,-8.854],[7.344,-7.707],[-5.928,8.853]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[334.33,306.982],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 140","np":4,"cix":2,"ix":140,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.462,6.608],[5.046,-7.753],[6.462,-6.607],[-5.047,7.754]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.716,309.531],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 141","np":4,"cix":2,"ix":141,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.639,5.581],[4.223,-6.727],[5.639,-5.58],[-4.224,6.727]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[345.044,312.152],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 142","np":4,"cix":2,"ix":142,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.388,4.02],[2.973,-5.166],[4.388,-4.019],[-2.974,5.166]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[350.8,314.238],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 143","np":4,"cix":2,"ix":143,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-16.192,5.918],[0,0],[0,0]],"o":[[0,0],[0,0],[19.978,24.842]],"v":[[31.623,17.799],[-19.648,-23.718],[-31.622,-8.777]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.294000004787,0.564999988032,0.620000023935,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.395,297.61],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 144","np":4,"cix":2,"ix":144,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-19.335,8.236],[0,0],[0,0]],"o":[[0,0],[0,0],[21.613,28.38]],"v":[[36.026,18.967],[-20.992,-27.203],[-36.026,-8.443]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.128999986836,0.486000001197,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.586,298.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 145","np":4,"cix":2,"ix":145,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.261,0.536],[-0.172,-3.318],[3.261,-0.537],[0.173,3.318]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.102000000898,0.39199999641,0.451000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[359.816,310.907],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 146","np":4,"cix":2,"ix":146,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-4.62,2.13],[4.62,-0.918],[4.133,-2.13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.435000011968,0.187999994615,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.677,258.559],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 147","np":4,"cix":2,"ix":147,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.73,-1.817],[-1.755,0.713],[0,0]],"o":[[0,0],[-1.755,0.713],[0.73,1.816],[0,0],[0,0]],"v":[[3.631,-5.132],[-3.688,-2.158],[-5.544,2.421],[-1.045,4.419],[6.274,1.446]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[114.128,232.659],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 148","np":4,"cix":2,"ix":148,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.668,-6.721],[8.398,0.072],[-7.976,6.721],[-8.398,-1.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[107.627,223.141],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 149","np":4,"cix":2,"ix":149,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.552,0.54],[6.822,-6.253],[-9.551,0.396],[-4.514,6.253]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[115.071,244.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 150","np":4,"cix":2,"ix":150,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.253,-10.624],[11.12,3.975],[-5.253,10.624],[-11.12,-3.975]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.184000007779,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.772,233.837],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 151","np":4,"cix":2,"ix":151,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.39,-0.97],[-0.389,-0.97],[0,0],[-0.39,-0.969],[-0.39,-0.97],[0,0],[0.634,1.577],[0,0],[0.634,1.577],[0,0]],"o":[[0.39,0.971],[0.391,0.97],[0,0],[0.39,0.971],[0.39,0.971],[0,0],[-0.633,-1.577],[0,0],[-0.634,-1.576],[0,0]],"v":[[-7.078,-15.726],[-6.952,-7.03],[-3.653,1.175],[-0.355,9.381],[5.563,15.725],[6.733,18.636],[7.614,14.892],[1.294,-0.833],[-5.027,-16.559],[-8.248,-18.636]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.322000002394,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.392,236.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 152","np":4,"cix":2,"ix":152,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.529,-1.318],[-1.274,0.517],[0,0]],"o":[[0,0],[-1.274,0.518],[0.53,1.319],[0,0],[0,0]],"v":[[2.635,-3.725],[-2.678,-1.567],[-4.026,1.757],[-0.759,3.208],[4.555,1.049]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[99.08,238.777],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 153","np":4,"cix":2,"ix":153,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.236,-5.234],[5.657,0.79],[-5.282,5.234],[-5.657,-1.622]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.152,229.563],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 154","np":4,"cix":2,"ix":154,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.68,1.206],[4.259,-4.817],[-6.68,-0.375],[-2.213,4.818]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.755,248.118],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 155","np":4,"cix":2,"ix":155,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.868,-8.695],[8.072,4.252],[-2.867,8.695],[-8.072,-4.252]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.184000007779,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.942,239.048],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 156","np":4,"cix":2,"ix":156,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.346,-0.86],[-0.345,-0.86],[0,0],[-0.345,-0.861],[-0.346,-0.861],[0,0],[0.562,1.399],[0,0],[0.562,1.398],[0,0]],"o":[[0.346,0.86],[0.346,0.861],[0,0],[0.346,0.86],[0.346,0.86],[0,0],[-0.562,-1.398],[0,0],[-0.562,-1.399],[0,0]],"v":[[-6.277,-13.946],[-6.165,-6.234],[-3.239,1.042],[-0.315,8.32],[4.934,13.947],[5.972,16.527],[6.753,13.207],[1.147,-0.739],[-4.458,-14.685],[-7.315,-16.527]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.322000002394,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[94.074,240.891],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 157","np":4,"cix":2,"ix":157,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.475,-1.184],[-1.143,0.464],[0,0]],"o":[[0,0],[-1.143,0.464],[0.476,1.183],[0,0],[0,0]],"v":[[2.365,-3.342],[-2.403,-1.406],[-3.612,1.577],[-0.681,2.878],[4.087,0.941]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.263,242.744],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 158","np":4,"cix":2,"ix":158,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.903,-4.696],[5.076,0.709],[-4.74,4.696],[-5.076,-1.456]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.74,234.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 159","np":4,"cix":2,"ix":159,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.994,1.081],[3.822,-4.323],[-5.993,-0.338],[-1.986,4.322]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[91.663,251.126],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 160","np":4,"cix":2,"ix":160,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.573,-7.801],[7.242,3.816],[-2.573,7.802],[-7.242,-3.815]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.184000007779,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.242,242.987],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 161","np":4,"cix":2,"ix":161,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.311,-0.772],[-0.31,-0.772],[0,0],[-0.31,-0.773],[-0.31,-0.772],[0,0],[0.504,1.255],[0,0],[0.504,1.255],[0,0]],"o":[[0.31,0.771],[0.31,0.772],[0,0],[0.31,0.772],[0.31,0.772],[0,0],[-0.504,-1.255],[0,0],[-0.504,-1.255],[0,0]],"v":[[-5.632,-12.514],[-5.531,-5.595],[-2.907,0.934],[-0.282,7.465],[4.427,12.512],[5.358,14.829],[6.059,11.849],[1.03,-0.663],[-4,-13.177],[-6.563,-14.83]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.322000002394,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.772,244.642],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 162","np":4,"cix":2,"ix":162,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.414,-1.031],[-0.996,0.405],[0,0]],"o":[[0,0],[-0.996,0.405],[0.415,1.031],[0,0],[0,0]],"v":[[2.062,-2.914],[-2.094,-1.226],[-3.148,1.374],[-0.593,2.508],[3.562,0.82]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[80.445,246.303],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 163","np":4,"cix":2,"ix":163,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.531,-4.093],[4.425,0.618],[-4.131,4.093],[-4.425,-1.269]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[77.374,239.096],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 164","np":4,"cix":2,"ix":164,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.225,0.943],[3.331,-3.768],[-5.225,-0.293],[-1.73,3.768]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[82.537,253.609],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 165","np":4,"cix":2,"ix":165,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.243,-6.801],[6.313,3.326],[-2.243,6.801],[-6.313,-3.326]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.184000007779,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[79.555,246.515],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 166","np":4,"cix":2,"ix":166,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.271,-0.673],[-0.27,-0.673],[0,0],[-0.27,-0.673],[-0.27,-0.672],[0,0],[0.439,1.094],[0,0],[0.44,1.094],[0,0]],"o":[[0.271,0.673],[0.271,0.673],[0,0],[0.271,0.673],[0,0],[0,0],[-0.44,-1.093],[0,0],[-0.439,-1.094],[0,0]],"v":[[-4.909,-10.907],[-4.822,-4.876],[-2.534,0.817],[-0.246,6.508],[3.859,10.908],[4.671,12.927],[5.282,10.33],[0.898,-0.577],[-3.487,-11.485],[-5.721,-12.927]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.322000002394,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[76.531,247.956],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 167","np":4,"cix":2,"ix":167,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.364,-0.905],[-0.874,0.355],[0,0]],"o":[[0,0],[-0.874,0.355],[0.363,0.905],[0,0],[0,0]],"v":[[1.809,-2.556],[-1.837,-1.075],[-2.762,1.206],[-0.52,2.201],[3.126,0.72]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.684,249.436],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 168","np":4,"cix":2,"ix":168,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.22,-3.591],[3.882,0.543],[-3.625,3.591],[-3.882,-1.112]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[69.99,243.114],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 169","np":4,"cix":2,"ix":169,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.584,0.827],[2.922,-3.307],[-4.584,-0.258],[-1.519,3.306]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74.52,255.847],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 170","np":4,"cix":2,"ix":170,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.968,-5.967],[5.539,2.917],[-1.969,5.967],[-5.538,-2.919]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.184000007779,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[71.904,249.623],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 171","np":4,"cix":2,"ix":171,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.237,-0.59],[-0.237,-0.591],[0,0],[-0.237,-0.591],[-0.237,-0.591],[0,0],[0.386,0.96],[0,0],[0.386,0.96],[0,0]],"o":[[0.237,0.591],[0.237,0.591],[0,0],[0.238,0.591],[0.237,0.59],[0,0],[-0.386,-0.959],[0,0],[-0.386,-0.959],[0,0]],"v":[[-4.307,-9.57],[-4.23,-4.278],[-2.223,0.716],[-0.217,5.709],[3.385,9.57],[4.098,11.341],[4.633,9.063],[0.788,-0.507],[-3.06,-10.077],[-5.02,-11.341]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.322000002394,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[69.25,250.888],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 172","np":4,"cix":2,"ix":172,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.331,-0.823],[-0.795,0.323],[0,0]],"o":[[0,0],[-0.796,0.323],[0.33,0.823],[0,0],[0,0]],"v":[[1.645,-2.325],[-1.671,-0.978],[-2.512,1.097],[-0.474,2.002],[2.843,0.655]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[65.806,252.218],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 173","np":4,"cix":2,"ix":173,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.02,-3.266],[3.531,0.495],[-3.297,3.267],[-3.531,-1.011]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.354,246.466],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 174","np":4,"cix":2,"ix":174,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.17,0.753],[2.658,-3.007],[-4.17,-0.234],[-1.381,3.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[67.476,258.049],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 175","np":4,"cix":2,"ix":175,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.79,-5.427],[5.038,2.654],[-1.79,5.427],[-5.038,-2.655]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.184000007779,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[65.096,252.387],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 176","np":4,"cix":2,"ix":176,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.216,-0.537],[0,0],[-0.216,-0.537],[-0.216,-0.537],[0,0],[0.351,0.872],[0,0],[0.35,0.873],[0,0]],"o":[[0.216,0.537],[0.216,0.538],[0,0],[0.216,0.538],[0,0],[0,0],[-0.351,-0.873],[0,0],[-0.351,-0.872],[0,0]],"v":[[-3.919,-8.705],[-3.848,-3.892],[-2.023,0.65],[-0.197,5.193],[3.079,8.705],[3.728,10.316],[4.215,8.244],[0.715,-0.462],[-2.783,-9.167],[-4.566,-10.316]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.322000002394,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[62.682,253.538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 177","np":4,"cix":2,"ix":177,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.276,-0.686],[-0.663,0.27],[0,0]],"o":[[0,0],[-0.663,0.27],[0.276,0.687],[0,0],[0,0]],"v":[[1.373,-1.939],[-1.394,-0.816],[-2.096,0.915],[-0.395,1.669],[2.372,0.547]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[59.426,254.789],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 178","np":4,"cix":2,"ix":178,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.685,-2.725],[2.946,0.412],[-2.751,2.725],[-2.946,-0.844]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[57.381,249.991],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 179","np":4,"cix":2,"ix":179,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.479,0.628],[2.217,-2.509],[-3.479,-0.195],[-1.152,2.509]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.216000007181,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[60.819,259.654],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 180","np":4,"cix":2,"ix":180,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.493,-4.528],[4.203,2.214],[-1.493,4.528],[-4.203,-2.215]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.184000007779,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[58.834,254.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 181","np":4,"cix":2,"ix":181,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.18,-0.448],[-0.181,-0.449],[0,0],[-0.18,-0.449],[-0.179,-0.448],[0,0],[0.293,0.728],[0,0],[0.293,0.729],[0,0]],"o":[[0.18,0.448],[0.179,0.448],[0,0],[0.181,0.448],[0.181,0.449],[0,0],[-0.293,-0.729],[0,0],[-0.293,-0.727],[0,0]],"v":[[-3.269,-7.262],[-3.21,-3.246],[-1.687,0.544],[-0.165,4.333],[2.568,7.262],[3.109,8.606],[3.516,6.878],[0.598,-0.384],[-2.322,-7.647],[-3.81,-8.606]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.322000002394,0.560999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[56.82,255.89],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 182","np":4,"cix":2,"ix":182,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.475,-1.179],[-1.141,0.463],[0,0]],"o":[[0,0],[-1.14,0.463],[0.474,1.181],[0,0],[0,0]],"v":[[1.027,-2.793],[-1.063,-1.943],[-2.269,1.031],[0.655,2.329],[2.744,1.48]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.435000011968,0.187999994615,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[54.389,256.789],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 183","np":4,"cix":2,"ix":183,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.2,-1.533],[-1.482,1.172],[0,0]],"o":[[0,0],[-1.482,1.172],[1.201,1.533],[0,0],[0,0]],"v":[[0.871,-5.095],[-3.51,-1.628],[-4.018,3.27],[0.839,3.923],[5.219,0.456]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.612,267.586],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 184","np":4,"cix":2,"ix":184,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.2,-1.533],[-1.482,1.172],[0,0]],"o":[[0,0],[-1.481,1.172],[1.201,1.533],[0,0],[0,0]],"v":[[0.87,-5.095],[-3.51,-1.628],[-4.019,3.27],[0.838,3.923],[5.218,0.456]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[134.953,299.937],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 185","np":4,"cix":2,"ix":185,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.779,-0.994],[-0.961,0.761],[0,0]],"o":[[0,0],[-0.96,0.761],[0.779,0.994],[0,0],[0,0]],"v":[[1.059,-3.696],[-2.771,-0.666],[-3.1,2.511],[0.049,2.934],[3.879,-0.095]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.347,286.117],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 186","np":4,"cix":2,"ix":186,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.197,-1.528],[-1.477,1.169],[0,0]],"o":[[0,0],[-1.477,1.169],[1.197,1.529],[0,0],[0,0]],"v":[[1.628,-5.681],[-4.258,-1.023],[-4.765,3.861],[0.077,4.512],[5.963,-0.147]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.758,271.513],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 187","np":4,"cix":2,"ix":187,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.95,-2.49],[-2.406,1.905],[0,0]],"o":[[0,0],[-2.406,1.904],[1.95,2.489],[0,0],[0,0]],"v":[[2.968,-9.505],[-7.254,-1.415],[-8.08,6.542],[-0.192,7.601],[10.03,-0.488]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[135.055,273.597],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 188","np":4,"cix":2,"ix":188,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.95,-2.489],[-2.407,1.904],[0,0]],"o":[[0,0],[-2.406,1.904],[1.951,2.49],[0,0],[0,0]],"v":[[7.253,-12.897],[-11.539,1.976],[-12.365,9.932],[-4.476,10.993],[14.315,-3.88]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.380000005984,0.270999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.956,284.755],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 189","np":4,"cix":2,"ix":189,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-3.993,-5.098],[-4.927,3.9],[0,0]],"o":[[0,0],[-4.927,3.9],[3.994,5.099],[0,0],[0,0]],"v":[[6.078,-19.465],[-14.855,-2.898],[-16.546,13.395],[-0.392,15.565],[20.54,-1.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[128.245,278.833],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 190","np":4,"cix":2,"ix":190,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.867,-24.393],[19.632,22.206],[16.868,24.393],[-19.632,-22.204]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.128999986836,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.349,280.632],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 191","np":4,"cix":2,"ix":191,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.712,-25.623],[20.858,22.341],[16.711,25.623],[-20.858,-22.342]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[139.481,270.241],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 192","np":4,"cix":2,"ix":192,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-3.994,-5.099],[-4.927,3.9],[0,0]],"o":[[0,0],[-4.928,3.9],[3.994,5.1],[0,0],[0,0]],"v":[[-2.232,-12.889],[-6.546,-9.475],[-8.237,6.818],[7.917,8.989],[12.23,5.576]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.771,291.08],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 193","np":4,"cix":2,"ix":193,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.153,-33.883],[31.792,12.008],[4.153,33.883],[-31.792,-12.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.555,282.053],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 194","np":4,"cix":2,"ix":194,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-5.499,-7.02],[-6.784,5.369],[0,0]],"o":[[0,0],[-6.784,5.369],[5.498,7.019],[0,0],[0,0]],"v":[[-2.41,-18.27],[-9.674,-12.52],[-12.002,9.913],[10.237,12.901],[17.501,7.152]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.506,291.176],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 195","np":4,"cix":2,"ix":195,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.003,-24.654],[19.942,21.237],[17.235,24.654],[-19.942,-22.81]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[108.766,294.699],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 196","np":4,"cix":2,"ix":196,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.29,0.229],[-0.228,-0.29],[0,0],[0.289,-0.228],[0.228,0.29],[0,0]],"o":[[0.289,-0.229],[0,0],[0.228,0.291],[-0.289,0.23],[0,0],[-0.227,-0.291]],"v":[[-4.372,-5.582],[-3.436,-5.471],[4.483,4.64],[4.372,5.581],[3.436,5.47],[-4.484,-4.641]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[79.584,291.558],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 197","np":4,"cix":2,"ix":197,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.853,-0.532],[-0.316,-0.958],[0.852,0.533],[0.314,0.958]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.542,298.713],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 198","np":4,"cix":2,"ix":198,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.036,-1.258],[1.458,-0.717],[-1.036,1.258],[-1.459,0.717]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.811,298.501],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 199","np":4,"cix":2,"ix":199,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.002,-1.714],[1.657,0.404],[0.002,1.714],[-1.657,-0.404]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[73.47,296.396],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 200","np":4,"cix":2,"ix":200,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.677,-1.469],[1.262,1.007],[0.677,1.469],[-1.262,-1.006]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.351,297.282],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 201","np":4,"cix":2,"ix":201,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.475,-1.816],[1.646,0.891],[0.475,1.816],[-1.646,-0.889]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74.883,295.278],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 202","np":4,"cix":2,"ix":202,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.871,-1.111],[-2.291,1.813],[0,0]],"o":[[0,0],[-2.291,1.812],[0.871,1.112],[0,0],[0,0]],"v":[[-0.055,-3.003],[-0.236,-2.86],[-2.807,2.434],[2.918,1.164],[3.098,1.022]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.722000002394,0.451000019148,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.098,292.52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 203","np":4,"cix":2,"ix":203,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.22,-2.835],[-2.291,1.813],[0,0]],"o":[[0,0],[-2.291,1.812],[2.221,2.835],[0,0],[0,0]],"v":[[-2.758,-6.111],[-2.938,-5.968],[-3.065,2.448],[5.105,4.298],[5.285,4.156]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[78.356,292.507],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 204","np":4,"cix":2,"ix":204,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.004,-1.282],[-1.239,0.981],[0,0]],"o":[[0,0],[-1.239,0.981],[1.004,1.281],[0,0],[0,0]],"v":[[0.728,-4.26],[-2.934,-1.362],[-3.359,2.734],[0.701,3.279],[4.363,0.381]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[92.219,281.482],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 205","np":4,"cix":2,"ix":205,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.68,-5.34],[3.736,6.681],[5.68,4.3],[-2.921,-6.681]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.168,288.028],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 206","np":4,"cix":2,"ix":206,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.286,-7.29],[6.749,2.966],[1.285,7.29],[-6.749,-2.967]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[82.352,289.368],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 207","np":4,"cix":2,"ix":207,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.611,-9.378],[9.212,1.603],[-0.611,9.378],[-9.212,-1.604]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[90.459,282.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 208","np":4,"cix":2,"ix":208,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.289,0.229],[-0.229,-0.291],[0,0],[0.289,-0.229],[0.228,0.291],[0,0]],"o":[[0.29,-0.229],[0,0],[0.227,0.291],[-0.29,0.229],[0,0],[-0.228,-0.291]],"v":[[-4.372,-5.582],[-3.435,-5.47],[4.484,4.641],[4.373,5.582],[3.436,5.47],[-4.483,-4.641]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.812,323.766],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 209","np":4,"cix":2,"ix":209,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.852,-0.533],[-0.316,-0.958],[0.853,0.533],[0.316,0.958]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.77,330.922],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 210","np":4,"cix":2,"ix":210,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.036,-1.257],[1.459,-0.717],[-1.035,1.257],[-1.459,0.718]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.039,330.71],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 211","np":4,"cix":2,"ix":211,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.002,-1.714],[1.657,0.405],[0.002,1.714],[-1.657,-0.404]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[98.699,328.604],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 212","np":4,"cix":2,"ix":212,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.677,-1.469],[1.262,1.006],[0.677,1.469],[-1.262,-1.006]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.579,329.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 213","np":4,"cix":2,"ix":213,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.475,-1.816],[1.645,0.889],[0.474,1.816],[-1.645,-0.89]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.112,327.487],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 214","np":4,"cix":2,"ix":214,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.871,-1.111],[-2.291,1.812],[0,0]],"o":[[0,0],[-2.291,1.812],[0.871,1.113],[0,0],[0,0]],"v":[[-0.056,-3.003],[-0.236,-2.86],[-2.807,2.434],[2.917,1.165],[3.098,1.022]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.722000002394,0.451000019148,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[103.327,324.728],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 215","np":4,"cix":2,"ix":215,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.22,-2.835],[-2.291,1.813],[0,0]],"o":[[0,0],[-2.29,1.813],[2.221,2.835],[0,0],[0,0]],"v":[[-2.758,-6.111],[-2.938,-5.969],[-3.065,2.447],[5.105,4.298],[5.285,4.156]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[103.584,324.716],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 216","np":4,"cix":2,"ix":216,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.004,-1.281],[-1.239,0.981],[0,0]],"o":[[0,0],[-1.238,0.981],[1.004,1.281],[0,0],[0,0]],"v":[[0.727,-4.26],[-2.935,-1.363],[-3.36,2.733],[0.702,3.279],[4.363,0.381]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.588000009574,0.224000010771,0.184000007779,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[117.448,313.691],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 217","np":4,"cix":2,"ix":217,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.68,-5.34],[3.736,6.681],[5.68,4.3],[-2.921,-6.681]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.842999985639,0.560999971278,0.411999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.397,320.236],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 218","np":4,"cix":2,"ix":218,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.285,-7.29],[6.749,2.966],[1.286,7.29],[-6.749,-2.966]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[107.58,321.576],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 219","np":4,"cix":2,"ix":219,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.611,-9.377],[9.212,1.603],[-0.611,9.377],[-9.212,-1.604]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.769000004787,0.298000021542,0.19199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[115.688,315.159],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 220","np":4,"cix":2,"ix":220,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-8.038,-2.556],[-1.698,21.509],[8.038,-21.509]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[64.603,173.777],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 221","np":4,"cix":2,"ix":221,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-12.322,-3.919],[-2.603,32.971],[12.323,-32.971]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[65.901,174.458],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 222","np":4,"cix":2,"ix":222,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.863,-1.797],[1.809,2.861],[-2.863,1.796],[-1.808,-2.861]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.337,159.752],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 223","np":4,"cix":2,"ix":223,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.923,-2.01],[0.869,2.648],[-1.923,2.011],[-0.869,-2.647]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[79.989,152.831],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 224","np":4,"cix":2,"ix":224,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.31,1.459],[14.492,5.074],[-15.31,-2.014],[-14.617,-5.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.401,156.478],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 225","np":4,"cix":2,"ix":225,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.863,-1.797],[1.809,2.861],[-2.863,1.796],[-1.809,-2.861]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[108.294,168.779],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 226","np":4,"cix":2,"ix":226,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.924,-2.011],[0.868,2.647],[-1.924,2.01],[-0.869,-2.648]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[77.946,161.858],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 227","np":4,"cix":2,"ix":227,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.31,1.459],[14.492,5.074],[-15.31,-2.014],[-14.617,-5.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.358,165.504],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 228","np":4,"cix":2,"ix":228,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.863,-1.797],[1.809,2.861],[-2.863,1.796],[-1.809,-2.861]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[106.251,177.805],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 229","np":4,"cix":2,"ix":229,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.923,-2.01],[0.869,2.648],[-1.923,2.011],[-0.869,-2.647]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.903,170.884],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 230","np":4,"cix":2,"ix":230,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.31,1.459],[14.492,5.074],[-15.31,-2.014],[-14.617,-5.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[91.316,174.531],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 231","np":4,"cix":2,"ix":231,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.863,-1.797],[1.809,2.861],[-2.863,1.796],[-1.809,-2.861]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.208,186.832],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 232","np":4,"cix":2,"ix":232,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.924,-2.01],[0.87,2.648],[-1.924,2.011],[-0.869,-2.647]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[73.86,179.911],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 233","np":4,"cix":2,"ix":233,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.31,1.459],[14.492,5.074],[-15.31,-2.014],[-14.617,-5.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.272,183.557],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 234","np":4,"cix":2,"ix":234,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.863,-1.797],[1.809,2.861],[-2.863,1.796],[-1.808,-2.861]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.165,195.858],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 235","np":4,"cix":2,"ix":235,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.924,-2.011],[0.87,2.647],[-1.924,2.01],[-0.869,-2.648]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[71.817,188.938],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 236","np":4,"cix":2,"ix":236,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.31,1.459],[14.492,5.074],[-15.31,-2.014],[-14.617,-5.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[87.23,192.584],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 237","np":4,"cix":2,"ix":237,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.863,-1.797],[1.808,2.861],[-2.863,1.796],[-1.808,-2.861]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.122,204.885],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 238","np":4,"cix":2,"ix":238,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.924,-2.01],[0.87,2.648],[-1.924,2.011],[-0.869,-2.647]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541000007181,0.569000004787,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[69.774,197.964],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 239","np":4,"cix":2,"ix":239,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.31,1.46],[14.492,5.074],[-15.31,-2.013],[-14.617,-5.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.187,201.61],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 240","np":4,"cix":2,"ix":240,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.137,-29.077],[-4.276,30.186],[-9.138,29.077],[4.275,-30.186]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.783999992819,0.722000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[114.023,184.324],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 241","np":4,"cix":2,"ix":241,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7.367,-26.217],[-4.642,26.84],[-7.367,26.219],[4.641,-26.839]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.658999992819,0.603999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.123,174.768],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 242","np":4,"cix":2,"ix":242,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.033,-27.251],[-3.583,28.494],[-9.033,27.25],[3.583,-28.494]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.658999992819,0.603999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.29,183.473],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 243","np":4,"cix":2,"ix":243,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.529,-0.369],[0.367,-0.531],[0.529,0.369],[-0.367,0.532]],"o":[[0.529,0.369],[-0.367,0.532],[-0.529,-0.369],[0.367,-0.531]],"v":[[0.665,-0.963],[0.958,0.668],[-0.665,0.963],[-0.958,-0.669]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.113999998803,0.023999999551,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.582,110.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 244","np":4,"cix":2,"ix":244,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.573,-5.379],[16.13,3.332],[-15.573,5.379],[-16.13,-3.332]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.889999988032,0.654999976065,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[111.641,103.762],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 245","np":4,"cix":2,"ix":245,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.573,-5.379],[16.13,3.332],[-15.573,5.379],[-16.13,-3.332]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.889999988032,0.654999976065,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[67.523,116.24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 246","np":4,"cix":2,"ix":246,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.015,-0.243],[0.242,-0.015],[0,0],[0.015,0.242],[-0.241,0.015]],"o":[[0.242,-0.016],[0.016,0.242],[0,0],[-0.242,0.016],[-0.015,-0.243],[0,0]],"v":[[38.929,-2.955],[39.394,-2.542],[38.985,-2.075],[-38.929,2.955],[-39.395,2.544],[-38.986,2.076]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.298000021542,0.078000005086,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.582,110.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 247","np":4,"cix":2,"ix":247,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.351,15.654],[-3.315,16.214],[-5.351,-15.654],[3.315,-16.214]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.889999988032,0.654999976065,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.788,132.175],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 248","np":4,"cix":2,"ix":248,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.351,15.654],[-3.314,16.214],[-5.351,-15.654],[3.314,-16.214]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.889999988032,0.654999976065,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.376,87.827],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 249","np":4,"cix":2,"ix":249,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.242,-0.015],[0.016,0.242],[0,0],[-0.241,0.016],[-0.016,-0.243]],"o":[[0.016,0.243],[-0.242,0.016],[0,0],[-0.016,-0.243],[0.241,-0.016],[0,0]],"v":[[2.939,39.131],[2.53,39.599],[2.064,39.188],[-2.939,-39.132],[-2.53,-39.6],[-2.064,-39.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.54900004069,0.298000021542,0.078000005086,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.582,110.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 250","np":4,"cix":2,"ix":250,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.912,-0.636],[0.633,-0.916],[0.912,0.636],[-0.633,0.916]],"o":[[0.911,0.636],[-0.633,0.916],[-0.912,-0.636],[0.633,-0.916]],"v":[[1.146,-1.659],[1.65,1.152],[-1.146,1.659],[-1.651,-1.151]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.582,110.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 251","np":4,"cix":2,"ix":251,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.251],[0.566,2.244],[-2.29,0.251],[-0.567,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[115.794,125.908],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 252","np":4,"cix":2,"ix":252,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.251],[0.566,2.244],[-2.29,0.251],[-0.567,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[113.576,129.12],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 253","np":4,"cix":2,"ix":253,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.252],[0.567,2.244],[-2.29,0.251],[-0.566,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.221,123.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 254","np":4,"cix":2,"ix":254,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.251],[0.566,2.244],[-2.29,0.251],[-0.566,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.003,126.628],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 255","np":4,"cix":2,"ix":255,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.314,-0.868],[1.4,6.25],[-6.314,0.868],[-1.4,-6.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.630999995213,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.899,126.268],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 256","np":4,"cix":2,"ix":256,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.251],[0.566,2.244],[-2.29,0.251],[-0.566,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.289,117.882],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 257","np":4,"cix":2,"ix":257,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.251],[0.566,2.244],[-2.29,0.251],[-0.567,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.071,121.094],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 258","np":4,"cix":2,"ix":258,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.251],[0.566,2.244],[-2.29,0.251],[-0.567,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.716,115.389],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 259","np":4,"cix":2,"ix":259,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.29,-0.251],[0.566,2.244],[-2.29,0.251],[-0.566,-2.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[98.499,118.601],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 260","np":4,"cix":2,"ix":260,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.314,-0.868],[1.399,6.25],[-6.314,0.868],[-1.4,-6.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.630999995213,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.394,118.242],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 261","np":4,"cix":2,"ix":261,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.396,-0.276],[0.275,-0.398],[0,0],[0.396,0.277],[-0.275,0.398],[0,0]],"o":[[0.396,0.276],[0,0],[-0.275,0.398],[-0.396,-0.276],[0,0],[0.275,-0.398]],"v":[[8.087,-11.714],[8.307,-10.493],[-6.873,11.493],[-8.088,11.713],[-8.307,10.492],[6.873,-11.494]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.638999968884,0.344999994016,0.090000002992,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.23,112.546],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 262","np":4,"cix":2,"ix":262,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.078,-3.009],[-4.613,-3.35]],"o":[[-4.736,-3.172],[-2.078,3.01],[0,0]],"v":[[7.165,-3.878],[-5.087,-4.207],[-0.495,7.216]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.352999997606,0.102000000898,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.998,110.948],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 263","np":4,"cix":2,"ix":263,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[4.037,-5.847],[-5.656,-4.202]],"o":[[-5.895,-3.856],[-4.037,5.847],[0,0]],"v":[[10.942,-8.849],[-6.904,-5.331],[-3.941,12.705]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.470999983245,0.125,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.832,110.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 264","np":4,"cix":2,"ix":264,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[19.542,13.634],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[19.542,13.633],[0,0],[0,0],[0,0]],"v":[[-14.505,-19.931],[-18.518,-14.118],[-22.531,-8.306],[8.119,19.931],[15.325,9.493],[22.531,-0.944]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.122000002394,0.027000000898,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[111.244,126.312],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 265","np":4,"cix":2,"ix":265,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[19.542,13.634],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[19.542,13.634],[0,0],[0,0],[0,0]],"v":[[-12.749,-25.833],[-19.678,-15.798],[-26.607,-5.764],[1.725,25.833],[14.166,7.814],[26.607,-10.206]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.403,127.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 266","np":4,"cix":2,"ix":266,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.214,-0.15],[0.149,-0.216],[0,0],[0.214,0.149],[-0.149,0.216],[0,0]],"o":[[0.214,0.149],[0,0],[-0.149,0.215],[-0.215,-0.15],[0,0],[0.148,-0.215]],"v":[[3.087,-4.471],[3.206,-3.809],[-2.43,4.353],[-3.087,4.471],[-3.206,3.811],[2.43,-4.351]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.638999968884,0.344999994016,0.090000002992,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.061,142.427],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 267","np":4,"cix":2,"ix":267,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.169,0.076],[2.228,5.783],[-6.17,-0.076],[-2.23,-5.783]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.579999976065,0.093999997307,0.019999999626,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[132.25,139.769],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 268","np":4,"cix":2,"ix":268,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-5.569,8.065],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[5.569,-8.065],[0,0]],"v":[[4.473,-18.39],[-4.437,-3.484],[-15.213,10.12],[-6.546,18.39],[6.147,3.9],[15.212,-13.121]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.470999983245,0.125,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.891,138.511],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 269","np":4,"cix":2,"ix":269,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.164,-1.685],[-1.629,-1.211]],"o":[[-1.699,-1.111],[-1.163,1.686],[0,0]],"v":[[3.154,-2.551],[-1.991,-1.537],[-1.137,3.662]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.630999995213,0.141000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[82.974,105.539],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 270","np":4,"cix":2,"ix":270,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.058,-0.129],[0.128,0.058],[0,0],[-0.057,0.129],[-0.128,-0.058],[0,0]],"o":[[-0.058,0.129],[0,0],[-0.128,-0.057],[0.058,-0.13],[0,0],[0.128,0.058]],"v":[[7.781,3.51],[7.444,3.64],[-7.654,-3.173],[-7.781,-3.511],[-7.444,-3.64],[7.652,3.171]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.09,18.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 271","np":4,"cix":2,"ix":271,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.115,0.908],[-0.598,0.69],[0.115,-0.908],[0.599,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[294.732,22.661],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 272","np":4,"cix":2,"ix":272,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.116,0.908],[-0.598,0.69],[0.114,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.331,22.028],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 273","np":4,"cix":2,"ix":273,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.116,0.908],[-0.598,0.69],[0.115,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[291.93,21.396],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 274","np":4,"cix":2,"ix":274,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.115,0.908],[-0.598,0.69],[0.115,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[290.528,20.764],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 275","np":4,"cix":2,"ix":275,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.115,0.908],[-0.598,0.69],[0.115,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[289.127,20.132],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 276","np":4,"cix":2,"ix":276,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.115,0.908],[-0.598,0.69],[0.115,-0.908],[0.599,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[287.726,19.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 277","np":4,"cix":2,"ix":277,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.116,0.908],[-0.599,0.69],[0.114,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[286.325,18.867],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 278","np":4,"cix":2,"ix":278,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.116,0.908],[-0.599,0.69],[0.114,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[284.923,18.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 279","np":4,"cix":2,"ix":279,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.116,0.908],[-0.598,0.69],[0.114,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[283.522,17.603],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 280","np":4,"cix":2,"ix":280,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.116,0.908],[-0.598,0.69],[0.115,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[282.121,16.97],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 281","np":4,"cix":2,"ix":281,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.115,0.908],[-0.598,0.69],[0.115,-0.908],[0.598,-0.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.719,16.338],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 282","np":4,"cix":2,"ix":282,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.275,4.328],[-8.716,-3.339],[-8.275,-4.328],[8.716,3.339]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[283.362,29.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 283","np":4,"cix":2,"ix":283,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.586,0.265],[0.262,-0.589],[0,0]],"o":[[0,0],[0.264,-0.59],[-0.587,-0.264],[0,0],[0,0]],"v":[[-0.116,3.245],[1.974,-1.435],[1.39,-2.981],[-0.148,-2.393],[-2.238,2.287]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[290.316,29.062],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 284","np":4,"cix":2,"ix":284,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.586,0.264],[0.262,-0.59],[0,0]],"o":[[0,0],[0.264,-0.589],[-0.586,-0.265],[0,0],[0,0]],"v":[[-0.115,3.245],[1.975,-1.436],[1.389,-2.98],[-0.147,-2.392],[-2.238,2.288]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[286.477,27.329],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 285","np":4,"cix":2,"ix":285,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.586,0.265],[0.263,-0.589],[0,0]],"o":[[0,0],[0.263,-0.59],[-0.586,-0.264],[0,0],[0,0]],"v":[[-0.115,3.245],[1.975,-1.435],[1.39,-2.981],[-0.148,-2.393],[-2.238,2.287]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[282.637,25.597],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 286","np":4,"cix":2,"ix":286,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.586,0.265],[0.263,-0.589],[0,0]],"o":[[0,0],[0.263,-0.59],[-0.586,-0.264],[0,0],[0,0]],"v":[[-0.116,3.245],[1.975,-1.435],[1.39,-2.981],[-0.148,-2.393],[-2.238,2.287]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[278.799,23.865],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 287","np":4,"cix":2,"ix":287,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.154,5.673],[-11.63,-4.608],[-11.155,-5.673],[11.63,4.608]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[279.016,39.004],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 288","np":4,"cix":2,"ix":288,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.286],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.655,39.749],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 289","np":4,"cix":2,"ix":289,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.286],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[284.521,37.883],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 290","np":4,"cix":2,"ix":290,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.284,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.386,36.018],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 291","np":4,"cix":2,"ix":291,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.158,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[276.251,34.152],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 292","np":4,"cix":2,"ix":292,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.125,3.495],[2.126,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.117,32.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 293","np":4,"cix":2,"ix":293,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.154,5.673],[-11.63,-4.608],[-11.155,-5.673],[11.63,4.608]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[275.12,47.726],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 294","np":4,"cix":2,"ix":294,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.284,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[284.76,48.472],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 295","np":4,"cix":2,"ix":295,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.284,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.625,46.606],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 296","np":4,"cix":2,"ix":296,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.284,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.125,3.495],[2.126,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[276.491,44.74],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 297","np":4,"cix":2,"ix":297,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.284,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.125,3.495],[2.126,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.356,42.875],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 298","np":4,"cix":2,"ix":298,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.222,41.009],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 299","np":4,"cix":2,"ix":299,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.154,5.673],[-11.631,-4.608],[-11.156,-5.673],[11.63,4.608]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[271.225,56.449],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 300","np":4,"cix":2,"ix":300,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.284,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.125,3.495],[2.126,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.865,57.194],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 301","np":4,"cix":2,"ix":301,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.284,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.126,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[276.73,55.329],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 302","np":4,"cix":2,"ix":302,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.596,53.463],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 303","np":4,"cix":2,"ix":303,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.461,51.597],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 304","np":4,"cix":2,"ix":304,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[264.326,49.732],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 305","np":4,"cix":2,"ix":305,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.155,5.673],[-11.63,-4.608],[-11.156,-5.673],[11.63,4.608]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[267.33,65.172],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 306","np":4,"cix":2,"ix":306,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[276.97,65.917],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 307","np":4,"cix":2,"ix":307,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.835,64.051],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 308","np":4,"cix":2,"ix":308,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.7,62.186],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 309","np":4,"cix":2,"ix":309,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[264.565,60.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 310","np":4,"cix":2,"ix":310,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.286],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[260.431,58.455],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 311","np":4,"cix":2,"ix":311,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.154,5.673],[-11.63,-4.608],[-11.155,-5.673],[11.63,4.608]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[263.435,73.895],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 312","np":4,"cix":2,"ix":312,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[273.074,74.64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 313","np":4,"cix":2,"ix":313,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.939,72.774],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 314","np":4,"cix":2,"ix":314,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[264.805,70.908],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 315","np":4,"cix":2,"ix":315,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.284,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[260.67,69.043],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 316","np":4,"cix":2,"ix":316,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.126,-1.546],[1.496,-3.211],[-0.159,-2.577],[-2.409,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.536,67.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 317","np":4,"cix":2,"ix":317,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.154,5.673],[-11.63,-4.608],[-11.155,-5.673],[11.63,4.608]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[259.539,82.617],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 318","np":4,"cix":2,"ix":318,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.179,83.362],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 319","np":4,"cix":2,"ix":319,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.284,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[265.044,81.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 320","np":4,"cix":2,"ix":320,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.211],[-0.158,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[260.909,79.631],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 321","np":4,"cix":2,"ix":321,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.284,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.125,3.495],[2.126,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.775,77.766],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 322","np":4,"cix":2,"ix":322,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.125,3.495],[2.127,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[252.641,75.9],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 323","np":4,"cix":2,"ix":323,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.154,5.673],[-11.63,-4.608],[-11.155,-5.673],[11.63,4.608]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.779999976065,0.556999954523,0.39199999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[255.644,91.34],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 324","np":4,"cix":2,"ix":324,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.124,3.495],[2.126,-1.546],[1.496,-3.211],[-0.159,-2.577],[-2.409,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[265.284,92.086],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 325","np":4,"cix":2,"ix":325,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.286],[0.283,-0.635],[0,0]],"o":[[0,0],[0.284,-0.634],[-0.631,-0.284],[0,0],[0,0]],"v":[[-0.125,3.495],[2.126,-1.546],[1.496,-3.211],[-0.159,-2.577],[-2.41,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[261.149,90.22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 326","np":4,"cix":2,"ix":326,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.632,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.284,-0.634],[-0.631,-0.285],[0,0],[0,0]],"v":[[-0.125,3.495],[2.126,-1.546],[1.496,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[257.015,88.354],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 327","np":4,"cix":2,"ix":327,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[252.88,86.488],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 328","np":4,"cix":2,"ix":328,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.631,0.285],[0.283,-0.635],[0,0]],"o":[[0,0],[0.283,-0.634],[-0.632,-0.285],[0,0],[0,0]],"v":[[-0.124,3.495],[2.127,-1.546],[1.497,-3.21],[-0.159,-2.577],[-2.41,2.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.505999995213,0.33300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[248.745,84.623],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 329","np":4,"cix":2,"ix":329,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.677,0.305],[0.305,-0.681],[0,0]],"o":[[0,0],[0.304,-0.681],[-0.677,-0.306],[0,0],[0,0]],"v":[[-0.133,3.75],[2.282,-1.658],[1.606,-3.444],[-0.171,-2.765],[-2.586,2.643]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[262.242,103.539],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 330","np":4,"cix":2,"ix":330,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.678,0.306],[0.304,-0.68],[0,0]],"o":[[0,0],[0.305,-0.681],[-0.677,-0.306],[0,0],[0,0]],"v":[[-0.134,3.75],[2.281,-1.658],[1.605,-3.444],[-0.171,-2.765],[-2.586,2.644]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[257.201,101.265],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 331","np":4,"cix":2,"ix":331,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.678,0.306],[0.304,-0.68],[0,0]],"o":[[0,0],[0.304,-0.68],[-0.677,-0.306],[0,0],[0,0]],"v":[[-0.133,3.75],[2.282,-1.658],[1.606,-3.444],[-0.17,-2.765],[-2.585,2.644]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[252.16,98.99],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 332","np":4,"cix":2,"ix":332,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.677,0.305],[0.305,-0.681],[0,0]],"o":[[0,0],[0.304,-0.681],[-0.677,-0.306],[0,0],[0,0]],"v":[[-0.133,3.75],[2.282,-1.658],[1.606,-3.444],[-0.171,-2.765],[-2.586,2.643]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[247.118,96.715],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 333","np":4,"cix":2,"ix":333,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.677,0.306],[0.305,-0.68],[0,0]],"o":[[0,0],[0.304,-0.681],[-0.677,-0.306],[0,0],[0,0]],"v":[[-0.133,3.75],[2.282,-1.658],[1.606,-3.444],[-0.171,-2.765],[-2.586,2.644]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.077,94.44],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 334","np":4,"cix":2,"ix":334,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.927,-0.418],[0.156,-0.961],[0,0],[0,0],[-0.926,-0.418],[0.156,-0.962],[0,0],[0,0],[-0.927,-0.418],[-0.031,-0.015],[-0.031,-0.015],[0.156,-0.962],[0,0],[0,0],[-0.927,-0.418],[0.157,-0.962],[0,0],[0,0],[-0.927,-0.418],[0.156,-0.963],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.612,-0.757],[0.927,0.419],[0,0],[0,0],[0.611,-0.757],[0.927,0.418],[0,0],[0,0],[0.611,-0.757],[0.031,0.014],[0.032,0.013],[0.927,0.418],[0,0],[0,0],[0.611,-0.758],[0.926,0.418],[0,0],[0,0],[0.612,-0.756],[0.927,0.418],[0,0],[0,0],[0,0]],"v":[[8.541,2.335],[3.223,-0.064],[0.564,-1.264],[-2.094,-2.463],[-7.411,-4.863],[-12.729,-7.262],[-13.857,-4.734],[-13.222,-4.447],[-10.623,-5.07],[-9.358,-2.705],[-8.54,-2.335],[-7.904,-2.048],[-5.306,-2.67],[-4.041,-0.305],[-3.223,0.064],[-2.587,0.351],[0.012,-0.271],[0.1,-0.222],[0.195,-0.188],[1.459,2.177],[2.094,2.464],[2.913,2.834],[5.512,2.211],[6.775,4.576],[7.411,4.863],[8.23,5.232],[10.829,4.61],[12.093,6.976],[12.729,7.262],[13.857,4.734]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[254.841,93.137],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 335","np":4,"cix":2,"ix":335,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.589,-0.266],[0.1,-0.611],[0,0],[0,0],[-0.589,-0.266],[0.1,-0.612],[0,0],[0,0],[-0.589,-0.265],[-0.02,-0.01],[-0.02,-0.009],[0.1,-0.611],[0,0],[0,0],[-0.59,-0.266],[0.1,-0.611],[0,0],[0,0],[-0.589,-0.266],[0.099,-0.612],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.389,-0.48],[0.589,0.266],[0,0],[0,0],[0.389,-0.482],[0.589,0.266],[0,0],[0,0],[0.388,-0.481],[0.021,0.009],[0.019,0.007],[0.589,0.266],[0,0],[0,0],[0.389,-0.481],[0.589,0.266],[0,0],[0,0],[0.388,-0.482],[0.589,0.266],[0,0],[0,0],[0,0]],"v":[[5.429,1.484],[2.049,-0.041],[0.36,-0.804],[-1.331,-1.566],[-4.711,-3.092],[-8.091,-4.617],[-8.809,-3.01],[-8.404,-2.827],[-6.753,-3.222],[-5.949,-1.719],[-5.428,-1.485],[-5.024,-1.301],[-3.373,-1.697],[-2.569,-0.193],[-2.049,0.041],[-1.645,0.223],[0.007,-0.173],[0.064,-0.141],[0.124,-0.119],[0.927,1.383],[1.331,1.566],[1.852,1.8],[3.504,1.406],[4.307,2.908],[4.711,3.092],[5.232,3.326],[6.884,2.93],[7.688,4.434],[8.092,4.617],[8.809,3.01]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[287.01,21.102],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 336","np":4,"cix":2,"ix":336,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.876,5.852],[-11.578,-4.28],[-10.876,-5.852],[11.578,4.28]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.470999983245,0.310000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[282.79,30.551],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 337","np":4,"cix":2,"ix":337,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.789,35.576],[-24.593,25.739],[2.789,-35.576],[24.593,-25.738]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.651000019148,0.481999984442,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.816,61.843],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 338","np":4,"cix":2,"ix":338,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.659,10.784],[-15.1,-0.839],[-10.658,-10.784],[15.099,0.838]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.651000019148,0.481999984442,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[253.02,97.214],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 339","np":4,"cix":2,"ix":339,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.339,9.721],[-10.774,2.452],[-5.338,-9.721],[10.775,-2.451]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.651000019148,0.481999984442,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[284.613,26.47],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 340","np":4,"cix":2,"ix":340,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.14,14.106],[0,0],[0.352,-1.079],[2.671,-17.61],[-0.014,-1.135],[0,0]],"o":[[2.14,-14.106],[0,0],[-0.351,1.078],[-2.671,17.611],[0.017,1.135],[0,0]],"v":[[-0.242,-0.126],[5.604,-33.1],[4.004,-31.835],[-1.159,-0.267],[-5.59,31.414],[-4.437,33.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.969000004787,0.216000007181,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[361.935,234.045],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 341","np":4,"cix":2,"ix":341,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.213,2.202],[-3.368,-3.364],[4.213,-2.202],[3.369,3.364]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.216000007181,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[366.562,234.665],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 342","np":4,"cix":2,"ix":342,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.008,6.288],[-0.053,-6.604],[2.007,-6.288],[0.052,6.604]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.216000007181,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[370.166,235.216],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 343","np":4,"cix":2,"ix":343,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.738,31.241],[0,0],[0.747,-1.137],[3.297,-21.738],[-1.122,-3.907],[0,0]],"o":[[4.738,-31.241],[0,0],[-2.23,3.393],[-3.296,21.737],[0.376,1.31],[0,0]],"v":[[-2.773,-0.646],[8.13,-40.957],[5.202,-39.961],[-4.833,-0.961],[-6.816,39.271],[-4.315,41.098]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.564999988032,0.670999983245,0.62400004069,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[376.684,236.437],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 344","np":4,"cix":2,"ix":344,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.124,12.31],[0.689,-0.76],[2.484,-16.374],[-0.434,-0.933],[0,0]],"o":[[0,0],[0,0],[-0.691,0.762],[-2.483,16.373],[0.434,0.932],[-1.241,-13.285]],"v":[[-1.989,-0.544],[7.506,-39.145],[4.405,-38.273],[-4.423,-0.917],[-7.071,37.385],[-4.369,39.146]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.216000007181,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[374.776,236.163],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 345","np":4,"cix":2,"ix":345,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-4.76,12.173],[0.623,-0.675],[2.041,-13.457],[-0.393,-0.831],[0,0]],"o":[[0,0],[0,0],[-0.622,0.676],[-2.041,13.456],[0.395,0.831],[-0.935,-13.046]],"v":[[-1.123,-0.437],[6.991,-34.723],[3.536,-33.905],[-4.173,-0.904],[-6.598,32.907],[-3.542,34.723]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.969000004787,0.216000007181,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[372.092,235.776],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 346","np":4,"cix":2,"ix":346,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-4.584,11.015],[0.613,-0.605],[1.854,-12.221],[-0.404,-0.761],[0,0]],"o":[[0,0],[0,0],[-0.611,0.606],[-1.853,12.221],[0.406,0.761],[-1.109,-11.889]],"v":[[-0.69,-0.419],[6.94,-31.518],[2.667,-30.949],[-3.741,-0.886],[-6.536,29.73],[-2.627,31.554]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.172999991623,0.176000004189,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[369.039,235.357],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 347","np":4,"cix":2,"ix":347,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.2,0.03],[0.012,-0.075],[0,0],[-0.201,-0.03],[-0.011,0.075],[0,0]],"o":[[-0.201,-0.031],[0,0],[-0.011,0.075],[0.201,0.031],[0,0],[0.011,-0.075]],"v":[[0.281,-1.853],[-0.104,-1.772],[-0.624,1.661],[-0.281,1.853],[0.103,1.772],[0.624,-1.661]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.216000007181,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[349.386,251.729],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 348","np":4,"cix":2,"ix":348,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.243,0.038],[0.024,-0.159],[0,0],[-0.243,-0.038],[-0.024,0.159],[0,0]],"o":[[-0.243,-0.037],[0,0],[-0.025,0.159],[0.243,0.037],[0,0],[0.025,-0.159]],"v":[[0.589,-3.885],[0.106,-3.664],[-0.985,3.529],[-0.589,3.885],[-0.105,3.664],[0.985,-3.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.216000007181,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[348.809,251.641],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 349","np":4,"cix":2,"ix":349,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.001,0.153],[0.764,0.117],[0,0],[0,0],[0,0],[-0.762,-0.118],[-1.002,-0.154],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.002,-0.153],[-0.763,-0.117],[0,0],[0,0],[0,0],[0.764,0.117],[1.002,0.154],[0,0]],"v":[[14.155,-0.799],[15.576,-0.581],[15.138,2.296],[14.702,5.174],[13.281,4.956],[12.681,4.079],[-8.835,0.781],[-11.091,1.173],[-15.576,0.484],[-15.147,-2.344],[-14.717,-5.174],[-10.233,-4.486],[-8.195,-3.439],[13.323,-0.141]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.969000004787,0.216000007181,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[333.302,249.288],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 350","np":4,"cix":2,"ix":350,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.757,-2.967],[-1.602,2.605],[0.757,2.967],[1.601,-2.605]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.969000004787,0.216000007181,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[362.83,250.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 351","np":4,"cix":2,"ix":351,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-21.609,-4.707],[-22.023,-1.98],[21.609,4.706],[22.023,1.98]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.172999991623,0.176000004189,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[340.424,247.309],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 352","np":4,"cix":2,"ix":352,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.2,0.031],[-0.011,0.075],[0,0],[-0.201,-0.031],[0.012,-0.075],[0,0]],"o":[[-0.201,-0.03],[0,0],[0.011,-0.075],[0.201,0.03],[0,0],[-0.012,0.075]],"v":[[-0.281,1.853],[-0.624,1.661],[-0.103,-1.772],[0.281,-1.853],[0.623,-1.661],[0.103,1.772]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.216000007181,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[355.225,213.229],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 353","np":4,"cix":2,"ix":353,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.243,0.037],[-0.024,0.159],[0,0],[-0.243,-0.037],[0.025,-0.159],[0,0]],"o":[[-0.243,-0.037],[0,0],[0.024,-0.159],[0.243,0.038],[0,0],[-0.024,0.159]],"v":[[-0.59,3.885],[-0.986,3.53],[0.105,-3.664],[0.589,-3.885],[0.985,-3.529],[-0.106,3.664]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.216000007181,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[354.65,213.141],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 354","np":4,"cix":2,"ix":354,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.002,0.155],[0.764,0.117],[0,0],[0,0],[0,0],[-0.764,-0.117],[-1.002,-0.153],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.002,-0.153],[-0.763,-0.118],[0,0],[0,0],[0,0],[0.764,0.116],[1.002,0.154],[0,0]],"v":[[13.281,4.956],[14.702,5.174],[15.138,2.297],[15.575,-0.58],[14.154,-0.798],[13.322,-0.141],[-8.195,-3.439],[-10.233,-4.486],[-14.717,-5.174],[-15.147,-2.345],[-15.575,0.484],[-11.091,1.173],[-8.835,0.782],[12.682,4.079]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.969000004787,0.216000007181,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.142,210.788],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 355","np":4,"cix":2,"ix":355,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.602,2.605],[-0.757,-2.966],[1.602,-2.605],[0.756,2.966]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.969000004787,0.216000007181,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[367.766,218.199],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 356","np":4,"cix":2,"ix":356,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-22.023,-1.98],[-21.61,-4.707],[22.023,1.981],[21.61,4.707]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.172999991623,0.176000004189,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[345.36,214.765],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 357","np":4,"cix":2,"ix":357,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.944,31.167],[6.43,-30.633],[2.943,-31.167],[-6.43,30.633]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.902000038297,0.2,0.204000001795,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[359.584,233.595],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 358","np":4,"cix":2,"ix":358,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.163,0.311],[-1.017,-0.645],[1.164,-0.311],[1.018,0.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.788000009574,0.626999978458,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[362.181,235.895],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 359","np":4,"cix":2,"ix":359,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.163,0.311],[-1.018,-0.645],[1.163,-0.311],[1.019,0.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.788000009574,0.626999978458,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[362.745,232.178],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 360","np":4,"cix":2,"ix":360,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.146,-0.117],[-0.092,-0.117],[0,0],[-0.145,0.116],[0.093,0.117],[0,0]],"o":[[-0.146,0.117],[0,0],[0.093,0.117],[0.147,-0.117],[0,0],[-0.093,-0.117]],"v":[[-6.637,-8.401],[-6.734,-7.977],[6.204,8.401],[6.637,8.402],[6.733,7.978],[-6.204,-8.4]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[283.964,119.033],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 361","np":4,"cix":2,"ix":361,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.073,-0.058],[0.047,0.058],[0,0],[-0.073,0.059],[-0.046,-0.058],[0,0]],"o":[[-0.073,0.059],[0,0],[-0.046,-0.059],[0.073,-0.059],[0,0],[0.047,0.059]],"v":[[5.209,6.593],[4.992,6.593],[-5.258,-6.382],[-5.209,-6.594],[-4.993,-6.594],[5.257,6.382]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[291.843,124.362],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 362","np":4,"cix":2,"ix":362,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.073,0.059],[0.046,0.059],[0,0],[0.074,-0.058],[-0.047,-0.058],[0,0]],"o":[[0.073,-0.058],[0,0],[-0.047,-0.059],[-0.073,0.059],[0,0],[0.047,0.058]],"v":[[3.613,4.572],[3.661,4.361],[-3.396,-4.573],[-3.613,-4.574],[-3.66,-4.362],[3.396,4.572]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.573,114.486],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 363","np":4,"cix":2,"ix":363,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.11,0.087],[0.07,0.088],[0,0],[0.11,-0.088],[-0.07,-0.087],[0,0]],"o":[[0.109,-0.087],[0,0],[-0.069,-0.088],[-0.109,0.087],[0,0],[0.069,0.088]],"v":[[5.251,6.647],[5.323,6.329],[-4.927,-6.645],[-5.252,-6.646],[-5.324,-6.329],[4.926,6.646]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.466,113.44],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 364","np":4,"cix":2,"ix":364,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.109,0.087],[-0.069,-0.088],[0,0],[0.11,-0.087],[0.07,0.088],[0,0]],"o":[[0.109,-0.087],[0,0],[0.07,0.087],[-0.11,0.088],[0,0],[-0.07,-0.088]],"v":[[-2.1,-2.659],[-1.776,-2.658],[2.173,2.341],[2.101,2.658],[1.776,2.657],[-2.172,-2.341]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[302.492,119.675],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 365","np":4,"cix":2,"ix":365,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.109,-0.087],[0.07,0.088],[0,0],[-0.11,0.088],[-0.069,-0.088],[0,0]],"o":[[-0.11,0.088],[0,0],[-0.069,-0.089],[0.109,-0.087],[0,0],[0.07,0.089]],"v":[[5.419,6.859],[5.094,6.858],[-5.492,-6.541],[-5.419,-6.86],[-5.095,-6.859],[5.491,6.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[300.296,111.976],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 366","np":4,"cix":2,"ix":366,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.109,-0.087],[-0.07,-0.088],[0,0],[-0.11,0.087],[0.069,0.088],[0,0]],"o":[[-0.109,0.087],[0,0],[0.07,0.088],[0.109,-0.087],[0,0],[-0.069,-0.088]],"v":[[-3.654,-4.626],[-3.727,-4.308],[3.331,4.625],[3.656,4.626],[3.728,4.308],[-3.331,-4.625]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[306.496,113.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 367","np":4,"cix":2,"ix":367,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.073,-0.059],[0.047,0.059],[0,0],[-0.073,0.058],[-0.046,-0.059],[0,0]],"o":[[-0.073,0.058],[0,0],[-0.046,-0.059],[0.073,-0.058],[0,0],[0.047,0.059]],"v":[[2.899,3.669],[2.682,3.668],[-2.947,-3.457],[-2.898,-3.669],[-2.682,-3.668],[2.947,3.457]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[306.605,107.805],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 368","np":4,"cix":2,"ix":368,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.109,-0.087],[0.069,0.088],[0,0],[-0.109,0.087],[-0.069,-0.089],[0,0]],"o":[[-0.109,0.087],[0,0],[-0.07,-0.088],[0.11,-0.088],[0,0],[0.07,0.088]],"v":[[2.94,3.722],[2.616,3.722],[-3.013,-3.403],[-2.941,-3.721],[-2.617,-3.721],[3.013,3.404]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[312.688,107.718],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 369","np":4,"cix":2,"ix":369,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[16.782,-28.377],[-16.781,10.519],[-2.672,28.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[309.207,129.334],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 370","np":4,"cix":2,"ix":370,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[30.833,-28.377],[-30.833,-25.055],[11.379,28.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.713999968884,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[295.155,129.334],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 371","np":4,"cix":2,"ix":371,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.12,-0.096],[-0.076,-0.097],[0,0],[-0.12,0.096],[0.076,0.097],[0,0]],"o":[[-0.12,0.095],[0,0],[0.076,0.096],[0.119,-0.095],[0,0],[-0.076,-0.096]],"v":[[-5.456,-6.907],[-5.534,-6.559],[5.103,6.905],[5.457,6.906],[5.535,6.559],[-5.103,-6.906]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[304.841,147.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 372","np":4,"cix":2,"ix":372,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.061,-0.048],[0.038,0.048],[0,0],[-0.06,0.048],[-0.038,-0.049],[0,0]],"o":[[-0.06,0.047],[0,0],[-0.038,-0.048],[0.06,-0.048],[0,0],[0.038,0.048]],"v":[[4.282,5.421],[4.105,5.42],[-4.322,-5.246],[-4.282,-5.42],[-4.105,-5.419],[4.322,5.247]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.311,151.68],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 373","np":4,"cix":2,"ix":373,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.06,0.048],[0.038,0.049],[0,0],[0.059,-0.048],[-0.038,-0.048],[0,0]],"o":[[0.061,-0.048],[0,0],[-0.038,-0.048],[-0.06,0.048],[0,0],[0.038,0.048]],"v":[[2.97,3.759],[3.01,3.585],[-2.792,-3.759],[-2.969,-3.76],[-3.009,-3.586],[2.793,3.758]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[308.613,143.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 374","np":4,"cix":2,"ix":374,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.09,0.072],[0.057,0.073],[0,0],[0.09,-0.072],[-0.058,-0.073],[0,0]],"o":[[0.09,-0.071],[0,0],[-0.058,-0.073],[-0.09,0.071],[0,0],[0.058,0.072]],"v":[[4.317,5.464],[4.376,5.203],[-4.05,-5.463],[-4.317,-5.464],[-4.375,-5.203],[4.05,5.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[312.624,142.718],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 375","np":4,"cix":2,"ix":375,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.09,0.072],[-0.057,-0.072],[0,0],[0.09,-0.072],[0.056,0.072],[0,0]],"o":[[0.09,-0.072],[0,0],[0.056,0.073],[-0.09,0.071],[0,0],[-0.056,-0.073]],"v":[[-1.726,-2.186],[-1.46,-2.184],[1.786,1.924],[1.727,2.187],[1.462,2.185],[-1.786,-1.924]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[320.036,147.849],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 376","np":4,"cix":2,"ix":376,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,-0.071],[0.058,0.072],[0,0],[-0.09,0.072],[-0.056,-0.073],[0,0]],"o":[[-0.09,0.072],[0,0],[-0.056,-0.072],[0.09,-0.072],[0,0],[0.056,0.073]],"v":[[4.454,5.639],[4.188,5.638],[-4.515,-5.378],[-4.455,-5.639],[-4.19,-5.637],[4.514,5.378]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[318.222,141.527],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 377","np":4,"cix":2,"ix":377,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,-0.071],[-0.057,-0.073],[0,0],[-0.09,0.072],[0.057,0.073],[0,0]],"o":[[-0.09,0.072],[0,0],[0.057,0.072],[0.09,-0.071],[0,0],[-0.058,-0.072]],"v":[[-3.004,-3.804],[-3.064,-3.542],[2.738,3.801],[3.004,3.802],[3.064,3.541],[-2.737,-3.803]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[323.309,142.599],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 378","np":4,"cix":2,"ix":378,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.06,-0.048],[0.038,0.047],[0,0],[-0.06,0.048],[-0.038,-0.049],[0,0]],"o":[[-0.061,0.048],[0,0],[-0.039,-0.049],[0.06,-0.048],[0,0],[0.038,0.049]],"v":[[2.384,3.016],[2.206,3.016],[-2.422,-2.842],[-2.383,-3.016],[-2.206,-3.015],[2.422,2.842]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[323.389,138.115],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 379","np":4,"cix":2,"ix":379,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,-0.072],[0.058,0.072],[0,0],[-0.09,0.072],[-0.057,-0.072],[0,0]],"o":[[-0.089,0.072],[0,0],[-0.056,-0.073],[0.09,-0.071],[0,0],[0.056,0.073]],"v":[[2.417,3.059],[2.151,3.059],[-2.477,-2.799],[-2.417,-3.061],[-2.151,-3.06],[2.477,2.798]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.377,138.054],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 380","np":4,"cix":2,"ix":380,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[13.729,-23.276],[-13.729,8.593],[-2.13,23.275]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.838999968884,0.616000007181,0.294000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[325.543,155.801],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 381","np":4,"cix":2,"ix":381,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[25.281,-23.276],[-25.281,-20.651],[9.422,23.275]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.957000014361,0.713999968884,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[313.991,155.801],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 382","np":4,"cix":2,"ix":382,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.216,0.812],[0.807,-0.216],[0,0]],"o":[[0,0],[0.807,-0.217],[-0.217,-0.812],[0,0],[0,0]],"v":[[-0.587,1.668],[0.085,1.488],[1.155,-0.375],[-0.699,-1.452],[-1.371,-1.271]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.435000011968,0.603999956916,0.620000023935,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[403.621,156.959],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 383","np":4,"cix":2,"ix":383,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.347,6.395],[-3.484,-5.365],[0.347,-6.394],[3.484,5.366]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.365000017952,0.552999997606,0.569000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[351.999,170.762],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 384","np":4,"cix":2,"ix":384,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.465,2.385],[-1.59,-1.833],[0.465,-2.385],[1.59,1.834]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.325,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[401.614,157.434],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 385","np":4,"cix":2,"ix":385,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.44,5.775],[-2.495,-5.223],[-0.439,-5.775],[2.495,5.223]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.325,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[354.942,169.971],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 386","np":4,"cix":2,"ix":386,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.713,10.552],[-3.768,-10],[-1.714,-10.552],[3.768,10]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.325,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[338.772,174.315],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 387","np":4,"cix":2,"ix":387,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-53.848,15.365],[0,0],[0,0],[0,0],[0,0],[0,0],[8.542,-5.382],[0,0]],"o":[[0,0],[0,0],[-54.296,13.685],[0,0],[10.078,0.379],[0,0],[0,0],[0,0]],"v":[[32.053,-10.041],[31.604,-11.721],[31.156,-13.4],[-32.052,-3.88],[-30.35,1.063],[2.001,-3.77],[-28.43,8.264],[-27.443,13.4]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.435000011968,0.603999956916,0.620000023935,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[368.983,169.431],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 388","np":4,"cix":2,"ix":388,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.087,0.328],[0,0],[0.326,-0.088],[0,0]],"o":[[0,0],[0.327,-0.087],[0,0],[-0.087,-0.328],[0,0],[0,0]],"v":[[0.283,3.88],[1.179,3.639],[1.612,2.886],[-0.054,-3.357],[-0.803,-3.792],[-1.699,-3.552]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.325,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[325.957,191.789],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 389","np":4,"cix":2,"ix":389,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.087,0.328],[0,0],[0.326,-0.088],[0,0]],"o":[[0,0],[0.327,-0.087],[0,0],[-0.087,-0.328],[0,0],[0,0]],"v":[[0.283,3.88],[1.179,3.639],[1.612,2.886],[-0.054,-3.357],[-0.803,-3.792],[-1.699,-3.552]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.325,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[318.986,165.65],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 390","np":4,"cix":2,"ix":390,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[8.104,2.135],[0,0],[-2.291,-8.591],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[2.291,8.59],[0,0],[5.957,-5.913]],"v":[[10.713,6.111],[8.044,-3.893],[5.376,-13.898],[-10.713,-15.985],[-9.118,-10.004],[2.42,-2.382],[-3.781,10.005],[-2.185,15.986]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.435000011968,0.603999956916,0.620000023935,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[329.7,178.485],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 391","np":4,"cix":2,"ix":391,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.037,0.137],[-0.137,0.037],[0,0],[-0.037,-0.137],[0.135,-0.036]],"o":[[-0.136,0.037],[-0.037,-0.136],[0,0],[0.135,-0.037],[0.036,0.137],[0,0]],"v":[[-4.193,1.391],[-4.505,1.21],[-4.325,0.896],[4.194,-1.391],[4.506,-1.21],[4.326,-0.897]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.325,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[405.537,156.38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 392","np":4,"cix":2,"ix":392,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.716,0.496],[-0.456,0.745],[-0.715,-0.496],[0.457,-0.745]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[194.855,50.699],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 393","np":4,"cix":2,"ix":393,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.715,0.496],[-0.457,0.745],[-0.716,-0.496],[0.456,-0.745]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.387,51.221],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 394","np":4,"cix":2,"ix":394,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.715,0.496],[-0.457,0.745],[-0.716,-0.496],[0.456,-0.745]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[189.919,51.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 395","np":4,"cix":2,"ix":395,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.715,0.496],[-0.457,0.745],[-0.716,-0.497],[0.456,-0.745]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.451,52.263],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 396","np":4,"cix":2,"ix":396,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.715,0.496],[-0.457,0.745],[-0.716,-0.496],[0.456,-0.745]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[184.982,52.784],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 397","np":4,"cix":2,"ix":397,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.716,0.496],[-0.456,0.745],[-0.716,-0.497],[0.457,-0.745]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[182.514,53.306],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 398","np":4,"cix":2,"ix":398,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.716,0.496],[-0.456,0.745],[-0.715,-0.496],[0.457,-0.745]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[180.046,53.827],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 399","np":4,"cix":2,"ix":399,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.268,-1.287],[-8.084,2.166],[-8.268,1.287],[8.084,-2.166]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.85,54.178],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 400","np":4,"cix":2,"ix":400,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.261,-0.393],[-7.721,2.982],[-8.261,0.393],[7.72,-2.982]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.851,54.178],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 401","np":4,"cix":2,"ix":401,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.869,3.23],[-2.248,4.523],[-3.868,-3.231],[2.248,-4.523]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.26699999641,0.231000010173,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.814,58.788],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 402","np":4,"cix":2,"ix":402,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7.581,-0.292],[-7.057,2.799],[-7.581,0.291],[7.057,-2.799]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.722000002394,0.62400004069,0.54900004069,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.847,58.946],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 403","np":4,"cix":2,"ix":403,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.272,3.015],[-6.366,6.106],[-8.272,-3.015],[6.365,-6.106]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.671,58.103],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 404","np":4,"cix":2,"ix":404,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.038,0.608],[-6.04,1.838],[6.039,-0.712],[5.546,-1.838]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.11,73.996],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 405","np":4,"cix":2,"ix":405,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.317,0.878],[-7.318,2.108],[7.318,-0.982],[6.825,-2.108]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.382,80.083],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 406","np":4,"cix":2,"ix":406,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.678,0.743],[-6.679,1.973],[6.679,-0.847],[6.185,-1.973]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.746,77.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 407","np":4,"cix":2,"ix":407,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.12,0.203],[-4.121,1.433],[4.121,-0.307],[3.628,-1.433]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[190.202,64.866],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 408","np":4,"cix":2,"ix":408,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.399,0.473],[-5.4,1.703],[5.4,-0.577],[4.906,-1.703]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[191.474,70.953],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 409","np":4,"cix":2,"ix":409,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.759,0.338],[-4.76,1.568],[4.76,-0.442],[4.266,-1.568]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[190.838,67.91],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 410","np":4,"cix":2,"ix":410,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.957,1.013],[-7.958,2.243],[7.958,-1.117],[7.464,-2.243]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[194.018,83.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 411","np":4,"cix":2,"ix":411,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.434,-2.063],[11.94,-3.188],[-12.434,1.959],[-12.435,3.188]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[198.47,104.43],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 412","np":4,"cix":2,"ix":412,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-11.794,1.823],[-11.795,3.053],[11.794,-1.927],[11.3,-3.053]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.835,101.387],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 413","np":4,"cix":2,"ix":413,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-11.154,1.688],[-11.155,2.919],[11.155,-1.792],[10.661,-2.919]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.198,98.343],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 414","np":4,"cix":2,"ix":414,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.596,1.148],[-8.597,2.378],[8.597,-1.252],[8.104,-2.378]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[194.654,86.17],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 415","np":4,"cix":2,"ix":415,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.515,1.553],[-10.516,2.783],[10.516,-1.658],[10.022,-2.783]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.562,95.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 416","np":4,"cix":2,"ix":416,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.236,1.283],[-9.237,2.513],[9.237,-1.388],[8.743,-2.513]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[195.291,89.214],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 417","np":4,"cix":2,"ix":417,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.875,1.418],[-9.876,2.648],[9.876,-1.522],[9.383,-2.648]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[195.926,92.257],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 418","np":4,"cix":2,"ix":418,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-5.638,-23.681],[-9.178,-22.932],[-12.719,-22.185],[-12.768,23.681],[0,20.984],[12.768,18.289]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[198.802,85.596],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 419","np":4,"cix":2,"ix":419,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-4.355,-24.304],[-9.178,-23.286],[-14.001,-22.267],[-17.392,24.304],[0,20.631],[17.393,16.959]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.722000002394,0.62400004069,0.54900004069,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[198.802,85.949],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 420","np":4,"cix":2,"ix":420,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.949,-1.88],[-14.438,4.326],[-14.949,1.88],[14.438,-4.326]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[189.88,63.886],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 421","np":4,"cix":2,"ix":421,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.349,0.034],[-14.038,6.24],[-15.349,-0.034],[14.038,-6.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[190.279,65.801],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 422","np":4,"cix":2,"ix":422,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[19.908,-2.927],[-19.396,5.373],[-19.908,2.927],[19.396,-5.373]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[191.191,70.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 423","np":4,"cix":2,"ix":423,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[20.266,-1.215],[-19.038,7.085],[-20.266,1.215],[19.038,-7.085]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[191.633,72.276],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 424","np":4,"cix":2,"ix":424,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[23.637,-3.715],[-23.127,6.16],[-23.637,3.715],[23.126,-6.16]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.502,76.434],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 425","np":4,"cix":2,"ix":425,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[23.995,-2.003],[-22.768,7.872],[-23.995,2.003],[22.768,-7.872]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.944,78.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 426","np":4,"cix":2,"ix":426,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27.52,-4.534],[-27.009,6.98],[-27.52,4.535],[27.008,-6.98]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.813,82.708],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 427","np":4,"cix":2,"ix":427,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27.878,-2.823],[-26.65,8.693],[-27.878,2.823],[26.65,-8.693]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[194.255,84.824],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 428","np":4,"cix":2,"ix":428,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[31.832,-5.445],[-31.321,7.891],[-31.832,5.445],[31.321,-7.891]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[195.124,88.982],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 429","np":4,"cix":2,"ix":429,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.189,-3.733],[-30.963,9.603],[-32.189,3.733],[30.962,-9.603]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[195.566,91.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 430","np":4,"cix":2,"ix":430,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[35.752,-6.273],[-35.241,8.718],[-35.752,6.272],[35.24,-8.718]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.436,95.256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 431","np":4,"cix":2,"ix":431,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.109,-4.561],[-34.883,10.431],[-36.11,4.561],[34.882,-10.431]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.878,97.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 432","np":4,"cix":2,"ix":432,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[40.16,-7.204],[-39.65,9.65],[-40.161,7.203],[39.648,-9.65]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.528999956916,0.455000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.747,101.53],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 433","np":4,"cix":2,"ix":433,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[40.518,-5.492],[-39.292,11.362],[-40.519,5.491],[39.291,-11.362]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.411999990426,0.352999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[198.189,103.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 434","np":4,"cix":2,"ix":434,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.113,0.029],[-0.028,-0.114],[0,0],[0.114,-0.027],[0.027,0.114]],"o":[[-0.027,-0.114],[0.115,-0.027],[0,0],[0.028,0.114],[-0.114,0.028],[0,0]],"v":[[-0.977,-3.079],[-0.822,-3.339],[-0.564,-3.182],[0.975,3.079],[0.82,3.337],[0.563,3.182]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.868,377.794],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 435","np":4,"cix":2,"ix":435,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.114,0.029],[-0.028,-0.114],[0,0],[0.113,-0.028],[0.028,0.114]],"o":[[-0.028,-0.114],[0.115,-0.028],[0,0],[0.028,0.115],[-0.114,0.028],[0,0]],"v":[[-0.976,-3.079],[-0.821,-3.338],[-0.563,-3.182],[0.976,3.079],[0.821,3.338],[0.563,3.182]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[274.348,377.426],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 436","np":4,"cix":2,"ix":436,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.114,0.029],[-0.027,-0.114],[0,0],[0.113,-0.028],[0.028,0.114]],"o":[[-0.028,-0.114],[0.115,-0.028],[0,0],[0.027,0.114],[-0.114,0.028],[0,0]],"v":[[-0.975,-3.079],[-0.82,-3.338],[-0.564,-3.182],[0.977,3.08],[0.822,3.338],[0.563,3.183]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[275.828,377.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 437","np":4,"cix":2,"ix":437,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.114,0.029],[-0.028,-0.114],[0,0],[0.114,-0.028],[0.028,0.114]],"o":[[-0.028,-0.115],[0.114,-0.028],[0,0],[0.028,0.114],[-0.113,0.028],[0,0]],"v":[[-0.975,-3.079],[-0.82,-3.338],[-0.563,-3.182],[0.976,3.079],[0.821,3.338],[0.564,3.182]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[277.308,376.691],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 438","np":4,"cix":2,"ix":438,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.114,0.029],[-0.028,-0.114],[0,0],[0.114,-0.028],[0.028,0.114]],"o":[[-0.028,-0.114],[0.114,-0.028],[0,0],[0.028,0.114],[-0.114,0.028],[0,0]],"v":[[-0.975,-3.079],[-0.82,-3.338],[-0.564,-3.182],[0.975,3.08],[0.82,3.338],[0.563,3.183]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[278.789,376.323],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 439","np":4,"cix":2,"ix":439,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.113,0.029],[-0.028,-0.115],[0,0],[0.114,-0.028],[0.028,0.114]],"o":[[-0.028,-0.115],[0.115,-0.028],[0,0],[0.028,0.114],[-0.114,0.028],[0,0]],"v":[[-0.976,-3.079],[-0.821,-3.338],[-0.563,-3.182],[0.976,3.079],[0.821,3.338],[0.563,3.182]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.269,375.955],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 440","np":4,"cix":2,"ix":440,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.084,0.343],[-0.34,0.084],[0,0],[-0.084,-0.343],[0.339,-0.084],[0,0]],"o":[[-0.085,-0.342],[0,0],[0.341,-0.084],[0.084,0.341],[0,0],[-0.34,0.084]],"v":[[-0.97,0.241],[-0.507,-0.531],[0.203,-0.707],[0.971,-0.241],[0.508,0.53],[-0.202,0.707]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752999997606,0.62400004069,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[281.451,396.734],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 441","np":4,"cix":2,"ix":441,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.801,8.642],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[6.483,6.337]],"v":[[3.407,8.54],[3.849,8.43],[4.292,8.319],[5.288,-8.54],[0.001,-7.227],[-5.287,-5.913]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[277.615,388.357],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 442","np":4,"cix":2,"ix":442,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-2.655,4.555],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[4.46,2.788]],"v":[[-3.119,5.734],[1.911,4.486],[2.02,4.458],[7.05,3.21],[8.905,-5.734],[0.055,-3.536],[-0.055,-3.508],[-8.905,-1.31]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[273.524,368.015],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 443","np":4,"cix":2,"ix":443,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.516,1.53],[8.245,-2.633],[8.515,-1.53],[-8.245,2.634]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.709999952129,0.552999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[273.388,363.942],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 444","np":4,"cix":2,"ix":444,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.037,-0.149],[0,0],[0.149,-0.037],[0.037,0.15]],"o":[[-0.037,-0.15],[0.15,-0.037],[0,0],[0.037,0.151],[-0.151,0.037],[0,0]],"v":[[-0.859,-2.327],[-0.656,-2.666],[-0.318,-2.462],[0.859,2.328],[0.656,2.667],[0.318,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[265.898,361.511],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 445","np":4,"cix":2,"ix":445,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.037,-0.15],[0,0],[0.149,-0.037],[0.037,0.15]],"o":[[-0.036,-0.15],[0.15,-0.037],[0,0],[0.036,0.151],[-0.15,0.037],[0,0]],"v":[[-0.86,-2.328],[-0.656,-2.667],[-0.318,-2.463],[0.86,2.327],[0.656,2.666],[0.318,2.461]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[267.522,361.108],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 446","np":4,"cix":2,"ix":446,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.037,-0.15],[0,0],[0.149,-0.037],[0.037,0.15]],"o":[[-0.037,-0.15],[0.151,-0.037],[0,0],[0.037,0.15],[-0.15,0.037],[0,0]],"v":[[-0.859,-2.327],[-0.657,-2.667],[-0.319,-2.462],[0.859,2.328],[0.655,2.667],[0.317,2.462]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.147,360.704],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 447","np":4,"cix":2,"ix":447,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.036,-0.15],[0,0],[0.15,-0.037],[0.037,0.15]],"o":[[-0.037,-0.15],[0.15,-0.037],[0,0],[0.037,0.151],[-0.15,0.037],[0,0]],"v":[[-0.859,-2.327],[-0.655,-2.667],[-0.318,-2.462],[0.86,2.327],[0.656,2.667],[0.319,2.462]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[270.771,360.301],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 448","np":4,"cix":2,"ix":448,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.037,-0.15],[0,0],[0.149,-0.037],[0.037,0.15]],"o":[[-0.037,-0.15],[0.15,-0.037],[0,0],[0.037,0.151],[-0.15,0.037],[0,0]],"v":[[-0.859,-2.327],[-0.655,-2.667],[-0.317,-2.462],[0.86,2.327],[0.657,2.667],[0.319,2.462]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.395,359.898],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 449","np":4,"cix":2,"ix":449,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.037,-0.15],[0,0],[0.149,-0.037],[0.037,0.15]],"o":[[-0.037,-0.149],[0.15,-0.037],[0,0],[0.037,0.151],[-0.15,0.037],[0,0]],"v":[[-0.859,-2.328],[-0.656,-2.667],[-0.318,-2.462],[0.86,2.327],[0.656,2.667],[0.318,2.462]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[274.02,359.494],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 450","np":4,"cix":2,"ix":450,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.15,0.037],[-0.037,-0.15],[0,0],[0.149,-0.037],[0.036,0.15]],"o":[[-0.037,-0.15],[0.15,-0.037],[0,0],[0.037,0.151],[-0.15,0.037],[0,0]],"v":[[-0.859,-2.327],[-0.655,-2.666],[-0.318,-2.461],[0.86,2.328],[0.656,2.667],[0.319,2.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[275.644,359.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 451","np":4,"cix":2,"ix":451,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.036,-0.15],[0,0],[0.149,-0.037],[0.037,0.15]],"o":[[-0.037,-0.15],[0.15,-0.037],[0,0],[0.037,0.151],[-0.151,0.037],[0,0]],"v":[[-0.859,-2.328],[-0.656,-2.667],[-0.319,-2.463],[0.859,2.327],[0.656,2.666],[0.318,2.461]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[277.268,358.687],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 452","np":4,"cix":2,"ix":452,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.149,0.037],[-0.037,-0.15],[0,0],[0.149,-0.037],[0.037,0.15]],"o":[[-0.036,-0.15],[0.15,-0.037],[0,0],[0.036,0.15],[-0.15,0.037],[0,0]],"v":[[-0.86,-2.327],[-0.656,-2.667],[-0.318,-2.462],[0.86,2.328],[0.656,2.667],[0.318,2.462]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.569000004787,0.470999983245,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[278.892,358.284],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 453","np":4,"cix":2,"ix":453,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.06,-0.103],[0.102,-0.06],[0,0],[0.059,0.103],[-0.103,0.06]],"o":[[0.103,-0.06],[0.059,0.104],[0,0],[-0.103,0.06],[-0.06,-0.103],[0,0]],"v":[[0.706,-0.659],[0.999,-0.58],[0.921,-0.285],[-0.706,0.659],[-0.999,0.581],[-0.921,0.286]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.049,349.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 454","np":4,"cix":2,"ix":454,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.097,0.069],[-0.068,-0.098],[0,0],[0.097,-0.069],[0.067,0.098]],"o":[[-0.067,-0.098],[0.097,-0.068],[0,0],[0.067,0.098],[-0.098,0.068],[0,0]],"v":[[-0.715,-0.649],[-0.663,-0.95],[-0.363,-0.897],[0.716,0.649],[0.663,0.95],[0.363,0.897]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[270.401,349.776],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 455","np":4,"cix":2,"ix":455,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.041,0.026],[-0.026,0.041],[0,0],[-0.041,-0.024],[0.025,-0.042]],"o":[[-0.025,0.041],[-0.041,-0.024],[0,0],[0.026,-0.042],[0.041,0.025],[0,0]],"v":[[-0.226,0.547],[-0.346,0.576],[-0.375,0.456],[0.227,-0.548],[0.347,-0.578],[0.377,-0.457]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.029,351.99],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 456","np":4,"cix":2,"ix":456,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.042,0.026],[-0.026,0.041],[0,0],[-0.041,-0.025],[0.024,-0.042]],"o":[[-0.024,0.041],[-0.041,-0.025],[0,0],[0.026,-0.042],[0.042,0.025],[0,0]],"v":[[-0.227,0.548],[-0.347,0.577],[-0.376,0.457],[0.226,-0.547],[0.346,-0.577],[0.377,-0.456]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[271.593,346.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 457","np":4,"cix":2,"ix":457,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.025,0.042],[-0.041,-0.026],[0,0],[0.026,-0.042],[0.042,0.026]],"o":[[-0.042,-0.025],[0.025,-0.041],[0,0],[0.041,0.025],[-0.024,0.042],[0,0]],"v":[[-0.544,-0.227],[-0.574,-0.348],[-0.454,-0.377],[0.545,0.228],[0.574,0.349],[0.454,0.378]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[266.86,347.231],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 458","np":4,"cix":2,"ix":458,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.025,0.042],[-0.041,-0.026],[0,0],[0.026,-0.041],[0.042,0.025]],"o":[[-0.041,-0.025],[0.025,-0.041],[0,0],[0.041,0.024],[-0.024,0.042],[0,0]],"v":[[-0.546,-0.228],[-0.575,-0.349],[-0.455,-0.378],[0.544,0.228],[0.573,0.348],[0.453,0.379]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.763,350.813],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 459","np":4,"cix":2,"ix":459,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.01,0.046],[-0.047,0.012],[0,0],[-0.011,-0.047],[0.047,-0.012]],"o":[[-0.047,0.012],[-0.012,-0.047],[0,0],[0.047,-0.012],[0.012,0.047],[0,0]],"v":[[-0.546,0.226],[-0.651,0.162],[-0.588,0.055],[0.545,-0.226],[0.65,-0.162],[0.587,-0.055]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[266.464,349.854],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 460","np":4,"cix":2,"ix":460,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.011,0.047],[-0.047,0.011],[0,0],[-0.011,-0.047],[0.047,-0.012]],"o":[[-0.047,0.012],[-0.012,-0.047],[0,0],[0.048,-0.011],[0.012,0.047],[0,0]],"v":[[-0.545,0.225],[-0.651,0.161],[-0.587,0.055],[0.545,-0.227],[0.651,-0.163],[0.587,-0.056]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[273.158,348.191],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 461","np":4,"cix":2,"ix":461,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.046,0.011],[-0.011,-0.048],[0,0],[0.047,-0.012],[0.012,0.047]],"o":[[-0.012,-0.047],[0.047,-0.012],[0,0],[0.012,0.048],[-0.046,0.012],[0,0]],"v":[[-0.224,-0.548],[-0.161,-0.654],[-0.056,-0.59],[0.224,0.548],[0.16,0.654],[0.055,0.591]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.984,345.658],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 462","np":4,"cix":2,"ix":462,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.046,0.011],[-0.012,-0.047],[0,0],[0.047,-0.012],[0.012,0.047]],"o":[[-0.011,-0.047],[0.047,-0.012],[0,0],[0.012,0.047],[-0.047,0.012],[0,0]],"v":[[-0.225,-0.548],[-0.161,-0.654],[-0.055,-0.59],[0.225,0.549],[0.161,0.655],[0.055,0.591]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[270.639,352.387],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 463","np":4,"cix":2,"ix":463,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.609,2.478],[-2.463,0.613],[-0.61,-2.477],[2.464,-0.612]],"o":[[-0.608,-2.477],[2.464,-0.612],[0.608,2.477],[-2.463,0.612]],"v":[[-4.462,1.108],[-1.103,-4.485],[4.462,-1.108],[1.102,4.485]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.969000004787,0.933000033509,0.882000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.73,349.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 464","np":4,"cix":2,"ix":464,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.691,2.813],[-2.797,0.696],[-0.692,-2.812],[2.798,-0.695]],"o":[[-0.691,-2.813],[2.798,-0.695],[0.691,2.813],[-2.797,0.695]],"v":[[-5.066,1.259],[-1.252,-5.092],[5.066,-1.258],[1.252,5.092]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.729,349.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 465","np":4,"cix":2,"ix":465,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.06,8.892],[7.714,5.967],[4.06,-8.892],[-7.714,-5.967]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.709999952129,0.552999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.729,349.056],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 466","np":4,"cix":2,"ix":466,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.18,9.171],[8.833,5.691],[5.179,-9.17],[-8.833,-5.689]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752999997606,0.62400004069,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.73,349.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 467","np":4,"cix":2,"ix":467,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.22,9.428],[9.873,5.431],[6.219,-9.428],[-9.873,-5.431]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.709999952129,0.552999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.73,349.055],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 468","np":4,"cix":2,"ix":468,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.715,2.687],[5.417,0.17],[4.715,-2.687],[-5.417,-0.17]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.709999952129,0.552999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[277.264,379.702],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 469","np":4,"cix":2,"ix":469,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.914,5.941],[6.217,3.424],[3.914,-5.941],[-6.217,-3.424]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752999997606,0.62400004069,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[276.463,376.448],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 470","np":4,"cix":2,"ix":470,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.924,6.565],[9.169,2.568],[6.925,-6.564],[-9.168,-2.566]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752999997606,0.62400004069,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[272.165,358.96],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 471","np":4,"cix":2,"ix":471,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.003,9.623],[10.655,5.236],[7.002,-9.624],[-10.655,-5.237]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752999997606,0.62400004069,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.73,349.056],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 472","np":4,"cix":2,"ix":472,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.001,1.492],[8.657,-2.893],[9.001,-1.492],[-8.656,2.893]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.630999995213,0.510000011968,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[267.73,340.925],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 473","np":4,"cix":2,"ix":473,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.598,1.876],[8.478,-2.366],[8.598,-1.875],[-8.478,2.366]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.40800000359,0.344999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[265.541,332.02],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 474","np":4,"cix":2,"ix":474,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.598,1.876],[8.478,-2.366],[8.598,-1.875],[-8.477,2.366]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.40800000359,0.344999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[262.068,317.892],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 475","np":4,"cix":2,"ix":475,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.693,-18.09],[-4.229,-18.205],[4.694,18.089],[4.229,18.205]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[258.47,323.303],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 476","np":4,"cix":2,"ix":476,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.694,-18.09],[-4.229,-18.205],[4.694,18.09],[4.229,18.205]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[260.328,322.841],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 477","np":4,"cix":2,"ix":477,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.693,-18.089],[-4.228,-18.204],[4.694,18.09],[4.23,18.204]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[262.186,322.38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 478","np":4,"cix":2,"ix":478,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.694,-18.09],[-4.229,-18.205],[4.694,18.09],[4.229,18.205]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[264.044,321.918],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 479","np":4,"cix":2,"ix":479,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.693,-18.089],[-4.228,-18.205],[4.694,18.09],[4.229,18.205]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[265.901,321.457],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 480","np":4,"cix":2,"ix":480,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.693,-18.09],[-4.228,-18.205],[4.694,18.089],[4.23,18.205]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[267.76,320.995],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 481","np":4,"cix":2,"ix":481,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.493,0.953],[5.302,-1.729],[5.493,-0.951],[-5.302,1.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[258.275,302.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 482","np":4,"cix":2,"ix":482,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.802,-18.167],[1.14,-21.134],[10.802,18.167],[-1.141,21.134]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.709999952129,0.552999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[262.9,321.275],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 483","np":4,"cix":2,"ix":483,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.049,0.893],[9.305,-3.915],[10.048,-0.894],[-9.307,3.914]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[258.287,302.509],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 484","np":4,"cix":2,"ix":484,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.133,-16.569],[3.943,-20.811],[13.133,16.569],[-3.944,20.811]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.752999997606,0.62400004069,0.416000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[263.136,322.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 485","np":4,"cix":2,"ix":485,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.017,0.073],[-0.072,0.018],[0,0],[-0.019,-0.072],[0.072,-0.018]],"o":[[-0.071,0.018],[-0.018,-0.072],[0,0],[0.072,-0.017],[0.017,0.072],[0,0]],"v":[[-0.716,0.316],[-0.878,0.217],[-0.78,0.055],[0.717,-0.318],[0.88,-0.219],[0.781,-0.056]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[281.947,398.753],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 486","np":4,"cix":2,"ix":486,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.073,0.018],[-0.018,-0.073],[0,0],[0.072,-0.018],[0.018,0.072]],"o":[[-0.018,-0.072],[0.071,-0.018],[0,0],[0.019,0.072],[-0.073,0.017],[0,0]],"v":[[-0.867,-2.958],[-0.768,-3.122],[-0.607,-3.023],[0.866,2.973],[0.77,3.136],[0.607,3.037]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.255000005984,0.234999997008,0.219999994016,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[281.5,396.928],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 487","np":4,"cix":2,"ix":487,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.651,3.533],[1.644,9.921],[10.651,-0.57],[-7.347,-9.921]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[165.606,301.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 488","np":4,"cix":2,"ix":488,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-11.465,2.06],[4.32,10.259],[11.465,-0.909],[-6.533,-10.26]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.458999992819,0.328999986836,0.161000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[164.793,301.639],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 489","np":4,"cix":2,"ix":489,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.253,0.198],[-0.389,-0.126],[-0.526,-0.35],[1.083,-0.046],[0.665,0.473],[0.23,-0.006],[-0.022,0.191]],"o":[[0.253,-0.198],[0.389,0.126],[0.527,0.349],[0,0],[0,0],[-0.231,0.007],[0.023,-0.19]],"v":[[-1.934,-0.974],[-0.74,-1.089],[0.986,-0.421],[1.204,1.215],[-1.285,-0.029],[-1.872,0.427],[-2.266,-0.182]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[111.566,344.783],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 490","np":4,"cix":2,"ix":490,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.374,0.814],[0,0],[0,0],[-2.154,0.469],[-0.197,-0.101],[0,0],[0,0],[0,0],[0.995,-0.357],[0.045,0.023],[0.413,0.215],[0,0]],"o":[[0,0],[0,0],[0,0],[2.155,-0.47],[0.197,0.103],[0,0],[0,0],[0,0],[-0.181,-0.091],[-0.149,-0.077],[-0.23,-0.12],[0,0]],"v":[[-2.229,-3.073],[1.021,-1.386],[-3.163,0.037],[1.442,-0.748],[4.695,-1.25],[6.673,-0.163],[-2.276,1.71],[4.044,0.825],[-1.896,3.073],[-2.259,2.89],[-3.569,2.042],[-6.673,0.555]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.398,346.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 491","np":4,"cix":2,"ix":491,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.804,0.641],[-0.068,0.132],[-0.221,0.428],[0,0],[0,0],[0,0],[-0.136,0.263],[0,0],[0,0],[0,0],[0.127,0.4],[0.063,0.2],[0.064,0.201],[-0.374,0.12],[0,0],[0.234,-0.129],[0,0],[0,0],[0.196,0.102],[0,0],[-0.672,0.216],[-0.068,0.132],[0.055,0.175],[0.699,-0.389],[0,0],[0.098,0.051],[0.638,0.321],[0,0]],"o":[[2.404,-0.549],[0.068,-0.132],[0.221,-0.43],[0,0],[0,0],[0,0],[0.135,-0.265],[0,0],[0,0],[0,0],[-0.127,-0.401],[-0.064,-0.2],[-0.063,-0.2],[0.373,-0.119],[0,0],[-0.232,0.13],[0,0],[0,0],[-0.198,-0.102],[0,0],[0.672,-0.214],[0.068,-0.132],[-0.056,-0.175],[-0.7,0.389],[0,0],[-0.069,-0.036],[0.256,-0.019],[6.179,-1.304]],"v":[[-3.785,5.051],[-0.005,4.171],[0.521,3.15],[9.954,-16.41],[10.873,-15.932],[-2.68,12.691],[-2.349,12.697],[11.128,-15.216],[13.298,-14.256],[-1.396,16.41],[-3.98,14.734],[-4.968,13.258],[-6.189,11.913],[-5.521,11.34],[-2.832,10.48],[-2.678,10.016],[-5.948,11.118],[-6.794,11.146],[-7.454,10.085],[-8.11,9.66],[-3.115,8.116],[-1.854,7.768],[-1.244,6.663],[-5.876,8.229],[-8.29,9.526],[-11.639,7.869],[-13.298,7.039],[-12.768,6.99]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[131.994,342.438],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 492","np":4,"cix":2,"ix":492,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.851,0.088],[0.002,-0.186],[0,0],[0.27,0.077],[-0.027,0.111]],"o":[[0.851,-0.088],[-0.002,0.186],[-0.175,0.159],[-0.27,-0.078],[0.026,-0.111]],"v":[[-0.483,-1.315],[1.894,-1.358],[0.577,1.384],[-1.062,1.438],[-1.869,-0.789]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[145.428,325.224],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 493","np":4,"cix":2,"ix":493,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.428,-1.157],[1.013,-0.221]],"o":[[0,0],[0,0],[0,0]],"v":[[-0.002,-1.388],[1.554,1.072],[-1.554,1.389]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[146.014,321.895],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 494","np":4,"cix":2,"ix":494,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.212,-7.204],[3.989,-6.8],[-3.211,7.204],[-3.989,6.8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[150.583,313.526],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 495","np":4,"cix":2,"ix":495,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.372,-7.514],[4.149,-7.111],[-3.371,7.514],[-4.149,7.111]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.485,314.389],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 496","np":4,"cix":2,"ix":496,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.473,-7.711],[4.249,-7.307],[-3.473,7.711],[-4.249,7.308]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[152.568,315.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 497","np":4,"cix":2,"ix":497,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.738,-7.987],[4.32,-7.685],[-3.739,7.987],[-4.32,7.685]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[153.46,316.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 498","np":4,"cix":2,"ix":498,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.238,-3.904],[0,0],[2.561,3.698],[0.096,-4.467],[0.267,0.263],[0.027,-0.173],[0,0],[3.749,7.255],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.268,-0.264],[-0.027,0.173],[0,0],[0,0],[0,0]],"v":[[3.639,-0.208],[2.236,2.458],[-0.561,-3.917],[0.488,6.16],[-0.529,5.727],[-1.075,6.004],[-2.708,9.361],[-3.639,-8.6],[-3.185,-9.361]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.564,333.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 499","np":4,"cix":2,"ix":499,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.756,-8.517],[4.74,-8.006],[-3.756,8.517],[-4.74,8.006]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.471,319.074],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 500","np":4,"cix":2,"ix":500,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.079,-8.784],[4.77,-8.426],[-4.079,8.785],[-4.77,8.426]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[158.714,320.155],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 501","np":4,"cix":2,"ix":501,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.393,-9.161],[4.895,-8.9],[-4.392,9.161],[-4.895,8.901]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[159.546,321.126],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 502","np":4,"cix":2,"ix":502,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.312,0.289],[0,0],[0.957,0.99]],"v":[[4.152,-5.349],[-3.169,7.303],[-3.202,7.368],[-4.152,6.999],[3.018,-7.658]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.536,348.199],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 503","np":4,"cix":2,"ix":503,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.083,-0.162],[0.18,-0.192],[0,0]],"o":[[0,0],[-0.083,0.162],[-0.181,0.192],[0,0]],"v":[[3.159,-6.43],[3.993,-5.914],[-3.028,6.238],[-4.076,5.898]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[148.625,350.599],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 504","np":4,"cix":2,"ix":504,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.435,-0.989],[0,0],[0,0],[-0.095,-0.3],[0,0],[0,0],[-0.867,-1.372],[0,0],[0.08,0.387],[-0.004,-0.001],[-0.005,-0.023],[0,0],[0,0],[-0.035,-0.111],[0,0],[0,0],[-0.246,-0.286],[0,0],[0.662,0.345],[0.229,0.013],[0.966,0.212],[0.03,0.095],[0.057,0.346],[0.09,0.284],[0.165,0.139],[0,0],[-0.281,-0.014],[-1.035,-1.249]],"o":[[0.435,0.99],[0,0],[0,0],[0.095,0.3],[0,0],[0,0],[0.867,1.373],[0,0],[-0.011,-0.027],[0.004,0.002],[0.17,0.396],[0,0],[0,0],[0.036,0.11],[0,0],[0,0],[0.247,0.286],[0,0],[-0.662,-0.344],[-0.229,-0.014],[-0.965,-0.212],[-0.03,-0.094],[-0.058,-0.347],[-0.09,-0.283],[-0.165,-0.138],[0,0],[0.281,0.014],[1.036,1.25]],"v":[[-1.037,0.488],[-0.18,2.646],[0.193,0.389],[1.105,2.287],[1.546,2.858],[0.654,-0.61],[2.266,1.15],[3.941,4.523],[3.616,0.883],[3.604,0.843],[3.616,0.883],[5.512,4.576],[4.314,-0.131],[6.152,2.669],[7.292,3.92],[5.096,-2.518],[8.378,-0.997],[9.223,7.506],[3.447,4.82],[0.217,3.249],[-1.919,3.272],[-3.654,2.264],[-3.982,1.119],[-6.036,-2.689],[-7.69,-5.182],[-9.223,-7.506],[-6.374,-7.08],[-4.18,-5.282]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[149.103,363.486],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 505","np":4,"cix":2,"ix":505,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.222,0.108],[0,0],[0,0]],"o":[[-0.702,-0.343],[2.719,2.639],[-0.309,0.116]],"v":[[0.227,3.168],[-2.071,-3.796],[2.071,3.68]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[142.854,361.943],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 506","np":4,"cix":2,"ix":506,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.257,0.368],[0,0],[0,0],[-0.149,-0.291],[0,0]],"o":[[-0.257,-0.369],[0,0],[0,0],[0.148,0.291],[-0.881,0.099]],"v":[[-1.391,1.44],[-1.559,-3.118],[0.012,-2.366],[0.356,-1.545],[1.648,3.019]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[140.613,361.923],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 507","np":4,"cix":2,"ix":507,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.067,0.212],[-0.078,0.151],[-0.171,-0.089],[0,0]],"o":[[-0.067,-0.212],[0.077,-0.15],[0.171,0.089],[-0.309,0.098]],"v":[[-0.616,1.818],[-0.376,-2.442],[0.512,-2.062],[0.527,2.493]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.25,360.775],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 508","np":4,"cix":2,"ix":508,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.333,-0.456],[0.137,-0.045],[0.129,0.408],[0,0],[0.276,-0.153],[0,0],[0.13,0.129],[0,0],[-0.158,0.117],[-0.183,0.103],[-0.104,-0.054],[0,0],[0,0]],"o":[[-0.333,0.456],[0,0],[-0.13,-0.409],[0,0],[-0.275,0.154],[0,0],[-0.129,-0.131],[0,0],[0.158,-0.115],[0.184,-0.102],[0.103,0.053],[0,0],[0,0]],"v":[[1.495,1.628],[0.243,3.617],[0.149,2.25],[-0.201,0.809],[-1.443,1.027],[-2.818,1.599],[-1.921,-0.146],[-2.497,-1.003],[-2.279,-1.682],[-0.288,-3.514],[0.363,-3.439],[2.818,-1.966],[2.713,2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[134.657,360.349],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 509","np":4,"cix":2,"ix":509,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.354,0.102],[-0.23,0.343],[-0.129,-0.013],[0,0],[0.177,-0.345]],"o":[[0,0],[0.231,-0.343],[0.129,0.012],[0,0],[-0.176,0.344]],"v":[[-1.434,1.799],[0.253,-1.272],[1.058,-1.888],[1.434,-1.776],[0.149,0.88]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[135.508,364.608],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 510","np":4,"cix":2,"ix":510,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.183,0.014],[0.235,0.176],[-0.045,0.086],[-0.159,-0.218]],"o":[[0,0],[-0.183,-0.014],[-0.234,-0.176],[0.044,-0.086],[0.158,0.218]],"v":[[0.447,0.416],[0.026,0.497],[-0.485,0.068],[-0.23,-0.426],[0.561,-0.014]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[132.671,366.638],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 511","np":4,"cix":2,"ix":511,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.036,0.114],[-0.007,0.188],[0.149,0.132],[-0.055,0.107],[-0.329,-0.416],[0,0]],"o":[[-0.036,-0.114],[0.007,-0.186],[-0.149,-0.132],[0.055,-0.108],[0.328,0.415],[-0.082,0.148]],"v":[[-0.034,0.636],[-0.184,0.122],[-0.665,-0.454],[-0.378,-1.013],[0.486,-0.374],[0.248,0.973]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[133.881,364.21],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 512","np":4,"cix":2,"ix":512,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.689,0.878],[0,0],[-0.128,-0.013],[-0.033,0.064],[-0.055,0.107],[0.159,0.11],[0,0],[-0.142,0.118],[-0.146,0.047],[-0.236,-0.068],[0.056,-0.108],[0.13,-0.041],[0.122,-0.291],[0.089,-0.172],[-0.171,-0.089],[-0.037,-0.114],[0.122,-0.236],[-0.138,-0.153],[-0.211,0.068],[-0.107,-0.055],[0,0]],"o":[[-1.689,-0.877],[0,0],[0.13,0.012],[0.033,-0.065],[0.056,-0.108],[-0.16,-0.11],[0,0],[0.141,-0.117],[0.146,-0.047],[0.236,0.069],[-0.055,0.107],[-0.13,0.042],[-0.122,0.29],[-0.088,0.171],[0.171,0.088],[0.036,0.114],[-0.121,0.236],[0.137,0.153],[0.21,-0.067],[0.107,0.055],[0,0]],"v":[[-0.748,2.811],[-1.826,0.481],[-0.498,0.954],[-0.139,0.731],[-0.069,0.278],[-0.386,-0.105],[-1.377,-0.865],[-0.491,-2.747],[1.187,-3.481],[2.071,-3.621],[2.381,-2.643],[1.84,-2.434],[0.966,-2.261],[0.704,-1.172],[0.569,-0.698],[1.372,-0.363],[1.342,0.221],[0.645,1.683],[1.522,2.084],[1.901,1.873],[2.253,2.137]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[130.604,365.952],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 513","np":4,"cix":2,"ix":513,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.253,-0.44],[0,0],[-0.166,0.322],[-0.208,-0.018],[0.111,-0.214],[0.11,-0.161]],"o":[[-0.253,0.439],[0,0],[0.166,-0.322],[0.207,0.018],[-0.11,0.215],[-0.11,0.161]],"v":[[-0.025,0.177],[-1.835,2.695],[0.31,-2.372],[0.922,-2.455],[1.725,-1.964],[0.927,-0.2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[130.303,361.971],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 514","np":4,"cix":2,"ix":514,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.14,0.656],[-0.465,-0.656],[1.14,0.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[135.298,351.525],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 515","np":4,"cix":2,"ix":515,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[1.336,0.826],[0,0],[0,0]],"v":[[-0.283,-1.236],[1.02,1.237],[-1.053,0.16]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.059,350.27],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 516","np":4,"cix":2,"ix":516,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.053,-0.103],[0,0],[-0.159,0.308],[0,0]],"o":[[-0.053,0.103],[0,0],[0.157,-0.306],[0,0]],"v":[[2.512,-4.471],[-2.239,4.768],[-2.406,4.176],[2.107,-4.768]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[143.378,333.834],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 517","np":4,"cix":2,"ix":517,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.305,0.029],[0,0],[-0.105,3.974],[-0.02,0.123],[-0.125,0.245],[0,0],[0.497,-5.277],[0.172,-0.646]],"o":[[-0.264,-0.025],[0,0],[0.105,-3.973],[0.019,-0.123],[0.126,-0.245],[0,0],[-0.497,5.275],[-0.164,0.617]],"v":[[-1.201,11.206],[-1.367,10.667],[-0.539,1.943],[-0.659,-7.416],[-0.271,-9.029],[0.511,-11.234],[0.968,-1.701],[-0.617,10.403]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.094,336.948],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 518","np":4,"cix":2,"ix":518,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.131,0.414],[2.724,2.152],[-0.141,0.273],[0,0],[0.296,-5.513],[0.208,-0.237],[0.936,1.611],[0,0],[-0.406,-1.638],[0.074,-0.394],[0.225,-0.072]],"o":[[-0.131,-0.415],[0,0],[0.14,-0.273],[0,0],[-0.296,5.514],[-0.208,0.239],[-0.936,-1.611],[0,0],[0.406,1.639],[-0.073,0.395],[-0.226,0.072]],"v":[[0.849,8.787],[-3.764,2.021],[-0.022,-5.421],[2.212,-10.1],[3.467,-1.748],[2.827,6.527],[1.211,3.395],[-0.065,1.607],[1.253,5.406],[1.977,8.767],[1.406,10.027]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.458,344.537],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 519","np":4,"cix":2,"ix":519,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.861,-2.886],[1.674,2.308]],"o":[[0,0],[0,0],[0,0]],"v":[[0.629,-4.361],[0.497,4.362],[-1.358,-0.457]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[145.361,334.167],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 520","np":4,"cix":2,"ix":520,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.845,1.575],[0.113,0.138],[0,0]],"o":[[-0.926,0.522],[-0.845,-1.575],[-0.113,-0.137],[2.095,1.088]],"v":[[2.163,2.525],[-0.141,-0.151],[-2.049,-2.569],[-1.751,-3.047]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.958,349.708],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 521","np":4,"cix":2,"ix":521,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.303,0.027],[0,0]],"o":[[0,0],[0,0],[0.304,-0.027],[0,0]],"v":[[-2.438,1.053],[-1.699,-0.385],[0.883,-1.025],[2.439,-0.013]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[135.844,353.115],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 522","np":4,"cix":2,"ix":522,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.124,-0.115],[0.2,-0.196],[0,0],[-0.146,0.323],[0,0],[-0.093,-0.128]],"o":[[-0.124,0.115],[-0.199,0.195],[0,0],[0.147,-0.323],[0,0],[0.093,0.128]],"v":[[1.099,-0.741],[-0.639,0.892],[-1.294,1.509],[-1.468,0.92],[-0.43,-0.866],[1.521,-1.38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[132.719,357.486],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 523","np":4,"cix":2,"ix":523,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.458,0.758],[0,0],[-0.213,0.068],[-0.434,-0.332]],"o":[[0,0],[-1.459,-0.758],[0,0],[0.213,-0.068],[0.433,0.333]],"v":[[2.58,1.761],[-0.228,0.587],[-2.58,-0.921],[0.127,-1.693],[1.546,-1.135]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.617,357.154],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 524","np":4,"cix":2,"ix":524,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.207,0.16],[0.188,-0.007],[0,0],[0,0],[-0.142,0.045],[-0.734,-0.461],[0,0],[0.094,-0.03]],"o":[[-0.207,-0.16],[-0.188,0.008],[0,0],[0,0],[0.141,-0.046],[0.735,0.461],[0,0],[-0.095,0.03]],"v":[[1.386,0.774],[-0.69,0.672],[-4.874,1.298],[-4.051,-0.097],[1.194,-1.253],[4.139,0.171],[4.816,1.103],[2.154,1.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.426,354.669],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 525","np":4,"cix":2,"ix":525,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[2.496,1.481],[-0.623,0.6],[-0.312,-1.642],[0,0]],"v":[[-1.267,-2.428],[1.589,1.828],[0.162,1.589],[-1.589,-1.751]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.668,349.991],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 526","np":4,"cix":2,"ix":526,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.336,-0.102],[-0.325,-0.218],[0.025,-0.426],[0.117,-0.086],[0.115,0.06],[0.026,0.233],[0.096,0.05],[0,0],[-0.041,0.222]],"o":[[0.335,0.102],[0.325,0.217],[-0.025,0.424],[-0.116,0.085],[-0.115,-0.059],[-0.026,-0.232],[-0.095,-0.05],[-0.345,-0.179],[0.042,-0.221]],"v":[[-1.183,-1.476],[0.817,-0.558],[1.748,0.413],[1.599,1.456],[1.203,1.518],[0.949,1.069],[0.466,0.453],[-0.232,0.163],[-1.732,-0.787]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[162.128,372.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 527","np":4,"cix":2,"ix":527,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.516,-1.062],[-1.227,-0.525],[-1.339,-0.417],[-2.011,-1.158],[-0.832,-0.431],[-0.064,-0.2],[-0.569,-0.296],[-0.569,-0.296],[0,0],[0.708,-1.917],[-2.32,-1.205],[-0.627,0.789],[0,0],[-1.119,-0.304],[-0.525,-0.273],[-0.459,-0.294],[-0.308,-0.049],[-0.242,-0.069],[-0.219,-0.114],[0,0],[-0.846,-0.357],[-0.256,0.119],[0,0],[-0.497,-0.063],[-0.15,0.51],[0.406,0.238],[0,0],[0.07,0.568],[0.251,0.213],[0,0],[0.656,0.713],[0,0],[-0.003,0.217],[0,0],[0.041,0.13],[0,0],[-0.004,0.261],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.158,-0.308],[1.089,-2.333],[0,0],[0.597,-0.191],[0,0],[0,0],[1.087,-0.494],[0.429,-0.725],[1.03,0.369],[0.294,-0.572]],"o":[[0,0],[1.227,0.526],[1.338,0.417],[0,0],[0.831,0.433],[0.063,0.201],[0.569,0.295],[0.569,0.296],[0,0],[-0.709,1.918],[2.32,1.205],[0.628,-0.789],[0,0],[1.12,0.303],[0.525,0.273],[0.459,0.294],[0.308,0.048],[0.241,0.071],[0.219,0.113],[0,0],[0.847,0.355],[0.255,-0.118],[0,0],[0.496,0.061],[0.15,-0.508],[-0.406,-0.239],[0,0],[-0.069,-0.568],[-0.252,-0.215],[0,0],[-0.656,-0.713],[0,0],[0.002,-0.218],[0,0],[-0.042,-0.131],[0,0],[0.003,-0.261],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.159,0.309],[-1.089,2.333],[0,0],[-0.598,0.192],[0,0],[0,0],[-1.086,0.495],[0,0],[-1.031,-0.368],[-0.294,0.572]],"v":[[-29.099,4.568],[-28.263,5.733],[-23.456,7.172],[-13.888,11.753],[-12.913,13.094],[-11.827,14.216],[-9.57,16.839],[-8.023,18.144],[-6.36,19.008],[-8.724,24.469],[-7.206,29.607],[-2.743,28.692],[0.885,22.716],[4.89,24.742],[7.592,25.42],[8.998,25.705],[10.77,26.681],[11.961,26.63],[13.041,26.579],[22.478,31.732],[24.091,33.41],[26.835,34.89],[27.207,34.329],[29.283,35.324],[30.19,34.424],[28.766,31.784],[22.577,28.4],[23.131,26.619],[21.677,21.334],[15.246,17.881],[13.906,15.558],[11.769,13.748],[17.484,3.31],[16.815,2.875],[17.713,1.045],[17.251,0.63],[19.81,-4.515],[19.698,-5.186],[31.615,-27.882],[30.346,-28.541],[19.985,-8.392],[19.591,-8.596],[29.641,-28.574],[29.071,-28.758],[19.114,-9.178],[18.856,-9.647],[28.657,-29.14],[24.695,-31.143],[15.986,-14.204],[14.892,-14.773],[23.447,-31.736],[22.835,-32.054],[14.464,-15.776],[13.72,-16.162],[22.068,-32.397],[18.48,-34.371],[17.87,-34.912],[17.282,-35.385],[9.788,-20.379],[9.396,-20.695],[9.612,-22.087],[9.063,-22.205],[5.58,-15.43],[5.094,-15.348],[-1.439,-1.348],[-4.387,4.925],[-5.816,4.684],[-8.195,4.564],[-16.756,0.506],[-18.857,1.031],[-23.08,3.743],[-28.268,1.214],[-31.161,1.663]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.458999992819,0.328999986836,0.161000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.592,340.403],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 528","np":4,"cix":2,"ix":528,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.747,-15.272],[12.825,-8.22],[0.747,15.271],[-12.825,8.219]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.677999997606,0.545000023935,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[155.195,319.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 529","np":4,"cix":2,"ix":529,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.224,-2.305],[0,0]],"o":[[0,0],[-0.384,2.093],[1.223,2.306],[-2.306,-4.925]],"v":[[-3.009,-7.531],[-3.075,-7.628],[0.382,2.305],[3.459,7.628]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144999994016,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.317,103.786],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 530","np":4,"cix":2,"ix":530,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.455,-0.975],[0,0],[0.052,0.18],[0.258,0.897],[0,0]],"o":[[0.455,0.976],[0,0],[-0.051,-0.179],[-0.258,-0.896],[0,0]],"v":[[-0.247,0.887],[1.085,2.831],[0.942,1.999],[-0.358,-1.042],[-1.085,-2.831]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144999994016,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.849,94.111],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 531","np":4,"cix":2,"ix":531,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.01,-3.242],[-0.392,-2.237],[0,0],[-0.081,1.131],[2.573,8.539]],"o":[[0,0],[1.011,3.243],[0.335,1.911],[0,0],[0.08,-1.131],[-2.572,-8.538]],"v":[[-4.982,-16.176],[-0.083,-1.796],[3.755,12.747],[4.393,16.176],[4.902,14.318],[1.665,1.794]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144999994016,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[128.301,86.358],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 532","np":4,"cix":2,"ix":532,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.144,-0.544],[-0.299,-0.437],[-0.432,-0.297],[0,0],[0.122,1.111],[-0.245,2.377],[-0.157,-0.029],[-0.175,-0.522],[0,0],[0,0],[0.175,-1.546],[0.183,0.034],[-0.286,4.521],[0,0],[0.206,-3.637],[-0.187,-0.606],[-0.185,-0.47],[0,0],[0,0]],"o":[[0.144,0.544],[0.299,0.436],[0.433,0.298],[0,0],[-0.121,-1.112],[0.246,-2.377],[0.158,0.029],[0.176,0.522],[-0.667,-3.308],[0,0],[-0.175,1.547],[-0.183,-0.034],[0.287,-4.52],[-0.668,1.427],[-0.205,3.637],[0.187,0.606],[0.185,0.469],[-0.628,-0.116],[0,0]],"v":[[-1.935,7.67],[-1.132,9.643],[-0.256,10.92],[1.141,11.424],[0.396,9.136],[0.176,0.874],[1.129,-2.407],[1.711,-0.557],[2.238,0.412],[1.256,-9.896],[-0.342,0.451],[-0.907,3.831],[-1.255,-2.549],[0.209,-11.424],[-1.806,-2.351],[-1.436,4.06],[-0.835,5.805],[-0.406,8.633],[-2.238,5.627]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144999994016,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.965,77.019],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 533","np":4,"cix":2,"ix":533,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.131,-0.191],[-0.295,-0.055],[-0.089,-0.267],[0.065,0.096],[0,0],[-0.088,-0.128],[-0.241,-0.045],[-0.112,-0.299],[0.064,-0.35],[-0.112,-0.299],[0,0],[0,0],[0,0],[0,0],[0.288,-0.058],[0.484,0.229],[0.393,0.573],[0.365,0.123],[0.319,-0.08],[0.365,0.123],[0.194,0.148],[0.066,0.095],[-0.127,0.088],[0.109,0.159],[0,0],[0,0],[-0.03,0.162],[0,0],[0.107,0.02],[0,0],[0,0],[0.19,-0.132],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.133,-0.025],[0,0],[0,0],[0.034,-0.188],[0,0],[0,0],[-0.19,0.132],[0,0],[0,0],[0.134,0.025],[0.134,0.025],[0.175,0.256],[0.35,0.51],[0.151,0.084],[0.216,0.179],[0.087,0.128],[0.153,0.223],[0.248,0.157],[0.161,0.03],[0,0],[0,0],[0.109,0.159],[-0.105,0.119],[0.109,0.159],[-0.389,0.458],[0.08,0.321],[0.377,0.209],[0.096,-0.066],[0.111,0.299],[0.128,0.664],[0,0],[0.137,-0.142],[0,0],[0.516,-0.545],[0,0],[-0.627,0.245],[-0.095,0.066],[0.049,-0.269],[-0.424,0.2],[-0.214,-0.04],[0.027,-0.149],[0.7,-0.344],[0.168,-0.028],[0,0],[0,0],[-0.585,0.922],[-0.107,-0.02],[0.286,-0.197],[0.178,-0.218],[0.025,-0.135],[-0.204,-0.094],[-0.285,0.197],[-0.283,0.337],[-0.175,-0.254],[0.096,-0.066],[0,0],[-0.321,-0.059],[-0.294,-0.054],[-0.133,-0.331],[-0.307,0.165],[-0.173,-0.115],[-0.068,-0.235],[0.254,-0.175],[-0.222,0.154],[-0.292,-0.222],[-0.109,-0.159],[-0.431,-0.219],[-0.509,-0.4],[-0.284,-0.414],[-0.065,-0.095],[0.006,0.419],[-0.256,0.036],[-0.136,-0.471],[-0.087,-1.491],[0.431,0.22],[0.058,0.289],[-0.054,0.296],[0.109,0.16],[0,0],[-0.026,-0.311],[-0.132,-0.191],[0,0],[-0.457,-0.53],[-0.222,1.212],[0.014,0.225],[0,0],[-0.18,-0.534],[0.177,-1.721],[0,0],[-0.134,-0.025],[0.049,-0.269],[-0.257,-0.103],[-0.244,0.121],[0.109,0.16],[0,0],[-0.131,-0.191],[-0.131,-0.191],[-0.13,-0.191],[0,0],[0.014,0.226],[-0.03,0.162],[0.109,0.159],[0.014,0.226],[-0.105,0.12],[0,0],[0.06,0.429],[0,0],[-0.059,-0.289],[-0.197,-0.287],[0,0],[0.101,0.353],[-0.05,0.269],[-0.307,0.165],[0,0],[0.066,0.095],[0,0],[-0.044,0.242],[0.095,-0.066],[0.066,0.096],[-0.049,0.27],[0,0],[-0.066,-0.095],[0.095,-0.066],[0,0],[0,0],[0,0],[-0.087,-0.128],[-0.241,-0.044],[-0.087,-0.128],[-0.244,0.121],[-0.058,-0.289],[0.346,-0.381],[0,0],[-0.309,0.026],[-0.428,-0.079],[-0.248,-0.157],[-0.284,0.337],[0,0],[-0.28,-0.135],[-0.554,0.148],[-0.788,-0.536],[0,0],[0.333,0.146],[0,0],[0.04,-0.215],[0.476,-1.693],[-1.357,-0.001],[0.455,-0.973],[0.309,-0.778],[-0.218,-0.318],[-0.312,-0.113],[-0.928,-1.285],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.132,0.191],[0.196,0.287],[0,0],[0,0],[0,0],[0,0],[0,0],[1.029,1.638],[-0.005,0.333],[-0.081,-0.015],[-0.455,-0.391],[0,0],[0.261,0.382],[0,0],[0.281,0.887],[0,0],[-0.049,0.27],[0.132,0.192],[0,0],[0,0],[-0.223,0.154],[-0.196,0.465],[0.094,0.546],[0.286,0.554],[0,0],[-0.145,0.335],[0.175,0.255],[0.194,0.148],[-0.125,0.227],[0.109,0.159],[0,0]],"o":[[0,0],[0,0],[0.131,0.192],[0.294,0.054],[0.09,0.267],[-0.066,-0.095],[0,0],[0.087,0.127],[0.241,0.045],[0.111,0.299],[-0.064,0.351],[0.111,0.299],[0,0],[0,0],[0,0],[0,0],[-0.287,0.058],[-0.484,-0.228],[-0.393,-0.574],[-0.365,-0.124],[-0.32,0.08],[-0.365,-0.124],[-0.195,-0.147],[-0.065,-0.096],[0.127,-0.087],[-0.11,-0.159],[0,0],[0,0],[0.03,-0.161],[0,0],[-0.107,-0.02],[0,0],[0,0],[-0.191,0.132],[0,0],[0,0],[0,0],[0,0],[0,0],[0.135,0.025],[0,0],[0,0],[-0.035,0.189],[0,0],[0,0],[0.19,-0.131],[0,0],[0,0],[-0.134,-0.024],[-0.134,-0.024],[-0.175,-0.255],[-0.349,-0.51],[-0.151,-0.083],[-0.216,-0.179],[-0.088,-0.127],[-0.153,-0.223],[-0.248,-0.157],[-0.161,-0.03],[0,0],[0,0],[-0.109,-0.16],[0.105,-0.12],[-0.109,-0.16],[0.388,-0.457],[-0.08,-0.321],[-0.377,-0.209],[-0.094,0.066],[-0.111,-0.299],[-0.127,-0.663],[0,0],[-0.137,0.141],[0.247,0.769],[-0.515,0.545],[0.243,1.241],[0.627,-0.246],[0.095,-0.066],[-0.049,0.269],[0.425,-0.2],[0.215,0.04],[-0.027,0.148],[-0.7,0.343],[-0.168,0.028],[0,0],[0,0],[0.584,-0.921],[0.107,0.019],[-0.285,0.198],[-0.178,0.217],[-0.024,0.135],[0.205,0.093],[0.285,-0.198],[0.284,-0.338],[0.174,0.256],[-0.095,0.066],[0,0],[0.322,0.06],[0.295,0.055],[0.134,0.331],[0.307,-0.166],[0.173,0.115],[0.067,0.235],[-0.254,0.176],[0.222,-0.154],[0.292,0.221],[0.11,0.16],[0.43,0.219],[0.508,0.401],[0.284,0.415],[0.066,0.096],[-0.007,-0.419],[0.256,-0.036],[0.135,0.47],[0.087,1.492],[-0.431,-0.218],[-0.058,-0.289],[0.054,-0.297],[-0.11,-0.159],[0,0],[0.027,0.311],[0.131,0.191],[0,0],[0.457,0.53],[0.222,-1.212],[-0.014,-0.225],[0,0],[0.179,0.534],[-0.176,1.721],[0.523,0.014],[0.134,0.025],[-0.05,0.269],[0.259,0.103],[0.244,-0.122],[-0.109,-0.159],[0,0],[0.131,0.192],[0.132,0.192],[0.132,0.192],[0,0],[-0.014,-0.225],[0.029,-0.162],[-0.109,-0.16],[-0.014,-0.225],[0.105,-0.12],[0,0],[-0.06,-0.428],[0,0],[0.057,0.289],[0.196,0.286],[0,0],[-0.102,-0.352],[0.049,-0.269],[0.308,-0.166],[0,0],[-0.065,-0.096],[0,0],[0.045,-0.242],[-0.095,0.066],[-0.066,-0.096],[0.049,-0.269],[0,0],[0.066,0.096],[-0.095,0.066],[0,0],[0,0],[0,0],[0.088,0.127],[0.241,0.045],[0.088,0.128],[0.244,-0.122],[0.057,0.289],[-0.347,0.381],[0,0],[0.31,-0.026],[0.429,0.08],[0.248,0.157],[0.283,-0.338],[0,0],[0.28,0.135],[0.553,-0.148],[0.788,0.535],[0,0],[-0.333,-0.145],[0,0],[-0.039,0.215],[-0.477,1.694],[1.357,0.001],[-0.456,0.974],[-0.308,0.778],[0.219,0.319],[0.312,0.114],[0.928,1.286],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.13,-0.192],[-0.197,-0.287],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.029,-1.638],[0.006,-0.333],[0.08,0.015],[0.455,0.39],[0,0],[-0.263,-0.383],[0,0],[-0.281,-0.887],[0,0],[0.05,-0.269],[-0.131,-0.191],[0,0],[0,0],[0.222,-0.154],[0.196,-0.465],[-0.094,-0.547],[-0.286,-0.554],[0,0],[0.145,-0.335],[-0.174,-0.255],[-0.195,-0.147],[0.125,-0.228],[-0.11,-0.16],[0,0]],"v":[[15.677,-19.352],[14.888,-19.275],[15.115,-16.283],[16.213,-15.773],[16.868,-14.816],[16.067,-14.826],[15.281,-15.222],[15.061,-14.928],[15.966,-14.427],[16.467,-13.833],[16.198,-12.519],[16.481,-11.492],[15.822,-11.224],[15.642,-10.394],[16.119,-3.624],[9.311,-14.99],[8.559,-15.269],[6.821,-15.758],[4.976,-17.63],[2.123,-19.745],[0.437,-19.612],[-1.246,-19.951],[-3.129,-20.857],[-4.343,-21.944],[-4.171,-22.581],[-4.546,-23.402],[-5.569,-23.87],[-6.711,-25.194],[-8.036,-27.333],[-4.027,-31.379],[-8.827,-28.76],[-9.281,-29.15],[-7.266,-33.649],[-10.859,-29.609],[-11.782,-29.864],[-12.259,-34.518],[-13.222,-29.713],[-14.045,-29.002],[-18.198,-32.332],[-15.3,-27.898],[-16.196,-27.089],[-21.744,-27.337],[-16.89,-25.715],[-16.556,-24.817],[-19.607,-22.375],[-16.156,-23.825],[-15.539,-23.265],[-17.096,-21.716],[-17.753,-21.309],[-19.394,-21.724],[-20.383,-22.826],[-21.863,-24.575],[-24.333,-26.814],[-26.225,-28.278],[-27.138,-29.338],[-30.164,-33.684],[-31.03,-34.401],[-32.619,-34.194],[-32.956,-34.619],[-32.814,-35.093],[-33.263,-35.816],[-33.111,-36.345],[-33.641,-36.777],[-33.013,-37.636],[-32.594,-38.866],[-34.127,-40.625],[-36.212,-39.981],[-36.595,-40.609],[-36.635,-42.51],[-37.574,-43.881],[-37.517,-42.227],[-39.516,-45.075],[-39.427,-41.328],[-40.599,-41.127],[-38.496,-39.151],[-37.146,-40.321],[-37.08,-39.474],[-36.342,-39.421],[-34.821,-39.863],[-34.589,-39.388],[-37.116,-37.615],[-38.483,-36.334],[-39.153,-35.264],[-38.575,-35.241],[-38.237,-36.181],[-35.66,-38.153],[-35.696,-37.659],[-37.487,-36.041],[-38.086,-35.345],[-37.875,-34.832],[-36.914,-35.069],[-35.912,-35.722],[-34.868,-35.975],[-35.794,-35.004],[-36.289,-34.567],[-35.879,-34.241],[-35.363,-34.034],[-34.648,-33.4],[-33.832,-33.165],[-32.83,-33.342],[-32.428,-32.21],[-33.239,-31.414],[-32.693,-31.368],[-31.045,-31.146],[-28.664,-27.059],[-27.04,-26.396],[-23.473,-24.4],[-21.398,-22.123],[-18.295,-17.595],[-18.176,-18.241],[-17.746,-20.138],[-16.889,-18.615],[-17.032,-14.661],[-17.757,-11.761],[-18.656,-13.959],[-18.681,-14.882],[-19.126,-16.079],[-20.163,-16.771],[-19.754,-14.469],[-19.417,-13.432],[-18.839,-14.021],[-17.891,-10.727],[-16.633,-12.304],[-16.786,-16.759],[-16.637,-18.179],[-16.183,-17.176],[-16.194,-11.527],[-16.848,-9.616],[-15.883,-10.049],[-15.661,-8.839],[-14.945,-8.066],[-14.05,-8.262],[-13.975,-8.973],[-14.801,-11.269],[-14.111,-10.195],[-12.959,-8.172],[-12.589,-7.018],[-11.951,-6.565],[-11.898,-7.308],[-12.032,-8.39],[-13.151,-10.295],[-13.728,-11.683],[-13.743,-12.66],[-12.511,-11.068],[-12.411,-12.219],[-12.193,-14.016],[-10.805,-5.713],[-10.454,-3.699],[-8.75,-3.328],[-11.771,-15.107],[-11.745,-16.912],[-10.498,-17.07],[-9.863,-17.51],[-12.77,-21.75],[-12.676,-22.568],[-12.085,-23.071],[-12.617,-23.643],[-13.25,-23.816],[-12.985,-24.658],[-12.595,-25.727],[-10.403,-25.6],[-11.255,-24.727],[-11.439,-24.177],[-10.424,-22.764],[-10.983,-22.283],[-10.935,-21.939],[-10.27,-21.789],[-9.865,-21.129],[-9.046,-21.367],[-8.547,-20.913],[-9.349,-19.558],[-10.815,-18.966],[-9.855,-19.067],[-8.462,-18.81],[-6.164,-18.05],[-4.949,-17.574],[-2.877,-18.305],[-1.357,-18.134],[0.276,-18.278],[3.024,-17.407],[5.457,-14.813],[0.801,-16.761],[0.559,-16.499],[22.375,12.873],[19.103,19.7],[21.114,21.27],[22.36,23.087],[18.995,29.508],[18.848,31.067],[19.864,31.116],[21.899,32.857],[23.512,37.053],[20.265,39.208],[18.656,43.002],[20.076,45.075],[20.14,45.031],[40.599,30.862],[40.074,30.097],[38.969,29.029],[37.182,28.197],[36.548,27.273],[35.724,27.844],[36.165,28.761],[34.198,30.123],[29.491,22.709],[28.085,19.498],[28.649,19.296],[34.002,26.356],[35.205,27.497],[34.169,26.053],[32.695,23.97],[32.563,21.663],[28.121,15.523],[28.727,14.633],[26.891,11.955],[27.004,10.89],[18.979,1.025],[19.443,0.61],[19.959,-0.547],[20.395,-3.529],[19.855,-6.023],[17.862,-9.204],[18.468,-10.094],[18.47,-11.318],[17.962,-12.471],[17.818,-13.499],[17.634,-15.064],[16.202,-16.471]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144999994016,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[123.667,81.505],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 534","np":4,"cix":2,"ix":534,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.646,6.982],[-3.286,-5.465],[0,0],[0.699,1.02]],"o":[[0,0],[3.285,5.465],[0,0],[-0.699,-1.021]],"v":[[-7.863,-13.761],[-0.826,-1.148],[7.863,13.761],[6.77,12.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144999994016,0.493999974868,0.510000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[133.511,85.627],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 535","np":4,"cix":2,"ix":535,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.141,0.577],[-0.225,-0.443],[0,0],[0.35,0.916],[0.041,-1.187],[-0.029,-0.101],[-0.108,0.075],[-0.091,-0.017],[-0.012,-0.192],[0.114,-0.239],[-0.057,-0.2],[0,0],[-0.335,0.032],[-0.175,-0.197],[0,0],[-0.083,-0.063],[-0.12,-0.117],[0,0],[-0.029,-0.1],[0,0],[0,0],[-0.029,0.16],[0,0],[0,0],[-0.047,-0.127],[-0.085,-0.181],[-0.167,-0.243],[0,0],[-0.205,-0.038],[-0.165,-0.125],[-0.093,-0.135],[0,0],[0,0],[0.112,0.162],[0,0],[0,0],[0,0],[0,0],[-0.056,-0.081],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.148,-0.215],[0,0],[-0.123,-0.179],[-0.074,-0.107],[0,0],[-0.025,-0.036],[-0.097,-0.143],[-0.041,-0.059],[-0.028,-0.067],[-0.033,-0.048],[0,0],[0,0],[0,0],[0.036,-0.024],[0,0],[0,0],[0,0],[0,0],[0.141,0.026],[0.072,0.055],[0,0],[0.851,1.243],[0.277,0.301],[0.49,0.613],[0.279,0.406],[0.113,0.062],[1.144,1.67],[0,0],[0.643,0.119],[0.618,0.594],[0.488,0.917],[0,0],[0.569,0.523],[0.318,1.436],[0,0],[0.328,0.478],[0,0],[0.195,0.182],[0,0],[0.366,0.169],[-0.04,0.556],[0,0],[0.415,-0.111],[0.636,0.723],[0.296,0.994],[0.036,0.257],[0.25,0.108],[0.551,0.394],[1.485,1.756],[0.275,0.197],[0.254,0.142],[0.482,0.653],[0.389,0.26],[0.132,0.295],[0.065,0.095],[0.272,-0.013],[0,0],[0.422,0.307],[0.375,-0.118],[0.115,0.167],[-0.305,0.987],[0,0],[0.179,0.158],[0.062,0.091],[0.002,0.668],[0,0],[-0.24,-0.045]],"o":[[0,0],[0.224,0.444],[0,0],[0,0],[-0.041,1.186],[0.029,0.099],[0.108,-0.074],[0.091,0.017],[0.013,0.191],[-0.114,0.239],[0.058,0.199],[0,0],[0.335,-0.033],[0.176,0.198],[0,0],[0.083,0.062],[0.12,0.116],[0,0],[0.028,0.1],[0,0],[0,0],[0.03,-0.16],[0,0],[0,0],[0.047,0.127],[0.084,0.181],[0.167,0.244],[0,0],[0.204,0.037],[0.165,0.125],[0,0],[0,0],[0,0],[-0.111,-0.163],[0,0],[0,0],[0,0],[0,0],[0.056,0.081],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.147,0.215],[0,0],[0.122,0.179],[0.074,0.108],[0,0],[0.024,0.035],[0.097,0.142],[0.04,0.06],[0.029,0.067],[0.032,0.047],[0,0],[0,0],[0,0],[-0.035,0.025],[0,0],[0,0],[0,0],[0,0],[-0.14,-0.026],[-0.073,-0.055],[0,0],[-0.852,-1.242],[-0.277,-0.302],[-0.49,-0.612],[-0.278,-0.406],[-0.113,-0.063],[-1.145,-1.67],[0,0],[-0.642,-0.119],[-0.617,-0.594],[-0.488,-0.917],[0,0],[-0.569,-0.522],[-0.319,-1.437],[0,0],[-0.327,-0.478],[0,0],[-0.195,-0.182],[0,0],[-0.367,-0.169],[0.039,-0.556],[0,0],[-0.415,0.111],[-0.635,-0.723],[-0.295,-0.993],[-0.036,-0.257],[-0.25,-0.109],[-0.55,-0.394],[-1.484,-1.757],[-0.275,-0.197],[-0.255,-0.141],[-0.482,-0.652],[-0.388,-0.259],[-0.133,-0.296],[-0.066,-0.096],[-0.272,0.012],[0,0],[-0.42,-0.308],[-0.374,0.118],[-0.114,-0.168],[0.306,-0.986],[0,0],[-0.178,-0.158],[-0.063,-0.09],[-0.002,-0.668],[0,0],[0.242,0.044]],"v":[[-37.618,-43.177],[-36.311,-41.966],[-35.938,-41.306],[-35.918,-42.957],[-34.346,-39.533],[-34.273,-37.427],[-33.958,-36.968],[-32.196,-37.469],[-31.222,-36.626],[-31.299,-35.175],[-31.556,-33.52],[-30.703,-32.393],[-29.748,-32.216],[-28.673,-31.923],[-27.885,-30.831],[-23.579,-24.549],[-21.421,-22.849],[-18.625,-20.393],[-17.14,-18.227],[-15.295,-18.028],[-13.039,-18.792],[-11.985,-21.079],[-10.985,-23.329],[-9.981,-24.183],[-5.956,-22.02],[-4.686,-19.704],[-2.889,-17.835],[2.489,-16.248],[3.933,-16.17],[6.311,-14.903],[8.396,-12.673],[10.684,-11.942],[12.109,-12.529],[12.57,-12.609],[12.102,-15.958],[17.295,-16.501],[18.038,-15.238],[18.05,-13.888],[18.586,-13.221],[19.534,-12.361],[19.866,-10.833],[19.933,-9.402],[19.263,-5.802],[20.124,-2.858],[20.214,-0.118],[19.534,2.573],[20.083,4.677],[27.556,15.504],[28.679,18.6],[30.791,20.838],[32.104,21.832],[33.18,23.095],[34.227,25.065],[34.544,26.313],[35.121,27.206],[35.624,27.888],[36.133,28.531],[36.477,28.905],[36.848,29.346],[38.424,31.189],[38.828,31.626],[38.496,32.257],[37.553,32.91],[31.344,37.476],[29.578,40.321],[26.504,42.485],[24.015,43.151],[23.19,42.56],[22.749,42.019],[21.889,39.69],[19.688,36.633],[18.158,35.014],[15.92,32.159],[15.237,31.469],[12.463,27.677],[6.676,18.262],[5.533,17.926],[3.157,16.505],[0.567,11.907],[-0.027,10.887],[-2.376,9.659],[-4.277,5.761],[-6.082,-0.249],[-8.269,-0.779],[-9.136,-3.068],[-10.021,-3.336],[-11.288,-5.031],[-12.526,-5.055],[-13.186,-6.113],[-13.34,-7.769],[-14.39,-6.795],[-16.485,-7.6],[-18.047,-11.311],[-18.544,-14.032],[-18.556,-14.764],[-20.923,-16.684],[-23.195,-19.128],[-26.604,-23.745],[-27.962,-24.32],[-30.139,-27.112],[-31.679,-28.336],[-32.853,-29.742],[-32.979,-30.642],[-33.628,-31.179],[-34.264,-31.902],[-35.22,-31.557],[-36.239,-32.226],[-36.965,-32.569],[-37.008,-34.372],[-36.16,-36.051],[-36.989,-37.31],[-38.164,-38.23],[-38.826,-40.196],[-38.608,-41.616],[-37.803,-40.799]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.33300000359,0.773000021542,0.819999964097,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[121.261,78.73],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 536","np":4,"cix":2,"ix":536,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[1.038,30.58],[23.2,21.794],[-10.607,-16.366],[-23.2,-30.58],[-23.199,-30.556]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[170.409,92.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 537","np":4,"cix":2,"ix":537,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-2.249,10.088],[-1.253,5.833],[2.492,7.914],[2.826,4.155],[5.567,6.197],[6.296,4.126],[-6.297,-10.088],[-5.745,8.367],[-4.088,6.205]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[153.505,71.928],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 538","np":2,"cix":2,"ix":538,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.924,10.297],[-10.883,-27.863],[-11.611,-25.791],[-14.354,-27.833],[-14.687,-24.074],[-18.432,-26.156],[-19.429,-21.9],[-21.266,-25.783],[-22.924,-23.621],[-21.385,27.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352999997606,0.556999954523,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[170.684,103.917],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 539","np":2,"cix":2,"ix":539,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.091,-19.047],[-7.888,-25.911],[-8.765,11.847],[-9.092,25.912],[-9.079,25.898]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[173.428,318.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 540","np":4,"cix":2,"ix":540,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.574,-5.388],[0.804,-3.655],[-0.212,-6.701],[-2.351,-4.885],[-2.827,-7.391],[-4.311,-6.673],[-4.638,7.392],[4.637,-2.661],[2.586,-2.379]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[168.974,336.84],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 541","np":2,"cix":2,"ix":541,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.535,-21.026],[-17.412,16.732],[-15.928,16.014],[-15.452,18.52],[-13.313,16.703],[-12.296,19.75],[-9.528,18.017],[-10.514,21.026],[-8.463,20.744],[17.412,-7.302]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352999997606,0.556999954523,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[182.075,313.435],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 542","np":2,"cix":2,"ix":542,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.727,20.469],[4.822,30.464],[11.31,-13.927],[13.726,-30.464],[13.71,-30.449]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[278.67,98.383],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 543","np":4,"cix":2,"ix":543,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-5.238,5.529],[-1.8,3.798],[-1.071,7.502],[1.655,5.603],[1.839,8.607],[3.652,7.929],[6.068,-8.607],[-6.068,2.198],[-3.666,2.094]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[286.329,76.527],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 544","np":2,"cix":2,"ix":544,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.299,25.113],[21.786,-19.279],[19.975,-18.6],[19.79,-21.605],[17.065,-19.706],[16.336,-23.41],[12.898,-21.678],[14.47,-25.113],[12.068,-25.01],[-21.786,5.13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352999997606,0.556999954523,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[268.194,103.735],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 545","np":2,"cix":2,"ix":545,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.665,-29.901],[-13.451,-27.618],[6.146,14.29],[13.447,29.901],[13.451,29.88]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[233.759,340.562],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 546","np":4,"cix":2,"ix":546,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.903,-9.378],[1.169,-5.878],[-1.463,-8.632],[-2.546,-5.404],[-4.363,-7.876],[-5.408,-6.232],[1.893,9.379],[5.408,-7.004],[3.58,-5.508]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[245.313,361.084],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 547","np":2,"cix":2,"ix":547,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-20.109,-19.086],[-0.511,22.823],[0.534,21.178],[2.35,23.651],[3.433,20.423],[6.065,23.177],[7.799,19.677],[8.476,23.547],[10.304,22.051],[20.109,-23.651]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352999997606,0.556999954523,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[240.417,332.029],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 548","np":2,"cix":2,"ix":548,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-27.04,-4.975],[-25.066,11.466],[12.898,-5.24],[27.04,-11.462],[27.022,-11.466]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[349.024,204.557],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 549","np":4,"cix":2,"ix":549,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-8.474,-2.335],[-5.318,-0.969],[-7.818,1.23],[-4.906,2.067],[-7.148,3.593],[-5.667,4.423],[8.474,-1.8],[-6.316,-4.423],[-4.974,-2.949]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[367.59,194.894],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 550","np":2,"cix":2,"ix":550,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-17.39,16.436],[20.576,-0.27],[19.094,-1.1],[21.337,-2.626],[18.424,-3.463],[20.924,-5.662],[17.768,-7.028],[21.269,-7.642],[19.926,-9.116],[-21.336,-16.436]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352999997606,0.556999954523,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[341.347,199.587],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 551","np":2,"cix":2,"ix":551,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[39.939,4.311],[36.251,-17.694],[-19.262,8.086],[-39.939,17.69],[-39.911,17.693]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[80.966,207.006],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 552","np":4,"cix":2,"ix":552,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[12.577,2.936],[7.833,1.364],[11.439,-1.816],[7.083,-2.695],[10.337,-4.945],[8.102,-5.938],[-12.577,3.665],[9.475,5.938],[7.415,4.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[53.603,221.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 553","np":2,"cix":2,"ix":553,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[24.579,-21.997],[-30.934,3.783],[-28.699,4.776],[-31.953,7.026],[-27.597,7.905],[-31.202,11.085],[-26.459,12.657],[-31.621,13.786],[-29.561,15.659],[31.953,21.997]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352999997606,0.556999954523,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[92.639,211.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 554","np":2,"cix":2,"ix":554,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.5,118.5,0],"ix":2},"a":{"a":0,"k":[118.5,118.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[64.805,0],[0,-64.805],[-64.805,0],[0,64.805]],"o":[[-64.805,0],[0,64.805],[64.805,0],[0,-64.805]],"v":[[118.34,1],[1,118.34],[118.34,235.68],[235.68,118.34]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 2"}],"w":237,"h":237,"ip":0,"op":900.000036657751,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 5ffa1d19..f7d414a3 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -11,6 +11,8 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res @@ -18,7 +20,11 @@ import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants +import io.github.alexzhirkevich.compottie.NetworkAssetsManager +import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi @@ -36,6 +42,7 @@ private val ROBOT = "robot.json" private val ROBOT_404 = "robot_404.json" private val ASTRONAUT = "astronaut.json" private val CONFETTI = "confetti.json" +private val WONDERS = "wonders.json" private val PRECOMP_WITH_REMAPPING = "precomp_with_remapping.json" private val MASK_ADD = "mask_add.json" private val MATTE_LUMA = "luma_matte.json" @@ -55,18 +62,17 @@ private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" @Composable fun App() { - val composition = rememberLottieComposition { - LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { - Res.readBytes("files/$DOT") - } -// LottieCompositionSpec.Resource(ROBOT) +// LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { +// Res.readBytes("files/$DOT_WITH_IMAGE") +// } + LottieCompositionSpec.Resource(WONDERS) // LottieCompositionSpec.Resource(IMAGE_ASSET) // LottieCompositionSpec.Url( -// url = "https://assets-v2.lottiefiles.com/a/e3b38514-1150-11ee-9dde-3789514b5871/ZNdbOpdPyr.lottie", +// url = "https://assets-v2.lottiefiles.com/a/e25360fe-1150-11ee-9d43-2f8655b815bb/xSk6HtgPaN.lottie", // assetsManager = NetworkAssetsManager() // ) } @@ -75,7 +81,6 @@ fun App() { composition.await() } - Box(contentAlignment = Alignment.Center) { Image( modifier = Modifier @@ -118,28 +123,35 @@ fun LottieCompositionSpec.Companion.Resource( * - path="", name="images/image.png" * */ @OptIn(ExperimentalResourceApi::class) -private fun ResourcesAssetsManager( - relativeTo : String = "files", - readBytes : suspend (path : String) -> ByteArray = Res::readBytes, -) = LottieAssetsManager { asset -> - try { - val trimPath = asset.path - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) - - val trimName = asset.name - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) - - val fullPath = listOfNotNull(relativeTo.takeIf(String::isNotEmpty), trimPath, trimName) - .joinToString("/") - - readBytes(fullPath) - } catch (x: MissingResourceException) { - null +private class ResourcesAssetsManager( + private val relativeTo : String = "files", + private val readBytes : suspend (path : String) -> ByteArray = Res::readBytes, +) : LottieAssetsManager { + override suspend fun image(image: LottieImage): ImageRepresentable? { + return try { + val trimPath = image.path + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val trimName = image.name + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val fullPath = listOfNotNull( + relativeTo.takeIf(String::isNotEmpty), + trimPath, + trimName + ).joinToString("/") + + ImageRepresentable.Bytes(readBytes(fullPath)) + } catch (x: MissingResourceException) { + null + } } + + override suspend fun font(font: LottieFont): Font? = null } From 82f5851b302db01a9cdac4821bf4278b08c3af93 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 11 Jun 2024 15:32:46 +0300 Subject: [PATCH 038/100] layer effects wip --- .../platform/PlatformShader.android.kt | 2 +- .../PlatformDropShadowEffect.android.kt | 28 ++++ .../effects/PlatformLayerEffect.android.kt | 7 + .../alexzhirkevich/compottie/LottiePainter.kt | 6 +- .../compottie/internal/LottieJson.kt | 18 +++ .../compottie/internal/effects/BlurEffect.kt | 6 +- .../internal/effects/DropShadowEffect.kt | 20 +++ .../compottie/internal/effects/EffectValue.kt | 34 +++- .../compottie/internal/effects/FillEffect.kt | 18 +++ .../compottie/internal/effects/LayerEffect.kt | 7 +- .../internal/effects/LayerEffectsApplier.kt | 151 ++++++++++++++++++ .../compottie/internal/effects/TintEffect.kt | 25 +++ .../compottie/internal/layers/BaseLayer.kt | 17 +- .../compottie/internal/layers/ImageLayer.kt | 26 ++- .../compottie/internal/layers/Layer.kt | 4 +- .../effects/PlatformDropShadowEffect.kt | 18 +++ .../platform/effects/PlatformLayerEffect.kt | 5 + .../internal/shapes/BaseStrokeShape.kt | 7 +- .../compottie/internal/shapes/FillShape.kt | 9 +- .../internal/shapes/GradientFillShape.kt | 8 +- .../internal/platform/PlatformShader.skiko.kt | 2 +- .../effects/PlatformDropShadowEffect.skiko.kt | 37 +++++ .../effects/PlatformLayerEffect.skiko.kt | 7 + .../composeResources/files/test.json | 0 example/shared/src/commonMain/kotlin/App.kt | 5 +- 25 files changed, 422 insertions(+), 45 deletions(-) create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.android.kt create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.android.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.skiko.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.skiko.kt create mode 100644 example/shared/src/commonMain/composeResources/files/test.json diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt index 450e92e5..3c6e4cb7 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt @@ -69,4 +69,4 @@ internal actual fun Paint.setBlurMaskFilter(radius: Float, isImage : Boolean) { } } -private val BlurSigmaScale = .5f +internal val BlurSigmaScale = .5f diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.android.kt new file mode 100644 index 00000000..52d2f54e --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.android.kt @@ -0,0 +1,28 @@ +package io.github.alexzhirkevich.compottie.internal.platform.effects + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.toArgb +import io.github.alexzhirkevich.compottie.internal.platform.BlurSigmaScale + +internal actual class PlatformDropShadowEffect( + val radius : Float, + val x : Float, + val y : Float, + val color: Color +) + +internal actual fun makeNativeDropShadowEffect( + radius : Float, + x : Float, + y : Float, + color: Color +) : PlatformDropShadowEffect = PlatformDropShadowEffect(radius * BlurSigmaScale, x, y, color) + + + +internal actual fun Paint.applyNativeDropShadowEffect( + effect: PlatformDropShadowEffect, +) { + asFrameworkPaint().setShadowLayer(effect.radius, effect.x, effect.y, effect.color.toArgb()) +} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.android.kt new file mode 100644 index 00000000..4194cc48 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.android.kt @@ -0,0 +1,7 @@ +package io.github.alexzhirkevich.compottie.internal.platform.effects + +import androidx.compose.ui.graphics.Paint + +internal actual fun Paint.resetEffects() { + +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index b7682fa8..0060c1cb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -181,11 +181,7 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { - measureTime { - compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) - }.also { - println(it.inWholeMilliseconds) - } + compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 8737c71a..e7a3592e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -8,7 +8,11 @@ import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.assets.PrecompositionAsset import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect +import io.github.alexzhirkevich.compottie.internal.effects.DropShadowEffect +import io.github.alexzhirkevich.compottie.internal.effects.EffectValue +import io.github.alexzhirkevich.compottie.internal.effects.FillEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect +import io.github.alexzhirkevich.compottie.internal.effects.TintEffect import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.layers.NullLayer import io.github.alexzhirkevich.compottie.internal.layers.ShapeLayer @@ -90,12 +94,26 @@ internal val LottieJson by lazy { polymorphic(LayerEffect::class){ subclass(BlurEffect::class) + subclass(FillEffect::class) + subclass(TintEffect::class) + subclass(DropShadowEffect::class) defaultDeserializer { LayerEffect.UnsupportedEffect.serializer() } } + polymorphic(EffectValue::class){ + subclass(EffectValue.Slider::class) + subclass(EffectValue.CheckBox::class) + subclass(EffectValue.Color::class) + subclass(EffectValue.Angle::class) + + defaultDeserializer { + EffectValue.Unsupported.serializer() + } + } + // the rest polymorphic stuff doesn't really do anything. // just referencing classes here to avoid them been tree-shaken by the proguard/webpack diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt index 3020a5e7..9482566f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.effects +import kotlinx.serialization.Contextual import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -8,9 +9,8 @@ import kotlinx.serialization.Transient @SerialName("29") internal class BlurEffect( @SerialName("ef") - val values : List + override val values : List> ) : LayerEffect { - @Transient - val radius = (values[0] as EffectValue.Slider).value + val radius get() = (values.getOrNull(0) as? EffectValue.Slider)?.value } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt new file mode 100644 index 00000000..5fbd0420 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt @@ -0,0 +1,20 @@ +package io.github.alexzhirkevich.compottie.internal.effects + +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import kotlinx.serialization.Contextual +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("25") +internal class DropShadowEffect( + @SerialName("ef") + override val values : List> +) : LayerEffect { + + val color get() = (values.getOrNull(0) as? EffectValue.Color)?.value + val opacity get() = (values.getOrNull(1) as? EffectValue.Slider)?.value + val angle get() = (values.getOrNull(2) as? EffectValue.Angle)?.value + val distance get() = (values.getOrNull(3) as? EffectValue.Slider)?.value + val blur get() = (values.getOrNull(4) as? EffectValue.Slider)?.value +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt index d753fa56..37972d84 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt @@ -1,27 +1,51 @@ package io.github.alexzhirkevich.compottie.internal.effects +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonClassDiscriminator +import kotlinx.serialization.json.JsonElement @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("ty") -internal sealed interface EffectValue { +internal sealed interface EffectValue { + + val value : T? @Serializable @SerialName("0") class Slider( @SerialName("v") - val value : AnimatedNumber? = null - ) : EffectValue + override val value : AnimatedNumber? = null + ) : EffectValue + + @Serializable + @SerialName("1") + class Angle( + @SerialName("v") + override val value : AnimatedNumber? = null + ) : EffectValue @Serializable @SerialName("4") class CheckBox( @SerialName("v") - val value : AnimatedNumber? = null - ) : EffectValue + override val value : AnimatedNumber? = null + ) : EffectValue + + @Serializable + @SerialName("2") + class Color( + @SerialName("v") + override val value : AnimatedColor? = null + ) : EffectValue + + @Serializable + class Unsupported( + @SerialName("v") + override val value : JsonElement? = null + ) : EffectValue } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt new file mode 100644 index 00000000..9ba03723 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt @@ -0,0 +1,18 @@ +package io.github.alexzhirkevich.compottie.internal.effects + +import kotlinx.serialization.Contextual +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("21") +internal class FillEffect( + @SerialName("ef") + override val values : List> +) : LayerEffect { + + val color get() = (values.getOrNull(2) as? EffectValue.Color)?.value + + val opacity get() = (values.getOrNull(6) as? EffectValue.Slider)?.value + +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt index 6fbef9cf..2e249202 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt @@ -9,6 +9,11 @@ import kotlinx.serialization.json.JsonClassDiscriminator @JsonClassDiscriminator("ty") internal sealed interface LayerEffect { + val values : List> + @Serializable - data object UnsupportedEffect : LayerEffect + data object UnsupportedEffect : LayerEffect { + override val values: List> + get() = emptyList() + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt new file mode 100644 index 00000000..a03cfbd3 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt @@ -0,0 +1,151 @@ +package io.github.alexzhirkevich.compottie.internal.effects + +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.ColorMatrix +import androidx.compose.ui.graphics.ColorMatrixColorFilter +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.layers.BaseLayer +import io.github.alexzhirkevich.compottie.internal.platform.effects.PlatformDropShadowEffect +import io.github.alexzhirkevich.compottie.internal.platform.effects.applyNativeDropShadowEffect +import io.github.alexzhirkevich.compottie.internal.platform.effects.makeNativeDropShadowEffect +import io.github.alexzhirkevich.compottie.internal.platform.effects.resetEffects +import io.github.alexzhirkevich.compottie.internal.platform.setBlurMaskFilter +import io.github.alexzhirkevich.compottie.internal.utils.Math +import kotlin.math.PI +import kotlin.math.cos +import kotlin.math.sin + +internal class LayerEffectsApplier( + private val layer: BaseLayer +) { + fun applyTo(paint: Paint, animationState: AnimationState, effectState : LayerEffectsState) { + + paint.resetEffects() + layer.effects.fastForEachReversed { + when (it){ + is BlurEffect -> paint.applyBlurEffect(it, animationState, effectState) + is FillEffect -> paint.applyFillEffect(it, animationState, effectState) + is TintEffect -> paint.applyTintEffect(it, animationState, effectState) + is DropShadowEffect -> { +// paint.applyDropShadowEffect(it, animationState, effectState) + } + LayerEffect.UnsupportedEffect -> { + + } + } + } + + effectState.lastPaint = paint + } +} + +internal class LayerEffectsState { + var blurRadius: Float? = null + var lastPaint : Paint? = null + + var lastFillColor : Color? = null + var lastFillFilter : ColorFilter? = null + + var dropShadowHash : Int? = null + var dropShadowEffect : PlatformDropShadowEffect? = null +} + +private fun Paint.applyBlurEffect( + effect: BlurEffect, + animationState: AnimationState, + effectState: LayerEffectsState +) { + val radius = effect.radius?.interpolated(animationState)?.takeIf { it > 0f } ?: return + + if (this !== effectState.lastPaint || radius != effectState.blurRadius) { + setBlurMaskFilter(radius) + effectState.blurRadius = radius + } +} + +private fun Paint.applyFillEffect( + effect: FillEffect, + animationState: AnimationState, + effectState: LayerEffectsState +) { + val color = effect.color?.interpolated(animationState)?.let { + it.copy( + alpha = it.alpha * (effect.opacity?.interpolated(animationState)?.coerceIn(0f, 1f) ?: 1f) + ) + } + if (this !== effectState.lastPaint || effectState.lastFillColor != color) { + + colorFilter = color?.let { + ColorFilter.tint(color) + } + effectState.lastFillFilter = colorFilter + effectState.lastFillColor = color + } else { + colorFilter = effectState.lastFillFilter + } +} + +private fun Paint.applyTintEffect( + effect: TintEffect, + animationState: AnimationState, + effectState: LayerEffectsState +) { + val intensity = + effect.intensity?.interpolated(animationState)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + + val black = effect.black?.interpolated(animationState)?.let { + it.copy( + alpha = it.alpha * intensity + ) + } + val white = effect.white?.interpolated(animationState)?.let { + it.copy( + alpha = it.alpha * intensity + ) + } + + if (black != Color.Black) + return + + colorFilter = if (white != null) { + ColorFilter.tint(white, BlendMode.Modulate) + } else null +} + +internal fun Paint.applyDropShadowEffect( + effect: DropShadowEffect, + animationState: AnimationState, + effectState: LayerEffectsState, +) { + + val directionRad = Math.toRadians(effect.angle?.interpolated(animationState) ?: 0f) + + val distance = effect.distance?.interpolated(animationState) ?: 0f + val x = (sin(directionRad)) * distance + val y = (cos(directionRad + PI).toFloat()) * distance + + val baseColor = effect.color?.interpolated(animationState) ?: Color.Black + + val opacity = effect.opacity?.interpolated(animationState)?.div(100)?.coerceIn(0f, 1f) ?: 1f + + val color = baseColor.copy( + opacity * baseColor.alpha, + baseColor.red, + baseColor.green, + baseColor.blue + ) + val radius: Float = effect.blur?.interpolated(animationState) ?: 0f + + val hash = arrayOf(x, y, color, radius).contentHashCode() + + if (effectState.lastPaint !== this || hash != effectState.dropShadowHash || effectState.dropShadowEffect == null) { + effectState.dropShadowEffect = makeNativeDropShadowEffect(radius, x, y, color) + effectState.dropShadowHash = hash + } + + applyNativeDropShadowEffect(effectState.dropShadowEffect!!) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt new file mode 100644 index 00000000..856551bb --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt @@ -0,0 +1,25 @@ +package io.github.alexzhirkevich.compottie.internal.effects + +import kotlinx.serialization.Contextual +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("20") +internal class TintEffect( + @SerialName("ef") + override val values : List> +) : LayerEffect { + + val black by lazy { + (values.getOrNull(0) as? EffectValue.Color)?.value + } + + val white by lazy { + (values.getOrNull(1) as? EffectValue.Color)?.value + } + + val intensity by lazy { + (values.getOrNull(2) as? EffectValue.Slider)?.value + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index aa8ff41e..59cea347 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -19,6 +19,7 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode import io.github.alexzhirkevich.compottie.internal.helpers.isInvert @@ -96,6 +97,10 @@ internal abstract class BaseLayer() : Layer, DrawingContent { effects.fastFirstOrNull { it is BlurEffect } as? BlurEffect } + override val effectsApplier by lazy { + LayerEffectsApplier(this) + } + abstract fun drawLayer( drawScope: DrawScope, parentMatrix: Matrix, @@ -240,18 +245,6 @@ internal abstract class BaseLayer() : Layer, DrawingContent { this.matteLayer = layer } - override fun applyBlurEffectIfNeeded(paint: Paint, state: AnimationState, lastBlurRadius : Float?) : Float { - - return blurEffect?.let { - val radius = it.radius?.interpolated(state) ?: return@let null - - if (radius != lastBlurRadius) { - paint.setBlurMaskFilter(radius, isImage = this is ImageLayer) - } - return radius - } ?: 0f - } - private fun buildParentLayerListIfNeeded() { if (parentLayers != null) { return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 6aaf5ea9..51b0f6c6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -2,6 +2,9 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope @@ -15,6 +18,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.Mask import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -86,13 +90,16 @@ internal class ImageLayer( ) : BaseLayer() { @Transient - private val paint = Paint() + private val paint = Paint().apply { + } private val asset : ImageAsset? by lazy { painterProperties?.assets?.get(refId) as? ImageAsset } - private var lastBlurRadius : Float? = null + private val effectState by lazy { + LayerEffectsState() + } override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { val mAsset = asset ?: return @@ -100,17 +107,24 @@ internal class ImageLayer( paint.alpha = parentAlpha - lastBlurRadius = applyBlurEffectIfNeeded(paint, state, lastBlurRadius) + effectsApplier.applyTo(paint, state, effectState) + drawScope.drawIntoCanvas { canvas -> canvas.save() canvas.concat(parentMatrix) - canvas.drawImage( + + drawScope.drawImage( image = bitmap, - topLeftOffset = Offset.Zero, - paint = paint + alpha = parentAlpha, + colorFilter = paint.colorFilter ) +// canvas.drawImage( +// image = bitmap, +// topLeftOffset = Offset.Zero, +// paint = paint +// ) canvas.restore() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 1918c09d..79f274d0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -6,6 +6,7 @@ import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Mask @@ -58,7 +59,8 @@ internal sealed interface Layer { val effects: List - fun applyBlurEffectIfNeeded(paint: Paint, state: AnimationState, lastBlurRadius : Float?) : Float + + val effectsApplier : LayerEffectsApplier } internal val Layer.isContainerLayer get() = name == "__container" diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.kt new file mode 100644 index 00000000..7613a424 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.kt @@ -0,0 +1,18 @@ +package io.github.alexzhirkevich.compottie.internal.platform.effects + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Paint + +internal expect class PlatformDropShadowEffect + +internal expect fun makeNativeDropShadowEffect( + radius : Float, + x : Float, + y : Float, + color: Color +) : PlatformDropShadowEffect + + +internal expect fun Paint.applyNativeDropShadowEffect( + effect: PlatformDropShadowEffect, +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.kt new file mode 100644 index 00000000..afd6e70e --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.internal.platform.effects + +import androidx.compose.ui.graphics.Paint + +internal expect fun Paint.resetEffects() \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 7883f989..714a69c3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -19,6 +19,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.DashType import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.helpers.applyTrimPath @@ -116,7 +117,9 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private var roundShape : RoundShape? = null - private var lastBlurRadius : Float? = null + private val effectsState by lazy { + LayerEffectsState() + } override fun draw( drawScope: DrawScope, @@ -139,7 +142,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { applyDashPatternIfNeeded(parentMatrix, state) - lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, state, lastBlurRadius) + layer.effectsApplier.applyTo(paint, state, effectsState) roundShape?.applyTo(paint, state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 0901b79d..94469897 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -14,6 +14,7 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode @@ -77,8 +78,9 @@ internal class FillShape( @Transient private var roundShape : RoundShape? = null - private var lastBlurRadius : Float? = null - + private val effectsState by lazy { + LayerEffectsState() + } override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { if (hidden) { @@ -93,8 +95,7 @@ internal class FillShape( roundShape?.applyTo(paint, state) - lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, state, lastBlurRadius) - + layer.effectsApplier.applyTo(paint, state, effectsState) path.reset() paths.fastForEach { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index a2760993..246e3fc1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -16,6 +16,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.GradientType import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType import io.github.alexzhirkevich.compottie.internal.layers.Layer @@ -94,8 +95,9 @@ internal class GradientFillShape( @Transient private var roundShape : RoundShape? = null - private var lastBlurRadius : Float? = null - + private val effectsState by lazy { + LayerEffectsState() + } override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { if (hidden){ @@ -119,7 +121,7 @@ internal class GradientFillShape( parentAlpha } - lastBlurRadius = layer.applyBlurEffectIfNeeded(paint, state, lastBlurRadius) + layer.effectsApplier.applyTo(paint, state, effectsState) path.reset() diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt index 4980e117..1115c02e 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.skiko.kt @@ -136,5 +136,5 @@ internal actual fun Paint.setBlurMaskFilter(radius: Float, isImage : Boolean) { } } -private val BlurSigmaScale = .3f +internal val BlurSigmaScale = .3f diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.skiko.kt new file mode 100644 index 00000000..c92b89ff --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformDropShadowEffect.skiko.kt @@ -0,0 +1,37 @@ +package io.github.alexzhirkevich.compottie.internal.platform.effects + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.toArgb +import io.github.alexzhirkevich.compottie.internal.platform.BlurSigmaScale +import org.jetbrains.skia.ImageFilter + +internal actual class PlatformDropShadowEffect(val filter : ImageFilter) + +internal actual fun makeNativeDropShadowEffect( + radius : Float, + x : Float, + y : Float, + color: Color +) : PlatformDropShadowEffect { + val sigma = radius * BlurSigmaScale + return PlatformDropShadowEffect(ImageFilter.makeDropShadow( + dx = x, + dy = y, + sigmaX = sigma, + sigmaY = sigma, + color = color.toArgb() + )) +} + +internal actual fun Paint.applyNativeDropShadowEffect( + effect: PlatformDropShadowEffect, +) { + val fp = asFrameworkPaint() + + if (fp.imageFilter == null) { + fp.imageFilter = effect.filter + } else { + fp.imageFilter = ImageFilter.makeCompose(effect.filter, fp.imageFilter) + } +} \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.skiko.kt new file mode 100644 index 00000000..918363e5 --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/effects/PlatformLayerEffect.skiko.kt @@ -0,0 +1,7 @@ +package io.github.alexzhirkevich.compottie.internal.platform.effects + +import androidx.compose.ui.graphics.Paint + +internal actual fun Paint.resetEffects() { + asFrameworkPaint().imageFilter = null +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json new file mode 100644 index 00000000..e69de29b diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index f7d414a3..63bcc5f6 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,3 +1,4 @@ +import androidx.compose.foundation.Canvas import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize @@ -11,6 +12,8 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PathEffect import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.Dp @@ -67,7 +70,7 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(WONDERS) + LottieCompositionSpec.Resource(ROBOT) // LottieCompositionSpec.Resource(IMAGE_ASSET) From b1b80b35346297d4fefbaa470ff1ef2a06baf0aa Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 12 Jun 2024 17:02:30 +0300 Subject: [PATCH 039/100] upd --- .../internal/animation/AnimatedNumber.kt | 1 + .../internal/animation/AnimatedVector2.kt | 2 + .../internal/helpers/CubicCurveData.kt | 9 -- .../compottie/internal/helpers/ShapeData.kt | 97 ------------------- .../compottie/internal/layers/BaseLayer.kt | 61 +++--------- .../compottie/internal/utils/MutableRect.kt | 23 ++++- 6 files changed, 35 insertions(+), 158 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt index c69a2347..e24bea62 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -48,6 +48,7 @@ internal sealed interface AnimatedNumber : KeyframeAnimation, Indexable { ) } +internal fun AnimatedNumber.interpolatedNorm(state: AnimationState) = interpolated(state) / 100f internal class AnimatedNumberSerializer : JsonContentPolymorphicSerializer(AnimatedNumber::class){ override fun selectDeserializer(element: JsonElement): DeserializationStrategy { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 3cf3621c..92940d6c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -118,6 +118,8 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { } } +internal fun AnimatedVector2.interpolatedNorm(state: AnimationState) = interpolated(state) / 100f + internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer(AnimatedVector2::class) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt deleted file mode 100644 index 6f77a52c..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CubicCurveData.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.helpers - -import androidx.compose.ui.geometry.Offset - -internal class CubicCurveData( - var controlPoint1: Offset = Offset.Zero, - var controlPoint2: Offset = Offset.Zero, - var vertex: Offset = Offset.Zero -) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt deleted file mode 100644 index 6125c32b..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/ShapeData.kt +++ /dev/null @@ -1,97 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.helpers - -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.util.fastForEach -import androidx.compose.ui.util.lerp -import kotlin.math.min - -internal class ShapeData( - var curves: MutableList = mutableListOf(), - var initialPoint: Offset = Offset.Zero, - var isClosed: Boolean = false, -) { - - fun interpolateBetween( - shapeData1: ShapeData, - shapeData2: ShapeData, - percentage: Float, - ) { - isClosed = shapeData1.isClosed || shapeData2.isClosed - - val points = min(shapeData1.curves.size, shapeData2.curves.size) - - if (curves.size < points) { - for (i in curves.size until points) { - curves.add(CubicCurveData()) - } - } else if (curves.size > points) { - for (i in curves.size - 1 downTo points) { - curves.removeAt(curves.size - 1) - } - } - - val initialPoint1 = shapeData1.initialPoint - val initialPoint2 = shapeData2.initialPoint - - initialPoint = Offset( - lerp(initialPoint1.x, initialPoint2.x, percentage), - lerp(initialPoint1.y, initialPoint2.y, percentage) - ) - - for (i in curves.indices.reversed()) { - val curve1: CubicCurveData = shapeData1.curves[i] - val curve2: CubicCurveData = shapeData2.curves[i] - - val cp11 = curve1.controlPoint1 - val cp21 = curve1.controlPoint2 - val vertex1 = curve1.vertex - - val cp12 = curve2.controlPoint1 - val cp22 = curve2.controlPoint2 - val vertex2 = curve2.vertex - - curves[i].controlPoint1 = Offset( - lerp(cp11.x, cp12.x, percentage), - lerp(cp11.y, cp12.y, percentage) - ) - curves[i].controlPoint2 = Offset( - lerp(cp21.x, cp22.x, percentage), - lerp(cp21.y, cp22.y, percentage) - ) - curves[i].vertex = Offset( - lerp(vertex1.x, vertex2.x, percentage), - lerp(vertex1.y, vertex2.y, percentage) - ) - } - } -} - -internal fun ShapeData.mapPath(outPath : Path) { - outPath.reset() - outPath.moveTo(initialPoint.x, initialPoint.y) - - var pathFromDataCurrentPoint = initialPoint - - curves.fastForEach { curveData -> - val cp1 = curveData.controlPoint1 - val cp2 = curveData.controlPoint2 - val vertex = curveData.vertex - - if (cp1 == pathFromDataCurrentPoint && cp2 == vertex) { - // On some phones like Samsung phones, zero valued control points can cause artifacting. - // https://github.com/airbnb/lottie-android/issues/275 - // - // This does its best to add a tiny value to the vertex without affecting the final - // animation as much as possible. - // outPath.rMoveTo(0.01f, 0.01f); - outPath.lineTo(vertex.x, vertex.y) - } else { - outPath.cubicTo(cp1.x, cp1.y, cp2.x, cp2.y, vertex.x, vertex.y) - } - pathFromDataCurrentPoint = vertex - } - if (isClosed) { - outPath.close() - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 59cea347..7540b701 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.L import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect @@ -30,12 +31,9 @@ import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set -import io.github.alexzhirkevich.compottie.internal.platform.setBlurMaskFilter import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat -import io.github.alexzhirkevich.compottie.internal.utils.set -import kotlin.math.max -import kotlin.math.min +import io.github.alexzhirkevich.compottie.internal.utils.union internal abstract class BaseLayer() : Layer, DrawingContent { @@ -117,9 +115,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { try { - val frame = state.frame - - if (hidden || (inPoint ?: 0f) > frame || (outPoint ?: Float.MAX_VALUE) < frame) + if (hidden || (inPoint ?: 0f) > state.frame || (outPoint ?: Float.MAX_VALUE) < state.frame) return buildParentLayerListIfNeeded() @@ -132,8 +128,8 @@ internal abstract class BaseLayer() : Layer, DrawingContent { var alpha = parentAlpha - transform.opacity?.interpolated(state)?.let { - alpha = (alpha * (it / 100f)).coerceIn(0f, 1f) + transform.opacity?.interpolatedNorm(state)?.let { + alpha = (alpha * it).coerceIn(0f, 1f) } @@ -157,7 +153,6 @@ internal abstract class BaseLayer() : Layer, DrawingContent { drawScope.drawIntoCanvas { canvas -> canvas.getMatrix(canvasMatrix) - //TODO: fix mask canvas mapping if (!canvasMatrix.isIdentity()) { canvasMatrix.invert() canvasMatrix.map(canvasBounds) @@ -171,7 +166,6 @@ internal abstract class BaseLayer() : Layer, DrawingContent { if (rect.width >= 1f && rect.height >= 1f) { contentPaint.alpha = 1f canvas.saveLayer(rect, contentPaint) - canvas.save() // Clear the off screen buffer. This is necessary for some phones. clearCanvas(canvas) @@ -285,7 +279,6 @@ internal abstract class BaseLayer() : Layer, DrawingContent { masks?.fastForEachIndexed { i, mask -> val maskPath = mask.shape?.interpolated(state) ?: return@fastForEachIndexed - path.set(maskPath) path.transform(matrix) @@ -296,39 +289,11 @@ internal abstract class BaseLayer() : Layer, DrawingContent { // canvas so we can't use the mask bounds. return - MaskMode.Intersect, - MaskMode.Add -> { + else -> { if (mask.isInverted) { return } - val tempMaskBoundsRect = path.getBounds() - // As we iterate through the masks, we want to calculate the union region of the masks. - // We initialize the rect with the first mask. If we don't call set() on the first call, - // the rect will always extend to (0,0). - if (i == 0) { - maskBoundsRect.set(tempMaskBoundsRect) - } else { - maskBoundsRect.set( - min(maskBoundsRect.left, tempMaskBoundsRect.left), - min(maskBoundsRect.top, tempMaskBoundsRect.top), - max(maskBoundsRect.right, tempMaskBoundsRect.right), - max(maskBoundsRect.bottom, tempMaskBoundsRect.bottom) - ) - } - } - - else -> { - val tempMaskBoundsRect = path.getBounds() - if (i == 0) { - maskBoundsRect.set(tempMaskBoundsRect) - } else { - maskBoundsRect.set( - min(maskBoundsRect.left, tempMaskBoundsRect.left), - min(maskBoundsRect.top, tempMaskBoundsRect.top), - max(maskBoundsRect.right, tempMaskBoundsRect.right), - max(maskBoundsRect.bottom, tempMaskBoundsRect.bottom) - ) - } + maskBoundsRect.union(path.getBounds()) } } } @@ -416,7 +381,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) - contentPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + contentPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f canvas.drawPath(path, dstOutPaint) canvas.restore() } @@ -430,7 +395,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) - contentPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + contentPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f canvas.drawPath(path, contentPaint) } @@ -454,8 +419,8 @@ internal abstract class BaseLayer() : Layer, DrawingContent { ) { canvas.saveLayer(rect, dstOutPaint) canvas.drawRect(rect, contentPaint) - dstOutPaint.alpha = mask.opacity?.interpolated(state) - ?.div(100f)?.coerceIn(0f, 1f) ?: 1f + dstOutPaint.alpha = mask.opacity?.interpolatedNorm(state) + ?.coerceIn(0f, 1f) ?: 1f val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) @@ -473,7 +438,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) - contentPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + contentPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f canvas.drawPath(path, contentPaint) canvas.restore() } @@ -486,7 +451,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { ) { canvas.saveLayer(rect, dstInPaint) canvas.drawRect(rect, contentPaint) - dstOutPaint.alpha = mask.opacity?.interpolated(state)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + dstOutPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f val maskPath = mask.shape?.interpolated(state) ?: return path.set(maskPath) path.transform(matrix) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt index b7d40d88..0abb60fe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MutableRect.kt @@ -36,14 +36,29 @@ internal fun MutableRect.union(other : MutableRect) { } if ((left < right) && (top < bottom)) { - left = min(left, other.left) top = min(top, other.top) - right = max(right, other.top) - bottom = max(right, other.bottom) + right = max(right, other.right) + bottom = max(bottom, other.bottom) + } else { + set(other) + } +} + +internal fun MutableRect.union(other : Rect) { + + if ((other.left >= other.right) || (other.top >= other.bottom)) { return } - set(other) + + if ((left < right) && (top < bottom)) { + left = min(left, other.left) + top = min(top, other.top) + right = max(right, other.right) + bottom = max(bottom, other.bottom) + } else { + set(other) + } } internal fun MutableRect.set(other : MutableRect){ From 6320972812faf18cd1eee2f8663b73b2ca9a93c6 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 12 Jun 2024 17:02:55 +0300 Subject: [PATCH 040/100] upd --- .../compottie/DotLottieAssetsManager.kt | 4 +- .../compottie/NetworkAssetsManager.kt | 3 - .../compottie/LottieComposition.kt | 7 +- .../compottie/assets/LottieAssetManager.kt | 2 +- .../compottie/internal/LottieData.kt | 4 +- .../internal/animation/AnimatedShape.kt | 42 ++--- .../internal/animation/AnimatedTransform.kt | 6 +- .../internal/animation/BezierKeyframe.kt | 31 --- .../internal/animation/RepeaterTransform.kt | 8 +- .../internal/assets/LottieFontAsset.kt | 5 + .../internal/content/ContentGroup.kt | 13 +- .../internal/content/GreedyContent.kt | 2 +- .../internal/effects/LayerEffectsApplier.kt | 15 +- .../compottie/internal/helpers/Bezier.kt | 177 ++++++++++-------- .../internal/helpers/CompoundTrimPath.kt | 28 ++- .../internal/helpers/text/TextDocument.kt | 2 +- .../internal/layers/SolidColorLayer.kt | 3 +- .../compottie/internal/layers/TextLayer.kt | 59 ++++-- .../internal/shapes/BaseStrokeShape.kt | 7 +- .../compottie/internal/shapes/EllipseShape.kt | 22 +-- .../compottie/internal/shapes/FillShape.kt | 5 +- .../internal/shapes/GradientFillShape.kt | 3 +- .../internal/shapes/MergePathsShape.kt | 75 ++++---- .../compottie/internal/shapes/PathShape.kt | 14 +- .../internal/shapes/PolystarShape.kt | 19 +- .../compottie/internal/shapes/RectShape.kt | 12 +- .../internal/shapes/RepeaterShape.kt | 21 +-- .../compottie/internal/utils/MiscUtil.kt | 13 ++ .../internal/platform/PlatformPath.skiko.kt | 1 - .../composeResources/files/test.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 7 +- 31 files changed, 304 insertions(+), 307 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index f4438a0a..a8932f54 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -11,7 +11,7 @@ import okio.Path.Companion.toPath internal class DotLottieAssetsManager( private val zipFileSystem: ZipFileSystem, -) : LottieAssetsManager { +) : LottieAssetsManager by LottieAssetsManager.Empty { override suspend fun image(image: LottieImage): ImageRepresentable? { @@ -34,8 +34,6 @@ internal class DotLottieAssetsManager( } } - override suspend fun font(font: LottieFont): Font? = null - private suspend fun load(root: String?, trimPath: String?, trimName: String?): ByteArray? { val fullPath = listOfNotNull(root, trimPath, trimName) .joinToString("/") diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index 453ec35d..52cfaf60 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -1,9 +1,6 @@ package io.github.alexzhirkevich.compottie -import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.platform.Font import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 70c05ee2..07689845 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -9,7 +9,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue -import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager @@ -18,9 +17,7 @@ import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.durationMillis -import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll @@ -50,7 +47,7 @@ class LottieComposition internal constructor( @InternalCompottieApi var speed: Float by mutableFloatStateOf(1f) - internal var fonts: Map = emptyMap() + internal var fontsByFamily: Map = emptyMap() private val fontMutex = Mutex() @@ -103,7 +100,7 @@ class LottieComposition internal constructor( private suspend fun loadFonts(assetsManager: LottieAssetsManager) { fontMutex.withLock { coroutineScope { - fonts = lottieData.fonts + fontsByFamily = lottieData.fonts?.list ?.map { async { val f = it.font ?: assetsManager.font( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt index 916c8643..c7a7972e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt @@ -1,8 +1,8 @@ package io.github.alexzhirkevich.compottie.assets import androidx.compose.runtime.Stable +import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily /** * Used to fetch lottie assets that are not embedded to the animation JSON file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index 2b943a77..29b9d894 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal +import io.github.alexzhirkevich.compottie.internal.assets.FontList import io.github.alexzhirkevich.compottie.internal.helpers.Marker import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.assets.LottieFontAsset @@ -35,10 +36,11 @@ internal data class LottieData( val assets : List = emptyList(), - val fonts : List? = null, + val fonts : FontList? = null, val markers : List = emptyList() ) + internal val LottieData.durationMillis get() = (outPoint - inPoint) / frameRate * 1000 \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 68721f9c..d5276e35 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -3,16 +3,10 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Path import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.Bezier -import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData -import io.github.alexzhirkevich.compottie.internal.helpers.mapPath -import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -import kotlinx.serialization.json.JsonArray -import kotlinx.serialization.json.JsonClassDiscriminator import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject @@ -35,22 +29,15 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { val bezier: Bezier, ) : AnimatedShape { - private val unmodifiedPath by lazy { - Path().also { - bezier.toShapeData().mapPath(it) - } - } - - private val shapeData by lazy { - bezier.toShapeData() - } - @Transient private val tmpPath = Path() + override fun interpolated(state: AnimationState): Path { - tmpPath.reset() - shapeData.mapPath(tmpPath) - return tmpPath +// bezier.mapPath(tmpPath) +// return tmpPath + return Path().apply { + bezier.mapPath(this) + } } } @@ -70,17 +57,20 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { private val tmpPath = Path() @Transient - private val tmpShapeData = ShapeData() + private val tmpBezier = Bezier() @Transient - private var delegate = BaseKeyframeAnimation( + private var delegate = BaseKeyframeAnimation( expression = expression, - keyframes = keyframes.map { it.toShapeKeyframe() }, + keyframes = keyframes, emptyValue = tmpPath, - map = { s, e, p-> - tmpShapeData.interpolateBetween(s, e, easingX.transform(p)) - tmpShapeData.mapPath(tmpPath) - tmpPath + map = { s, e, p -> +// tmpBezier.interpolateBetween(s, e, easingX.transform(p)) +// tmpBezier.mapPath(tmpPath) +// tmpPath + Path().apply { + tmpBezier.mapPath(this) + } } ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 92feb56f..1698eb60 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -94,10 +94,10 @@ internal abstract class AnimatedTransform { matrix.preConcat(skewMatrix3) } - scale?.interpolated(state) - ?.takeIf { it.x != 100f || it.y != 100f } + scale?.interpolatedNorm(state) + ?.takeIf { it.x != 1f || it.y != 1f } ?.let { - matrix.preScale(it.x / 100f, it.y / 100f) + matrix.preScale(it.x, it.y) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt index 0ea0a0d2..043347f6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt @@ -2,8 +2,6 @@ package io.github.alexzhirkevich.compottie.internal.animation import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.helpers.ShapeData -import io.github.alexzhirkevich.compottie.internal.helpers.toShapeData import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonArray @@ -34,35 +32,6 @@ internal class BezierKeyframe( override val outValue : BezierInterpolation? = null, ) : Keyframe() - -internal fun BezierKeyframe.toShapeKeyframe( - -) = ShapeKeyframe( - start = start?.toShapeData(), - end = end?.toShapeData(), - time = time, - inValue = inValue, - outValue = outValue, - hold = hold -) - -internal class ShapeKeyframe( - - override val start: ShapeData? = null, - - override val end: ShapeData? = null, - - override val time: Float, - - override val hold: BooleanInt = BooleanInt.No, - - override val inValue : BezierInterpolation? = null, - - override val outValue : BezierInterpolation? = null, - -) : Keyframe() - - internal class BezierSerializer : JsonTransformingSerializer(Bezier.serializer()) { override fun transformDeserialize(element: JsonElement): JsonElement { if (element is JsonArray){ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt index 1cf584b4..b832b13d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt @@ -49,10 +49,12 @@ internal class RepeaterTransform( ) } - scale?.interpolated(state)?.let { + scale?.interpolatedNorm(state)?.takeIf { + it.x != 1f || it.y != 1f + }?.let { matrix.preScale( - it.x.div(100f).pow(amount), - it.y.div(100f).pow(amount) + it.x.pow(amount), + it.y.pow(amount) ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt index 132f4e80..ccb08fee 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt @@ -7,6 +7,11 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +@Serializable +internal class FontList( + val list : List +) + @Serializable internal class LottieFontAsset( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 4e44f85e..f9260293 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union @@ -28,11 +29,11 @@ internal class ContentGroup( } private val matrix = Matrix() private val path = Path() - private val boundsRect = MutableRect(0f, 0f, 0f, 0f) +// private val boundsRect = MutableRect(0f, 0f, 0f, 0f) private val mContents by lazy { - contents.filter { - !(it is ContentGroupBase && it.pathContents.isEmpty()) + contents.filterNot { + it is ContentGroupBase && it.pathContents.isEmpty() }.toMutableList() } @@ -48,7 +49,7 @@ internal class ContentGroup( val greedyContents = contents.filterIsInstance().reversed() greedyContents.fastForEachReversed { - it.absorbContent(this.mContents.listIterator(this.mContents.size)) + it.absorbContent(mContents) } } @@ -69,9 +70,9 @@ internal class ContentGroup( if (transform != null) { matrix.preConcat(transform.matrix(state)) - transform.opacity?.interpolated(state)?.let { + transform.opacity?.interpolatedNorm(state)?.let { - layerAlpha = (layerAlpha * it / 100f).coerceIn(0f, 1f) + layerAlpha = (layerAlpha * it).coerceIn(0f, 1f) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt index 1bdb8c36..5e3e4121 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt @@ -1,5 +1,5 @@ package io.github.alexzhirkevich.compottie.internal.content interface GreedyContent { - fun absorbContent(contents: MutableListIterator) + fun absorbContent(contents: MutableList) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt index a03cfbd3..f1228c8c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.graphics.ColorMatrixColorFilter import androidx.compose.ui.graphics.Paint import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.layers.BaseLayer import io.github.alexzhirkevich.compottie.internal.platform.effects.PlatformDropShadowEffect import io.github.alexzhirkevich.compottie.internal.platform.effects.applyNativeDropShadowEffect @@ -73,7 +74,7 @@ private fun Paint.applyFillEffect( effectState: LayerEffectsState ) { val color = effect.color?.interpolated(animationState)?.let { - it.copy( + it.copy( // don't divide by 100 alpha = it.alpha * (effect.opacity?.interpolated(animationState)?.coerceIn(0f, 1f) ?: 1f) ) } @@ -94,18 +95,14 @@ private fun Paint.applyTintEffect( animationState: AnimationState, effectState: LayerEffectsState ) { - val intensity = - effect.intensity?.interpolated(animationState)?.div(100f)?.coerceIn(0f, 1f) ?: 1f + val intensity = effect.intensity?.interpolatedNorm(animationState) + ?.coerceIn(0f, 1f) ?: 1f val black = effect.black?.interpolated(animationState)?.let { - it.copy( - alpha = it.alpha * intensity - ) + it.copy(alpha = it.alpha * intensity) } val white = effect.white?.interpolated(animationState)?.let { - it.copy( - alpha = it.alpha * intensity - ) + it.copy(alpha = it.alpha * intensity) } if (black != Color.Black) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt index acc7ab9b..08efb771 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt @@ -1,122 +1,139 @@ package io.github.alexzhirkevich.compottie.internal.helpers +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.lerp import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach +import androidx.compose.ui.util.fastForEachIndexed import io.github.alexzhirkevich.compottie.internal.util.toOffset import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient import kotlin.math.min @Serializable internal class Bezier( - @SerialName("c") var isClosed : Boolean = false, @SerialName("i") - var inTangents : List = emptyList(), + val inTangents : List = emptyList(), @SerialName("o") - var outTangents : List = emptyList(), + val outTangents : List = emptyList(), @SerialName("v") - var vertices : List = emptyList(), + val vertices : List = emptyList(), ) { + @Transient + var curves: MutableList = ArrayList(vertices.size) + + @Transient + var initialPoint: Offset = Offset.Zero + init { - require(vertices.size == inTangents.size && vertices.size == outTangents.size){ + require(vertices.size == inTangents.size && vertices.size == outTangents.size) { "Invalid bezier curve. Control points count must be the same as vertices count" } - } -} - -internal fun Bezier.lerp(from: Bezier, to: Bezier, fraction : Float) { - isClosed = from.isClosed || to.isClosed - val size = min(from.vertices.size, to.vertices.size) + if (vertices.isNotEmpty()) { + initialPoint = vertices.first().toOffset() - if (inTangents !is MutableList<*>) { - inTangents = ArrayList(size) - } + for (i in 1..vertices.lastIndex) { - if (outTangents !is MutableList<*>) { - outTangents = ArrayList(size) - } + val prevVertex = vertices[i - 1] + val cp1 = outTangents[i - 1] + val cp2 = inTangents[i] + val vertex = vertices[i] - if (vertices !is MutableList<*>) { - vertices = ArrayList(size) - } + val shapeCp1 = Offset(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = Offset(vertex[0] + cp2[0], vertex[1] + cp2[1]) + curves.add(CubicCurveData(shapeCp1, shapeCp2, vertex.toOffset())) + } - val i = inTangents as MutableList - val o = outTangents as MutableList - val v = vertices as MutableList + if (isClosed) { + val vertex = vertices[0] + val prevVertex = vertices.last() + val cp1 = outTangents[vertices.lastIndex] + val cp2 = inTangents[0] - if(v.size > size){ - v.dropLast(v.size-size) - o.dropLast(v.size-size) - i.dropLast(v.size-size) - } + val shapeCp1 = Offset(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = Offset(vertex[0] + cp2[0], vertex[1] + cp2[1]) - if (v.size < size){ - repeat(size - v.size){ - v.add(floatArrayOf(0f,0f)) - o.add(floatArrayOf(0f,0f)) - i.add(floatArrayOf(0f,0f)) + curves.add(CubicCurveData(shapeCp1, shapeCp2, vertex.toOffset())) + } } } - repeat(size) { - - val cp11 = from.inTangents[it].toOffset() - val cp21 = from.outTangents[it].toOffset() - val vertex1 = from.vertices[it].toOffset() + fun interpolateBetween( + a: Bezier, + b: Bezier, + percentage: Float, + ) { - val cp12 = to.inTangents[it].toOffset() - val cp22 = to.outTangents[it].toOffset() - val vertex2 = to.vertices[it].toOffset() + isClosed = a.isClosed || b.isClosed - i[it][0] = androidx.compose.ui.util.lerp(cp11.x, cp12.x, fraction) - i[it][1] = androidx.compose.ui.util.lerp(cp11.y, cp12.y, fraction) + val points = min(a.curves.size, b.curves.size) - o[it][0] = androidx.compose.ui.util.lerp(cp21.x, cp22.x, fraction) - o[it][1] = androidx.compose.ui.util.lerp(cp21.y, cp22.y, fraction) - - v[it][0] = androidx.compose.ui.util.lerp(vertex1.x, vertex2.x, fraction) - v[it][1] = androidx.compose.ui.util.lerp(vertex1.y, vertex2.y, fraction) - } -} - -internal fun Bezier.toShapeData() : ShapeData { - - val initialPoint = vertices.first() - - val curves = mutableListOf() + if (curves.size < points) { + repeat(curves.size - points) { + curves.add(CubicCurveData()) + } + } + if (curves.size > points) { + repeat(points - curves.size) { + curves.removeLast() + } + } - for (i in 1..vertices.lastIndex) { + initialPoint = lerp(a.initialPoint, b.initialPoint, percentage) - val prevVertex = vertices[i - 1] - val cp1 = outTangents[i - 1] - val cp2 = inTangents[i] - val vertex = vertices[i] + curves.fastForEachIndexed { i, curve -> + val curve1 = a.curves[i] + val curve2 = b.curves[i] - val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) - val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) - curves.add(CubicCurveData(shapeCp1.toOffset(), shapeCp2.toOffset(), vertex.toOffset())) + curve.controlPoint1 = lerp(curve1.controlPoint1, curve2.controlPoint1, percentage) + curve.controlPoint2 = lerp(curve1.controlPoint2, curve2.controlPoint2, percentage) + curve.vertex = lerp(curve1.vertex, curve2.vertex, percentage) + } } - if (isClosed) { - val vertex = vertices[0] - val prevVertex = vertices.last() - val cp1 = outTangents[vertices.lastIndex] - val cp2 = inTangents[0] - - val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) - val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) - - curves.add(CubicCurveData(shapeCp1.toOffset(), shapeCp2.toOffset(), vertex.toOffset())) + fun mapPath(outPath : Path) { + outPath.reset() + outPath.moveTo(initialPoint.x, initialPoint.y) + + var pathFromDataCurrentPoint = initialPoint + + curves.fastForEach { curve -> + if (curve.controlPoint1 == pathFromDataCurrentPoint && curve.controlPoint2 == curve.vertex) { + // On some phones like Samsung phones, zero valued control points can cause artifacting. + // https://github.com/airbnb/lottie-android/issues/275 + // + // This does its best to add a tiny value to the vertex without affecting the final + // animation as much as possible. +// outPath.relativeMoveTo(0.01f, 0.01f); + outPath.lineTo(curve.vertex.x, curve.vertex.y) + } else { + outPath.cubicTo( + curve.controlPoint1.x, + curve.controlPoint1.y, + curve.controlPoint2.x, + curve.controlPoint2.y, + curve.vertex.x, + curve.vertex.y + ) + } + pathFromDataCurrentPoint = curve.vertex + } + if (isClosed) { + outPath.close() + } } - - return ShapeData( - curves = curves, - initialPoint = initialPoint.toOffset(), - isClosed = isClosed - ) } + +internal class CubicCurveData( + var controlPoint1: Offset = Offset.Zero, + var controlPoint2: Offset = Offset.Zero, + var vertex: Offset = Offset.Zero +) + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt index 1350f0b1..2c07b02d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt @@ -3,18 +3,18 @@ package io.github.alexzhirkevich.compottie.internal.helpers import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm +import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape +import io.github.alexzhirkevich.compottie.internal.shapes.isSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.utils.floorMod import kotlin.math.abs -internal class CompoundTrimPath { - private val contents: MutableList = mutableListOf() - - fun addTrimPath(trimPath: TrimPathShape) { - contents.add(trimPath) - } +internal class CompoundTrimPath( + private val contents : List +) { fun apply(path: Path, state: AnimationState) { contents.fastForEachReversed { @@ -23,17 +23,25 @@ internal class CompoundTrimPath { } } +internal fun CompoundSimultaneousTrimPath(contents: List) : CompoundTrimPath? { + return contents + .filterIsInstance() + .filter(Content::isSimultaneousTrimPath) + .takeIf(List<*>::isNotEmpty) + ?.let { CompoundTrimPath(it) } +} + internal fun Path.applyTrimPath(trimPath: TrimPathShape, state: AnimationState) { if (trimPath.hidden) { return } - val start: Float = trimPath.start.interpolated(state) - val end: Float = trimPath.end.interpolated(state) + val start: Float = trimPath.start.interpolatedNorm(state) + val end: Float = trimPath.end.interpolatedNorm(state) val offset: Float = trimPath.offset.interpolated(state) applyTrimPath( - startValue = start / 100f, - endValue = end / 100f, + startValue = start, + endValue = end, offsetValue = offset / 360f ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt index f1b8479a..58f8d40b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt @@ -10,7 +10,7 @@ internal class TextDocument( var fontFamily : String? = null, @SerialName("fc") - var fillColor : FloatArray = floatArrayOf(0f, 0f, 0f), + var fillColor : FloatArray? = null, @SerialName("sc") var strokeColor : FloatArray? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 46d09bbb..15317591 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode @@ -127,7 +128,7 @@ internal class SolidColorLayer( paint.color = color paint.alpha = (color.alpha * parentAlpha * - (transform.opacity?.interpolated(state)?.div(100f) ?: 1f)).coerceIn(0f, 1f) + (transform.opacity?.interpolatedNorm(state)?: 1f)).coerceIn(0f, 1f) if (paint.alpha == 0f) { return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index a5059af6..9b6bebcf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastForEachIndexed import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.animation.toColor import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -171,27 +172,48 @@ internal class TextLayer( private fun configurePaint(document: TextDocument, parentAlpha: Float, state: AnimationState) { - fillPaint.color = textAnimation?.style?.fillColor?.interpolated(state) - ?: document.fillColor.toColor() + val transformOpacity = transform.opacity?.interpolatedNorm(state) ?: 1f + + val fillOpacity = textAnimation?.style?.fillOpacity?.interpolatedNorm(state) ?: 1f + + val strokeOpacity = textAnimation?.style?.strokeOpacity?.interpolatedNorm(state) ?: 1f + + val fillH = textAnimation?.style?.fillHue?.interpolated(state)?.coerceIn(0f,360f) + val fillS = textAnimation?.style?.fillSaturation?.interpolated(state)?.coerceIn(0f,1f) + val fillB = textAnimation?.style?.fillBrightness?.interpolated(state)?.coerceIn(0f,1f) + + fillPaint.color = if (fillH != null && fillS != null && fillB != null){ + Color.hsl(fillH, fillS, fillB) + } else { + textAnimation?.style?.fillColor?.interpolated(state) + ?: document.fillColor?.toColor() ?: Color.Transparent + } + + fillPaint.alpha = (parentAlpha * transformOpacity * fillOpacity).coerceIn(0f,1f) + + + val strokeH = textAnimation?.style?.strokeHue?.interpolated(state)?.coerceIn(0f,360f) + val strokeS = textAnimation?.style?.strokeSaturation?.interpolated(state)?.coerceIn(0f,1f) + val strokeB = textAnimation?.style?.strokeBrightness?.interpolated(state)?.coerceIn(0f,1f) + + strokePaint.color = if (strokeH != null && strokeS != null && strokeB != null){ + Color.hsl(strokeH, strokeS, strokeB) + } else { + textAnimation?.style?.strokeColor?.interpolated(state) + ?: document.strokeColor?.toColor() ?: Color.Transparent + } strokePaint.color = textAnimation?.style?.strokeColor?.interpolated(state) ?: document.strokeColor?.toColor() ?: Color.Transparent - fillPaint.alpha = transform.opacity?.interpolated(state) - ?.div(100f)?.times(parentAlpha) - ?: parentAlpha - if (strokePaint.color != Color.Transparent) { - strokePaint.alpha = fillPaint.alpha - } + strokePaint.alpha = (parentAlpha * transformOpacity * strokeOpacity).coerceIn(0f,1f) val strokeWidth = textAnimation?.style?.strokeWidth?.interpolated(state) ?: document.strokeWidth if (strokePaint.style.width != strokeWidth){ - strokePaint.style = Stroke( - width = strokeWidth - ) + strokePaint.style = Stroke(width = strokeWidth) } } @@ -203,15 +225,18 @@ internal class TextLayer( ?.let { BaselineShift(it) } ?: textStyle.baselineShift - val lineHeight = document.lineHeight.sp - - val fontFamily = checkNotNull(painterProperties?.composition?.fonts) + val fontFamily = checkNotNull(painterProperties?.composition?.fontsByFamily) .get(document.fontFamily) val letterSpacing = textAnimation?.style?.letterSpacing - ?.interpolated(animationState)?.toSp() + ?.interpolated(animationState)?.sp ?: textStyle.letterSpacing + val lineSpacing = textAnimation?.style?.lineSpacing + ?.interpolated(animationState) ?: 0f + + val lineHeight = (document.lineHeight + lineSpacing).sp + if ( textStyle.fontSize != fontSize || textStyle.baselineShift != baselineShift || @@ -406,10 +431,10 @@ internal class TextLayer( val position = document.wrapPosition?.toOffset() val size = document.wrapSize?.let { Size(it[0], it[1]) } val lineStartY = if (position == null) { - density.run { -textStyle.lineHeight.toPx()/2 } + 0f } else { document.lineHeight * density.density + position.y - } + } - density.run { textStyle.lineHeight.toPx() } val lineOffset: Float = (lineIndex * document.lineHeight * density.density) + lineStartY diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 714a69c3..c1ad20a6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -133,7 +134,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } paint.style = PaintingStyle.Stroke - paint.alpha = parentAlpha * (opacity.interpolated(state) / 100f).coerceIn(0f, 1f) + paint.alpha = parentAlpha * opacity.interpolatedNorm(state).coerceIn(0f, 1f) paint.strokeWidth = strokeWidth.interpolated(state) if (paint.strokeWidth <= 0) { @@ -239,8 +240,8 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { pathGroup.paths.fastForEachReversed { path.addPath(it.getPath(state).apply { transform(parentMatrix) }) } - val animStartValue: Float = pathGroup.trimPath.start.interpolated(state) / 100f - val animEndValue: Float = pathGroup.trimPath.end.interpolated(state) / 100f + val animStartValue: Float = pathGroup.trimPath.start.interpolatedNorm(state) + val animEndValue: Float = pathGroup.trimPath.end.interpolatedNorm(state) val animOffsetValue: Float = pathGroup.trimPath.offset.interpolated(state) / 360f // If the start-end is ~100, consider it to be the full path. diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 77b15e16..10a13b73 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -1,12 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path -import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -42,7 +42,7 @@ internal class EllipseShape( private val path = Path() @Transient - private val trimPaths = CompoundTrimPath() + private var trimPaths: CompoundTrimPath? = null override fun getPath(state: AnimationState): Path { @@ -67,11 +67,11 @@ internal class EllipseShape( // path.cubicTo(0 + cpW, halfHeight, halfWidth, 0 + cpH, halfWidth, 0f) // path.cubicTo(halfWidth, 0 - cpH, 0 + cpW, -halfHeight, 0f, -halfHeight) // } else { - path.moveTo(0f, -halfHeight) - path.cubicTo(0 + cpW, -halfHeight, halfWidth, 0 - cpH, halfWidth, 0f) - path.cubicTo(halfWidth, 0 + cpH, 0 + cpW, halfHeight, 0f, halfHeight) - path.cubicTo(0 - cpW, halfHeight, -halfWidth, 0 + cpH, -halfWidth, 0f) - path.cubicTo(-halfWidth, 0 - cpH, 0 - cpW, -halfHeight, 0f, -halfHeight) + path.moveTo(0f, -halfHeight) + path.cubicTo(0 + cpW, -halfHeight, halfWidth, 0 - cpH, halfWidth, 0f) + path.cubicTo(halfWidth, 0 + cpH, 0 + cpW, halfHeight, 0f, halfHeight) + path.cubicTo(0 - cpW, halfHeight, -halfWidth, 0 + cpH, -halfWidth, 0f) + path.cubicTo(-halfWidth, 0 - cpH, 0 - cpW, -halfHeight, 0f, -halfHeight) // } val position = position.interpolated(state) @@ -80,17 +80,13 @@ internal class EllipseShape( path.close() - trimPaths.apply(path, state) + trimPaths?.apply(path, state) return path } override fun setContents(contentsBefore: List, contentsAfter: List) { - contentsBefore.fastForEach { - if (it.isSimultaneousTrimPath()) { - trimPaths.addTrimPath(it) - } - } + trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } } private const val ELLIPSE_CONTROL_POINT_PERCENTAGE = 0.55228f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 94469897..09505b55 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -14,6 +14,7 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.FillRule @@ -89,8 +90,8 @@ internal class FillShape( paint.color = color.interpolated(state) - paint.alpha = opacity?.interpolated(state)?.let { - (parentAlpha * it / 100f).coerceIn(0f, 1f) + paint.alpha = opacity?.interpolatedNorm(state)?.let { + (parentAlpha * it).coerceIn(0f, 1f) } ?: parentAlpha roundShape?.applyTo(paint, state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 246e3fc1..b1dca210 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -13,6 +13,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -115,7 +116,7 @@ internal class GradientFillShape( ) paint.alpha = if (opacity != null) { - (parentAlpha * opacity.interpolated(state) / 100f).coerceIn(0f, 1f) + (parentAlpha * opacity.interpolatedNorm(state)).coerceIn(0f, 1f) } else { parentAlpha diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 1442c659..7f69011a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathOperation import androidx.compose.ui.util.fastForEach +import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content @@ -16,6 +17,19 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +internal value class MergeMode(val mode : Byte) { + companion object { + val Normal = MergeMode(1) + val Add = MergeMode(2) + val Subtract = MergeMode(3) + val Intersect = MergeMode(4) + val ExcludeIntersections = MergeMode(5) + } +} + @Serializable @SerialName("mm") internal class MergePathsShape( @@ -46,7 +60,7 @@ internal class MergePathsShape( private val firstPath = Path() @Transient - private val pathContents = mutableListOf() + private var pathContents = emptyList() override fun getPath(state: AnimationState): Path { @@ -57,7 +71,9 @@ internal class MergePathsShape( } when (mode) { - MergeMode.Normal -> addPaths(state) + MergeMode.Normal -> pathContents.fastForEach { + path.addPath(it.getPath(state)) + } MergeMode.Add -> opFirstPathWithRest(PathOperation.Union, state) MergeMode.Subtract -> opFirstPathWithRest(PathOperation.Difference, state) MergeMode.Intersect -> opFirstPathWithRest(PathOperation.Intersect, state) @@ -73,24 +89,19 @@ internal class MergePathsShape( } } - override fun absorbContent(contents: MutableListIterator) { + override fun absorbContent(contents: MutableList) { - // Fast forward the iterator until after this content. - @Suppress("ControlFlowWithEmptyBody") - while (contents.hasPrevious() && contents.previous() !== this) { - } - while (contents.hasPrevious()) { - val content = contents.previous() - if (content is PathContent) { - pathContents.add(content) - contents.remove() - } - } - } + val thisIndex = contents.indexOf(this).takeIf { it > 0 } ?: return - private fun addPaths(state: AnimationState) { - pathContents.fastForEach { - path.addPath(it.getPath(state)) + pathContents = contents + .take(thisIndex) + .filterIsInstance() + .reversed() + + if (pathContents.size < 2) { + contents.removeAt(thisIndex) + } else { + contents.removeAll(pathContents) } } @@ -105,9 +116,7 @@ internal class MergePathsShape( if (content is ContentGroupBase) { content.pathContents.fastForEachReversed { path -> val p = path.getPath(state) - content.transform?.matrix(state)?.let { - p.transform(it) - } + content.transform?.matrix(state)?.let(p::transform) remainderPath.addPath(p) } } else { @@ -118,31 +127,17 @@ internal class MergePathsShape( val lastContent = pathContents[0] if (lastContent is ContentGroupBase) { lastContent.pathContents.fastForEach { - val path = it.getPath(state) - lastContent.transform?.matrix(state)?.let(path::transform) - firstPath.addPath(path) + val p = it.getPath(state) +// lastContent.transform?.matrix(state)?.let(p::transform) + firstPath.addPath(p) } } else { firstPath.set(lastContent.getPath(state)) } - if (pathContents.size == 1) { - path.addPath(firstPath) - return - } +// firstPath.reset() +// firstPath.addRect(bounds) path.op(firstPath, remainderPath, op) } } - -@Serializable -@JvmInline -internal value class MergeMode(val mode : Byte) { - companion object { - val Normal = MergeMode(1) - val Add = MergeMode(2) - val Subtract = MergeMode(3) - val Intersect = MergeMode(4) - val ExcludeIntersections = MergeMode(5) - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 03c8bc49..168caea8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -2,13 +2,13 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathFillType -import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -34,7 +34,7 @@ internal class PathShape( override lateinit var layer: Layer @Transient - private val trimPaths: CompoundTrimPath = CompoundTrimPath() + private var trimPaths : CompoundTrimPath? = null private val path = Path() @@ -47,17 +47,11 @@ internal class PathShape( path.set(shape.interpolated(state)) path.fillType = PathFillType.EvenOdd - trimPaths.apply(path, state) + trimPaths?.apply(path, state) return path } override fun setContents(contentsBefore: List, contentsAfter: List) { - - contentsBefore.fastForEach { content -> - if (content.isSimultaneousTrimPath()) { - // Trim path individually will be handled by the stroke where paths are combined. - trimPaths.addTrimPath(content) - } - } + trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 6cd17252..de5af6b7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -3,13 +3,14 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure -import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.utils.Math import kotlinx.serialization.SerialName @@ -87,7 +88,7 @@ internal class PolystarShape( private val lastSegmentPathMeasure = PathMeasure() @Transient - private val trimPaths = CompoundTrimPath() + private var trimPaths : CompoundTrimPath? = null override fun getPath(state: AnimationState): Path { @@ -98,17 +99,13 @@ internal class PolystarShape( StarType.Polygon -> createPolygonPath(state) } - trimPaths.apply(path, state) + trimPaths?.apply(path, state) return path } override fun setContents(contentsBefore: List, contentsAfter: List) { - contentsBefore.fastForEach { - if (it.isSimultaneousTrimPath()) { - trimPaths.addTrimPath(it) - } - } + trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } private fun createStarPath(state: AnimationState) { @@ -129,8 +126,8 @@ internal class PolystarShape( val outerRadius = outerRadius?.interpolated(state) ?: 0f val innerRadius = innerRadius?.interpolated(state) ?: 0f - val innerRoundedness = innerRoundness?.interpolated(state)?.div(100f) ?: 0f - val outerRoundedness = outerRoundness?.interpolated(state)?.div(100f) ?: 0f + val innerRoundedness = innerRoundness?.interpolatedNorm(state) ?: 0f + val outerRoundedness = outerRoundness?.interpolatedNorm(state) ?: 0f var x: Float var y: Float @@ -232,7 +229,7 @@ internal class PolystarShape( // adjust current angle for partial points val anglePerPoint = (TwoPI / points).toFloat() - val roundedness = outerRoundness?.interpolated(state)?.div(100f) ?: 0f + val roundedness = outerRoundness?.interpolatedNorm(state) ?: 0f val radius = outerRadius?.interpolated(state) ?: 0f var x: Float var y: Float diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index e52ba512..09d33c44 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -2,13 +2,13 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path -import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -48,14 +48,10 @@ internal class RectShape( private val path = Path() @Transient - private val trimPaths = CompoundTrimPath() + private var trimPaths : CompoundTrimPath? = null override fun setContents(contentsBefore: List, contentsAfter: List) { - contentsBefore.fastForEach { - if (it.isSimultaneousTrimPath()) { - trimPaths.addTrimPath(it) - } - } + trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } override fun getPath(state: AnimationState): Path { @@ -135,7 +131,7 @@ internal class RectShape( } path.close() - trimPaths.apply(path, state) + trimPaths?.apply(path, state) return path } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 03f146ee..c276cdd1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.util.lerp import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.RepeaterTransform +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.DrawingContent @@ -64,8 +65,8 @@ internal class RepeaterShape( contentGroup?.let { contentGroup -> val copies = copies.interpolated(state) val offset = offset?.interpolated(state) ?: 0f - val startOpacity = transform.startOpacity?.interpolated(state)?.div(100f) ?: 1f - val endOpacity = transform.endOpacity?.interpolated(state)?.div(100f) ?: 1f + val startOpacity = transform.startOpacity?.interpolatedNorm(state) ?: 1f + val endOpacity = transform.endOpacity?.interpolatedNorm(state) ?: 1f for (i in copies.toInt() - 1 downTo 0) { matrix.setFrom(parentMatrix) @@ -105,7 +106,7 @@ internal class RepeaterShape( } - override fun absorbContent(contents: MutableListIterator) { + override fun absorbContent(contents: MutableList) { // This check prevents a repeater from getting added twice. // This can happen in the following situation: @@ -123,19 +124,13 @@ internal class RepeaterShape( if (contentGroup != null) { return } + val thisIndex = contents.indexOf(this).takeIf { it > 0 } ?: return - // Fast forward the iterator until after this content. - @Suppress("ControlFlowWithEmptyBody") - while (contents.hasPrevious() && contents.previous() !== this) { - } - - val contentsList = mutableListOf() + val contentsList = contents.take(thisIndex) - while (contents.hasPrevious()) { - contentsList.add(contents.previous()) - contents.remove() + repeat(thisIndex){ + contents.removeFirst() } - contentsList.reverse() contentGroup = ContentGroup(name, hidden, contentsList, null) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt index e674cdc2..61eb8fd6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt @@ -1,5 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.utils +import kotlin.math.max +import kotlin.math.min + fun floorMod(x: Float, y: Float): Int { return floorMod(x.toInt(), y.toInt()) } @@ -16,4 +19,14 @@ private fun floorDiv(x: Int, y: Int): Int { r-- } return r +} + +internal fun hslToRed(h: Float, s: Float, l: Float): Float = hslToRgbComponent(0, h, s, l) +internal fun hslToGreen(h: Float, s: Float, l: Float): Float = hslToRgbComponent(8, h, s, l) +internal fun hslToBlue(h: Float, s: Float, l: Float): Float = hslToRgbComponent(4, h, s, l) + +private fun hslToRgbComponent(n: Int, h: Float, s: Float, l: Float): Float { + val k = (n.toFloat() + h / 30f) % 12f + val a = s * min(l, 1f - l) + return l - a * max(-1f, minOf(k - 3, 9 - k, 1f)) } \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt index 3cd7cc65..cb44fd7d 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt @@ -21,6 +21,5 @@ private class SkikoExtendedPathMeasure( } - internal actual fun Path.addPath(path: Path, matrix: Matrix) = asSkiaPath().addPath(path.asSkiaPath(), matrix = matrix.asSkia33()).asComposePath() \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index e69de29b..2d2ffd57 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -0,0 +1 @@ +{"v":"4.6.6","fr":60,"ip":0,"op":90,"w":500,"h":160,"nm":"5starsreview","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":340},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":280},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":220},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":160},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":100},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":40},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 12","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":330},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 11","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":210},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":150},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":30},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot s 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot s 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_5","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_6","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"pop8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[475.664,111.874,0],"e":[477,108,0],"to":[0.22259241342545,-0.64567643404007,0],"ti":[0.11074091494083,1.14567637443542,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[477,108,0],"e":[476.895,107.561,0],"to":[-0.01389549672604,-0.14375664293766,0],"ti":[0.05413279309869,0.14822678267956,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[476.895,107.561,0],"e":[475,105,0],"to":[-0.37728145718575,-1.03307461738586,0],"ti":[0.29150748252869,0.43726122379303,0]},{"t":55}]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":16,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[100,100,100],"e":[0,0,100]},{"t":55}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[4,4]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8509804,0.5137255,0.8235294]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":0},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"pop7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[368.164,111.874,0]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[0,0],"e":[5,5]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":31,"s":[5,5],"e":[3,3]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":57,"s":[3,3],"e":[0,0]},{"t":62}]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[1,0.7337895,0.3264553,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"pop5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[45.794,97.647,0]},"a":{"a":0,"k":[-23.206,-45.353,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5,5]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0.9058824,0.4313726,0.6196079,1],"e":[1,0.8530331,0.1333333,1]},{"t":28}]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.603,-45.353],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[0,0],"e":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":25,"s":[100,100],"e":[50,50]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":43,"s":[50,50],"e":[0,0]},{"t":54}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"pop2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[119.031,110.272,0],"e":[120.531,102.272,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.91666668653488,2.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[120.531,102.272,0],"e":[124.531,96.272,0],"to":[0.91666668653488,-2.33333325386047,0],"ti":[-0.66666668653488,1,0]},{"t":44}]},"a":{"a":0,"k":[-135.25,6,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[0,0,100],"e":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":37,"s":[150,150,100],"e":[0,0,100]},{"t":49}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3.589,3.589]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9981465,0.8623575,0.5475739,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-135.456,6.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"pop","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[121.598,127.749,0],"e":[123.098,119.749,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.625,1.83333337306976,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[123.098,119.749,0],"e":[125.348,116.749,0],"to":[0.625,-1.83333337306976,0],"ti":[-0.16666667163372,1.66666662693024,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[125.348,116.749,0],"e":[124.098,109.749,0],"to":[0.16666667163372,-1.66666662693024,0],"ti":[0.20833332836628,1.16666662693024,0]},{"t":50}]},"a":{"a":0,"k":[-41.461,35.978,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":17,"s":[0,0,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":29,"s":[50,50,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[50,50,100],"e":[0,0,100]},{"t":56}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[8.455,8.455]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8392157,0.4784314,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-40.772,38.228],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":17,"op":85,"st":27,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"star1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":13,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.866,0.866,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p866_0p345_0","0p646_0p866_0p345_0","0p646_0p646_0p345_0p345"],"t":21,"s":[115,115,100],"e":[100,100,100]},{"t":40}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":17}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.8156863,0.3058824,1],"e":[0.9988511,0.758655,0.1329353,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[0.9988511,0.758655,0.1329353,1],"e":[1,0.6745098,0.1764706,1]},{"t":33}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"star2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.88,0.88,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p88_0p345_0","0p646_0p88_0p345_0","0p646_0p646_0p345_0p345"],"t":18,"s":[115,115,100],"e":[100,100,100]},{"t":35}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":14}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":24}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"star3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.894,0.894,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p894_0p345_0","0p646_0p894_0p345_0","0p646_0p646_0p345_0p345"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":30}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":25}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"star4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":4,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.902,0.902,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p902_0p345_0","0p646_0p902_0p345_0","0p646_0p646_0p345_0p345"],"t":12,"s":[115,115,100],"e":[100,100,100]},{"t":26}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-138.855,-48.127],[-150.73,-48.127],[-150.73,46.873],[-138.855,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":7}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":22}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"star5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.674,0.674,0.674],"y":[1.038,1.038,0.674]},"o":{"x":[0.942,0.942,0.333],"y":[0.224,0.224,0.333]},"n":["0p674_1p038_0p942_0p224","0p674_1p038_0p942_0p224","0p674_0p674_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.649,0.649,0.649],"y":[0.867,0.867,0.649]},"o":{"x":[0.334,0.334,0.334],"y":[0.074,0.074,0.334]},"n":["0p649_0p867_0p334_0p074","0p649_0p867_0p334_0p074","0p649_0p649_0p334_0p334"],"t":17,"s":[115,115,100],"e":[100,100,100]},{"t":36}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[4.407,0],[0,-4.407],[-4.407,0],[0,4.407]],"o":[[-4.407,0],[0,4.407],[4.407,0],[0,-4.407]],"v":[[-187.125,-8.752],[-195.105,-0.773],[-187.125,7.207],[-179.146,-0.773]],"c":true}],"e":[{"i":[[26.402,0],[0,-26.402],[-26.402,0],[0,26.402]],"o":[[-26.402,0],[0,26.402],[26.402,0],[0,-26.402]],"v":[[-187.929,-44.391],[-235.733,3.414],[-187.929,51.218],[-140.124,3.414]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":-1},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.8854904,0.3411611,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.8854904,0.3411611,1],"e":[1,0.6396633,0.0779718,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.6396633,0.0779718,1],"e":[1,0.6745098,0.1764706,1]},{"t":36}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"star1 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":17,"st":31,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"star2 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":14,"st":29,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"star3 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"star4 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"star5 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.6745098,0.1764706,1]},{"t":4}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":0,"nm":"circle burst s","refId":"comp_0","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[28.899,53.048,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[130,130,100]}},"ao":0,"w":100,"h":100,"ip":16,"op":76,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[111.213,120.311,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":15,"op":85,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":0,"nm":"5.3 burst 2","cl":"3","refId":"comp_3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[199.5,32.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[120,120,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[292.164,53.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":0,"nm":"5.8 burst","cl":"8","refId":"comp_4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[302.302,133.646,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":13,"op":73,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[289.403,122.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":0,"nm":"burst","refId":"comp_5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[380.063,47.18,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":10,"op":70,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":0,"nm":"burst5.16","cl":"16","refId":"comp_6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[459.494,113.978,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"w":100,"h":100,"ip":11,"op":81,"st":11,"bm":0,"sr":1}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 63bcc5f6..d73d88bb 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PathEffect import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.createFontFamilyResolver import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res @@ -70,7 +71,7 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Resource(TEST) // LottieCompositionSpec.Resource(IMAGE_ASSET) @@ -129,7 +130,7 @@ fun LottieCompositionSpec.Companion.Resource( private class ResourcesAssetsManager( private val relativeTo : String = "files", private val readBytes : suspend (path : String) -> ByteArray = Res::readBytes, -) : LottieAssetsManager { +) : LottieAssetsManager by LottieAssetsManager.Empty { override suspend fun image(image: LottieImage): ImageRepresentable? { return try { val trimPath = image.path @@ -153,8 +154,6 @@ private class ResourcesAssetsManager( null } } - - override suspend fun font(font: LottieFont): Font? = null } From 43d03f09141f93c5fd904b7a6930b6e848d1bd63 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 12 Jun 2024 17:34:27 +0300 Subject: [PATCH 041/100] fix stroke width --- .../internal/animation/AnimatedShape.kt | 3 +- .../compottie/internal/helpers/Bezier.kt | 1 - .../internal/shapes/BaseStrokeShape.kt | 2 +- .../composeResources/files/test.json | 401 +++++++++++++++++- example/shared/src/commonMain/kotlin/App.kt | 2 +- 5 files changed, 404 insertions(+), 5 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index d5276e35..996a4640 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -65,7 +65,8 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { keyframes = keyframes, emptyValue = tmpPath, map = { s, e, p -> -// tmpBezier.interpolateBetween(s, e, easingX.transform(p)) + tmpBezier.interpolateBetween(s, e, easingX.transform(p)) + // tmpBezier.mapPath(tmpPath) // tmpPath Path().apply { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt index 08efb771..87f79d08 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt @@ -70,7 +70,6 @@ internal class Bezier( b: Bezier, percentage: Float, ) { - isClosed = a.isClosed || b.isClosed val points = min(a.curves.size, b.curves.size) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index c1ad20a6..4d22c072 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -135,7 +135,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { paint.style = PaintingStyle.Stroke paint.alpha = parentAlpha * opacity.interpolatedNorm(state).coerceIn(0f, 1f) - paint.strokeWidth = strokeWidth.interpolated(state) + paint.strokeWidth = strokeWidth.interpolated(state) * parentMatrix.scale if (paint.strokeWidth <= 0) { return diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index 2d2ffd57..d48ee5f7 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1 +1,400 @@ -{"v":"4.6.6","fr":60,"ip":0,"op":90,"w":500,"h":160,"nm":"5starsreview","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":340},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":280},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":220},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":160},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":100},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":40},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 12","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":330},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 11","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":210},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":150},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":30},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot s 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot s 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_5","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_6","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"pop8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[475.664,111.874,0],"e":[477,108,0],"to":[0.22259241342545,-0.64567643404007,0],"ti":[0.11074091494083,1.14567637443542,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[477,108,0],"e":[476.895,107.561,0],"to":[-0.01389549672604,-0.14375664293766,0],"ti":[0.05413279309869,0.14822678267956,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[476.895,107.561,0],"e":[475,105,0],"to":[-0.37728145718575,-1.03307461738586,0],"ti":[0.29150748252869,0.43726122379303,0]},{"t":55}]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":16,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[100,100,100],"e":[0,0,100]},{"t":55}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[4,4]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8509804,0.5137255,0.8235294]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":0},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"pop7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[368.164,111.874,0]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[0,0],"e":[5,5]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":31,"s":[5,5],"e":[3,3]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":57,"s":[3,3],"e":[0,0]},{"t":62}]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[1,0.7337895,0.3264553,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"pop5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[45.794,97.647,0]},"a":{"a":0,"k":[-23.206,-45.353,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5,5]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0.9058824,0.4313726,0.6196079,1],"e":[1,0.8530331,0.1333333,1]},{"t":28}]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.603,-45.353],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[0,0],"e":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":25,"s":[100,100],"e":[50,50]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":43,"s":[50,50],"e":[0,0]},{"t":54}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"pop2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[119.031,110.272,0],"e":[120.531,102.272,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.91666668653488,2.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[120.531,102.272,0],"e":[124.531,96.272,0],"to":[0.91666668653488,-2.33333325386047,0],"ti":[-0.66666668653488,1,0]},{"t":44}]},"a":{"a":0,"k":[-135.25,6,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[0,0,100],"e":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":37,"s":[150,150,100],"e":[0,0,100]},{"t":49}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3.589,3.589]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9981465,0.8623575,0.5475739,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-135.456,6.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"pop","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[121.598,127.749,0],"e":[123.098,119.749,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.625,1.83333337306976,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[123.098,119.749,0],"e":[125.348,116.749,0],"to":[0.625,-1.83333337306976,0],"ti":[-0.16666667163372,1.66666662693024,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[125.348,116.749,0],"e":[124.098,109.749,0],"to":[0.16666667163372,-1.66666662693024,0],"ti":[0.20833332836628,1.16666662693024,0]},{"t":50}]},"a":{"a":0,"k":[-41.461,35.978,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":17,"s":[0,0,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":29,"s":[50,50,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[50,50,100],"e":[0,0,100]},{"t":56}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[8.455,8.455]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8392157,0.4784314,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-40.772,38.228],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":17,"op":85,"st":27,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"star1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":13,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.866,0.866,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p866_0p345_0","0p646_0p866_0p345_0","0p646_0p646_0p345_0p345"],"t":21,"s":[115,115,100],"e":[100,100,100]},{"t":40}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":17}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.8156863,0.3058824,1],"e":[0.9988511,0.758655,0.1329353,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[0.9988511,0.758655,0.1329353,1],"e":[1,0.6745098,0.1764706,1]},{"t":33}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"star2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.88,0.88,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p88_0p345_0","0p646_0p88_0p345_0","0p646_0p646_0p345_0p345"],"t":18,"s":[115,115,100],"e":[100,100,100]},{"t":35}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":14}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":24}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"star3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.894,0.894,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p894_0p345_0","0p646_0p894_0p345_0","0p646_0p646_0p345_0p345"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":30}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":25}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"star4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":4,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.902,0.902,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p902_0p345_0","0p646_0p902_0p345_0","0p646_0p646_0p345_0p345"],"t":12,"s":[115,115,100],"e":[100,100,100]},{"t":26}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-138.855,-48.127],[-150.73,-48.127],[-150.73,46.873],[-138.855,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":7}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":22}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"star5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.674,0.674,0.674],"y":[1.038,1.038,0.674]},"o":{"x":[0.942,0.942,0.333],"y":[0.224,0.224,0.333]},"n":["0p674_1p038_0p942_0p224","0p674_1p038_0p942_0p224","0p674_0p674_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.649,0.649,0.649],"y":[0.867,0.867,0.649]},"o":{"x":[0.334,0.334,0.334],"y":[0.074,0.074,0.334]},"n":["0p649_0p867_0p334_0p074","0p649_0p867_0p334_0p074","0p649_0p649_0p334_0p334"],"t":17,"s":[115,115,100],"e":[100,100,100]},{"t":36}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[4.407,0],[0,-4.407],[-4.407,0],[0,4.407]],"o":[[-4.407,0],[0,4.407],[4.407,0],[0,-4.407]],"v":[[-187.125,-8.752],[-195.105,-0.773],[-187.125,7.207],[-179.146,-0.773]],"c":true}],"e":[{"i":[[26.402,0],[0,-26.402],[-26.402,0],[0,26.402]],"o":[[-26.402,0],[0,26.402],[26.402,0],[0,-26.402]],"v":[[-187.929,-44.391],[-235.733,3.414],[-187.929,51.218],[-140.124,3.414]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":-1},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.8854904,0.3411611,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.8854904,0.3411611,1],"e":[1,0.6396633,0.0779718,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.6396633,0.0779718,1],"e":[1,0.6745098,0.1764706,1]},{"t":36}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"star1 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":17,"st":31,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"star2 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":14,"st":29,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"star3 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"star4 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"star5 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.6745098,0.1764706,1]},{"t":4}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":0,"nm":"circle burst s","refId":"comp_0","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[28.899,53.048,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[130,130,100]}},"ao":0,"w":100,"h":100,"ip":16,"op":76,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[111.213,120.311,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":15,"op":85,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":0,"nm":"5.3 burst 2","cl":"3","refId":"comp_3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[199.5,32.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[120,120,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[292.164,53.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":0,"nm":"5.8 burst","cl":"8","refId":"comp_4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[302.302,133.646,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":13,"op":73,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[289.403,122.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":0,"nm":"burst","refId":"comp_5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[380.063,47.18,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":10,"op":70,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":0,"nm":"burst5.16","cl":"16","refId":"comp_6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[459.494,113.978,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"w":100,"h":100,"ip":11,"op":81,"st":11,"bm":0,"sr":1}]} \ No newline at end of file +{ + "assets": [ + ], + "layers": [ + { + "ddd": 0, + "ind": 0, + "ty": 4, + "nm": "Layer 2 Outlines 2", + "ks": { + + "r": { + "k": 0 + }, + "p": { + "k": [ + 369.026, + 316.965, + 0 + ] + }, + "a": { + "k": [ + 8.074, + 27.575, + 0 + ] + }, + "s": { + "k": [ + 347, + 347, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": [ + { + "i": { + "x": 0.146, + "y": 0.975 + }, + "o": { + "x": 0.736, + "y": 0.016 + }, + "n": "0p146_0p975_0p736_0p016", + "t": 46.046, + "s": [ + { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 5.574, + 25.075 + ], + [ + -5.574, + 25.075 + ], + [ + -5.598, + 24.709 + ], + [ + 5.55, + 24.709 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 5.574, + 25.075 + ], + [ + -5.574, + 25.075 + ], + [ + -5.415, + -34.825 + ], + [ + 5.733, + -34.825 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0.263, + "y": 1 + }, + "o": { + "x": 0.879, + "y": 0.05 + }, + "n": "0p263_1_0p879_0p05", + "t": 75.075, + "s": [ + { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 5.574, + 25.075 + ], + [ + -5.574, + 25.075 + ], + [ + -5.415, + -34.825 + ], + [ + 5.733, + -34.825 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 5.574, + 25.075 + ], + [ + -5.574, + 25.075 + ], + [ + -5.574, + -25.075 + ], + [ + 5.574, + -25.075 + ] + ], + "c": true + } + ] + }, + { + "t": 97.096949488551 + } + ] + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "st", + "fillEnabled": true, + "c": { + "k": [ + 0.33, + 0.69, + 0.31, + 1 + ] + }, + "o": { + "k": 100 + }, + "w": { + "k": 2.5 + }, + "lc": 1, + "lj": 1, + "ml": 4, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke" + }, + { + "ty": "tr", + "p": { + "k": [ + 8.074, + 27.575 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 46.046046046046, + "op": 113.113113113113, + "st": 51.0510510510511, + "bm": 0, + "sr": 1 + }, + + ], + "v": "4.5.3", + "ddd": 0, + "ip": 0, + "op": 113, + "fr": 30, + "w": 462, + "h": 502 +} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index d73d88bb..697d2939 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -71,7 +71,7 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(TEST) + LottieCompositionSpec.Resource(CHECKMARK) // LottieCompositionSpec.Resource(IMAGE_ASSET) From 19d6a76dc590c500368468049b6684df9fd49366 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 12 Jun 2024 18:02:17 +0300 Subject: [PATCH 042/100] fix trim path --- .../internal/helpers/CompoundTrimPath.kt | 76 ++++++++++++++----- example/shared/src/commonMain/kotlin/App.kt | 2 +- 2 files changed, 59 insertions(+), 19 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt index 2c07b02d..db7cf91d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt @@ -11,6 +11,8 @@ import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape import io.github.alexzhirkevich.compottie.internal.shapes.isSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.utils.floorMod import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min internal class CompoundTrimPath( private val contents : List @@ -50,8 +52,8 @@ internal fun Path.applyTrimPath(trimPath: TrimPathShape, state: AnimationState) private val pathMeasure by lazy { ExtendedPathMeasure() } - private val tempPath = Path() +private val tempPath2 = Path() internal fun Path.applyTrimPath( startValue: Float, @@ -60,36 +62,74 @@ internal fun Path.applyTrimPath( ) { pathMeasure.setPath(this, false) - val length = pathMeasure.length + val length: Float = pathMeasure.length if (startValue == 1f && endValue == 0f) { return } if (length < 1f || abs((endValue - startValue - 1)) < .01f) { return } + val start = length * startValue + val end = length * endValue + + var newStart = min(start, end) + var newEnd = max(start, end) - var start = (length * ((startValue + offsetValue) % 1f)) - var end = (length * ((endValue + offsetValue) % 1f)) + val offset = offsetValue * length + newStart += offset + newEnd += offset - if (start >= length && end >= length) { - start = floorMod(start, length).toFloat() - end = floorMod(end, length).toFloat() + // If the trim path has rotated around the path, we need to shift it back. + if (newStart >= length && newEnd >= length) { + newStart = floorMod(newStart, length).toFloat() + newEnd = floorMod(newEnd, length).toFloat() } - if (start < 0) { - start = floorMod(start, length).toFloat() + if (newStart < 0) { + newStart = floorMod(newStart, length).toFloat() } - if (end < 0) { - end = floorMod(end, length).toFloat() + if (newEnd < 0) { + newEnd = floorMod(newEnd, length).toFloat() + } + + // If the start and end are equals, return an empty path. + if (newStart == newEnd) { + reset() + return + } + + if (newStart >= newEnd) { + newStart -= length } + + tempPath.reset() + pathMeasure.getSegment( + startDistance = newStart, + stopDistance = newEnd, + destination = tempPath, + startWithMoveTo = true + ) - if (start > end) { - pathMeasure.getSegment(start, length, tempPath, true) - pathMeasure.getSegment(0f, end, tempPath, true) - } else { - pathMeasure.getSegment(start, end, tempPath, true) + if (newEnd > length) { + tempPath2.reset() + pathMeasure.getSegment( + startDistance = 0f, + stopDistance = newEnd % length, + destination = tempPath2, + startWithMoveTo = true + ) + tempPath.addPath(tempPath2) + } else if (newStart < 0) { + tempPath2.reset() + pathMeasure.getSegment( + startDistance = length + newStart, + stopDistance = length, + destination = tempPath2, + startWithMoveTo = true + ) + tempPath.addPath(tempPath2) } - set(tempPath) -} + set(tempPath) +} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 697d2939..30324f69 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -71,7 +71,7 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(CHECKMARK) + LottieCompositionSpec.Resource(ROBOT) // LottieCompositionSpec.Resource(IMAGE_ASSET) From 88d34ae6768cd572f170075b1b02d28bbd3685f3 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 12 Jun 2024 18:32:53 +0300 Subject: [PATCH 043/100] fix curves --- .../internal/animation/AnimatedShape.kt | 25 ++++------- .../compottie/internal/helpers/Bezier.kt | 44 +++++++++++++------ 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 996a4640..c80cb360 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -33,11 +33,9 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { private val tmpPath = Path() override fun interpolated(state: AnimationState): Path { -// bezier.mapPath(tmpPath) -// return tmpPath - return Path().apply { - bezier.mapPath(this) - } + tmpPath.reset() + bezier.mapPath(tmpPath) + return tmpPath } } @@ -57,21 +55,17 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { private val tmpPath = Path() @Transient - private val tmpBezier = Bezier() + private val tmpShapeData = Bezier() @Transient - private var delegate = BaseKeyframeAnimation( + private var delegate = BaseKeyframeAnimation( expression = expression, keyframes = keyframes, emptyValue = tmpPath, - map = { s, e, p -> - tmpBezier.interpolateBetween(s, e, easingX.transform(p)) - -// tmpBezier.mapPath(tmpPath) -// tmpPath - Path().apply { - tmpBezier.mapPath(this) - } + map = { s, e, p-> + tmpShapeData.interpolateBetween(s, e, easingX.transform(p)) + tmpShapeData.mapPath(tmpPath) + tmpPath } ) @@ -98,4 +92,3 @@ internal class AnimatedShapeSerializer : JsonContentPolymorphicSerializer = emptyList(), + var inTangents : List = emptyList(), @SerialName("o") - val outTangents : List = emptyList(), + var outTangents : List = emptyList(), @SerialName("v") val vertices : List = emptyList(), ) { + @Transient - var curves: MutableList = ArrayList(vertices.size) + var curves: MutableList = ArrayList(vertices.size) @Transient var initialPoint: Offset = Offset.Zero + init { - require(vertices.size == inTangents.size && vertices.size == outTangents.size) { + require(vertices.size == inTangents.size && vertices.size == outTangents.size){ "Invalid bezier curve. Control points count must be the same as vertices count" } @@ -46,9 +50,15 @@ internal class Bezier( val cp2 = inTangents[i] val vertex = vertices[i] - val shapeCp1 = Offset(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) - val shapeCp2 = Offset(vertex[0] + cp2[0], vertex[1] + cp2[1]) - curves.add(CubicCurveData(shapeCp1, shapeCp2, vertex.toOffset())) + val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) + curves.add( + CubicCurveData( + shapeCp1.toOffset(), + shapeCp2.toOffset(), + vertex.toOffset() + ) + ) } if (isClosed) { @@ -57,10 +67,16 @@ internal class Bezier( val cp1 = outTangents[vertices.lastIndex] val cp2 = inTangents[0] - val shapeCp1 = Offset(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) - val shapeCp2 = Offset(vertex[0] + cp2[0], vertex[1] + cp2[1]) + val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) - curves.add(CubicCurveData(shapeCp1, shapeCp2, vertex.toOffset())) + curves.add( + CubicCurveData( + shapeCp1.toOffset(), + shapeCp2.toOffset(), + vertex.toOffset() + ) + ) } } } @@ -70,17 +86,18 @@ internal class Bezier( b: Bezier, percentage: Float, ) { + isClosed = a.isClosed || b.isClosed val points = min(a.curves.size, b.curves.size) if (curves.size < points) { - repeat(curves.size - points) { + repeat(points - curves.size) { curves.add(CubicCurveData()) } } if (curves.size > points) { - repeat(points - curves.size) { + repeat(curves.size - points) { curves.removeLast() } } @@ -134,5 +151,4 @@ internal class CubicCurveData( var controlPoint1: Offset = Offset.Zero, var controlPoint2: Offset = Offset.Zero, var vertex: Offset = Offset.Zero -) - +) \ No newline at end of file From 0065129a6afc4788c67f51ed201ad99307548e88 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 12 Jun 2024 19:25:04 +0300 Subject: [PATCH 044/100] raw shape for masks --- .../internal/platform/PlatformPath.android.kt | 2 +- .../alexzhirkevich/compottie/LottiePainter.kt | 5 +- .../internal/animation/AnimatedShape.kt | 37 +- .../compottie/internal/layers/BaseLayer.kt | 20 +- .../internal/platform/PlatformPath.kt | 1 + .../compottie/internal/shapes/PathShape.kt | 2 +- .../composeResources/files/test.json | 401 +----------------- example/shared/src/commonMain/kotlin/App.kt | 6 +- 8 files changed, 54 insertions(+), 420 deletions(-) diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt index 86d4e416..8993e4ae 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt @@ -15,7 +15,7 @@ internal actual fun ExtendedPathMeasure() : ExtendedPathMeasure = AndroidExtende private val tempAndroidMatrix = android.graphics.Matrix() internal actual fun Path.addPath(path: Path, matrix: Matrix) : Path { return asAndroidPath().apply { - this.addPath(path.asAndroidPath(), tempAndroidMatrix.apply { + addPath(path.asAndroidPath(), tempAndroidMatrix.apply { reset() setFrom(matrix) }) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 0060c1cb..6ea1efb4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -26,7 +26,6 @@ import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import kotlin.math.roundToInt -import kotlin.time.measureTime @OptIn(InternalCompottieApi::class) @Composable @@ -79,6 +78,7 @@ fun rememberLottiePainter( if (composition != null) { value = LottiePainter( composition = composition, + initialProgress = progress(), clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver ) @@ -107,6 +107,7 @@ private object EmptyPainter : Painter() { private class LottiePainter( private val composition: LottieComposition, + private val initialProgress : Float, private val fontFamilyResolver : FontFamily.Resolver, private val clipTextToBoundingBoxes : Boolean, ) : Painter() { @@ -116,7 +117,7 @@ private class LottiePainter( composition.lottieData.height ) - var progress: Float by mutableStateOf(0f) + var progress: Float by mutableStateOf(initialProgress) private val matrix = Matrix() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index c80cb360..2995bd85 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -17,6 +17,8 @@ import kotlinx.serialization.json.jsonPrimitive @Serializable(with = AnimatedShapeSerializer::class) internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { + fun interpolatedRaw(state: AnimationState): Path + @Serializable class Default( @SerialName("x") @@ -37,6 +39,13 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { bezier.mapPath(tmpPath) return tmpPath } + + override fun interpolatedRaw(state: AnimationState): Path { +// return Path().apply { +// bezier.mapPath(this) +// } + return interpolated(state) + } } @Serializable @@ -55,20 +64,38 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { private val tmpPath = Path() @Transient - private val tmpShapeData = Bezier() + private val tmpBezier = Bezier() @Transient - private var delegate = BaseKeyframeAnimation( + private var delegate = BaseKeyframeAnimation( expression = expression, keyframes = keyframes, emptyValue = tmpPath, - map = { s, e, p-> - tmpShapeData.interpolateBetween(s, e, easingX.transform(p)) - tmpShapeData.mapPath(tmpPath) + map = { s, e, p -> + tmpBezier.interpolateBetween(s, e, easingX.transform(p)) + tmpBezier.mapPath(tmpPath) tmpPath } ) + @Transient + private var rawDelegate = BaseKeyframeAnimation( + expression = expression, + keyframes = keyframes, + emptyValue = tmpPath, + map = { s, e, p -> + tmpBezier.interpolateBetween(s, e, easingX.transform(p)) + + Path().apply { + tmpBezier.mapPath(this) + } + } + ) + + override fun interpolatedRaw(state: AnimationState): Path { + return rawDelegate.interpolated(state) + } + override fun interpolated(state: AnimationState): Path { return delegate.interpolated(state) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 7540b701..52a43af1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -11,7 +11,9 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.isIdentity +import androidx.compose.ui.graphics.withSave import androidx.compose.ui.util.fastFirstOrNull +import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.L @@ -151,12 +153,12 @@ internal abstract class BaseLayer() : Layer, DrawingContent { // so that we know the coordinate space that the canvas is showing. canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) drawScope.drawIntoCanvas { canvas -> - canvas.getMatrix(canvasMatrix) - if (!canvasMatrix.isIdentity()) { - canvasMatrix.invert() - canvasMatrix.map(canvasBounds) - } +// canvas.getMatrix(canvasMatrix) +// if (!canvasMatrix.isIdentity()) { +// canvasMatrix.invert() +// canvasMatrix.map(canvasBounds) +// } rect.intersectOrReset(canvasBounds) @@ -276,9 +278,9 @@ internal abstract class BaseLayer() : Layer, DrawingContent { return } - masks?.fastForEachIndexed { i, mask -> + masks?.fastForEach { mask -> - val maskPath = mask.shape?.interpolated(state) ?: return@fastForEachIndexed + val maskPath = mask.shape?.interpolatedRaw(state) ?: return@fastForEach path.set(maskPath) path.transform(matrix) @@ -293,6 +295,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { if (mask.isInverted) { return } + val b = path.getBounds() maskBoundsRect.union(path.getBounds()) } } @@ -318,7 +321,6 @@ internal abstract class BaseLayer() : Layer, DrawingContent { matteBoundsRect.set(0f, 0f, 0f, 0f) matteLayer.getBounds(drawScope, matrix, true, state, matteBoundsRect) - rect.intersectOrReset(matteBoundsRect) } @@ -392,7 +394,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { mask: Mask, state: AnimationState, ) { - val maskPath = mask.shape?.interpolated(state) ?: return + val maskPath = mask.shape?.interpolatedRaw(state) ?: return path.set(maskPath) path.transform(matrix) contentPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index a97982e2..d6c34b15 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathFillType import androidx.compose.ui.graphics.PathMeasure +import androidx.compose.ui.graphics.PathOperation import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.shapes.TrimPathShape import io.github.alexzhirkevich.compottie.internal.utils.floorMod diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 168caea8..f44b48f9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -44,7 +44,7 @@ internal class PathShape( if (hidden) { return path } - path.set(shape.interpolated(state)) + path.set(shape.interpolatedRaw(state)) path.fillType = PathFillType.EvenOdd trimPaths?.apply(path, state) diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index d48ee5f7..2d2ffd57 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1,400 +1 @@ -{ - "assets": [ - ], - "layers": [ - { - "ddd": 0, - "ind": 0, - "ty": 4, - "nm": "Layer 2 Outlines 2", - "ks": { - - "r": { - "k": 0 - }, - "p": { - "k": [ - 369.026, - 316.965, - 0 - ] - }, - "a": { - "k": [ - 8.074, - 27.575, - 0 - ] - }, - "s": { - "k": [ - 347, - 347, - 100 - ] - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ks": { - "k": [ - { - "i": { - "x": 0.146, - "y": 0.975 - }, - "o": { - "x": 0.736, - "y": 0.016 - }, - "n": "0p146_0p975_0p736_0p016", - "t": 46.046, - "s": [ - { - "i": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 5.574, - 25.075 - ], - [ - -5.574, - 25.075 - ], - [ - -5.598, - 24.709 - ], - [ - 5.55, - 24.709 - ] - ], - "c": true - } - ], - "e": [ - { - "i": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 5.574, - 25.075 - ], - [ - -5.574, - 25.075 - ], - [ - -5.415, - -34.825 - ], - [ - 5.733, - -34.825 - ] - ], - "c": true - } - ] - }, - { - "i": { - "x": 0.263, - "y": 1 - }, - "o": { - "x": 0.879, - "y": 0.05 - }, - "n": "0p263_1_0p879_0p05", - "t": 75.075, - "s": [ - { - "i": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 5.574, - 25.075 - ], - [ - -5.574, - 25.075 - ], - [ - -5.415, - -34.825 - ], - [ - 5.733, - -34.825 - ] - ], - "c": true - } - ], - "e": [ - { - "i": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "o": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ], - "v": [ - [ - 5.574, - 25.075 - ], - [ - -5.574, - 25.075 - ], - [ - -5.574, - -25.075 - ], - [ - 5.574, - -25.075 - ] - ], - "c": true - } - ] - }, - { - "t": 97.096949488551 - } - ] - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group" - }, - { - "ty": "st", - "fillEnabled": true, - "c": { - "k": [ - 0.33, - 0.69, - 0.31, - 1 - ] - }, - "o": { - "k": 100 - }, - "w": { - "k": 2.5 - }, - "lc": 1, - "lj": 1, - "ml": 4, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke" - }, - { - "ty": "tr", - "p": { - "k": [ - 8.074, - 27.575 - ], - "ix": 2 - }, - "a": { - "k": [ - 0, - 0 - ], - "ix": 1 - }, - "s": { - "k": [ - 100, - 100 - ], - "ix": 3 - }, - "r": { - "k": 0, - "ix": 6 - }, - "o": { - "k": 100, - "ix": 7 - }, - "sk": { - "k": 0, - "ix": 4 - }, - "sa": { - "k": 0, - "ix": 5 - }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 2, - "mn": "ADBE Vector Group" - } - ], - "ip": 46.046046046046, - "op": 113.113113113113, - "st": 51.0510510510511, - "bm": 0, - "sr": 1 - }, - - ], - "v": "4.5.3", - "ddd": 0, - "ip": 0, - "op": 113, - "fr": 30, - "w": 462, - "h": 502 -} \ No newline at end of file +{"v":"4.6.6","fr":60,"ip":0,"op":90,"w":500,"h":160,"nm":"5starsreview","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":340},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":280},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":220},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":160},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":100},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":40},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 12","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":330},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 11","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":210},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":150},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":30},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot s 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot s 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_5","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_6","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"pop8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[475.664,111.874,0],"e":[477,108,0],"to":[0.22259241342545,-0.64567643404007,0],"ti":[0.11074091494083,1.14567637443542,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[477,108,0],"e":[476.895,107.561,0],"to":[-0.01389549672604,-0.14375664293766,0],"ti":[0.05413279309869,0.14822678267956,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[476.895,107.561,0],"e":[475,105,0],"to":[-0.37728145718575,-1.03307461738586,0],"ti":[0.29150748252869,0.43726122379303,0]},{"t":55}]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":16,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[100,100,100],"e":[0,0,100]},{"t":55}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[4,4]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8509804,0.5137255,0.8235294]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":0},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"pop7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[368.164,111.874,0]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[0,0],"e":[5,5]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":31,"s":[5,5],"e":[3,3]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":57,"s":[3,3],"e":[0,0]},{"t":62}]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[1,0.7337895,0.3264553,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"pop5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[45.794,97.647,0]},"a":{"a":0,"k":[-23.206,-45.353,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5,5]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0.9058824,0.4313726,0.6196079,1],"e":[1,0.8530331,0.1333333,1]},{"t":28}]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.603,-45.353],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[0,0],"e":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":25,"s":[100,100],"e":[50,50]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":43,"s":[50,50],"e":[0,0]},{"t":54}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"pop2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[119.031,110.272,0],"e":[120.531,102.272,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.91666668653488,2.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[120.531,102.272,0],"e":[124.531,96.272,0],"to":[0.91666668653488,-2.33333325386047,0],"ti":[-0.66666668653488,1,0]},{"t":44}]},"a":{"a":0,"k":[-135.25,6,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[0,0,100],"e":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":37,"s":[150,150,100],"e":[0,0,100]},{"t":49}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3.589,3.589]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9981465,0.8623575,0.5475739,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-135.456,6.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"pop","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[121.598,127.749,0],"e":[123.098,119.749,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.625,1.83333337306976,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[123.098,119.749,0],"e":[125.348,116.749,0],"to":[0.625,-1.83333337306976,0],"ti":[-0.16666667163372,1.66666662693024,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[125.348,116.749,0],"e":[124.098,109.749,0],"to":[0.16666667163372,-1.66666662693024,0],"ti":[0.20833332836628,1.16666662693024,0]},{"t":50}]},"a":{"a":0,"k":[-41.461,35.978,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":17,"s":[0,0,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":29,"s":[50,50,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[50,50,100],"e":[0,0,100]},{"t":56}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[8.455,8.455]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8392157,0.4784314,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-40.772,38.228],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":17,"op":85,"st":27,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"star1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":13,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.866,0.866,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p866_0p345_0","0p646_0p866_0p345_0","0p646_0p646_0p345_0p345"],"t":21,"s":[115,115,100],"e":[100,100,100]},{"t":40}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":17}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.8156863,0.3058824,1],"e":[0.9988511,0.758655,0.1329353,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[0.9988511,0.758655,0.1329353,1],"e":[1,0.6745098,0.1764706,1]},{"t":33}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"star2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.88,0.88,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p88_0p345_0","0p646_0p88_0p345_0","0p646_0p646_0p345_0p345"],"t":18,"s":[115,115,100],"e":[100,100,100]},{"t":35}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":14}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":24}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"star3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.894,0.894,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p894_0p345_0","0p646_0p894_0p345_0","0p646_0p646_0p345_0p345"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":30}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":25}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"star4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":4,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.902,0.902,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p902_0p345_0","0p646_0p902_0p345_0","0p646_0p646_0p345_0p345"],"t":12,"s":[115,115,100],"e":[100,100,100]},{"t":26}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-138.855,-48.127],[-150.73,-48.127],[-150.73,46.873],[-138.855,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":7}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":22}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"star5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.674,0.674,0.674],"y":[1.038,1.038,0.674]},"o":{"x":[0.942,0.942,0.333],"y":[0.224,0.224,0.333]},"n":["0p674_1p038_0p942_0p224","0p674_1p038_0p942_0p224","0p674_0p674_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.649,0.649,0.649],"y":[0.867,0.867,0.649]},"o":{"x":[0.334,0.334,0.334],"y":[0.074,0.074,0.334]},"n":["0p649_0p867_0p334_0p074","0p649_0p867_0p334_0p074","0p649_0p649_0p334_0p334"],"t":17,"s":[115,115,100],"e":[100,100,100]},{"t":36}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[4.407,0],[0,-4.407],[-4.407,0],[0,4.407]],"o":[[-4.407,0],[0,4.407],[4.407,0],[0,-4.407]],"v":[[-187.125,-8.752],[-195.105,-0.773],[-187.125,7.207],[-179.146,-0.773]],"c":true}],"e":[{"i":[[26.402,0],[0,-26.402],[-26.402,0],[0,26.402]],"o":[[-26.402,0],[0,26.402],[26.402,0],[0,-26.402]],"v":[[-187.929,-44.391],[-235.733,3.414],[-187.929,51.218],[-140.124,3.414]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":-1},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.8854904,0.3411611,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.8854904,0.3411611,1],"e":[1,0.6396633,0.0779718,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.6396633,0.0779718,1],"e":[1,0.6745098,0.1764706,1]},{"t":36}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"star1 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":17,"st":31,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"star2 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":14,"st":29,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"star3 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"star4 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"star5 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.6745098,0.1764706,1]},{"t":4}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":0,"nm":"circle burst s","refId":"comp_0","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[28.899,53.048,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[130,130,100]}},"ao":0,"w":100,"h":100,"ip":16,"op":76,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[111.213,120.311,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":15,"op":85,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":0,"nm":"5.3 burst 2","cl":"3","refId":"comp_3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[199.5,32.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[120,120,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[292.164,53.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":0,"nm":"5.8 burst","cl":"8","refId":"comp_4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[302.302,133.646,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":13,"op":73,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[289.403,122.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":0,"nm":"burst","refId":"comp_5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[380.063,47.18,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":10,"op":70,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":0,"nm":"burst5.16","cl":"16","refId":"comp_6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[459.494,113.978,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"w":100,"h":100,"ip":11,"op":81,"st":11,"bm":0,"sr":1}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 30324f69..67ab729c 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -92,7 +92,7 @@ fun App() { .opacityGrid(), painter = rememberLottiePainter( composition = composition.value, - iterations = LottieConstants.IterateForever + iterations = LottieConstants.IterateForever, ), contentDescription = null ) @@ -113,7 +113,9 @@ fun LottieCompositionSpec.Companion.Resource( dir : String = "files", assetsManager: LottieAssetsManager = ResourcesAssetsManager(), readBytes: suspend (path: String) -> ByteArray = Res::readBytes -) : LottieCompositionSpec = JsonString(assetsManager) { readBytes("$dir/$path").decodeToString() } +) : LottieCompositionSpec = JsonString(assetsManager) { + readBytes("$dir/$path").decodeToString() +} /** * Compose resources asset manager. From 3c34a86e73e4f23a27a774b49fa4678194eb9322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 13 Jun 2024 03:19:47 +0300 Subject: [PATCH 045/100] autoorient, fix text layer sp, clip to bounds --- compottie-network/build.gradle.kts | 1 + .../alexzhirkevich/compottie/DiskCache.kt | 334 +++---- .../alexzhirkevich/compottie/DiskLruCache.kt | 844 +++++++++++++++++ .../compottie/FaultHidingSink.kt | 45 + .../alexzhirkevich/compottie/FileSystem.kt | 60 ++ .../alexzhirkevich/compottie/LruDiskCache.kt | 847 ------------------ .../alexzhirkevich/compottie/RealDiskCache.kt | 71 ++ .../compottie/FileSystem.jvmNative.kt | 6 + .../compottie/FileSystem.web.kt | 6 + .../compottie/LottieContext.android.kt | 12 + .../alexzhirkevich/compottie/IODispatcher.kt | 3 +- .../io/github/alexzhirkevich/compottie/L.kt | 20 + .../compottie/LottieAnimatable.kt | 2 +- .../compottie/LottieAnimation.kt | 17 +- .../compottie/LottieClipSpec.skiko.kt | 6 +- .../compottie/LottieComposition.kt | 50 +- .../alexzhirkevich/compottie/LottieContext.kt | 8 + .../alexzhirkevich/compottie/LottiePainter.kt | 21 +- .../alexzhirkevich/compottie/Marker.skiko.kt | 14 - .../animateLottieCompositionAsState.kt | 4 +- .../compottie/internal/AnimationState.kt | 4 +- .../compottie/internal/LottieData.kt | 4 - .../internal/animation/AnimatedTransform.kt | 32 +- .../animation/BaseKeyframeAnimation.kt | 2 +- .../internal/content/ContentGroup.kt | 1 + .../internal/content/ContentGroupBase.kt | 1 + .../internal/layers/BaseCompositionLayer.kt | 5 +- .../compottie/internal/layers/BaseLayer.kt | 6 +- .../compottie/internal/layers/Layer.kt | 7 +- .../compottie/internal/layers/ShapeLayer.kt | 4 +- .../compottie/internal/layers/TextLayer.kt | 7 +- .../compottie/internal/shapes/GroupShape.kt | 4 + .../internal/shapes/MergePathsShape.kt | 4 +- .../internal/shapes/RepeaterShape.kt | 9 +- .../compottie/internal/utils/Math.kt | 8 +- .../compottie/IoDispatcher.jvmNative.kt | 2 +- .../compottie/LottieContext.skiko.kt | 11 + .../compottie/IoDispatcher.web.kt | 2 +- .../composeResources/files/angel.json | 1 + .../composeResources/files/autoorient.json | 390 ++++++++ .../composeResources/files/test.json | 1 - example/shared/src/commonMain/kotlin/App.kt | 29 +- 42 files changed, 1761 insertions(+), 1144 deletions(-) create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FaultHidingSink.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt delete mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt create mode 100644 compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt create mode 100644 compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.skiko.kt create mode 100644 example/shared/src/commonMain/composeResources/files/angel.json create mode 100644 example/shared/src/commonMain/composeResources/files/autoorient.json diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index aa1fa85b..87bb2bc2 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -75,6 +75,7 @@ kotlin { implementation(compose.ui) implementation(libs.serialization) implementation(libs.okio) + implementation(libs.okio.fakefilesystem) api(libs.ktor.client.core) implementation(project(":compottie")) implementation(project(":compottie-dot")) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt index d296c863..43583063 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt @@ -1,204 +1,130 @@ -//package io.github.alexzhirkevich.compottie -// -//import coil3.util.defaultFileSystem -//import coil3.util.ioCoroutineDispatcher -//import coil3.util.remainingFreeSpaceBytes -//import kotlinx.coroutines.CoroutineDispatcher -//import okio.Closeable -//import okio.FileSystem -//import okio.Path -// -///** -// * An LRU cache of files. -// */ -//interface DiskCache { -// -// /** The current size of the cache in bytes. */ -// val size: Long -// -// /** The maximum size of the cache in bytes. */ -// val maxSize: Long -// -// /** The directory that contains the cache's files. */ -// val directory: Path -// -// /** The file system that contains the cache's files. */ -// val fileSystem: FileSystem -// -// /** -// * Read the entry associated with [key]. -// * -// * IMPORTANT: **You must** call either [Snapshot.close] or [Snapshot.closeAndOpenEditor] when -// * finished reading the snapshot. An open snapshot prevents opening a new [Editor] or deleting -// * the entry on disk. -// */ -// fun openSnapshot(key: String): Snapshot? -// -// /** -// * Write to the entry associated with [key]. -// * -// * IMPORTANT: **You must** call one of [Editor.commit], [Editor.commitAndOpenSnapshot], or -// * [Editor.abort] to complete the edit. An open editor prevents opening a new [Snapshot], -// * opening a new [Editor], or deleting the entry on disk. -// */ -// fun openEditor(key: String): Editor? -// -// /** -// * Delete the entry referenced by [key]. -// * -// * @return 'true' if [key] was removed successfully. Else, return 'false'. -// */ -// fun remove(key: String): Boolean -// -// /** -// * Delete all entries in the disk cache. -// */ -// fun clear() -// -// /** -// * Close any open snapshots, abort all in-progress edits, and close any open system resources. -// */ -// fun shutdown() -// -// /** -// * A snapshot of the values for an entry. -// * -// * IMPORTANT: You must **only read** [metadata] or [data]. Mutating either file can corrupt the -// * disk cache. To modify the contents of those files, use [openEditor]. -// */ -// interface Snapshot : Closeable { -// -// /** Get the metadata file path for this entry. */ -// val metadata: Path -// -// /** Get the data file path for this entry. */ -// val data: Path -// -// /** Close the snapshot to allow editing. */ -// override fun close() -// -// /** Close the snapshot and call [openEditor] for this entry atomically. */ -// fun closeAndOpenEditor(): Editor? -// } -// -// /** -// * Edits the values for an entry. -// * -// * Calling [metadata] or [data] marks that file as dirty so it will be persisted to disk -// * if this editor is committed. -// * -// * IMPORTANT: You must **only read or modify the contents** of [metadata] or [data]. -// * Renaming, locking, or other mutating file operations can corrupt the disk cache. -// */ -// interface Editor { -// -// /** Get the metadata file path for this entry. */ -// val metadata: Path -// -// /** Get the data file path for this entry. */ -// val data: Path -// -// /** Commit the edit so the changes are visible to readers. */ -// fun commit() -// -// /** Commit the write and call [openSnapshot] for this entry atomically. */ -// fun commitAndOpenSnapshot(): Snapshot? -// -// /** Abort the edit. Any written data will be discarded. */ -// fun abort() -// } -// -// class Builder { -// -// private var directory: Path? = null -// private var fileSystem = defaultFileSystem() -// private var maxSizePercent = 0.02 // 2% -// private var minimumMaxSizeBytes = 10L * 1024 * 1024 // 10MB -// private var maximumMaxSizeBytes = 250L * 1024 * 1024 // 250MB -// private var maxSizeBytes = 0L -// private var cleanupDispatcher = ioCoroutineDispatcher() -// -// /** -// * Set the [directory] where the cache stores its data. -// * -// * IMPORTANT: It is an error to have two [DiskCache] instances active in the same -// * directory at the same time as this can corrupt the disk cache. -// */ -// fun directory(directory: Path) = apply { -// this.directory = directory -// } -// -// /** -// * Set the [fileSystem] where the cache stores its data. -// */ -// fun fileSystem(fileSystem: FileSystem) = apply { -// this.fileSystem = fileSystem -// } -// -// /** -// * Set the maximum size of the disk cache as a percentage of the device's free disk space. -// */ -// fun maxSizePercent(percent: Double) = apply { -// require(percent in 0.0..1.0) { "percent must be in the range [0.0, 1.0]." } -// this.maxSizeBytes = 0 -// this.maxSizePercent = percent -// } -// -// /** -// * Set the minimum size of the disk cache in bytes. -// * This is ignored if [maxSizeBytes] is set. -// */ -// fun minimumMaxSizeBytes(size: Long) = apply { -// require(size > 0) { "size must be > 0." } -// this.minimumMaxSizeBytes = size -// } -// -// /** -// * Set the maximum size of the disk cache in bytes. -// * This is ignored if [maxSizeBytes] is set. -// */ -// fun maximumMaxSizeBytes(size: Long) = apply { -// require(size > 0) { "size must be > 0." } -// this.maximumMaxSizeBytes = size -// } -// -// /** -// * Set the maximum size of the disk cache in bytes. -// */ -// fun maxSizeBytes(size: Long) = apply { -// require(size > 0) { "size must be > 0." } -// this.maxSizePercent = 0.0 -// this.maxSizeBytes = size -// } -// -// /** -// * Set the [CoroutineDispatcher] that cache size trim operations will be executed on. -// */ -// fun cleanupDispatcher(dispatcher: CoroutineDispatcher) = apply { -// this.cleanupDispatcher = dispatcher -// } -// -// /** -// * Create a new [DiskCache] instance. -// */ -// fun build(): DiskCache { -// val directory = checkNotNull(directory) { "directory == null" } -// val maxSize = if (maxSizePercent > 0) { -// try { -// val size = maxSizePercent * fileSystem.remainingFreeSpaceBytes(directory) -// size.toLong().coerceIn(minimumMaxSizeBytes, maximumMaxSizeBytes) -// } catch (_: Exception) { -// minimumMaxSizeBytes -// } -// } else { -// maxSizeBytes -// } -// return RealDiskCache( -// maxSize = maxSize, -// directory = directory, -// fileSystem = fileSystem, -// cleanupDispatcher = cleanupDispatcher, -// ) -// } -// } -//} \ No newline at end of file +package io.github.alexzhirkevich.compottie + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers +import okio.Closeable +import okio.FileSystem +import okio.Path +import okio.Path.Companion.toPath +import kotlin.js.JsName + +/** + * An LRU cache of files. + */ +interface DiskCache { + + /** The current size of the cache in bytes. */ + val size: Long + + /** The maximum size of the cache in bytes. */ + val maxSize: Long + + /** The directory that contains the cache's files. */ + val directory: Path + + /** The file system that contains the cache's files. */ + val fileSystem: FileSystem + + /** + * Read the entry associated with [key]. + * + * IMPORTANT: **You must** call either [Snapshot.close] or [Snapshot.closeAndOpenEditor] when + * finished reading the snapshot. An open snapshot prevents opening a new [Editor] or deleting + * the entry on disk. + */ + fun openSnapshot(key: String): Snapshot? + + /** + * Write to the entry associated with [key]. + * + * IMPORTANT: **You must** call one of [Editor.commit], [Editor.commitAndOpenSnapshot], or + * [Editor.abort] to complete the edit. An open editor prevents opening a new [Snapshot], + * opening a new [Editor], or deleting the entry on disk. + */ + fun openEditor(key: String): Editor? + + /** + * Delete the entry referenced by [key]. + * + * @return 'true' if [key] was removed successfully. Else, return 'false'. + */ + fun remove(key: String): Boolean + + /** + * Delete all entries in the disk cache. + */ + fun clear() + + /** + * Close any open snapshots, abort all in-progress edits, and close any open system resources. + */ + fun shutdown() + + /** + * A snapshot of the values for an entry. + * + * IMPORTANT: You must **only read** [metadata] or [data]. Mutating either file can corrupt the + * disk cache. To modify the contents of those files, use [openEditor]. + */ + interface Snapshot : Closeable { + + /** Get the metadata file path for this entry. */ + val metadata: Path + + /** Get the data file path for this entry. */ + val data: Path + + /** Close the snapshot to allow editing. */ + override fun close() + + /** Close the snapshot and call [openEditor] for this entry atomically. */ + fun closeAndOpenEditor(): Editor? + } + + /** + * Edits the values for an entry. + * + * Calling [metadata] or [data] marks that file as dirty so it will be persisted to disk + * if this editor is committed. + * + * IMPORTANT: You must **only read or modify the contents** of [metadata] or [data]. + * Renaming, locking, or other mutating file operations can corrupt the disk cache. + */ + interface Editor { + + /** Get the metadata file path for this entry. */ + val metadata: Path + + /** Get the data file path for this entry. */ + val data: Path + + /** Commit the edit so the changes are visible to readers. */ + fun commit() + + /** Commit the write and call [openSnapshot] for this entry atomically. */ + fun commitAndOpenSnapshot(): Snapshot? + + /** Abort the edit. Any written data will be discarded. */ + fun abort() + } + +} + +@OptIn(InternalCompottieApi::class) +@JsName("LottieDiskCache") +fun DiskCache( + directory: Path = "compottie".toPath(), + fileSystem : FileSystem = defaultFileSystem(), + maxSizeBytes : Long = MB_250, + cleanupDispatcher : CoroutineDispatcher = Dispatchers.IODispatcher +) : DiskCache { + return RealDiskCache( + maxSize = maxSizeBytes, + directory = directory, + fileSystem = fileSystem, + cleanupDispatcher = cleanupDispatcher + ) +} + + +private const val MB_250 = 250L * 1024 * 1024 \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt new file mode 100644 index 00000000..8a5bd9d6 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt @@ -0,0 +1,844 @@ +package io.github.alexzhirkevich.compottie + + +import androidx.compose.ui.util.fastForEach +import kotlinx.atomicfu.locks.SynchronizedObject +import kotlinx.atomicfu.locks.synchronized +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.cancel +import kotlinx.coroutines.launch +import okio.BufferedSink +import okio.Closeable +import okio.EOFException +import okio.FileSystem +import okio.ForwardingFileSystem +import okio.IOException +import okio.Path +import okio.Sink +import okio.blackholeSink +import okio.buffer + +/** + * A cache that uses a bounded amount of space on a filesystem. Each cache entry has a string key + * and a fixed number of values. Each key must match the regex `[a-z0-9_-]{1,64}`. Values are byte + * sequences, accessible as streams or files. Each value must be between `0` and `Int.MAX_VALUE` + * bytes in length. + * + * The cache stores its data in a directory on the filesystem. This directory must be exclusive to + * the cache; the cache may delete or overwrite files from its directory. It is an error for + * multiple processes to use the same cache directory at the same time. + * + * This cache limits the number of bytes that it will store on the filesystem. When the number of + * stored bytes exceeds the limit, the cache will remove entries in the background until the limit + * is satisfied. The limit is not strict: the cache may temporarily exceed it while waiting for + * files to be deleted. The limit does not include filesystem overhead or the cache journal so + * space-sensitive applications should set a conservative limit. + * + * Clients call [edit] to create or update the values of an entry. An entry may have only one editor + * at one time; if a value is not available to be edited then [edit] will return null. + * + * * When an entry is being **created** it is necessary to supply a full set of values; the empty + * value should be used as a placeholder if necessary. + * + * * When an entry is being **edited**, it is not necessary to supply data for every value; values + * default to their previous value. + * + * Every [edit] call must be matched by a call to [Editor.commit] or [Editor.abort]. Committing is + * atomic: a read observes the full set of values as they were before or after the commit, but never + * a mix of values. + * + * Clients call [get] to read a snapshot of an entry. The read will observe the value at the time + * that [get] was called. Updates and removals after the call do not impact ongoing reads. + * + * This class is tolerant of some I/O errors. If files are missing from the filesystem, the + * corresponding entries will be dropped from the cache. If an error occurs while writing a cache + * value, the edit will fail silently. Callers should handle other problems by catching + * `IOException` and responding appropriately. + * + * @constructor Create a cache which will reside in [directory]. This cache is lazily initialized on + * first access and will be created if it does not exist. + * @param directory a writable directory. + * @param cleanupDispatcher the dispatcher to run cache size trim operations on. + * @param valueCount the number of values per cache entry. Must be positive. + * @param maxSize the maximum number of bytes this cache should use to store. + */ +internal class DiskLruCache( + fileSystem: FileSystem, + private val directory: Path, + cleanupDispatcher: CoroutineDispatcher, + private val maxSize: Long, + private val appVersion: Int, + private val valueCount: Int, +) : Closeable { + + /* + * This cache uses a journal file named "journal". A typical journal file looks like this: + * + * libcore.io.DiskLruCache + * 1 + * 100 + * 2 + * + * CLEAN 3400330d1dfc7f3f7f4b8d4d803dfcf6 832 21054 + * DIRTY 335c4c6028171cfddfbaae1a9c313c52 + * CLEAN 335c4c6028171cfddfbaae1a9c313c52 3934 2342 + * REMOVE 335c4c6028171cfddfbaae1a9c313c52 + * DIRTY 1ab96a171faeeee38496d8b330771a7a + * CLEAN 1ab96a171faeeee38496d8b330771a7a 1600 234 + * READ 335c4c6028171cfddfbaae1a9c313c52 + * READ 3400330d1dfc7f3f7f4b8d4d803dfcf6 + * + * The first five lines of the journal form its header. They are the constant string + * "libcore.io.DiskLruCache", the disk cache's version, the application's version, the value + * count, and a blank line. + * + * Each of the subsequent lines in the file is a record of the state of a cache entry. Each line + * contains space-separated values: a state, a key, and optional state-specific values. + * + * o DIRTY lines track that an entry is actively being created or updated. Every successful + * DIRTY action should be followed by a CLEAN or REMOVE action. DIRTY lines without a matching + * CLEAN or REMOVE indicate that temporary files may need to be deleted. + * + * o CLEAN lines track a cache entry that has been successfully published and may be read. A + * publish line is followed by the lengths of each of its values. + * + * o READ lines track accesses for LRU. + * + * o REMOVE lines track entries that have been deleted. + * + * The journal file is appended to as cache operations occur. The journal may occasionally be + * compacted by dropping redundant lines. A temporary file named "journal.tmp" will be used during + * compaction; that file should be deleted if it exists when the cache is opened. + */ + + init { + require(maxSize > 0L) { "maxSize <= 0" } + require(valueCount > 0) { "valueCount <= 0" } + } + + private val journalFile = directory / JOURNAL_FILE + private val journalFileTmp = directory / JOURNAL_FILE_TMP + private val journalFileBackup = directory / JOURNAL_FILE_BACKUP + private val lruEntries = LinkedHashMap() + private val cleanupScope = + @OptIn(ExperimentalCoroutinesApi::class) + CoroutineScope(SupervisorJob() + cleanupDispatcher.limitedParallelism(1)) + private val lock = SynchronizedObject() + private var size = 0L + private var operationsSinceRewrite = 0 + private var journalWriter: BufferedSink? = null + private var hasJournalErrors = false + private var initialized = false + private var closed = false + private var mostRecentTrimFailed = false + private var mostRecentRebuildFailed = false + + private val fileSystem = object : ForwardingFileSystem(fileSystem) { + override fun sink(file: Path, mustCreate: Boolean): Sink { + // Ensure the parent directory exists. + file.parent?.let(::createDirectories) + return super.sink(file, mustCreate) + } + } + + fun initialize() = synchronized(lock) { + if (initialized) return + + // If a temporary file exists, delete it. + fileSystem.delete(journalFileTmp) + + // If a backup file exists, use it instead. + if (fileSystem.exists(journalFileBackup)) { + // If journal file also exists just delete backup file. + if (fileSystem.exists(journalFile)) { + fileSystem.delete(journalFileBackup) + } else { + fileSystem.atomicMove(journalFileBackup, journalFile) + } + } + + // Prefer to pick up where we left off. + if (fileSystem.exists(journalFile)) { + try { + readJournal() + processJournal() + initialized = true + return + } catch (_: IOException) { + // The journal is corrupt. + } + + // The cache is corrupted; attempt to delete the contents of the directory. + // This can throw and we'll let that propagate out as it likely means there + // is a severe filesystem problem. + try { + delete() + } finally { + closed = false + } + } + + writeJournal() + initialized = true + } + + /** + * Reads the journal and initializes [lruEntries]. + */ + private fun readJournal() { + fileSystem.read(journalFile) { + val magic = readUtf8LineStrict() + val version = readUtf8LineStrict() + val appVersionString = readUtf8LineStrict() + val valueCountString = readUtf8LineStrict() + val blank = readUtf8LineStrict() + + if (MAGIC != magic || + VERSION != version || + appVersion.toString() != appVersionString || + valueCount.toString() != valueCountString || + blank.isNotEmpty() + ) { + throw IOException("unexpected journal header: " + + "[$magic, $version, $appVersionString, $valueCountString, $blank]") + } + + var lineCount = 0 + while (true) { + try { + readJournalLine(readUtf8LineStrict()) + lineCount++ + } catch (_: EOFException) { + break // End of journal. + } + } + + operationsSinceRewrite = lineCount - lruEntries.size + + // If we ended on a truncated line, rebuild the journal before appending to it. + if (!exhausted()) { + writeJournal() + } else { + journalWriter = newJournalWriter() + } + } + } + + private fun newJournalWriter(): BufferedSink { + val fileSink = fileSystem.appendingSink(journalFile) + val faultHidingSink = FaultHidingSink(fileSink) { + hasJournalErrors = true + } + return faultHidingSink.buffer() + } + + private fun readJournalLine(line: String) { + val firstSpace = line.indexOf(' ') + if (firstSpace == -1) throw IOException("unexpected journal line: $line") + + val keyBegin = firstSpace + 1 + val secondSpace = line.indexOf(' ', keyBegin) + val key: String + if (secondSpace == -1) { + key = line.substring(keyBegin) + if (firstSpace == REMOVE.length && line.startsWith(REMOVE)) { + lruEntries.remove(key) + return + } + } else { + key = line.substring(keyBegin, secondSpace) + } + + val entry = lruEntries.getOrPut(key) { Entry(key) } + when { + secondSpace != -1 && firstSpace == CLEAN.length && line.startsWith(CLEAN) -> { + val parts = line.substring(secondSpace + 1).split(' ') + entry.readable = true + entry.currentEditor = null + entry.setLengths(parts) + } + secondSpace == -1 && firstSpace == DIRTY.length && line.startsWith(DIRTY) -> { + entry.currentEditor = Editor(entry) + } + secondSpace == -1 && firstSpace == READ.length && line.startsWith(READ) -> { + // This work was already done by calling lruEntries.get(). + } + else -> throw IOException("unexpected journal line: $line") + } + } + + /** + * Computes the current size and collects garbage as a part of initializing the cache. + * Dirty entries are assumed to be inconsistent and will be deleted. + */ + private fun processJournal() { + var size = 0L + val iterator = lruEntries.values.iterator() + while (iterator.hasNext()) { + val entry = iterator.next() + if (entry.currentEditor == null) { + for (i in 0 until valueCount) { + size += entry.lengths[i] + } + } else { + entry.currentEditor = null + for (i in 0 until valueCount) { + fileSystem.delete(entry.cleanFiles[i]) + fileSystem.delete(entry.dirtyFiles[i]) + } + iterator.remove() + } + } + this.size = size + } + + /** + * Writes [lruEntries] to a new journal file. This replaces the current journal if it exists. + */ + private fun writeJournal() = synchronized(lock) { + journalWriter?.close() + + fileSystem.write(journalFileTmp) { + writeUtf8(MAGIC).writeByte('\n'.code) + writeUtf8(VERSION).writeByte('\n'.code) + writeDecimalLong(appVersion.toLong()).writeByte('\n'.code) + writeDecimalLong(valueCount.toLong()).writeByte('\n'.code) + writeByte('\n'.code) + + for (entry in lruEntries.values) { + if (entry.currentEditor != null) { + writeUtf8(DIRTY) + writeByte(' '.code) + writeUtf8(entry.key) + writeByte('\n'.code) + } else { + writeUtf8(CLEAN) + writeByte(' '.code) + writeUtf8(entry.key) + entry.writeLengths(this) + writeByte('\n'.code) + } + } + } + + if (fileSystem.exists(journalFile)) { + fileSystem.atomicMove(journalFile, journalFileBackup) + fileSystem.atomicMove(journalFileTmp, journalFile) + fileSystem.delete(journalFileBackup) + } else { + fileSystem.atomicMove(journalFileTmp, journalFile) + } + + journalWriter = newJournalWriter() + operationsSinceRewrite = 0 + hasJournalErrors = false + mostRecentRebuildFailed = false + } + + /** + * Returns a snapshot of the entry named [key], or null if it doesn't exist or is not currently + * readable. If a value is returned, it is moved to the head of the LRU queue. + */ + operator fun get(key: String): Snapshot? = synchronized(lock) { + checkNotClosed() + validateKey(key) + initialize() + + val snapshot = lruEntries[key]?.snapshot() ?: return null + + operationsSinceRewrite++ + journalWriter!!.apply { + writeUtf8(READ) + writeByte(' '.code) + writeUtf8(key) + writeByte('\n'.code) + } + + if (journalRewriteRequired()) { + launchCleanup() + } + + return snapshot + } + + /** Returns an editor for the entry named [key], or null if another edit is in progress. */ + fun edit(key: String): Editor? = synchronized(lock) { + checkNotClosed() + validateKey(key) + initialize() + + var entry = lruEntries[key] + + if (entry?.currentEditor != null) { + return null // Another edit is in progress. + } + + if (entry != null && entry.lockingSnapshotCount != 0) { + return null // We can't write this file because a reader is still reading it. + } + + if (mostRecentTrimFailed || mostRecentRebuildFailed) { + // The OS has become our enemy! If the trim job failed, it means we are storing more + // data than requested by the user. Do not allow edits so we do not go over that limit + // any further. If the journal rebuild failed, the journal writer will not be active, + // meaning we will not be able to record the edit, causing file leaks. In both cases, + // we want to retry the clean up so we can get out of this state! + launchCleanup() + return null + } + + // Flush the journal before creating files to prevent file leaks. + journalWriter!!.apply { + writeUtf8(DIRTY) + writeByte(' '.code) + writeUtf8(key) + writeByte('\n'.code) + flush() + } + + if (hasJournalErrors) { + return null // Don't edit; the journal can't be written. + } + + if (entry == null) { + entry = Entry(key) + lruEntries[key] = entry + } + val editor = Editor(entry) + entry.currentEditor = editor + return editor + } + + /** + * Returns the number of bytes currently being used to store the values in this cache. + * This may be greater than the max size if a background deletion is pending. + */ + fun size(): Long = synchronized(lock) { + initialize() + return size + } + + private fun completeEdit(editor: Editor, success: Boolean) = synchronized(lock) { + val entry = editor.entry + check(entry.currentEditor == editor) + + if (success && !entry.zombie) { + // Ensure all files that have been written to have an associated dirty file. + for (i in 0 until valueCount) { + if (editor.written[i] && !fileSystem.exists(entry.dirtyFiles[i])) { + editor.abort() + return + } + } + + // Replace the clean files with the dirty ones. + for (i in 0 until valueCount) { + val dirty = entry.dirtyFiles[i] + val clean = entry.cleanFiles[i] + if (fileSystem.exists(dirty)) { + fileSystem.atomicMove(dirty, clean) + } else { + // Ensure every entry is complete. + fileSystem.createFile(entry.cleanFiles[i]) + } + val oldLength = entry.lengths[i] + val newLength = fileSystem.metadata(clean).size ?: 0 + entry.lengths[i] = newLength + size = size - oldLength + newLength + } + } else { + // Discard any dirty files. + for (i in 0 until valueCount) { + fileSystem.delete(entry.dirtyFiles[i]) + } + } + + entry.currentEditor = null + if (entry.zombie) { + removeEntry(entry) + return + } + + operationsSinceRewrite++ + journalWriter!!.apply { + if (success || entry.readable) { + entry.readable = true + writeUtf8(CLEAN) + writeByte(' '.code) + writeUtf8(entry.key) + entry.writeLengths(this) + writeByte('\n'.code) + } else { + lruEntries.remove(entry.key) + writeUtf8(REMOVE) + writeByte(' '.code) + writeUtf8(entry.key) + writeByte('\n'.code) + } + flush() + } + + if (size > maxSize || journalRewriteRequired()) { + launchCleanup() + } + } + + /** + * We rewrite [lruEntries] to the on-disk journal after a sufficient number of operations. + */ + private fun journalRewriteRequired() = operationsSinceRewrite >= 2000 + + /** + * Drops the entry for [key] if it exists and can be removed. If the entry for [key] is + * currently being edited, that edit will complete normally but its value will not be stored. + * + * @return true if an entry was removed. + */ + fun remove(key: String): Boolean = synchronized(lock) { + checkNotClosed() + validateKey(key) + initialize() + + val entry = lruEntries[key] ?: return false + val removed = removeEntry(entry) + if (removed && size <= maxSize) mostRecentTrimFailed = false + return removed + } + + private fun removeEntry(entry: Entry): Boolean { + // If we can't delete files that are still open, mark this entry as a zombie so its files + // will be deleted when those files are closed. + if (entry.lockingSnapshotCount > 0) { + // Mark this entry as 'DIRTY' so that if the process crashes this entry won't be used. + journalWriter?.apply { + writeUtf8(DIRTY) + writeByte(' '.code) + writeUtf8(entry.key) + writeByte('\n'.code) + flush() + } + } + if (entry.lockingSnapshotCount > 0 || entry.currentEditor != null) { + entry.zombie = true + return true + } + + for (i in 0 until valueCount) { + fileSystem.delete(entry.cleanFiles[i]) + size -= entry.lengths[i] + entry.lengths[i] = 0 + } + + operationsSinceRewrite++ + journalWriter?.apply { + writeUtf8(REMOVE) + writeByte(' '.code) + writeUtf8(entry.key) + writeByte('\n'.code) + } + lruEntries.remove(entry.key) + + if (journalRewriteRequired()) { + launchCleanup() + } + + return true + } + + private fun checkNotClosed() { + check(!closed) { "cache is closed" } + } + + /** Closes this cache. Stored values will remain on the filesystem. */ + override fun close() = synchronized(lock) { + if (!initialized || closed) { + closed = true + return + } + + // Copying for concurrent iteration. + for (entry in lruEntries.values.toTypedArray()) { + // Prevent the edit from completing normally. + entry.currentEditor?.detach() + } + + trimToSize() + cleanupScope.cancel() + journalWriter!!.close() + journalWriter = null + closed = true + } + + fun flush() = synchronized(lock) { + if (!initialized) return + + checkNotClosed() + trimToSize() + journalWriter!!.flush() + } + + private fun trimToSize() { + while (size > maxSize) { + if (!removeOldestEntry()) return + } + mostRecentTrimFailed = false + } + + /** Returns true if an entry was removed. This will return false if all entries are zombies. */ + private fun removeOldestEntry(): Boolean { + for (toEvict in lruEntries.values) { + if (!toEvict.zombie) { + removeEntry(toEvict) + return true + } + } + return false + } + + /** + * Closes the cache and deletes all of its stored values. This will delete all files in the + * cache directory including files that weren't created by the cache. + */ + private fun delete() { + close() + fileSystem.deleteContents(directory) + } + + /** + * Deletes all stored values from the cache. In-flight edits will complete normally but their + * values will not be stored. + */ + fun evictAll() = synchronized(lock) { + initialize() + // Copying for concurrent iteration. + for (entry in lruEntries.values.toTypedArray()) { + removeEntry(entry) + } + mostRecentTrimFailed = false + } + + /** + * Launch an asynchronous operation to trim files from the disk cache and update the journal. + */ + private fun launchCleanup() { + cleanupScope.launch { + synchronized(lock) { + if (!initialized || closed) return@launch + try { + trimToSize() + } catch (_: IOException) { + mostRecentTrimFailed = true + } + try { + if (journalRewriteRequired()) { + writeJournal() + } + } catch (_: IOException) { + mostRecentRebuildFailed = true + journalWriter = blackholeSink().buffer() + } + } + } + } + + private fun validateKey(key: String) { + require(LEGAL_KEY_PATTERN matches key) { + "keys must match regex [a-z0-9_-]{1,120}: \"$key\"" + } + } + + /** A snapshot of the values for an entry. */ + inner class Snapshot(val entry: Entry) : Closeable { + + private var closed = false + + fun file(index: Int): Path { + check(!closed) { "snapshot is closed" } + return entry.cleanFiles[index] + } + + override fun close() { + if (!closed) { + closed = true + synchronized(lock) { + entry.lockingSnapshotCount-- + if (entry.lockingSnapshotCount == 0 && entry.zombie) { + removeEntry(entry) + } + } + } + } + + fun closeAndEdit(): Editor? { + synchronized(lock) { + close() + return edit(entry.key) + } + } + } + + /** Edits the values for an entry. */ + inner class Editor(val entry: Entry) { + + private var closed = false + + /** + * True for a given index if that index's file has been written to. + */ + val written = BooleanArray(valueCount) + + /** + * Get the file to read from/write to for [index]. + * This file will become the new value for this index if committed. + */ + fun file(index: Int): Path { + synchronized(lock) { + check(!closed) { "editor is closed" } + written[index] = true + return entry.dirtyFiles[index].also(fileSystem::createFile) + } + } + + /** + * Prevents this editor from completing normally. + * This is necessary if the target entry is evicted while this editor is active. + */ + fun detach() { + if (entry.currentEditor == this) { + entry.zombie = true // We can't delete it until the current edit completes. + } + } + + /** + * Commits this edit so it is visible to readers. + * This releases the edit lock so another edit may be started on the same key. + */ + fun commit() = complete(true) + + /** + * Commit the edit and open a new [Snapshot] atomically. + */ + fun commitAndGet(): Snapshot? { + synchronized(lock) { + commit() + return get(entry.key) + } + } + + /** + * Aborts this edit. + * This releases the edit lock so another edit may be started on the same key. + */ + fun abort() = complete(false) + + /** + * Complete this edit either successfully or unsuccessfully. + */ + private fun complete(success: Boolean) { + synchronized(lock) { + check(!closed) { "editor is closed" } + if (entry.currentEditor == this) { + completeEdit(this, success) + } + closed = true + } + } + } + + inner class Entry(val key: String) { + + /** Lengths of this entry's files. */ + val lengths = LongArray(valueCount) + val cleanFiles = ArrayList(valueCount) + val dirtyFiles = ArrayList(valueCount) + + /** True if this entry has ever been published. */ + var readable = false + + /** True if this entry must be deleted when the current edit or read completes. */ + var zombie = false + + /** + * The ongoing edit or null if this entry is not being edited. When setting this to null + * the entry must be removed if it is a zombie. + */ + var currentEditor: Editor? = null + + /** + * Snapshots currently reading this entry before a write or delete can proceed. When + * decrementing this to zero, the entry must be removed if it is a zombie. + */ + var lockingSnapshotCount = 0 + + init { + // The names are repetitive so re-use the same builder to avoid allocations. + val fileBuilder = StringBuilder(key).append('.') + val truncateTo = fileBuilder.length + for (i in 0 until valueCount) { + fileBuilder.append(i) + cleanFiles += directory / fileBuilder.toString() + fileBuilder.append(".tmp") + dirtyFiles += directory / fileBuilder.toString() + fileBuilder.setLength(truncateTo) + } + } + + /** Set lengths using decimal numbers like "10123". */ + fun setLengths(strings: List) { + if (strings.size != valueCount) { + throw IOException("unexpected journal line: $strings") + } + + try { + for (i in strings.indices) { + lengths[i] = strings[i].toLong() + } + } catch (_: NumberFormatException) { + throw IOException("unexpected journal line: $strings") + } + } + + /** Append space-prefixed lengths to [writer]. */ + fun writeLengths(writer: BufferedSink) { + for (length in lengths) { + writer.writeByte(' '.code).writeDecimalLong(length) + } + } + + /** Returns a snapshot of this entry. */ + fun snapshot(): Snapshot? { + if (!readable) return null + if (currentEditor != null || zombie) return null + + // Ensure that the entry's files still exist. + cleanFiles.fastForEach { file -> + if (!fileSystem.exists(file)) { + // Since the entry is no longer valid, remove it so the metadata is accurate + // (i.e. the cache size). + try { + removeEntry(this) + } catch (_: IOException) {} + return null + } + } + lockingSnapshotCount++ + return Snapshot(this) + } + } + + companion object { + internal const val JOURNAL_FILE = "journal" + internal const val JOURNAL_FILE_TMP = "journal.tmp" + internal const val JOURNAL_FILE_BACKUP = "journal.bkp" + internal const val MAGIC = "libcore.io.DiskLruCache" + internal const val VERSION = "1" + private const val CLEAN = "CLEAN" + private const val DIRTY = "DIRTY" + private const val REMOVE = "REMOVE" + private const val READ = "READ" + private val LEGAL_KEY_PATTERN = "[a-z0-9_-]{1,120}".toRegex() + } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FaultHidingSink.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FaultHidingSink.kt new file mode 100644 index 00000000..bcec3a77 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FaultHidingSink.kt @@ -0,0 +1,45 @@ +package io.github.alexzhirkevich.compottie + +import okio.Buffer +import okio.IOException +import okio.Sink + +/** A sink that never throws [IOException]s, even if the underlying sink does. */ +internal class FaultHidingSink( + private val delegate: Sink, + private val onException: (IOException) -> Unit, +) : Sink by delegate { + + private var hasErrors = false + + override fun write(source: Buffer, byteCount: Long) { + if (hasErrors) { + source.skip(byteCount) + return + } + try { + delegate.write(source, byteCount) + } catch (e: IOException) { + hasErrors = true + onException(e) + } + } + + override fun flush() { + try { + delegate.flush() + } catch (e: IOException) { + hasErrors = true + onException(e) + } + } + + override fun close() { + try { + delegate.close() + } catch (e: IOException) { + hasErrors = true + onException(e) + } + } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt new file mode 100644 index 00000000..80c32c9a --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt @@ -0,0 +1,60 @@ +package io.github.alexzhirkevich.compottie + +import okio.Closeable +import okio.FileNotFoundException +import okio.FileSystem +import okio.IOException +import okio.Path +import kotlin.random.Random +import kotlin.random.nextULong + +internal expect fun defaultFileSystem() : FileSystem + +internal fun Closeable.closeQuietly() { + try { + close() + } catch (e: RuntimeException) { + throw e + } catch (_: Exception) {} +} + +internal fun FileSystem.createFile(file: Path, mustCreate: Boolean = false) { + if (mustCreate) { + sink(file, mustCreate = true).closeQuietly() + } else if (!exists(file)) { + sink(file).closeQuietly() + } +} + +internal fun FileSystem.createTempFile(): Path { + var tempFile: Path + do { + tempFile = FileSystem.SYSTEM_TEMPORARY_DIRECTORY / "tmp_${Random.nextULong()}" + } while (exists(tempFile)) + createFile(tempFile, mustCreate = true) + return tempFile +} + +internal fun FileSystem.deleteContents(directory: Path) { + var exception: IOException? = null + val files = try { + list(directory) + } catch (_: FileNotFoundException) { + return + } + for (file in files) { + try { + if (metadata(file).isDirectory) { + deleteContents(file) + } + delete(file) + } catch (e: IOException) { + if (exception == null) { + exception = e + } + } + } + if (exception != null) { + throw exception + } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt deleted file mode 100644 index c486e0b4..00000000 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruDiskCache.kt +++ /dev/null @@ -1,847 +0,0 @@ -//package io.github.alexzhirkevich.compottie -// -// -//import coil3.util.LruMutableMap -//import coil3.util.createFile -//import coil3.util.deleteContents -//import coil3.util.forEachIndices -//import kotlinx.atomicfu.locks.SynchronizedObject -//import kotlinx.atomicfu.locks.synchronized -//import kotlinx.coroutines.CoroutineDispatcher -//import kotlinx.coroutines.CoroutineScope -//import kotlinx.coroutines.ExperimentalCoroutinesApi -//import kotlinx.coroutines.SupervisorJob -//import kotlinx.coroutines.cancel -//import kotlinx.coroutines.launch -//import okio.BufferedSink -//import okio.Closeable -//import okio.EOFException -//import okio.FileSystem -//import okio.ForwardingFileSystem -//import okio.IOException -//import okio.Path -//import okio.Sink -//import okio.blackholeSink -//import okio.buffer -// -///** -// * A cache that uses a bounded amount of space on a filesystem. Each cache entry has a string key -// * and a fixed number of values. Each key must match the regex `[a-z0-9_-]{1,64}`. Values are byte -// * sequences, accessible as streams or files. Each value must be between `0` and `Int.MAX_VALUE` -// * bytes in length. -// * -// * The cache stores its data in a directory on the filesystem. This directory must be exclusive to -// * the cache; the cache may delete or overwrite files from its directory. It is an error for -// * multiple processes to use the same cache directory at the same time. -// * -// * This cache limits the number of bytes that it will store on the filesystem. When the number of -// * stored bytes exceeds the limit, the cache will remove entries in the background until the limit -// * is satisfied. The limit is not strict: the cache may temporarily exceed it while waiting for -// * files to be deleted. The limit does not include filesystem overhead or the cache journal so -// * space-sensitive applications should set a conservative limit. -// * -// * Clients call [edit] to create or update the values of an entry. An entry may have only one editor -// * at one time; if a value is not available to be edited then [edit] will return null. -// * -// * * When an entry is being **created** it is necessary to supply a full set of values; the empty -// * value should be used as a placeholder if necessary. -// * -// * * When an entry is being **edited**, it is not necessary to supply data for every value; values -// * default to their previous value. -// * -// * Every [edit] call must be matched by a call to [Editor.commit] or [Editor.abort]. Committing is -// * atomic: a read observes the full set of values as they were before or after the commit, but never -// * a mix of values. -// * -// * Clients call [get] to read a snapshot of an entry. The read will observe the value at the time -// * that [get] was called. Updates and removals after the call do not impact ongoing reads. -// * -// * This class is tolerant of some I/O errors. If files are missing from the filesystem, the -// * corresponding entries will be dropped from the cache. If an error occurs while writing a cache -// * value, the edit will fail silently. Callers should handle other problems by catching -// * `IOException` and responding appropriately. -// * -// * @constructor Create a cache which will reside in [directory]. This cache is lazily initialized on -// * first access and will be created if it does not exist. -// * @param directory a writable directory. -// * @param cleanupDispatcher the dispatcher to run cache size trim operations on. -// * @param valueCount the number of values per cache entry. Must be positive. -// * @param maxSize the maximum number of bytes this cache should use to store. -// */ -//internal class DiskLruCache( -// fileSystem: FileSystem, -// private val directory: Path, -// cleanupDispatcher: CoroutineDispatcher, -// private val maxSize: Long, -// private val appVersion: Int, -// private val valueCount: Int, -//) : Closeable { -// -// /* -// * This cache uses a journal file named "journal". A typical journal file looks like this: -// * -// * libcore.io.DiskLruCache -// * 1 -// * 100 -// * 2 -// * -// * CLEAN 3400330d1dfc7f3f7f4b8d4d803dfcf6 832 21054 -// * DIRTY 335c4c6028171cfddfbaae1a9c313c52 -// * CLEAN 335c4c6028171cfddfbaae1a9c313c52 3934 2342 -// * REMOVE 335c4c6028171cfddfbaae1a9c313c52 -// * DIRTY 1ab96a171faeeee38496d8b330771a7a -// * CLEAN 1ab96a171faeeee38496d8b330771a7a 1600 234 -// * READ 335c4c6028171cfddfbaae1a9c313c52 -// * READ 3400330d1dfc7f3f7f4b8d4d803dfcf6 -// * -// * The first five lines of the journal form its header. They are the constant string -// * "libcore.io.DiskLruCache", the disk cache's version, the application's version, the value -// * count, and a blank line. -// * -// * Each of the subsequent lines in the file is a record of the state of a cache entry. Each line -// * contains space-separated values: a state, a key, and optional state-specific values. -// * -// * o DIRTY lines track that an entry is actively being created or updated. Every successful -// * DIRTY action should be followed by a CLEAN or REMOVE action. DIRTY lines without a matching -// * CLEAN or REMOVE indicate that temporary files may need to be deleted. -// * -// * o CLEAN lines track a cache entry that has been successfully published and may be read. A -// * publish line is followed by the lengths of each of its values. -// * -// * o READ lines track accesses for LRU. -// * -// * o REMOVE lines track entries that have been deleted. -// * -// * The journal file is appended to as cache operations occur. The journal may occasionally be -// * compacted by dropping redundant lines. A temporary file named "journal.tmp" will be used during -// * compaction; that file should be deleted if it exists when the cache is opened. -// */ -// -// init { -// require(maxSize > 0L) { "maxSize <= 0" } -// require(valueCount > 0) { "valueCount <= 0" } -// } -// -// private val journalFile = directory / JOURNAL_FILE -// private val journalFileTmp = directory / JOURNAL_FILE_TMP -// private val journalFileBackup = directory / JOURNAL_FILE_BACKUP -// private val lruEntries = LruMutableMap() -// private val cleanupScope = -// @OptIn(ExperimentalCoroutinesApi::class) -// CoroutineScope(SupervisorJob() + cleanupDispatcher.limitedParallelism(1)) -// private val lock = SynchronizedObject() -// private var size = 0L -// private var operationsSinceRewrite = 0 -// private var journalWriter: BufferedSink? = null -// private var hasJournalErrors = false -// private var initialized = false -// private var closed = false -// private var mostRecentTrimFailed = false -// private var mostRecentRebuildFailed = false -// -// private val fileSystem = object : ForwardingFileSystem(fileSystem) { -// override fun sink(file: Path, mustCreate: Boolean): Sink { -// // Ensure the parent directory exists. -// file.parent?.let(::createDirectories) -// return super.sink(file, mustCreate) -// } -// } -// -// fun initialize() = synchronized(lock) { -// if (initialized) return -// -// // If a temporary file exists, delete it. -// fileSystem.delete(journalFileTmp) -// -// // If a backup file exists, use it instead. -// if (fileSystem.exists(journalFileBackup)) { -// // If journal file also exists just delete backup file. -// if (fileSystem.exists(journalFile)) { -// fileSystem.delete(journalFileBackup) -// } else { -// fileSystem.atomicMove(journalFileBackup, journalFile) -// } -// } -// -// // Prefer to pick up where we left off. -// if (fileSystem.exists(journalFile)) { -// try { -// readJournal() -// processJournal() -// initialized = true -// return -// } catch (_: IOException) { -// // The journal is corrupt. -// } -// -// // The cache is corrupted; attempt to delete the contents of the directory. -// // This can throw and we'll let that propagate out as it likely means there -// // is a severe filesystem problem. -// try { -// delete() -// } finally { -// closed = false -// } -// } -// -// writeJournal() -// initialized = true -// } -// -// /** -// * Reads the journal and initializes [lruEntries]. -// */ -// private fun readJournal() { -// fileSystem.read(journalFile) { -// val magic = readUtf8LineStrict() -// val version = readUtf8LineStrict() -// val appVersionString = readUtf8LineStrict() -// val valueCountString = readUtf8LineStrict() -// val blank = readUtf8LineStrict() -// -// if (MAGIC != magic || -// VERSION != version || -// appVersion.toString() != appVersionString || -// valueCount.toString() != valueCountString || -// blank.isNotEmpty() -// ) { -// throw IOException("unexpected journal header: " + -// "[$magic, $version, $appVersionString, $valueCountString, $blank]") -// } -// -// var lineCount = 0 -// while (true) { -// try { -// readJournalLine(readUtf8LineStrict()) -// lineCount++ -// } catch (_: EOFException) { -// break // End of journal. -// } -// } -// -// operationsSinceRewrite = lineCount - lruEntries.size -// -// // If we ended on a truncated line, rebuild the journal before appending to it. -// if (!exhausted()) { -// writeJournal() -// } else { -// journalWriter = newJournalWriter() -// } -// } -// } -// -// private fun newJournalWriter(): BufferedSink { -// val fileSink = fileSystem.appendingSink(journalFile) -// val faultHidingSink = FaultHidingSink(fileSink) { -// hasJournalErrors = true -// } -// return faultHidingSink.buffer() -// } -// -// private fun readJournalLine(line: String) { -// val firstSpace = line.indexOf(' ') -// if (firstSpace == -1) throw IOException("unexpected journal line: $line") -// -// val keyBegin = firstSpace + 1 -// val secondSpace = line.indexOf(' ', keyBegin) -// val key: String -// if (secondSpace == -1) { -// key = line.substring(keyBegin) -// if (firstSpace == REMOVE.length && line.startsWith(REMOVE)) { -// lruEntries.remove(key) -// return -// } -// } else { -// key = line.substring(keyBegin, secondSpace) -// } -// -// val entry = lruEntries.getOrPut(key) { Entry(key) } -// when { -// secondSpace != -1 && firstSpace == CLEAN.length && line.startsWith(CLEAN) -> { -// val parts = line.substring(secondSpace + 1).split(' ') -// entry.readable = true -// entry.currentEditor = null -// entry.setLengths(parts) -// } -// secondSpace == -1 && firstSpace == DIRTY.length && line.startsWith(DIRTY) -> { -// entry.currentEditor = Editor(entry) -// } -// secondSpace == -1 && firstSpace == READ.length && line.startsWith(READ) -> { -// // This work was already done by calling lruEntries.get(). -// } -// else -> throw IOException("unexpected journal line: $line") -// } -// } -// -// /** -// * Computes the current size and collects garbage as a part of initializing the cache. -// * Dirty entries are assumed to be inconsistent and will be deleted. -// */ -// private fun processJournal() { -// var size = 0L -// val iterator = lruEntries.values.iterator() -// while (iterator.hasNext()) { -// val entry = iterator.next() -// if (entry.currentEditor == null) { -// for (i in 0 until valueCount) { -// size += entry.lengths[i] -// } -// } else { -// entry.currentEditor = null -// for (i in 0 until valueCount) { -// fileSystem.delete(entry.cleanFiles[i]) -// fileSystem.delete(entry.dirtyFiles[i]) -// } -// iterator.remove() -// } -// } -// this.size = size -// } -// -// /** -// * Writes [lruEntries] to a new journal file. This replaces the current journal if it exists. -// */ -// private fun writeJournal() = synchronized(lock) { -// journalWriter?.close() -// -// fileSystem.write(journalFileTmp) { -// writeUtf8(MAGIC).writeByte('\n'.code) -// writeUtf8(VERSION).writeByte('\n'.code) -// writeDecimalLong(appVersion.toLong()).writeByte('\n'.code) -// writeDecimalLong(valueCount.toLong()).writeByte('\n'.code) -// writeByte('\n'.code) -// -// for (entry in lruEntries.values) { -// if (entry.currentEditor != null) { -// writeUtf8(DIRTY) -// writeByte(' '.code) -// writeUtf8(entry.key) -// writeByte('\n'.code) -// } else { -// writeUtf8(CLEAN) -// writeByte(' '.code) -// writeUtf8(entry.key) -// entry.writeLengths(this) -// writeByte('\n'.code) -// } -// } -// } -// -// if (fileSystem.exists(journalFile)) { -// fileSystem.atomicMove(journalFile, journalFileBackup) -// fileSystem.atomicMove(journalFileTmp, journalFile) -// fileSystem.delete(journalFileBackup) -// } else { -// fileSystem.atomicMove(journalFileTmp, journalFile) -// } -// -// journalWriter = newJournalWriter() -// operationsSinceRewrite = 0 -// hasJournalErrors = false -// mostRecentRebuildFailed = false -// } -// -// /** -// * Returns a snapshot of the entry named [key], or null if it doesn't exist or is not currently -// * readable. If a value is returned, it is moved to the head of the LRU queue. -// */ -// operator fun get(key: String): Snapshot? = synchronized(lock) { -// checkNotClosed() -// validateKey(key) -// initialize() -// -// val snapshot = lruEntries[key]?.snapshot() ?: return null -// -// operationsSinceRewrite++ -// journalWriter!!.apply { -// writeUtf8(READ) -// writeByte(' '.code) -// writeUtf8(key) -// writeByte('\n'.code) -// } -// -// if (journalRewriteRequired()) { -// launchCleanup() -// } -// -// return snapshot -// } -// -// /** Returns an editor for the entry named [key], or null if another edit is in progress. */ -// fun edit(key: String): Editor? = synchronized(lock) { -// checkNotClosed() -// validateKey(key) -// initialize() -// -// var entry = lruEntries[key] -// -// if (entry?.currentEditor != null) { -// return null // Another edit is in progress. -// } -// -// if (entry != null && entry.lockingSnapshotCount != 0) { -// return null // We can't write this file because a reader is still reading it. -// } -// -// if (mostRecentTrimFailed || mostRecentRebuildFailed) { -// // The OS has become our enemy! If the trim job failed, it means we are storing more -// // data than requested by the user. Do not allow edits so we do not go over that limit -// // any further. If the journal rebuild failed, the journal writer will not be active, -// // meaning we will not be able to record the edit, causing file leaks. In both cases, -// // we want to retry the clean up so we can get out of this state! -// launchCleanup() -// return null -// } -// -// // Flush the journal before creating files to prevent file leaks. -// journalWriter!!.apply { -// writeUtf8(DIRTY) -// writeByte(' '.code) -// writeUtf8(key) -// writeByte('\n'.code) -// flush() -// } -// -// if (hasJournalErrors) { -// return null // Don't edit; the journal can't be written. -// } -// -// if (entry == null) { -// entry = Entry(key) -// lruEntries[key] = entry -// } -// val editor = Editor(entry) -// entry.currentEditor = editor -// return editor -// } -// -// /** -// * Returns the number of bytes currently being used to store the values in this cache. -// * This may be greater than the max size if a background deletion is pending. -// */ -// fun size(): Long = synchronized(lock) { -// initialize() -// return size -// } -// -// private fun completeEdit(editor: Editor, success: Boolean) = synchronized(lock) { -// val entry = editor.entry -// check(entry.currentEditor == editor) -// -// if (success && !entry.zombie) { -// // Ensure all files that have been written to have an associated dirty file. -// for (i in 0 until valueCount) { -// if (editor.written[i] && !fileSystem.exists(entry.dirtyFiles[i])) { -// editor.abort() -// return -// } -// } -// -// // Replace the clean files with the dirty ones. -// for (i in 0 until valueCount) { -// val dirty = entry.dirtyFiles[i] -// val clean = entry.cleanFiles[i] -// if (fileSystem.exists(dirty)) { -// fileSystem.atomicMove(dirty, clean) -// } else { -// // Ensure every entry is complete. -// fileSystem.createFile(entry.cleanFiles[i]) -// } -// val oldLength = entry.lengths[i] -// val newLength = fileSystem.metadata(clean).size ?: 0 -// entry.lengths[i] = newLength -// size = size - oldLength + newLength -// } -// } else { -// // Discard any dirty files. -// for (i in 0 until valueCount) { -// fileSystem.delete(entry.dirtyFiles[i]) -// } -// } -// -// entry.currentEditor = null -// if (entry.zombie) { -// removeEntry(entry) -// return -// } -// -// operationsSinceRewrite++ -// journalWriter!!.apply { -// if (success || entry.readable) { -// entry.readable = true -// writeUtf8(CLEAN) -// writeByte(' '.code) -// writeUtf8(entry.key) -// entry.writeLengths(this) -// writeByte('\n'.code) -// } else { -// lruEntries.remove(entry.key) -// writeUtf8(REMOVE) -// writeByte(' '.code) -// writeUtf8(entry.key) -// writeByte('\n'.code) -// } -// flush() -// } -// -// if (size > maxSize || journalRewriteRequired()) { -// launchCleanup() -// } -// } -// -// /** -// * We rewrite [lruEntries] to the on-disk journal after a sufficient number of operations. -// */ -// private fun journalRewriteRequired() = operationsSinceRewrite >= 2000 -// -// /** -// * Drops the entry for [key] if it exists and can be removed. If the entry for [key] is -// * currently being edited, that edit will complete normally but its value will not be stored. -// * -// * @return true if an entry was removed. -// */ -// fun remove(key: String): Boolean = synchronized(lock) { -// checkNotClosed() -// validateKey(key) -// initialize() -// -// val entry = lruEntries[key] ?: return false -// val removed = removeEntry(entry) -// if (removed && size <= maxSize) mostRecentTrimFailed = false -// return removed -// } -// -// private fun removeEntry(entry: Entry): Boolean { -// // If we can't delete files that are still open, mark this entry as a zombie so its files -// // will be deleted when those files are closed. -// if (entry.lockingSnapshotCount > 0) { -// // Mark this entry as 'DIRTY' so that if the process crashes this entry won't be used. -// journalWriter?.apply { -// writeUtf8(DIRTY) -// writeByte(' '.code) -// writeUtf8(entry.key) -// writeByte('\n'.code) -// flush() -// } -// } -// if (entry.lockingSnapshotCount > 0 || entry.currentEditor != null) { -// entry.zombie = true -// return true -// } -// -// for (i in 0 until valueCount) { -// fileSystem.delete(entry.cleanFiles[i]) -// size -= entry.lengths[i] -// entry.lengths[i] = 0 -// } -// -// operationsSinceRewrite++ -// journalWriter?.apply { -// writeUtf8(REMOVE) -// writeByte(' '.code) -// writeUtf8(entry.key) -// writeByte('\n'.code) -// } -// lruEntries.remove(entry.key) -// -// if (journalRewriteRequired()) { -// launchCleanup() -// } -// -// return true -// } -// -// private fun checkNotClosed() { -// check(!closed) { "cache is closed" } -// } -// -// /** Closes this cache. Stored values will remain on the filesystem. */ -// override fun close() = synchronized(lock) { -// if (!initialized || closed) { -// closed = true -// return -// } -// -// // Copying for concurrent iteration. -// for (entry in lruEntries.values.toTypedArray()) { -// // Prevent the edit from completing normally. -// entry.currentEditor?.detach() -// } -// -// trimToSize() -// cleanupScope.cancel() -// journalWriter!!.close() -// journalWriter = null -// closed = true -// } -// -// fun flush() = synchronized(lock) { -// if (!initialized) return -// -// checkNotClosed() -// trimToSize() -// journalWriter!!.flush() -// } -// -// private fun trimToSize() { -// while (size > maxSize) { -// if (!removeOldestEntry()) return -// } -// mostRecentTrimFailed = false -// } -// -// /** Returns true if an entry was removed. This will return false if all entries are zombies. */ -// private fun removeOldestEntry(): Boolean { -// for (toEvict in lruEntries.values) { -// if (!toEvict.zombie) { -// removeEntry(toEvict) -// return true -// } -// } -// return false -// } -// -// /** -// * Closes the cache and deletes all of its stored values. This will delete all files in the -// * cache directory including files that weren't created by the cache. -// */ -// private fun delete() { -// close() -// fileSystem.deleteContents(directory) -// } -// -// /** -// * Deletes all stored values from the cache. In-flight edits will complete normally but their -// * values will not be stored. -// */ -// fun evictAll() = synchronized(lock) { -// initialize() -// // Copying for concurrent iteration. -// for (entry in lruEntries.values.toTypedArray()) { -// removeEntry(entry) -// } -// mostRecentTrimFailed = false -// } -// -// /** -// * Launch an asynchronous operation to trim files from the disk cache and update the journal. -// */ -// private fun launchCleanup() { -// cleanupScope.launch { -// synchronized(lock) { -// if (!initialized || closed) return@launch -// try { -// trimToSize() -// } catch (_: IOException) { -// mostRecentTrimFailed = true -// } -// try { -// if (journalRewriteRequired()) { -// writeJournal() -// } -// } catch (_: IOException) { -// mostRecentRebuildFailed = true -// journalWriter = blackholeSink().buffer() -// } -// } -// } -// } -// -// private fun validateKey(key: String) { -// require(LEGAL_KEY_PATTERN matches key) { -// "keys must match regex [a-z0-9_-]{1,120}: \"$key\"" -// } -// } -// -// /** A snapshot of the values for an entry. */ -// inner class Snapshot(val entry: Entry) : Closeable { -// -// private var closed = false -// -// fun file(index: Int): Path { -// check(!closed) { "snapshot is closed" } -// return entry.cleanFiles[index] -// } -// -// override fun close() { -// if (!closed) { -// closed = true -// synchronized(lock) { -// entry.lockingSnapshotCount-- -// if (entry.lockingSnapshotCount == 0 && entry.zombie) { -// removeEntry(entry) -// } -// } -// } -// } -// -// fun closeAndEdit(): Editor? { -// synchronized(lock) { -// close() -// return edit(entry.key) -// } -// } -// } -// -// /** Edits the values for an entry. */ -// inner class Editor(val entry: Entry) { -// -// private var closed = false -// -// /** -// * True for a given index if that index's file has been written to. -// */ -// val written = BooleanArray(valueCount) -// -// /** -// * Get the file to read from/write to for [index]. -// * This file will become the new value for this index if committed. -// */ -// fun file(index: Int): Path { -// synchronized(lock) { -// check(!closed) { "editor is closed" } -// written[index] = true -// return entry.dirtyFiles[index].also(fileSystem::createFile) -// } -// } -// -// /** -// * Prevents this editor from completing normally. -// * This is necessary if the target entry is evicted while this editor is active. -// */ -// fun detach() { -// if (entry.currentEditor == this) { -// entry.zombie = true // We can't delete it until the current edit completes. -// } -// } -// -// /** -// * Commits this edit so it is visible to readers. -// * This releases the edit lock so another edit may be started on the same key. -// */ -// fun commit() = complete(true) -// -// /** -// * Commit the edit and open a new [Snapshot] atomically. -// */ -// fun commitAndGet(): Snapshot? { -// synchronized(lock) { -// commit() -// return get(entry.key) -// } -// } -// -// /** -// * Aborts this edit. -// * This releases the edit lock so another edit may be started on the same key. -// */ -// fun abort() = complete(false) -// -// /** -// * Complete this edit either successfully or unsuccessfully. -// */ -// private fun complete(success: Boolean) { -// synchronized(lock) { -// check(!closed) { "editor is closed" } -// if (entry.currentEditor == this) { -// completeEdit(this, success) -// } -// closed = true -// } -// } -// } -// -// inner class Entry(val key: String) { -// -// /** Lengths of this entry's files. */ -// val lengths = LongArray(valueCount) -// val cleanFiles = ArrayList(valueCount) -// val dirtyFiles = ArrayList(valueCount) -// -// /** True if this entry has ever been published. */ -// var readable = false -// -// /** True if this entry must be deleted when the current edit or read completes. */ -// var zombie = false -// -// /** -// * The ongoing edit or null if this entry is not being edited. When setting this to null -// * the entry must be removed if it is a zombie. -// */ -// var currentEditor: Editor? = null -// -// /** -// * Snapshots currently reading this entry before a write or delete can proceed. When -// * decrementing this to zero, the entry must be removed if it is a zombie. -// */ -// var lockingSnapshotCount = 0 -// -// init { -// // The names are repetitive so re-use the same builder to avoid allocations. -// val fileBuilder = StringBuilder(key).append('.') -// val truncateTo = fileBuilder.length -// for (i in 0 until valueCount) { -// fileBuilder.append(i) -// cleanFiles += directory / fileBuilder.toString() -// fileBuilder.append(".tmp") -// dirtyFiles += directory / fileBuilder.toString() -// fileBuilder.setLength(truncateTo) -// } -// } -// -// /** Set lengths using decimal numbers like "10123". */ -// fun setLengths(strings: List) { -// if (strings.size != valueCount) { -// throw IOException("unexpected journal line: $strings") -// } -// -// try { -// for (i in strings.indices) { -// lengths[i] = strings[i].toLong() -// } -// } catch (_: NumberFormatException) { -// throw IOException("unexpected journal line: $strings") -// } -// } -// -// /** Append space-prefixed lengths to [writer]. */ -// fun writeLengths(writer: BufferedSink) { -// for (length in lengths) { -// writer.writeByte(' '.code).writeDecimalLong(length) -// } -// } -// -// /** Returns a snapshot of this entry. */ -// fun snapshot(): Snapshot? { -// if (!readable) return null -// if (currentEditor != null || zombie) return null -// -// // Ensure that the entry's files still exist. -// cleanFiles.forEachIndices { file -> -// if (!fileSystem.exists(file)) { -// // Since the entry is no longer valid, remove it so the metadata is accurate -// // (i.e. the cache size). -// try { -// removeEntry(this) -// } catch (_: IOException) {} -// return null -// } -// } -// lockingSnapshotCount++ -// return Snapshot(this) -// } -// } -// -// companion object { -// @VisibleForTesting internal const val JOURNAL_FILE = "journal" -// @VisibleForTesting internal const val JOURNAL_FILE_TMP = "journal.tmp" -// @VisibleForTesting internal const val JOURNAL_FILE_BACKUP = "journal.bkp" -// @VisibleForTesting internal const val MAGIC = "libcore.io.DiskLruCache" -// @VisibleForTesting internal const val VERSION = "1" -// private const val CLEAN = "CLEAN" -// private const val DIRTY = "DIRTY" -// private const val REMOVE = "REMOVE" -// private const val READ = "READ" -// private val LEGAL_KEY_PATTERN = "[a-z0-9_-]{1,120}".toRegex() -// } -//} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt new file mode 100644 index 00000000..2dbfd257 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt @@ -0,0 +1,71 @@ +package io.github.alexzhirkevich.compottie + +import kotlinx.coroutines.CoroutineDispatcher +import okio.ByteString.Companion.encodeUtf8 +import okio.FileSystem +import okio.Path + +internal class RealDiskCache( + override val maxSize: Long, + override val directory: Path, + override val fileSystem: FileSystem, + cleanupDispatcher: CoroutineDispatcher, +) : DiskCache { + + private val cache = DiskLruCache( + fileSystem = fileSystem, + directory = directory, + cleanupDispatcher = cleanupDispatcher, + maxSize = maxSize, + appVersion = 2, + valueCount = 2, + ) + + override val size get() = cache.size() + + override fun openSnapshot(key: String): DiskCache.Snapshot? { + return cache[key.hash()]?.let(RealDiskCache::RealSnapshot) + } + + override fun openEditor(key: String): DiskCache.Editor? { + return cache.edit(key.hash())?.let(RealDiskCache::RealEditor) + } + + override fun remove(key: String): Boolean { + return cache.remove(key.hash()) + } + + override fun clear() { + cache.evictAll() + } + + override fun shutdown() { + cache.closeQuietly() + } + + private fun String.hash() = encodeUtf8().sha256().hex() + + private class RealSnapshot(private val snapshot: DiskLruCache.Snapshot) : DiskCache.Snapshot { + + override val metadata get() = snapshot.file(ENTRY_METADATA) + override val data get() = snapshot.file(ENTRY_DATA) + + override fun close() = snapshot.close() + override fun closeAndOpenEditor() = snapshot.closeAndEdit()?.let(RealDiskCache::RealEditor) + } + + private class RealEditor(private val editor: DiskLruCache.Editor) : DiskCache.Editor { + + override val metadata get() = editor.file(ENTRY_METADATA) + override val data get() = editor.file(ENTRY_DATA) + + override fun commit() = editor.commit() + override fun commitAndOpenSnapshot() = editor.commitAndGet()?.let(RealDiskCache::RealSnapshot) + override fun abort() = editor.abort() + } + + companion object { + private const val ENTRY_METADATA = 0 + private const val ENTRY_DATA = 1 + } +} \ No newline at end of file diff --git a/compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt b/compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt new file mode 100644 index 00000000..bcbdbc81 --- /dev/null +++ b/compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie + +import okio.FileSystem +import okio.SYSTEM + +internal actual fun defaultFileSystem() : FileSystem = FileSystem.SYSTEM \ No newline at end of file diff --git a/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt b/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt new file mode 100644 index 00000000..5e98ec24 --- /dev/null +++ b/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie + +import okio.FileSystem +import okio.fakefilesystem.FakeFileSystem + +internal actual fun defaultFileSystem() : FileSystem = FakeFileSystem() \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt new file mode 100644 index 00000000..1383b90f --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt @@ -0,0 +1,12 @@ +package io.github.alexzhirkevich.compottie + +import android.content.Context +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +actual typealias LottieContext = Context + +@Composable +actual fun currentLottieContext() : LottieContext { + return LocalContext.current +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt index a8614e94..f60c56c3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt @@ -3,4 +3,5 @@ package io.github.alexzhirkevich.compottie import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers -internal expect val Dispatchers.IODispatcher : CoroutineDispatcher \ No newline at end of file +@InternalCompottieApi +expect val Dispatchers.IODispatcher : CoroutineDispatcher \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt index 0771455c..8bca4972 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt @@ -1,6 +1,26 @@ package io.github.alexzhirkevich.compottie +import io.github.alexzhirkevich.compottie.internal.LottieData +import io.github.alexzhirkevich.compottie.internal.LottieJson +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + object L { var logger : LottieLogger = LottieLogger.Default + + /** + * Warmup JSON parser. The first animation parsing will be much faster + * */ + fun warmup() { +// LottieJson.decodeFromString(warmupAnim) + } +} + + +private val warmupAnim by lazy { + """ + {"v":"5.7.1","fr":60,"ip":0,"op":181,"w":500,"h":500,"nm":"Comp 1","ddd":0,"fonts":{"list":[{"fPath":"","fFamily":"","fStyle":"","fName":"","origin":3}]},"assets":[{"id":"comp_0","layers":[]},{"id":"blep","h":512,"w":512,"u":"/images/","p":"blep.png","e":1}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,268,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[27,27,100],"ix":6}},"ao":0,"w":2000,"h":2000,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":1,"ty":4,"nm":"рука 1.1 Outlines 2","cl":"1","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[195.262,126.787,0],"ix":2},"a":{"a":0,"k":[195.262,126.787,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"mode":"a","o":{"a":0,"k":100},"inv":false,"x":{"a":0,"k":0},"pt":{"a":0,"k":{"c":true,"v":[[247.109,125.719],[66.109,306.719],[424.109,389.719]],"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]]}}}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.885,0.104],[-0.781,0.233]],"o":[[-0.629,-0.074],[0.782,-0.232]],"v":[[-0.258,-2.695],[0.105,2.535]],"c":true},"ix":2},"nm":"Path 1","hd":false},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"Trim Paths 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0,"y":1},"s":[0],"t":5},{"s":[100],"t":22}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.463,"y":0},"i":{"x":0.853,"y":1},"s":[0],"t":22},{"s":[100],"t":36}],"ix":1},"m":1},{"ty":"mm","mm":4,"nm":"Merge Paths 1","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","hd":false},{"ty":"tr","p":{"a":0,"k":[192.227,107.118],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"nm":"Text Layer","ty":5,"sr":1,"ks":{"p":{"k":[5,80],"a":0}},"ip":0,"op":120,"st":0,"t":{"a":[],"d":{"k":[{"s":{"f":"Ubuntu Light Italic","fc":[0,0,0],"s":100,"t":"Hello","j":0,"sc":[0,0,0],"sw":0},"t":0}]},"m":{"a":{"k":[0,0],"a":0}},"p":{}}},{"ddd":0,"ty":2,"sr":1,"ks":{"a":{"k":[0,0],"a":0},"p":{"k":[0,0],"a":0},"s":{"k":[100,100],"a":0},"r":{"k":0,"a":0},"o":{"k":100,"a":0},"sk":{"k":0,"a":0},"sa":{"k":0,"a":0}},"ao":0,"ip":0,"op":60,"st":0,"bm":0,"ind":0,"refId":"blep"}],"markers":[]} + """.trimIndent() } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt index a4038e62..e3afb55e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt @@ -299,7 +299,7 @@ private class LottieAnimatableImpl : LottieAnimatable { val minProgress = clipSpec?.getMinProgress(composition) ?: 0f val maxProgress = clipSpec?.getMaxProgress(composition) ?: 1f - val dProgress = dNanos / 1_000_000f / composition.duration * frameSpeed + val dProgress = dNanos / 1_000_000f / composition.duration.inWholeMilliseconds * frameSpeed val progressPastEndOfIteration = when { frameSpeed < 0 -> minProgress - (progressRaw + dProgress) else -> progressRaw + dProgress - maxProgress diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt index cdfdcea8..eae4cda3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimation.kt @@ -9,8 +9,8 @@ import androidx.compose.ui.layout.ContentScale @Composable @Deprecated( - "Use Image with rememberLottiePainter(...) instead", - replaceWith = ReplaceWith( + "Use Image with rememberLottiePainter(...) instead. Will be removed in 2.0", + ReplaceWith( "Image(rememberLottiePainter(composition,progress),null,modifier,alignment,contentScale)", "androidx.compose.foundation.Image", "io.github.alexzhirkevich.compottie.rememberLottiePainter" @@ -34,12 +34,12 @@ fun LottieAnimation( } @Deprecated( - "Use Image with rememberLottiePainter(...) instead", - replaceWith = ReplaceWith( + "Use Image with rememberLottiePainter(...) instead.Will be removed in 2.0", + ReplaceWith( "Image(rememberLottiePainter(composition,isPlaying,restartOnPlay,reverseOnRepeat,clipSpec,speed,iterations),null,modifier,alignment,contentScale)", "androidx.compose.foundation.Image", "io.github.alexzhirkevich.compottie.rememberLottiePainter" - ) + ), ) @Composable fun LottieAnimation( @@ -48,8 +48,8 @@ fun LottieAnimation( isPlaying: Boolean = true, restartOnPlay: Boolean = true, clipSpec: LottieClipSpec? = null, - speed: Float = 1f, - iterations: Int = 1, + speed: Float = composition?.speed ?: 1f, + iterations: Int = composition?.iterations ?: 1, reverseOnRepeat: Boolean = false, alignment: Alignment = Alignment.Center, contentScale: ContentScale = ContentScale.Fit, @@ -63,7 +63,8 @@ fun LottieAnimation( reverseOnRepeat = reverseOnRepeat, clipSpec = clipSpec, speed = speed, - iterations = iterations + iterations = iterations, + clipToCompositionBounds = clipToCompositionBounds ), contentDescription = null, modifier = modifier, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt index ef0fb1cf..cd75b1d3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt @@ -22,7 +22,7 @@ sealed class LottieClipSpec { * should play the max frame or stop one frame before it. */ @Immutable - class Frame constructor( + class Frame( val min: Int?, val max: Int?, val maxInclusive: Boolean, @@ -80,7 +80,7 @@ sealed class LottieClipSpec { */ @Immutable - class Progress constructor( + class Progress( val min: Float, val max: Float, ) : LottieClipSpec() { @@ -122,7 +122,7 @@ sealed class LottieClipSpec { * it to false to stop the animation at the frame before maxMarker. */ @Immutable - class Markers constructor( + class Markers( val min: String?, val max: String?, val maxInclusive: Boolean diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 07689845..b72b0c95 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -16,7 +16,6 @@ import io.github.alexzhirkevich.compottie.assets.LottieFont import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset -import io.github.alexzhirkevich.compottie.internal.durationMillis import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async @@ -27,25 +26,50 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext +import kotlin.time.Duration +import kotlin.time.Duration.Companion.milliseconds @Stable class LottieComposition internal constructor( internal val lottieData: LottieData, ) { + + /** + * Frame when animation becomes visible + * */ val startFrame: Float get() = lottieData.inPoint + /** + * Frame when animation becomes no longer visible + * */ val endFrame: Float get() = lottieData.outPoint - val duration: Float get() = lottieData.durationMillis + /** + * Animation duration + * */ + val duration: Duration = ((endFrame - startFrame) / frameRate * 1000).toInt().milliseconds + /** + * Animation frame rate + * */ val frameRate: Float get() = lottieData.frameRate - @InternalCompottieApi + /** + * Some animations may contain predefined number of interactions. + * It will be used as a default value for the LottiePainter + * */ var iterations: Int by mutableStateOf(1) + @InternalCompottieApi + set - @InternalCompottieApi + /** + * Some animations may contain predefined speed multiplier. + * It will be used as a default value for the LottiePainter + * */ var speed: Float by mutableFloatStateOf(1f) + @InternalCompottieApi + set internal var fontsByFamily: Map = emptyMap() @@ -133,9 +157,11 @@ class LottieComposition internal constructor( lottieData.markers.firstOrNull { it.name == name } companion object { - fun parse(json: String) = LottieComposition( - lottieData = LottieJson.decodeFromString(json), - ) + fun parse(json: String) : LottieComposition { + return LottieComposition( + lottieData = LottieJson.decodeFromString(json), + ) + } } } @@ -144,6 +170,7 @@ class LottieComposition internal constructor( * * [spec] should be remembered * */ +@OptIn(InternalCompottieApi::class) @Composable @Stable fun rememberLottieComposition( @@ -174,23 +201,26 @@ fun rememberLottieComposition( * * Instance produces by [spec] will be remembered until [keys] are changed * */ +@OptIn(InternalCompottieApi::class) @Composable @Stable fun rememberLottieComposition( vararg keys : Any?, - spec : suspend () -> LottieCompositionSpec, + spec : suspend (LottieContext) -> LottieCompositionSpec, ) : LottieCompositionResult { val updatedSpec by rememberUpdatedState(spec) - val result = remember(*keys) { + val context = currentLottieContext() + + val result = remember(*keys,context) { LottieCompositionResultImpl() } LaunchedEffect(result) { withContext(Dispatchers.IODispatcher) { try { - result.complete(updatedSpec().load()) + result.complete(updatedSpec(context).load()) } catch (c: CancellationException) { throw c } catch (t: Throwable) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.kt new file mode 100644 index 00000000..323701b7 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Composable + +expect abstract class LottieContext + +@Composable +expect fun currentLottieContext() : LottieContext \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 6ea1efb4..9d15fbd9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -6,7 +6,6 @@ import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState -import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment @@ -27,7 +26,6 @@ import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import kotlin.math.roundToInt -@OptIn(InternalCompottieApi::class) @Composable fun rememberLottiePainter( composition : LottieComposition?, @@ -38,7 +36,9 @@ fun rememberLottiePainter( speed: Float = composition?.speed ?: 1f, iterations: Int = composition?.iterations ?: 1, cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, - useCompositionFrameRate: Boolean = false + useCompositionFrameRate: Boolean = false, + clipTextToBoundingBoxes: Boolean = false, + clipToCompositionBounds: Boolean = true ) : Painter { val progress = animateLottieCompositionAsState( @@ -56,6 +56,8 @@ fun rememberLottiePainter( return rememberLottiePainter( composition = composition, progress = { progress.value }, + clipToCompositionBounds = clipToCompositionBounds, + clipTextToBoundingBoxes = clipTextToBoundingBoxes ) } @@ -63,7 +65,8 @@ fun rememberLottiePainter( fun rememberLottiePainter( composition : LottieComposition?, progress : () -> Float, - clipTextToBoundingBoxes: Boolean = false + clipTextToBoundingBoxes: Boolean = false, + clipToCompositionBounds : Boolean = true ) : Painter { val fontFamilyResolver = LocalFontFamilyResolver.current @@ -72,7 +75,8 @@ fun rememberLottiePainter( EmptyPainter, composition, clipTextToBoundingBoxes, - fontFamilyResolver + clipToCompositionBounds, + fontFamilyResolver, ) { if (composition != null) { @@ -80,7 +84,8 @@ fun rememberLottiePainter( composition = composition, initialProgress = progress(), clipTextToBoundingBoxes = clipTextToBoundingBoxes, - fontFamilyResolver = fontFamilyResolver + fontFamilyResolver = fontFamilyResolver, + clipToCompositionBounds = clipToCompositionBounds ) } } @@ -110,6 +115,7 @@ private class LottiePainter( private val initialProgress : Float, private val fontFamilyResolver : FontFamily.Resolver, private val clipTextToBoundingBoxes : Boolean, + private val clipToCompositionBounds : Boolean, ) : Painter() { override val intrinsicSize: Size = Size( @@ -142,7 +148,8 @@ private class LottiePainter( assets = composition.lottieData.assets.associateBy(LottieAsset::id), composition = composition, clipTextToBoundingBoxes = clipTextToBoundingBoxes, - fontFamilyResolver = fontFamilyResolver + fontFamilyResolver = fontFamilyResolver, + clipToDrawBounds = clipToCompositionBounds ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt deleted file mode 100644 index 93f05cf2..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Marker.skiko.kt +++ /dev/null @@ -1,14 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -class Marker( - @SerialName("tm") - val startFrame: Float, - @SerialName("cm") - internal val name : String, - @SerialName("dr") - val durationFrames : Float -) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt index 3e6df03e..9e8e250a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt @@ -46,8 +46,8 @@ fun animateLottieCompositionAsState( restartOnPlay: Boolean = true, reverseOnRepeat: Boolean = false, clipSpec: LottieClipSpec? = null, - speed: Float = 1f, - iterations: Int = 1, + speed: Float = composition?.speed ?: 1f, + iterations: Int = composition?.iterations ?: 1, cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, useCompositionFrameRate: Boolean = false, ): LottieAnimationState { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index da81925d..8f58fedf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -7,7 +7,9 @@ import kotlin.jvm.JvmField import kotlin.jvm.JvmInline @JvmInline -value class AnimationState(val frame : Float) +value class AnimationState(val frame : Float) { + fun shift(frame: Float) = AnimationState(frame + this.frame) +} //internal interface AnimationState { // diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt index 29b9d894..4b937834 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt @@ -40,7 +40,3 @@ internal data class LottieData( val markers : List = emptyList() ) - - -internal val LottieData.durationMillis - get() = (outPoint - inPoint) / frameRate * 1000 \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 1698eb60..0a88e8f8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -8,6 +8,7 @@ import io.github.alexzhirkevich.compottie.internal.utils.preRotate import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import io.github.alexzhirkevich.compottie.internal.utils.setValues +import kotlin.math.atan2 import kotlin.math.cos import kotlin.math.sin import kotlin.math.tan @@ -22,6 +23,8 @@ internal abstract class AnimatedTransform { abstract val skew: AnimatedNumber? abstract val skewAxis: AnimatedNumber? + var autoOrient = false + protected val matrix: Matrix = Matrix() private val skewMatrix1: Matrix by lazy { @@ -43,15 +46,34 @@ internal abstract class AnimatedTransform { fun matrix(state: AnimationState): Matrix { matrix.reset() - position?.interpolated(state) + val interpolatedPosition = position?.interpolated(state) ?.takeIf { it.x != 0f || it.y != 0f } - ?.let { + ?.also { matrix.preTranslate(it.x, it.y) } - rotation?.interpolated(state) - ?.takeIf { it != 0f } - ?.let(matrix::preRotate) + if (autoOrient){ + if (interpolatedPosition != null) { + // Store the start X and Y values because the pointF will be overwritten by the next getValue call. + val startX = interpolatedPosition.x + val startY = interpolatedPosition.y + // 1) Find the next position value. + // 2) Create a vector from the current position to the next position. + // 3) Find the angle of that vector to the X axis (0 degrees). + val nextPosition = position!!.interpolated(state.shift(0.001f)) + val rotationValue= Math.toDegree( + atan2( + (nextPosition.y - startY), + (nextPosition.x - startX) + ) + ) + matrix.preRotate(rotationValue.toFloat()) + } + } else { + rotation?.interpolated(state) + ?.takeIf { it != 0f } + ?.let(matrix::preRotate) + } skew?.interpolated(state) ?.takeIf { it != 0f } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index 49158a99..dc6d0895 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -55,7 +55,7 @@ internal class BaseKeyframeAnimation>( InvalidKeyframeError ), requireNotNull( - preLast?.endHold ?: start, + start ?: preLast?.end ?: preLast?.start, InvalidKeyframeError ), 1f, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index f9260293..aff4df98 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -22,6 +22,7 @@ internal class ContentGroup( override val transform: AnimatedTransform?, ) : ContentGroupBase { + private val rect = MutableRect(0f, 0f, 0f, 0f) private val offscreenRect = MutableRect(0f, 0f, 0f, 0f) private val offscreenPaint = Paint().apply { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt index 7111f067..03b74a1a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.content import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt internal interface ContentGroupBase : DrawingContent, PathContent { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index a856c5b5..ec360a55 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.clipRect @@ -39,8 +40,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { // ) // } - abstract fun loadLayers() : List + abstract fun loadLayers() : List private val layers by lazy { val layers = loadLayers().filterIsInstance() @@ -116,7 +117,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { layers.fastForEachReversed { layer -> // Only clip precomps. This mimics the way After Effects renders animations. - val ignoreClipOnThisLayer = isContainerLayer + val ignoreClipOnThisLayer = isContainerLayer || painterProperties?.clipToDrawBounds == false if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { canvas.clipRect(newClipRect) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 52a43af1..3c1073a1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -23,6 +23,7 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode import io.github.alexzhirkevich.compottie.internal.helpers.isInvert @@ -116,6 +117,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { ) { try { + transform.autoOrient = autoOrient == BooleanInt.Yes if (hidden || (inPoint ?: 0f) > state.frame || (outPoint ?: Float.MAX_VALUE) < state.frame) return @@ -229,8 +231,8 @@ internal abstract class BaseLayer() : Layer, DrawingContent { boundsMatrix.preConcat(transform.matrix(state)) } - override fun setContents(contentsBefore: List, contentsAfter: List) { - //do nothing + + final override fun setContents(contentsBefore: List, contentsAfter: List) { } fun setParentLayer(layer: BaseLayer) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 79f274d0..1e9898ba 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -59,7 +59,6 @@ internal sealed interface Layer { val effects: List - val effectsApplier : LayerEffectsApplier } @@ -67,12 +66,10 @@ internal val Layer.isContainerLayer get() = name == "__container" internal class PainterProperties( val composition : LottieComposition, - val assets: Map = emptyMap(), - + val fontFamilyResolver: FontFamily.Resolver? = null, val clipTextToBoundingBoxes : Boolean = false, - - val fontFamilyResolver: FontFamily.Resolver? = null + val clipToDrawBounds : Boolean = true, ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 9d07b6e2..50b63eef 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -93,7 +93,9 @@ internal class ShapeLayer( name = name, hidden = hidden, contents = shapes, - transform = shapes.findTransform() + transform = shapes.findTransform()?.apply { + autoOrient = this@ShapeLayer.autoOrient == BooleanInt.Yes + } ).apply { setContents(emptyList(), emptyList()) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 9b6bebcf..f417252f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -191,7 +191,6 @@ internal class TextLayer( fillPaint.alpha = (parentAlpha * transformOpacity * fillOpacity).coerceIn(0f,1f) - val strokeH = textAnimation?.style?.strokeHue?.interpolated(state)?.coerceIn(0f,360f) val strokeS = textAnimation?.style?.strokeSaturation?.interpolated(state)?.coerceIn(0f,1f) val strokeB = textAnimation?.style?.strokeBrightness?.interpolated(state)?.coerceIn(0f,1f) @@ -220,7 +219,7 @@ internal class TextLayer( private fun configureTextStyle(drawScope: DrawScope, document: TextDocument, animationState: AnimationState) { drawScope.run { - val fontSize = document.fontSize.sp + val fontSize = document.fontSize.toSp() val baselineShift = document.baselineShift ?.let { BaselineShift(it) } ?: textStyle.baselineShift @@ -229,13 +228,13 @@ internal class TextLayer( .get(document.fontFamily) val letterSpacing = textAnimation?.style?.letterSpacing - ?.interpolated(animationState)?.sp + ?.interpolated(animationState)?.toSp() ?: textStyle.letterSpacing val lineSpacing = textAnimation?.style?.lineSpacing ?.interpolated(animationState) ?: 0f - val lineHeight = (document.lineHeight + lineSpacing).sp + val lineHeight = (document.lineHeight + lineSpacing).toSp() if ( textStyle.fontSize != fontSize || diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index 3bbe8ccb..bd1fd374 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.layers.NullLayer import kotlinx.serialization.SerialName @@ -33,6 +34,7 @@ internal class GroupShape( contents = items, transform = items.findTransform() ){ + @Transient override var layer: Layer = NullLayer() set(value) { @@ -40,5 +42,7 @@ internal class GroupShape( items.forEach { it.layer = value } + + transform?.autoOrient = value.autoOrient == BooleanInt.Yes } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 7f69011a..70be0358 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -10,6 +10,7 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.set import kotlinx.serialization.SerialName @@ -116,7 +117,8 @@ internal class MergePathsShape( if (content is ContentGroupBase) { content.pathContents.fastForEachReversed { path -> val p = path.getPath(state) - content.transform?.matrix(state)?.let(p::transform) + content.transform?.matrix(state) + ?.let(p::transform) remainderPath.addPath(p) } } else { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index c276cdd1..d07594b3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -14,6 +14,7 @@ import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.preConcat @@ -103,7 +104,6 @@ internal class RepeaterShape( override fun setContents(contentsBefore: List, contentsAfter: List) { contentGroup?.setContents(contentsBefore, contentsAfter) - } override fun absorbContent(contents: MutableList) { @@ -132,6 +132,11 @@ internal class RepeaterShape( contents.removeFirst() } - contentGroup = ContentGroup(name, hidden, contentsList, null) + contentGroup = ContentGroup( + name = name, + hidden = hidden, + contents = contentsList, + transform = null, + ) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt index c996ed37..072c3a2a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Math.kt @@ -2,8 +2,14 @@ package io.github.alexzhirkevich.compottie.internal.utils import kotlin.math.PI +private val PiDiv180 = PI / 180 + object Math { fun toRadians(degree : Float) : Float { - return (degree * PI / 180).toFloat() + return (degree * PiDiv180).toFloat() + } + + fun toDegree(radians : Float) : Float { + return (radians / PiDiv180).toFloat() } } \ No newline at end of file diff --git a/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt b/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt index 556ff4c8..69aeec8a 100644 --- a/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt +++ b/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt @@ -4,5 +4,5 @@ import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO -internal actual val Dispatchers.IODispatcher : CoroutineDispatcher +actual val Dispatchers.IODispatcher : CoroutineDispatcher get() = Dispatchers.IO \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.skiko.kt new file mode 100644 index 00000000..8d08aa0d --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.skiko.kt @@ -0,0 +1,11 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Composable + +actual abstract class LottieContext { + + companion object : LottieContext() +} + +@Composable +actual fun currentLottieContext() : LottieContext = LottieContext \ No newline at end of file diff --git a/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt b/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt index 9933539a..29e61e23 100644 --- a/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt +++ b/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt @@ -3,5 +3,5 @@ package io.github.alexzhirkevich.compottie import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers -internal actual val Dispatchers.IODispatcher : CoroutineDispatcher +actual val Dispatchers.IODispatcher : CoroutineDispatcher get() = Dispatchers.Default \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/angel.json b/example/shared/src/commonMain/composeResources/files/angel.json new file mode 100644 index 00000000..0c509854 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/angel.json @@ -0,0 +1 @@ +{"v":"5.1.11","fr":30,"ip":0,"op":211,"w":1200,"h":1920,"nm":"ANGEL main","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":" 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":98,"s":[-29],"e":[20]},{"t":131}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":87,"s":[794.5,3078.714,0],"e":[716.246,2211.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.241},"n":"0p527_1_0p215_0p241","t":105,"s":[716.246,2211.336,0],"e":[929.268,1325.15,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":127,"s":[929.268,1325.15,0],"e":[1430.5,882.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":153}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":101,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.35,0.35,0.35],"y":[-0.108,-0.108,10.738]},"n":["0p659_1_0p35_-0p108","0p659_1_0p35_-0p108","0p659_1_0p35_10p738"],"t":131,"s":[26.182,26.182,100],"e":[0,0,100]},{"t":156}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972456688974,1,0.219607828178,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-17,"op":285,"st":-17,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":" 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,1,0.776470707912,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":145,"s":[0],"e":[100]},{"t":171}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":135,"s":[0],"e":[100]},{"t":156}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":" 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":136,"s":[0],"e":[100]},{"t":162}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":126,"s":[0],"e":[100]},{"t":147}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-5,"op":297,"st":-5,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":" 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":138,"s":[0],"e":[100]},{"t":164}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":128,"s":[0],"e":[100]},{"t":149}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-3,"op":299,"st":-3,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":" 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":" 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":" 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":110,"s":[0],"e":[100]},{"t":136}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":91,"s":[0],"e":[100]},{"t":125}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":302,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":5,"nm":"HALLELUJAH!","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[195,53,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[330.842,330.842,100],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":17,"f":"SegoeUI-Bold","t":"HALLELUJAH!","j":2,"tr":1,"lh":20.4,"ls":0,"fc":[1,0.68,0]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":302,"st":0,"bm":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":" 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":42,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":119,"s":[-29],"e":[20]},{"t":152}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":108,"s":[794.5,3078.714,0],"e":[716.246,2211.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.241},"n":"0p527_1_0p215_0p241","t":126,"s":[716.246,2211.336,0],"e":[929.268,1325.15,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":148,"s":[929.268,1325.15,0],"e":[1430.5,882.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":174}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":122,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.35,0.35,0.35],"y":[-0.108,-0.108,10.738]},"n":["0p659_1_0p35_-0p108","0p659_1_0p35_-0p108","0p659_1_0p35_10p738"],"t":152,"s":[26.182,26.182,100],"e":[0,0,100]},{"t":177}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.219607828178,0.880645751953,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":" 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":38,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":115,"s":[-29],"e":[20]},{"t":148}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":104,"s":[1170.5,3038.714,0],"e":[1092.246,2171.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.215,"y":0.337},"n":"0p82_1_0p215_0p337","t":122,"s":[1092.246,2171.336,0],"e":[1806.5,842.714,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[0,0,0]},{"t":170}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.596,0.596,0.596],"y":[-0.364,-0.364,5.536]},"o":{"x":[0.174,0.174,0.174],"y":[0,0,0]},"n":["0p596_-0p364_0p174_0","0p596_-0p364_0p174_0","0p596_5p536_0p174_0"],"t":126,"s":[21.368,21.368,100],"e":[31.211,31.211,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.352,0.352,0.352],"y":[-0.426,-0.426,-4.491]},"n":["0p667_1_0p352_-0p426","0p667_1_0p352_-0p426","0p667_1_0p352_-4p491"],"t":148,"s":[31.211,31.211,100],"e":[0,0,100]},{"t":173}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.521568627451,0.881799256568,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":" 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":145,"s":[0],"e":[100]},{"t":171}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":135,"s":[0],"e":[100]},{"t":156}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":" 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":136,"s":[0],"e":[100]},{"t":162}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":126,"s":[0],"e":[100]},{"t":147}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-5,"op":297,"st":-5,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":" 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":138,"s":[0],"e":[100]},{"t":164}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":128,"s":[0],"e":[100]},{"t":149}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-3,"op":299,"st":-3,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":" 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":" 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":" 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":110,"s":[0],"e":[100]},{"t":136}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":91,"s":[0],"e":[100]},{"t":125}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":302,"st":0,"bm":0}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":" 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":42,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":119,"s":[-29],"e":[20]},{"t":152}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":108,"s":[816.5,3118.214,0],"e":[738.246,2250.836,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.241},"n":"0p527_1_0p215_0p241","t":126,"s":[738.246,2250.836,0],"e":[951.268,1364.65,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":148,"s":[951.268,1364.65,0],"e":[1452.5,922.214,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":174}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0","0p833_1_0p167_0"],"t":122,"s":[20.49,20.49,100],"e":[41.368,41.368,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":153,"s":[41.368,41.368,100],"e":[0,0,100]},{"t":177}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[252.214,252.214],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.450980362238,0.877277927773,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[210.711,-19.681],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":" 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":47,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":124,"s":[-29],"e":[20]},{"t":157}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.593},"o":{"x":0.201,"y":0},"n":"0p489_0p593_0p201_0","t":113,"s":[992.5,3078.214,0],"e":[914.246,1986.836,0],"to":[244.402847290039,-422.017364501953,0],"ti":[32.0453643798828,313.499481201172,0]},{"i":{"x":0.687,"y":1},"o":{"x":0.215,"y":0.167},"n":"0p687_1_0p215_0p167","t":131,"s":[914.246,1986.836,0],"e":[1628.5,882.214,0],"to":[-79.0846328735352,-773.684204101563,0],"ti":[0,0,0]},{"t":163}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0","0p833_1_0p167_0"],"t":127,"s":[12.024,12.024,100],"e":[41.368,41.368,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":158,"s":[41.368,41.368,100],"e":[0,0,100]},{"t":182}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.450980362238,0.967704683192,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":9,"op":311,"st":9,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":" 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":38,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":115,"s":[-29],"e":[20]},{"t":148}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.658},"o":{"x":0.201,"y":0},"n":"0p489_0p658_0p201_0","t":104,"s":[1192.5,3078.214,0],"e":[1114.246,2210.836,0],"to":[244.402847290039,-422.017364501953,0],"ti":[14.5076055526733,314.798919677734,0]},{"i":{"x":0.851,"y":0.997},"o":{"x":1,"y":0.707},"n":"0p851_0p997_1_0p707","t":121,"s":[1114.246,2210.836,0],"e":[1828.5,882.214,0],"to":[-47.0846328735352,-1021.68420410156,0],"ti":[0,0,0]},{"t":152}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":149,"s":[41.368,41.368,100],"e":[0,0,100]},{"t":173}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.913725490196,0.439215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":" 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[944.5,2759.5,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":145,"s":[0],"e":[100]},{"t":171}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":135,"s":[0],"e":[100]},{"t":156}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":" 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1160.5,2743.5,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":136,"s":[0],"e":[100]},{"t":162}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":126,"s":[0],"e":[100]},{"t":147}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-5,"op":297,"st":-5,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":" 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[952.5,2567.5,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":138,"s":[0],"e":[100]},{"t":164}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":128,"s":[0],"e":[100]},{"t":149}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-3,"op":299,"st":-3,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":" 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[944.5,2759.5,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":" 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1160.5,2743.5,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":" 9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[952.5,2567.5,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":110,"s":[0],"e":[100]},{"t":136}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":91,"s":[0],"e":[100]},{"t":125}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":302,"st":0,"bm":0}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":98,"s":[-29],"e":[20]},{"t":131}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":87,"s":[794.5,3078.714,0],"e":[716.246,2211.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.241},"n":"0p527_1_0p215_0p241","t":105,"s":[716.246,2211.336,0],"e":[929.268,1325.15,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":127,"s":[929.268,1325.15,0],"e":[1430.5,882.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":153}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":101,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.35,0.35,0.35],"y":[-0.108,-0.108,10.738]},"n":["0p659_1_0p35_-0p108","0p659_1_0p35_-0p108","0p659_1_0p35_10p738"],"t":131,"s":[26.182,26.182,100],"e":[0,0,100]},{"t":156}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972456688974,1,0.219607828178,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-17,"op":285,"st":-17,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"lines 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,1,0.776470707912,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":145,"s":[0],"e":[100]},{"t":171}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":135,"s":[0],"e":[100]},{"t":156}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"lines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":136,"s":[0],"e":[100]},{"t":162}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":126,"s":[0],"e":[100]},{"t":147}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-5,"op":297,"st":-5,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"lines 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":138,"s":[0],"e":[100]},{"t":164}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":128,"s":[0],"e":[100]},{"t":149}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-3,"op":299,"st":-3,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"lines 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"lines 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"lines 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":110,"s":[0],"e":[100]},{"t":136}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":91,"s":[0],"e":[100]},{"t":125}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":302,"st":0,"bm":0}]},{"id":"comp_5","layers":[{"ddd":0,"ind":1,"ty":4,"nm":" 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":42,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":119,"s":[-29],"e":[20]},{"t":152}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":108,"s":[794.5,3078.714,0],"e":[716.246,2211.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.241},"n":"0p527_1_0p215_0p241","t":126,"s":[716.246,2211.336,0],"e":[929.268,1325.15,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":148,"s":[929.268,1325.15,0],"e":[1430.5,882.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":174}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":122,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.681,0.681,0.681],"y":[1.132,1.132,7.724]},"o":{"x":[0.35,0.35,0.35],"y":[0.049,0.049,2.577]},"n":["0p681_1p132_0p35_0p049","0p681_1p132_0p35_0p049","0p681_7p724_0p35_2p577"],"t":152,"s":[26.182,26.182,100],"e":[40.109,40.109,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.353,0.353,0.353],"y":[0.16,0.16,-23.55]},"n":["0p659_1_0p353_0p16","0p659_1_0p353_0p16","0p659_1_0p353_-23p55"],"t":158,"s":[40.109,40.109,100],"e":[0,0,100]},{"t":177}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.70311422909,0.352941146551,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":" 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":38,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":115,"s":[-29],"e":[20]},{"t":148}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.475},"o":{"x":0.201,"y":0},"n":"0p489_0p475_0p201_0","t":104,"s":[1170.5,3038.714,0],"e":[1092.246,2171.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.215,"y":0.309},"n":"0p82_1_0p215_0p309","t":123,"s":[1092.246,2171.336,0],"e":[1806.5,842.714,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[0,0,0]},{"t":167}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.174,0.174,0.174],"y":[0,0,0]},"n":["0p667_1_0p174_0","0p667_1_0p174_0","0p667_1_0p174_0"],"t":126,"s":[21.368,21.368,100],"e":[0,0,100]},{"t":173}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.521568627451,0.881799256568,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":" 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":145,"s":[0],"e":[100]},{"t":171}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":135,"s":[0],"e":[100]},{"t":156}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":" 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":136,"s":[0],"e":[100]},{"t":162}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":126,"s":[0],"e":[100]},{"t":147}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-5,"op":297,"st":-5,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":" 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[356,560],[-184,192]],"o":[[-130,-256],[274.553,-286.49]],"v":[[-196,88],[-116,-776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.731],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p731_1_0p167_0p167"],"t":138,"s":[0],"e":[100]},{"t":164}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.677],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p677_1_0p167_0p167"],"t":128,"s":[0],"e":[100]},{"t":149}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-3,"op":299,"st":-3,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":" 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[922.5,2720,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0.894117706897,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":" 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1138.5,2704,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.439446333343,1,0.364705852434,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":117,"s":[0],"e":[100]},{"t":143}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":98,"s":[0],"e":[100]},{"t":132}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":7,"op":309,"st":7,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":" 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[930.5,2528,0],"ix":2},"a":{"a":0,"k":[-172,568,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[356,560]],"o":[[0,0],[-130,-256]],"v":[[-212,960],[-196,88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.364705852434,0.843044924269,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.239],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p239_1_0p333_0"],"t":110,"s":[0],"e":[100]},{"t":136}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p34_1_0p333_0"],"t":91,"s":[0],"e":[100]},{"t":125}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":302,"st":0,"bm":0}]},{"id":"comp_6","layers":[{"ddd":0,"ind":1,"ty":4,"nm":" 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":73,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":150,"s":[-29],"e":[20]},{"t":183}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.478},"o":{"x":0.201,"y":0},"n":"0p489_0p478_0p201_0","t":139,"s":[794.5,3078.714,0],"e":[1124.246,2339.336,0],"to":[268.402862548828,-118.017364501953,0],"ti":[90.7951965332031,301.769866943359,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.167},"n":"0p527_1_0p215_0p167","t":157,"s":[1124.246,2339.336,0],"e":[1073.268,1013.15,0],"to":[-199.08464050293,-661.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":179,"s":[1073.268,1013.15,0],"e":[1462.5,754.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":205}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":153,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.35,0.35,0.35],"y":[-0.108,-0.108,10.738]},"n":["0p659_1_0p35_-0p108","0p659_1_0p35_-0p108","0p659_1_0p35_10p738"],"t":183,"s":[26.182,26.182,100],"e":[0,0,100]},{"t":208}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.522076116824,0.964705882353,0.928254011566,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":35,"op":337,"st":35,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":" 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":60,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":137,"s":[-29],"e":[20]},{"t":170}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.478},"o":{"x":0.201,"y":0},"n":"0p489_0p478_0p201_0","t":126,"s":[794.5,3078.714,0],"e":[1124.246,2339.336,0],"to":[268.402862548828,-118.017364501953,0],"ti":[90.7951965332031,301.769866943359,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.167},"n":"0p527_1_0p215_0p167","t":144,"s":[1124.246,2339.336,0],"e":[1073.268,1013.15,0],"to":[-199.08464050293,-661.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":166,"s":[1073.268,1013.15,0],"e":[1462.5,754.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":192}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":140,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.35,0.35,0.35],"y":[-0.108,-0.108,10.738]},"n":["0p659_1_0p35_-0p108","0p659_1_0p35_-0p108","0p659_1_0p35_10p738"],"t":170,"s":[26.182,26.182,100],"e":[0,0,100]},{"t":195}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.954094441732,0.219607843137,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22,"op":324,"st":22,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":" 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":55,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":132,"s":[-29],"e":[20]},{"t":165}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":121,"s":[794.5,3078.714,0],"e":[716.246,2211.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.241},"n":"0p527_1_0p215_0p241","t":139,"s":[716.246,2211.336,0],"e":[929.268,1325.15,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":161,"s":[929.268,1325.15,0],"e":[1430.5,882.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":187}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":135,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.35,0.35,0.35],"y":[-0.108,-0.108,10.738]},"n":["0p659_1_0p35_-0p108","0p659_1_0p35_-0p108","0p659_1_0p35_10p738"],"t":165,"s":[26.182,26.182,100],"e":[0,0,100]},{"t":190}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.256332128188,1,0.219607843137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":17,"op":319,"st":17,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":" 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":42,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":119,"s":[-29],"e":[20]},{"t":152}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":108,"s":[794.5,3078.714,0],"e":[716.246,2211.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.527,"y":1},"o":{"x":0.215,"y":0.241},"n":"0p527_1_0p215_0p241","t":126,"s":[716.246,2211.336,0],"e":[929.268,1325.15,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[-348.991027832031,317.877044677734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.923,"y":0},"n":"0p82_1_0p923_0","t":148,"s":[929.268,1325.15,0],"e":[1430.5,882.714,0],"to":[8.19422245025635,-7.46367406845093,0],"ti":[0,0,0]},{"t":174}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.786,0.786,0.786],"y":[0.636,0.636,-6.884]},"o":{"x":[0.163,0.163,0.163],"y":[0,0,0]},"n":["0p786_0p636_0p163_0","0p786_0p636_0p163_0","0p786_-6p884_0p163_0"],"t":122,"s":[20.49,20.49,100],"e":[26.182,26.182,100]},{"i":{"x":[0.659,0.659,0.659],"y":[1,1,1]},"o":{"x":[0.35,0.35,0.35],"y":[-0.108,-0.108,10.738]},"n":["0p659_1_0p35_-0p108","0p659_1_0p35_-0p108","0p659_1_0p35_10p738"],"t":152,"s":[26.182,26.182,100],"e":[0,0,100]},{"t":177}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.219607843137,0.7521105598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":306,"st":4,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":" 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":69,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":146,"s":[-29],"e":[20]},{"t":179}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.593},"o":{"x":0.201,"y":0},"n":"0p489_0p593_0p201_0","t":135,"s":[1170.5,3038.714,0],"e":[1092.246,1939.336,0],"to":[188.402847290039,-366.017364501953,0],"ti":[88.9935073852539,302.306121826172,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.215,"y":0.346},"n":"0p82_1_0p215_0p346","t":153,"s":[1092.246,1939.336,0],"e":[1806.5,842.714,0],"to":[-263.084625244141,-893.684204101563,0],"ti":[0,0,0]},{"t":201}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.596,0.596,0.596],"y":[-0.364,-0.364,5.536]},"o":{"x":[0.174,0.174,0.174],"y":[0,0,0]},"n":["0p596_-0p364_0p174_0","0p596_-0p364_0p174_0","0p596_5p536_0p174_0"],"t":157,"s":[21.368,21.368,100],"e":[31.211,31.211,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.352,0.352,0.352],"y":[-0.426,-0.426,-4.491]},"n":["0p667_1_0p352_-0p426","0p667_1_0p352_-0p426","0p667_1_0p352_-4p491"],"t":179,"s":[31.211,31.211,100],"e":[0,0,100]},{"t":204}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.954094561409,0.219607843137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":31,"op":333,"st":31,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":" 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":56,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":133,"s":[-29],"e":[20]},{"t":166}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.593},"o":{"x":0.201,"y":0},"n":"0p489_0p593_0p201_0","t":122,"s":[1170.5,3038.714,0],"e":[1092.246,1939.336,0],"to":[188.402847290039,-366.017364501953,0],"ti":[88.9935073852539,302.306121826172,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.215,"y":0.346},"n":"0p82_1_0p215_0p346","t":140,"s":[1092.246,1939.336,0],"e":[1806.5,842.714,0],"to":[-263.084625244141,-893.684204101563,0],"ti":[0,0,0]},{"t":188}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.596,0.596,0.596],"y":[-0.364,-0.364,5.536]},"o":{"x":[0.174,0.174,0.174],"y":[0,0,0]},"n":["0p596_-0p364_0p174_0","0p596_-0p364_0p174_0","0p596_5p536_0p174_0"],"t":144,"s":[21.368,21.368,100],"e":[31.211,31.211,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.352,0.352,0.352],"y":[-0.426,-0.426,-4.491]},"n":["0p667_1_0p352_-0p426","0p667_1_0p352_-0p426","0p667_1_0p352_-4p491"],"t":166,"s":[31.211,31.211,100],"e":[0,0,100]},{"t":191}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,1,0.935732433843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":18,"op":320,"st":18,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":" 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":51,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":128,"s":[-29],"e":[20]},{"t":161}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":117,"s":[1170.5,3038.714,0],"e":[1092.246,2171.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.215,"y":0.337},"n":"0p82_1_0p215_0p337","t":135,"s":[1092.246,2171.336,0],"e":[1806.5,842.714,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[0,0,0]},{"t":183}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.596,0.596,0.596],"y":[-0.364,-0.364,5.536]},"o":{"x":[0.174,0.174,0.174],"y":[0,0,0]},"n":["0p596_-0p364_0p174_0","0p596_-0p364_0p174_0","0p596_5p536_0p174_0"],"t":139,"s":[21.368,21.368,100],"e":[31.211,31.211,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.352,0.352,0.352],"y":[-0.426,-0.426,-4.491]},"n":["0p667_1_0p352_-0p426","0p667_1_0p352_-0p426","0p667_1_0p352_-4p491"],"t":161,"s":[31.211,31.211,100],"e":[0,0,100]},{"t":186}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[0.697024476294,0.219607843137,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":13,"op":315,"st":13,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":" 8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":38,"s":[0],"e":[-29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":115,"s":[-29],"e":[20]},{"t":148}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.489,"y":0.503},"o":{"x":0.201,"y":0},"n":"0p489_0p503_0p201_0","t":104,"s":[1170.5,3038.714,0],"e":[1092.246,2171.336,0],"to":[244.402847290039,-422.017364501953,0],"ti":[102.088684082031,298.138763427734,0]},{"i":{"x":0.82,"y":1},"o":{"x":0.215,"y":0.337},"n":"0p82_1_0p215_0p337","t":122,"s":[1092.246,2171.336,0],"e":[1806.5,842.714,0],"to":[-95.0846328735352,-277.684204101563,0],"ti":[0,0,0]},{"t":170}],"ix":2},"a":{"a":0,"k":[228,-17.286,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.596,0.596,0.596],"y":[-0.364,-0.364,5.536]},"o":{"x":[0.174,0.174,0.174],"y":[0,0,0]},"n":["0p596_-0p364_0p174_0","0p596_-0p364_0p174_0","0p596_5p536_0p174_0"],"t":126,"s":[21.368,21.368,100],"e":[31.211,31.211,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.352,0.352,0.352],"y":[-0.426,-0.426,-4.491]},"n":["0p667_1_0p352_-0p426","0p667_1_0p352_-0p426","0p667_1_0p352_-4p491"],"t":148,"s":[31.211,31.211,100],"e":[0,0,100]},{"t":173}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":90.51,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":181.019,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.990818996055,0.219607843137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[228,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0}]}],"fonts":{"list":[{"fName":"SegoeUI-Bold","fFamily":"Segoe UI","fStyle":"Bold","ascent":74.0234375},{"fName":"ArialMT","fFamily":"Arial","fStyle":"Regular","ascent":71.5988159179688}]},"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"blink 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[825.375,1679.299,0],"ix":2},"a":{"a":0,"k":[17.375,538.496,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":12.186,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":161,"s":[0],"e":[202.371]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":167,"s":[202.371],"e":[0]},{"t":175}],"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[69.428,69.428],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":155,"op":181,"st":94,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"blink 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[455.375,1688.496,0],"ix":2},"a":{"a":0,"k":[17.375,538.496,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":12.186,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":139,"s":[0],"e":[202.371]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":145,"s":[202.371],"e":[0]},{"t":153}],"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[69.428,69.428],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":136,"op":158,"st":72,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"blink 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[322.201,1467.631,0],"ix":2},"a":{"a":0,"k":[21.012,543.135,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":12.186,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":153,"s":[0],"e":[202.371]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":159,"s":[202.371],"e":[0]},{"t":167}],"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[69.428,69.428],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":147,"op":171,"st":86,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"blink 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197.012,1431.135,0],"ix":2},"a":{"a":0,"k":[21.012,543.135,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":12.186,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":115,"s":[0],"e":[202.371]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":121,"s":[202.371],"e":[0]},{"t":129}],"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[69.428,69.428],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":111,"op":133,"st":48,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"blink 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[920,1734,0],"ix":2},"a":{"a":0,"k":[16,538,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":12.186,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":127,"s":[0],"e":[202.371]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":133,"s":[202.371],"e":[0]},{"t":141}],"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[69.428,69.428],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":124,"op":146,"st":60,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"blink 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[716,1739.982,0],"ix":2},"a":{"a":0,"k":[16,527.982,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":12.186,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":101,"s":[0],"e":[202.371]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":107,"s":[202.371],"e":[0]},{"t":115}],"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[69.428,69.428],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.909480973786,0.145098024256,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.883414115158,0.47843134263,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":98,"op":121,"st":34,"bm":0},{"ddd":0,"ind":7,"ty":5,"nm":"♫ 3","parent":19,"sr":1,"ks":{"o":{"a":1,"k":[{"t":105,"s":[0],"h":1},{"t":111,"s":[100],"h":1},{"t":126,"s":[100],"h":1},{"t":127,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":-54.939,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":105,"s":[17.472,73.589,0],"e":[-64.403,211.549,0],"to":[-21.2631549835205,113.122215270996,0],"ti":[9.99310970306396,-24.8503742218018,0]},{"t":128}],"ix":2},"a":{"a":0,"k":[11.253,-14.425,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":105,"s":[71.929,71.929,100],"e":[174.069,174.069,100]},{"t":124}],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":39,"f":"ArialMT","t":"♫ ","j":0,"tr":0,"lh":46.8,"ls":0,"fc":[1,0.68,0.35]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":14,"op":316,"st":14,"bm":0},{"ddd":0,"ind":8,"ty":5,"nm":"♫ 2","parent":19,"sr":1,"ks":{"o":{"a":1,"k":[{"t":75,"s":[0],"h":1},{"t":87,"s":[100],"h":1},{"t":106,"s":[100],"h":1},{"t":107,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":-54.939,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":83,"s":[17.472,73.589,0],"e":[-78.756,269.877,0],"to":[-30.9275741577148,18.5803871154785,0],"ti":[-30.7219524383545,-100.759765625,0]},{"t":105}],"ix":2},"a":{"a":0,"k":[11.253,-14.425,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":83,"s":[71.929,71.929,100],"e":[174.069,174.069,100]},{"t":105}],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":39,"f":"ArialMT","t":"♫ ","j":0,"tr":0,"lh":46.8,"ls":0,"fc":[0.89,0.48,0.99]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":-16,"op":286,"st":-16,"bm":0},{"ddd":0,"ind":9,"ty":5,"nm":"♫ ","sr":1,"ks":{"o":{"a":1,"k":[{"t":91,"s":[0],"h":1},{"t":95,"s":[100],"h":1},{"t":112,"s":[100],"h":1},{"t":113,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":35.491,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":91,"s":[662.418,722.078,0],"e":[408.43,568.755,0],"to":[-42.3313522338867,-25.5536975860596,0],"ti":[89.8162841796875,-81.175422668457,0]},{"t":114}],"ix":2},"a":{"a":0,"k":[11.253,-14.425,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":91,"s":[133.02,133.02,100],"e":[321.908,321.908,100]},{"t":113}],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":39,"f":"ArialMT","t":"♫ ","j":0,"tr":0,"lh":46.8,"ls":0,"fc":[1,0.38,0.92]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":5,"nm":"♪ 2","parent":19,"sr":1,"ks":{"o":{"a":1,"k":[{"t":76,"s":[0],"h":1},{"t":80,"s":[100],"h":1},{"t":100,"s":[100],"h":1},{"t":101,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":-71.939,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":78,"s":[12.537,76.602,0],"e":[-4.395,257.991,0],"to":[-48.4906578063965,86.3428268432617,0],"ti":[-16.8111324310303,-98.4813690185547,0]},{"t":105}],"ix":2},"a":{"a":0,"k":[10.605,-15.173,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":79,"s":[71.929,71.929,100],"e":[174.069,174.069,100]},{"t":96}],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":39,"f":"ArialMT","t":"♪","j":0,"tr":0,"lh":46.8,"ls":0,"fc":[0.39,1,0.27]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":-22,"op":280,"st":-22,"bm":0},{"ddd":0,"ind":11,"ty":5,"nm":"♪","sr":1,"ks":{"o":{"a":1,"k":[{"t":95,"s":[0],"h":1},{"t":104,"s":[100],"h":1},{"t":126,"s":[100],"h":1},{"t":127,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":35.491,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":98,"s":[656.915,712.91,0],"e":[432.381,607.834,0],"to":[-95.4224090576172,-125.512596130371,0],"ti":[33.5167579650879,0.66633981466293,0]},{"t":127}],"ix":2},"a":{"a":0,"k":[10.605,-15.173,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":98,"s":[133.02,133.02,100],"e":[321.908,321.908,100]},{"t":128}],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":39,"f":"ArialMT","t":"♪","j":0,"tr":0,"lh":46.8,"ls":0,"fc":[0.4,0.98,1]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":-6,"op":296,"st":-6,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[600,960,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0]],"o":[[0,0]],"v":[[460,-236]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":3,"nm":" gem","parent":76,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.622},"o":{"x":0.333,"y":0},"n":"0p667_0p622_0p333_0","t":29,"s":[63.147,53.929,0],"e":[66.176,53.929,0],"to":[-0.21124793589115,0,0],"ti":[0.42255190014839,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.144},"n":"0p667_1_0p333_0p144","t":43,"s":[66.176,53.929,0],"e":[54.147,53.929,0],"to":[-2.57784581184387,0,0],"ti":[-0.30229985713959,0,0]},{"i":{"x":0.667,"y":0.107},"o":{"x":0.333,"y":0},"n":"0p667_0p107_0p333_0","t":63.6,"s":[54.147,53.929,0],"e":[60.562,53.929,0],"to":[0.09219128638506,0,0],"ti":[-1.66368877887726,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.834},"n":"0p667_1_0p333_0p834","t":138,"s":[60.562,53.929,0],"e":[63.147,53.929,0],"to":[2.03161287307739,0,0],"ti":[-0.43077823519707,-1.18423792822654e-15,0]},{"t":166}],"ix":2},"a":{"a":0,"k":[25,25,0],"ix":1},"s":{"a":0,"k":[25,25],"ix":6}},"ao":0,"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Layer 1,512 Outlines","parent":16,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32.333,58.279,0],"ix":2},"a":{"a":0,"k":[18.187,5.294,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-12.835,1.647],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.937,0.237],[17.937,3.397],[17.937,-1.132],[-16.899,-5.044]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.573000021542,0.651000019148,0.830999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.187,5.294],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Layer 1,513 Outlines","parent":16,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.907,42.853,0],"ix":2},"a":{"a":0,"k":[11.815,29.618,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.054,-5.694],[0,0],[7.019,0.955],[1.502,10.39],[0,0]],"o":[[8.087,6.568],[4.504,12.522],[-5.568,3.784],[12.135,-6.124],[-1.637,-11.333],[0,0]],"v":[[-10.335,-29.368],[7.061,-8.818],[8.78,25.335],[-11.565,28.413],[1.005,-2.689],[-10.349,-29.363]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.788000009574,0.788000009574,0.788000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.815,29.618],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"l arm","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.748],"y":[0]},"n":["0p667_1_0p748_0"],"t":18,"s":[0],"e":[-27]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.659],"y":[0]},"n":["0p667_1_0p659_0"],"t":40,"s":[-27],"e":[88.066]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":68,"s":[88.066],"e":[105.066]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":95,"s":[105.066],"e":[105.066]},{"i":{"x":[0.813],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p813_1_0p333_0"],"t":125,"s":[105.066],"e":[0]},{"t":153}],"ix":10},"p":{"a":0,"k":[41.078,5.436,0],"ix":2},"a":{"a":0,"k":[9.694,6.606,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.672,-7.848],[-2.054,-5.694],[0,0],[7.019,0.955],[0,0],[11.061,12.725],[0,0]],"o":[[8.087,6.568],[4.504,12.522],[-5.568,3.784],[-9.227,-1.23],[0,0],[-11.074,-12.721],[4.469,-4.467]],"v":[[4.211,-22.751],[21.607,-2.2],[23.326,31.952],[2.981,35.03],[-14.194,30.496],[-15.037,-12.234],[-20.769,-31.518]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.984000052658,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.361,36.236],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"l hand","parent":16,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.614],"y":[0]},"n":["0p667_1_0p614_0"],"t":60,"s":[0],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":94,"s":[22],"e":[0]},{"t":124}],"ix":10},"p":{"a":0,"k":[22.13,66.278,0],"ix":2},"a":{"a":0,"k":[17.745,1.708,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.131,-0.519],[0.97,-0.285],[0.272,-0.974],[-0.158,-0.446],[-1.067,-0.134],[0.386,-1.768],[0.392,-0.865],[0.154,-0.893],[-0.614,-0.666],[-1.117,0.862],[-0.794,0.187],[-0.117,-1.041],[-1.172,-0.383],[-0.825,0.976],[-0.386,1.217],[-1.507,-0.174],[-0.633,0.903],[-0.556,3.423],[0.316,0.756],[0.61,0.466],[2.65,0.898],[2.235,-1.683]],"o":[[-0.305,1.207],[-0.919,0.421],[-0.97,0.284],[-0.127,0.454],[0.367,1.034],[1.047,0.131],[-0.202,0.927],[-0.374,0.825],[-0.154,0.893],[0.957,1.038],[0.815,-0.628],[-0.155,1.01],[0.138,1.225],[1.215,0.396],[0.824,-0.976],[0.265,1.493],[1.096,0.126],[1.991,-2.84],[0.132,-0.808],[-0.295,-0.709],[-2.22,-1.702],[-2.649,-0.897],[0,0]],"v":[[-4.81,-9.522],[-7.121,-6.746],[-10.044,-5.963],[-12.275,-4.109],[-12.197,-2.717],[-9.726,-0.848],[-7.645,0.065],[-8.598,2.741],[-9.535,5.285],[-8.934,7.839],[-5.078,7.861],[-2.789,4.899],[-3.104,7.934],[-1.075,10.785],[2.326,9.565],[3.941,6.118],[6.314,9.615],[8.985,7.952],[12.146,-1.863],[12.087,-4.286],[10.547,-5.96],[3.4,-10.283],[-4.619,-9.439]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.652,11.43],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"r hand","parent":93,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[0.905]},"o":{"x":[0.333],"y":[0]},"n":["0p667_0p905_0p333_0"],"t":28,"s":[0],"e":[-38.63]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[-0.193]},"n":["0p667_1_0p333_-0p193"],"t":44,"s":[-38.63],"e":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":68,"s":[-10],"e":[-10]},{"i":{"x":[0.648],"y":[-0.137]},"o":{"x":[0.305],"y":[0]},"n":["0p648_-0p137_0p305_0"],"t":95,"s":[-10],"e":[-10.82]},{"i":{"x":[0.673],"y":[-0.319]},"o":{"x":[0.332],"y":[-0.135]},"n":["0p673_-0p319_0p332_-0p135"],"t":125,"s":[-10.82],"e":[-5.386]},{"i":{"x":[0.812],"y":[1]},"o":{"x":[0.427],"y":[0.487]},"n":["0p812_1_0p427_0p487"],"t":150,"s":[-5.386],"e":[0]},{"t":157}],"ix":10},"p":{"a":0,"k":[0.144,49.296,0],"ix":2},"a":{"a":0,"k":[11.105,10.796,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.192,1.602],[0.306,0.963],[-1.497,1.293],[1.129,1.623],[-1.432,0.122],[-0.446,0.301],[-0.05,0.754],[1.437,1.414],[2.084,0.228],[2.266,-1.353],[0.789,-0.754],[0.61,-1.942],[-0.691,-1.861],[-1.309,-1.009],[-0.898,-0.125]],"o":[[0.12,-1.003],[0.821,1.8],[1.496,-1.292],[1.347,0.499],[0.537,-0.045],[0.627,-0.424],[0.135,-2.01],[-1.493,-1.471],[-2.76,-0.301],[-0.938,0.559],[-1.471,1.409],[-0.596,1.895],[0.576,1.551],[0.718,0.554],[1.725,0.24]],"v":[[-1.149,7.355],[-1.579,4.379],[3.455,5.299],[3.951,-0.092],[8.189,0.483],[9.724,0.039],[10.72,-1.912],[7.928,-7.054],[2.654,-10.245],[-4.257,-7.669],[-6.93,-5.789],[-9.822,-0.483],[-10.164,5.353],[-7,9.087],[-4.605,10.306]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.105,10.796],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"trumpet","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[4.4,17.904,0],"ix":2},"a":{"a":0,"k":[44.752,44.751,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":72,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":77.664,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":82.992,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":88.992,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":95,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":101,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":106.328,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":110,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-14.689,58.343],[-14.689,58.343],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-59.119,13.791]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":115,"s":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}],"e":[{"i":[[0,0],[0,0],[-10.833,12.148],[0,0],[0.481,0.482],[0.494,-0.468],[0,0],[16.276,0]],"o":[[0,0],[0,-16.276],[0,0],[0.468,-0.493],[-0.481,-0.48],[0,0],[-12.148,10.833],[0,0]],"v":[[-13.212,44.501],[-13.212,44.501],[3.606,0.371],[44.033,-42.259],[44.01,-44.01],[42.259,-44.033],[-0.37,-3.606],[-44.501,13.214]],"c":true}]},{"t":119}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.914196897021,0.439215656355,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.752,44.751],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"smile mouth 4","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-69,"ix":10},"p":{"a":0,"k":[127.057,133.971,0],"ix":2},"a":{"a":0,"k":[7.62,14.331,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.437,-0.248]],"o":[[0,0],[-1.705,0.909]],"v":[[5.497,17.358],[7.228,18.34]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.165000002992,0.234999997008,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.342,18.283],"ix":2},"a":{"a":0,"k":[6.342,18.283],"ix":1},"s":{"a":0,"k":[148.171,148.171],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.821,-1.056],[-0.065,2.38],[-2.67,-1.505]],"o":[[-2.53,1.467],[0.064,-2.348],[1.922,1.084]],"v":[[-7.385,5.92],[-10.562,3.727],[-6.437,1.26]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.165000002992,0.234999997008,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.098,10.831],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":73,"op":125,"st":68,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"smile mouth 7","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-69,"ix":10},"p":{"a":0,"k":[142.187,114.511,0],"ix":2},"a":{"a":0,"k":[11.482,4.861,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.123,-2.449],[2.171,0.663],[3.093,4.221],[-4.573,-1.22]],"o":[[-4.772,2.123],[-2.201,-0.504],[3.062,-1.067],[4.584,1.223]],"v":[[11.232,2.488],[-0.887,2.795],[-11.232,-3.504],[0.763,-3.391]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.226999993418,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.482,4.861],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":125,"op":193,"st":93,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"smile mouth 6","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-69,"ix":10},"p":{"a":0,"k":[111.184,92.062,0],"ix":2},"a":{"a":0,"k":[14.685,7.553,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.277,-0.657],[7.554,2.014],[-0.621,3.981],[-0.749,0.217],[-2.58,-2.702],[-3.765,1.116],[-2.271,-2.345]],"o":[[-1.444,3.763],[-7.543,-2.013],[0.568,-0.433],[3.148,-0.9],[2.698,2.841],[3.573,-1.061],[0.552,0.565]],"v":[[14.435,2.115],[-1.547,5.289],[-13.814,-5.42],[-11.824,-6.403],[-5.278,-2.261],[5.458,0.603],[13.188,0.269]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[14.684,7.553],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":125,"op":193,"st":93,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"smile mouth 5","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-69,"ix":10},"p":{"a":0,"k":[122.619,98.861,0],"ix":2},"a":{"a":0,"k":[16.098,10.831,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.445,-1.712],[1.676,-0.745],[2.17,0.663],[3.093,4.222],[0.389,2.202],[-1.73,1.303],[-0.749,0.217],[-2.58,-2.703],[-3.765,1.116],[-2.271,-2.346],[-0.278,-0.658]],"o":[[-1.435,1.715],[-4.773,2.123],[-2.202,-0.504],[-1.085,-1.469],[-0.391,-2.201],[0.568,-0.432],[3.147,-0.9],[2.698,2.84],[3.572,-1.062],[0.551,0.564],[0.851,1.991]],"v":[[14.07,4.858],[9.332,8.458],[-2.786,8.764],[-13.131,2.465],[-15.457,-3.018],[-13.251,-8.698],[-11.261,-9.68],[-4.715,-5.538],[6.021,-2.674],[13.75,-3.008],[14.997,-1.163]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.165000002992,0.234999997008,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.098,10.831],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":125,"op":193,"st":93,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":"smile mouth 1","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-69,"ix":10},"p":{"a":0,"k":[142.187,114.511,0],"ix":2},"a":{"a":0,"k":[11.482,4.861,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.123,-2.449],[2.171,0.663],[3.093,4.221],[-4.573,-1.22]],"o":[[-4.772,2.123],[-2.201,-0.504],[3.062,-1.067],[4.584,1.223]],"v":[[11.232,2.488],[-0.887,2.795],[-11.232,-3.504],[0.763,-3.391]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741000007181,0.226999993418,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.482,4.861],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":33,"op":73,"st":0,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"smile mouth 2","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-69,"ix":10},"p":{"a":0,"k":[111.184,92.062,0],"ix":2},"a":{"a":0,"k":[14.685,7.553,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.277,-0.657],[7.554,2.014],[-0.621,3.981],[-0.749,0.217],[-2.58,-2.702],[-3.765,1.116],[-2.271,-2.345]],"o":[[-1.444,3.763],[-7.543,-2.013],[0.568,-0.433],[3.148,-0.9],[2.698,2.841],[3.573,-1.061],[0.552,0.565]],"v":[[14.435,2.115],[-1.547,5.289],[-13.814,-5.42],[-11.824,-6.403],[-5.278,-2.261],[5.458,0.603],[13.188,0.269]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[14.684,7.553],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":33,"op":73,"st":0,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"smile mouth 3","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-69,"ix":10},"p":{"a":0,"k":[122.619,98.861,0],"ix":2},"a":{"a":0,"k":[16.098,10.831,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.445,-1.712],[1.676,-0.745],[2.17,0.663],[3.093,4.222],[0.389,2.202],[-1.73,1.303],[-0.749,0.217],[-2.58,-2.703],[-3.765,1.116],[-2.271,-2.346],[-0.278,-0.658]],"o":[[-1.435,1.715],[-4.773,2.123],[-2.202,-0.504],[-1.085,-1.469],[-0.391,-2.201],[0.568,-0.432],[3.147,-0.9],[2.698,2.84],[3.572,-1.062],[0.551,0.564],[0.851,1.991]],"v":[[14.07,4.858],[9.332,8.458],[-2.786,8.764],[-13.131,2.465],[-15.457,-3.018],[-13.251,-8.698],[-11.261,-9.68],[-4.715,-5.538],[6.021,-2.674],[13.75,-3.008],[14.997,-1.163]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.380000005984,0.165000002992,0.234999997008,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.098,10.831],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":33,"op":73,"st":0,"bm":0},{"ddd":0,"ind":27,"ty":4,"nm":"close mouth 2","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[117.011,102.833,0],"ix":2},"a":{"a":0,"k":[21.392,11.677,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14.208,2.198],[0,0]],"o":[[0,0],[14.208,-2.198],[0,0]],"v":[[-16.392,-1.604],[1.391,4.479],[16.392,-6.677]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.830999995213,0.510000011968,0.435000011968,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[21.392,11.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":193,"op":284,"st":217,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":"close mouth","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[117.011,102.833,0],"ix":2},"a":{"a":0,"k":[21.392,11.677,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14.208,2.198],[0,0]],"o":[[0,0],[14.208,-2.198],[0,0]],"v":[[-16.392,-1.604],[1.391,4.479],[16.392,-6.677]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.830999995213,0.510000011968,0.435000011968,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[21.392,11.677],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":33,"st":0,"bm":0},{"ddd":0,"ind":29,"ty":4,"nm":"oreol","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[52.319,-29.257,0],"ix":2},"a":{"a":0,"k":[51.25,23.689,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21.742,-1.761],[0.746,9.209],[-21.742,1.761],[-0.747,-9.209]],"o":[[-21.742,1.761],[-0.746,-9.21],[21.742,-1.76],[0.745,9.21]],"v":[[1.351,16.674],[-39.368,3.189],[-1.35,-16.676],[39.369,-3.189]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[27.642,-2.238],[-0.949,-11.709],[-27.642,2.24],[0.948,11.709]],"o":[[-27.644,2.239],[0.948,11.708],[27.643,-2.238],[-0.948,-11.709]],"v":[[-1.716,-21.202],[-50.051,4.053],[1.717,21.199],[50.052,-4.054]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.913725490196,0.439215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[51.25,23.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":30,"ty":4,"nm":"eye closed 7","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-65.148,"ix":10},"p":{"a":0,"k":[-8.287,114.72,0],"ix":2},"a":{"a":0,"k":[-45,-130.833,0],"ix":1},"s":{"a":0,"k":[-163.084,158.353,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-56.721,-120.01],[-27.925,-133.157]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-55.5,-121.25],[-28.983,-136.442]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-42.75,-132.378],"ix":2},"a":{"a":0,"k":[-43.265,-135.401],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":8,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":146,"op":190,"st":152,"bm":0},{"ddd":0,"ind":31,"ty":4,"nm":"eye closed 6","parent":30,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.852,"ix":10},"p":{"a":0,"k":[-24.518,-137.146,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[298.022,298.022,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":146,"op":190,"st":152,"bm":0},{"ddd":0,"ind":32,"ty":4,"nm":"eye closed 5","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[96.993,-19.548,0],"ix":2},"a":{"a":0,"k":[-45,-130.833,0],"ix":1},"s":{"a":0,"k":[160.701,160.701,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-56.652,-120.53],[-29.998,-132.824]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-55.5,-121.25],[-28.125,-135.417]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-42.75,-132.378],"ix":2},"a":{"a":0,"k":[-43.265,-135.401],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":8,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":146,"op":190,"st":152,"bm":0},{"ddd":0,"ind":33,"ty":4,"nm":"eyes 33","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.852,"ix":10},"p":{"a":0,"k":[-25.216,-135.797,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[298.022,298.022,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":146,"op":190,"st":152,"bm":0},{"ddd":0,"ind":34,"ty":4,"nm":"eye closed 4","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-65.148,"ix":10},"p":{"a":0,"k":[-8.287,114.72,0],"ix":2},"a":{"a":0,"k":[-45,-130.833,0],"ix":1},"s":{"a":0,"k":[-163.084,158.353,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-56.721,-120.01],[-27.925,-133.157]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-55.5,-121.25],[-28.983,-136.442]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-42.75,-132.378],"ix":2},"a":{"a":0,"k":[-43.265,-135.401],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":8,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":126,"st":67,"bm":0},{"ddd":0,"ind":35,"ty":4,"nm":"eye closed 3","parent":34,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.852,"ix":10},"p":{"a":0,"k":[-24.518,-137.146,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[298.022,298.022,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":126,"st":67,"bm":0},{"ddd":0,"ind":36,"ty":4,"nm":"eye closed 2","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[96.993,-19.548,0],"ix":2},"a":{"a":0,"k":[-45,-130.833,0],"ix":1},"s":{"a":0,"k":[160.701,160.701,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-56.652,-120.53],[-29.998,-132.824]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-26,-10]],"o":[[0,0],[8.605,3.31]],"v":[[-55.5,-121.25],[-28.125,-135.417]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.43137254902,0.160784313725,0.133333333333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-42.75,-132.378],"ix":2},"a":{"a":0,"k":[-43.265,-135.401],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":8,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":126,"st":67,"bm":0},{"ddd":0,"ind":37,"ty":4,"nm":"eyes 20","parent":36,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.852,"ix":10},"p":{"a":0,"k":[-25.216,-135.797,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[298.022,298.022,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":126,"st":67,"bm":0},{"ddd":0,"ind":38,"ty":4,"nm":"cheecks","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[184.381,-50.307,0],"ix":2},"a":{"a":0,"k":[11.524,9.287,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.338,-3.969],[-5.488,-1.85],[-1.339,3.968],[5.488,1.852]],"o":[[-1.339,3.969],[5.487,1.852],[1.339,-3.969],[-5.487,-1.851]],"v":[[-9.935,-3.352],[-2.424,7.185],[9.935,3.352],[2.424,-7.186]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.642999985639,0.596000043084,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.524,9.287],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":39,"ty":4,"nm":"cheecks","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-0.676,202.495,0],"ix":2},"a":{"a":0,"k":[11.184,9.826,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.475,-3.378],[4.672,-3.423],[2.476,3.378],[-4.672,3.423]],"o":[[2.476,3.379],[-4.67,3.423],[-2.476,-3.378],[4.67,-3.423]],"v":[[8.458,-6.198],[4.482,6.117],[-8.458,6.198],[-4.481,-6.117]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.642999985639,0.596000043084,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.184,9.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":40,"ty":4,"nm":"eyes 32","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[99.403,-49.636,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":189,"op":229,"st":95,"bm":0},{"ddd":0,"ind":41,"ty":4,"nm":"eyes 31","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[90.237,-32.309,0],"ix":2},"a":{"a":0,"k":[2.127,2.127,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[-0.955,0.147],[0.147,0.955],[0.955,-0.148]],"o":[[0.147,0.955],[0.955,-0.149],[-0.147,-0.955],[-0.955,0.147]],"v":[[-1.729,0.268],[0.267,1.73],[1.73,-0.267],[-0.267,-1.729]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.126,2.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":189,"op":229,"st":95,"bm":0},{"ddd":0,"ind":42,"ty":4,"nm":"eyes 30","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[97.008,-27.352,0],"ix":2},"a":{"a":0,"k":[5.449,5.449,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[-2.646,0.409],[0.409,2.645],[2.645,-0.409]],"o":[[0.409,2.646],[2.646,-0.409],[-0.409,-2.647],[-2.647,0.409]],"v":[[-4.79,0.741],[0.742,4.79],[4.791,-0.741],[-0.74,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.449,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":189,"op":229,"st":95,"bm":0},{"ddd":0,"ind":43,"ty":4,"nm":"eyes 29","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-30.708,128.136,0],"ix":2},"a":{"a":0,"k":[2.08,2.373,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.014,0.904],[-0.641,-0.442],[-0.327,-0.031],[-0.311,0.087],[0,0],[0.513,0.29],[0.288,0.432]],"o":[[0.33,0.835],[0.318,0.222],[0.323,0.046],[0,0],[-0.572,-0.056],[-0.507,-0.271],[-0.572,-0.87]],"v":[[-1.83,-2.123],[-0.327,-0.09],[0.667,0.27],[1.638,0.132],[1.83,2.123],[0.168,1.685],[-1.052,0.6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.08,2.373],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":189,"op":229,"st":95,"bm":0},{"ddd":0,"ind":44,"ty":4,"nm":"eyes 28","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-16.907,114.065,0],"ix":2},"a":{"a":0,"k":[2.127,2.128,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[0.955,-0.147],[0.148,0.955],[-0.955,0.149]],"o":[[0.148,0.955],[-0.955,0.149],[-0.147,-0.955],[0.955,-0.147]],"v":[[1.729,-0.269],[0.267,1.728],[-1.73,0.266],[-0.268,-1.731]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.127,2.128],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":189,"op":229,"st":95,"bm":0},{"ddd":0,"ind":45,"ty":4,"nm":"eyes 27","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-10.138,119.018,0],"ix":2},"a":{"a":0,"k":[5.45,5.45,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[2.646,-0.409],[0.409,2.646],[-2.647,0.409]],"o":[[0.41,2.646],[-2.646,0.409],[-0.409,-2.645],[2.645,-0.41]],"v":[[4.79,-0.741],[0.741,4.791],[-4.791,0.741],[-0.741,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.45,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":189,"op":229,"st":95,"bm":0},{"ddd":0,"ind":46,"ty":4,"nm":"eyes 26","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[99.403,-49.636,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126,"op":146,"st":95,"bm":0},{"ddd":0,"ind":47,"ty":4,"nm":"eyes 25","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[90.237,-32.309,0],"ix":2},"a":{"a":0,"k":[2.127,2.127,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[-0.955,0.147],[0.147,0.955],[0.955,-0.148]],"o":[[0.147,0.955],[0.955,-0.149],[-0.147,-0.955],[-0.955,0.147]],"v":[[-1.729,0.268],[0.267,1.73],[1.73,-0.267],[-0.267,-1.729]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.126,2.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126,"op":146,"st":95,"bm":0},{"ddd":0,"ind":48,"ty":4,"nm":"eyes 24","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[97.008,-27.352,0],"ix":2},"a":{"a":0,"k":[5.449,5.449,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[-2.646,0.409],[0.409,2.645],[2.645,-0.409]],"o":[[0.409,2.646],[2.646,-0.409],[-0.409,-2.647],[-2.647,0.409]],"v":[[-4.79,0.741],[0.742,4.79],[4.791,-0.741],[-0.74,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.449,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126,"op":146,"st":95,"bm":0},{"ddd":0,"ind":49,"ty":4,"nm":"eyes 23","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-30.708,128.136,0],"ix":2},"a":{"a":0,"k":[2.08,2.373,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.014,0.904],[-0.641,-0.442],[-0.327,-0.031],[-0.311,0.087],[0,0],[0.513,0.29],[0.288,0.432]],"o":[[0.33,0.835],[0.318,0.222],[0.323,0.046],[0,0],[-0.572,-0.056],[-0.507,-0.271],[-0.572,-0.87]],"v":[[-1.83,-2.123],[-0.327,-0.09],[0.667,0.27],[1.638,0.132],[1.83,2.123],[0.168,1.685],[-1.052,0.6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.08,2.373],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126,"op":146,"st":95,"bm":0},{"ddd":0,"ind":50,"ty":4,"nm":"eyes 22","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-16.907,114.065,0],"ix":2},"a":{"a":0,"k":[2.127,2.128,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[0.955,-0.147],[0.148,0.955],[-0.955,0.149]],"o":[[0.148,0.955],[-0.955,0.149],[-0.147,-0.955],[0.955,-0.147]],"v":[[1.729,-0.269],[0.267,1.728],[-1.73,0.266],[-0.268,-1.731]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.127,2.128],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126,"op":146,"st":95,"bm":0},{"ddd":0,"ind":51,"ty":4,"nm":"eyes 21","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-10.138,119.018,0],"ix":2},"a":{"a":0,"k":[5.45,5.45,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[2.646,-0.409],[0.409,2.646],[-2.647,0.409]],"o":[[0.41,2.646],[-2.646,0.409],[-0.409,-2.645],[2.645,-0.41]],"v":[[4.79,-0.741],[0.741,4.791],[-4.791,0.741],[-0.741,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.45,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":126,"op":146,"st":95,"bm":0},{"ddd":0,"ind":52,"ty":4,"nm":"eyes 13","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[99.403,-49.636,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":61,"st":42,"bm":0},{"ddd":0,"ind":53,"ty":4,"nm":"eyes 12","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[90.237,-32.309,0],"ix":2},"a":{"a":0,"k":[2.127,2.127,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[-0.955,0.147],[0.147,0.955],[0.955,-0.148]],"o":[[0.147,0.955],[0.955,-0.149],[-0.147,-0.955],[-0.955,0.147]],"v":[[-1.729,0.268],[0.267,1.73],[1.73,-0.267],[-0.267,-1.729]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.126,2.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":61,"st":42,"bm":0},{"ddd":0,"ind":54,"ty":4,"nm":"eyes 11","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[97.008,-27.352,0],"ix":2},"a":{"a":0,"k":[5.449,5.449,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[-2.646,0.409],[0.409,2.645],[2.645,-0.409]],"o":[[0.409,2.646],[2.646,-0.409],[-0.409,-2.647],[-2.647,0.409]],"v":[[-4.79,0.741],[0.742,4.79],[4.791,-0.741],[-0.74,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.449,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":61,"st":42,"bm":0},{"ddd":0,"ind":55,"ty":4,"nm":"eyes 10","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-30.708,128.136,0],"ix":2},"a":{"a":0,"k":[2.08,2.373,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.014,0.904],[-0.641,-0.442],[-0.327,-0.031],[-0.311,0.087],[0,0],[0.513,0.29],[0.288,0.432]],"o":[[0.33,0.835],[0.318,0.222],[0.323,0.046],[0,0],[-0.572,-0.056],[-0.507,-0.271],[-0.572,-0.87]],"v":[[-1.83,-2.123],[-0.327,-0.09],[0.667,0.27],[1.638,0.132],[1.83,2.123],[0.168,1.685],[-1.052,0.6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.08,2.373],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":61,"st":42,"bm":0},{"ddd":0,"ind":56,"ty":4,"nm":"eyes 9","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-16.907,114.065,0],"ix":2},"a":{"a":0,"k":[2.127,2.128,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[0.955,-0.147],[0.148,0.955],[-0.955,0.149]],"o":[[0.148,0.955],[-0.955,0.149],[-0.147,-0.955],[0.955,-0.147]],"v":[[1.729,-0.269],[0.267,1.728],[-1.73,0.266],[-0.268,-1.731]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.127,2.128],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":61,"st":42,"bm":0},{"ddd":0,"ind":57,"ty":4,"nm":"eyes 8","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-10.138,119.018,0],"ix":2},"a":{"a":0,"k":[5.45,5.45,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[2.646,-0.409],[0.409,2.646],[-2.647,0.409]],"o":[[0.41,2.646],[-2.646,0.409],[-0.409,-2.645],[2.645,-0.41]],"v":[[4.79,-0.741],[0.741,4.791],[-4.791,0.741],[-0.741,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.45,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":61,"st":42,"bm":0},{"ddd":0,"ind":58,"ty":4,"nm":"eyes 1","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[99.403,-49.636,0],"ix":2},"a":{"a":0,"k":[1.744,2.826,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.062,0.896],[0.283,-1.003],[0.401,-0.411],[0.529,-0.226],[0,0],[-0.294,0.143],[-0.237,0.308]],"o":[[0.261,0.865],[-0.143,0.5],[-0.401,0.431],[0,0],[0.323,-0.011],[0.302,-0.128],[0.477,-0.616]],"v":[[1.13,-2.577],[1.211,0.254],[0.377,1.657],[-1.075,2.577],[-1.494,0.621],[-0.526,0.459],[0.313,-0.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.744,2.826],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":59,"ty":4,"nm":"eyes 2","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[90.237,-32.309,0],"ix":2},"a":{"a":0,"k":[2.127,2.127,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[-0.955,0.147],[0.147,0.955],[0.955,-0.148]],"o":[[0.147,0.955],[0.955,-0.149],[-0.147,-0.955],[-0.955,0.147]],"v":[[-1.729,0.268],[0.267,1.73],[1.73,-0.267],[-0.267,-1.729]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.126,2.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":60,"ty":4,"nm":"eyes 3","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[97.008,-27.352,0],"ix":2},"a":{"a":0,"k":[5.449,5.449,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[-2.646,0.409],[0.409,2.645],[2.645,-0.409]],"o":[[0.409,2.646],[2.646,-0.409],[-0.409,-2.647],[-2.647,0.409]],"v":[[-4.79,0.741],[0.742,4.79],[4.791,-0.741],[-0.74,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.449,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":61,"ty":4,"nm":"eyes 4","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-30.708,128.136,0],"ix":2},"a":{"a":0,"k":[2.08,2.373,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.014,0.904],[-0.641,-0.442],[-0.327,-0.031],[-0.311,0.087],[0,0],[0.513,0.29],[0.288,0.432]],"o":[[0.33,0.835],[0.318,0.222],[0.323,0.046],[0,0],[-0.572,-0.056],[-0.507,-0.271],[-0.572,-0.87]],"v":[[-1.83,-2.123],[-0.327,-0.09],[0.667,0.27],[1.638,0.132],[1.83,2.123],[0.168,1.685],[-1.052,0.6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.08,2.373],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":62,"ty":4,"nm":"eyes 5","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-16.907,114.065,0],"ix":2},"a":{"a":0,"k":[2.127,2.128,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.147,-0.955],[0.955,-0.147],[0.148,0.955],[-0.955,0.149]],"o":[[0.148,0.955],[-0.955,0.149],[-0.147,-0.955],[0.955,-0.147]],"v":[[1.729,-0.269],[0.267,1.728],[-1.73,0.266],[-0.268,-1.731]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.127,2.128],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":63,"ty":4,"nm":"eyes 6","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[-10.138,119.018,0],"ix":2},"a":{"a":0,"k":[5.45,5.45,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.409,-2.646],[2.646,-0.409],[0.409,2.646],[-2.647,0.409]],"o":[[0.41,2.646],[-2.646,0.409],[-0.409,-2.645],[2.645,-0.41]],"v":[[4.79,-0.741],[0.741,4.791],[-4.791,0.741],[-0.741,-4.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.161000001197,0.13300000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.45,5.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":64,"ty":4,"nm":"hair 1","parent":70,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[35.492,63.122,0],"ix":2},"a":{"a":0,"k":[5.036,6.188,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.197,-2.618],[2.619,-1.198],[1.197,2.617],[-2.619,1.198]],"o":[[1.197,2.617],[-2.617,1.197],[-1.197,-2.618],[2.617,-1.198]],"v":[[3.314,-1.515],[2.167,4.741],[-2.313,1.222],[-2.167,-4.74]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.286000001197,0.086000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.036,6.188],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":65,"ty":4,"nm":"hair 2","parent":70,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[44.927,57.654,0],"ix":2},"a":{"a":0,"k":[7.629,9.148,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.246,-3.977],[3.004,-1.696],[2.246,3.976],[-3.004,1.696]],"o":[[2.246,3.978],[-3.004,1.698],[-2.246,-3.978],[3.004,-1.697]],"v":[[5.133,-3.073],[3.759,7.201],[-4.027,2.101],[-4.374,-7.201]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.286000001197,0.086000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.628,9.148],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":66,"ty":4,"nm":"hair 3","parent":71,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[52.104,55.4,0],"ix":2},"a":{"a":0,"k":[5.277,7.122,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.453,3.274],[-2.125,-0.942],[1.453,-3.274],[2.124,0.943]],"o":[[1.453,-3.274],[2.124,0.943],[-1.454,3.274],[-2.124,-0.943]],"v":[[-3.574,-1.707],[2.903,-5.93],[3.111,1.959],[-2.36,5.929]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.286000001197,0.086000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.278,7.122],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":67,"ty":4,"nm":"hair 4","parent":71,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[67.259,62.078,0],"ix":2},"a":{"a":0,"k":[11.097,12.606,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.613,-5.889],[3.819,1.695],[-2.612,5.888],[-3.819,-1.695]],"o":[[-2.612,5.888],[-3.819,-1.695],[2.614,-5.887],[3.82,1.695]],"v":[[8.234,3.069],[-3.412,10.661],[-8.235,-4.655],[6.049,-10.661]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8,0.286000001197,0.086000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.097,12.606],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":68,"ty":4,"nm":"hair top","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[77.871,-20.356,0],"ix":2},"a":{"a":0,"k":[8.149,9.557,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.071,-4.195],[2.338,1.711],[-3.07,4.195],[-2.338,-1.712]],"o":[[-3.071,4.195],[-2.339,-1.712],[3.072,-4.196],[2.338,1.711]],"v":[[4.234,3.099],[-5.56,7.596],[-4.234,-3.099],[5.561,-7.595]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.149,9.557],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":69,"ty":4,"nm":"hair 5","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[66.79,-19.571,0],"ix":2},"a":{"a":0,"k":[7.744,10.258,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.633,-4.936],[3.237,-1.071],[1.633,4.936],[-3.237,1.07]],"o":[[1.633,4.937],[-3.237,1.07],[-1.632,-4.937],[3.237,-1.071]],"v":[[5.861,-1.939],[2.956,8.938],[-5.862,1.939],[-2.957,-8.937]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.744,10.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":70,"ty":4,"nm":"hair l 6","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":29,"s":[-45],"e":[-49]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64,"s":[-49],"e":[-49]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":138,"s":[-49],"e":[-45]},{"t":171}],"ix":10},"p":{"a":0,"k":[-156.811,-182.395,0],"ix":2},"a":{"a":0,"k":[6.103,15.26,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[72.488,-11.216],[-34.693,5.368],[0,0]],"v":[[-36.244,-33.583],[22.881,39.43],[-28.919,-11.895]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[36.494,45.049],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":71,"ty":4,"nm":"hair r 7","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":29,"s":[-45],"e":[-45]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":64,"s":[-45],"e":[-45]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":138,"s":[-45],"e":[-45]},{"t":171}],"ix":10},"p":{"a":0,"k":[-147.44,-158.723,0],"ix":2},"a":{"a":0,"k":[107.976,11.032,0],"ix":1},"s":{"a":0,"k":[400,400,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[66.867,-10.346],[-104.565,16.179]],"o":[[0,0],[0,0],[0,0]],"v":[[59.578,-45.967],[-11.791,45.967],[44.987,-44.979]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[59.827,46.218],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":72,"ty":4,"nm":"hair 9","parent":71,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[105.988,59.829,0],"ix":2},"a":{"a":0,"k":[58.201,37.689,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-14.26,68.973],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-55.882,30.621],[11.469,-35.493],[11.129,-45.647],[-25.124,-28.689]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.556999954523,0.435000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[58.201,37.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":73,"ty":4,"nm":"hair 8","parent":70,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.423,70.057,0],"ix":2},"a":{"a":0,"k":[58.201,37.689,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-44.533,2.521],[0,0]],"o":[[0,0],[0,0]],"v":[[57.951,14.421],[7.302,-35.587]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.556999954523,0.435000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[58.201,37.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":74,"ty":4,"nm":"Layer 1,535 Outlines","parent":75,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[16.259,12.111,0],"ix":2},"a":{"a":0,"k":[11.942,7.794,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.743,-0.115],[0.116,0.743],[4.669,-0.723],[-0.723,-4.67],[0.743,-0.114],[0.116,0.744],[-6.152,0.951],[-0.952,-6.152]],"o":[[-0.743,0.115],[-0.722,-4.669],[-4.67,0.722],[0.115,0.744],[-0.742,0.115],[-0.952,-6.152],[6.153,-0.953],[0.115,0.743]],"v":[[10.441,4.393],[8.886,3.256],[-0.891,-3.901],[-8.05,5.877],[-9.188,7.43],[-10.74,6.293],[-1.308,-6.591],[11.578,2.84]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.556999954523,0.435000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.942,7.795],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":75,"ty":4,"nm":"ear l","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[122.44,53.98,0],"e":[122.014,53.98,0],"to":[-0.07098765671253,0,0],"ti":[0.07098765671253,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":64,"s":[122.014,53.98,0],"e":[122.014,53.98,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":138,"s":[122.014,53.98,0],"e":[122.44,53.98,0],"to":[0.07098765671253,0,0],"ti":[-0.07098765671253,0,0]},{"t":171}],"ix":2},"a":{"a":0,"k":[16.678,16.678,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.294,-8.358],[8.358,-1.293],[1.293,8.358],[-8.357,1.293]],"o":[[1.293,8.358],[-8.358,1.294],[-1.293,-8.359],[8.359,-1.294]],"v":[[15.135,-2.342],[2.341,15.134],[-15.135,2.342],[-2.343,-15.134]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.677,16.678],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":76,"ty":4,"nm":"head","parent":84,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[5.044,8.441,0],"ix":2},"a":{"a":0,"k":[67.784,97.428,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-32.006,4.952],[-4.952,-32.005],[32.006,-4.952],[4.952,32.006]],"o":[[32.006,-4.952],[4.952,32.007],[-32.005,4.952],[-4.953,-32.006]],"v":[[-8.966,-48.707],[57.952,0.277],[7.892,48.707],[-57.951,18.211]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.154,53.909],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":77,"ty":4,"nm":"Layer 1,537 Outlines","parent":78,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[16.259,12.111,0],"ix":2},"a":{"a":0,"k":[11.942,7.794,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.743,-0.115],[0.116,0.742],[4.67,-0.723],[-0.723,-4.67],[0.742,-0.115],[0.116,0.744],[-6.153,0.952],[-0.952,-6.152]],"o":[[-0.743,0.115],[-0.722,-4.67],[-4.67,0.723],[0.115,0.744],[-0.743,0.114],[-0.952,-6.152],[6.152,-0.953],[0.115,0.743]],"v":[[10.441,4.393],[8.887,3.257],[-0.891,-3.901],[-8.049,5.877],[-9.186,7.431],[-10.74,6.293],[-1.307,-6.591],[11.578,2.84]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.556999954523,0.435000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.942,7.794],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":78,"ty":4,"nm":"ear r","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[2.561,72.529,0],"e":[8.58,72.529,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":64,"s":[8.58,72.529,0],"e":[8.58,72.529,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":138,"s":[8.58,72.529,0],"e":[2.561,72.529,0],"to":[0,0,0],"ti":[0,0,0]},{"t":171}],"ix":2},"a":{"a":0,"k":[16.677,16.678,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.293,-8.358],[8.358,-1.294],[1.293,8.358],[-8.358,1.293]],"o":[[1.293,8.358],[-8.358,1.293],[-1.293,-8.359],[8.359,-1.293]],"v":[[15.135,-2.342],[2.341,15.134],[-15.135,2.342],[-2.341,-15.134]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.677,16.678],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":79,"ty":4,"nm":"back hair l","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[112.024,71.268,0],"e":[121.746,69.416,0],"to":[1.62037038803101,-0.30864197015762,0],"ti":[-1.62037038803101,0.30864197015762,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":64,"s":[121.746,69.416,0],"e":[121.746,69.416,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":138,"s":[121.746,69.416,0],"e":[112.024,71.268,0],"to":[-1.62037038803101,0.30864197015762,0],"ti":[1.62037038803101,-0.30864197015762,0]},{"t":171}],"ix":2},"a":{"a":0,"k":[24.652,22.46,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.921,-12.415],[-12.416,1.921],[1.921,12.415],[12.416,-1.921]],"o":[[1.921,12.416],[12.415,-1.921],[-1.921,-12.416],[-12.416,1.922]],"v":[[-22.48,5.67],[1.158,20.289],[22.481,-1.286],[-3.479,-20.289]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.651,22.46],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":80,"ty":4,"nm":"shin 1","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[112.047,39.351,0],"ix":2},"a":{"a":0,"k":[16.304,16.304,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.264,-8.169],[-8.168,1.264],[1.264,8.169],[8.168,-1.264]],"o":[[1.265,8.168],[8.169,-1.264],[-1.264,-8.169],[-8.169,1.264]],"v":[[-14.79,2.288],[2.288,14.79],[14.791,-2.289],[-2.287,-14.791]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.304,16.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":81,"ty":4,"nm":"shin 2","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.61,60.476,0],"ix":2},"a":{"a":0,"k":[16.305,16.304,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.264,-8.168],[8.168,-1.264],[1.264,8.169],[-8.169,1.265]],"o":[[1.264,8.169],[-8.169,1.264],[-1.264,-8.168],[8.169,-1.264]],"v":[[14.791,-2.289],[2.289,14.791],[-14.791,2.289],[-2.289,-14.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.304,16.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":82,"ty":4,"nm":"shad 2","parent":16,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[14.928,41.938,0],"ix":2},"a":{"a":0,"k":[11.049,31.238,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.55,-3.438],[-7.86,-9.494],[5.691,-11.725],[0,0],[0,0]],"o":[[0,0],[5.765,6.965],[0,0],[0,0],[0,0]],"v":[[-9.738,-27.55],[-2.939,-12.325],[-4.576,30.988],[10.799,23.181],[10.799,-4.819]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.788000009574,0.788000009574,0.788000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.049,31.238],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":83,"ty":4,"nm":"blues","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[85.913,85.223,0],"ix":2},"a":{"a":0,"k":[34.448,34.427,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[55.438,-14.643],[0,0],[-22.167,22.167],[0,0]],"o":[[0,0],[0,0],[0,0],[22.167,-22.167],[0,0]],"v":[[28.459,-34.177],[-34.197,29.584],[-29.362,34.177],[12.03,9.06],[34.056,-31.154]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.573000021542,0.651000019148,0.830999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.447,34.427],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":84,"ty":4,"nm":"shadow neck","parent":85,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[9.903,8.55,0],"ix":2},"a":{"a":0,"k":[9.904,8.549,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.81,-4.612],[12.275,-1.29],[-0.842,3.315],[-4.836,-1.228]],"o":[[-0.371,0.649],[-2.328,-2.169],[1.23,-4.846],[4.624,1.174]],"v":[[8.844,3.238],[-6.215,8.299],[-8.812,-0.531],[2.164,-7.072]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.830999995213,0.556999954523,0.435000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.904,8.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":85,"ty":4,"nm":"neck","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[20.861,10.174,0],"ix":2},"a":{"a":0,"k":[9.44,16.718,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.057,-0.224],[4.846,1.23],[1.075,1.006],[-0.841,3.314],[-4.836,-1.229],[0.809,-4.612]],"o":[[-1.228,4.836],[-1.532,-0.389],[-2.328,-2.169],[1.231,-4.847],[4.624,1.173],[-0.037,0.229]],"v":[[8.703,2.228],[-2.281,8.756],[-6.214,6.612],[-8.812,-2.218],[2.165,-8.758],[8.844,1.552]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.903,10.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":86,"ty":4,"nm":"Layer 1,547 Outlines","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[81.925,38.895,0],"ix":2},"a":{"a":0,"k":[46.795,37.135,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-25.33,-12.72],[2.37,-5.51],[0,0],[0,0],[-3.71,-2.91]],"o":[[-0.6,5.979],[-25.2,-3.69],[0,0],[4.27,2.45],[22.33,17.46]],"v":[[46.545,19.565],[41.995,36.885],[-46.545,-36.885],[-37.155,-35.565],[-25.165,-25.865]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.788000009574,0.788000009574,0.788000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.795,37.135],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":88,"ty":4,"nm":"body","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p667_1_0p167_0"],"t":22,"s":[35],"e":[-11]},{"i":{"x":[0.667],"y":[0.942]},"o":{"x":[0.333],"y":[0]},"n":["0p667_0p942_0p333_0"],"t":60.247,"s":[-11],"e":[36.5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[-0.229]},"n":["0p667_1_0p333_-0p229"],"t":88.623,"s":[36.5],"e":[0]},{"t":175}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.58,"y":0.413},"o":{"x":0.168,"y":0},"n":"0p58_0p413_0p168_0","t":8,"s":[710.039,2561.145,0],"e":[846.323,1613.871,0],"to":[174.261337280273,-391.487548828125,0],"ti":[6.57180976867676,118.212509155273,0]},{"i":{"x":0.835,"y":1},"o":{"x":0.413,"y":0.511},"n":"0p835_1_0p413_0p511","t":33,"s":[846.323,1613.871,0],"e":[796.219,1093.145,0],"to":[-14.7029590606689,-264.47412109375,0],"ti":[0,108.732818603516,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":45,"s":[796.219,1093.145,0],"e":[796.219,1097.145,0],"to":[0,-157.33332824707,0],"ti":[0,6.66666650772095,0]},{"i":{"x":0.817,"y":1},"o":{"x":0.49,"y":0},"n":"0p817_1_0p49_0","t":61,"s":[796.219,1097.145,0],"e":[796.219,1053.145,0],"to":[0,-6.66666650772095,0],"ti":[0,7.33333349227905,0]},{"i":{"x":0.773,"y":1},"o":{"x":0.273,"y":0},"n":"0p773_1_0p273_0","t":93,"s":[796.219,1053.145,0],"e":[780.219,1131.145,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.686,"y":0.797},"o":{"x":0.352,"y":0},"n":"0p686_0p797_0p352_0","t":140,"s":[780.219,1131.145,0],"e":[799.974,1233.594,0],"to":[0,0,0],"ti":[-4.48949480056763,21.8862857818604,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.35,"y":0.058},"n":"0p667_1_0p35_0p058","t":152,"s":[799.974,1233.594,0],"e":[264.219,-194.855,0],"to":[3.33704876899719,-16.2681121826172,0],"ti":[431.333343505859,530.666687011719,0]},{"t":195}],"ix":2},"a":{"a":0,"k":[70.841,81.905,0],"ix":1},"s":{"a":0,"k":[184.932,184.932,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-25.33,-12.72],[2.37,-5.51],[6.991,-6.62],[14.94,-4.62],[1.639,0.26],[1.55,1.4],[-9.13,43.15],[-6.64,-0.369],[-3.49,-1.11],[-0.81,-0.431],[-0.17,-0.1],[-3.71,-2.91]],"o":[[-0.6,5.979],[-3.78,8.829],[-11.36,10.76],[-1.579,0.489],[-2.071,-0.33],[-31.359,-28.44],[6.64,0.37],[3.67,0.201],[0.83,0.27],[0.17,0.09],[4.27,2.45],[22.33,17.46]],"v":[[64.11,-3.075],[59.56,14.245],[43.01,37.715],[2.37,60.335],[-2.499,61.025],[-7.81,57.865],[-54.98,-61.285],[-35.06,-60.176],[-22.57,-59.555],[-20.1,-58.495],[-19.59,-58.205],[-7.6,-48.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.984000052658,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[64.36,61.535],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":89,"ty":4,"nm":"l leg","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":50,"s":[0],"e":[0]},{"i":{"x":[0.077],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p077_1_0p333_0"],"t":77,"s":[0],"e":[41.393]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":101,"s":[41.393],"e":[34]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":138,"s":[34],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":156,"s":[0],"e":[0]},{"t":169}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":76,"s":[101.415,77.071,0],"e":[107.018,84.442,0],"to":[0.93395668268204,1.22850382328033,0],"ti":[-0.93395668268204,-1.22850382328033,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":92,"s":[107.018,84.442,0],"e":[107.018,84.442,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":140,"s":[107.018,84.442,0],"e":[101.415,77.071,0],"to":[-0.93395668268204,-1.22850382328033,0],"ti":[0.93395668268204,1.22850382328033,0]},{"t":156}],"ix":2},"a":{"a":0,"k":[4.433,5.889,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.048,-1.41],[-1.72,0.008],[-4.739,0.261],[-3.705,-3.946],[0.719,-4.305],[4.46,-0.486],[0.979,2.286],[0.82,1.323],[2.209,0.282],[4.601,0.36],[2.542,1.03],[2.83,4.294],[-0.007,0.545],[-0.633,0.504],[-2.804,2.239]],"o":[[0.939,3.225],[1.562,0.722],[4.746,-0.02],[5.405,-0.298],[3.202,3.413],[-0.578,3.46],[-2.473,0.268],[-0.612,-1.432],[-1.327,-2.142],[-4.578,-0.585],[-2.735,-0.214],[-4.765,-1.931],[-0.3,-0.455],[0.01,-0.809],[2.803,-2.238],[0,0]],"v":[[-16.659,-16.658],[-11.426,-8.429],[-6.36,-7.709],[7.873,-8.011],[23.203,-4.679],[25.51,8.085],[20.194,16.945],[14.247,13.317],[12.726,8.915],[6.754,6.528],[-7.017,5.11],[-15.085,3.68],[-25.794,-7.077],[-26.398,-8.569],[-25.066,-10.497],[-16.655,-17.213]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.655,17.463],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":90,"ty":4,"nm":"r leg","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":50,"s":[0],"e":[0]},{"i":{"x":[0.077],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p077_1_0p333_0"],"t":77,"s":[0],"e":[41.393]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":101,"s":[41.393],"e":[34]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":138,"s":[34],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":156,"s":[0],"e":[0]},{"t":169}],"ix":10},"p":{"a":0,"k":[85.219,102.204,0],"ix":2},"a":{"a":0,"k":[6.285,4.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.047,-1.41],[-1.721,0.008],[-4.738,0.262],[-3.705,-3.946],[0.719,-4.306],[4.46,-0.485],[0.979,2.287],[0.82,1.324],[2.209,0.282],[4.601,0.36],[2.542,1.03],[2.83,4.293],[-0.008,0.545],[-0.632,0.504],[-2.805,2.239]],"o":[[0.939,3.225],[1.562,0.722],[4.746,-0.02],[5.405,-0.297],[3.203,3.413],[-0.578,3.46],[-2.473,0.269],[-0.612,-1.432],[-1.327,-2.141],[-4.578,-0.584],[-2.735,-0.214],[-4.765,-1.932],[-0.3,-0.455],[0.009,-0.809],[2.803,-2.239],[0,0]],"v":[[-16.659,-16.658],[-11.427,-8.429],[-6.359,-7.709],[7.873,-8.012],[23.203,-4.679],[25.51,8.085],[20.193,16.944],[14.246,13.316],[12.727,8.914],[6.755,6.527],[-7.017,5.11],[-15.085,3.68],[-25.794,-7.077],[-26.397,-8.569],[-25.067,-10.497],[-16.655,-17.213]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.808000033509,0.635000011968,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.655,17.463],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":91,"ty":4,"nm":"brace 1","parent":93,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[19.616,49.948,0],"ix":2},"a":{"a":0,"k":[9.448,17.56,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.598,-10.476],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.198,-15.69],[5.224,17.31],[9.198,15.139],[-4.066,-17.31]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.573000021542,0.651000019148,0.830999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.448,17.56],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":92,"ty":4,"nm":"shad 1","parent":93,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[30.1,49.32,0],"ix":2},"a":{"a":0,"k":[26.07,21.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[4.071,-4.48],[0,0],[2.441,6.65],[-8.481,6.19],[0,0]],"o":[[-2.02,10.22],[-8.959,9.84],[-5.951,-3.15],[3.6,-0.14],[9.25,-6.75],[0,0]],"v":[[25.82,-21.24],[15.8,3.75],[-13.579,21.25],[-25.82,4.71],[8.291,-2.75],[25.81,-21.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.788000009574,0.788000009574,0.788000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.07,21.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":93,"ty":4,"nm":"r arm","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.748],"y":[0]},"n":["0p667_1_0p748_0"],"t":18,"s":[0],"e":[-32]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.659],"y":[0]},"n":["0p667_1_0p659_0"],"t":40,"s":[-32],"e":[46]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":68,"s":[46],"e":[63]},{"i":{"x":[0.667],"y":[0.804]},"o":{"x":[0.333],"y":[0]},"n":["0p667_0p804_0p333_0"],"t":95,"s":[63],"e":[53.85]},{"i":{"x":[0.853],"y":[1]},"o":{"x":[0.333],"y":[0.024]},"n":["0p853_1_0p333_0p024"],"t":125,"s":[53.85],"e":[0]},{"t":147}],"ix":10},"p":{"a":0,"k":[7.353,13.142,0],"ix":2},"a":{"a":0,"k":[46.883,12.262,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.41,-12.22],[4.071,-4.48],[0,0],[2.441,6.65],[0,0],[-6.07,15.73],[0,0]],"o":[[-2.02,10.22],[-8.959,9.84],[-5.951,-3.15],[-3.23,-8.73],[0,0],[6.061,-15.74],[6.04,1.86]],"v":[[26.63,-7.33],[16.61,17.66],[-12.769,35.16],[-25.01,18.62],[-29.04,1.319],[8.33,-19.42],[22.691,-33.51]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.980000035903,0.984000052658,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[29.29,35.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":94,"ty":4,"nm":"back hair r","parent":76,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":29,"s":[19.654,85.312,0],"e":[31.691,85.312,0],"to":[2.00617289543152,0,0],"ti":[-2.00617289543152,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":64,"s":[31.691,85.312,0],"e":[31.691,85.312,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":138,"s":[31.691,85.312,0],"e":[19.654,85.312,0],"to":[-2.00617289543152,0,0],"ti":[2.00617289543152,0,0]},{"t":171}],"ix":2},"a":{"a":0,"k":[24.651,22.212,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.921,-12.416],[12.415,-1.922],[1.921,12.416],[-12.416,1.921]],"o":[[1.921,12.415],[-12.416,1.921],[-1.921,-12.415],[12.416,-1.921]],"v":[[22.481,-1.038],[4.367,20.04],[-22.48,5.919],[-3.479,-20.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666999966491,0.238999998803,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.651,22.212],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":95,"ty":4,"nm":"r wing","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":1,"s":[-72.453],"e":[29.833]},{"t":13}],"ix":10,"x":"var $bm_rt;\n$bm_rt = loopOut('pingpong');"},"p":{"a":0,"k":[5.725,16.766,0],"ix":2},"a":{"a":0,"k":[83.169,39.509,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.645,5.65],[4.779,4.009],[6.597,-1.648],[5.716,-3.68],[6.394,-6.77],[-0.019,-3.428],[-5.441,0.286],[-4.524,3.038],[0.198,-2.912],[-2.723,-1.049],[-1.645,0.373],[-3.481,4.143],[0.733,-2.759],[-4.487,1.057],[-2.797,3.663],[-2.627,-1.093],[-1.881,2.136],[-2.113,2.2],[-2.446,3.179],[3.007,1.535]],"o":[[-6.174,-0.896],[-2.643,-5.649],[-5.21,-4.369],[-6.597,1.647],[-7.831,5.041],[-2.353,2.492],[0.032,5.448],[5.441,-0.285],[-1.378,2.573],[-0.198,2.912],[1.575,0.608],[5.276,-1.198],[-0.429,2.822],[-1.184,4.455],[4.486,-1.056],[-0.188,2.839],[2.627,1.093],[2.015,-2.287],[2.778,-2.893],[2.059,-2.676],[0,0]],"v":[[41.742,2.419],[28.732,-9.929],[19.26,-25.867],[-0.088,-29.278],[-18.281,-20.27],[-40.346,-3.25],[-44.938,5.664],[-33.416,14.648],[-18.63,8.184],[-21.612,16.342],[-17.729,23.534],[-12.744,23.57],[0.872,15.266],[-3.25,22.679],[5.716,29.869],[16.152,21.246],[20.367,28.043],[28.159,26.24],[32.635,18.32],[42.897,12.299],[40.948,3.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.642999985639,0.862999949736,0.929000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.207,31.176],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":96,"ty":4,"nm":"l wing","parent":88,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":1,"s":[21.833],"e":[-49.453]},{"t":13}],"ix":10,"x":"var $bm_rt;\n$bm_rt = loopOut('pingpong');"},"p":{"a":0,"k":[40.206,4.476,0],"ix":2},"a":{"a":0,"k":[1.688,39.509,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.645,5.65],[-4.779,4.009],[-6.597,-1.648],[-5.717,-3.68],[-6.394,-6.77],[0.019,-3.428],[5.442,0.286],[4.524,3.038],[-0.198,-2.912],[2.723,-1.049],[1.646,0.373],[3.48,4.143],[-0.733,-2.759],[4.487,1.057],[2.798,3.663],[2.627,-1.093],[1.881,2.136],[2.113,2.2],[2.446,3.179],[-3.007,1.535]],"o":[[6.174,-0.896],[2.643,-5.649],[5.21,-4.369],[6.597,1.647],[7.831,5.041],[2.353,2.492],[-0.032,5.448],[-5.44,-0.285],[1.377,2.573],[0.198,2.912],[-1.575,0.608],[-5.276,-1.198],[0.428,2.822],[1.184,4.455],[-4.486,-1.056],[0.189,2.839],[-2.628,1.093],[-2.015,-2.287],[-2.778,-2.893],[-2.059,-2.676],[0,0]],"v":[[-41.741,2.419],[-28.732,-9.929],[-19.261,-25.867],[0.087,-29.278],[18.281,-20.27],[40.346,-3.25],[44.937,5.664],[33.414,14.648],[18.63,8.184],[21.612,16.342],[17.729,23.534],[12.742,23.57],[-0.872,15.266],[3.249,22.679],[-5.716,29.869],[-16.154,21.246],[-20.367,28.043],[-28.159,26.24],[-32.635,18.32],[-42.897,12.299],[-40.948,3.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.642999985639,0.862999949736,0.929000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[45.206,31.176],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":99,"ty":0,"nm":"linstar 6","refId":"comp_0","sr":0.8,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[556,1604,0],"ix":2},"a":{"a":0,"k":[1102.5,1960,0],"ix":1},"s":{"a":0,"k":[42.231,42.231,100],"ix":6}},"ao":0,"w":2205,"h":3920,"ip":0,"op":241.6,"st":0,"bm":0},{"ddd":0,"ind":100,"ty":0,"nm":"hallelujah","refId":"comp_1","sr":1,"ks":{"o":{"a":1,"k":[{"t":78,"s":[0],"h":1},{"t":79,"s":[100],"h":1},{"t":191,"s":[100],"h":1},{"t":192,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.948,"y":1},"o":{"x":0.805,"y":0},"n":"0p948_1_0p805_0","t":78,"s":[605.032,2036.306,0],"e":[605.032,1485.266,0],"to":[0,-91.8399963378906,0],"ti":[0,72.8000030517578,0]},{"i":{"x":0.948,"y":1},"o":{"x":0.4,"y":0},"n":"0p948_1_0p4_0","t":106,"s":[605.032,1485.266,0],"e":[605.032,1599.506,0],"to":[0,-72.8000030517578,0],"ti":[0,-11.7600002288818,0]},{"i":{"x":0.948,"y":1},"o":{"x":0.4,"y":0},"n":"0p948_1_0p4_0","t":114,"s":[605.032,1599.506,0],"e":[605.032,1555.826,0],"to":[0,11.7600002288818,0],"ti":[0,7.28000020980835,0]},{"t":188}],"ix":2},"a":{"a":0,"k":[195,35,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":90,"s":[0,0,100],"e":[294.89,294.89,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":115,"s":[294.89,294.89,100],"e":[294.89,294.89,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_1_0p333_0","0p833_1_0p333_0","0p833_1_0p333_0"],"t":175,"s":[294.89,294.89,100],"e":[397.32,397.32,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"n":["0p833_1_0p167_0","0p833_1_0p167_0","0p833_1_0p167_0"],"t":183,"s":[397.32,397.32,100],"e":[0,0,100]},{"t":188}],"ix":6}},"ao":0,"w":390,"h":70,"ip":0,"op":302,"st":0,"bm":0},{"ddd":0,"ind":101,"ty":0,"nm":"linstar 5","refId":"comp_2","sr":0.8,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[480,1552,0],"ix":2},"a":{"a":0,"k":[1102.5,1960,0],"ix":1},"s":{"a":0,"k":[45.582,45.582,100],"ix":6}},"ao":0,"w":2205,"h":3920,"ip":7,"op":248.6,"st":7,"bm":0},{"ddd":0,"ind":102,"ty":0,"nm":"linstar 4","refId":"comp_3","sr":0.8,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[431.91,1761.306,0],"ix":2},"a":{"a":0,"k":[1124.5,1999.5,0],"ix":1},"s":{"a":0,"k":[29.948,29.948,100],"ix":6}},"ao":0,"w":2249,"h":3999,"ip":15,"op":256.6,"st":15,"bm":0},{"ddd":0,"ind":103,"ty":0,"nm":"linstar 1","refId":"comp_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[584,1568,0],"ix":2},"a":{"a":0,"k":[1102.5,1960,0],"ix":1},"s":{"a":0,"k":[47.072,47.072,100],"ix":6}},"ao":0,"w":2205,"h":3920,"ip":11,"op":313,"st":11,"bm":0},{"ddd":0,"ind":104,"ty":0,"nm":"linstar 2","refId":"comp_5","sr":0.8,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[455.027,1736.192,0],"ix":2},"a":{"a":0,"k":[1102.5,1960,0],"ix":1},"s":{"a":0,"k":[33.904,33.904,100],"ix":6}},"ao":0,"w":2205,"h":3920,"ip":25,"op":266.6,"st":25,"bm":0},{"ddd":0,"ind":105,"ty":0,"nm":"linstar 3","refId":"comp_6","sr":0.6,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[584,1804,0],"ix":2},"a":{"a":0,"k":[1102.5,1960,0],"ix":1},"s":{"a":0,"k":[44.646,44.646,100],"ix":6}},"ao":0,"w":2205,"h":3920,"ip":72,"op":253.2,"st":72,"bm":0}],"markers":[{"tm":13,"cm":"","dr":0},{"tm":207,"cm":"","dr":0}],"chars":[{"ch":"H","size":17,"style":"Bold","w":76.61,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.604,-70.02],[52.783,-70.02],[52.783,-42.09],[23.779,-42.09],[23.779,-70.02],[8.008,-70.02],[8.008,0],[23.779,0],[23.779,-28.516],[52.783,-28.516],[52.783,0],[68.604,0]],"c":true},"ix":2},"nm":"H","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"H","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Segoe UI"},{"ch":"A","size":17,"style":"Bold","w":70.31,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[44.678,-70.02],[25.977,-70.02],[0.488,0],[17.578,0],[22.51,-15.576],[47.412,-15.576],[52.393,0],[69.58,0]],"c":true},"ix":2},"nm":"A","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.163,2.051],[0,0],[-0.554,-1.758],[0,0]],"o":[[0,0],[0.651,-2.018],[0,0],[0.227,2.441],[0,0],[0,0]],"v":[[25.879,-27.686],[33.496,-51.416],[34.717,-57.52],[35.107,-57.52],[36.279,-51.221],[43.799,-27.686]],"c":true},"ix":2},"nm":"A","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"A","np":5,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Segoe UI"},{"ch":"L","size":17,"style":"Bold","w":51.12,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[49.707,-12.793],[23.779,-12.793],[23.779,-70.02],[8.008,-70.02],[8.008,0],[49.707,0]],"c":true},"ix":2},"nm":"L","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"L","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Segoe UI"},{"ch":"E","size":17,"style":"Bold","w":53.22,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[50,-12.793],[23.779,-12.793],[23.779,-28.809],[46.68,-28.809],[46.68,-41.602],[23.779,-41.602],[23.779,-57.178],[48.389,-57.178],[48.389,-70.02],[8.008,-70.02],[8.008,0],[50,0]],"c":true},"ix":2},"nm":"E","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"E","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Segoe UI"},{"ch":"U","size":17,"style":"Bold","w":72.31,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[8.691,0],[0,11.328],[0,0],[0,0],[0,0],[-19.011,0],[0,21.029]],"o":[[0,0],[0,0],[0,10.938],[-8.855,0],[0,0],[0,0],[0,0],[0,20.541],[19.596,0],[0,0]],"v":[[65.088,-70.02],[49.316,-70.02],[49.316,-28.809],[36.279,-12.402],[22.998,-29.395],[22.998,-70.02],[7.178,-70.02],[7.178,-29.59],[35.693,1.221],[65.088,-30.322]],"c":true},"ix":2},"nm":"U","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"U","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Segoe UI"},{"ch":"J","size":17,"style":"Bold","w":42.04,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[7.194,0],[2.702,2.051],[0,0],[-3.679,0],[-4.346,4.98],[0,9.375]],"o":[[0,0],[0,0],[0,10.677],[-3.353,0],[0,0],[3.125,1.27],[8.235,0],[4.346,-4.98],[0,0]],"v":[[37.207,-70.02],[21.484,-70.02],[21.484,-28.418],[10.693,-12.402],[1.611,-15.479],[1.611,-0.684],[11.816,1.221],[30.688,-6.25],[37.207,-27.783]],"c":true},"ix":2},"nm":"J","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"J","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Segoe UI"},{"ch":"!","size":17,"style":"Bold","w":32.71,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.203,-70.02],[10.01,-21.777],[22.51,-21.777],[24.414,-70.02]],"c":true},"ix":2},"nm":"!","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.644,1.53],[0,2.344],[1.66,1.514],[2.604,0],[1.709,-1.497],[0,-2.344],[-1.693,-1.579],[-2.605,0]],"o":[[1.643,-1.53],[0,-2.311],[-1.66,-1.514],[-2.572,0],[-1.709,1.498],[0,2.246],[1.692,1.579],[2.637,0]],"v":[[22.827,-1.172],[25.293,-6.982],[22.803,-12.72],[16.406,-14.99],[9.985,-12.744],[7.422,-6.982],[9.961,-1.245],[16.406,1.123]],"c":true},"ix":2},"nm":"!","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"!","np":5,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Segoe UI"},{"ch":"♪","size":39,"style":"Regular","w":50,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.539,0],[2.473,-2.327],[0,-3.418],[-2.068,-2.002],[-3.548,0],[-2.539,1.318],[-1.042,2.197],[0,3.939],[0,0],[0,0],[-2.377,-1.041],[-0.928,-1.546],[0,-2.213],[0,0],[0,0],[0,0],[0.846,2.49],[1.465,1.367],[2.571,0.652],[5.598,0],[0,0]],"o":[[-3.125,-1.497],[-4.004,0],[-2.474,2.328],[0,3.255],[2.067,2.002],[2.995,0],[2.539,-1.318],[1.041,-2.197],[0,0],[0,0],[2.897,0],[1.823,0.814],[0.928,1.546],[0,0],[0,0],[0,0],[0,-3.32],[-0.847,-2.49],[-1.953,-1.855],[-1.791,-0.455],[0,0],[0,0]],"v":[[23.73,-18.945],[15.234,-21.191],[5.518,-17.7],[1.807,-9.082],[4.907,-1.196],[13.33,1.807],[21.631,-0.171],[27.002,-5.444],[28.564,-14.648],[28.564,-55.42],[29.932,-55.42],[37.842,-53.857],[41.968,-50.317],[43.359,-44.678],[43.359,-42.578],[48.193,-42.578],[48.193,-47.607],[46.924,-56.323],[43.457,-62.109],[36.67,-65.869],[25.586,-66.553],[23.73,-66.553]],"c":true},"ix":2},"nm":"♪","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"♪","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Arial"},{"ch":"♫","size":39,"style":"Regular","w":75,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.539,0],[2.473,-2.327],[0,-3.418],[-2.068,-2.002],[-3.548,0],[-2.539,1.302],[-1.042,2.197],[0,3.939],[0,0],[0,0],[0,0],[0.993,0.228],[1.302,0],[2.506,-2.36],[0,-3.255],[-2.116,-2.034],[-3.548,0],[-2.458,1.335],[-1.025,2.051],[0,4.037],[0,0],[0,0]],"o":[[-3.125,-1.497],[-4.004,0],[-2.474,2.328],[0,3.223],[2.067,2.002],[2.995,0],[2.539,-1.302],[1.041,-2.197],[0,0],[0,0],[0,0],[-2.246,-0.944],[-0.993,-0.227],[-3.972,0],[-2.507,2.361],[0,3.223],[2.116,2.035],[3.092,0],[2.457,-1.334],[1.025,-2.051],[0,0],[0,0],[0,0]],"v":[[26.074,-14.453],[17.578,-16.699],[7.861,-13.208],[4.15,-4.59],[7.251,3.247],[15.674,6.25],[23.975,4.297],[29.346,-0.952],[30.908,-10.156],[30.908,-50.977],[59.961,-60.01],[59.961,-24.658],[55.103,-26.416],[51.66,-26.758],[41.943,-23.218],[38.184,-14.795],[41.357,-6.909],[49.854,-3.857],[58.179,-5.859],[63.403,-10.938],[64.941,-20.068],[64.941,-74.17],[26.074,-62.061]],"c":true},"ix":2},"nm":"♫","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"♫","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Arial"},{"ch":" ","size":39,"style":"Regular","w":27.78,"data":{},"fFamily":"Arial"}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/autoorient.json b/example/shared/src/commonMain/composeResources/files/autoorient.json new file mode 100644 index 00000000..5b1e104d --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/autoorient.json @@ -0,0 +1,390 @@ +{ + "v": "5.5.7", + "ip": 0, + "op": 180, + "nm": "Animation", + "mn": "{46da3bdd-424c-4d87-ab48-70568860494c}", + "fr": 60, + "w": 512, + "h": 512, + "assets": [ + { + "nm": "PolyStar", + "id": "{e2e65917-0097-48d1-a5ae-17873a1ebb3e}", + "layers": [ + { + "ddd": 0, + "ty": 4, + "ind": 0, + "st": 0, + "ip": 0, + "op": 180, + "nm": "PolyStar", + "mn": "{2075ceec-ea0c-473d-9063-706380ba0a2c}", + "ks": { + "a": { + "a": 0, + "k": [ + 125.51641791044776, + 106.60298507462687 + ] + }, + "p": { + "a": 0, + "k": [ + 125.51641791044776, + 106.60298507462687 + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 50 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + }, + "shapes": [ + { + "ty": "sr", + "nm": "PolyStar", + "mn": "{a3f805b0-34a3-4ccd-941e-5f84b407c0dd}", + "p": { + "a": 0, + "k": [ + 125.51641791044776, + 106.60298507462687 + ] + }, + "or": { + "a": 0, + "k": 73.93932342529297 + }, + "ir": { + "a": 0, + "k": 36.969661712646484 + }, + "r": { + "a": 0, + "k": 90 + }, + "pt": { + "a": 0, + "k": 3 + }, + "sy": 1, + "os": { + "a": 0, + "k": 0 + }, + "is": { + "a": 0, + "k": 0 + } + }, + { + "ty": "fl", + "nm": "Fill", + "mn": "{c6d0521b-355c-4f8e-83e7-1c2814d3cfad}", + "o": { + "a": 0, + "k": 100 + }, + "c": { + "a": 0, + "k": [ + 0.19607843137254902, + 0.3137254901960784, + 0.6901960784313725 + ] + }, + "r": 1 + } + ] + } + ] + } + ], + "layers": [ + { + "ty": 0, + "ddd": 0, + "nm": "Layer", + "mn": "{89b88968-ac5c-4e11-be47-b9ce60f5073e}", + "ip": 0, + "op": 180, + "ind": 1, + "st": 0, + "sr": 1, + "ao": 1, + "ks": { + "a": { + "a": 0, + "k": [ + 125.50000000000003, + 105.70000000000003 + ] + }, + "p": { + "a": 1, + "k": [ + { + "t": 0, + "s": [ + 125.50000000000003, + 105.70000000000003 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + }, + "e": [ + 408.489552238806, + 110.89850746268658 + ] + }, + { + "t": 50, + "s": [ + 408.489552238806, + 110.89850746268658 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + }, + "e": [ + 107.85597014925375, + 410.49876865671655 + ] + }, + { + "t": 130, + "s": [ + 107.85597014925375, + 410.49876865671655 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + }, + "e": [ + 125.50000000000003, + 105.70000000000003 + ] + }, + { + "t": 180, + "s": [ + 125.50000000000003, + 105.70000000000003 + ] + } + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 100 + } + }, + "refId": "{e2e65917-0097-48d1-a5ae-17873a1ebb3e}", + "w": 512, + "h": 512 + }, + { + "ty": 0, + "ddd": 0, + "nm": "Layer", + "mn": "{89b88968-ac5c-4e11-be47-b9ce60f5073e}", + "ip": 0, + "op": 180, + "ind": 2, + "st": 0, + "sr": 1, + "ks": { + "a": { + "a": 0, + "k": [ + 125.50000000000003, + 105.70000000000003 + ] + }, + "p": { + "a": 1, + "k": [ + { + "t": 0, + "s": [ + 125.50000000000003, + 105.70000000000003 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + }, + "e": [ + 408.489552238806, + 110.89850746268658 + ] + }, + { + "t": 50, + "s": [ + 408.489552238806, + 110.89850746268658 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + }, + "e": [ + 107.85597014925375, + 410.49876865671655 + ] + }, + { + "t": 130, + "s": [ + 107.85597014925375, + 410.49876865671655 + ], + "h": 0, + "o": { + "x": [ + 0 + ], + "y": [ + 0 + ] + }, + "i": { + "x": [ + 1 + ], + "y": [ + 1 + ] + }, + "e": [ + 125.50000000000003, + 105.70000000000003 + ] + }, + { + "t": 180, + "s": [ + 125.50000000000003, + 105.70000000000003 + ] + } + ] + }, + "s": { + "a": 0, + "k": [ + 100, + 100 + ] + }, + "r": { + "a": 0, + "k": 0 + }, + "o": { + "a": 0, + "k": 50 + } + }, + "refId": "{e2e65917-0097-48d1-a5ae-17873a1ebb3e}", + "w": 512, + "h": 512 + } + ], + "meta": { + "g": "Glaxnimate 0.4.6-26-g7b05e75c" + } +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index 2d2ffd57..e69de29b 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1 +0,0 @@ -{"v":"4.6.6","fr":60,"ip":0,"op":90,"w":500,"h":160,"nm":"5starsreview","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":340},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":280},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":220},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":160},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":100},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":40},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":34,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[70],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[72]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[72],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-70.298],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0_1_0p315_0"],"t":2,"s":[100],"e":[50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[50],"e":[30]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.019],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p019_1_0p318_0"],"t":3,"s":[70],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":16,"s":[30],"e":[20]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.5455773,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7765004,0.3074228,1]},{"t":43}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":3,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 12","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":330},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 11","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":210},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":150},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":30},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-38.737,-43.685],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[17],"e":[0]},{"t":56}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":56}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":56}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":68,"st":-46,"bm":0,"sr":1}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot s 10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot s 9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.07,-43.218],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[63],"e":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[15],"e":[0]},{"t":59}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[63],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[20],"e":[5]},{"t":59}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.4939098,0.2713695,1],"e":[1,0.6887917,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.6887917,0.2713695,1],"e":[0.9905791,0.7783515,0.3832576,1]},{"t":33}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":59}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":71,"st":-43,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.237,-87.398],[-1.938,-5.438]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.315],"y":[0]},"n":["0p667_1_0p315_0"],"t":2,"s":[80],"e":[40]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":12,"s":[40],"e":[10]},{"t":51}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.318],"y":[0]},"n":["0p667_1_0p318_0"],"t":3,"s":[60],"e":[30]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.328],"y":[0]},"n":["0p667_1_0p328_0"],"t":14,"s":[30],"e":[10]},{"t":51}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[1,0.4415064,0.333946,1],"e":[1,0.6745098,0.1764706,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.6745098,0.1764706,1],"e":[0.99784,0.7236552,0.3074228,1]},{"t":37}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":38,"s":[4],"e":[0]},{"t":53}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[90.724,69.445],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":6,"op":66,"st":-40,"bm":0,"sr":1}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.376,-2.725],[-4.519,-5.185]],"o":[[7.474,8.576],[0,0]],"v":[[-21.88,-24.88],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[22],"e":[0]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":17,"s":[17],"e":[1]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[1,0.3331207,0.2358456,1],"e":[1,0.4781719,0.2713695,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[1,0.4781719,0.2713695,1],"e":[1,0.6745098,0.1803922,1]},{"t":31}]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_5","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot new s 8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":315},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot new s 7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":270},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot new s 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":225},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot new s 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot new s 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":135},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot new s 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":90},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Dot new s 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":45},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Dot new s","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[51.249,51.249,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[19],"e":[0]},{"t":55}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[20],"e":[1]},{"t":55}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":55}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Dot inner10","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":36},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Dot inner9","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":324},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Dot inner8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":288},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Dot inner7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":252},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Dot inner6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":216},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Dot inner5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Dot inner4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":144},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Dot inner3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":108},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Dot inner2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":72},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Dot inner1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.849,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-28.737,-32.748],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[62]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[62],"e":[50]},{"t":46}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[65]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[65],"e":[52]},{"t":46}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":35,"s":[4],"e":[0]},{"t":50}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":60,"st":-46,"bm":0,"sr":1}]},{"id":"comp_6","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dot 6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":300},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Dot 5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":240},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Dot 4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":180},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Dot 3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":120},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Dot 2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":60},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Dot 1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[50.245,49.974,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[40,40,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.87451,0.87451,0.87451,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.312,0.312],[0,0]],"o":[[-0.312,-0.312],[0,0]],"v":[[-2.175,-41.81],[-1.938,-2]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[90],"e":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[17],"e":[5]},{"t":65}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[90],"e":[29]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[29],"e":[6]},{"t":65}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,0.6745098,0.1803922,1]},"o":{"a":0,"k":100},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[4],"e":[0]},{"t":65}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Shape 1","np":3,"cix":2,"ix":2,"mn":"ADBE Vector Group"}],"ip":0,"op":65,"st":-46,"bm":0,"sr":1}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"pop8","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[475.664,111.874,0],"e":[477,108,0],"to":[0.22259241342545,-0.64567643404007,0],"ti":[0.11074091494083,1.14567637443542,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[477,108,0],"e":[476.895,107.561,0],"to":[-0.01389549672604,-0.14375664293766,0],"ti":[0.05413279309869,0.14822678267956,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":34,"s":[476.895,107.561,0],"e":[475,105,0],"to":[-0.37728145718575,-1.03307461738586,0],"ti":[0.29150748252869,0.43726122379303,0]},{"t":55}]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":16,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[100,100,100],"e":[0,0,100]},{"t":55}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[4,4]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8509804,0.5137255,0.8235294]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":0},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"pop7","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[368.164,111.874,0]},"a":{"a":0,"k":[-50.224,-46.474,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[0,0],"e":[5,5]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":31,"s":[5,5],"e":[3,3]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":57,"s":[3,3],"e":[0,0]},{"t":62}]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[1,0.7337895,0.3264553,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.991299,0.8940315,0.6023721,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-49.224,-46.474],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"pop5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[45.794,97.647,0]},"a":{"a":0,"k":[-23.206,-45.353,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5,5]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0.9058824,0.4313726,0.6196079,1],"e":[1,0.8530331,0.1333333,1]},{"t":28}]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.603,-45.353],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[0,0],"e":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":25,"s":[100,100],"e":[50,50]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":43,"s":[50,50],"e":[0,0]},{"t":54}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"pop2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[119.031,110.272,0],"e":[120.531,102.272,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.91666668653488,2.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[120.531,102.272,0],"e":[124.531,96.272,0],"to":[0.91666668653488,-2.33333325386047,0],"ti":[-0.66666668653488,1,0]},{"t":44}]},"a":{"a":0,"k":[-135.25,6,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[0,0,100],"e":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":37,"s":[150,150,100],"e":[0,0,100]},{"t":49}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3.589,3.589]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9981465,0.8623575,0.5475739,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-135.456,6.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":5,"op":75,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"pop","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[121.598,127.749,0],"e":[123.098,119.749,0],"to":[0.25,-1.33333337306976,0],"ti":[-0.625,1.83333337306976,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[123.098,119.749,0],"e":[125.348,116.749,0],"to":[0.625,-1.83333337306976,0],"ti":[-0.16666667163372,1.66666662693024,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29,"s":[125.348,116.749,0],"e":[124.098,109.749,0],"to":[0.16666667163372,-1.66666662693024,0],"ti":[0.20833332836628,1.16666662693024,0]},{"t":50}]},"a":{"a":0,"k":[-41.461,35.978,0]},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":17,"s":[0,0,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":29,"s":[50,50,100],"e":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":44,"s":[50,50,100],"e":[0,0,100]},{"t":56}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[8.455,8.455]},"p":{"a":0,"k":[0,0]},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.9960784,0.8392157,0.4784314,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-40.772,38.228],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":17,"op":85,"st":27,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"star1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":13,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.866,0.866,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p866_0p345_0","0p646_0p866_0p345_0","0p646_0p646_0p345_0p345"],"t":21,"s":[115,115,100],"e":[100,100,100]},{"t":40}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":17}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.8156863,0.3058824,1],"e":[0.9988511,0.758655,0.1329353,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[0.9988511,0.758655,0.1329353,1],"e":[1,0.6745098,0.1764706,1]},{"t":33}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"star2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.88,0.88,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p88_0p345_0","0p646_0p88_0p345_0","0p646_0p646_0p345_0p345"],"t":18,"s":[115,115,100],"e":[100,100,100]},{"t":35}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":14}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":24}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"star3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.894,0.894,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p894_0p345_0","0p646_0p894_0p345_0","0p646_0p646_0p345_0p345"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":30}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":25}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"star4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.993,0.993,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p993_0","0p667_1_0p993_0","0p667_0p667_0p333_0p333"],"t":4,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.646,0.646,0.646],"y":[0.902,0.902,0.646]},"o":{"x":[0.345,0.345,0.345],"y":[0,0,0.345]},"n":["0p646_0p902_0p345_0","0p646_0p902_0p345_0","0p646_0p646_0p345_0p345"],"t":12,"s":[115,115,100],"e":[100,100,100]},{"t":26}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-138.855,-48.127],[-150.73,-48.127],[-150.73,46.873],[-138.855,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137.605,-48.127],[-149.48,-48.127],[-149.48,46.873],[-137.605,46.873]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-149.999,-38.502],[-223.711,-38.502],[-223.711,38.177],[-149.999,38.177]],"c":true}]},{"t":7}]},"o":{"a":0,"k":100},"x":{"a":0,"k":0},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[1,0.8308612,0.3541973,1],"e":[1,0.7568628,0.1333333,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[1,0.7568628,0.1333333,1],"e":[1,0.6745098,0.1764706,1]},{"t":22}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"star5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.674,0.674,0.674],"y":[1.038,1.038,0.674]},"o":{"x":[0.942,0.942,0.333],"y":[0.224,0.224,0.333]},"n":["0p674_1p038_0p942_0p224","0p674_1p038_0p942_0p224","0p674_0p674_0p333_0p333"],"t":7,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.649,0.649,0.649],"y":[0.867,0.867,0.649]},"o":{"x":[0.334,0.334,0.334],"y":[0.074,0.074,0.334]},"n":["0p649_0p867_0p334_0p074","0p649_0p867_0p334_0p074","0p649_0p649_0p334_0p334"],"t":17,"s":[115,115,100],"e":[100,100,100]},{"t":36}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[4.407,0],[0,-4.407],[-4.407,0],[0,4.407]],"o":[[-4.407,0],[0,4.407],[4.407,0],[0,-4.407]],"v":[[-187.125,-8.752],[-195.105,-0.773],[-187.125,7.207],[-179.146,-0.773]],"c":true}],"e":[{"i":[[26.402,0],[0,-26.402],[-26.402,0],[0,26.402]],"o":[[-26.402,0],[0,26.402],[26.402,0],[0,-26.402]],"v":[[-187.929,-44.391],[-235.733,3.414],[-187.929,51.218],[-140.124,3.414]],"c":true}]},{"t":9}]},"o":{"a":0,"k":100},"x":{"a":0,"k":-1},"nm":"蒙版 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.8854904,0.3411611,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[1,0.8854904,0.3411611,1],"e":[1,0.6396633,0.0779718,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[1,0.6396633,0.0779718,1],"e":[1,0.6745098,0.1764706,1]},{"t":36}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"star1 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[73.61,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":17,"st":31,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"star2 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[161.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":14,"st":29,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"star3 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[250.991,80.5,0]},"a":{"a":0,"k":[-186.693,0.499,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"star4 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[336.548,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[0.8745098,0.8745098,0.8745098,1]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-25.292,-0.554],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"star5 grey","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[422.6,80.001,0]},"a":{"a":0,"k":[-188.136,0,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.675,-1.338],[0,0],[0.984,-0.137],[-1.281,-1.366],[-0.327,-0.982],[1.228,-7.244],[-1.22,0.695],[0,0],[-5.883,-3.001],[0.244,1.601],[-0.202,0.607],[-4.152,3.933],[3.339,0.14],[0,0],[2.912,5.775]],"o":[[-2.985,5.919],[0,0],[-1.134,0.114],[3.214,3.428],[0.096,0.576],[-0.37,2.185],[5.447,-3.103],[0,0],[1.246,0.636],[-1.038,-6.802],[0.105,-0.737],[0.818,-0.775],[-4.735,-0.198],[0,0],[-0.653,-1.295]],"v":[[-162.945,-33.091],[-172,-11.125],[-195.549,-10.56],[-196.195,-7.351],[-178.375,8.5],[-183.128,32.408],[-181.09,34.198],[-161.5,22],[-140.528,34.289],[-138.62,32.579],[-144.375,8.625],[-127.162,-6.755],[-127.903,-10.712],[-150.75,-11.125],[-160.125,-33.163]],"c":true}},"nm":"路径 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"a":0,"k":[0.727405,0.175957,0.175957,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0.8745098,0.8745098,0.8745098,1],"e":[1,0.6745098,0.1764706,1]},{"t":4}]},"o":{"a":0,"k":100},"r":1,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[-188.21,0.681],"ix":2},"a":{"a":0,"k":[-162.919,1.235],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":8,"st":30,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":0,"nm":"circle burst s","refId":"comp_0","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[28.899,53.048,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[130,130,100]}},"ao":0,"w":100,"h":100,"ip":16,"op":76,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[111.213,120.311,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":15,"op":85,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[70,70,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[124.403,45.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":0,"nm":"5.3 burst 2","cl":"3","refId":"comp_3","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[199.5,32.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[120,120,100]}},"ao":0,"w":100,"h":100,"ip":14,"op":84,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":0,"nm":"5.3 burst3","cl":"3","refId":"comp_1","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[292.164,53.5,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":0,"nm":"5.8 burst","cl":"8","refId":"comp_4","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[302.302,133.646,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":13,"op":73,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":0,"nm":"5.3 burst","cl":"3","refId":"comp_2","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[289.403,122.07,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":12,"op":82,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":0,"nm":"burst","refId":"comp_5","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[380.063,47.18,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[100,100,100]}},"ao":0,"w":100,"h":100,"ip":10,"op":70,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":0,"nm":"burst5.16","cl":"16","refId":"comp_6","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[459.494,113.978,0]},"a":{"a":0,"k":[50,50,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"w":100,"h":100,"ip":11,"op":81,"st":11,"bm":0,"sr":1}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 67ab729c..6e868583 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,4 +1,3 @@ -import androidx.compose.foundation.Canvas import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize @@ -12,22 +11,14 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.PathEffect -import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.createFontFamilyResolver import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res -import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants -import io.github.alexzhirkevich.compottie.NetworkAssetsManager import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.LottieFont import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter @@ -45,6 +36,7 @@ private val ROUND_RECT = "roundrect.json" private val ROBOT = "robot.json" private val ROBOT_404 = "robot_404.json" private val ASTRONAUT = "astronaut.json" +private val ANGEL = "angel.json" private val CONFETTI = "confetti.json" private val WONDERS = "wonders.json" private val PRECOMP_WITH_REMAPPING = "precomp_with_remapping.json" @@ -53,6 +45,7 @@ private val MATTE_LUMA = "luma_matte.json" private val DASH = "dash.json" private val ROUNDING_CORENERS = "rounding_corners.json" private val REPEATER = "repeater.json" +private val AUTOORIENT = "autoorient.json" private val TEXT_WITH_PATH = "text_with_path.json" private val TEXT = "text.json" private val IMAGE_ASSET = "image_asset.json" @@ -61,11 +54,11 @@ private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" private val DOT = "dotlottie/dot.lottie" private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" - @OptIn(ExperimentalResourceApi::class) @Composable fun App() { + val composition = rememberLottieComposition { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { @@ -85,15 +78,20 @@ fun App() { composition.await() } - Box(contentAlignment = Alignment.Center) { + Box( + Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + + val painter = rememberLottiePainter( + composition = composition.value, + iterations = LottieConstants.IterateForever + ) Image( modifier = Modifier .fillMaxSize() .opacityGrid(), - painter = rememberLottiePainter( - composition = composition.value, - iterations = LottieConstants.IterateForever, - ), + painter = painter, contentDescription = null ) @@ -114,6 +112,7 @@ fun LottieCompositionSpec.Companion.Resource( assetsManager: LottieAssetsManager = ResourcesAssetsManager(), readBytes: suspend (path: String) -> ByteArray = Res::readBytes ) : LottieCompositionSpec = JsonString(assetsManager) { + readBytes("$dir/$path").decodeToString() } From c3b9437a3845045b4ba3e969f7cb4825f9d3ef52 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Thu, 13 Jun 2024 18:04:54 +0300 Subject: [PATCH 046/100] wip dynamic --- .../compottie/DiskCacheStrategy.kt | 12 --- .../compottie/CompottieException.kt | 7 ++ .../compottie/LottieComposition.kt | 36 +++++++-- .../compottie/LottieCompositionSpec.kt | 2 + .../alexzhirkevich/compottie/LottiePainter.kt | 73 ++++++++++++----- .../animateLottieCompositionAsState.kt | 39 ++++----- .../compottie/dynamic/DynamicComposition.kt | 17 ++++ .../compottie/dynamic/DynamicFill.kt | 3 + .../compottie/dynamic/DynamicLayer.kt | 17 ++++ .../compottie/dynamic/DynamicStroke.kt | 3 + .../compottie/dynamic/DynamicTransform.kt | 19 +++++ .../alexzhirkevich/compottie/dynamic/Impl.kt | 80 +++++++++++++++++++ .../compottie/dynamic/PropertyProvider.kt | 5 ++ .../compottie/internal/AnimationState.kt | 22 +++-- .../internal/animation/AnimatedTransform.kt | 5 +- .../internal/layers/BaseCompositionLayer.kt | 45 +++++------ .../compottie/internal/layers/Layer.kt | 2 - example/shared/src/commonMain/kotlin/App.kt | 30 ++++++- 18 files changed, 322 insertions(+), 95 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt index 2d9c3a33..034119e1 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -1,21 +1,9 @@ package io.github.alexzhirkevich.compottie -import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable -import androidx.compose.runtime.remember import okio.Buffer import okio.FileSystem - -@Composable -fun rememberDiskCacheStrategy() : LottieCacheStrategy { - return remember { - DiskCacheStrategy() - } - - -} - @Stable class DiskCacheStrategy : LottieCacheStrategy { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt new file mode 100644 index 00000000..8b6b8b3b --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt @@ -0,0 +1,7 @@ +package io.github.alexzhirkevich.compottie + +class CompottieException internal constructor( + msg : String, + cause : Throwable? = null +) : Exception(msg,cause) { +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index b72b0c95..65bb5912 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -13,6 +13,8 @@ import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.dynamic.DynamicComposition +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionImpl import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset @@ -55,6 +57,16 @@ class LottieComposition internal constructor( * */ val frameRate: Float get() = lottieData.frameRate + /** + * Animation intrinsic width + * */ + val width : Float get() = lottieData.width + + /** + * Animation intrinsic height + * */ + val height : Float get() = lottieData.height + /** * Some animations may contain predefined number of interactions. * It will be used as a default value for the LottiePainter @@ -73,6 +85,8 @@ class LottieComposition internal constructor( internal var fontsByFamily: Map = emptyMap() + internal var dynamicComposition : DynamicCompositionImpl? = null + private val fontMutex = Mutex() /** @@ -167,9 +181,11 @@ class LottieComposition internal constructor( /** * Load and prepare [LottieComposition]. - * - * [spec] should be remembered * */ +@Deprecated( + "Use overload with lambda instead", + ReplaceWith("rememberLottieComposition { spec }") +) @OptIn(InternalCompottieApi::class) @Composable @Stable @@ -206,28 +222,34 @@ fun rememberLottieComposition( @Stable fun rememberLottieComposition( vararg keys : Any?, - spec : suspend (LottieContext) -> LottieCompositionSpec, + spec : suspend DynamicComposition.(LottieContext) -> LottieCompositionSpec, ) : LottieCompositionResult { val updatedSpec by rememberUpdatedState(spec) val context = currentLottieContext() - val result = remember(*keys,context) { + val result = remember(*keys, context) { LottieCompositionResultImpl() } LaunchedEffect(result) { withContext(Dispatchers.IODispatcher) { try { - result.complete(updatedSpec(context).load()) + DynamicCompositionImpl().run { + val composition = updatedSpec(context).load().apply { + dynamicComposition = this@run + } + result.complete(composition) + } } catch (c: CancellationException) { + result.completeExceptionally(c) throw c } catch (t: Throwable) { - result.completeExceptionally(t) + result.completeExceptionally(CompottieException("Composition failed to load", t)) } } } return result -} +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 5bbdb986..a91820a9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.dynamic.DynamicComposition import kotlin.jvm.JvmInline @Stable @@ -60,6 +61,7 @@ private value class JsonStringImpl( private class LazyJsonString( private val jsonString : suspend () -> String, private val assetsManager: LottieAssetsManager, + private val dynamic : DynamicComposition.() -> Unit = {} ) : LottieCompositionSpec { override suspend fun load(): LottieComposition { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 9d15fbd9..381707c6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -26,6 +26,39 @@ import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import kotlin.math.roundToInt +/** + * Create and remember Lottie painter. + * Shortcut that combines [rememberLottiePainter] (with progress arg) + * and [animateLottieCompositionAsState] + * + * @param composition [LottieComposition] usually created by [rememberLottieComposition] + * @param composition The composition to render. This should be retrieved with [rememberLottieComposition]. + * @param isPlaying Whether or not the animation is currently playing. Note that the internal + * animation may end due to reaching the target iterations count. If that happens, the animation may + * stop even if this is still true. You can observe the returned [LottieAnimationState.isPlaying] + * to determine whether the underlying animation is still playing. + * @param restartOnPlay If isPlaying switches from false to true, restartOnPlay determines whether + * the progress and iteration gets reset. + * @param reverseOnRepeat Defines what this animation should do when it reaches the end. This setting + * is applied only when [iterations] is either greater than 0 or [LottieConstants.IterateForever]. + * Defaults to `false`. + * @param clipSpec A [LottieClipSpec] that specifies the bound the animation playback + * should be clipped to. + * @param speed The speed the animation should play at. Numbers larger than one will speed it up. + * Numbers between 0 and 1 will slow it down. Numbers less than 0 will play it backwards. + * @param iterations The number of times the animation should repeat before stopping. It must be + * a positive number. [LottieConstants.IterateForever] can be used to repeat forever. + * @param cancellationBehavior The behavior that this animation should have when cancelled. + * In most cases, you will want it to cancel immediately. However, if you have a state based + * transition and you want an animation to finish playing before moving on to the next one then you + * may want to set this to [LottieCancellationBehavior.OnIterationFinish]. + * @param useCompositionFrameRate Use frame rate declared in animation instead of screen refresh rate. + * Animation may seem junky if parameter is set to true and composition frame rate is less than screen + * refresh rate + * @param clipToCompositionBounds if animation should be clipped to the + * [composition].width x [composition].height + * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) + * */ @Composable fun rememberLottiePainter( composition : LottieComposition?, @@ -61,12 +94,21 @@ fun rememberLottiePainter( ) } +/** + * Create and remember Lottie painter + * + * @param composition [LottieComposition] usually created by [rememberLottieComposition] + * @param progress animation progress from 0 to 1 usually derived from [animateLottieCompositionAsState] + * @param clipToCompositionBounds if drawing should be clipped to the + * [composition].width x [composition].height + * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) + * */ @Composable fun rememberLottiePainter( composition : LottieComposition?, progress : () -> Float, + clipToCompositionBounds : Boolean = true, clipTextToBoundingBoxes: Boolean = false, - clipToCompositionBounds : Boolean = true ) : Painter { val fontFamilyResolver = LocalFontFamilyResolver.current @@ -91,10 +133,12 @@ fun rememberLottiePainter( } LaunchedEffect(painter) { - snapshotFlow { - progress() - }.collect { - (painter as? LottiePainter)?.progress = it + (painter as? LottiePainter)?.let { lp -> + snapshotFlow { + progress() + }.collect { + lp.progress = it + } } } @@ -104,7 +148,7 @@ fun rememberLottiePainter( private object EmptyPainter : Painter() { - override val intrinsicSize: Size = Size(1f,1f) + override val intrinsicSize: Size = Size.Unspecified override fun DrawScope.onDraw() { } @@ -112,10 +156,10 @@ private object EmptyPainter : Painter() { private class LottiePainter( private val composition: LottieComposition, - private val initialProgress : Float, - private val fontFamilyResolver : FontFamily.Resolver, - private val clipTextToBoundingBoxes : Boolean, - private val clipToCompositionBounds : Boolean, + initialProgress : Float, + fontFamilyResolver : FontFamily.Resolver, + clipTextToBoundingBoxes : Boolean, + clipToCompositionBounds : Boolean, ) : Painter() { override val intrinsicSize: Size = Size( @@ -129,20 +173,13 @@ private class LottiePainter( private var alpha by mutableStateOf(1f) - private val currentFrame by derivedStateOf { - val p = composition.lottieData.outPoint * progress.coerceIn(0f, 1f) - - composition.lottieData.inPoint - p.coerceAtLeast(0f) - } - - val compositionLayer: BaseCompositionLayer = composition.lottieData + private val compositionLayer: BaseCompositionLayer = composition.lottieData .layers .takeIf { it.size == 1 // don't create extra composition layer }?.first() as? BaseCompositionLayer // if Precomposition is the only layer ?: CompositionLayer(composition) - init { compositionLayer.painterProperties = PainterProperties( assets = composition.lottieData.assets.associateBy(LottieAsset::id), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt index 9e8e250a..9f932b22 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt @@ -10,34 +10,31 @@ import androidx.compose.runtime.setValue /** * Returns a [LottieAnimationState] representing the progress of an animation. * - * This is the declarative version of [rememberLottieAnimatable] and [LottieAnimation]. + * This is the declarative version of [rememberLottieAnimatable]. * * @param composition The composition to render. This should be retrieved with [rememberLottieComposition]. * @param isPlaying Whether or not the animation is currently playing. Note that the internal - * animation may end due to reaching the target iterations count. If that happens, - * the animation may stop even if this is still true. You can observe the returned - * [LottieAnimationState.isPlaying] to determine whether the underlying animation - * is still playing. + * animation may end due to reaching the target iterations count. If that happens, the animation may + * stop even if this is still true. You can observe the returned [LottieAnimationState.isPlaying] + * to determine whether the underlying animation is still playing. * @param restartOnPlay If isPlaying switches from false to true, restartOnPlay determines whether - * the progress and iteration gets reset. + * the progress and iteration gets reset. * @param reverseOnRepeat Defines what this animation should do when it reaches the end. This setting - * is applied only when [iterations] is either greater than 0 or [LottieConstants.IterateForever]. - * Defaults to `false`. + * is applied only when [iterations] is either greater than 0 or [LottieConstants.IterateForever]. + * Defaults to `false`. * @param clipSpec A [LottieClipSpec] that specifies the bound the animation playback - * should be clipped to. + * should be clipped to. * @param speed The speed the animation should play at. Numbers larger than one will speed it up. - * Numbers between 0 and 1 will slow it down. Numbers less than 0 will play it backwards. + * Numbers between 0 and 1 will slow it down. Numbers less than 0 will play it backwards. * @param iterations The number of times the animation should repeat before stopping. It must be - * a positive number. [LottieConstants.IterateForever] can be used to repeat forever. - * @param cancellationBehavior The behavior that this animation should have when cancelled. In most cases, - * you will want it to cancel immediately. However, if you have a state based - * transition and you want an animation to finish playing before moving on to - * the next one then you may want to set this to [LottieCancellationBehavior.OnIterationFinish]. - * @param ignoreSystemAnimatorScale By default, Lottie will respect the system animator scale set in developer options or set to 0 - * by things like battery saver mode. When set to 0, the speed will effectively become [Integer.MAX_VALUE]. - * Set this to false if you want to ignore the system animator scale and always default to normal speed. - * - * @param forceFPS scale animation frame rate to specific value + * a positive number. [LottieConstants.IterateForever] can be used to repeat forever. + * @param cancellationBehavior The behavior that this animation should have when cancelled. + * In most cases, you will want it to cancel immediately. However, if you have a state based + * transition and you want an animation to finish playing before moving on to the next one then you + * may want to set this to [LottieCancellationBehavior.OnIterationFinish]. + * @param useCompositionFrameRate Use frame rate declared in animation instead of screen refresh rate. + * Animation may seem junky if parameter is set to true and composition frame rate is less than screen + * refresh rate */ @Composable fun animateLottieCompositionAsState( @@ -58,8 +55,6 @@ fun animateLottieCompositionAsState( val animatable = rememberLottieAnimatable() var wasPlaying by remember { mutableStateOf(isPlaying) } - // Dividing by 0 correctly yields Float.POSITIVE_INFINITY here. - LaunchedEffect( composition, isPlaying, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt new file mode 100644 index 00000000..b904646f --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt @@ -0,0 +1,17 @@ +package io.github.alexzhirkevich.compottie.dynamic + +/** + * Lottie dynamic properties builder + * */ +sealed interface DynamicComposition { + + /** + * Layer dynamic properties builder. + * */ + fun shapeLayer(name: String, builder: DynamicLayer.Shape.() -> Unit) + + /** + * Layer dynamic properties builder. + * */ + fun layer(name: String, builder: DynamicLayer.() -> Unit) +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt new file mode 100644 index 00000000..6bd62616 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt @@ -0,0 +1,3 @@ +package io.github.alexzhirkevich.compottie.dynamic + +sealed interface DynamicFill \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt new file mode 100644 index 00000000..36f8d120 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt @@ -0,0 +1,17 @@ +package io.github.alexzhirkevich.compottie.dynamic + +sealed interface DynamicLayer { + + fun transform(builder: DynamicTransform.() -> Unit) + + sealed interface Shape : DynamicLayer { + + fun fill(name: String, builder: DynamicFill.() -> Unit) + + fun stroke(name: String, builder: DynamicFill.() -> Unit) + } + + sealed interface Text : DynamicLayer { + + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt new file mode 100644 index 00000000..482a5c81 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt @@ -0,0 +1,3 @@ +package io.github.alexzhirkevich.compottie.dynamic + +sealed interface DynamicStroke \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt new file mode 100644 index 00000000..0bdc04ad --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt @@ -0,0 +1,19 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.layout.ScaleFactor + +interface DynamicTransform { + + fun scale(provider : PropertyProvider) + + fun offset(provider : PropertyProvider) + + fun rotation(provider : PropertyProvider) + + fun opacity(provider : PropertyProvider) + + fun skew(provider : PropertyProvider) + + fun skewAxis(provider : PropertyProvider) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt new file mode 100644 index 00000000..8af66944 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt @@ -0,0 +1,80 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.layout.ScaleFactor + +internal class DynamicCompositionImpl : DynamicComposition { + + private val layers = mutableMapOf() + + override fun shapeLayer(name: String, builder: DynamicLayer.Shape.() -> Unit) { + layers[name] = DynamicShapeLayerImpl().apply(builder) + } + + override fun layer(name: String, builder: DynamicLayer.() -> Unit) { + layers[name] = DynamicLayerImpl().apply(builder) + } + + operator fun get(name: String): DynamicLayerImpl? = layers[name] +} + + +internal open class DynamicLayerImpl : DynamicLayer { + + var transform : DynamicTransformImpl? = null + + override fun transform(builder: DynamicTransform.() -> Unit) { + transform = DynamicTransformImpl().apply(builder) + } +} + +internal class DynamicShapeLayerImpl : DynamicLayerImpl(), DynamicLayer.Shape { + + override fun fill(name: String, builder: DynamicFill.() -> Unit) { + TODO("Not yet implemented") + } + + override fun stroke(name: String, builder: DynamicFill.() -> Unit) { + TODO("Not yet implemented") + } +} + +internal class DynamicTransformImpl : DynamicTransform { + + var scale : PropertyProvider? = null + private set + var offset : PropertyProvider? = null + private set + var rotation : PropertyProvider? = null + private set + var opacity : PropertyProvider? = null + private set + var skew : PropertyProvider? = null + private set + var skewAxis : PropertyProvider? = null + private set + + override fun scale(provider: PropertyProvider) { + this.scale = provider + } + + override fun offset(provider: PropertyProvider) { + this.offset = provider + } + + override fun rotation(provider: PropertyProvider) { + this.rotation = provider + } + + override fun opacity(provider: PropertyProvider) { + this.opacity = provider + } + + override fun skew(provider: PropertyProvider) { + this.skew = provider + } + + override fun skewAxis(provider: PropertyProvider) { + this.skewAxis = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt new file mode 100644 index 00000000..bc3d9aa1 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt @@ -0,0 +1,5 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import io.github.alexzhirkevich.compottie.internal.AnimationState + +typealias PropertyProvider = (source : T, state: AnimationState) -> T diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 8f58fedf..c90998d9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -1,14 +1,24 @@ package io.github.alexzhirkevich.compottie.internal -import androidx.compose.runtime.derivedStateOf -import androidx.compose.runtime.getValue -import io.github.alexzhirkevich.compottie.LottieComposition -import kotlin.jvm.JvmField +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract import kotlin.jvm.JvmInline @JvmInline -value class AnimationState(val frame : Float) { - fun shift(frame: Float) = AnimationState(frame + this.frame) +value class AnimationState @PublishedApi internal constructor(val frame : Float) { + + /** + * Remaps current state to requested [frame] and performs [block] on it. + * State is restored after the [block] call + * */ + @OptIn(ExperimentalContracts::class) + inline fun remapped(frame: Float, block : (AnimationState) -> R) : R { + contract { + callsInPlace(block, InvocationKind.EXACTLY_ONCE) + } + return block(AnimationState(frame)) + } } //internal interface AnimationState { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 0a88e8f8..27682c1c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -60,7 +60,10 @@ internal abstract class AnimatedTransform { // 1) Find the next position value. // 2) Create a vector from the current position to the next position. // 3) Find the angle of that vector to the X axis (0 degrees). - val nextPosition = position!!.interpolated(state.shift(0.001f)) + val nextPosition = state.remapped(state.frame + 0.001f) { + position!!.interpolated(it) + } + val rotationValue= Math.toDegree( atan2( (nextPosition.y - startY), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index ec360a55..55c84bdc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -8,7 +8,6 @@ import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber -import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.clipRect @@ -18,11 +17,11 @@ import kotlinx.serialization.Transient internal abstract class BaseCompositionLayer: BaseLayer() { - abstract val width : Float + abstract val width: Float - abstract val height : Float + abstract val height: Float - abstract val timeRemapping : AnimatedNumber? + abstract val timeRemapping: AnimatedNumber? private val rect = MutableRect(0f, 0f, 0f, 0f) @@ -41,7 +40,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { // } - abstract fun loadLayers() : List + abstract fun loadLayers(): List private val layers by lazy { val layers = loadLayers().filterIsInstance() @@ -115,20 +114,19 @@ internal abstract class BaseCompositionLayer: BaseLayer() { val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha - layers.fastForEachReversed { layer -> - // Only clip precomps. This mimics the way After Effects renders animations. - val ignoreClipOnThisLayer = isContainerLayer || painterProperties?.clipToDrawBounds == false + state.remapped(getRemappedFrame(state)) { remappedState -> + layers.fastForEachReversed { layer -> + // Only clip precomps. This mimics the way After Effects renders animations. + val ignoreClipOnThisLayer = + isContainerLayer || painterProperties?.clipToDrawBounds == false - if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { - canvas.clipRect(newClipRect) - } + if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { + canvas.clipRect(newClipRect) + } - layer.draw( - drawScope, - parentMatrix, - childAlpha, - AnimationState(remappedFrame(state)) - ) + + layer.draw(drawScope, parentMatrix, childAlpha, remappedState) + } } canvas.restore() @@ -150,17 +148,18 @@ internal abstract class BaseCompositionLayer: BaseLayer() { } } - private fun remappedFrame(state: AnimationState): Float { + private fun getRemappedFrame(state: AnimationState): Float { - val tr = timeRemapping ?: return state.frame - - val f = if (timeStretch != 0f && !isContainerLayer) { + val f = if (timeStretch != 0f && timeStretch != 1f && !isContainerLayer) { state.frame / timeStretch } else state.frame + val tr = timeRemapping ?: return f + val composition = checkNotNull(painterProperties?.composition) - return tr.interpolated(state) * - composition.frameRate - composition.startFrame + return state.remapped(f) { + tr.interpolated(it) * composition.frameRate - composition.startFrame + } } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 1e9898ba..7b0690e8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,9 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.layers -import androidx.compose.ui.graphics.Paint import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 6e868583..bac418d9 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -11,9 +11,14 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.NativeKeyEvent +import androidx.compose.ui.input.key.key +import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res +import io.github.alexzhirkevich.compottie.CompottieException import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants @@ -60,12 +65,25 @@ fun App() { val composition = rememberLottieComposition { + shapeLayer("Fucking Slave") { + transform { + opacity { source, state -> source / 2 } + } + + fill("Pizdec"){ + + } + } + + Modifier.onKeyEvent { + it.key == Key.Spacebar + } + + LottieCompositionSpec.Resource(ROBOT) // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(ROBOT) - // LottieCompositionSpec.Resource(IMAGE_ASSET) // LottieCompositionSpec.Url( @@ -74,8 +92,13 @@ fun App() { // ) } + // If you want to be aware of loading errors LaunchedEffect(composition) { - composition.await() + try { + composition.await() + } catch (t : CompottieException){ + t.printStackTrace() + } } Box( @@ -112,7 +135,6 @@ fun LottieCompositionSpec.Companion.Resource( assetsManager: LottieAssetsManager = ResourcesAssetsManager(), readBytes: suspend (path: String) -> ByteArray = Res::readBytes ) : LottieCompositionSpec = JsonString(assetsManager) { - readBytes("$dir/$path").decodeToString() } From f0246aa79da95ff3bb48a41982f5b3afa5293bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 14 Jun 2024 02:37:23 +0300 Subject: [PATCH 047/100] wip dynamic --- .../compottie/LottieComposition.kt | 25 +-- .../alexzhirkevich/compottie/LottiePainter.kt | 15 +- .../compottie/dynamic/DynamicComposition.kt | 11 +- .../dynamic/DynamicCompositionImpl.kt | 157 ++++++++++++++++++ .../compottie/dynamic/DynamicFill.kt | 14 +- .../compottie/dynamic/DynamicLayer.kt | 8 +- .../compottie/dynamic/DynamicShape.kt | 3 + .../compottie/dynamic/DynamicTransform.kt | 41 ++++- .../alexzhirkevich/compottie/dynamic/Impl.kt | 80 --------- .../compottie/dynamic/PropertyProvider.kt | 19 ++- .../compottie/internal/AnimationState.kt | 68 ++++---- .../internal/animation/AnimatedTransform.kt | 135 +++++++++------ .../internal/animation/AnimatedVector2.kt | 2 + .../internal/effects/LayerEffectsApplier.kt | 23 ++- .../internal/layers/BaseCompositionLayer.kt | 21 ++- .../compottie/internal/layers/BaseLayer.kt | 32 ++-- .../internal/layers/CompositionLayer.kt | 2 +- .../compottie/internal/layers/ImageLayer.kt | 20 +-- .../compottie/internal/layers/Layer.kt | 19 ++- .../compottie/internal/layers/NullLayer.kt | 2 +- .../internal/layers/PrecompositionLayer.kt | 2 +- .../compottie/internal/layers/ShapeLayer.kt | 20 ++- .../internal/layers/SolidColorLayer.kt | 5 +- .../compottie/internal/layers/TextLayer.kt | 7 +- .../internal/shapes/BaseStrokeShape.kt | 2 + .../compottie/internal/shapes/FillShape.kt | 50 ++++-- .../internal/shapes/GradientFillShape.kt | 9 +- .../compottie/internal/shapes/GroupShape.kt | 17 +- .../compottie/internal/shapes/Shape.kt | 5 + .../src/main/kotlin/MainActivity.kt | 1 + .../composeResources/files/robot.json | 2 +- example/shared/src/commonMain/kotlin/App.kt | 31 ++-- 32 files changed, 568 insertions(+), 280 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 65bb5912..2c7de9c1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -14,7 +14,7 @@ import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieFont import io.github.alexzhirkevich.compottie.dynamic.DynamicComposition -import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionImpl +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.internal.LottieData import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset @@ -85,8 +85,12 @@ class LottieComposition internal constructor( internal var fontsByFamily: Map = emptyMap() - internal var dynamicComposition : DynamicCompositionImpl? = null - + internal var dynamic : DynamicCompositionProvider? = null + set(value) { + if (value == null || value.size > 0) { + field = value + } + } private val fontMutex = Mutex() /** @@ -215,14 +219,17 @@ fun rememberLottieComposition( /** * Load and prepare [LottieComposition] for displaying. * - * Instance produces by [spec] will be remembered until [keys] are changed + * Instance produces by [spec] will be remembered until [keys] are changed. + * + * You can configure various dynamic animation properties in the [dynamic] block. * */ @OptIn(InternalCompottieApi::class) @Composable @Stable fun rememberLottieComposition( vararg keys : Any?, - spec : suspend DynamicComposition.(LottieContext) -> LottieCompositionSpec, + dynamic : DynamicComposition.() -> Unit = {}, + spec : suspend (LottieContext) -> LottieCompositionSpec, ) : LottieCompositionResult { val updatedSpec by rememberUpdatedState(spec) @@ -236,12 +243,10 @@ fun rememberLottieComposition( LaunchedEffect(result) { withContext(Dispatchers.IODispatcher) { try { - DynamicCompositionImpl().run { - val composition = updatedSpec(context).load().apply { - dynamicComposition = this@run - } - result.complete(composition) + val composition = updatedSpec(context).load().apply { + this.dynamic = DynamicCompositionProvider().apply(dynamic) } + result.complete(composition) } catch (c: CancellationException) { result.completeExceptionally(c) throw c diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 381707c6..46886f7c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -181,13 +181,14 @@ private class LottiePainter( ?: CompositionLayer(composition) init { - compositionLayer.painterProperties = PainterProperties( + val painterProperties = PainterProperties( assets = composition.lottieData.assets.associateBy(LottieAsset::id), - composition = composition, - clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver, - clipToDrawBounds = clipToCompositionBounds + clipToDrawBounds = clipToCompositionBounds, + clipTextToBoundingBoxes = clipTextToBoundingBoxes, ) + compositionLayer.painterProperties = painterProperties + compositionLayer.onStart(composition) } private val frame: Float by derivedStateOf { @@ -204,6 +205,8 @@ private class LottiePainter( return true } + private val animationState = AnimationState(frame, composition) + override fun DrawScope.onDraw() { matrix.reset() @@ -226,7 +229,9 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { - compositionLayer.draw(this, matrix, alpha, AnimationState(frame)) + animationState.remapped(frame) { + compositionLayer.draw(this, matrix, alpha, it) + } } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt index b904646f..709b4467 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt @@ -8,10 +8,17 @@ sealed interface DynamicComposition { /** * Layer dynamic properties builder. * */ - fun shapeLayer(name: String, builder: DynamicLayer.Shape.() -> Unit) + fun shapeLayer(vararg path: String, builder: DynamicLayer.Shape.() -> Unit) /** * Layer dynamic properties builder. * */ - fun layer(name: String, builder: DynamicLayer.() -> Unit) + fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) } + +internal const val LayerPathSeparator = "/" + +internal fun layerPath(base : String?, name : String) : String = listOfNotNull(base, name) + .joinToString(LayerPathSeparator) + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt new file mode 100644 index 00000000..b2d1d5f6 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt @@ -0,0 +1,157 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.layout.ScaleFactor + +internal class DynamicCompositionProvider : DynamicComposition { + + private val layers = mutableMapOf() + + val size: Int + get() = layers.size + + override fun shapeLayer(vararg path: String, builder: DynamicLayer.Shape.() -> Unit) { + val p = path.joinToString(LayerPathSeparator) + + val provider = when(val existent = layers[p]) { + is DynamicShapeLayerProvider -> existent + is DynamicLayerProvider -> DynamicShapeLayerProvider().apply { + transform = existent.transform + } + + else -> DynamicShapeLayerProvider() + } + + provider.apply(builder) + + layers[p] = provider + } + + override fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) { + layers[path.joinToString(LayerPathSeparator)] = DynamicLayerProvider().apply(builder) + } + + operator fun get(name: String): DynamicLayerProvider? = layers[name] +} + + +internal open class DynamicLayerProvider : DynamicLayer { + + var transform : DynamicTransformProvider? = null + + override fun transform(builder: DynamicTransform.() -> Unit) { + transform = DynamicTransformProvider().apply(builder) + } +} + +internal class DynamicShapeLayerProvider( + private val basePath : String? = null, + private val root : DynamicShapeLayerProvider? = null +) : DynamicLayerProvider(), DynamicLayer.Shape { + + private val nRoot get() = root ?: this + + private val shapes = mutableMapOf() + + override fun group(name: String, shape: DynamicLayer.Shape.() -> Unit) { + DynamicShapeLayerProvider( + basePath = layerPath(basePath, name), + root = nRoot + ).apply(shape) + } + + override fun fill(vararg path: String, builder: DynamicFill.() -> Unit) { + shapes[layerPath(basePath, path.joinToString(LayerPathSeparator))] = + DynamicFillProvider().apply(builder) + } + + override fun stroke(vararg path: String, builder: DynamicFill.() -> Unit) { + } + + internal fun get(path : String) : DynamicShape? = shapes[path] +} + +internal inline fun DynamicShape.requireShape(path: String) : T { + check(this is T){ + val e = T::class.simpleName!!.substringBeforeLast("Provider") + val a = this::class.simpleName!!.substringBeforeLast("Provider") + + "$path expected to be $e but is $a" + } + + return this +} + +internal class DynamicTransformProvider : DynamicTransform { + + var scale : PropertyProvider? = null + private set + var offset : PropertyProvider? = null + private set + var rotation : PropertyProvider? = null + private set + var opacity : PropertyProvider? = null + private set + var skew : PropertyProvider? = null + private set + var skewAxis : PropertyProvider? = null + private set + + override fun scale(provider: PropertyProvider) { + this.scale = provider + } + + override fun offset(provider: PropertyProvider) { + this.offset = provider + } + + override fun rotation(provider: PropertyProvider) { + this.rotation = provider + } + + override fun opacity(provider: PropertyProvider) { + this.opacity = provider + } + + override fun skew(provider: PropertyProvider) { + this.skew = provider + } + + override fun skewAxis(provider: PropertyProvider) { + this.skewAxis = provider + } +} + +internal class DynamicFillProvider : DynamicFill { + + var color : PropertyProvider? = null + private set + + var opacity : PropertyProvider? = null + private set + + var colorFilter : PropertyProvider? = null + private set + + var blendMode : PropertyProvider? = null + private set + + override fun color(provider: PropertyProvider) { + color = provider + } + + override fun opacity(provider: PropertyProvider) { + opacity = provider + } + + override fun colorFilter(provider: PropertyProvider) { + colorFilter = provider + } + + override fun blendMode(provider: PropertyProvider) { + blendMode = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt index 6bd62616..12cac964 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt @@ -1,3 +1,15 @@ package io.github.alexzhirkevich.compottie.dynamic -sealed interface DynamicFill \ No newline at end of file +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter + +sealed interface DynamicFill : DynamicShape { + fun color(provider : PropertyProvider) + + fun opacity(provider : PropertyProvider) + + fun colorFilter(provider : PropertyProvider) + + fun blendMode(provider: PropertyProvider) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt index 36f8d120..947fa320 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt @@ -6,12 +6,10 @@ sealed interface DynamicLayer { sealed interface Shape : DynamicLayer { - fun fill(name: String, builder: DynamicFill.() -> Unit) + fun group(name : String, shape: Shape.() -> Unit) - fun stroke(name: String, builder: DynamicFill.() -> Unit) - } - - sealed interface Text : DynamicLayer { + fun fill(vararg path: String, builder: DynamicFill.() -> Unit) + fun stroke(vararg path: String, builder: DynamicFill.() -> Unit) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt new file mode 100644 index 00000000..6d076dba --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt @@ -0,0 +1,3 @@ +package io.github.alexzhirkevich.compottie.dynamic + +sealed interface DynamicShape \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt index 0bdc04ad..ef09bc12 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt @@ -5,15 +5,50 @@ import androidx.compose.ui.layout.ScaleFactor interface DynamicTransform { + /** + * Apply dynamic scale transform for layer. + * + * Note: source is the relative layer scale derived from the layer transform (not absolute value). + * Scale derived from this provide will be multiplied by parent layer scale + * */ fun scale(provider : PropertyProvider) + /** + * Apply dynamic offset transform for layer. + * + * Note: source is the relative layer offset derived from the layer transform (not absolute value). + * Offset derived from this provider will be concatenated with parent layer offset + * */ fun offset(provider : PropertyProvider) + /** + * Apply dynamic rotation transform for layer. + * + * Note: source is the relative layer rotation derived from the layer transform (not absolute value). + * Rotation derived from this provider will be concatenated with parent layer rotation + * */ fun rotation(provider : PropertyProvider) - fun opacity(provider : PropertyProvider) - + /** + * Apply dynamic skew transform for layer. + * + * Note: source is the relative layer skew derived from the layer transform (not absolute value). + * Skew derived from this provider will be concatenated with parent layer skew + * */ fun skew(provider : PropertyProvider) + /** + * Angle of the [skew] + * + * Note: source is the relative layer skew angle derived from the layer transform (not absolute value). + * */ fun skewAxis(provider : PropertyProvider) -} \ No newline at end of file + + /** + * Apply dynamic opacity transform + * + * Note: source is the relative layer opacity derived from the layer transform (not absolute value). + * Opacity derived from this provider will be multiplied by parent layer opacity + * */ + fun opacity(provider : PropertyProvider) +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt deleted file mode 100644 index 8af66944..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/Impl.kt +++ /dev/null @@ -1,80 +0,0 @@ -package io.github.alexzhirkevich.compottie.dynamic - -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.layout.ScaleFactor - -internal class DynamicCompositionImpl : DynamicComposition { - - private val layers = mutableMapOf() - - override fun shapeLayer(name: String, builder: DynamicLayer.Shape.() -> Unit) { - layers[name] = DynamicShapeLayerImpl().apply(builder) - } - - override fun layer(name: String, builder: DynamicLayer.() -> Unit) { - layers[name] = DynamicLayerImpl().apply(builder) - } - - operator fun get(name: String): DynamicLayerImpl? = layers[name] -} - - -internal open class DynamicLayerImpl : DynamicLayer { - - var transform : DynamicTransformImpl? = null - - override fun transform(builder: DynamicTransform.() -> Unit) { - transform = DynamicTransformImpl().apply(builder) - } -} - -internal class DynamicShapeLayerImpl : DynamicLayerImpl(), DynamicLayer.Shape { - - override fun fill(name: String, builder: DynamicFill.() -> Unit) { - TODO("Not yet implemented") - } - - override fun stroke(name: String, builder: DynamicFill.() -> Unit) { - TODO("Not yet implemented") - } -} - -internal class DynamicTransformImpl : DynamicTransform { - - var scale : PropertyProvider? = null - private set - var offset : PropertyProvider? = null - private set - var rotation : PropertyProvider? = null - private set - var opacity : PropertyProvider? = null - private set - var skew : PropertyProvider? = null - private set - var skewAxis : PropertyProvider? = null - private set - - override fun scale(provider: PropertyProvider) { - this.scale = provider - } - - override fun offset(provider: PropertyProvider) { - this.offset = provider - } - - override fun rotation(provider: PropertyProvider) { - this.rotation = provider - } - - override fun opacity(provider: PropertyProvider) { - this.opacity = provider - } - - override fun skew(provider: PropertyProvider) { - this.skew = provider - } - - override fun skewAxis(provider: PropertyProvider) { - this.skewAxis = provider - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt index bc3d9aa1..971b7f5b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt @@ -1,5 +1,22 @@ package io.github.alexzhirkevich.compottie.dynamic +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.layout.ScaleFactor import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.Vec2 -typealias PropertyProvider = (source : T, state: AnimationState) -> T +typealias PropertyProvider = AnimationState.(source : T) -> T + +/** + * Returns [source] if this is null and provided value otherwise + * */ +internal fun PropertyProvider?.derive(source : T, state: AnimationState) : T { + return if (this == null) source else invoke(state, source) +} + +internal fun ScaleFactor.toVec2() = Vec2(scaleX,scaleY) +internal fun Vec2.toScaleFactor() = ScaleFactor(x, y) + +private val IdentityScaleFactor = ScaleFactor(1f,1f) + +internal val ScaleFactor.Companion.Identity get() = IdentityScaleFactor \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index c90998d9..9d6b474c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -1,58 +1,46 @@ package io.github.alexzhirkevich.compottie.internal +import io.github.alexzhirkevich.compottie.LottieComposition import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract import kotlin.jvm.JvmInline -@JvmInline -value class AnimationState @PublishedApi internal constructor(val frame : Float) { +class AnimationState @PublishedApi internal constructor( + frame : Float, + val composition : LottieComposition +) { + var frame = frame + private set + + val progress : Float + get() { + val p = (frame - composition.lottieData.inPoint)/ + (composition.lottieData.outPoint - composition.lottieData.inPoint) + return p.coerceIn(0f,1f) + } + + @PublishedApi + internal fun setFrame(frame: Float) { + this.frame = frame + } /** * Remaps current state to requested [frame] and performs [block] on it. * State is restored after the [block] call * */ @OptIn(ExperimentalContracts::class) - inline fun remapped(frame: Float, block : (AnimationState) -> R) : R { + fun remapped(frame: Float, block: (AnimationState) -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } - return block(AnimationState(frame)) + val initial = this.frame + + return try { + setFrame(frame) + block(this) + } finally { + setFrame(initial) + } } } - -//internal interface AnimationState { -// -// val animation : LottieData -// -// val frame: Float -//} -// -//internal class CompositionAnimationState( -// private val composition: LottieComposition, -// private val progressProvider : () -> Float, -//) : AnimationState { -// -// override val animation: LottieData -// get() = composition.lottieData -// -// override val frame: Float by derivedStateOf { -// val p = composition.lottieData.outPoint * progressProvider() - -// composition.lottieData.inPoint -// p.coerceAtLeast(0f) -// } -//} -// -//internal class RemappedAnimationState( -// private val frameRemapping : (AnimationState) -> Float = { it.frame }, -//) : AnimationState { -// -// var delegate: AnimationState? = null -// -// override val frame: Float by derivedStateOf { -// frameRemapping(checkNotNull(delegate)) -// } -// -// override val animation: LottieData -// get() = checkNotNull(delegate).animation -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 27682c1c..4278e94e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -1,6 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.animation +import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.layout.ScaleFactor +import io.github.alexzhirkevich.compottie.dynamic.DynamicTransformProvider +import io.github.alexzhirkevich.compottie.dynamic.Identity +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.toScaleFactor +import io.github.alexzhirkevich.compottie.dynamic.toVec2 import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.utils.Math import io.github.alexzhirkevich.compottie.internal.utils.preConcat @@ -24,6 +31,7 @@ internal abstract class AnimatedTransform { abstract val skewAxis: AnimatedNumber? var autoOrient = false + var dynamic : DynamicTransformProvider? = null protected val matrix: Matrix = Matrix() @@ -44,19 +52,24 @@ internal abstract class AnimatedTransform { } fun matrix(state: AnimationState): Matrix { + matrix.reset() - val interpolatedPosition = position?.interpolated(state) + var interpolatedPosition = position?.interpolated(state) ?.takeIf { it.x != 0f || it.y != 0f } ?.also { matrix.preTranslate(it.x, it.y) } + dynamic?.offset?.let { + interpolatedPosition = it.derive(interpolatedPosition ?: Offset.Zero, state) + } + if (autoOrient){ if (interpolatedPosition != null) { // Store the start X and Y values because the pointF will be overwritten by the next getValue call. - val startX = interpolatedPosition.x - val startY = interpolatedPosition.y + val startX = interpolatedPosition!!.x + val startY = interpolatedPosition!!.y // 1) Find the next position value. // 2) Create a vector from the current position to the next position. // 3) Find the angle of that vector to the X axis (0 degrees). @@ -64,66 +77,90 @@ internal abstract class AnimatedTransform { position!!.interpolated(it) } - val rotationValue= Math.toDegree( + var rotationValue= Math.toDegree( atan2( (nextPosition.y - startY), (nextPosition.x - startX) ) ) - matrix.preRotate(rotationValue.toFloat()) + + dynamic?.rotation?.let { + rotationValue = it.derive(rotationValue, state) + } + + matrix.preRotate(rotationValue) } } else { - rotation?.interpolated(state) + var rotation = rotation?.interpolated(state) ?.takeIf { it != 0f } - ?.let(matrix::preRotate) + + dynamic?.rotation?.let { + rotation = it.derive(rotation ?: 0f, state) + } + + rotation?.let(matrix::preRotate) } - skew?.interpolated(state) + var skew = skew?.interpolated(state) ?.takeIf { it != 0f } - ?.let { sk -> - val skewAngle = skewAxis?.interpolated(state) - - val mCos = if (skewAngle == null) - 0f - else cos(Math.toRadians(-skewAngle + 90)) - - val mSin = if (skewAngle == null) - 1f - else sin(Math.toRadians(-skewAngle + 90)) - - val aTan = tan(Math.toRadians(sk)) - - clearSkewValues() - skewValues[0] = mCos - skewValues[1] = mSin - skewValues[3] = -mSin - skewValues[4] = mCos - skewValues[8] = 1f - skewMatrix1.setValues(skewValues) - clearSkewValues() - skewValues[0] = 1f - skewValues[3] = aTan - skewValues[4] = 1f - skewValues[8] = 1f - skewMatrix2.setValues(skewValues) - clearSkewValues() - skewValues[0] = mCos - skewValues[1] = -mSin - skewValues[3] = mSin - skewValues[4] = mCos - skewValues[8] = 1f - - skewMatrix3.setValues(skewValues) - skewMatrix2.preConcat(skewMatrix1) - skewMatrix3.preConcat(skewMatrix2) - matrix.preConcat(skewMatrix3) + + dynamic?.skew?.let { + skew = it.derive(skew ?: 0f, state) + } + + skew?.let { sk -> + var skewAngle = skewAxis?.interpolated(state) + + dynamic?.skewAxis?.let { + skewAngle = it.derive(skewAngle ?: 0f, state) } - scale?.interpolatedNorm(state) + val mCos = if (skewAngle == null) + 0f + else cos(Math.toRadians(-skewAngle!! + 90)) + + val mSin = if (skewAngle == null) + 1f + else sin(Math.toRadians(-skewAngle!! + 90)) + + val aTan = tan(Math.toRadians(sk)) + + clearSkewValues() + skewValues[0] = mCos + skewValues[1] = mSin + skewValues[3] = -mSin + skewValues[4] = mCos + skewValues[8] = 1f + skewMatrix1.setValues(skewValues) + clearSkewValues() + skewValues[0] = 1f + skewValues[3] = aTan + skewValues[4] = 1f + skewValues[8] = 1f + skewMatrix2.setValues(skewValues) + clearSkewValues() + skewValues[0] = mCos + skewValues[1] = -mSin + skewValues[3] = mSin + skewValues[4] = mCos + skewValues[8] = 1f + + skewMatrix3.setValues(skewValues) + skewMatrix2.preConcat(skewMatrix1) + skewMatrix3.preConcat(skewMatrix2) + matrix.preConcat(skewMatrix3) + } + + var scale = scale?.interpolatedNorm(state) ?.takeIf { it.x != 1f || it.y != 1f } - ?.let { - matrix.preScale(it.x, it.y) - } + + dynamic?.scale?.let { + scale = it.derive(scale?.toScaleFactor() ?: ScaleFactor.Identity, state).toVec2() + } + + scale?.let { + matrix.preScale(it.x, it.y) + } anchorPoint?.interpolated(state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 92940d6c..193ef73d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -21,6 +21,8 @@ import kotlin.math.hypot internal typealias Vec2 = Offset +internal fun Vec2(x : Float, y : Float) : Vec2 = Offset(x,y) + @Serializable(with = AnimatedVector2Serializer::class) internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt index f1228c8c..814a3aa8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.effects +import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter @@ -25,7 +26,6 @@ internal class LayerEffectsApplier( ) { fun applyTo(paint: Paint, animationState: AnimationState, effectState : LayerEffectsState) { - paint.resetEffects() layer.effects.fastForEachReversed { when (it){ is BlurEffect -> paint.applyBlurEffect(it, animationState, effectState) @@ -53,6 +53,9 @@ internal class LayerEffectsState { var dropShadowHash : Int? = null var dropShadowEffect : PlatformDropShadowEffect? = null + + var tintHash : Int? = null + var tintColorFiter : ColorFilter? = null } private fun Paint.applyBlurEffect( @@ -100,17 +103,29 @@ private fun Paint.applyTintEffect( val black = effect.black?.interpolated(animationState)?.let { it.copy(alpha = it.alpha * intensity) - } + } ?: Color.Black val white = effect.white?.interpolated(animationState)?.let { it.copy(alpha = it.alpha * intensity) } - if (black != Color.Black) - return + if (black.red != 0f || black.green != 0f || black.blue != 0f) + return //unsupported + + val hash = white.hashCode() + if (this === effectState.lastPaint && + hash == effectState.tintHash && + effectState.tintColorFiter != null + ){ + colorFilter = effectState.tintColorFiter + return + } colorFilter = if (white != null) { ColorFilter.tint(white, BlendMode.Modulate) } else null + + effectState.tintHash = hash + effectState.tintColorFiter = colorFilter } internal fun Paint.applyDropShadowEffect( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 55c84bdc..a5b506d5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -6,6 +6,9 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.dynamic.LayerPathSeparator +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -33,17 +36,31 @@ internal abstract class BaseCompositionLayer: BaseLayer() { isAntiAlias = true } + override fun onStart(composition: LottieComposition) { + layers.forEach { it.onStart(composition) } + } + // private val remappedState by lazy { // RemappedAnimationState( // frameRemapping = ::remappedFrame // ) // } - abstract fun loadLayers(): List private val layers by lazy { val layers = loadLayers().filterIsInstance() + + if (name != null) { + layers.fastForEach { + it.namePath = layerPath(this.namePath, name!!) + } + } + + layers.fastForEach { + it.effects = effects + it.effects + } + val matteLayers = mutableSetOf() val layersWithIndex = layers @@ -156,7 +173,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { val tr = timeRemapping ?: return f - val composition = checkNotNull(painterProperties?.composition) + val composition = state.composition return state.remapped(f) { tr.interpolated(it) * composition.frameRate - composition.startFrame diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 3c1073a1..3d052534 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -10,17 +10,17 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.isIdentity -import androidx.compose.ui.graphics.withSave import androidx.compose.ui.util.fastFirstOrNull import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -30,7 +30,6 @@ import io.github.alexzhirkevich.compottie.internal.helpers.isInvert import io.github.alexzhirkevich.compottie.internal.helpers.isLuma import io.github.alexzhirkevich.compottie.internal.platform.Luma import io.github.alexzhirkevich.compottie.internal.platform.drawRect -import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set @@ -38,10 +37,12 @@ import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union -internal abstract class BaseLayer() : Layer, DrawingContent { +internal abstract class BaseLayer() : Layer { override var painterProperties: PainterProperties? = null + override var namePath: String? = null + protected val boundsMatrix = Matrix() private val path = Path() @@ -94,14 +95,20 @@ internal abstract class BaseLayer() : Layer, DrawingContent { private var parentLayer: BaseLayer? = null private var matteLayer: BaseLayer? = null - private val blurEffect by lazy { - effects.fastFirstOrNull { it is BlurEffect } as? BlurEffect - } - override val effectsApplier by lazy { LayerEffectsApplier(this) } + override fun onStart(composition: LottieComposition) { + super.onStart(composition) + transform.autoOrient = autoOrient == BooleanInt.Yes + + if (name != null) { + transform.dynamic = composition + .dynamic?.get(layerPath(namePath, name!!))?.transform + } + } + abstract fun drawLayer( drawScope: DrawScope, parentMatrix: Matrix, @@ -115,9 +122,7 @@ internal abstract class BaseLayer() : Layer, DrawingContent { parentAlpha: Float, state: AnimationState, ) { - try { - transform.autoOrient = autoOrient == BooleanInt.Yes if (hidden || (inPoint ?: 0f) > state.frame || (outPoint ?: Float.MAX_VALUE) < state.frame) return @@ -130,12 +135,15 @@ internal abstract class BaseLayer() : Layer, DrawingContent { matrix.preConcat(it.transform.matrix(state)) } - var alpha = parentAlpha + var alpha = 1f transform.opacity?.interpolatedNorm(state)?.let { alpha = (alpha * it).coerceIn(0f, 1f) } + alpha = transform.dynamic?.opacity.derive(alpha, state) + + alpha = (alpha * parentAlpha.coerceIn(0f,1f)) if (matteLayer == null && !hasMask()) { matrix.preConcat(transform.matrix(state)) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 91064a40..8770f5c5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -18,7 +18,7 @@ internal class CompositionLayer( override val timeRemapping: AnimatedNumber? get() = null override val masks: List? get() = null - override val effects: List get() = emptyList() + override var effects: List = emptyList() override val transform: Transform = Transform() override val autoOrient: BooleanInt get() = BooleanInt.No diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 51b0f6c6..23f6021b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -1,29 +1,23 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.graphics.BlendMode -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.drawscope.withTransform -import androidx.compose.ui.unit.IntSize import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset -import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode -import io.github.alexzhirkevich.compottie.internal.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Mask +import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -import kotlin.math.roundToInt @Serializable @SerialName("2") @@ -83,7 +77,7 @@ internal class ImageLayer( override val masks: List? = null, @SerialName("ef") - override val effects: List = emptyList(), + override var effects: List = emptyList(), @SerialName("refId") val refId : String, @@ -91,6 +85,7 @@ internal class ImageLayer( @Transient private val paint = Paint().apply { + blendMode = this@ImageLayer.blendMode.asComposeBlendMode() } private val asset : ImageAsset? by lazy { @@ -109,7 +104,6 @@ internal class ImageLayer( effectsApplier.applyTo(paint, state, effectState) - drawScope.drawIntoCanvas { canvas -> canvas.save() canvas.concat(parentMatrix) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 7b0690e8..d95606cb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -2,7 +2,9 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -15,7 +17,7 @@ import kotlinx.serialization.json.JsonClassDiscriminator @OptIn(ExperimentalSerializationApi::class) @JsonClassDiscriminator("ty") -internal sealed interface Layer { +internal sealed interface Layer : DrawingContent { val is3d: BooleanInt @@ -31,10 +33,6 @@ internal sealed interface Layer { val outPoint : Float? - val name : String? - - var painterProperties : PainterProperties? - val blendMode : LottieBlendMode val transform : Transform @@ -55,19 +53,24 @@ internal sealed interface Layer { val masks : List? - val effects: List + var effects: List val effectsApplier : LayerEffectsApplier + + var painterProperties : PainterProperties? + + var namePath : String? + + fun onStart(composition: LottieComposition) {} } internal val Layer.isContainerLayer get() = name == "__container" internal class PainterProperties( - val composition : LottieComposition, val assets: Map = emptyMap(), val fontFamilyResolver: FontFamily.Resolver? = null, - val clipTextToBoundingBoxes : Boolean = false, val clipToDrawBounds : Boolean = true, + val clipTextToBoundingBoxes : Boolean = false, ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index 3aa51c95..4706699a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -71,7 +71,7 @@ internal class NullLayer( override val masks: List? = null, @SerialName("ef") - override val effects: List = emptyList(), + override var effects: List = emptyList(), ) : BaseLayer() { override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index 09b64fe5..d3f7d95d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -53,7 +53,7 @@ internal class PrecompositionLayer( override val masks: List? = null, @SerialName("ef") - override val effects: List = emptyList(), + override var effects: List = emptyList(), @SerialName("ks") override val transform: Transform = Transform(), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 50b63eef..51f6043c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -3,6 +3,10 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -52,7 +56,7 @@ internal class ShapeLayer( override val name: String? = null, @SerialName("ef") - override val effects: List = emptyList(), + override var effects: List = emptyList(), @SerialName("sr") override val timeStretch: Float = 1f, @@ -100,9 +104,21 @@ internal class ShapeLayer( setContents(emptyList(), emptyList()) } + override fun onStart(composition: LottieComposition) { + super.onStart(composition) + + if (name != null) { + (composition.dynamic?.get(layerPath(namePath, name)) as? DynamicShapeLayerProvider)?.let { dp -> + shapes.fastForEach { + it.setDynamicProperties(null, dp) + } + } + } + } + + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { contentGroup.draw(drawScope, parentMatrix, parentAlpha, state) - } override fun getBounds( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 15317591..fc62c558 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -88,7 +88,7 @@ internal class SolidColorLayer( val colorHex : String, @SerialName("ef") - override val effects: List = emptyList() + override var effects: List = emptyList() ) : BaseLayer() { private val color: Color by lazy { @@ -127,8 +127,7 @@ internal class SolidColorLayer( } paint.color = color - paint.alpha = (color.alpha * parentAlpha * - (transform.opacity?.interpolatedNorm(state)?: 1f)).coerceIn(0f, 1f) + paint.alpha = (parentAlpha * (transform.opacity?.interpolatedNorm(state)?: 1f)).coerceIn(0f, 1f) if (paint.alpha == 0f) { return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index f417252f..98ae4f79 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -75,7 +75,7 @@ internal class TextLayer( override val masks: List? = null, @SerialName("ef") - override val effects: List = emptyList(), + override var effects: List = emptyList(), @SerialName("t") private val textData: TextData, @@ -165,7 +165,7 @@ internal class TextLayer( ) { super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) - val composition = checkNotNull(painterProperties?.composition) + val composition = state.composition outBounds.set(0f, 0f, composition.lottieData.width, composition.lottieData.height) } @@ -224,8 +224,7 @@ internal class TextLayer( ?.let { BaselineShift(it) } ?: textStyle.baselineShift - val fontFamily = checkNotNull(painterProperties?.composition?.fontsByFamily) - .get(document.fontFamily) + val fontFamily = animationState.composition.fontsByFamily[document.fontFamily] val letterSpacing = textAnimation?.style?.letterSpacing ?.interpolated(animationState)?.toSp() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 4d22c072..21649d98 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -24,6 +24,7 @@ import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.DashType import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.helpers.applyTrimPath +import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set @@ -93,6 +94,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { strokeMiterLimit = strokeMiter strokeCap = lineCap.asStrokeCap() strokeJoin = lineJoin.asStrokeJoin() + blendMode = layer.blendMode.asComposeBlendMode() } } private val pm = ExtendedPathMeasure() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 09505b55..4c2fad3c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -7,6 +7,11 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.dynamic.DynamicFillProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath +import io.github.alexzhirkevich.compottie.dynamic.requireShape import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent @@ -69,30 +74,48 @@ internal class FillShape( @Transient private var paths: List = emptyList() - private val paint by lazy { - Paint().apply { - isAntiAlias = true - layer.blendMode.asComposeBlendMode() - } + private val paint = Paint().apply { + isAntiAlias = true } + @Transient + private var dynamic : DynamicFillProvider? = null + @Transient private var roundShape : RoundShape? = null private val effectsState by lazy { LayerEffectsState() } + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { if (hidden) { return } - paint.color = color.interpolated(state) + var c = color.interpolated(state) - paint.alpha = opacity?.interpolatedNorm(state)?.let { - (parentAlpha * it).coerceIn(0f, 1f) - } ?: parentAlpha + dynamic?.color?.let { + c = it.derive(c, state) + } + + paint.color = c + + var alpha = 1f + + opacity?.interpolatedNorm(state)?.let { + alpha = (alpha * it).coerceIn(0f,1f) + } + dynamic?.opacity?.let { + alpha = it.derive(alpha, state).coerceIn(0f,1f) + } + + paint.alpha = (alpha * parentAlpha).coerceIn(0f,1f) + + paint.colorFilter = dynamic?.colorFilter.derive(paint.colorFilter, state) + + paint.blendMode = dynamic?.blendMode.derive(layer.blendMode.asComposeBlendMode(), state) roundShape?.applyTo(paint, state) @@ -103,7 +126,6 @@ internal class FillShape( path.addPath(it.getPath(state), parentMatrix) } - drawScope.drawIntoCanvas { canvas -> canvas.drawPath(path, paint) } @@ -131,6 +153,14 @@ internal class FillShape( ) } + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + if (name != null) { + val p = layerPath(basePath, name) + dynamic = properties.get(p)?.requireShape(p) + } + } + override fun setContents(contentsBefore: List, contentsAfter: List) { paths = contentsAfter.filterIsInstance() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index b1dca210..a24aafd9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -19,6 +19,7 @@ import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.FillRule +import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.GradientShader @@ -85,9 +86,11 @@ internal class GradientFillShape( @Transient private var paths: List = emptyList() - @Transient - private val paint = Paint().apply { - isAntiAlias = true + private val paint by lazy { + Paint().apply { + isAntiAlias = true + blendMode = layer.blendMode.asComposeBlendMode() + } } @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index bd1fd374..f347c3f5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -1,5 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.shapes +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.LayerPathSeparator +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -33,7 +36,7 @@ internal class GroupShape( hidden = hidden, contents = items, transform = items.findTransform() -){ +) { @Transient override var layer: Layer = NullLayer() @@ -45,4 +48,14 @@ internal class GroupShape( transform?.autoOrient = value.autoOrient == BooleanInt.Yes } -} \ No newline at end of file + + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + if (name != null) { + items.forEach { + it.setDynamicProperties(layerPath(basePath, name), properties) + } + } + } +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index 137c8af4..9e0b05e5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.ExperimentalSerializationApi @@ -16,6 +17,10 @@ internal sealed interface Shape : Content { var layer : Layer + fun setDynamicProperties(basePath: String?, properties : DynamicShapeLayerProvider){ + + } + @Serializable data object UnsupportedShape : Shape { override val name: String? get() = null diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index d1637080..94f7cbbc 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.example.android import App +import android.graphics.BitmapShader import android.graphics.Matrix import android.os.Bundle import androidx.activity.ComponentActivity diff --git a/example/shared/src/commonMain/composeResources/files/robot.json b/example/shared/src/commonMain/composeResources/files/robot.json index 96403426..d14442d5 100644 --- a/example/shared/src/commonMain/composeResources/files/robot.json +++ b/example/shared/src/commonMain/composeResources/files/robot.json @@ -1 +1 @@ -{"v":"5.7.1","fr":60,"ip":0,"op":181,"w":500,"h":500,"nm":"Comp 1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"рука 1.1 Outlines 2","cl":"1","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[195.262,126.787,0],"ix":2},"a":{"a":0,"k":[195.262,126.787,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.885,0.104],[-0.781,0.233]],"o":[[-0.629,-0.074],[0.782,-0.232]],"v":[[-0.258,-2.695],[0.105,2.535]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.227,107.118],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.26,-0.325],[-0.182,-5.623],[0,0],[0,0],[1.041,1.25],[0.851,0]],"o":[[-0.623,0.78],[0.182,5.622],[4.506,-1.354],[0,0],[-0.609,-0.73],[-0.605,0]],"v":[[-1.843,-9.436],[-3.618,1.394],[-2.105,9.932],[3.801,-1.432],[2.01,-8.863],[-0.449,-9.932]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.839215746113,0.796078491211,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.432,109.654],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"табличка Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.563,"y":1},"o":{"x":0.478,"y":0.475},"t":12,"s":[1558.678,686.658,0],"to":[-7.333,-72.667,0],"ti":[7.333,72.667,0]},{"i":{"x":0.296,"y":0.296},"o":{"x":0.204,"y":0.204},"t":75,"s":[1514.678,250.658,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.751,"y":1},"o":{"x":0.204,"y":0},"t":82,"s":[1514.678,250.658,0],"to":[7.333,72.667,0],"ti":[-7.333,-72.667,0]},{"t":179,"s":[1558.678,686.658,0]}],"ix":2},"a":{"a":0,"k":[219.758,66.572,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":12,"s":[710,710,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":59,"s":[771,593,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":93,"s":[710,710,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":139,"s":[675,682,100]},{"t":178,"s":[710,710,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.111,-1.962],[0.021,-1.899],[0,0],[0.08,1.969],[0.105,1.913]],"o":[[-0.195,1.927],[-0.111,1.961],[0,0],[-0.049,-1.913],[-0.08,-1.968],[0,0]],"v":[[1.304,-7.727],[0.845,-1.893],[0.647,3.898],[-0.741,3.94],[-0.934,-1.883],[-1.211,-7.705]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,-0.167],[0.066,-0.146],[0.107,-0.108],[0.15,-0.062],[0.167,0],[0.143,0.063],[0.11,0.107],[0.063,0.146],[0,0.167],[-0.062,0.143],[-0.112,0.112],[-0.143,0.063],[-0.167,0],[-0.149,-0.062],[-0.108,-0.111],[-0.066,-0.143]],"o":[[0,0.167],[-0.066,0.146],[-0.108,0.107],[-0.149,0.063],[-0.167,0],[-0.143,-0.062],[-0.112,-0.108],[-0.062,-0.146],[0,-0.167],[0.063,-0.143],[0.11,-0.111],[0.143,-0.062],[0.167,0],[0.15,0.063],[0.107,0.112],[0.066,0.143]],"v":[[1.117,6.527],[1.017,6.997],[0.757,7.378],[0.37,7.633],[-0.104,7.727],[-0.569,7.633],[-0.949,7.378],[-1.211,6.997],[-1.304,6.527],[-1.211,6.063],[-0.949,5.682],[-0.569,5.421],[-0.104,5.327],[0.37,5.421],[0.757,5.682],[1.017,6.063]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[225.318,64.22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.277,0.007],[0.278,0],[0.459,-0.017],[0.459,-0.034],[0,0],[-0.16,-0.011],[-0.161,-0.014],[-0.039,1.067],[0,1.071],[0.021,0.699],[0.021,0.709],[0.188,-0.007],[0.195,-0.013],[0,0],[-0.536,-0.017],[-0.542,0],[0,0],[-0.202,0.014],[0,0],[0.157,0.007],[0.16,0],[0.041,-1.235],[0,-1.252],[-0.042,-1.085],[-0.233,0.007],[-0.236,0.014]],"o":[[-0.278,-0.014],[-0.279,-0.007],[-0.459,0],[-0.459,0.017],[0,0],[0.16,0.021],[0.16,0.01],[0.042,-1.079],[0.038,-1.068],[0,-0.716],[-0.021,-0.7],[-0.181,0],[-0.188,0.007],[0,0],[0.536,0.034],[0.536,0.017],[0,0],[0.195,0],[0,0],[-0.16,0],[-0.156,-0.007],[-0.097,1.252],[-0.042,1.235],[0,1.093],[0.222,0],[0.233,-0.007],[0,0]],"v":[[2.192,7.419],[1.357,7.388],[0.523,7.377],[-0.855,7.403],[-2.232,7.481],[-2.211,5.238],[-1.731,5.285],[-1.251,5.322],[-1.132,2.103],[-1.074,-1.106],[-1.105,-3.229],[-1.168,-5.342],[-1.721,-5.332],[-2.296,-5.301],[-2.274,-7.481],[-0.667,-7.403],[0.95,-7.377],[1.535,-7.377],[2.13,-7.398],[2.067,-5.322],[1.592,-5.332],[1.117,-5.342],[0.909,-1.612],[0.846,2.118],[0.909,5.384],[1.592,5.374],[2.296,5.342]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.862,64.059],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.049,-1.353],[0.021,-1.363],[-0.177,0],[0,0],[-0.234,0.007],[-0.237,0.015],[0,0.295],[0,0],[0.021,1.051],[0.049,1.064],[0,0],[0.066,-1.652],[0,-1.676],[-0.021,-0.814],[-0.035,-0.827],[0,0],[-0.029,0.822],[-0.028,0.821],[0.393,0.017],[0.389,0],[0,0],[0,0],[0,0],[-0.014,-0.48],[0,0],[-0.01,0.977],[0,0.988],[0.126,2.999]],"o":[[-0.07,1.377],[-0.048,1.353],[0.174,0.014],[0,0],[0.223,0],[0.232,-0.007],[0.014,-0.306],[0,0],[0,-1.058],[-0.021,-1.05],[0,0],[-0.125,1.677],[-0.066,1.652],[0,0.821],[0.021,0.814],[0,0],[0.035,-0.827],[0.027,-0.82],[-0.397,-0.021],[-0.393,-0.018],[0,0],[0,0],[0,0],[0,0.473],[0,0],[0.034,-1.001],[0.011,-0.977],[0,-2.991],[0,0]],"v":[[-0.918,-7.45],[-1.096,-3.354],[-1.2,0.72],[-0.673,0.741],[-0.146,0.741],[0.538,0.731],[1.242,0.699],[1.263,-0.203],[1.263,-1.116],[1.231,-4.278],[1.127,-7.45],[3.694,-7.45],[3.407,-2.457],[3.308,2.536],[3.339,4.988],[3.423,7.45],[1.043,7.45],[1.138,4.977],[1.221,2.515],[0.037,2.458],[-1.137,2.431],[-1.221,2.431],[-1.221,4.581],[-1.221,6.021],[-1.2,7.45],[-3.589,7.45],[-3.522,4.482],[-3.506,1.534],[-3.694,-7.45]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[213.997,64.09],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.75,-0.902],[-1.786,-11.401],[0,0],[0,0],[0,0],[-0.625,8.539],[11.021,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.512,0]],"v":[[-18.551,-20.462],[-16.863,14.482],[1.364,21.664],[-1.552,16.556],[16.15,14.549],[18.65,-20.462],[1.426,-21.664]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.388235324037,0.764705942191,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[218.251,66.572],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[12.186,-21.063],[15.101,-19.813],[12.186,12.83],[9.686,13.948],[-4.059,15.324],[-5.1,21.063],[-15.101,12.83]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.835294177485,0.152941176471,0.682352941176,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[224.715,67.173],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"рука 1.1 Outlines","cl":"1","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[-10]},{"t":82,"s":[0]}],"ix":10},"p":{"a":0,"k":[195.262,126.787,0],"ix":2},"a":{"a":0,"k":[195.262,126.787,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.273,-3.437],[0,0],[3.055,8.393]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.842,-5.496],[4.036,6.529],[4.842,5.231],[-4.599,-6.529]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.698039215686,0.592156862745,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.388,116.752],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.701,-2.761],[0,0]],"o":[[0,0],[0,0],[-0.7,2.76],[0,0]],"v":[[-304.671,-96.893],[-300.794,-95.43],[-303.211,-89.776],[-306.54,-83.248]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.482352971096,0.396078461292,0.815686334348,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.99,-4.362],[0,0],[-1.145,5.935],[0,0],[0.074,0]],"o":[[-4.478,4.894],[0,0],[1.145,-5.936],[0,0],[-0.605,0]],"v":[[-0.952,-7.179],[-6.755,11.778],[-0.536,1.985],[6.756,-11.774],[6.644,-11.778]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.643137254902,0.560784313725,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.082,109.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.23,-3.035],[0.208,-6.56],[-4.373,-1.25],[-2.031,3.387],[2.916,3.644],[1.765,0]],"o":[[0,0],[0,0],[4.374,1.249],[2.03,-3.386],[-1.182,-1.476],[-2.592,0]],"v":[[-4.529,-13.425],[-10.569,7.817],[-6.3,16.773],[5.571,6.465],[7.758,-15.821],[3.185,-18.021]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827451040231,0.784313785329,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[200.659,115.518],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"рука 1 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.331],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[0]},{"t":148,"s":[25]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[162.796,159.626,0],"to":[-0.188,-0.751,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[161.669,155.119,0],"to":[0,0,0],"ti":[-0.188,-0.751,0]},{"t":148,"s":[162.796,159.626,0]}],"ix":2},"a":{"a":0,"k":[161.669,155.119,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.528,-0.141],[-2.811,-1.458],[0,0],[6.391,0.001]],"o":[[-2.202,0.587],[2.812,1.457],[0,0],[-0.464,-0.001]],"v":[[-3.064,-8.956],[-2.232,7.705],[5.266,3.331],[-1.579,-9.162]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.639215686275,0.556862745098,0.913725550034,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.94,128.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.053,2.456],[0,0],[-0.132,0.091],[-11.334,3.941],[0,0],[0,0],[0,0]],"o":[[-12.291,24.368],[-5.96,-3.858],[0,0],[0.115,-0.106],[0,0],[13.448,-4.676],[0,0],[0,0],[1.707,3.471]],"v":[[-300.793,-68.502],[-334.766,-35.809],[-343.866,-54.719],[-343.858,-54.728],[-343.487,-55.016],[-328.284,-44.75],[-309.334,-72.797],[-309.334,-79.648],[-302.352,-76.062]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.764705942191,0.705882352941,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[26.445,-12.654],[0.099,-0.123],[0,0],[-5.96,-3.857],[-12.291,24.368],[1.707,3.471],[3.57,0.256]],"o":[[-0.141,0.066],[0,0],[-2.053,2.456],[0,0],[0,0],[-1.162,-2.391],[0,0]],"v":[[-20.205,3.286],[-20.576,3.574],[-20.584,3.583],[-11.483,22.493],[22.489,-10.201],[20.93,-17.76],[14.154,-22.492]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.847058883368,0.803921628466,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.718,141.698],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"тело Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.282,"y":1},"o":{"x":0.217,"y":0},"t":0,"s":[983.73,1265.851,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":90,"s":[987.73,1105.851,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[983.73,1265.851,0]}],"ix":2},"a":{"a":0,"k":[138.215,179.134,0],"ix":1},"s":{"a":0,"k":[710,710,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.636,-1.015],[-11.847,-1.156],[-2.499,0.78],[17.701,1.21]],"o":[[2.555,4.076],[11.848,1.156],[2.5,-0.782],[-17.702,-1.21]],"v":[[-381.874,-16.125],[-356.958,-13.064],[-340.59,-8.834],[-359.74,-28.661]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.607843137255,0.956862804936,0.988235353956,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.127,-3.648],[-12.936,-0.05],[0,0],[8.535,2.336]],"o":[[0,0],[12.937,0.051],[0,0],[-8.536,-2.336]],"v":[[-378.502,8.818],[-362.092,14.917],[-343.895,7.264],[-358.398,8.818]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.607843137255,0.956862804936,0.988235353956,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":50,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.661,-0.157],[-0.302,-0.551],[-0.185,0.668]],"o":[[-0.656,0.156],[0.304,0.55],[0.185,-0.669]],"v":[[-0.327,-1.337],[-0.756,0.944],[0.873,0.708]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.445,167.722],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.19,-0.393],[-0.824,-1.022],[-0.441,1.493]],"o":[[-0.786,0.26],[0.824,1.022],[0.44,-1.494]],"v":[[-1.102,-4.128],[-1.102,3.499],[1.485,2.713]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[150.766,161.197],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.113,-4.806],[9.782,0.893],[-0.066,0.288],[0,0],[-7.584,0]],"o":[[-3.075,4.823],[-8.516,-0.778],[0.008,-0.008],[4.584,-6.899],[7.898,0]],"v":[[18.523,0.576],[-11.258,7.313],[-18.415,3.948],[-18.408,3.931],[0.47,-7.478]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.674509803922,0.63137254902,0.87450986376,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.156,148.134],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.028,-14.243],[-15.551,0],[-0.208,11.871],[14.494,1.368],[0.744,0]],"o":[[-2.01,14.113],[15.551,0],[0.208,-11.87],[-0.754,-0.071],[-12.523,0]],"v":[[-23.986,-0.003],[1.353,24.159],[25.788,3.021],[3.712,-24.053],[1.464,-24.159]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.247,0.98,0.835,0.5,0.218,0.955,0.878,1,0.188,0.929,0.922],"ix":9}},"s":{"a":0,"k":[-0.282,13.803],"ix":5},"e":{"a":0,"k":[0.845,-12.113],"ix":6},"t":2,"h":{"a":0,"k":0,"ix":7},"a":{"a":0,"k":0,"ix":8},"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.972,193.453],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.028,-14.243],[-15.551,0],[-0.208,11.871],[14.493,1.368],[0.745,0]],"o":[[-2.01,14.113],[15.55,0],[0.208,-11.871],[-0.755,-0.071],[-12.522,0.001]],"v":[[-387.149,-7.799],[-361.81,16.363],[-337.375,-4.775],[-359.451,-31.849],[-361.699,-31.955]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.623529411765,0.549019607843,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.698,-10.041],[14.434,0],[2.811,10.313],[-3.751,11.871],[-0.783,1.624],[0,0],[-6.075,-16.05],[-9.579,10.667],[0.428,2.283]],"o":[[-1.904,11.244],[-12.564,0],[-2.811,-10.304],[0.561,-1.772],[0,0],[0,0],[6.076,16.051],[9.117,-10.148],[2.596,10.782]],"v":[[26.516,11.937],[0.113,30.674],[-25.905,15.679],[-23.878,-25.556],[-21.857,-30.658],[-21.85,-30.675],[-23.374,10.576],[20.589,15.622],[25.066,-20.65]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.690196078431,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.215,186.936],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-7.842,-8.123],[6.9,9.028]],"o":[[0,0],[0,0]],"v":[[-336.053,-30.706],[-345.126,-52.185]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.564705882353,0.501960784314,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.583,-6.899],[0.008,-0.008],[0.71,-1.467],[0,0],[0.559,-1.772],[-2.811,-10.305],[-12.563,0],[-1.903,11.245],[2.596,10.783],[0,0.026],[1.236,3.149],[1.913,2.234],[7.898,0]],"o":[[0,0],[-0.874,1.312],[0,0],[-0.783,1.624],[-3.751,11.871],[2.812,10.312],[14.435,0],[1.699,-10.04],[-0.008,-0.041],[-0.824,-3.445],[-1.072,-2.737],[-4.113,-4.806],[-7.583,0]],"v":[[-19.215,-27.068],[-19.223,-27.053],[-21.598,-22.872],[-21.606,-22.855],[-23.626,-17.753],[-25.654,23.482],[0.363,38.477],[26.767,19.738],[25.317,-12.848],[25.3,-12.947],[22.201,-22.88],[17.715,-30.423],[-0.338,-38.477]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.831372608858,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.964,179.133],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"нога 1 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-15]},{"t":148,"s":[0]}],"ix":10},"p":{"a":0,"k":[117.306,210.078,0],"ix":2},"a":{"a":0,"k":[117.306,210.078,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.309,-0.404],[-7.622,3.427],[5.565,0.001]],"o":[[-2.218,2.898],[0,0],[-0.653,0]],"v":[[-10.631,-7.717],[12.849,4.874],[-9.167,-8.302]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.58431372549,0.541176470588,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[121.358,213.147],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.014,-1.245],[-3.898,-6.561],[1.064,1.904],[0.891,4.213],[1.484,2.606],[-0.347,0.503],[-1.196,-1.508],[0.281,-1.615]],"o":[[-1.013,1.253],[-1.021,-0.362],[-0.635,-2.844],[-1.137,-5.424],[-0.857,-4.195],[2.11,-3.124],[0.222,0.29],[0,0]],"v":[[-381.367,17.61],[-377.229,41.665],[-380.386,38.104],[-382.851,26.826],[-388.374,13.232],[-389.272,5.426],[-365.926,17.354],[-366.034,20.38]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.721568627451,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.217,-0.321],[-0.857,-4.195],[-3.232,-5.787],[-1.023,-0.362],[-1.186,6.942],[0.222,0.289],[4.852,0]],"o":[[-0.347,0.503],[1.575,7.7],[1.062,1.904],[4.731,1.691],[0.281,-1.616],[-1.072,-1.354],[-0.556,0]],"v":[[-11.611,-18.732],[-10.713,-10.926],[-2.724,13.947],[0.434,17.507],[11.628,-3.777],[11.736,-6.803],[-10.432,-19.199]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827451040231,0.788235353956,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.339,224.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"нога 2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[16]},{"t":148,"s":[0]}],"ix":10},"p":{"a":0,"k":[151.022,209.978,0],"ix":2},"a":{"a":0,"k":[151.022,209.978,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.568,-4.691],[2.638,-5.416],[-2.844,-7.007],[0.19,4.855],[-0.149,0.207],[-1.096,-1.501]],"o":[[0,0],[-2.638,5.408],[-4.773,-5.358],[-0.024,-0.602],[2.72,-3.693],[0.289,0.403]],"v":[[-334.295,11.007],[-348.351,19.803],[-347.156,45.078],[-357.51,18.591],[-357.328,17.354],[-333.801,2.558]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.721568627451,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.97,-0.606],[-1.421,-0.377]],"o":[[-0.852,0.263],[1.42,0.376]],"v":[[-0.46,-3.605],[-0.089,3.835]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.402,227.107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.658,-13.916],[-3.433,14.115]],"o":[[-0.602,1.478],[0,0]],"v":[[-11.552,7.275],[12.154,-8.753]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666666666667,0.572549019608,0.929411824544,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.043,211.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.569,-3.488],[-0.025,-0.602],[-4.772,-5.359],[0,0],[-0.708,-0.206],[-0.198,0.008],[-0.75,1.351],[-1.419,10.543],[-0.073,0.644],[0.288,0.403],[0.17,0]],"o":[[-0.149,0.206],[0.191,4.855],[0,0],[0.767,0.857],[0.206,0.067],[0.759,-0.016],[3.149,-5.631],[0.091,-0.693],[0.569,-4.691],[-0.061,-0.084],[-2.893,0.001]],"v":[[-11.804,-7.275],[-11.986,-6.038],[-1.632,20.449],[-1.632,20.456],[0.594,22.096],[1.204,22.188],[3.479,20.036],[10.973,-11.618],[11.228,-13.622],[11.723,-22.072],[11.373,-22.195]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.862745157878,0.815686334348,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.476,224.63],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"рука 2.2 Outlines","cl":"2","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-9]},{"t":149,"s":[0]}],"ix":10},"p":{"a":0,"k":[93.767,205.496,0],"ix":2},"a":{"a":0,"k":[93.767,205.496,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.152,0],[-0.72,0.143]],"o":[[-1.383,0],[0.72,-0.145]],"v":[[-0.389,-3.059],[1.051,2.917]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.432,214.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0.671,4.894],[2.976,2.783],[0.959,-14.494],[-4.069,1.646]],"v":[[-4.607,-2.118],[-1.44,7.721],[3.648,7.721],[0.825,-10.504]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.827451040231,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[99.323,216.434],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.203,-2.51],[-1.68,-0.586],[0,0],[0,0]],"o":[[0,0],[1.68,0.587],[0,0],[0,0]],"v":[[-3.552,1.233],[0.586,5.412],[3.577,5.38],[-2.629,-5.664]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.513725490196,0.435294147566,0.84313731474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.345,219.979],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.056,9.406],[0,0]],"o":[[4.469,-0.865],[1.057,-9.407],[-9.563,4.969]],"v":[[-1.997,14.648],[5.147,-0.421],[3.359,-14.649]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.717647058824,0.603921568627,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.479,220.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.196,-2.214],[-3.264,-11.422],[-3.455,1.248],[-0.191,7.583],[4.703,0.768],[0.235,0]],"o":[[-1.296,2.399],[0,0],[3.456,-1.248],[0.192,-7.583],[-0.221,-0.036],[-2.796,0]],"v":[[-6.814,-12.115],[-5.519,15.528],[2.544,15.528],[8.59,-3.381],[1.488,-16.723],[0.803,-16.776]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.815686334348,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.42,218.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"рука 2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-5]},{"t":179,"s":[10]}],"ix":10},"p":{"a":0,"k":[112.329,161.13,0],"ix":2},"a":{"a":0,"k":[112.329,161.13,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[5.518,1.146],[0.334,0]],"o":[[8.343,4.375],[0,0],[-0.336,-0.07],[-5.145,0]],"v":[[-8.194,1.704],[7.205,0.973],[2.676,-5.978],[1.67,-6.08]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.592156862745,0.478431402468,0.870588295133,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[94.014,205.393],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.87,0.461],[-0.703,-0.312]],"o":[[-0.769,-0.407],[0.703,0.313]],"v":[[0.313,-0.972],[-0.48,1.066]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.167,180.543],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.833,0.312],[-1.562,0.104]],"o":[[-0.975,-0.366],[1.562,-0.104]],"v":[[-3.105,5.831],[2.518,-6.04]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[106.095,172.524],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.737,-7.04],[0.206,-0.461],[0,0],[0,0],[0,0],[-7.337,15.127],[-4.048,5.21],[2.605,-11.311],[-4.896,7.914],[0,0]],"o":[[-0.024,6.027],[-4.526,11.657],[0,0],[0,0],[-1.921,-0.281],[0,0],[3.685,-7.6],[-2.317,3.058],[-2.968,12.868],[4.889,-7.914],[0,0]],"v":[[15.304,-25.258],[11.702,-3.479],[0.169,23.313],[0.161,23.322],[-12.13,25.258],[-15.304,24.575],[-6.558,-3.908],[5.874,-23.79],[-8.742,3.892],[5.156,3.892],[15.156,-25.258]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.764705942191,0.705882352941,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.062,183.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.887,-4.93],[0,0],[0.008,-0.008],[0.041,-0.05],[0.034,-0.034],[0.034,-0.042],[0.041,-0.066],[0.025,-0.025],[3.684,-7.6],[0,0],[-1.921,-0.28],[-4.155,2.531],[0,0],[-4.526,11.657],[-0.024,6.026],[0.42,0.231],[0.054,0]],"o":[[0,0],[0,0.008],[-0.033,0.042],[-0.016,0.033],[-0.024,0.033],[-0.049,0.066],[-0.016,0.024],[-4.047,5.21],[-7.337,15.127],[0,0],[3.165,0.461],[0,0],[0.206,-0.462],[2.736,-7.04],[0.017,-4.097],[-0.039,-0.021],[-0.933,0.001]],"v":[[6.368,-21.133],[6.352,-21.117],[6.336,-21.092],[6.228,-20.96],[6.154,-20.861],[6.071,-20.754],[5.923,-20.556],[5.865,-20.482],[-6.565,-0.599],[-15.313,27.883],[-12.138,28.567],[0.153,26.63],[0.161,26.622],[11.695,-0.17],[15.296,-21.95],[14.522,-29.13],[14.382,-29.161]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.847058883368,0.803921628466,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.07,179.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"голова Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-9]},{"t":131,"s":[0]}],"ix":10},"p":{"a":0,"k":[139.381,137.647,0],"ix":2},"a":{"a":0,"k":[139.381,137.647,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.561,-0.739],[0.552,1.069]],"o":[[0.56,0.737],[0,0]],"v":[[-4.319,5.173],[4.328,-5.91]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.811764765721,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.297,95.229],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.495,-3.519],[-2.603,-0.426],[-1.333,0.536],[3.52,2.545]],"o":[[0,0],[2.603,0.426],[1.332,-0.537],[0,0]],"v":[[-4.885,1.505],[-1.123,0.617],[4.314,5.849],[1.148,-5.888]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.486274539723,0.941176530427,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.045,75.211],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.003,-0.726],[-1.797,-0.235],[-1.376,0.859],[0,0]],"o":[[0,0],[-3.003,0.726],[1.796,0.234],[1.376,-0.859],[0,0]],"v":[[-316.047,-126.57],[-321.253,-128.574],[-322.659,-118.153],[-318.725,-124.245],[-314.942,-124.771]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.486274539723,0.941176530427,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.048,5.186],[-0.797,6.091],[-0.974,-0.552],[-0.575,-5.878],[0,0]],"o":[[0,0],[0.798,-6.09],[0.975,0.553],[0.448,4.573],[0,0]],"v":[[-2.994,8.75],[-2.873,-1.877],[0.535,-11.349],[1.934,1.046],[3.261,9.912]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.156862745098,0.376470618154,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.969,101.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.577,-3.133],[-0.391,2.939],[3.868,0]],"o":[[-0.141,0.768],[0.184,-1.387],[-4.327,0]],"v":[[-8.46,1.689],[8.417,-0.298],[1.227,-2.641]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.925490255917,0.333333333333,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.346,120.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.297,-0.7],[-2.393,0.313],[0.26,0.365]],"o":[[-1.156,0.624],[2.392,-0.312],[-0.261,-0.364]],"v":[[-1.934,-0.257],[-0.604,1.301],[2.83,-1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[172.843,68.707],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.825,-0.89],[-0.469,0.729]],"o":[[-1.383,0.322],[0.469,-0.729]],"v":[[-4.884,-2.783],[5.799,2.944]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[153.577,66.648],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.709],[-0.235,-0.708],[0.235,-0.708],[0.235,0.709]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.708],[0.235,0.708],[0.235,-0.71],[-0.235,-0.71]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.206,-0.659],[0,0]],"o":[[0,0],[0.091,0.272]],"v":[[0.235,0.708],[-0.235,-0.709]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.5,0.5,0.5,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[182.377,98.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.874,-3.292],[-16.098,0.788],[0.957,1.129],[15.984,3.504]],"o":[[-0.83,3.129],[19.462,-0.953],[-0.574,-0.678],[-10.556,-2.314]],"v":[[-382.369,-81.455],[-360.555,-75.984],[-337.917,-82.144],[-360.305,-82.654]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.258823529412,0.450980422076,0.776470648074,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.572,-2.91],[-4.151,-0.452],[0.499,4.691],[4.458,0]],"o":[[-2.379,2.691],[4.658,0.507],[-0.27,-2.528],[-3.815,-0.001]],"v":[[-8.686,-1.237],[-1.865,4.851],[10.566,-1.176],[1.888,-5.357]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929411824544,0.086274509804,0.529411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.258,122.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.456,-11.141],[0,0],[0,0],[0,0],[0.912,9.358],[0,0],[0,0]],"o":[[-6.455,11.143],[7.654,5.216],[0,0],[0,0],[-1.093,-11.215],[2.652,-6.029],[0,0]],"v":[[-9.763,-1.324],[-13.616,15.999],[16.218,16.876],[15.281,13.752],[-11.741,8.924],[6.062,-12.583],[4.67,-21.215]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.725490196078,0.603921568627,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.596,108.582],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-11.153,0],[0,0],[11.963,0]],"o":[[0,0],[11.153,0],[0,0],[-11.964,0]],"v":[[-15.984,-2.708],[-0.896,1.355],[15.983,-3.333],[-0.896,3.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.184000007779,0.583999992819,0.804000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[139.695,102.549],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.997,-2.789],[-2.083,3.669],[7.288,0.834],[0.302,0]],"o":[[0.778,2.178],[1.009,-1.779],[-0.315,-0.036],[-6.688,0.001]],"v":[[-8.337,2.931],[8.325,4.701],[1.766,-8.316],[0.842,-8.37]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.192156877705,0.913725550034,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.231,88.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.315,-0.036],[-1.01,-1.779],[-0.778,2.178],[6.686,0.001]],"o":[[-7.288,0.834],[2.083,3.669],[0.996,-2.789],[-0.302,0]],"v":[[-1.764,-8.316],[-8.323,4.701],[8.338,2.931],[-0.839,-8.37]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.192156877705,0.913725550034,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.442,88.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.081,-3.746],[-5.434,2.604],[-0.771,2.091],[0,0],[0,0]],"o":[[0,0],[5.435,-2.603],[0.772,-2.092],[0,0],[0,0]],"v":[[-405.339,-63.292],[-397.135,-69.128],[-385.933,-75.861],[-400.839,-76.719],[-408.644,-73.332]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.552941176471,0.513725490196,0.84313731474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.241,-1.31],[-15.795,-0.025],[-3.223,3.083],[9.675,0]],"o":[[2.225,3.001],[8.813,0.008],[-5.804,-1.293],[-11.292,0]],"v":[[-27.554,-1.718],[0.061,3.797],[27.554,-1.941],[2.757,-3.805]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.400000029919,0.258823529412,0.670588235294,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.167,139.052],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":3,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.157,-0.429],[0.107,-0.14],[0,0],[16.874,-3.784],[0,0],[0,0],[-0.255,1.772],[-4.212,0.775],[-13.808,-2.093],[-1.154,-0.239],[-0.041,-0.008]],"o":[[-0.05,0.132],[-1.335,1.888],[0,0],[-16.875,3.784],[0,0],[-3.611,-1.443],[0.157,-1.08],[12.382,-2.242],[1.443,0.256],[0.041,0.008],[3.273,0.709]],"v":[[33.979,-1.112],[33.748,-0.7],[26.996,3.619],[-10.693,-1.112],[-28.854,4.914],[-28.862,4.914],[-33.965,-0.024],[-26.917,-2.827],[24.904,-3.652],[28.811,-2.901],[28.926,-2.877]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.407843167174,0.36862745098,0.847058883368,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.529,140.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.237,-1.31],[0.157,-1.08],[-3.611,-1.444],[0,0],[-13.635,-0.016],[1.286,4.418],[0.19,0.222],[2.382,0.585],[0.04,0.009],[0.214,0.049],[1.186,0.181],[8.02,0]],"o":[[-4.213,0.775],[-0.256,1.772],[0,0],[5.499,2.2],[12.316,0.008],[-0.066,-0.232],[-0.75,-0.874],[-0.041,-0.008],[-0.198,-0.048],[-0.998,-0.222],[-5.737,-0.87],[-11.284,0]],"v":[[-27.516,-4.706],[-34.565,-1.904],[-29.462,3.035],[-29.454,3.035],[-0.494,6.785],[33.535,-1.904],[33.148,-2.579],[28.326,-4.755],[28.211,-4.781],[27.592,-4.93],[24.303,-5.53],[2.77,-6.793]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.556862745098,0.494117676978,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.129,142.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":3,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.691,-6.579],[8.54,15.827],[-5.367,14.303],[0,0],[-5.614,-8.82],[-24.369,1.038],[-4.089,6.875],[1.525,4.83],[0,0]],"o":[[-13.956,19.57],[-5.573,-10.338],[0,-0.008],[-0.231,0.841],[5.737,9.02],[24.367,-1.047],[3.223,-5.408],[0,0],[2.786,10.956]],"v":[[43.951,11.737],[-44.14,14.029],[-43.736,-26.151],[-43.728,-26.159],[-43.843,3.55],[8.966,10.278],[45.485,-1.181],[43.943,-23.356],[46.334,-16.226]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.745098039216,0.682352941176,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.801,122.679],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":3,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.667,-0.04],[-5.117,-21.832],[-14.162,12.079],[30.108,0.005]],"o":[[-28.571,1.714],[3.123,13.328],[13.859,-11.822],[-0.658,0]],"v":[[-4.371,-32.568],[-41.841,17.848],[33.1,20.549],[-2.388,-32.628]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.050980395897,0.298039215686,0.643137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.098,96.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":3,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.117,-21.832],[-14.161,12.079],[31.239,-1.874]],"o":[[3.124,13.329],[14.162,-12.079],[-28.572,1.715]],"v":[[-41.993,18.755],[32.948,21.456],[-4.522,-31.661]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.889999988032,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.549,97.509],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.04,-18.77],[-5.573,-10.338],[-13.956,19.571],[2.787,10.956],[23.791,0]],"o":[[-5.366,14.303],[8.54,15.827],[4.691,-6.578],[-5.506,-21.647],[-20.214,0]],"v":[[-43.439,-11.017],[-43.844,29.163],[44.247,26.87],[46.63,-1.092],[-0.943,-46.44]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.850980451995,0.807843197093,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.505,107.546],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":3,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.812,-11.87],[0,0],[0,0],[6.013,6.716]],"o":[[-2.81,11.872],[0,0],[0,0],[0,0]],"v":[[-6.405,-1.963],[-1.898,17.034],[7.568,-1.181],[3.202,-17.035]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.188235309077,0.929411824544,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.313,85.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":3,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.812,11.872],[0,0]],"o":[[0,0],[0,0],[-2.811,-11.87],[-6.013,6.716]],"v":[[-7.568,-1.181],[1.897,17.034],[6.404,-1.963],[-3.202,-17.035]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.188235309077,0.929411824544,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[181.973,85.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":3,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.012,-0.001],[0,-10.699],[0,0],[0,0],[0.889,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.013,0]],"v":[[1.508,-9.423],[-4.686,7.914],[-2.291,9.425],[4.686,-5.016],[1.545,-9.425]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.63137254902,0.552941176471,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.922,75.214],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":3,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.707,8.435],[0,0]],"o":[[0,0],[0,0],[-2.707,-8.435],[-7.653,0.937]],"v":[[-10.833,-11.004],[5.837,17.338],[8.126,-7.758],[3.074,-17.338]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.800000059838,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[175.355,83.129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":3,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0.248,-13.885],[-1.741,1.354]],"v":[[-4.633,-6.583],[2.568,10.788],[4.385,8.909],[-1.665,-10.788]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.63137254902,0.552941176471,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.519,76.579],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":3,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.707,-8.435],[0,0],[0,0],[7.655,0.937]],"o":[[-2.708,8.435],[0,0],[0,0],[0,0]],"v":[[-8.126,-7.758],[-5.836,17.338],[10.834,-11.004],[-3.075,-17.338]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.800000059838,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.929,83.129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":3,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,268,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[27,27,100],"ix":6}},"ao":0,"w":2000,"h":2000,"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"5.7.1","fr":60,"ip":0,"op":181,"w":500,"h":500,"nm":"Comp 1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"рука 1.1 Outlines 2","cl":"1","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[195.262,126.787,0],"ix":2},"a":{"a":0,"k":[195.262,126.787,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.885,0.104],[-0.781,0.233]],"o":[[-0.629,-0.074],[0.782,-0.232]],"v":[[-0.258,-2.695],[0.105,2.535]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.227,107.118],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.26,-0.325],[-0.182,-5.623],[0,0],[0,0],[1.041,1.25],[0.851,0]],"o":[[-0.623,0.78],[0.182,5.622],[4.506,-1.354],[0,0],[-0.609,-0.73],[-0.605,0]],"v":[[-1.843,-9.436],[-3.618,1.394],[-2.105,9.932],[3.801,-1.432],[2.01,-8.863],[-0.449,-9.932]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.839215746113,0.796078491211,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.432,109.654],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"табличка Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.563,"y":1},"o":{"x":0.478,"y":0.475},"t":12,"s":[1558.678,686.658,0],"to":[-7.333,-72.667,0],"ti":[7.333,72.667,0]},{"i":{"x":0.296,"y":0.296},"o":{"x":0.204,"y":0.204},"t":75,"s":[1514.678,250.658,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.751,"y":1},"o":{"x":0.204,"y":0},"t":82,"s":[1514.678,250.658,0],"to":[7.333,72.667,0],"ti":[-7.333,-72.667,0]},{"t":179,"s":[1558.678,686.658,0]}],"ix":2},"a":{"a":0,"k":[219.758,66.572,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":12,"s":[710,710,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":59,"s":[771,593,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":93,"s":[710,710,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":139,"s":[675,682,100]},{"t":178,"s":[710,710,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.111,-1.962],[0.021,-1.899],[0,0],[0.08,1.969],[0.105,1.913]],"o":[[-0.195,1.927],[-0.111,1.961],[0,0],[-0.049,-1.913],[-0.08,-1.968],[0,0]],"v":[[1.304,-7.727],[0.845,-1.893],[0.647,3.898],[-0.741,3.94],[-0.934,-1.883],[-1.211,-7.705]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,-0.167],[0.066,-0.146],[0.107,-0.108],[0.15,-0.062],[0.167,0],[0.143,0.063],[0.11,0.107],[0.063,0.146],[0,0.167],[-0.062,0.143],[-0.112,0.112],[-0.143,0.063],[-0.167,0],[-0.149,-0.062],[-0.108,-0.111],[-0.066,-0.143]],"o":[[0,0.167],[-0.066,0.146],[-0.108,0.107],[-0.149,0.063],[-0.167,0],[-0.143,-0.062],[-0.112,-0.108],[-0.062,-0.146],[0,-0.167],[0.063,-0.143],[0.11,-0.111],[0.143,-0.062],[0.167,0],[0.15,0.063],[0.107,0.112],[0.066,0.143]],"v":[[1.117,6.527],[1.017,6.997],[0.757,7.378],[0.37,7.633],[-0.104,7.727],[-0.569,7.633],[-0.949,7.378],[-1.211,6.997],[-1.304,6.527],[-1.211,6.063],[-0.949,5.682],[-0.569,5.421],[-0.104,5.327],[0.37,5.421],[0.757,5.682],[1.017,6.063]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[225.318,64.22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.277,0.007],[0.278,0],[0.459,-0.017],[0.459,-0.034],[0,0],[-0.16,-0.011],[-0.161,-0.014],[-0.039,1.067],[0,1.071],[0.021,0.699],[0.021,0.709],[0.188,-0.007],[0.195,-0.013],[0,0],[-0.536,-0.017],[-0.542,0],[0,0],[-0.202,0.014],[0,0],[0.157,0.007],[0.16,0],[0.041,-1.235],[0,-1.252],[-0.042,-1.085],[-0.233,0.007],[-0.236,0.014]],"o":[[-0.278,-0.014],[-0.279,-0.007],[-0.459,0],[-0.459,0.017],[0,0],[0.16,0.021],[0.16,0.01],[0.042,-1.079],[0.038,-1.068],[0,-0.716],[-0.021,-0.7],[-0.181,0],[-0.188,0.007],[0,0],[0.536,0.034],[0.536,0.017],[0,0],[0.195,0],[0,0],[-0.16,0],[-0.156,-0.007],[-0.097,1.252],[-0.042,1.235],[0,1.093],[0.222,0],[0.233,-0.007],[0,0]],"v":[[2.192,7.419],[1.357,7.388],[0.523,7.377],[-0.855,7.403],[-2.232,7.481],[-2.211,5.238],[-1.731,5.285],[-1.251,5.322],[-1.132,2.103],[-1.074,-1.106],[-1.105,-3.229],[-1.168,-5.342],[-1.721,-5.332],[-2.296,-5.301],[-2.274,-7.481],[-0.667,-7.403],[0.95,-7.377],[1.535,-7.377],[2.13,-7.398],[2.067,-5.322],[1.592,-5.332],[1.117,-5.342],[0.909,-1.612],[0.846,2.118],[0.909,5.384],[1.592,5.374],[2.296,5.342]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.862,64.059],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.049,-1.353],[0.021,-1.363],[-0.177,0],[0,0],[-0.234,0.007],[-0.237,0.015],[0,0.295],[0,0],[0.021,1.051],[0.049,1.064],[0,0],[0.066,-1.652],[0,-1.676],[-0.021,-0.814],[-0.035,-0.827],[0,0],[-0.029,0.822],[-0.028,0.821],[0.393,0.017],[0.389,0],[0,0],[0,0],[0,0],[-0.014,-0.48],[0,0],[-0.01,0.977],[0,0.988],[0.126,2.999]],"o":[[-0.07,1.377],[-0.048,1.353],[0.174,0.014],[0,0],[0.223,0],[0.232,-0.007],[0.014,-0.306],[0,0],[0,-1.058],[-0.021,-1.05],[0,0],[-0.125,1.677],[-0.066,1.652],[0,0.821],[0.021,0.814],[0,0],[0.035,-0.827],[0.027,-0.82],[-0.397,-0.021],[-0.393,-0.018],[0,0],[0,0],[0,0],[0,0.473],[0,0],[0.034,-1.001],[0.011,-0.977],[0,-2.991],[0,0]],"v":[[-0.918,-7.45],[-1.096,-3.354],[-1.2,0.72],[-0.673,0.741],[-0.146,0.741],[0.538,0.731],[1.242,0.699],[1.263,-0.203],[1.263,-1.116],[1.231,-4.278],[1.127,-7.45],[3.694,-7.45],[3.407,-2.457],[3.308,2.536],[3.339,4.988],[3.423,7.45],[1.043,7.45],[1.138,4.977],[1.221,2.515],[0.037,2.458],[-1.137,2.431],[-1.221,2.431],[-1.221,4.581],[-1.221,6.021],[-1.2,7.45],[-3.589,7.45],[-3.522,4.482],[-3.506,1.534],[-3.694,-7.45]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[213.997,64.09],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.75,-0.902],[-1.786,-11.401],[0,0],[0,0],[0,0],[-0.625,8.539],[11.021,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.512,0]],"v":[[-18.551,-20.462],[-16.863,14.482],[1.364,21.664],[-1.552,16.556],[16.15,14.549],[18.65,-20.462],[1.426,-21.664]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.388235324037,0.764705942191,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[218.251,66.572],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[12.186,-21.063],[15.101,-19.813],[12.186,12.83],[9.686,13.948],[-4.059,15.324],[-5.1,21.063],[-15.101,12.83]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.835294177485,0.152941176471,0.682352941176,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[224.715,67.173],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"рука 1.1 Outlines","cl":"1","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[-10]},{"t":82,"s":[0]}],"ix":10},"p":{"a":0,"k":[195.262,126.787,0],"ix":2},"a":{"a":0,"k":[195.262,126.787,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.273,-3.437],[0,0],[3.055,8.393]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.842,-5.496],[4.036,6.529],[4.842,5.231],[-4.599,-6.529]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.698039215686,0.592156862745,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.388,116.752],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.701,-2.761],[0,0]],"o":[[0,0],[0,0],[-0.7,2.76],[0,0]],"v":[[-304.671,-96.893],[-300.794,-95.43],[-303.211,-89.776],[-306.54,-83.248]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.482352971096,0.396078461292,0.815686334348,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.99,-4.362],[0,0],[-1.145,5.935],[0,0],[0.074,0]],"o":[[-4.478,4.894],[0,0],[1.145,-5.936],[0,0],[-0.605,0]],"v":[[-0.952,-7.179],[-6.755,11.778],[-0.536,1.985],[6.756,-11.774],[6.644,-11.778]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.643137254902,0.560784313725,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.082,109.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.23,-3.035],[0.208,-6.56],[-4.373,-1.25],[-2.031,3.387],[2.916,3.644],[1.765,0]],"o":[[0,0],[0,0],[4.374,1.249],[2.03,-3.386],[-1.182,-1.476],[-2.592,0]],"v":[[-4.529,-13.425],[-10.569,7.817],[-6.3,16.773],[5.571,6.465],[7.758,-15.821],[3.185,-18.021]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827451040231,0.784313785329,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[200.659,115.518],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"рука 1 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.331],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[25]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[0]},{"t":148,"s":[25]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[162.796,159.626,0],"to":[-0.188,-0.751,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":76,"s":[161.669,155.119,0],"to":[0,0,0],"ti":[-0.188,-0.751,0]},{"t":148,"s":[162.796,159.626,0]}],"ix":2},"a":{"a":0,"k":[161.669,155.119,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.528,-0.141],[-2.811,-1.458],[0,0],[6.391,0.001]],"o":[[-2.202,0.587],[2.812,1.457],[0,0],[-0.464,-0.001]],"v":[[-3.064,-8.956],[-2.232,7.705],[5.266,3.331],[-1.579,-9.162]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.639215686275,0.556862745098,0.913725550034,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.94,128.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.053,2.456],[0,0],[-0.132,0.091],[-11.334,3.941],[0,0],[0,0],[0,0]],"o":[[-12.291,24.368],[-5.96,-3.858],[0,0],[0.115,-0.106],[0,0],[13.448,-4.676],[0,0],[0,0],[1.707,3.471]],"v":[[-300.793,-68.502],[-334.766,-35.809],[-343.866,-54.719],[-343.858,-54.728],[-343.487,-55.016],[-328.284,-44.75],[-309.334,-72.797],[-309.334,-79.648],[-302.352,-76.062]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.764705942191,0.705882352941,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[26.445,-12.654],[0.099,-0.123],[0,0],[-5.96,-3.857],[-12.291,24.368],[1.707,3.471],[3.57,0.256]],"o":[[-0.141,0.066],[0,0],[-2.053,2.456],[0,0],[0,0],[-1.162,-2.391],[0,0]],"v":[[-20.205,3.286],[-20.576,3.574],[-20.584,3.583],[-11.483,22.493],[22.489,-10.201],[20.93,-17.76],[14.154,-22.492]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.847058883368,0.803921628466,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.718,141.698],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"тело Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.282,"y":1},"o":{"x":0.217,"y":0},"t":0,"s":[983.73,1265.851,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":90,"s":[987.73,1105.851,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[983.73,1265.851,0]}],"ix":2},"a":{"a":0,"k":[138.215,179.134,0],"ix":1},"s":{"a":0,"k":[710,710,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.636,-1.015],[-11.847,-1.156],[-2.499,0.78],[17.701,1.21]],"o":[[2.555,4.076],[11.848,1.156],[2.5,-0.782],[-17.702,-1.21]],"v":[[-381.874,-16.125],[-356.958,-13.064],[-340.59,-8.834],[-359.74,-28.661]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.607843137255,0.956862804936,0.988235353956,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.127,-3.648],[-12.936,-0.05],[0,0],[8.535,2.336]],"o":[[0,0],[12.937,0.051],[0,0],[-8.536,-2.336]],"v":[[-378.502,8.818],[-362.092,14.917],[-343.895,7.264],[-358.398,8.818]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.607843137255,0.956862804936,0.988235353956,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":50,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.661,-0.157],[-0.302,-0.551],[-0.185,0.668]],"o":[[-0.656,0.156],[0.304,0.55],[0.185,-0.669]],"v":[[-0.327,-1.337],[-0.756,0.944],[0.873,0.708]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.445,167.722],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.19,-0.393],[-0.824,-1.022],[-0.441,1.493]],"o":[[-0.786,0.26],[0.824,1.022],[0.44,-1.494]],"v":[[-1.102,-4.128],[-1.102,3.499],[1.485,2.713]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[150.766,161.197],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.113,-4.806],[9.782,0.893],[-0.066,0.288],[0,0],[-7.584,0]],"o":[[-3.075,4.823],[-8.516,-0.778],[0.008,-0.008],[4.584,-6.899],[7.898,0]],"v":[[18.523,0.576],[-11.258,7.313],[-18.415,3.948],[-18.408,3.931],[0.47,-7.478]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.674509803922,0.63137254902,0.87450986376,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.156,148.134],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.028,-14.243],[-15.551,0],[-0.208,11.871],[14.494,1.368],[0.744,0]],"o":[[-2.01,14.113],[15.551,0],[0.208,-11.87],[-0.754,-0.071],[-12.523,0]],"v":[[-23.986,-0.003],[1.353,24.159],[25.788,3.021],[3.712,-24.053],[1.464,-24.159]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.247,0.98,0.835,0.5,0.218,0.955,0.878,1,0.188,0.929,0.922],"ix":9}},"s":{"a":0,"k":[-0.282,13.803],"ix":5},"e":{"a":0,"k":[0.845,-12.113],"ix":6},"t":2,"h":{"a":0,"k":0,"ix":7},"a":{"a":0,"k":0,"ix":8},"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.972,193.453],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.028,-14.243],[-15.551,0],[-0.208,11.871],[14.493,1.368],[0.745,0]],"o":[[-2.01,14.113],[15.55,0],[0.208,-11.871],[-0.755,-0.071],[-12.522,0.001]],"v":[[-387.149,-7.799],[-361.81,16.363],[-337.375,-4.775],[-359.451,-31.849],[-361.699,-31.955]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.623529411765,0.549019607843,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.698,-10.041],[14.434,0],[2.811,10.313],[-3.751,11.871],[-0.783,1.624],[0,0],[-6.075,-16.05],[-9.579,10.667],[0.428,2.283]],"o":[[-1.904,11.244],[-12.564,0],[-2.811,-10.304],[0.561,-1.772],[0,0],[0,0],[6.076,16.051],[9.117,-10.148],[2.596,10.782]],"v":[[26.516,11.937],[0.113,30.674],[-25.905,15.679],[-23.878,-25.556],[-21.857,-30.658],[-21.85,-30.675],[-23.374,10.576],[20.589,15.622],[25.066,-20.65]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.749019607843,0.690196078431,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.215,186.936],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-7.842,-8.123],[6.9,9.028]],"o":[[0,0],[0,0]],"v":[[-336.053,-30.706],[-345.126,-52.185]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.564705882353,0.501960784314,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.583,-6.899],[0.008,-0.008],[0.71,-1.467],[0,0],[0.559,-1.772],[-2.811,-10.305],[-12.563,0],[-1.903,11.245],[2.596,10.783],[0,0.026],[1.236,3.149],[1.913,2.234],[7.898,0]],"o":[[0,0],[-0.874,1.312],[0,0],[-0.783,1.624],[-3.751,11.871],[2.812,10.312],[14.435,0],[1.699,-10.04],[-0.008,-0.041],[-0.824,-3.445],[-1.072,-2.737],[-4.113,-4.806],[-7.583,0]],"v":[[-19.215,-27.068],[-19.223,-27.053],[-21.598,-22.872],[-21.606,-22.855],[-23.626,-17.753],[-25.654,23.482],[0.363,38.477],[26.767,19.738],[25.317,-12.848],[25.3,-12.947],[22.201,-22.88],[17.715,-30.423],[-0.338,-38.477]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.831372608858,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.964,179.133],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"нога 1 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-15]},{"t":148,"s":[0]}],"ix":10},"p":{"a":0,"k":[117.306,210.078,0],"ix":2},"a":{"a":0,"k":[117.306,210.078,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.309,-0.404],[-7.622,3.427],[5.565,0.001]],"o":[[-2.218,2.898],[0,0],[-0.653,0]],"v":[[-10.631,-7.717],[12.849,4.874],[-9.167,-8.302]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.58431372549,0.541176470588,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[121.358,213.147],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.014,-1.245],[-3.898,-6.561],[1.064,1.904],[0.891,4.213],[1.484,2.606],[-0.347,0.503],[-1.196,-1.508],[0.281,-1.615]],"o":[[-1.013,1.253],[-1.021,-0.362],[-0.635,-2.844],[-1.137,-5.424],[-0.857,-4.195],[2.11,-3.124],[0.222,0.29],[0,0]],"v":[[-381.367,17.61],[-377.229,41.665],[-380.386,38.104],[-382.851,26.826],[-388.374,13.232],[-389.272,5.426],[-365.926,17.354],[-366.034,20.38]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.721568627451,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.217,-0.321],[-0.857,-4.195],[-3.232,-5.787],[-1.023,-0.362],[-1.186,6.942],[0.222,0.289],[4.852,0]],"o":[[-0.347,0.503],[1.575,7.7],[1.062,1.904],[4.731,1.691],[0.281,-1.616],[-1.072,-1.354],[-0.556,0]],"v":[[-11.611,-18.732],[-10.713,-10.926],[-2.724,13.947],[0.434,17.507],[11.628,-3.777],[11.736,-6.803],[-10.432,-19.199]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827451040231,0.788235353956,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.339,224.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"нога 2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[16]},{"t":148,"s":[0]}],"ix":10},"p":{"a":0,"k":[151.022,209.978,0],"ix":2},"a":{"a":0,"k":[151.022,209.978,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.568,-4.691],[2.638,-5.416],[-2.844,-7.007],[0.19,4.855],[-0.149,0.207],[-1.096,-1.501]],"o":[[0,0],[-2.638,5.408],[-4.773,-5.358],[-0.024,-0.602],[2.72,-3.693],[0.289,0.403]],"v":[[-334.295,11.007],[-348.351,19.803],[-347.156,45.078],[-357.51,18.591],[-357.328,17.354],[-333.801,2.558]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.772549079446,0.721568627451,0.933333393172,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.97,-0.606],[-1.421,-0.377]],"o":[[-0.852,0.263],[1.42,0.376]],"v":[[-0.46,-3.605],[-0.089,3.835]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.402,227.107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.658,-13.916],[-3.433,14.115]],"o":[[-0.602,1.478],[0,0]],"v":[[-11.552,7.275],[12.154,-8.753]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.666666666667,0.572549019608,0.929411824544,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.043,211.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.569,-3.488],[-0.025,-0.602],[-4.772,-5.359],[0,0],[-0.708,-0.206],[-0.198,0.008],[-0.75,1.351],[-1.419,10.543],[-0.073,0.644],[0.288,0.403],[0.17,0]],"o":[[-0.149,0.206],[0.191,4.855],[0,0],[0.767,0.857],[0.206,0.067],[0.759,-0.016],[3.149,-5.631],[0.091,-0.693],[0.569,-4.691],[-0.061,-0.084],[-2.893,0.001]],"v":[[-11.804,-7.275],[-11.986,-6.038],[-1.632,20.449],[-1.632,20.456],[0.594,22.096],[1.204,22.188],[3.479,20.036],[10.973,-11.618],[11.228,-13.622],[11.723,-22.072],[11.373,-22.195]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.862745157878,0.815686334348,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.476,224.63],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"рука 2.2 Outlines","cl":"2","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-9]},{"t":149,"s":[0]}],"ix":10},"p":{"a":0,"k":[93.767,205.496,0],"ix":2},"a":{"a":0,"k":[93.767,205.496,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.152,0],[-0.72,0.143]],"o":[[-1.383,0],[0.72,-0.145]],"v":[[-0.389,-3.059],[1.051,2.917]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.432,214.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0.671,4.894],[2.976,2.783],[0.959,-14.494],[-4.069,1.646]],"v":[[-4.607,-2.118],[-1.44,7.721],[3.648,7.721],[0.825,-10.504]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.87450986376,0.827451040231,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[99.323,216.434],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.203,-2.51],[-1.68,-0.586],[0,0],[0,0]],"o":[[0,0],[1.68,0.587],[0,0],[0,0]],"v":[[-3.552,1.233],[0.586,5.412],[3.577,5.38],[-2.629,-5.664]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.513725490196,0.435294147566,0.84313731474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.345,219.979],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.056,9.406],[0,0]],"o":[[4.469,-0.865],[1.057,-9.407],[-9.563,4.969]],"v":[[-1.997,14.648],[5.147,-0.421],[3.359,-14.649]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.717647058824,0.603921568627,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.479,220.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.196,-2.214],[-3.264,-11.422],[-3.455,1.248],[-0.191,7.583],[4.703,0.768],[0.235,0]],"o":[[-1.296,2.399],[0,0],[3.456,-1.248],[0.192,-7.583],[-0.221,-0.036],[-2.796,0]],"v":[[-6.814,-12.115],[-5.519,15.528],[2.544,15.528],[8.59,-3.381],[1.488,-16.723],[0.803,-16.776]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.815686334348,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.42,218.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"рука 2 Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-5]},{"t":179,"s":[10]}],"ix":10},"p":{"a":0,"k":[112.329,161.13,0],"ix":2},"a":{"a":0,"k":[112.329,161.13,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[5.518,1.146],[0.334,0]],"o":[[8.343,4.375],[0,0],[-0.336,-0.07],[-5.145,0]],"v":[[-8.194,1.704],[7.205,0.973],[2.676,-5.978],[1.67,-6.08]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.592156862745,0.478431402468,0.870588295133,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[94.014,205.393],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.87,0.461],[-0.703,-0.312]],"o":[[-0.769,-0.407],[0.703,0.313]],"v":[[0.313,-0.972],[-0.48,1.066]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.167,180.543],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.833,0.312],[-1.562,0.104]],"o":[[-0.975,-0.366],[1.562,-0.104]],"v":[[-3.105,5.831],[2.518,-6.04]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[106.095,172.524],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.737,-7.04],[0.206,-0.461],[0,0],[0,0],[0,0],[-7.337,15.127],[-4.048,5.21],[2.605,-11.311],[-4.896,7.914],[0,0]],"o":[[-0.024,6.027],[-4.526,11.657],[0,0],[0,0],[-1.921,-0.281],[0,0],[3.685,-7.6],[-2.317,3.058],[-2.968,12.868],[4.889,-7.914],[0,0]],"v":[[15.304,-25.258],[11.702,-3.479],[0.169,23.313],[0.161,23.322],[-12.13,25.258],[-15.304,24.575],[-6.558,-3.908],[5.874,-23.79],[-8.742,3.892],[5.156,3.892],[15.156,-25.258]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.764705942191,0.705882352941,0.925490255917,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.062,183.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.887,-4.93],[0,0],[0.008,-0.008],[0.041,-0.05],[0.034,-0.034],[0.034,-0.042],[0.041,-0.066],[0.025,-0.025],[3.684,-7.6],[0,0],[-1.921,-0.28],[-4.155,2.531],[0,0],[-4.526,11.657],[-0.024,6.026],[0.42,0.231],[0.054,0]],"o":[[0,0],[0,0.008],[-0.033,0.042],[-0.016,0.033],[-0.024,0.033],[-0.049,0.066],[-0.016,0.024],[-4.047,5.21],[-7.337,15.127],[0,0],[3.165,0.461],[0,0],[0.206,-0.462],[2.736,-7.04],[0.017,-4.097],[-0.039,-0.021],[-0.933,0.001]],"v":[[6.368,-21.133],[6.352,-21.117],[6.336,-21.092],[6.228,-20.96],[6.154,-20.861],[6.071,-20.754],[5.923,-20.556],[5.865,-20.482],[-6.565,-0.599],[-15.313,27.883],[-12.138,28.567],[0.153,26.63],[0.161,26.622],[11.695,-0.17],[15.296,-21.95],[14.522,-29.13],[14.382,-29.161]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.847058883368,0.803921628466,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.07,179.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Head Layer","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[-9]},{"t":131,"s":[0]}],"ix":10},"p":{"a":0,"k":[139.381,137.647,0],"ix":2},"a":{"a":0,"k":[139.381,137.647,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.561,-0.739],[0.552,1.069]],"o":[[0.56,0.737],[0,0]],"v":[[-4.319,5.173],[4.328,-5.91]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.811764765721,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.297,95.229],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.495,-3.519],[-2.603,-0.426],[-1.333,0.536],[3.52,2.545]],"o":[[0,0],[2.603,0.426],[1.332,-0.537],[0,0]],"v":[[-4.885,1.505],[-1.123,0.617],[4.314,5.849],[1.148,-5.888]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.486274539723,0.941176530427,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.045,75.211],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.003,-0.726],[-1.797,-0.235],[-1.376,0.859],[0,0]],"o":[[0,0],[-3.003,0.726],[1.796,0.234],[1.376,-0.859],[0,0]],"v":[[-316.047,-126.57],[-321.253,-128.574],[-322.659,-118.153],[-318.725,-124.245],[-314.942,-124.771]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.486274539723,0.941176530427,0.984313785329,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.048,5.186],[-0.797,6.091],[-0.974,-0.552],[-0.575,-5.878],[0,0]],"o":[[0,0],[0.798,-6.09],[0.975,0.553],[0.448,4.573],[0,0]],"v":[[-2.994,8.75],[-2.873,-1.877],[0.535,-11.349],[1.934,1.046],[3.261,9.912]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.156862745098,0.376470618154,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[102.969,101.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.577,-3.133],[-0.391,2.939],[3.868,0]],"o":[[-0.141,0.768],[0.184,-1.387],[-4.327,0]],"v":[[-8.46,1.689],[8.417,-0.298],[1.227,-2.641]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.925490255917,0.333333333333,0.807843197093,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.346,120.271],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.297,-0.7],[-2.393,0.313],[0.26,0.365]],"o":[[-1.156,0.624],[2.392,-0.312],[-0.261,-0.364]],"v":[[-1.934,-0.257],[-0.604,1.301],[2.83,-1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[172.843,68.707],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.825,-0.89],[-0.469,0.729]],"o":[[-1.383,0.322],[0.469,-0.729]],"v":[[-4.884,-2.783],[5.799,2.944]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[153.577,66.648],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.709],[-0.235,-0.708],[0.235,-0.708],[0.235,0.709]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.235,0.708],[0.235,0.708],[0.235,-0.71],[-0.235,-0.71]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.206,-0.659],[0,0]],"o":[[0,0],[0.091,0.272]],"v":[[0.235,0.708],[-0.235,-0.709]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.5,0.5,0.5,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[182.377,98.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.874,-3.292],[-16.098,0.788],[0.957,1.129],[15.984,3.504]],"o":[[-0.83,3.129],[19.462,-0.953],[-0.574,-0.678],[-10.556,-2.314]],"v":[[-382.369,-81.455],[-360.555,-75.984],[-337.917,-82.144],[-360.305,-82.654]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.258823529412,0.450980422076,0.776470648074,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.572,-2.91],[-4.151,-0.452],[0.499,4.691],[4.458,0]],"o":[[-2.379,2.691],[4.658,0.507],[-0.27,-2.528],[-3.815,-0.001]],"v":[[-8.686,-1.237],[-1.865,4.851],[10.566,-1.176],[1.888,-5.357]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929411824544,0.086274509804,0.529411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[104.258,122.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.456,-11.141],[0,0],[0,0],[0,0],[0.912,9.358],[0,0],[0,0]],"o":[[-6.455,11.143],[7.654,5.216],[0,0],[0,0],[-1.093,-11.215],[2.652,-6.029],[0,0]],"v":[[-9.763,-1.324],[-13.616,15.999],[16.218,16.876],[15.281,13.752],[-11.741,8.924],[6.062,-12.583],[4.67,-21.215]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.725490196078,0.603921568627,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.596,108.582],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-11.153,0],[0,0],[11.963,0]],"o":[[0,0],[11.153,0],[0,0],[-11.964,0]],"v":[[-15.984,-2.708],[-0.896,1.355],[15.983,-3.333],[-0.896,3.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.184000007779,0.583999992819,0.804000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[139.695,102.549],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.997,-2.789],[-2.083,3.669],[7.288,0.834],[0.302,0]],"o":[[0.778,2.178],[1.009,-1.779],[-0.315,-0.036],[-6.688,0.001]],"v":[[-8.337,2.931],[8.325,4.701],[1.766,-8.316],[0.842,-8.37]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.192156877705,0.913725550034,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.231,88.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.315,-0.036],[-1.01,-1.779],[-0.778,2.178],[6.686,0.001]],"o":[[-7.288,0.834],[2.083,3.669],[0.996,-2.789],[-0.302,0]],"v":[[-1.764,-8.316],[-8.323,4.701],[8.338,2.931],[-0.839,-8.37]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.192156877705,0.913725550034,0.956862804936,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.442,88.372],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.081,-3.746],[-5.434,2.604],[-0.771,2.091],[0,0],[0,0]],"o":[[0,0],[5.435,-2.603],[0.772,-2.092],[0,0],[0,0]],"v":[[-405.339,-63.292],[-397.135,-69.128],[-385.933,-75.861],[-400.839,-76.719],[-408.644,-73.332]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.552941176471,0.513725490196,0.84313731474,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[500,200],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.241,-1.31],[-15.795,-0.025],[-3.223,3.083],[9.675,0]],"o":[[2.225,3.001],[8.813,0.008],[-5.804,-1.293],[-11.292,0]],"v":[[-27.554,-1.718],[0.061,3.797],[27.554,-1.941],[2.757,-3.805]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.400000029919,0.258823529412,0.670588235294,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.167,139.052],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":3,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.157,-0.429],[0.107,-0.14],[0,0],[16.874,-3.784],[0,0],[0,0],[-0.255,1.772],[-4.212,0.775],[-13.808,-2.093],[-1.154,-0.239],[-0.041,-0.008]],"o":[[-0.05,0.132],[-1.335,1.888],[0,0],[-16.875,3.784],[0,0],[-3.611,-1.443],[0.157,-1.08],[12.382,-2.242],[1.443,0.256],[0.041,0.008],[3.273,0.709]],"v":[[33.979,-1.112],[33.748,-0.7],[26.996,3.619],[-10.693,-1.112],[-28.854,4.914],[-28.862,4.914],[-33.965,-0.024],[-26.917,-2.827],[24.904,-3.652],[28.811,-2.901],[28.926,-2.877]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.407843167174,0.36862745098,0.847058883368,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.529,140.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.237,-1.31],[0.157,-1.08],[-3.611,-1.444],[0,0],[-13.635,-0.016],[1.286,4.418],[0.19,0.222],[2.382,0.585],[0.04,0.009],[0.214,0.049],[1.186,0.181],[8.02,0]],"o":[[-4.213,0.775],[-0.256,1.772],[0,0],[5.499,2.2],[12.316,0.008],[-0.066,-0.232],[-0.75,-0.874],[-0.041,-0.008],[-0.198,-0.048],[-0.998,-0.222],[-5.737,-0.87],[-11.284,0]],"v":[[-27.516,-4.706],[-34.565,-1.904],[-29.462,3.035],[-29.454,3.035],[-0.494,6.785],[33.535,-1.904],[33.148,-2.579],[28.326,-4.755],[28.211,-4.781],[27.592,-4.93],[24.303,-5.53],[2.77,-6.793]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.556862745098,0.494117676978,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.129,142.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":3,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.691,-6.579],[8.54,15.827],[-5.367,14.303],[0,0],[-5.614,-8.82],[-24.369,1.038],[-4.089,6.875],[1.525,4.83],[0,0]],"o":[[-13.956,19.57],[-5.573,-10.338],[0,-0.008],[-0.231,0.841],[5.737,9.02],[24.367,-1.047],[3.223,-5.408],[0,0],[2.786,10.956]],"v":[[43.951,11.737],[-44.14,14.029],[-43.736,-26.151],[-43.728,-26.159],[-43.843,3.55],[8.966,10.278],[45.485,-1.181],[43.943,-23.356],[46.334,-16.226]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.745098039216,0.682352941176,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.801,122.679],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":3,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.667,-0.04],[-5.117,-21.832],[-14.162,12.079],[30.108,0.005]],"o":[[-28.571,1.714],[3.123,13.328],[13.859,-11.822],[-0.658,0]],"v":[[-4.371,-32.568],[-41.841,17.848],[33.1,20.549],[-2.388,-32.628]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.050980395897,0.298039215686,0.643137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.098,96.797],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":3,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.117,-21.832],[-14.161,12.079],[31.239,-1.874]],"o":[[3.124,13.329],[14.162,-12.079],[-28.572,1.715]],"v":[[-41.993,18.755],[32.948,21.456],[-4.522,-31.661]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":0,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.875,0.889999988032,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[141.549,97.509],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.04,-18.77],[-5.573,-10.338],[-13.956,19.571],[2.787,10.956],[23.791,0]],"o":[[-5.366,14.303],[8.54,15.827],[4.691,-6.578],[-5.506,-21.647],[-20.214,0]],"v":[[-43.439,-11.017],[-43.844,29.163],[44.247,26.87],[46.63,-1.092],[-0.943,-46.44]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.850980451995,0.807843197093,0.968627510819,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[138.505,107.546],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":3,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.812,-11.87],[0,0],[0,0],[6.013,6.716]],"o":[[-2.81,11.872],[0,0],[0,0],[0,0]],"v":[[-6.405,-1.963],[-1.898,17.034],[7.568,-1.181],[3.202,-17.035]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.188235309077,0.929411824544,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.313,85.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":3,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.812,11.872],[0,0]],"o":[[0,0],[0,0],[-2.811,-11.87],[-6.013,6.716]],"v":[[-7.568,-1.181],[1.897,17.034],[6.404,-1.963],[-3.202,-17.035]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.188235309077,0.929411824544,0.921568687289,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[181.973,85.091],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":3,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.012,-0.001],[0,-10.699],[0,0],[0,0],[0.889,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.013,0]],"v":[[1.508,-9.423],[-4.686,7.914],[-2.291,9.425],[4.686,-5.016],[1.545,-9.425]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.63137254902,0.552941176471,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.922,75.214],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":3,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.707,8.435],[0,0]],"o":[[0,0],[0,0],[-2.707,-8.435],[-7.653,0.937]],"v":[[-10.833,-11.004],[5.837,17.338],[8.126,-7.758],[3.074,-17.338]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.800000059838,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[175.355,83.129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":3,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0.248,-13.885],[-1.741,1.354]],"v":[[-4.633,-6.583],[2.568,10.788],[4.385,8.909],[-1.665,-10.788]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.63137254902,0.552941176471,0.937254961799,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.519,76.579],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":3,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.707,-8.435],[0,0],[0,0],[7.655,0.937]],"o":[[-2.708,8.435],[0,0],[0,0],[0,0]],"v":[[-8.126,-7.758],[-5.836,17.338],[10.834,-11.004],[-3.075,-17.338]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.85882358925,0.800000059838,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.929,83.129],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":3,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,268,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[27,27,100],"ix":6}},"ao":0,"w":2000,"h":2000,"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index bac418d9..3437f658 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -11,10 +11,7 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color -import androidx.compose.ui.input.key.Key -import androidx.compose.ui.input.key.NativeKeyEvent -import androidx.compose.ui.input.key.key -import androidx.compose.ui.input.key.onKeyEvent +import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.Res @@ -29,6 +26,7 @@ import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.MissingResourceException +import kotlin.random.Random private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -64,23 +62,22 @@ private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" fun App() { - val composition = rememberLottieComposition { - shapeLayer("Fucking Slave") { - transform { - opacity { source, state -> source / 2 } + val composition = rememberLottieComposition( + dynamic = { + layer("Pre-comp 1", "Head Layer") { + transform { + scale { + val p = progress + val scale = if (p > .5f) + (1f - p) / .5f else p / .5f + ScaleFactor(1f - scale/1.5f,1f - scale/1.5f) + } + } } - fill("Pizdec"){ - - } - } - - Modifier.onKeyEvent { - it.key == Key.Spacebar } - + ) { LottieCompositionSpec.Resource(ROBOT) - // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } From 2ccce98ef2bfa88c38ce41fe80be75d2ddeef0dd Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Fri, 14 Jun 2024 17:47:04 +0300 Subject: [PATCH 048/100] lottie text field --- .../alexzhirkevich/compottie/LottiePainter.kt | 4 +- .../compottie/dynamic/DrawShape.kt | 13 ++ .../compottie/dynamic/DynamicComposition.kt | 37 ++++- .../dynamic/DynamicCompositionImpl.kt | 157 ------------------ .../compottie/dynamic/DynamicDraw.kt | 43 +++++ .../compottie/dynamic/DynamicFill.kt | 14 +- .../compottie/dynamic/DynamicLayer.kt | 67 +++++++- .../compottie/dynamic/DynamicShape.kt | 7 +- .../compottie/dynamic/DynamicStroke.kt | 9 +- .../dynamic/_DynamicCompositionProvider.kt | 38 +++++ .../compottie/dynamic/_DynamicDrawProvider.kt | 69 ++++++++ .../compottie/dynamic/_DynamicFillProvider.kt | 21 +++ .../dynamic/_DynamicLayerProvider.kt | 10 ++ .../dynamic/_DynamicShapeLayerProvider.kt | 54 ++++++ .../dynamic/_DynamicStrokeProvider.kt | 27 +++ .../dynamic/_DynamicTransformProvider.kt | 44 +++++ .../compottie/dynamic/_GradientBuilderImpl.kt | 54 ++++++ .../compottie/internal/effects/BlurEffect.kt | 3 +- .../internal/effects/DropShadowEffect.kt | 11 +- .../compottie/internal/effects/FillEffect.kt | 5 +- .../compottie/internal/effects/TintEffect.kt | 7 +- .../internal/layers/BaseCompositionLayer.kt | 5 +- .../compottie/internal/layers/BaseLayer.kt | 6 +- .../compottie/internal/layers/Layer.kt | 3 +- .../compottie/internal/layers/ShapeLayer.kt | 9 +- .../internal/platform/PlatformShader.kt | 40 ++++- .../compottie/internal/shapes/FillShape.kt | 13 +- .../internal/shapes/GradientFillShape.kt | 66 ++++++-- .../compottie/internal/shapes/GroupShape.kt | 3 +- .../internal/shapes/TransformShape.kt | 3 - .../compottie/internal/utils/MiscUtil.kt | 8 + .../src/jvmMain/kotlin/main.desktop.kt | 32 ++-- .../composeResources/files/mobilo/A.json | 1 + .../files/mobilo/Apostrophe.json | 1 + .../composeResources/files/mobilo/B.json | 1 + .../files/mobilo/BlinkingCursor.json | 1 + .../composeResources/files/mobilo/C.json | 1 + .../composeResources/files/mobilo/Colon.json | 1 + .../composeResources/files/mobilo/Comma.json | 1 + .../composeResources/files/mobilo/D.json | 1 + .../composeResources/files/mobilo/E.json | 1 + .../composeResources/files/mobilo/F.json | 1 + .../composeResources/files/mobilo/G.json | 1 + .../composeResources/files/mobilo/H.json | 1 + .../composeResources/files/mobilo/I.json | 1 + .../composeResources/files/mobilo/J.json | 1 + .../composeResources/files/mobilo/K.json | 1 + .../composeResources/files/mobilo/L.json | 1 + .../composeResources/files/mobilo/M.json | 1 + .../composeResources/files/mobilo/N.json | 1 + .../composeResources/files/mobilo/O.json | 1 + .../composeResources/files/mobilo/P.json | 1 + .../composeResources/files/mobilo/Q.json | 1 + .../composeResources/files/mobilo/R.json | 1 + .../composeResources/files/mobilo/S.json | 1 + .../composeResources/files/mobilo/T.json | 1 + .../composeResources/files/mobilo/U.json | 1 + .../composeResources/files/mobilo/V.json | 1 + .../composeResources/files/mobilo/W.json | 1 + .../composeResources/files/mobilo/X.json | 1 + .../composeResources/files/mobilo/Y.json | 1 + .../composeResources/files/mobilo/Z.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 155 ++++++++++++++++- 63 files changed, 806 insertions(+), 261 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTransformProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_GradientBuilderImpl.kt create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/A.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/Apostrophe.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/B.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/BlinkingCursor.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/C.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/Colon.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/Comma.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/D.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/E.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/F.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/G.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/H.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/I.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/J.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/K.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/L.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/M.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/N.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/O.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/P.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/Q.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/R.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/S.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/T.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/U.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/V.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/W.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/X.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/Y.json create mode 100644 example/shared/src/commonMain/composeResources/files/mobilo/Z.json diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 46886f7c..320137b1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -148,7 +148,7 @@ fun rememberLottiePainter( private object EmptyPainter : Painter() { - override val intrinsicSize: Size = Size.Unspecified + override val intrinsicSize: Size = Size(1f,1f) override fun DrawScope.onDraw() { } @@ -188,7 +188,7 @@ private class LottiePainter( clipTextToBoundingBoxes = clipTextToBoundingBoxes, ) compositionLayer.painterProperties = painterProperties - compositionLayer.onStart(composition) + compositionLayer.onCreate(composition) } private val frame: Float by derivedStateOf { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt new file mode 100644 index 00000000..cd28bf8d --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt @@ -0,0 +1,13 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.ColorFilter + +interface DrawShape { + + fun opacity(provider : PropertyProvider) + + fun colorFilter(provider : PropertyProvider) + + fun blendMode(provider: PropertyProvider) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt index 709b4467..ed17856c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt @@ -7,18 +7,49 @@ sealed interface DynamicComposition { /** * Layer dynamic properties builder. + * + * Path is a chain of layers names up to the required layer. + * All layers in the chain must have a name. + * + * Example: + * + * ``` + * shapeLayer("Precomposition 1", "ShapeLayer2") { + * transform { + * //... + * } + * + * fill("Group4", "Fill 1") { + * color { + * if (isDark) Color.White else Color.Black + * } + * } + * } + * ``` * */ fun shapeLayer(vararg path: String, builder: DynamicLayer.Shape.() -> Unit) /** * Layer dynamic properties builder. + * + * Path is a chain of layers names up to the required layer. + * All layers in the chain must have a name. + * + * Example: + * + * ``` + * layer("Precomposition 1", "Layer3") { + * transform { + * scale { + * it * (1 - this.progress) + * } + * } + * } + * ``` * */ fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) } -internal const val LayerPathSeparator = "/" -internal fun layerPath(base : String?, name : String) : String = listOfNotNull(base, name) - .joinToString(LayerPathSeparator) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt deleted file mode 100644 index b2d1d5f6..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicCompositionImpl.kt +++ /dev/null @@ -1,157 +0,0 @@ -package io.github.alexzhirkevich.compottie.dynamic - -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.graphics.BlendMode -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.layout.ScaleFactor - -internal class DynamicCompositionProvider : DynamicComposition { - - private val layers = mutableMapOf() - - val size: Int - get() = layers.size - - override fun shapeLayer(vararg path: String, builder: DynamicLayer.Shape.() -> Unit) { - val p = path.joinToString(LayerPathSeparator) - - val provider = when(val existent = layers[p]) { - is DynamicShapeLayerProvider -> existent - is DynamicLayerProvider -> DynamicShapeLayerProvider().apply { - transform = existent.transform - } - - else -> DynamicShapeLayerProvider() - } - - provider.apply(builder) - - layers[p] = provider - } - - override fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) { - layers[path.joinToString(LayerPathSeparator)] = DynamicLayerProvider().apply(builder) - } - - operator fun get(name: String): DynamicLayerProvider? = layers[name] -} - - -internal open class DynamicLayerProvider : DynamicLayer { - - var transform : DynamicTransformProvider? = null - - override fun transform(builder: DynamicTransform.() -> Unit) { - transform = DynamicTransformProvider().apply(builder) - } -} - -internal class DynamicShapeLayerProvider( - private val basePath : String? = null, - private val root : DynamicShapeLayerProvider? = null -) : DynamicLayerProvider(), DynamicLayer.Shape { - - private val nRoot get() = root ?: this - - private val shapes = mutableMapOf() - - override fun group(name: String, shape: DynamicLayer.Shape.() -> Unit) { - DynamicShapeLayerProvider( - basePath = layerPath(basePath, name), - root = nRoot - ).apply(shape) - } - - override fun fill(vararg path: String, builder: DynamicFill.() -> Unit) { - shapes[layerPath(basePath, path.joinToString(LayerPathSeparator))] = - DynamicFillProvider().apply(builder) - } - - override fun stroke(vararg path: String, builder: DynamicFill.() -> Unit) { - } - - internal fun get(path : String) : DynamicShape? = shapes[path] -} - -internal inline fun DynamicShape.requireShape(path: String) : T { - check(this is T){ - val e = T::class.simpleName!!.substringBeforeLast("Provider") - val a = this::class.simpleName!!.substringBeforeLast("Provider") - - "$path expected to be $e but is $a" - } - - return this -} - -internal class DynamicTransformProvider : DynamicTransform { - - var scale : PropertyProvider? = null - private set - var offset : PropertyProvider? = null - private set - var rotation : PropertyProvider? = null - private set - var opacity : PropertyProvider? = null - private set - var skew : PropertyProvider? = null - private set - var skewAxis : PropertyProvider? = null - private set - - override fun scale(provider: PropertyProvider) { - this.scale = provider - } - - override fun offset(provider: PropertyProvider) { - this.offset = provider - } - - override fun rotation(provider: PropertyProvider) { - this.rotation = provider - } - - override fun opacity(provider: PropertyProvider) { - this.opacity = provider - } - - override fun skew(provider: PropertyProvider) { - this.skew = provider - } - - override fun skewAxis(provider: PropertyProvider) { - this.skewAxis = provider - } -} - -internal class DynamicFillProvider : DynamicFill { - - var color : PropertyProvider? = null - private set - - var opacity : PropertyProvider? = null - private set - - var colorFilter : PropertyProvider? = null - private set - - var blendMode : PropertyProvider? = null - private set - - override fun color(provider: PropertyProvider) { - color = provider - } - - override fun opacity(provider: PropertyProvider) { - opacity = provider - } - - override fun colorFilter(provider: PropertyProvider) { - colorFilter = provider - } - - override fun blendMode(provider: PropertyProvider) { - blendMode = provider - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt new file mode 100644 index 00000000..402d5343 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt @@ -0,0 +1,43 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import io.github.alexzhirkevich.compottie.internal.AnimationState + +sealed interface DynamicDraw : DynamicShape { + + fun opacity(provider: PropertyProvider) + + fun colorFilter(provider: PropertyProvider) + + fun blendMode(provider: PropertyProvider) + + sealed interface Solid : DynamicDraw { + fun color(provider: PropertyProvider) + } + + sealed interface Gradient : DynamicDraw { + + fun gradient(provider: GradientProvider) + } +} + +typealias GradientProvider = (Size, AnimationState) -> LottieGradient + +sealed interface LottieGradient { + + data class Linear( + val colorStops : List>, + val start : Offset = Offset.Unspecified, + val end: Offset = Offset.Unspecified, + ) : LottieGradient + + data class Radial( + val colorStops : List>, + val center : Offset = Offset.Unspecified, + val radius : Float = Float.NaN, + ) : LottieGradient +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt index 12cac964..183a0b31 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt @@ -1,15 +1,9 @@ package io.github.alexzhirkevich.compottie.dynamic -import androidx.compose.ui.graphics.BlendMode -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -sealed interface DynamicFill : DynamicShape { - fun color(provider : PropertyProvider) +sealed interface DynamicFill : DynamicDraw { + sealed interface Solid : DynamicFill, DynamicDraw.Solid - fun opacity(provider : PropertyProvider) + sealed interface Gradient : DynamicFill, DynamicDraw.Gradient +} - fun colorFilter(provider : PropertyProvider) - - fun blendMode(provider: PropertyProvider) -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt index 947fa320..03c09f07 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt @@ -1,15 +1,72 @@ package io.github.alexzhirkevich.compottie.dynamic +import kotlin.reflect.KClass + sealed interface DynamicLayer { fun transform(builder: DynamicTransform.() -> Unit) sealed interface Shape : DynamicLayer { - fun group(name : String, shape: Shape.() -> Unit) - - fun fill(vararg path: String, builder: DynamicFill.() -> Unit) + /** + * Shortcut useful if you want to configure multiple shapes in the same group + * + * Example: + * + * ``` + * group("Group 1") { + * ellipse("Ellipse 4") { } + * fill(DynamicFill.Solid, "Fill 1") { } + * } + * ``` + * Is alternative for + * + * ``` + * ellipse("Group 1", "Ellipse 4") { } + * fill("Group 1", "Fill 1") { } + *``` + * */ + fun group(name: String, shape: Shape.() -> Unit) - fun stroke(vararg path: String, builder: DynamicFill.() -> Unit) } -} \ No newline at end of file +} + + +/** + * Configure dynamic stroke. + * + * Fill type must be the same as actual animation fill type. + * You can't configure gradient stroke if the animation is using solid stroke. + * + * Example: + * + * ``` + * stroke("Group 1", "Stroke 2") { + * width { 5f } + * color { if (isDark) Color.White else Color.Black } + * } + * ``` + * */ +inline fun DynamicLayer.Shape.stroke( + vararg path: String, + crossinline builder: T.() -> Unit +) = strokeImpl(*path, builder = builder) + +/** + * Configure dynamic fill. + * + * Fill type must be the same as actual animation fill type. + * You can't configure gradient fill if the animation is using solid fill. + * + * Example: + * + * ``` + * fill("Group 1", "Stroke 2") { + * color { if (isDark) Color.White else Color.Black } + * } + * ``` + * */ +inline fun DynamicLayer.Shape.fill( + vararg path: String, + crossinline builder: T.() -> Unit +) = strokeImpl(*path, builder = builder) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt index 6d076dba..bddc0d7c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt @@ -1,3 +1,8 @@ package io.github.alexzhirkevich.compottie.dynamic -sealed interface DynamicShape \ No newline at end of file +sealed interface DynamicShape { + + sealed interface Ellipse : DynamicShape + + sealed interface Rest : DynamicShape +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt index 482a5c81..b774fa05 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt @@ -1,3 +1,10 @@ package io.github.alexzhirkevich.compottie.dynamic -sealed interface DynamicStroke \ No newline at end of file +sealed interface DynamicStroke : DynamicDraw { + fun width(provider: PropertyProvider) {} + + sealed interface Solid : DynamicStroke, DynamicDraw.Solid + + sealed interface Gradient : DynamicStroke, DynamicDraw.Gradient +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt new file mode 100644 index 00000000..0b1b2e80 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt @@ -0,0 +1,38 @@ +package io.github.alexzhirkevich.compottie.dynamic + +internal class DynamicCompositionProvider : DynamicComposition { + + private val layers = mutableMapOf() + + val size: Int + get() = layers.size + + override fun shapeLayer(vararg path: String, builder: DynamicLayer.Shape.() -> Unit) { + val p = path.joinToString(LayerPathSeparator) + + val provider = when(val existent = layers[p]) { + is DynamicShapeLayerProvider -> existent + is DynamicLayerProvider -> DynamicShapeLayerProvider().apply { + transform = existent.transform + } + + else -> DynamicShapeLayerProvider() + } + + provider.apply(builder) + + layers[p] = provider + } + + override fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) { + layers[path.joinToString(LayerPathSeparator)] = DynamicLayerProvider().apply(builder) + } + + operator fun get(name: String): DynamicLayerProvider? = layers[name] +} + +@PublishedApi +internal const val LayerPathSeparator = "/" + +internal fun layerPath(base : String?, name : String) : String = listOfNotNull(base, name) + .joinToString(LayerPathSeparator) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt new file mode 100644 index 00000000..8bcf7199 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt @@ -0,0 +1,69 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter + + +internal sealed interface DynamicDrawProvider : DynamicDraw { + val opacity: PropertyProvider? + val colorFilter: PropertyProvider? + val blendMode: PropertyProvider? +} + +internal sealed interface DynamicSolidDrawProvider : DynamicDrawProvider, DynamicDraw.Solid { + val color: PropertyProvider? +} + +internal sealed interface DynamicGradientDrawProvider : DynamicDrawProvider, DynamicDraw.Gradient { + val gradient: GradientProvider? +} + +internal fun DynamicGradientDrawProvider() : DynamicGradientDrawProvider = DynamicGradientDrawProviderImpl() + +internal fun DynamicSolidDrawProvider() : DynamicSolidDrawProvider = DynamicSolidDrawProviderImpl() + + +internal sealed class BaseDynamicDrawProvider : DynamicDraw, DynamicDrawProvider { + + final override var opacity: PropertyProvider? = null + private set + + final override var colorFilter: PropertyProvider? = null + private set + + final override var blendMode: PropertyProvider? = null + private set + + final override fun opacity(provider: PropertyProvider) { + opacity = provider + } + + final override fun colorFilter(provider: PropertyProvider) { + colorFilter = provider + } + + final override fun blendMode(provider: PropertyProvider) { + blendMode = provider + } +} + +private class DynamicSolidDrawProviderImpl : BaseDynamicDrawProvider(),DynamicSolidDrawProvider, DynamicDraw.Solid { + override var color: PropertyProvider? = null + private set + + override fun color(provider: PropertyProvider) { + color = provider + } +} + +private class DynamicGradientDrawProviderImpl : + BaseDynamicDrawProvider(), DynamicGradientDrawProvider, DynamicDraw.Gradient { + + override var gradient: GradientProvider? = null + private set + + override fun gradient(provider: GradientProvider) { + gradient = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt new file mode 100644 index 00000000..b76ae8aa --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt @@ -0,0 +1,21 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import kotlin.js.JsName + + +internal sealed interface DynamicFillProvider : DynamicFill, DynamicDrawProvider + +@PublishedApi +@JsName("MakeDynamicFillProvider") +internal fun DynamicFillProvider() : DynamicFillProvider = DynamicFillProviderImpl() + +@PublishedApi +internal class DynamicSolidFillProvider : DynamicFill.Solid, + DynamicSolidDrawProvider by DynamicSolidDrawProvider() + +@PublishedApi +internal class DynamicGradientFillProvider : DynamicFill.Gradient, + DynamicGradientDrawProvider by DynamicGradientDrawProvider() + +private class DynamicFillProviderImpl : BaseDynamicDrawProvider(), DynamicFillProvider + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt new file mode 100644 index 00000000..8c29ddee --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt @@ -0,0 +1,10 @@ +package io.github.alexzhirkevich.compottie.dynamic + +internal open class DynamicLayerProvider : DynamicLayer { + + var transform : DynamicTransformProvider? = null + + override fun transform(builder: DynamicTransform.() -> Unit) { + transform = DynamicTransformProvider().apply(builder) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt new file mode 100644 index 00000000..c83ef00d --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt @@ -0,0 +1,54 @@ +package io.github.alexzhirkevich.compottie.dynamic + +@PublishedApi +internal class DynamicShapeLayerProvider( + private val basePath : String? = null, + private val root : DynamicShapeLayerProvider? = null +) : DynamicLayerProvider(), DynamicLayer.Shape { + + private val nRoot get() = root ?: this + + @PublishedApi + internal val shapes = mutableMapOf() + + override fun group(name: String, shape: DynamicLayer.Shape.() -> Unit) { + DynamicShapeLayerProvider( + basePath = layerPath(basePath, name), + root = nRoot + ).apply(shape) + } + + internal inline operator fun get(path: String): S? = + shapes[path] as? S +} + +@PublishedApi +internal inline fun DynamicLayer.Shape.strokeImpl( + vararg path: String, + builder: T.() -> Unit +) { + check(this is DynamicShapeLayerProvider) + + shapes[path.joinToString(LayerPathSeparator)] = when (T::class){ + DynamicStroke.Solid::class -> (DynamicSolidStrokeProvider() as T).apply(builder) + DynamicStroke.Gradient::class -> (DynamicGradientStrokeProvider() as T).apply(builder) + DynamicStroke::class -> (DynamicStrokeProvider() as T).apply(builder) + else -> error("Invalid stroke type. Must be either DynamicStroke.Solid or DynamicStroke.Gradient") + } +} + + +@PublishedApi +internal inline fun DynamicLayer.Shape.fillImpl( + vararg path: String, + builder: T.() -> Unit +) { + check(this is DynamicShapeLayerProvider) + + shapes[path.joinToString(LayerPathSeparator)] = when (T::class) { + DynamicFill.Solid::class -> (DynamicSolidFillProvider() as T).apply(builder) + DynamicFill.Gradient::class -> (DynamicGradientFillProvider() as T).apply(builder) + DynamicFill::class -> (DynamicFillProvider() as T).apply(builder) + else -> error("Invalid stroke type. Must be either DynamicStroke.Solid or DynamicStroke.Gradient") + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt new file mode 100644 index 00000000..6fb5dda9 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt @@ -0,0 +1,27 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import kotlin.js.JsName + +internal interface DynamicStrokeProvider : DynamicStroke, DynamicDrawProvider + +@JsName("MakeDynamicStrokeProvider") +@PublishedApi +internal fun DynamicStrokeProvider() : DynamicStrokeProvider = DynamicStrokeProviderImpl() + +@PublishedApi +internal class DynamicSolidStrokeProvider : DynamicStroke.Solid, + DynamicSolidDrawProvider by DynamicSolidDrawProvider() + +@PublishedApi +internal class DynamicGradientStrokeProvider : DynamicStroke.Gradient, + DynamicGradientDrawProvider by DynamicGradientDrawProvider() + +private class DynamicStrokeProviderImpl: BaseDynamicDrawProvider(), DynamicStrokeProvider { + + var width: PropertyProvider? = null + private set + + override fun width(provider: PropertyProvider) { + this.width = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTransformProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTransformProvider.kt new file mode 100644 index 00000000..e0cf1347 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTransformProvider.kt @@ -0,0 +1,44 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.layout.ScaleFactor + +internal class DynamicTransformProvider : DynamicTransform { + + var scale : PropertyProvider? = null + private set + var offset : PropertyProvider? = null + private set + var rotation : PropertyProvider? = null + private set + var opacity : PropertyProvider? = null + private set + var skew : PropertyProvider? = null + private set + var skewAxis : PropertyProvider? = null + private set + + override fun scale(provider: PropertyProvider) { + this.scale = provider + } + + override fun offset(provider: PropertyProvider) { + this.offset = provider + } + + override fun rotation(provider: PropertyProvider) { + this.rotation = provider + } + + override fun opacity(provider: PropertyProvider) { + this.opacity = provider + } + + override fun skew(provider: PropertyProvider) { + this.skew = provider + } + + override fun skewAxis(provider: PropertyProvider) { + this.skewAxis = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_GradientBuilderImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_GradientBuilderImpl.kt new file mode 100644 index 00000000..7204dca5 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_GradientBuilderImpl.kt @@ -0,0 +1,54 @@ +//package io.github.alexzhirkevich.compottie.dynamic +// +//import androidx.compose.ui.geometry.Offset +//import androidx.compose.ui.geometry.Rect +//import androidx.compose.ui.geometry.takeOrElse +//import androidx.compose.ui.graphics.Color +//import androidx.compose.ui.graphics.Matrix +//import androidx.compose.ui.graphics.Shader +//import io.github.alexzhirkevich.compottie.internal.platform.CachedLinearGradient +//import io.github.alexzhirkevich.compottie.internal.platform.CachedRadialGradient +//import io.github.alexzhirkevich.compottie.internal.platform.GradientCache +//import kotlin.math.min +// +//internal class GradientBuilderImpl : GradientBuilder { +// +// var shader: ((Rect, Matrix, GradientCache) -> Shader)? = null +// private set +// +// override fun linear(colorStops: List>, start: Offset, end: Offset) { +// shader = { rect, mat, cache -> +// val s = start.takeOrElse { rect.topLeft } +// val e = start.takeOrElse { rect.bottomRight } +// +// CachedLinearGradient( +// from = s, +// to = e, +// colors = colorStops.map(Pair<*, Color>::second), +// colorStops = colorStops.map(Pair::first), +// matrix = mat, +// cache = cache +// ) +// } +// } +// +// override fun radial( colorStops: List>, center: Offset, radius: Float) { +// shader = { rect, mat, cache -> +// val c = center.takeOrElse { rect.center } +// val r = if (radius.isNaN()) { +// min(rect.width, rect.height) +// } else { +// radius +// } +// +// CachedRadialGradient( +// center = c, +// radius = r, +// colors = colorStops.map(Pair<*, Color>::second), +// colorStops = colorStops.map(Pair::first), +// matrix = mat, +// cache = cache +// ) +// } +// } +//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt index 9482566f..6c55f521 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.effects +import io.github.alexzhirkevich.compottie.internal.utils.getAs import kotlinx.serialization.Contextual import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,5 +13,5 @@ internal class BlurEffect( override val values : List> ) : LayerEffect { - val radius get() = (values.getOrNull(0) as? EffectValue.Slider)?.value + val radius get() = values.getAs(0)?.value } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt index 5fbd0420..b57043bf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.effects import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.utils.getAs import kotlinx.serialization.Contextual import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,9 +13,9 @@ internal class DropShadowEffect( override val values : List> ) : LayerEffect { - val color get() = (values.getOrNull(0) as? EffectValue.Color)?.value - val opacity get() = (values.getOrNull(1) as? EffectValue.Slider)?.value - val angle get() = (values.getOrNull(2) as? EffectValue.Angle)?.value - val distance get() = (values.getOrNull(3) as? EffectValue.Slider)?.value - val blur get() = (values.getOrNull(4) as? EffectValue.Slider)?.value + val color get() = values.getAs(0)?.value + val opacity get() = values.getAs(1)?.value + val angle get() = values.getAs(2)?.value + val distance get() = values.getAs(3)?.value + val blur get() = values.getAs(4)?.value } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt index 9ba03723..6dc377b1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.effects +import io.github.alexzhirkevich.compottie.internal.utils.getAs import kotlinx.serialization.Contextual import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -11,8 +12,8 @@ internal class FillEffect( override val values : List> ) : LayerEffect { - val color get() = (values.getOrNull(2) as? EffectValue.Color)?.value + val color get() = values.getAs(2)?.value - val opacity get() = (values.getOrNull(6) as? EffectValue.Slider)?.value + val opacity get() = values.getAs(6)?.value } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt index 856551bb..27b24b1d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.effects +import io.github.alexzhirkevich.compottie.internal.utils.getAs import kotlinx.serialization.Contextual import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -12,14 +13,14 @@ internal class TintEffect( ) : LayerEffect { val black by lazy { - (values.getOrNull(0) as? EffectValue.Color)?.value + values.getAs(0)?.value } val white by lazy { - (values.getOrNull(1) as? EffectValue.Color)?.value + values.getAs(1)?.value } val intensity by lazy { - (values.getOrNull(2) as? EffectValue.Slider)?.value + values.getAs(2)?.value } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index a5b506d5..c551c54d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -7,7 +7,6 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.dynamic.LayerPathSeparator import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber @@ -36,8 +35,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { isAntiAlias = true } - override fun onStart(composition: LottieComposition) { - layers.forEach { it.onStart(composition) } + override fun onCreate(composition: LottieComposition) { + layers.forEach { it.onCreate(composition) } } // private val remappedState by lazy { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 3d052534..b7ddbbce 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -10,7 +10,6 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.util.fastFirstOrNull import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed @@ -21,7 +20,6 @@ import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.effects.BlurEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.Mask @@ -99,8 +97,8 @@ internal abstract class BaseLayer() : Layer { LayerEffectsApplier(this) } - override fun onStart(composition: LottieComposition) { - super.onStart(composition) + override fun onCreate(composition: LottieComposition) { + super.onCreate(composition) transform.autoOrient = autoOrient == BooleanInt.Yes if (name != null) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index d95606cb..f4863ee9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -61,7 +60,7 @@ internal sealed interface Layer : DrawingContent { var namePath : String? - fun onStart(composition: LottieComposition) {} + fun onCreate(composition: LottieComposition) {} } internal val Layer.isContainerLayer get() = name == "__container" diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 51f6043c..7c51b727 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -16,7 +16,8 @@ import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.shapes.Shape -import io.github.alexzhirkevich.compottie.internal.shapes.findTransform +import io.github.alexzhirkevich.compottie.internal.shapes.TransformShape +import io.github.alexzhirkevich.compottie.internal.utils.firstInstanceOf import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -97,15 +98,15 @@ internal class ShapeLayer( name = name, hidden = hidden, contents = shapes, - transform = shapes.findTransform()?.apply { + transform = shapes.firstInstanceOf()?.apply { autoOrient = this@ShapeLayer.autoOrient == BooleanInt.Yes } ).apply { setContents(emptyList(), emptyList()) } - override fun onStart(composition: LottieComposition) { - super.onStart(composition) + override fun onCreate(composition: LottieComposition) { + super.onCreate(composition) if (name != null) { (composition.dynamic?.get(layerPath(namePath, name)) as? DynamicShapeLayerProvider)?.let { dp -> diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index c83288e3..99981760 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -8,7 +8,8 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode -import androidx.compose.ui.graphics.asComposeColorFilter +import androidx.compose.ui.util.fastMap +import io.github.alexzhirkevich.compottie.dynamic.LottieGradient import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors @@ -17,6 +18,37 @@ import kotlin.math.hypot private val CACHE_LIMIT = 15 +typealias GradientCache = LinkedHashMap + +internal fun GradientShader( + gradient: LottieGradient, + matrix: Matrix, + cache: GradientCache +): Shader { + return when (gradient){ + is LottieGradient.Linear -> { + CachedLinearGradient( + from = gradient.start, + to = gradient.end, + colors = gradient.colorStops.fastMap { it.second }, + colorStops = gradient.colorStops.fastMap { it.first }, + matrix = matrix, + cache = cache + ) + } + is LottieGradient.Radial -> { + CachedRadialGradient( + center = gradient.center, + radius = gradient.radius, + colors = gradient.colorStops.fastMap { it.second }, + colorStops = gradient.colorStops.fastMap { it.first }, + matrix = matrix, + cache = cache + ) + } + } +} + internal fun GradientShader( type: GradientType, startPoint: AnimatedVector2, @@ -24,7 +56,7 @@ internal fun GradientShader( colors: GradientColors, state: AnimationState, matrix: Matrix, - cache: LinkedHashMap + cache: GradientCache ) : Shader { val start = startPoint.interpolated(state) val end = endPoint.interpolated(state) @@ -65,7 +97,7 @@ private fun CachedLinearGradient( colorStops: List, tileMode: TileMode = TileMode.Clamp, matrix: Matrix, - cache : LinkedHashMap, + cache : GradientCache, ) : Shader { var hash = from.hashCode() @@ -102,7 +134,7 @@ private fun CachedRadialGradient( colorStops: List, tileMode: TileMode = TileMode.Clamp, matrix: Matrix, - cache : LinkedHashMap, + cache : GradientCache, ) : Shader { var hash = center.hashCode() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 4c2fad3c..c152925f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -9,9 +9,9 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.dynamic.DynamicFillProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicSolidDrawProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath -import io.github.alexzhirkevich.compottie.dynamic.requireShape import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent @@ -96,7 +96,7 @@ internal class FillShape( var c = color.interpolated(state) - dynamic?.color?.let { + (dynamic as? DynamicSolidDrawProvider)?.color?.let { c = it.derive(c, state) } @@ -112,10 +112,8 @@ internal class FillShape( } paint.alpha = (alpha * parentAlpha).coerceIn(0f,1f) - paint.colorFilter = dynamic?.colorFilter.derive(paint.colorFilter, state) - - paint.blendMode = dynamic?.blendMode.derive(layer.blendMode.asComposeBlendMode(), state) + paint.blendMode = dynamic?.blendMode.derive(paint.blendMode, state) roundShape?.applyTo(paint, state) @@ -156,14 +154,13 @@ internal class FillShape( override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { super.setDynamicProperties(basePath, properties) if (name != null) { - val p = layerPath(basePath, name) - dynamic = properties.get(p)?.requireShape(p) + dynamic = properties[layerPath(basePath, name)] } } override fun setContents(contentsBefore: List, contentsAfter: List) { paths = contentsAfter.filterIsInstance() - roundShape = contentsBefore?.find { it is RoundShape } as? RoundShape + roundShape = contentsBefore.find { it is RoundShape } as? RoundShape } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index a24aafd9..3a37e35d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -8,6 +8,12 @@ import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.dynamic.DynamicFillProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicGradientDrawProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicSolidDrawProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 @@ -24,6 +30,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.utils.firstInstanceOf import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -83,6 +90,9 @@ internal class GradientFillShape( } } + @Transient + private val boundsRect = MutableRect(0f,0f,0f,0f) + @Transient private var paths: List = emptyList() @@ -93,6 +103,9 @@ internal class GradientFillShape( } } + @Transient + private var dynamic : DynamicFillProvider? = null + @Transient private val gradientCache = LinkedHashMap() @@ -108,26 +121,41 @@ internal class GradientFillShape( return } - paint.shader = GradientShader( - type = type, - startPoint = startPoint, - endPoint = endPoint, - colors = colors, - state = state, - matrix = parentMatrix, - cache = gradientCache - ) + val dynamicGradient = (dynamic as? DynamicGradientDrawProvider)?.gradient + + paint.shader = if (dynamicGradient == null) { + GradientShader( + type = type, + startPoint = startPoint, + endPoint = endPoint, + colors = colors, + state = state, + matrix = parentMatrix, + cache = gradientCache + ) + } else { + getBounds(drawScope, parentMatrix, false, state, boundsRect) + GradientShader( + gradient = dynamicGradient.invoke(boundsRect.size, state), + matrix = parentMatrix, + cache = gradientCache + ) + } - paint.alpha = if (opacity != null) { - (parentAlpha * opacity.interpolatedNorm(state)).coerceIn(0f, 1f) + var alpha = 1f + + opacity?.interpolatedNorm(state)?.let { + alpha = (alpha * it).coerceIn(0f,1f) } - else { - parentAlpha + dynamic?.opacity?.let { + alpha = it.derive(alpha, state).coerceIn(0f,1f) } + paint.alpha = (alpha * parentAlpha).coerceIn(0f,1f) + paint.colorFilter = dynamic?.colorFilter.derive(paint.colorFilter, state) + paint.blendMode = dynamic?.blendMode.derive(paint.blendMode, state) layer.effectsApplier.applyTo(paint, state, effectsState) - path.reset() paths.fastForEach { @@ -162,9 +190,17 @@ internal class GradientFillShape( ) } + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + if (name != null) { + dynamic = properties[layerPath(basePath, name)] + } + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { paths = contentsAfter.filterIsInstance() - roundShape = contentsBefore.find { it is RoundShape } as? RoundShape + roundShape = contentsBefore.firstInstanceOf() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index f347c3f5..1a4b0195 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -8,6 +8,7 @@ import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.layers.NullLayer +import io.github.alexzhirkevich.compottie.internal.utils.firstInstanceOf import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -35,7 +36,7 @@ internal class GroupShape( name = name, hidden = hidden, contents = items, - transform = items.findTransform() + transform = items.firstInstanceOf() ) { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index 71818de1..ed502da4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -53,6 +53,3 @@ internal class TransformShape( } } -internal fun Iterable.findTransform() : TransformShape? { - return firstOrNull { it is TransformShape } as TransformShape? -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt index 61eb8fd6..6280efb5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt @@ -29,4 +29,12 @@ private fun hslToRgbComponent(n: Int, h: Float, s: Float, l: Float): Float { val k = (n.toFloat() + h / 30f) % 12f val a = s * min(l, 1f - l) return l - a * max(-1f, minOf(k - 3, 9 - k, 1f)) +} + +internal inline fun List<*>.firstInstanceOf() : R? { + return firstOrNull { it is R } as? R +} + +internal inline fun List<*>.getAs(index : Int) : R? { + return getOrNull(index) as? R } \ No newline at end of file diff --git a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt index c25e61af..86a57416 100644 --- a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt +++ b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt @@ -1,32 +1,20 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.singleWindowApplication fun main() { - singleWindowApplication { + singleWindowApplication( + title = "Compottie Example", + state = WindowState( + size = DpSize(1295.dp, 500.dp) + ) + ) { App() } } -private val testLottie = """ -{ - "nm": "Comp 1", - "ddd": 0, - "h": 800, - "w": 800, - "meta": { - "g": "@lottiefiles/toolkit-js 0.33.2" - }, - "v": "5.5.9", - "fr": 24, - "op": 84, - "ip": 0, - "layers" : [ - { - "ty" : 4, - "nm" : "shape layer" - } - ] -} -""".trimIndent() \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/A.json b/example/shared/src/commonMain/composeResources/files/mobilo/A.json new file mode 100644 index 00000000..848a4bfc --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/A.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"smile","parent":10,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-90,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.714,"y":0.995},"o":{"x":0.323,"y":0},"n":"0p714_0p995_0p323_0","t":1,"s":[{"i":[[0,0],[-10.378,0],[0,0]],"o":[[0,0],[10.378,0],[0,0]],"v":[[-17.75,13.562],[-0.466,7.938],[16,12.394]],"c":false}],"e":[{"i":[[0,0],[-19.708,0],[0,0]],"o":[[0,0],[19.708,0],[0,0]],"v":[[-30.557,-0.854],[-0.099,5.41],[30.186,-1.101]],"c":false}]},{"i":{"x":0.52,"y":0.944},"o":{"x":0.122,"y":0.002},"n":"0p52_0p944_0p122_0p002","t":5.5,"s":[{"i":[[0,0],[-19.708,0],[0,0]],"o":[[0,0],[19.708,0],[0,0]],"v":[[-30.557,-0.854],[-0.099,5.41],[30.186,-1.101]],"c":false}],"e":[{"i":[[0,0],[-22.217,0],[0,0]],"o":[[0,0],[22.217,0],[0,0]],"v":[[-34,-4.73],[0,4.73],[34,-4.73]],"c":false}]},{"t":19}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11.8,"s":[0,0.32,0.5,1],"e":[0,0.32,0.5,1]},{"t":25}]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6.4,"s":[2],"e":[8]},{"t":13.599609375}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":20,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"cap","parent":10,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[-4]},{"t":18.099609375}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[0,-160.338,0],"e":[0,-168.938,0],"to":[0,-1.43333327770233,0],"ti":[0,1.43333327770233,0]},{"t":18.099609375}]},"a":{"k":[0,-156.338,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.594,6.969],[9.216,-10.513],[-22.981,-10.513],[-30.517,10.492],[-2.884,10.504],[-2.884,10.513],[45.258,11.023],[45.258,7.479]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[6.024,-156.338],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"glasses","parent":10,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8.2,"s":[0,-106,0],"e":[0,-126,0],"to":[0,-3.33333325386047,0],"ti":[0,3.33333325386047,0]},{"t":15.400390625}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"k":{"i":[[6.099,0],[0.456,5.986],[0,0.299],[-0.022,0.293],[-6.101,0],[-0.456,-5.985],[0,-0.299],[0.022,-0.293]],"o":[[-6.101,0],[-0.022,-0.293],[0,-0.299],[0.456,-5.985],[6.099,0],[0.022,0.293],[0,0.299],[-0.456,5.986]],"v":[[-14.967,11.605],[-26.528,0.885],[-26.573,-0.001],[-26.528,-0.887],[-14.967,-11.605],[-3.408,-0.887],[-3.363,-0.001],[-3.408,0.885]],"c":true}},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"},{"inv":false,"mode":"s","pt":{"k":{"i":[[6.101,0],[0.455,5.986],[0,0.299],[-0.022,0.293],[-6.099,0],[-0.456,-5.985],[0,-0.299],[0.022,-0.293]],"o":[[-6.099,0],[-0.022,-0.293],[0,-0.299],[0.456,-5.985],[6.101,0],[0.022,0.293],[0,0.299],[-0.456,5.986]],"v":[[14.186,11.73],[2.627,1.01],[2.582,0.124],[2.627,-0.762],[14.186,-11.48],[25.747,-0.762],[25.792,0.124],[25.747,1.01]],"c":true}},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[7.077,0],[0.459,-6.963],[0,0],[7.077,0],[0.46,-6.963],[0,0],[0,0],[0,0],[-7.077,0],[-0.46,6.963],[0,0],[-7.077,0],[-0.46,6.963],[0,0],[0,0]],"o":[[-0.46,-6.963],[-7.077,0],[0,0],[-0.46,-6.963],[-7.077,0],[0,0],[0,0],[0,0],[0.46,6.963],[7.077,0],[0,0],[0.459,6.963],[7.077,0],[0,0],[0,0],[0,0]],"v":[[27.473,-0.887],[14.14,-13.377],[0.808,-0.887],[-1.651,-0.887],[-14.982,-13.377],[-28.315,-0.887],[-41.647,-0.887],[-41.647,0.885],[-28.315,0.885],[-14.982,13.377],[-1.651,0.885],[0.808,0.885],[14.14,13.377],[27.473,0.885],[41.647,0.885],[41.647,-0.887]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":6},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":1,"nm":"mask darkblue 2","parent":17,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,100,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"ef":[{"ty":21,"nm":"Fill","mn":"ADBE Fill","ix":1,"ef":[{"ty":3,"nm":"Fill Mask","mn":"ADBE Fill-0001","ix":1,"v":{"k":0}},{"ty":7,"nm":"All Masks","mn":"ADBE Fill-0007","ix":2,"v":{"k":0}},{"ty":2,"nm":"Color","mn":"ADBE Fill-0002","ix":3,"v":{"k":[0,0,0.01,1]}},{"ty":7,"nm":"Invert","mn":"ADBE Fill-0006","ix":4,"v":{"k":0}},{"ty":0,"nm":"Horizontal Feather","mn":"ADBE Fill-0003","ix":5,"v":{"k":0}},{"ty":0,"nm":"Vertical Feather","mn":"ADBE Fill-0004","ix":6,"v":{"k":0}},{"ty":0,"nm":"Opacity","mn":"ADBE Fill-0005","ix":7,"v":{"k":1}}]}],"sw":500,"sh":600,"sc":"#000000","ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"darkblue 2","parent":10,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,64.663,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":1,"nm":"mask darkblue","parent":17,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,100,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"ef":[{"ty":21,"nm":"Fill","mn":"ADBE Fill","ix":1,"ef":[{"ty":3,"nm":"Fill Mask","mn":"ADBE Fill-0001","ix":1,"v":{"k":0}},{"ty":7,"nm":"All Masks","mn":"ADBE Fill-0007","ix":2,"v":{"k":0}},{"ty":2,"nm":"Color","mn":"ADBE Fill-0002","ix":3,"v":{"k":[0,0,0.01,1]}},{"ty":7,"nm":"Invert","mn":"ADBE Fill-0006","ix":4,"v":{"k":0}},{"ty":0,"nm":"Horizontal Feather","mn":"ADBE Fill-0003","ix":5,"v":{"k":0}},{"ty":0,"nm":"Vertical Feather","mn":"ADBE Fill-0004","ix":6,"v":{"k":0}},{"ty":0,"nm":"Opacity","mn":"ADBE Fill-0005","ix":7,"v":{"k":1}}]}],"sw":500,"sh":600,"sc":"#000000","ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"darkblue","parent":10,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,64.663,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.615,"y":1},"o":{"x":0.112,"y":1},"n":"0p615_1_0p112_1","t":4.257,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[116.264,38.687],[-127.514,72.687],[-136.922,102.313],[-103.324,102.313],[-84.081,102.313],[42.391,102.313],[90.931,102.313],[136.922,102.313]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[62.264,-102.313],[-63.514,-102.313],[-136.922,102.313],[-103.324,102.313],[-84.081,102.313],[42.391,102.313],[90.931,102.313],[136.922,102.313]],"c":true}]},{"t":18.099609375}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":1,"nm":"mask lightblue","parent":17,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,100,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"ef":[{"ty":21,"nm":"Fill","mn":"ADBE Fill","ix":1,"ef":[{"ty":3,"nm":"Fill Mask","mn":"ADBE Fill-0001","ix":1,"v":{"k":0}},{"ty":7,"nm":"All Masks","mn":"ADBE Fill-0007","ix":2,"v":{"k":0}},{"ty":2,"nm":"Color","mn":"ADBE Fill-0002","ix":3,"v":{"k":[0,0,0.01,1]}},{"ty":7,"nm":"Invert","mn":"ADBE Fill-0006","ix":4,"v":{"k":0}},{"ty":0,"nm":"Horizontal Feather","mn":"ADBE Fill-0003","ix":5,"v":{"k":0}},{"ty":0,"nm":"Vertical Feather","mn":"ADBE Fill-0004","ix":6,"v":{"k":0}},{"ty":0,"nm":"Opacity","mn":"ADBE Fill-0005","ix":7,"v":{"k":1}}]}],"sw":500,"sh":600,"sc":"#000000","ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"lightblue","parent":10,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,55.875,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.686,"y":1},"o":{"x":0.108,"y":1},"n":"0p686_1_0p108_1","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[104.851,19.399],[-112.209,39.899],[-136.922,111.101],[136.922,111.101]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.851,-111.101],[-57.209,-111.101],[-136.922,111.101],[136.922,111.101]],"c":true}]},{"t":5}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":20,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":1,"nm":"mask skin","parent":17,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,100,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"ef":[{"ty":21,"nm":"Fill","mn":"ADBE Fill","ix":1,"ef":[{"ty":3,"nm":"Fill Mask","mn":"ADBE Fill-0001","ix":1,"v":{"k":0}},{"ty":7,"nm":"All Masks","mn":"ADBE Fill-0007","ix":2,"v":{"k":0}},{"ty":2,"nm":"Color","mn":"ADBE Fill-0002","ix":3,"v":{"k":[0,0,0.01,1]}},{"ty":7,"nm":"Invert","mn":"ADBE Fill-0006","ix":4,"v":{"k":0}},{"ty":0,"nm":"Horizontal Feather","mn":"ADBE Fill-0003","ix":5,"v":{"k":0}},{"ty":0,"nm":"Vertical Feather","mn":"ADBE Fill-0004","ix":6,"v":{"k":0}},{"ty":0,"nm":"Opacity","mn":"ADBE Fill-0005","ix":7,"v":{"k":1}}]}],"sw":500,"sh":600,"sc":"#000000","ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"skin","parent":17,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"n":"0_1_0_0","t":1,"s":[250,469,0],"e":[250,177.524,0],"to":[0,-122.367813110352,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15.4,"s":[250,177.524,0],"e":[250,234.269,0],"to":[0,0,0],"ti":[0,-22.1301918029785,0]},{"t":19}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.078,-166.976],[-17.119,-166.976],[-136.922,166.976],[136.922,166.976]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"left arm ","parent":10,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-93,-85.163,0]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":1,"y":1},"o":{"x":0.167,"y":0.167},"n":"1_1_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0]],"o":[[11.299,13.7],[0,0]],"v":[[-36.299,42.462],[-43.468,67.538]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[19.926,-2.45],[0,0]],"v":[[-36.299,42.462],[-2.82,20.313]],"c":false}]},{"i":{"x":0.833,"y":0.815},"o":{"x":0.18,"y":1},"n":"0p833_0p815_0p18_1","t":5,"s":[{"i":[[0,0],[0,0]],"o":[[19.926,-2.45],[0,0]],"v":[[-36.299,42.462],[-2.82,20.313]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[68.529,-28.784],[0,0]],"v":[[-36.299,42.462],[53.207,-43.838]],"c":false}]},{"i":{"x":0.547,"y":0},"o":{"x":0.167,"y":0.185},"n":"0p547_0_0p167_0p185","t":6.4,"s":[{"i":[[0,0],[0,0]],"o":[[68.529,-28.784],[0,0]],"v":[[-36.299,42.462],[53.207,-43.838]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[55.222,-34.123],[0,0]],"v":[[-36.299,42.462],[9.015,-58.738]],"c":false}]},{"i":{"x":0.8,"y":0.778},"o":{"x":0.453,"y":1},"n":"0p8_0p778_0p453_1","t":8.2,"s":[{"i":[[0,0],[0,0]],"o":[[55.222,-34.123],[0,0]],"v":[[-36.299,42.462],[9.015,-58.738]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[85.988,-8.836],[0,0]],"v":[[-36.299,42.462],[58.474,-42.979]],"c":false}]},{"i":{"x":0.8,"y":0.778},"o":{"x":0.519,"y":0},"n":"0p8_0p778_0p519_0","t":10,"s":[{"i":[[0,0],[0,0]],"o":[[85.988,-8.836],[0,0]],"v":[[-36.299,42.462],[58.474,-42.979]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[71.296,-41.974],[0,0]],"v":[[-36.299,42.462],[15.755,-73.378]],"c":false}]},{"i":{"x":0.547,"y":0},"o":{"x":0.514,"y":0},"n":"0p547_0_0p514_0","t":11.8,"s":[{"i":[[0,0],[0,0]],"o":[[71.296,-41.974],[0,0]],"v":[[-36.299,42.462],[15.755,-73.378]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[72.379,-50.965],[0,0]],"v":[[-36.299,42.462],[86.466,25.36]],"c":false}]},{"i":{"x":0.443,"y":0.381},"o":{"x":0.167,"y":0.368},"n":"0p443_0p381_0p167_0p368","t":17.2,"s":[{"i":[[0,0],[0,0]],"o":[[72.379,-50.965],[0,0]],"v":[[-36.299,42.462],[86.466,25.36]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[56.859,4.894],[0,0]],"v":[[-36.299,42.462],[11.877,128.595]],"c":false}]},{"t":19}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":20},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":-0.533,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"right arm","parent":10,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[92,-85.163,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":1,"y":1},"o":{"x":0.167,"y":0.167},"n":"1_1_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0]],"o":[[11.299,13.7],[0,0]],"v":[[-36.299,42.462],[-43.468,67.538]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[19.926,-2.45],[0,0]],"v":[[-36.299,42.462],[-2.82,20.313]],"c":false}]},{"i":{"x":0.833,"y":0.815},"o":{"x":0.18,"y":1},"n":"0p833_0p815_0p18_1","t":5,"s":[{"i":[[0,0],[0,0]],"o":[[19.926,-2.45],[0,0]],"v":[[-36.299,42.462],[-2.82,20.313]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[68.529,-28.784],[0,0]],"v":[[-36.299,42.462],[53.207,-43.838]],"c":false}]},{"i":{"x":0.547,"y":0},"o":{"x":0.167,"y":0.185},"n":"0p547_0_0p167_0p185","t":6.4,"s":[{"i":[[0,0],[0,0]],"o":[[68.529,-28.784],[0,0]],"v":[[-36.299,42.462],[53.207,-43.838]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[55.222,-34.123],[0,0]],"v":[[-36.299,42.462],[9.015,-58.738]],"c":false}]},{"i":{"x":0.8,"y":0.778},"o":{"x":0.453,"y":1},"n":"0p8_0p778_0p453_1","t":8.2,"s":[{"i":[[0,0],[0,0]],"o":[[55.222,-34.123],[0,0]],"v":[[-36.299,42.462],[9.015,-58.738]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[85.988,-8.836],[0,0]],"v":[[-36.299,42.462],[58.474,-42.979]],"c":false}]},{"i":{"x":0.8,"y":0.778},"o":{"x":0.519,"y":0},"n":"0p8_0p778_0p519_0","t":10,"s":[{"i":[[0,0],[0,0]],"o":[[85.988,-8.836],[0,0]],"v":[[-36.299,42.462],[58.474,-42.979]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[71.296,-41.974],[0,0]],"v":[[-36.299,42.462],[15.755,-73.378]],"c":false}]},{"i":{"x":0.547,"y":0},"o":{"x":0.514,"y":0},"n":"0p547_0_0p514_0","t":11.8,"s":[{"i":[[0,0],[0,0]],"o":[[71.296,-41.974],[0,0]],"v":[[-36.299,42.462],[15.755,-73.378]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[72.379,-50.965],[0,0]],"v":[[-36.299,42.462],[86.466,25.36]],"c":false}]},{"i":{"x":0.443,"y":0.381},"o":{"x":0.167,"y":0.368},"n":"0p443_0p381_0p167_0p368","t":17.2,"s":[{"i":[[0,0],[0,0]],"o":[[72.379,-50.965],[0,0]],"v":[[-36.299,42.462],[86.466,25.36]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[56.859,4.894],[0,0]],"v":[[-36.299,42.462],[11.877,128.595]],"c":false}]},{"t":19}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":20},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":-0.533,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"shadow","parent":17,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,246,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.416,0.416],"y":[1,1]},"o":{"x":[0.187,0.187],"y":[0.17,0.924]},"n":["0p416_1_0p187_0p17","0p416_1_0p187_0p924"],"t":5.5,"s":[14.338,2.637],"e":[72.797,13.391]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.767,0.767],"y":[0,0]},"n":["0p833_0p833_0p767_0","0p833_0p833_0p767_0"],"t":12.7,"s":[72.797,13.391],"e":[19.869,3.655]},{"t":18.099609375}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1.398,152.633],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[199.741,199.741],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":6,"op":20,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"A Outlines 3","parent":17,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":-22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[66.258,-44],[66.184,-83.343],[-70.187,-84.093],[-70.306,-44]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[66.258,-44],[21.299,-186.393],[-24.073,-187.042],[-70.306,-44]],"c":true}]},{"i":{"x":1,"y":1},"o":{"x":0.167,"y":0.167},"n":"1_1_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[66.258,-44],[21.299,-186.393],[-24.073,-187.042],[-70.306,-44]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[77.021,-18.988],[76.929,-58.331],[-80.995,-59.105],[-81.125,-19.012]],"c":true}]},{"i":{"x":0.8,"y":0.674},"o":{"x":0.123,"y":1},"n":"0p8_0p674_0p123_1","t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[77.021,-18.988],[76.929,-58.331],[-80.995,-59.105],[-81.125,-19.012]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[66.258,-44],[66.184,-83.343],[-70.187,-84.093],[-70.306,-44]],"c":true}]},{"t":25}]},"nm":" "},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":-0.064,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"A"}],"ip":20,"op":26,"st":-22,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"A Outlines 2","parent":17,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":1,"y":1},"o":{"x":0.167,"y":0.167},"n":"1_1_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.441,-226.593],[-25.687,-226.593],[-108.831,-0.095],[-57.067,-0.095]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.427,-204.577],[-27.702,-204.577],[-134.011,-0.189],[-82.246,-0.189]],"c":true}]},{"i":{"x":0.8,"y":0.674},"o":{"x":0.123,"y":1},"n":"0p8_0p674_0p123_1","t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.427,-204.577],[-27.702,-204.577],[-134.011,-0.189],[-82.246,-0.189]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.441,-226.593],[-25.687,-226.593],[-108.831,-0.095],[-57.067,-0.095]],"c":true}]},{"t":25}]},"nm":"A"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[99.286,99.925],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"A"}],"ip":20,"op":26,"st":-13,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"A Outlines 1","parent":17,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":1,"y":1},"o":{"x":0.167,"y":0.167},"n":"1_1_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[57.6,0.453],[108.805,0.453],[26.544,-226.327],[-15.984,-226.327]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.6,0.906],[125.805,0.906],[26.559,-203.327],[-15.969,-203.327]],"c":true}]},{"i":{"x":0.8,"y":0.674},"o":{"x":0.123,"y":1},"n":"0p8_0p674_0p123_1","t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.6,0.906],[125.805,0.906],[26.559,-203.327],[-15.969,-203.327]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[57.6,0.453],[108.805,0.453],[26.544,-226.327],[-15.984,-226.327]],"c":true}]},{"t":25}]},"nm":"A"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0.441,-0.604],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"A"}],"ip":20,"op":26,"st":-8,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":1,"nm":"ResizerTemp","parent":18,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[70,102,0]},"a":{"k":[250,300,0]},"s":{"k":[30,30,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":26,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":1,"nm":"White Solid 7","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[70,100,0]},"s":{"k":[57.143,50,100]}},"ao":0,"sw":140,"sh":200,"sc":"#ffffff","ip":0,"op":26,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":26,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/Apostrophe.json b/example/shared/src/commonMain/composeResources/files/mobilo/Apostrophe.json new file mode 100644 index 00000000..a4fb10af --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/Apostrophe.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":1,"ty":1,"nm":"Auto-traced Eye_Pop_Sequence","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"t":16,"s":[{"i":[[3.126,-0.619],[1.47299999999998,-1.56062499999999],[2.56100000000001,-1.45099999999999],[1.186125,-0.24025],[1.18049999999999,-0.43000000000001],[1.39425,-0.88487499999999],[0.458,-0.74450000000002],[0.365375,-0.28749999999999],[0.2475,-0.37700000000001],[-0.48987500000001,-3.25375],[-1.78749999999999,-1.32550000000001],[-2.49137500000001,-0.0855],[-1.5215,-0.536],[-3.068625,-2.75312500000001],[-2.94100000000003,-0.006],[-1.307,4.48],[-0.86,5.11],[0.566,4.328],[3.008,3.312],[0.766,0.933]],"o":[[-1.547,0.3065],[-1.47299999999998,1.56062499999999],[-1.07499999999999,0.60899999999998],[-1.186125,0.24025],[-1.965,0.71600000000001],[-1.39425,0.88487499999999],[-0.291,0.47300000000001],[-0.365375,0.28749999999999],[-1.74700000000001,2.65949999999998],[0.48987499999998,3.25375000000003],[1.51300000000001,1.12200000000001],[2.49137500000001,0.0855],[2.78449999999998,0.98149999999998],[3.068625,2.75312500000001],[3.635,0.007],[1.216,-4.168],[0.809,-4.805],[-0.453,-3.462],[-1.653,-1.82],[-2.95,-3.591]],"v":[[253,160],[248.7605,163.141625],[243,168],[239.579125,169.13425],[236,170],[230.86975,172.478625],[228,175],[226.967375,176.072],[226,177],[224.349125,186.5005],[228,194],[234.493625,195.4395],[241,196],[249.882625,202.731625],[259,208],[269,201],[268,187],[272,177],[263,167],[260,162]],"c":true}],"h":1},{"t":17,"s":[{"i":[[1.283,3.793],[-0.274,0.704],[1.697,1.807],[0.809,1.144],[0.49,0.737],[2.123,1.212],[2.055,-2.779],[0.953,-1.173],[-2.529,-5.178],[-1.49,0.233],[-3.585,-0.657],[-1.147,-1.578],[-2.281,-2.544],[1.333,0],[1.044,-5.711],[1.763,-2.17],[-0.048,-0.076],[-3.001,1.203],[-0.858,4.008],[0.387,1.202]],"o":[[4.294,0.127],[2.998,-7.701],[-1.407,-1.498],[-0.399,-0.564],[-0.982,-1.479],[-4.372,-2.495],[-0.544,0.736],[-5.072,6.24],[0.718,1.471],[4.626,-0.722],[4.165,0.763],[1.589,2.187],[-1.333,0],[-1.223,5.89],[-2.87,0.228],[-1.23,1.513],[1.303,2.034],[1.725,-0.691],[0.616,-2.877],[-0.933,-2.894]],"v":[[269,184],[274,181],[270,168],[268,164],[266,163],[261,153],[248,155],[246,160],[237,174],[246,177],[254,171],[259,180],[264,184],[260,184],[265,193],[258,195],[256,210],[266,211],[274,200],[274,190]],"c":true}],"h":1},{"t":18,"s":[{"i":[[5.87350000000004,-1.762],[1.12709375,-0.856859375],[0.88387499999999,-1.06518750000001],[0.68984374999999,-1.05073437499999],[0.54500000000002,-0.81349999999998],[0.77964062500001,-1.05476562499999],[0.61781250000001,-1.18631250000001],[0.02926562499999,-1.16339062500001],[-0.98599999999999,-0.98599999999999],[-0.77281250000001,-0.134609375],[-0.73724999999999,0.2733125],[-0.72081249999999,0.39626562499998],[-0.7235,0.23425],[-1.58574999999999,0.67350000000002],[-2.078,-0.2055],[-2.65062500000005,-2.03525000000002],[-2.28149999999999,1.35050000000001],[0.6825,3.53099999999998],[1.49400000000003,1.55950000000001],[1.99687499999999,2.121375]],"o":[[-1.4195,0.42574999999999],[-1.12709375,0.856859375],[-0.88387500000002,1.06518750000001],[-0.68984374999999,1.05073437499999],[-0.51474999999999,0.76875000000001],[-0.77964062499998,1.05476562499999],[-0.61781250000001,1.18631249999999],[-0.02926562499999,1.16339062500001],[0.82749999999999,0.82749999999999],[0.77281250000001,0.134609375],[0.73725000000002,-0.2733125],[0.72081249999999,-0.39626562500001],[1.57900000000001,-0.51150000000001],[1.58575000000002,-0.67349999999999],[2.11599999999999,0.20949999999999],[2.65062499999999,2.03524999999999],[2.22399999999999,-1.31650000000002],[-0.6825,-3.53100000000001],[-3.13900000000001,-3.2765],[-1.99687499999999,-2.121375]],"v":[[252,142],[248.19240625,143.979609375],[245.18825,146.918375],[242.83996875,150.147953125],[241,153],[238.951734375,155.773890625],[236.748875,159.174125],[235.671578125,162.737296875],[237,166],[239.3956875,167.371921875],[241.656,167.092625],[243.8383125,166.017015625],[246,165],[250.62575,162.96225],[256,162],[263.375875,166.67],[271,169],[272.7885,160.68225],[269,152],[262.550875,143.221125]],"c":true}],"h":1},{"t":19,"s":[{"i":[[5.87350000000004,-1.762],[1.12709375,-0.856859375],[0.88387499999999,-1.06518750000001],[0.68984374999999,-1.05073437499999],[0.54500000000002,-0.81349999999998],[0.77964062500001,-1.05476562499999],[0.61781250000001,-1.18631250000001],[0.02926562499999,-1.16339062500001],[-0.98599999999999,-0.98599999999999],[-0.77281250000001,-0.134609375],[-0.73724999999999,0.2733125],[-0.72081249999999,0.39626562499998],[-0.7235,0.23425],[-1.58574999999999,0.67350000000002],[-2.078,-0.2055],[-2.65062500000005,-2.03525000000002],[-2.28149999999999,1.35050000000001],[0.6825,3.53099999999998],[1.49400000000003,1.55950000000001],[1.99687499999999,2.121375]],"o":[[-1.4195,0.42574999999999],[-1.12709375,0.856859375],[-0.88387500000002,1.06518750000001],[-0.68984374999999,1.05073437499999],[-0.51474999999999,0.76875000000001],[-0.77964062499998,1.05476562499999],[-0.61781250000001,1.18631249999999],[-0.02926562499999,1.16339062500001],[0.82749999999999,0.82749999999999],[0.77281250000001,0.134609375],[0.73725000000002,-0.2733125],[0.72081249999999,-0.39626562500001],[1.57900000000001,-0.51150000000001],[1.58575000000002,-0.67349999999999],[2.11599999999999,0.20949999999999],[2.65062499999999,2.03524999999999],[2.22399999999999,-1.31650000000002],[-0.6825,-3.53100000000001],[-3.13900000000001,-3.2765],[-1.99687499999999,-2.121375]],"v":[[252,142],[248.19240625,143.979609375],[245.18825,146.918375],[242.83996875,150.147953125],[241,153],[238.951734375,155.773890625],[236.748875,159.174125],[235.671578125,162.737296875],[237,166],[239.3956875,167.371921875],[241.656,167.092625],[243.8383125,166.017015625],[246,165],[250.62575,162.96225],[256,162],[263.375875,166.67],[271,169],[272.7885,160.68225],[269,152],[262.550875,143.221125]],"c":true}],"h":1},{"t":20,"s":[{"i":[[-4.286,1.74349999999998],[0.43314062500002,0.96962500000001],[0.55281250000002,0.82599999999999],[0.59326562500002,0.693375],[0.55449999999996,0.57175000000001],[0.64443749999998,0.64264062500001],[0.80925000000002,0.60131250000001],[1.01018750000003,0.40801562500002],[1.24725000000001,0.06274999999999],[1.34435937500001,-0.46793750000001],[1.11318749999998,-0.86025000000001],[1.08723437500001,-1.0871875],[1.26650000000001,-1.14875000000001],[1.007671875,-0.68853125000001],[0.93543750000001,-0.85062500000001],[0.33504687499999,-0.98678125000001],[-0.79349999999999,-1.09699999999998],[-4.012125,2.49474999999998],[-2.679,0.16249999999999],[-1.95350000000002,-1.51012500000002]],"o":[[-0.23424999999997,-1.12425000000002],[-0.43314062500002,-0.96962500000001],[-0.55281249999996,-0.82599999999999],[-0.59326562500002,-0.69337499999997],[-0.51575000000003,-0.53199999999998],[-0.64443749999998,-0.64264062499998],[-0.80924999999996,-0.60131250000001],[-1.01018749999997,-0.40801562499999],[-1.78075000000001,-0.08975000000001],[-1.34435937500001,0.46793750000001],[-1.11318750000001,0.86024999999998],[-1.08723437499998,1.0871875],[-0.55175,0.50049999999999],[-1.007671875,0.68853125000001],[-0.93543750000001,0.85062499999998],[-0.33504687499999,0.98678125000001],[2.27249999999998,3.14150000000001],[4.012125,-2.49475000000001],[4.89999999999998,-0.297],[1.95349999999996,1.51012499999999]],"v":[[273,153],[271.979109375,149.8619375],[270.480375,147.17125],[268.741453125,144.8949375],[267,143],[265.26875,141.200046875],[263.09725,139.296125],[260.377125,137.744140625],[257,137],[252.363640625,137.608625],[248.728625,139.64225],[245.479296875,142.60475],[242,146],[239.528828125,147.79003125],[236.482125,150.10525],[234.444359375,152.86784375],[235,156],[245.195125,154.978],[256,149],[264.9605,152.084875]],"c":true}],"h":1},{"t":21,"s":[{"i":[[-4.286,1.74349999999998],[0.43314062500002,0.96962500000001],[0.55281250000002,0.82599999999999],[0.59326562500002,0.693375],[0.55449999999996,0.57175000000001],[0.64443749999998,0.64264062500001],[0.80925000000002,0.60131250000001],[1.01018750000003,0.40801562500002],[1.24725000000001,0.06274999999999],[1.34435937500001,-0.46793750000001],[1.11318749999998,-0.86025000000001],[1.08723437500001,-1.0871875],[1.26650000000001,-1.14875000000001],[1.007671875,-0.68853125000001],[0.93543750000001,-0.85062500000001],[0.33504687499999,-0.98678125000001],[-0.79349999999999,-1.09699999999998],[-4.012125,2.49474999999998],[-2.679,0.16249999999999],[-1.95350000000002,-1.51012500000002]],"o":[[-0.23424999999997,-1.12425000000002],[-0.43314062500002,-0.96962500000001],[-0.55281249999996,-0.82599999999999],[-0.59326562500002,-0.69337499999997],[-0.51575000000003,-0.53199999999998],[-0.64443749999998,-0.64264062499998],[-0.80924999999996,-0.60131250000001],[-1.01018749999997,-0.40801562499999],[-1.78075000000001,-0.08975000000001],[-1.34435937500001,0.46793750000001],[-1.11318750000001,0.86024999999998],[-1.08723437499998,1.0871875],[-0.55175,0.50049999999999],[-1.007671875,0.68853125000001],[-0.93543750000001,0.85062499999998],[-0.33504687499999,0.98678125000001],[2.27249999999998,3.14150000000001],[4.012125,-2.49475000000001],[4.89999999999998,-0.297],[1.95349999999996,1.51012499999999]],"v":[[273,153],[271.979109375,149.8619375],[270.480375,147.17125],[268.741453125,144.8949375],[267,143],[265.26875,141.200046875],[263.09725,139.296125],[260.377125,137.744140625],[257,137],[252.363640625,137.608625],[248.728625,139.64225],[245.479296875,142.60475],[242,146],[239.528828125,147.79003125],[236.482125,150.10525],[234.444359375,152.86784375],[235,156],[245.195125,154.978],[256,149],[264.9605,152.084875]],"c":true}],"h":1},{"t":22,"s":[{"i":[[-1.05325000000005,0.32900000000001],[0.206484375,1.00762499999999],[0.54618749999997,0.93700000000001],[0.81660937499998,0.71087499999999],[1.01774999999998,0.32925],[1.32604687500003,0.03528125],[1.33193750000001,-0.144375],[0.96492187499999,-0.23246875000001],[0.22500000000002,-0.22899999999998],[0.1940625,-0.74115624999999],[0.10475,-0.890625],[-0.01668749999999,-0.70415624999998],[-0.17025000000001,-0.18175000000002],[-0.86465625,0.032234375],[-1.083125,0.24518749999999],[-1.05190625,0.21535937500002],[-0.77100000000002,-0.05725000000001],[-0.72296875000001,-0.30578125],[-0.58387499999998,-0.31162499999999],[-0.69396875000001,-0.10003125]],"o":[[0.20249999999999,-0.92275000000001],[-0.206484375,-1.00762499999999],[-0.54618749999997,-0.93699999999998],[-0.81660937500004,-0.71087499999999],[-0.94725,-0.3065],[-1.326046875,-0.03528125],[-1.33193750000001,0.144375],[-0.96492187499999,0.23246875000001],[-0.25125,0.25575000000001],[-0.1940625,0.74115624999999],[-0.10475,0.890625],[0.01668750000002,0.70415625000001],[0.3965,0.42349999999999],[0.86465625,-0.032234375],[1.083125,-0.24518749999999],[1.05190625,-0.21535937500002],[1.11124999999998,0.08250000000001],[0.72296875000001,0.30578125],[0.58387499999998,0.31162500000002],[0.69396875000001,0.10003125]],"v":[[266,141],[265.976703125,138.0655625],[264.830375,135.10975],[262.768859375,132.5990625],[260,131],[256.496828125,130.51021875],[252.416625,130.69675],[248.878109375,131.28490625],[247,132],[246.324,133.57934375],[245.86775,136.111],[245.727625,138.58715625],[246,140],[247.95415625,140.526203125],[250.93825,140.049375],[254.20321875,139.297859375],[257,139],[259.68903125,139.63678125],[261.587,140.61725],[263.44146875,141.28909375]],"c":true}],"h":1},{"t":23,"s":[{"i":[[-0.19150000000002,0.88774999999998],[0.65584179687499,0.32445703125001],[0.80942968749997,0.158078125],[0.87626367187499,-0.00688671875],[0.85634375000001,-0.17043750000001],[0.74966992187501,-0.33257421875],[0.5562421875,-0.49329687499998],[0.27606054687499,-0.65260546875001],[-0.09087499999998,-0.81049999999999],[-0.22809765624999,0.04632421874999],[-0.225703125,0.075734375],[-0.22844140625,0.09610546875001],[-0.2363125,0.1074375],[-0.24931640624999,0.10973046875],[-0.267453125,0.10298437500001],[-0.29072265625001,0.08719921874999],[-0.31912499999999,0.06237499999997],[-0.93901562500002,-0.05959375],[-0.87031250000001,-0.01237499999999],[-0.62114062500001,0.30340625000002]],"o":[[-0.41550000000001,-0.49225],[-0.65584179687499,-0.32445703124999],[-0.80942968750003,-0.158078125],[-0.87626367187499,0.00688671875],[-0.85634375000001,0.17043750000001],[-0.74966992187498,0.33257421875],[-0.55624218749998,0.493296875],[-0.27606054687502,0.65260546875001],[0.235625,-0.00787500000001],[0.22809765625001,-0.04632421874999],[0.225703125,-0.075734375],[0.22844140625,-0.09610546875001],[0.2363125,-0.1074375],[0.24931640625002,-0.10973046875],[0.267453125,-0.10298437500001],[0.29072265625001,-0.08719921875002],[0.82724999999999,-0.16174999999998],[0.93901562500002,0.05959375],[0.87031250000001,0.01237499999999],[0.62114062499995,-0.30340625000002]],"v":[[263,128],[261.371298828125,126.77529296875],[259.151703125,126.05184375],[256.601474609375,125.82541015625],[253.980875,126.09175],[251.550166015625,126.84662109375],[249.569609375,128.08578125],[248.299466796875,129.80498828125],[248,132],[248.69430078125,131.91644140625],[249.37371875,131.73109375],[250.05365234375,131.47107421875],[250.7495,131.1635],[251.47666015625,130.83548828125],[252.25053125,130.51415625],[253.08651171875,130.22662109375],[254,130],[256.694515625,129.91390625],[259.453625,130.089],[261.735921875,129.71959375]],"c":true}],"h":1},{"t":24,"s":[{"i":[[-0.15549999999996,0.36087499999999],[0.29394386574074,0.12260648148148],[0.34391435185188,0.09509259259259],[0.37899479166668,0.06504166666666],[0.39918518518519,0.03245370370371],[0.40448553240742,-0.0026712962963],[0.39489583333332,-0.04033333333334],[0.37041608796295,-0.0805324074074],[0.33104629629631,-0.12326851851851],[0.27678645833333,-0.16854166666667],[0.20763657407409,-0.21635185185185],[0.12359664351851,-0.26669907407407],[0.02466666666669,-0.31958333333333],[-0.392310546875,-0.07487499999999],[-0.50924218750001,-0.0383125],[-0.575919921875,0.0068125],[-0.59234375,0.0605],[-0.55851367187501,0.12275],[-0.47442968749999,0.1935625],[-0.34009179687502,0.2729375]],"o":[[-0.22908333333334,-0.14758333333333],[-0.29394386574074,-0.12260648148148],[-0.34391435185182,-0.09509259259259],[-0.37899479166666,-0.06504166666667],[-0.39918518518519,-0.03245370370369],[-0.40448553240739,0.0026712962963],[-0.39489583333332,0.04033333333334],[-0.37041608796298,0.0805324074074],[-0.33104629629628,0.12326851851851],[-0.27678645833333,0.16854166666666],[-0.20763657407409,0.21635185185184],[-0.12359664351851,0.26669907407407],[0.22512499999999,0.102875],[0.392310546875,0.07487500000001],[0.50924218750001,0.0383125],[0.575919921875,-0.0068125],[0.59234375,-0.0605],[0.55851367187503,-0.12275],[0.47442968749999,-0.1935625],[0.34009179687502,-0.27293750000001]],"v":[[259,121],[258.211736689815,120.594081018519],[257.251226851852,120.266898148148],[256.163140625,120.0260625],[254.992148148148,119.879185185185],[253.782919560185,119.833877314815],[252.580125,119.89775],[251.428434606482,120.078414351852],[250.372518518519,120.383481481481],[249.457046875,120.8205625],[248.726689814815,121.397268518519],[248.226117476852,122.121210648148],[248,123],[248.938716796875,123.268765625],[250.303609375,123.4406875],[251.943916015625,123.490078125],[253.708875,123.39125],[255.447724609375,123.118515625],[257.009703125,122.6461875],[258.244048828125,121.948578125]],"c":true}],"h":1}]},"o":{"k":[{"t":15,"s":[0],"h":1},{"t":16,"s":[100],"h":1},{"t":25,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 1"},{"inv":false,"mode":"f","pt":{"k":[{"t":17,"s":[{"i":[[-2.318,2.155],[0.57,3.078],[0.66,0.887],[3.451,-1.355],[1.444,-3.314],[0.553,-1.313],[-5.31,2.052],[-1.928,0.526]],"o":[[1.471,-2.681],[-0.209,-1.13],[-1.944,-2.609],[-2.812,1.104],[-0.673,1.544],[-2.939,6.976],[2.082,-0.805],[2.212,-0.603]],"v":[[237,183],[235,174],[235,169],[225,166],[221,176],[218,180],[225,187],[230,183]],"c":true}],"h":1},{"t":18,"s":[{"i":[[2.419,-0.76],[0.45925,-2.03937500000001],[0.51749999999998,-4.69749999999999],[0.54075,-1.28562500000001],[-1.46949999999998,-1.0735],[-0.444,0.336],[-0.727,2.434],[1.217,0.66]],"o":[[-3.6455,1.14499999999998],[-0.45925,2.03937500000001],[-0.3065,2.78399999999999],[-0.54075,1.28562500000001],[4.355,3.182],[2.744,-2.075],[1.126,-3.769],[-2.426,-1.316]],"v":[[218,167],[212.654,171.335625],[212,181],[210.168,186.782875],[211,190],[220,185],[228,179],[225,166]],"c":true}],"h":1},{"t":19,"s":[{"i":[[2.419,-0.76],[0.45925,-2.03937500000001],[0.51749999999998,-4.69749999999999],[0.54075,-1.28562500000001],[-1.46949999999998,-1.0735],[-0.444,0.336],[-0.727,2.434],[1.217,0.66]],"o":[[-3.6455,1.14499999999998],[-0.45925,2.03937500000001],[-0.3065,2.78399999999999],[-0.54075,1.28562500000001],[4.355,3.182],[2.744,-2.075],[1.126,-3.769],[-2.426,-1.316]],"v":[[218,167],[212.654,171.335625],[212,181],[210.168,186.782875],[211,190],[220,185],[228,179],[225,166]],"c":true}],"h":1},{"t":20,"s":[{"i":[[-0.72974999999997,0.35149999999999],[0.88492187500003,0.62367187499999],[1.28043750000001,0.2059375],[1.25529687499997,-0.14570312499998],[0.80950000000001,-0.43124999999998],[-0.84370312499999,-0.66484374999999],[-1.38856249999998,-0.09787500000002],[-1.35057812500003,0.24090624999999]],"o":[[-0.06875000000002,-1.10750000000002],[-0.88492187499997,-0.62367187499999],[-1.28043750000001,-0.20593749999998],[-1.255296875,0.14570312500001],[-0.28399999999999,1.46000000000001],[0.84370312499999,0.66484375000002],[1.38856250000001,0.09787500000002],[1.35057812500003,-0.24090625000002]],"v":[[263,158],[261.464328125,155.419765625],[258.111125,154.191875],[254.202359375,154.118046875],[251,155],[251.985265625,158.13021875],[255.479375,159.21725],[259.733796875,158.94565625]],"c":true}],"h":1},{"t":21,"s":[{"i":[[-0.72974999999997,0.35149999999999],[0.88492187500003,0.62367187499999],[1.28043750000001,0.2059375],[1.25529687499997,-0.14570312499998],[0.80950000000001,-0.43124999999998],[-0.84370312499999,-0.66484374999999],[-1.38856249999998,-0.09787500000002],[-1.35057812500003,0.24090624999999]],"o":[[-0.06875000000002,-1.10750000000002],[-0.88492187499997,-0.62367187499999],[-1.28043750000001,-0.20593749999998],[-1.255296875,0.14570312500001],[-0.28399999999999,1.46000000000001],[0.84370312499999,0.66484375000002],[1.38856250000001,0.09787500000002],[1.35057812500003,-0.24090625000002]],"v":[[263,158],[261.464328125,155.419765625],[258.111125,154.191875],[254.202359375,154.118046875],[251,155],[251.985265625,158.13021875],[255.479375,159.21725],[259.733796875,158.94565625]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0.43799999999999,-0.43799999999999],[-0.481875,-1.018125],[-1.40299999999999,-0.59700000000001],[-1.46962500000001,-0.03037499999999],[-0.68175000000002,0.68175000000002],[-0.094875,1.297875],[0.46699999999998,0.721],[2.14949999999999,-0.26249999999999]],"o":[[-1.29374999999999,1.29374999999999],[0.481875,1.018125],[1.40299999999999,0.59700000000001],[1.46962500000001,0.03037499999999],[0.08750000000001,-0.08750000000001],[0.09487499999997,-1.29787499999998],[-0.964,-1.488],[-2.14950000000002,0.26250000000002]],"v":[[235,139],[233.9958125,142.5041875],[237.03675,144.96325],[241.5593125,145.9406875],[245,145],[245.415875,142.475125],[245,139],[239.6055,137.5555]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.50125,-0.458],[-0.42682812499999,-0.6218125],[-1.3190625,-0.11975000000001],[-1.232703125,0.1869375],[-0.16775000000001,0.29825],[0.49867187500001,0.59270312499999],[1.00093749999999,0.2650625],[1.001796875,-0.08517187500001]],"o":[[-1.44400000000002,1.31925000000001],[0.42682812500001,0.6218125],[1.3190625,0.11974999999998],[1.232703125,-0.1869375],[0.505,-0.89775],[-0.49867187499999,-0.59270312500001],[-1.00093749999999,-0.2650625],[-1.001796875,0.08517187500001]],"v":[[236,134],[234.718890625,136.86275],[237.582375,137.92625],[241.654671875,137.776625],[244,137],[243.884140625,134.758671875],[241.509375,133.466375],[238.379921875,133.190890625]],"c":true}],"h":1},{"t":24,"s":[{"i":[[-0.19375000000002,0.97612500000002],[0.721650390625,-0.10441796875],[0.29447656249999,-0.272859375],[-0.03389648437499,-0.33369921875001],[-0.26346874999999,-0.28693749999999],[-0.39424023437499,-0.13257421874999],[-0.4262109375,0.12939062499998],[-0.35938085937502,0.49895703125]],"o":[[-1.247625,-0.17162500000001],[-0.721650390625,0.10441796875],[-0.29447656249999,0.272859375],[0.03389648437499,0.33369921875001],[0.26346875000002,0.28693749999999],[0.39424023437502,0.13257421874999],[0.4262109375,-0.12939062499998],[0.35938085937499,-0.49895703125]],"v":[[238,129],[235.070787109375,128.92608984375],[233.571296875,129.51890625],[233.205126953125,130.45564453125],[233.675875,131.4135],[234.687138671875,132.06966796875],[235.942515625,132.10134375],[237.145603515625,131.18572265625]],"c":true}],"h":1}]},"o":{"k":[{"t":16,"s":[0],"h":1},{"t":17,"s":[100],"h":1},{"t":25,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 2"},{"inv":false,"mode":"f","pt":{"k":[{"t":17,"s":[{"i":[[1.875,-0.955],[-3.797,-5.248],[-4.882,-2.158],[-1.281,-1.004],[-1.556,-0.863],[-0.515,-0.244],[-0.594,0.464],[0.999,3.308],[0.171,0.228],[0.795,0.795],[8.028,1.567]],"o":[[-0.669,0.341],[1.96,2.709],[1.703,0.753],[1.433,1.124],[0.43,0.238],[2.071,0.981],[1.675,-1.307],[-0.049,-0.161],[-0.715,-0.954],[-4.368,-4.368],[-3.973,-0.776]],"v":[[227,186],[225,196],[238,199],[241,202],[245,204],[246,206],[254,207],[255,196],[253,195],[252,192],[235,188]],"c":true}],"h":1},{"t":18,"s":[{"i":[[4.993,-4.993],[-1.30012499999998,-2.43350000000001],[0.12700000000001,-1.1925],[2.31299999999999,-1.78825000000001],[-1.57600000000002,-3.81100000000001],[-2.17450000000002,-0.21949999999998],[-0.66949999999997,0.4085],[-0.39624999999995,1.46437499999999],[-0.67599999999999,1.69150000000002],[-0.57187499999998,1.254875],[-0.03899999999999,1.29500000000002]],"o":[[-2.07349999999997,2.0735],[1.30012499999998,2.43349999999998],[-0.32400000000001,3.036],[-2.31300000000005,1.78825000000001],[0.63249999999999,1.53050000000002],[2.17450000000002,0.21950000000001],[0.73900000000003,-0.45099999999999],[0.39625000000001,-1.46437499999999],[0.67349999999999,-1.68549999999999],[0.57187500000003,-1.254875],[0.207,-6.845]],"v":[[273,184],[273.040125,191.16075],[276,197],[270.575,203.41875],[268,211],[272.97225,213.45425],[278,213],[279.54725,209.930375],[281,205],[282.975875,200.707125],[284,197]],"c":true}],"h":1},{"t":19,"s":[{"i":[[4.993,-4.993],[-1.30012499999998,-2.43350000000001],[0.12700000000001,-1.1925],[2.31299999999999,-1.78825000000001],[-1.57600000000002,-3.81100000000001],[-2.17450000000002,-0.21949999999998],[-0.66949999999997,0.4085],[-0.39624999999995,1.46437499999999],[-0.67599999999999,1.69150000000002],[-0.57187499999998,1.254875],[-0.03899999999999,1.29500000000002]],"o":[[-2.07349999999997,2.0735],[1.30012499999998,2.43349999999998],[-0.32400000000001,3.036],[-2.31300000000005,1.78825000000001],[0.63249999999999,1.53050000000002],[2.17450000000002,0.21950000000001],[0.73900000000003,-0.45099999999999],[0.39625000000001,-1.46437499999999],[0.67349999999999,-1.68549999999999],[0.57187500000003,-1.254875],[0.207,-6.845]],"v":[[273,184],[273.040125,191.16075],[276,197],[270.575,203.41875],[268,211],[272.97225,213.45425],[278,213],[279.54725,209.930375],[281,205],[282.975875,200.707125],[284,197]],"c":true}],"h":1},{"t":20,"s":[{"i":[[0.47000000000003,-0.42874999999998],[0.02079300291547,-0.56991253644316],[-0.48995043731776,-0.39497667638483],[-0.75294460641402,-0.18619241982509],[-0.7681895043732,0.05644023323617],[-0.53568513119535,0.33292128279885],[-0.05543148688048,0.64325072886297],[0.67257142857147,0.98742857142855],[0.46812499999999,0.21109375],[0.5625,0.00437500000001],[0.56312499999996,-0.20890625000001]],"o":[[-0.77928571428572,0.71100000000001],[-0.02079300291547,0.56991253644316],[0.48995043731782,0.39497667638483],[0.75294460641396,0.18619241982509],[0.7681895043732,-0.05644023323615],[0.53568513119529,-0.33292128279882],[0.05543148688048,-0.64325072886299],[-0.27999999999997,-0.41125],[-0.46812499999999,-0.21109375],[-0.56250000000006,-0.00437500000001],[-0.56312500000001,0.20890625000001]],"v":[[270,158],[268.861819241983,159.92983090379],[269.62749271137,161.385626822157],[271.553772594752,162.265842565598],[273.897411078717,162.468932944606],[275.915160349854,161.893352769679],[276.863772594752,160.437556851312],[276,158],[274.854375,157.06484375],[273.285,156.74],[271.573125,157.04515625]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0.47000000000003,-0.42874999999998],[0.02079300291547,-0.56991253644316],[-0.48995043731776,-0.39497667638483],[-0.75294460641402,-0.18619241982509],[-0.7681895043732,0.05644023323617],[-0.53568513119535,0.33292128279885],[-0.05543148688048,0.64325072886297],[0.67257142857147,0.98742857142855],[0.46812499999999,0.21109375],[0.5625,0.00437500000001],[0.56312499999996,-0.20890625000001]],"o":[[-0.77928571428572,0.71100000000001],[-0.02079300291547,0.56991253644316],[0.48995043731782,0.39497667638483],[0.75294460641396,0.18619241982509],[0.7681895043732,-0.05644023323615],[0.53568513119529,-0.33292128279882],[0.05543148688048,-0.64325072886299],[-0.27999999999997,-0.41125],[-0.46812499999999,-0.21109375],[-0.56250000000006,-0.00437500000001],[-0.56312500000001,0.20890625000001]],"v":[[270,158],[268.861819241983,159.92983090379],[269.62749271137,161.385626822157],[271.553772594752,162.265842565598],[273.897411078717,162.468932944606],[275.915160349854,161.893352769679],[276.863772594752,160.437556851312],[276,158],[274.854375,157.06484375],[273.285,156.74],[271.573125,157.04515625]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0.67500000000001,-0.60750000000002],[0.09067346938775,-0.47330320699709],[-0.31157142857143,-0.33686588921282],[-0.55316326530613,-0.1788309037901],[-0.63410204081632,0.00080174927115],[-0.55438775510206,0.20203206997084],[-0.31402040816326,0.42486005830906],[0.08699999999999,0.66928571428571],[0.36379687499999,0.37771874999999],[0.56493750000001,0.151375],[0.668671875,-0.17703125]],"o":[[-0.65357142857144,0.58814285714286],[-0.09067346938775,0.47330320699709],[0.31157142857143,0.33686588921282],[0.55316326530613,0.1788309037901],[0.63410204081632,-0.00080174927112],[0.55438775510206,-0.20203206997084],[0.31402040816326,-0.42486005830904],[-0.06524999999999,-0.50200000000001],[-0.36379687499999,-0.37771875000001],[-0.56493749999998,-0.151375],[-0.668671875,0.17703125]],"v":[[193,161],[191.923795918367,162.59756851312],[192.295306122449,163.818221574344],[193.632571428571,164.597166180758],[195.453632653061,164.869609329446],[197.276530612245,164.570758017493],[198.619306122449,163.635819241983],[199,162],[198.332078125,160.65490625],[196.914625,159.83575],[195.039859375,159.84871875]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.49599999999998,-1.0805],[-0.03626530612246,-0.45730903790087],[-0.21220408163265,-0.45184839650145],[-0.33953061224489,-0.39390379008748],[-0.4182448979592,-0.28347521865891],[-0.4483469387755,-0.12056268221573],[-0.42983673469388,0.09483381924198],[-0.36271428571428,0.36271428571428],[0.3011875,0.91271875000001],[0.76775000000001,0.75337500000001],[0.83268750000002,0.08896874999999]],"o":[[-0.18828571428571,0.41028571428572],[0.03626530612243,0.45730903790087],[0.21220408163265,0.45184839650148],[0.33953061224489,0.39390379008745],[0.41824489795917,0.28347521865888],[0.44834693877553,0.12056268221573],[0.42983673469388,-0.09483381924198],[0.56700000000001,-0.56700000000001],[-0.3011875,-0.91271874999998],[-0.76775000000001,-0.75337499999998],[-0.83268750000002,-0.08896874999999]],"v":[[182,185],[181.78412244898,186.314513119534],[182.168979591837,187.691370262391],[183.008734693878,188.973119533528],[184.157551020408,190.002309037901],[185.469591836735,190.621486880466],[186.799020408163,190.673201166181],[188,190],[188.2983125,187.65415625],[186.5945,185.02875],[184.0934375,183.63896875]],"c":true}],"h":1},{"t":24,"s":[{"i":[[0.27949999999998,-0.27949999999998],[0.16878425655977,-0.34371137026238],[0.00534110787174,-0.29688629737609],[-0.12118658892126,-0.22866763848396],[-0.21079883381924,-0.13905539358603],[-0.26349562682213,-0.02804956268221],[-0.27927696793006,0.10434985422739],[-0.25814285714284,0.25814285714284],[-0.01379687500003,0.482546875],[0.33206250000001,0.29293749999999],[0.42982812499997,0.038921875]],"o":[[-0.36914285714283,0.36914285714286],[-0.16878425655977,0.34371137026238],[-0.00534110787174,0.29688629737609],[0.12118658892132,0.22866763848396],[0.21079883381924,0.13905539358601],[0.26349562682213,0.02804956268221],[0.27927696793006,-0.10434985422742],[0.60775000000001,-0.60775000000001],[0.01379687500003,-0.482546875],[-0.33206250000001,-0.29293749999999],[-0.42982812500003,-0.038921875]],"v":[[304,176],[303.20233819242,177.074629737609],[302.950379008746,178.040874635568],[303.133376093294,178.83455393586],[303.640583090379,179.391486880466],[304.361253644315,179.64749271137],[305.184641399417,179.538390670554],[306,179],[306.870296875,177.348453125],[306.330875,176.169125],[305.126015625,175.655234375]],"c":true}],"h":1}]},"o":{"k":[{"t":16,"s":[0],"h":1},{"t":17,"s":[100],"h":1},{"t":25,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 3"},{"inv":false,"mode":"f","pt":{"k":[{"t":18,"s":[{"i":[[2.592,-1.523],[0.171,-0.274],[-2.157,-2.912],[-3.525,-0.895],[-2.257,-0.926],[1.752,4.452],[4.924,1.483],[1.227,0.393]],"o":[[-0.305,0.179],[-0.835,1.336],[2.886,3.896],[4.441,1.127],[5.561,2.281],[-1.404,-3.566],[-2.087,-0.628],[-2.515,-0.805]],"v":[[221,192],[219,192],[219,200],[231,201],[239,207],[245,199],[232,195],[227,192]],"c":true}],"h":1},{"t":19,"s":[{"i":[[2.592,-1.523],[0.171,-0.274],[-2.157,-2.912],[-3.525,-0.895],[-2.257,-0.926],[1.752,4.452],[4.924,1.483],[1.227,0.393]],"o":[[-0.305,0.179],[-0.835,1.336],[2.886,3.896],[4.441,1.127],[5.561,2.281],[-1.404,-3.566],[-2.087,-0.628],[-2.515,-0.805]],"v":[[221,192],[219,192],[219,200],[231,201],[239,207],[245,199],[232,195],[227,192]],"c":true}],"h":1},{"t":20,"s":[{"i":[[0.21100000000001,-0.86700000000002],[-0.19385937499999,-0.495390625],[-0.37768750000001,-0.45331250000001],[-0.494984375,-0.10626562499999],[-0.54575,0.54575],[0.25159374999998,0.60965625],[0.523875,0.51512500000001],[0.51034374999998,0.02290625000001]],"o":[[-0.0565,0.23250000000002],[0.19385937499999,0.495390625],[0.37768750000001,0.45331249999998],[0.494984375,0.10626562500002],[0.3065,-0.3065],[-0.25159375000001,-0.60965625],[-0.523875,-0.51512499999998],[-0.51034375,-0.02290625000001]],"v":[[215,166],[215.222671875,167.168078125],[216.096625,168.667375],[217.422265625,169.582984375],[219,169],[219.01090625,167.52634375],[217.77625,165.73975],[216.15346875,164.83328125]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0.21100000000001,-0.86700000000002],[-0.19385937499999,-0.495390625],[-0.37768750000001,-0.45331250000001],[-0.494984375,-0.10626562499999],[-0.54575,0.54575],[0.25159374999998,0.60965625],[0.523875,0.51512500000001],[0.51034374999998,0.02290625000001]],"o":[[-0.0565,0.23250000000002],[0.19385937499999,0.495390625],[0.37768750000001,0.45331249999998],[0.494984375,0.10626562500002],[0.3065,-0.3065],[-0.25159375000001,-0.60965625],[-0.523875,-0.51512499999998],[-0.51034375,-0.02290625000001]],"v":[[215,166],[215.222671875,167.168078125],[216.096625,168.667375],[217.422265625,169.582984375],[219,169],[219.01090625,167.52634375],[217.77625,165.73975],[216.15346875,164.83328125]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0.959,-0.959],[0.242625,0.013375],[0.00200000000001,-0.02600000000001],[-0.64262500000001,-2.88875000000002],[-2.55250000000001,0.3365],[-1.22062500000001,2.595],[0.98000000000002,1.607],[1.53200000000001,0.11562499999999]],"o":[[-0.0275,0.0275],[-0.242625,-0.013375],[-0.12299999999999,1.78149999999999],[0.64262499999998,2.88874999999999],[0.0975,-0.01300000000001],[1.22062500000001,-2.595],[-0.91300000000001,-1.4965],[-1.53199999999998,-0.11562499999999]],"v":[[190,178],[189.480875,178.001125],[189,178],[189.493375,186.0885],[194,191],[196.808125,186.1955],[198,179],[194.0345,176.658375]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.44450000000001,-0.44450000000001],[-0.17090625,-0.48534375],[-0.514625,-0.360375],[-0.58640625000001,-0.06984374999999],[-0.38625000000002,0.38625000000002],[0.1773125,0.4789375],[0.46725000000001,0.40774999999999],[0.55631249999999,0.09993750000001]],"o":[[-0.44475,0.44475],[0.17090625,0.48534375],[0.514625,0.360375],[0.58640625000001,0.06984374999999],[0.3135,-0.3135],[-0.1773125,-0.4789375],[-0.46725000000001,-0.40774999999999],[-0.55631250000002,-0.09993749999998]],"v":[[201,206],[200.65721875,207.43653125],[201.7535,208.7465],[203.47303125,209.43321875],[205,209],[205.1540625,207.7521875],[204.137,206.363],[202.5514375,205.5423125]],"c":true}],"h":1}]},"o":{"k":[{"t":17,"s":[0],"h":1},{"t":18,"s":[100],"h":1},{"t":24,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 4"},{"inv":false,"mode":"f","pt":{"k":[{"t":20,"s":[{"i":[[4.02,-2.698],[0.753,-2.743],[-3.498,-2.506],[-2.669,2.072],[2.688,6.669]],"o":[[-3.442,2.31],[-1.076,3.924],[3.042,2.18],[5.415,-4.205],[-1.875,-4.651]],"v":[[206,168],[204,177],[201,189],[210,185],[215,172]],"c":true}],"h":1},{"t":21,"s":[{"i":[[4.02,-2.698],[0.753,-2.743],[-3.498,-2.506],[-2.669,2.072],[2.688,6.669]],"o":[[-3.442,2.31],[-1.076,3.924],[3.042,2.18],[5.415,-4.205],[-1.875,-4.651]],"v":[[206,168],[204,177],[201,189],[210,185],[215,172]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0.31049999999999,-1.334],[-0.25459259259259,-0.78244444444445],[-0.62814814814811,-0.29166666666666],[-1.01400000000001,1.01400000000001],[1.08687500000002,0.91900000000001]],"o":[[-0.10666666666668,0.45833333333334],[0.25459259259264,0.78244444444442],[0.62814814814817,0.29166666666666],[0.65800000000002,-0.65800000000002],[-1.08687499999996,-0.91899999999998]],"v":[[297,181],[297.218814814815,183.064888888889],[298.539851851852,184.879777777778],[301,184],[299.726375,181.006]],"c":true}],"h":1}]},"o":{"k":[{"t":19,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":23,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 5"},{"inv":false,"mode":"f","pt":{"k":[{"t":20,"s":[{"i":[[0.006,-0.002],[0.808,-2.331],[-1.195,-0.883],[-0.2,0.453],[2.847,1.078]],"o":[[-1.591,0.472],[-0.859,2.479],[1.458,1.077],[2.401,-5.436],[0.018,0.007]],"v":[[287,184],[283,187],[284,201],[292,197],[287,183]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0.006,-0.002],[0.808,-2.331],[-1.195,-0.883],[-0.2,0.453],[2.847,1.078]],"o":[[-1.591,0.472],[-0.859,2.479],[1.458,1.077],[2.401,-5.436],[0.018,0.007]],"v":[[287,184],[283,187],[284,201],[292,197],[287,183]],"c":true}],"h":1},{"t":22,"s":[{"i":[[1.42,-1.42],[0.09662499999999,-1.04874999999998],[-0.6765,-0.51499999999999],[0.485,-0.485],[0.16,0.304]],"o":[[-0.29000000000002,0.29000000000002],[-0.09662500000002,1.04874999999998],[1.7,1.294],[0.211,-0.211],[-1.518,-2.879]],"v":[[205,202],[204.275125,204.33125],[205,207],[214,207],[214,203]],"c":true}],"h":1}]},"o":{"k":[{"t":19,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":23,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 6"},{"inv":false,"mode":"f","pt":{"k":[{"t":20,"s":[{"i":[[0.457,-0.642],[-1.616,-1.27],[-3.331,-0.82],[-0.852,-0.23],[0.036,3.495],[7.247,-0.221]],"o":[[0.088,-0.124],[1.439,1.131],[2.051,0.505],[6.177,1.67],[-0.057,-5.528],[-1.097,0.033]],"v":[[214,197],[215,204],[223,204],[228,208],[238,203],[215,196]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0.457,-0.642],[-1.616,-1.27],[-3.331,-0.82],[-0.852,-0.23],[0.036,3.495],[7.247,-0.221]],"o":[[0.088,-0.124],[1.439,1.131],[2.051,0.505],[6.177,1.67],[-0.057,-5.528],[-1.097,0.033]],"v":[[214,197],[215,204],[223,204],[228,208],[238,203],[215,196]],"c":true}],"h":1}]},"o":{"k":[{"t":19,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":22,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 7"},{"inv":false,"mode":"f","pt":{"k":[{"t":20,"s":[{"i":[[2.815,-2.815],[-2.298,0.899]],"o":[[-1.637,1.637],[1.543,-0.604]],"v":[[279,201],[280,205]],"c":true}],"h":1},{"t":21,"s":[{"i":[[2.815,-2.815],[-2.298,0.899]],"o":[[-1.637,1.637],[1.543,-0.604]],"v":[[279,201],[280,205]],"c":true}],"h":1}]},"o":{"k":[{"t":19,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":22,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 8"},{"inv":false,"mode":"f","pt":{"k":[{"t":20,"s":[{"i":[[6.347,-4.293],[-5.087,0]],"o":[[-3.293,2.227],[6.951,0]],"v":[[286,204],[288,214]],"c":true}],"h":1},{"t":21,"s":[{"i":[[6.347,-4.293],[-5.087,0]],"o":[[-3.293,2.227],[6.951,0]],"v":[[286,204],[288,214]],"c":true}],"h":1}]},"o":{"k":[{"t":19,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":22,"s":[0],"h":1}]},"x":{"k":0},"nm":"Mask 9"}],"sw":500,"sh":600,"sc":"#25cc8c","ip":15,"op":25,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"’ Outlines","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,4.532],[13.898,0],[0,-13.898],[-8.157,-4.532],[0,0],[0,0],[0,0]],"o":[[0,-13.898],[-13.898,0],[0,9.668],[0,0],[0,0],[0,0],[2.115,-3.625]],"v":[[31.098,-204.236],[5.418,-229.916],[-19.961,-204.236],[-6.063,-181.577],[-22.076,-133.841],[-0.625,-126.59],[27.775,-191.849]],"c":true}},"nm":"’"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"’"}],"ip":23,"op":34,"st":-9,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Legs_Siggle_TrimPaths","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[9,10.5],[-7.75,4.25]],"o":[[7.25,-2],[-6.508,-7.593],[0,0]],"v":[[25,-183],[29.75,-203.25],[36,-225]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.072],"y":[1]},"o":{"x":[0.321],"y":[0]},"n":["0p072_1_0p321_0"],"t":18,"s":[0],"e":[100]},{"t":28}],"ix":1},"e":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.449],"y":[0]},"n":["0_1_0p449_0"],"t":15,"s":[0],"e":[100]},{"t":23}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[59.617,-74.137],"ix":2},"a":{"k":[29.617,-204.137],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":105,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[9,10.5],[-7.75,4.25]],"o":[[7.25,-2],[-6.508,-7.593],[0,0]],"v":[[25,-183],[29.75,-203.25],[36,-225]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.072],"y":[1]},"o":{"x":[0.321],"y":[0]},"n":["0p072_1_0p321_0"],"t":18,"s":[0],"e":[100]},{"t":28}],"ix":1},"e":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.449],"y":[0]},"n":["0_1_0p449_0"],"t":15,"s":[0],"e":[100]},{"t":23}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-60.383,-84.137],"ix":2},"a":{"k":[29.617,-204.137],"ix":1},"s":{"k":[-100,100],"ix":3},"r":{"k":255,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[9,10.5],[-7.75,4.25]],"o":[[7.25,-2],[-6.508,-7.593],[0,0]],"v":[[25,-183],[29.75,-203.25],[36,-225]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.072],"y":[1]},"o":{"x":[0.321],"y":[0]},"n":["0p072_1_0p321_0"],"t":21,"s":[0],"e":[100]},{"t":31}],"ix":1},"e":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.449],"y":[0]},"n":["0_1_0p449_0"],"t":18,"s":[0],"e":[100]},{"t":26}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[29.617,-4.137],"ix":2},"a":{"k":[29.617,-204.137],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":153,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[9,10.5],[-7.75,4.25]],"o":[[7.25,-2],[-6.508,-7.593],[0,0]],"v":[[25,-183],[29.75,-203.25],[36,-225]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.072],"y":[1]},"o":{"x":[0.321],"y":[0]},"n":["0p072_1_0p321_0"],"t":17,"s":[0],"e":[100]},{"t":27}],"ix":1},"e":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.449],"y":[0]},"n":["0_1_0p449_0"],"t":14,"s":[0],"e":[100]},{"t":22}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":31,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Circle_Particle_Left","parent":14,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[100],"e":[0]},{"t":26}]},"r":{"k":0},"p":{"k":[{"i":{"x":0,"y":0.833},"o":{"x":0.324,"y":0},"n":"0_0p833_0p324_0","t":14,"s":[215.523,151.023,0],"e":[165.023,107.523,0],"to":[-8.41666698455811,-7.25,0],"ti":[8.41666698455811,7.25,0]},{"t":26}]},"a":{"k":[107.023,-105.977,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":14,"s":[0,0,100],"e":[70,70,100]},{"t":16}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.707,0],[0,-4.707],[-4.707,0],[0,4.707]],"o":[[-4.707,0],[0,4.707],[4.707,0],[0,-4.707]],"v":[[0,-8.523],[-8.523,0],[0,8.523],[8.523,0]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[107.023,-105.977],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":14,"op":28,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Circle_Particle_Right","parent":14,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[100],"e":[0]},{"t":26}]},"r":{"k":0},"p":{"k":[{"i":{"x":0,"y":0.888},"o":{"x":0.324,"y":0},"n":"0_0p888_0p324_0","t":14,"s":[301.523,243.023,0],"e":[393.023,281.523,0],"to":[15.25,6.41666650772095,0],"ti":[-15.25,-6.41666650772095,0]},{"t":26}]},"a":{"k":[107.023,-105.977,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":14,"s":[0,0,100],"e":[70,70,100]},{"t":16}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.707,0],[0,-4.707],[-4.707,0],[0,4.707]],"o":[[-4.707,0],[0,4.707],[4.707,0],[0,-4.707]],"v":[[0,-8.523],[-8.523,0],[0,8.523],[8.523,0]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[107.023,-105.977],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":14,"op":28,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":3,"nm":"Fly Mover","parent":14,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":1,"s":[23],"e":[23]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":7,"s":[23],"e":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p833_1_0p333_0"],"t":9,"s":[0],"e":[-17]},{"t":10}]},"p":{"k":[{"i":{"x":0.374,"y":1},"o":{"x":0.545,"y":0},"n":"0p374_1_0p545_0","t":0,"s":[127.006,23.525,0],"e":[437.006,131.525,0],"to":[-0.40059697628021,57.0268630981445,0],"ti":[0.93978065252304,-58.3619232177734,0]},{"i":{"x":0.829,"y":1},"o":{"x":0.739,"y":0},"n":"0p829_1_0p739_0","t":10,"s":[437.006,131.525,0],"e":[258.006,200.525,0],"to":[-0.48769053816795,30.2863845825195,0],"ti":[0,0,0]},{"t":15}]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.578,0.64,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p578_0","0p667_1_0p64_0","0p667_0p667_0p333_0p333"],"t":0,"s":[0,0,100],"e":[-25,25,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0.333,0.333]},"n":["0p833_0p833_0p333_0p333","0p833_0p833_0p333_0p333","0p833_0p833_0p333_0p333"],"t":2,"s":[-25,25,100],"e":[-25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_0p667_0p167_0p167","0p667_0p667_0p167_0p167"],"t":9,"s":[-25,25,100],"e":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":10,"s":[25,25,100],"e":[40,40,100]},{"t":15}]}},"ao":0,"ip":0,"op":27,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Fly_Splat","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[258.006,200.525,0]},"a":{"k":[-103.994,-108.475,0]},"s":{"k":[25,25,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[23.338,23.338]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"i":{"x":0.144,"y":1},"o":{"x":0.333,"y":0},"n":"0p144_1_0p333_0","t":16,"s":[-157.63,-128.052],"e":[-563.278,-259.31],"to":[-67.6080703735352,-21.8763027191162],"ti":[67.6080703735352,21.8763027191162]},{"t":23}],"ix":2},"a":{"k":[11.087,1.246],"ix":1},"s":{"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":16,"s":[255,255],"e":[0,0]},{"t":23}],"ix":3},"r":{"k":18,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Left_Eye"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.005,0.005],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p005_1_0p333_0","0p005_1_0p333_0"],"t":16,"s":[85.338,85.338],"e":[125.338,125.338]},{"i":{"x":[0.113,0.113],"y":[1,1]},"o":{"x":[0.69,0.69],"y":[0,0]},"n":["0p113_1_0p69_0","0p113_1_0p69_0"],"t":18,"s":[125.338,125.338],"e":[0,0]},{"t":25}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-133.507,-185.694],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[100],"e":[0]},{"t":17}],"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Right_Eye"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[{"i":[[20.75,2.5],[-5.371,-3.836],[-10.52,9.268]],"o":[[-24.301,-2.928],[5.25,3.75],[10.5,-9.25]],"v":[[-71,-169],[-105,-117],[-64.75,-142.75]],"c":true}],"e":[{"i":[[8.633,0.685],[-8.785,-10.961],[-5.972,12.685]],"o":[[-14.905,-1.183],[9.203,11.482],[6.403,-13.601]],"v":[[-72.041,-171.576],[-86.364,-147.498],[-58.923,-148.1]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[8.633,0.685],[-8.785,-10.961],[-5.972,12.685]],"o":[[-14.905,-1.183],[9.203,11.482],[6.403,-13.601]],"v":[[-72.041,-171.576],[-86.364,-147.498],[-58.923,-148.1]],"c":true}],"e":[{"i":[[8.227,-2.706],[-5.266,-4.186],[2.796,8.286]],"o":[[-6.755,2.222],[5.319,4.228],[-1.912,-5.665]],"v":[[-65.684,-173.145],[-68.654,-159.897],[-52.577,-165.145]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":23,"s":[{"i":[[8.227,-2.706],[-5.266,-4.186],[2.796,8.286]],"o":[[-6.755,2.222],[5.319,4.228],[-1.912,-5.665]],"v":[[-65.684,-173.145],[-68.654,-159.897],[-52.577,-165.145]],"c":true}],"e":[{"i":[[4.334,-1.321],[-1.514,-0.646],[-0.362,2.322]],"o":[[-2.591,0.789],[2.016,0.861],[0.599,-3.837]],"v":[[-55.406,-180.786],[-54.621,-175.546],[-50.398,-178.002]],"c":true}]},{"t":28}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.168,"y":0},"n":"0_1_0p168_0","t":16,"s":[20.471,-189.977],"e":[285.328,-241.07],"to":[44.1429023742676,-8.515625],"ti":[-44.1429023742676,8.515625]},{"t":21}],"ix":2},"a":{"k":[-75.709,-152.871],"ix":1},"s":{"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[1,1],"y":[0,0]},"n":["0p667_1_1_0","0p667_1_1_0"],"t":25,"s":[216,216],"e":[0,0]},{"t":27}],"ix":3},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":1,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[22],"e":[22]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":14,"s":[22],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[0],"e":[22]},{"t":16}],"ix":6},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":28,"s":[100],"e":[0]},{"t":29}],"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Right_Wing"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[12.664,-2.849],[-6.534,0.933],[-1.75,17.25]],"o":[[-20,4.5],[3.5,-0.5],[1.338,-13.185]],"v":[[-116.5,-172],[-105,-117],[-97.25,-149.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.025,"y":0},"n":"0_1_0p025_0","t":16,"s":[-187.381,33.299],"e":[-396.289,89.012],"to":[-34.8180351257324,9.28548145294189],"ti":[34.8180351257324,-9.28548145294189]},{"t":25}],"ix":2},"a":{"k":[-109.578,-147.329],"ix":1},"s":{"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.025,0.025],"y":[0,0]},"n":["0_1_0p025_0","0_1_0p025_0"],"t":16,"s":[243,243],"e":[0,0]},{"t":25}],"ix":3},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[-22],"e":[-103.5]},{"t":16}],"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Left_Wing"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.226,"y":0},"n":"0_1_0p226_0","t":16,"s":[{"i":[[95.445,-18.008],[-3.106,-13.977],[-28,-11],[-64.846,0],[-11.599,25.029],[24,24]],"o":[[-106,20],[6,27],[22.124,8.691],[49,0],[19,-41],[-38.269,-38.269]],"v":[[-118.018,-200.576],[-196.018,-66.576],[-144.018,-23.576],[-66.018,32.424],[9.982,-15.576],[30.982,-138.576]],"c":true}],"e":[{"i":[[81,0],[-10.195,-28.037],[-29,-16],[-0.707,-0.707],[-0.431,0.902],[-12.384,29.523]],"o":[[-101,0],[9.5,26.125],[3.715,2.049],[1.5,1.5],[33,-69],[28,-66.75]],"v":[[-111.018,-229.576],[-211.518,-98.201],[-162.018,-37.576],[-223.018,154.424],[-140.143,183.424],[-23.018,-81.326]],"c":true}]},{"t":23}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Body_Splat"}],"ip":16,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Fly_Squash_Small","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[258.006,200.525,0]},"a":{"k":[-103.994,-108.475,0]},"s":{"k":[15,15,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[23.338,23.338]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-153.989,-133.177],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[255,255],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 2"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[85.338,85.338]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-122.593,-78.429],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[20.75,2.5],[-5.371,-3.836],[-10.52,9.268]],"o":[[-24.301,-2.928],[5.25,3.75],[10.5,-9.25]],"v":[[-71,-169],[-105,-117],[-64.75,-142.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-105.523,-119.062],"ix":2},"a":{"k":[-105.523,-119.062],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":-1,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[22],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[0],"e":[22]},{"t":19}],"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[95.445,-18.008],[-3.106,-13.977],[-28,-11],[-59.302,-26.234],[-13.682,5.266],[-8.873,30.761]],"o":[[-106,20],[6,27],[22.124,8.692],[47.318,20.932],[24.798,-9.544],[15,-52]],"v":[[-118.018,-200.576],[-196.018,-66.576],[-147.018,-4.576],[-81.351,13.757],[-40.351,-51.41],[-5.018,-71.576]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[52.012,37.051]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"rd","nm":"Round Corners 1","r":{"k":15}},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-103.994,-108.475],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[12.664,-2.849],[-6.534,0.933],[-1.75,17.25]],"o":[[-20,4.5],[3.5,-0.5],[1.338,-13.185]],"v":[[-116.5,-172],[-105,-117],[-97.25,-149.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-104.977,-115.582],"ix":2},"a":{"k":[-104.977,-115.582],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":-1,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[-22],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[0],"e":[-22]},{"t":19}],"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":15,"op":16,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Fly_Flying","parent":6,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-5.977,-1.827,0]},"a":{"k":[-103.994,-108.475,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[23.338,23.338]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-129.228,-121.321],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_Right"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[23.338,23.338]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-113.237,-120.39],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_Left"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[20.75,2.5],[-5.371,-3.836],[-10.52,9.268]],"o":[[-24.301,-2.928],[5.25,3.75],[10.5,-9.25]],"v":[[-71,-169],[-105,-117],[-64.75,-142.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-105.523,-119.062],"ix":2},"a":{"k":[-105.523,-119.062],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":1,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":10,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[0],"e":[22]},{"t":15}],"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Right_Wing"},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[52.012,37.051]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"rd","nm":"Round Corners 1","r":{"k":15}},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-103.994,-108.475],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Body"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[12.664,-2.849],[-6.534,0.933],[-1.75,17.25]],"o":[[-20,4.5],[3.5,-0.5],[1.338,-13.185]],"v":[[-116.5,-172],[-105,-117],[-97.25,-149.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-104.977,-115.582],"ix":2},"a":{"k":[-104.977,-115.582],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":1,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":10,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[0],"e":[-22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[-22],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[0],"e":[-22]},{"t":15}],"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Left_Wing"}],"ip":0,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Leg1","parent":9,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-114.853,-97.073,0]},"a":{"k":[-119.853,-94.5,0]},"s":{"k":[100,97.432,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.683,-5.326],[0,0]],"o":[[0,0],[0.625,4.875],[0,0]],"v":[[-117.5,-94.5],[-119.75,-85.625],[-113.625,-77.875]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Leg2","parent":9,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-89.853,-92.073,0]},"a":{"k":[-119.853,-94.5,0]},"s":{"k":[100,97.432,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.683,-5.326],[0,0]],"o":[[0,0],[0.625,4.875],[0,0]],"v":[[-117.5,-94.5],[-119.75,-85.625],[-113.625,-77.875]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Leg3","parent":9,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-124.853,-97.073,0]},"a":{"k":[-119.853,-94.5,0]},"s":{"k":[100,97.432,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.683,-5.326],[0,0]],"o":[[0,0],[0.625,4.875],[0,0]],"v":[[-117.5,-94.5],[-119.75,-85.625],[-113.625,-77.875]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Leg4","parent":9,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-99.853,-92.073,0]},"a":{"k":[-119.853,-94.5,0]},"s":{"k":[100,97.432,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.683,-5.326],[0,0]],"o":[[0,0],[0.625,4.875],[0,0]],"v":[[-117.5,-94.5],[-119.75,-85.625],[-113.625,-77.875]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":1,"nm":"ResizerTemp","parent":16,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":34,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":1,"nm":"White Solid 38","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[28,35,0]},"a":{"k":[250,300,0]},"s":{"k":[11.6,11.667,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":34,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":34,"fr":25,"w":56,"h":70} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/B.json b/example/shared/src/commonMain/composeResources/files/mobilo/B.json new file mode 100644 index 00000000..9a643cca --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/B.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"B 2","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[32.279,-158.917],[6.297,-132.935],[-32.677,-132.935],[-32.677,-184.598],[6.297,-184.598]],"c":true}},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-93.658],[43.156,-67.676]],"c":true}},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":26,"op":37,"st":22,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"B","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[21.149,8.762],[0,21.451],[37.766,0],[0,0],[0,0],[0,0],[0,41.089]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[37.463,0],[0,-29.004]],"v":[[55.241,-119.037],[79.411,-164.355],[12.037,-226.593],[-79.507,-226.593],[-79.507,0],[23.518,0],[90.287,-63.144]],"c":true}},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":26,"op":37,"st":22,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"B blue layer 6","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-1.324,-11.343],[2.439,-7.314],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[3.612,-2.224]],"v":[[-55.603,-180.739],[-55.439,-147.686],[-63.981,-142.398],[-70.654,-190.988],[-63.612,-197.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[9.939,-11.314],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[9.112,-3.724]],"v":[[-32.103,-179.739],[-36.939,-146.686],[-53.481,-139.398],[-60.154,-190.488],[-47.112,-197.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[-2.154,-14.341],[9.939,-11.314],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[9.112,-3.724]],"v":[[-32.103,-179.739],[-36.939,-146.686],[-53.481,-139.398],[-60.154,-190.488],[-47.112,-197.276]],"c":true}],"e":[{"i":[[-2.295,-14.342],[14.615,-7.06],[0,0],[0,0],[0,0]],"o":[[2.247,14.043],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[-11.249,-176.983],[-23.893,-143.184],[-46.891,-138.152],[-50.397,-189.494],[-30.535,-196.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[-2.295,-14.342],[14.615,-7.06],[0,0],[0,0],[0,0]],"o":[[2.247,14.043],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[-11.249,-176.983],[-23.893,-143.184],[-46.891,-138.152],[-50.397,-189.494],[-30.535,-196.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[4.397,-174.239],[-14.439,-139.686],[-40.981,-136.898],[-44.654,-188.488],[-18.612,-193.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[4.397,-174.239],[-14.439,-139.686],[-40.981,-136.898],[-44.654,-188.488],[-18.612,-193.276]],"c":true}],"e":[{"i":[[-1.534,-14.395],[17.58,-1.876],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.855,-1.149]],"v":[[16.998,-170.132],[-5.273,-137.269],[-37.547,-135.91],[-39.662,-187.025],[-9.278,-190.383]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[-1.534,-14.395],[17.58,-1.876],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.855,-1.149]],"v":[[16.998,-170.132],[-5.273,-137.269],[-37.547,-135.91],[-39.662,-187.025],[-9.278,-190.383]],"c":true}],"e":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[24.639,-165.025],[-0.738,-135.852],[-35.862,-134.172],[-36.92,-187.061],[-2.991,-188.991]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[24.639,-165.025],[-0.738,-135.852],[-35.862,-134.172],[-36.92,-187.061],[-2.991,-188.991]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[28.279,-161.917],[4.297,-134.435],[-34.177,-133.435],[-34.177,-187.098],[3.297,-187.598]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":21.376,"s":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[28.279,-161.917],[4.297,-134.435],[-34.177,-133.435],[-34.177,-187.098],[3.297,-187.598]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[32.279,-158.917],[6.297,-132.935],[-32.677,-132.935],[-32.677,-184.598],[6.297,-184.598]],"c":true}]},{"t":24}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[5.931,-1.505],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.344,19.176]],"v":[[-44.931,-50.495],[-55.177,-48.495],[-60.677,-102.158],[-53.931,-106.658],[-42.844,-84.676]],"c":true}],"e":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.589,13.962]],"v":[[-27.431,-47.995],[-46.177,-46.495],[-51.177,-100.658],[-34.431,-104.658],[-18.344,-87.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.589,13.962]],"v":[[-27.431,-47.995],[-46.177,-46.495],[-51.177,-100.658],[-34.431,-104.658],[-18.344,-87.176]],"c":true}],"e":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[11.868,-1.421],[2.589,13.962]],"v":[[-10.681,-46.995],[-40.427,-45.245],[-43.677,-98.908],[-17.181,-102.408],[3.406,-81.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[11.868,-1.421],[2.589,13.962]],"v":[[-10.681,-46.995],[-40.427,-45.245],[-43.677,-98.908],[-17.181,-102.408],[3.406,-81.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[2.589,13.962]],"v":[[-0.931,-44.995],[-36.677,-42.995],[-39.177,-97.158],[-3.931,-100.158],[20.156,-76.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[2.589,13.962]],"v":[[-0.931,-44.995],[-36.677,-42.995],[-39.177,-97.158],[-3.931,-100.158],[20.156,-76.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-1.77,-14.283]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.726,14.041]],"v":[[6.902,-43.495],[-34.844,-42.662],[-35.844,-96.158],[5.902,-97.825],[29.989,-73.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-1.77,-14.283]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.726,14.041]],"v":[[6.902,-43.495],[-34.844,-42.662],[-35.844,-96.158],[5.902,-97.825],[29.989,-73.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[12.235,-42.745],[-33.761,-42.329],[-34.761,-95.908],[11.235,-96.242],[37.322,-69.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[12.235,-42.745],[-33.761,-42.329],[-34.761,-95.908],[11.235,-96.242],[37.322,-69.926]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[13.569,-41.995],[-32.677,-41.995],[-33.677,-95.658],[16.569,-94.658],[40.656,-68.676]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":21.376,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[13.569,-41.995],[-32.677,-41.995],[-33.677,-95.658],[16.569,-94.658],[40.656,-68.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-93.658],[43.156,-67.676]],"c":true}]},{"t":24}]},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":16,"op":26,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"B blue layer 5","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[5.759,27.537],[4.508,20.972],[7.96,-31.787],[0,0],[0,0],[-52.303,4.363],[12.713,79.144]],"o":[[-6.241,-30.463],[-18.411,-85.645],[-8.037,32.093],[0,0],[0,0],[17.982,-1.5],[-4.202,-26.16]],"v":[[-23.759,-157.537],[-41.089,-239.855],[-57.963,-260.093],[-97.507,-214.093],[-76.507,-0.5],[-13.982,-7.5],[-8.213,-83.644]],"c":true}],"e":[{"i":[[8.259,26.537],[3.138,21.22],[33.463,-28.907],[0,0],[0,0],[-52.485,0],[6.213,46.144]],"o":[[-3.241,-28.463],[-9.411,-63.645],[-29.686,25.644],[0,0],[0,0],[43.482,0],[-4.959,-36.833]],"v":[[21.241,-163.037],[14.911,-228.855],[-29.963,-255.093],[-95.007,-217.593],[-76.507,-0.5],[17.018,-3.5],[41.787,-87.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[8.259,26.537],[3.138,21.22],[33.463,-28.907],[0,0],[0,0],[-52.485,0],[6.213,46.144]],"o":[[-3.241,-28.463],[-9.411,-63.645],[-29.686,25.644],[0,0],[0,0],[43.482,0],[-4.959,-36.833]],"v":[[21.241,-163.037],[14.911,-228.855],[-29.963,-255.093],[-95.007,-217.593],[-76.507,-0.5],[17.018,-3.5],[41.787,-87.144]],"c":true}],"e":[{"i":[[15.759,21.037],[2.598,21.286],[37.463,-16.657],[0,0],[0,0],[-26.242,0],[5.463,51.394]],"o":[[3.509,-24.213],[-4.661,-61.895],[-35.537,14.843],[0,0],[0,0],[52.482,4],[-3.676,-32.795]],"v":[[46.741,-144.787],[49.661,-211.605],[-14.963,-245.343],[-91.757,-220.343],[-77.257,-0.75],[21.518,-2],[72.287,-76.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,21.037],[2.598,21.286],[37.463,-16.657],[0,0],[0,0],[-26.242,0],[5.463,51.394]],"o":[[3.509,-24.213],[-4.661,-61.895],[-35.537,14.843],[0,0],[0,0],[52.482,4],[-3.676,-32.795]],"v":[[46.741,-144.787],[49.661,-211.605],[-14.963,-245.343],[-91.757,-220.343],[-77.257,-0.75],[21.518,-2],[72.287,-76.144]],"c":true}],"e":[{"i":[[23.259,15.537],[2.058,21.352],[34.868,-8.794],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.037,9.593],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[56.241,-133.537],[68.411,-198.355],[-2.963,-239.593],[-88.507,-223.093],[-78.007,-1],[26.018,-0.5],[86.787,-72.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[23.259,15.537],[2.058,21.352],[34.868,-8.794],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.037,9.593],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[56.241,-133.537],[68.411,-198.355],[-2.963,-239.593],[-88.507,-223.093],[-78.007,-1],[26.018,-0.5],[86.787,-72.144]],"c":true}],"e":[{"i":[[24.259,15.287],[1.029,21.401],[36.665,-5.6],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-2.705,-47.408],[-19.018,4.797],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[76.911,-186.105],[5.787,-235.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[1.029,21.401],[36.665,-5.6],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-2.705,-47.408],[-19.018,4.797],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[76.911,-186.105],[5.787,-235.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":22.253,"s":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[37.766,0],[0,0],[0,0],[0,0],[0,41.089]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[37.463,0],[0,-29.004]],"v":[[55.241,-119.037],[79.411,-164.355],[12.037,-226.593],[-79.507,-226.593],[-79.507,0],[23.518,0],[90.287,-63.144]],"c":true}]},{"t":24}]},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":16,"op":26,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":3,"nm":"Null smoke","parent":34,"ks":{"o":{"k":0},"r":{"k":9.771},"p":{"k":[{"i":{"x":0.601,"y":0.889},"o":{"x":0.239,"y":0.067},"n":"0p601_0p889_0p239_0p067","t":9,"s":[241.443,258.888,0],"e":[222.443,251.888,0],"to":[-0.5,-0.33333334326744,0],"ti":[-1.02731943130493,-0.37357068061829,0]},{"i":{"x":0.686,"y":1},"o":{"x":0.239,"y":0.304},"n":"0p686_1_0p239_0p304","t":11,"s":[222.443,251.888,0],"e":[242,259,0],"to":[5.54179763793945,2.01519918441772,0],"ti":[-3.09325051307678,-1.12481832504272,0]},{"t":20.3449832499027}]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8.999,"s":[-100,100,100],"e":[-128,128,100]},{"t":21.9237344563007}]}},"ao":0,"ip":9.99999961256981,"op":22.7584036290646,"st":-10.5559570491314,"bm":0,"sr":0.96000009775162},{"ddd":0,"ind":5,"ty":3,"nm":"Null smoke","parent":34,"ks":{"o":{"k":0},"r":{"k":-22.412},"p":{"k":[{"i":{"x":0.592,"y":0.891},"o":{"x":0.257,"y":0.068},"n":"0p592_0p891_0p257_0p068","t":9,"s":[225.656,310.504,0],"e":[206.656,303.504,0],"to":[-0.5,-0.33333334326744,0],"ti":[-1.516930103302,-0.31094110012054,0]},{"i":{"x":0.762,"y":1},"o":{"x":0.257,"y":0.3},"n":"0p762_1_0p257_0p3","t":11,"s":[206.656,303.504,0],"e":[228,308,0],"to":[6.19302797317505,1.26945006847382,0],"ti":[-0.32227402925491,0,0]},{"t":20.3640127778053}]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"ao":0,"ip":10.0000003576279,"op":22.5608477592468,"st":-9.35224944353104,"bm":0,"sr":0.95000010728836},{"ddd":0,"ind":6,"ty":3,"nm":"Null smoke","parent":34,"ks":{"o":{"k":0},"r":{"k":26.915},"p":{"k":[{"i":{"x":0.587,"y":0.894},"o":{"x":0.264,"y":0.068},"n":"0p587_0p894_0p264_0p068","t":10,"s":[228.667,205.657,0],"e":[209.667,198.657,0],"to":[-0.5,-0.33333334326744,0],"ti":[-1.19691395759583,-0.40347543358803,0]},{"i":{"x":0.713,"y":1},"o":{"x":0.264,"y":0.336},"n":"0p713_1_0p264_0p336","t":12,"s":[209.667,198.657,0],"e":[223,204,0],"to":[4.62041616439819,1.55752575397491,0],"ti":[-0.48471575975418,0,0]},{"t":19.0271503602465}]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"ao":0,"ip":11.0000006233652,"op":22.5608497237166,"st":-9.35224822411935,"bm":0,"sr":0.95000010728836},{"ddd":0,"ind":7,"ty":4,"nm":"B blue layer 4 shadow","parent":34,"ks":{"o":{"k":5},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[6,3],[35.446,17.154],[1.39,-24.214],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[-35.446,-17.154],[-1.585,27.613],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-140,-282],[-94,-266],[-98,-118],[-80,-5],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}],"e":[{"i":[[6,3],[0,-5],[-5,-22],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[5,22],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-140,-282],[-143,-270],[-133,-137],[-118,-11],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[6,3],[0,-5],[-5,-22],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[5,22],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-140,-282],[-143,-270],[-133,-137],[-118,-11],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}],"e":[{"i":[[6,3],[0,-5],[-5,-22],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[5,22],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-140,-282],[-178,-280],[-159,-145],[-141,4],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6,3],[0,-5],[-5,-22],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[5,22],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-140,-282],[-178,-280],[-159,-145],[-141,4],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}],"e":[{"i":[[6,3],[0,-5],[-7,-32],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[6.414,29.323],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-140,-282],[-158,-284],[-149,-204],[-118,6],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[6,3],[0,-5],[-7,-32],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[6.414,29.323],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-140,-282],[-158,-284],[-149,-204],[-118,6],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}],"e":[{"i":[[6,3],[0,-5],[-0.752,-22.548],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[1,30],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-106,-286],[-115,-276],[-99,-138],[-79,20],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[6,3],[0,-5],[-0.752,-22.548],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[1,30],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-106,-286],[-115,-276],[-99,-138],[-79,20],[-119,27],[-97,40],[-59,31],[-74,-216]],"c":true}],"e":[{"i":[[6,3],[0,-5],[-0.752,-22.548],[-7,-13],[-11,-18],[-9,-3],[0,0],[0,0]],"o":[[-6,-3],[0,5],[1,30],[7,13],[11,18],[9,3],[0,0],[0,0]],"v":[[-388,-298],[-397,-288],[-381,-150],[-361,8],[-401,15],[-379,28],[-341,19],[-356,-228]],"c":true}]},{"t":15}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[3.637,14.035],[-6.562,-18.555],[0,0],[0,0],[0,0],[1.944,58.843],[5.869,46.436],[6.789,29.064]],"o":[[-3.783,-14.599],[12.079,34.152],[0,0],[0,0],[0,0],[-0.327,-9.886],[-2.413,-19.093],[-6.444,-27.588]],"v":[[-100.137,-270.035],[-81.079,-226.152],[-69.301,-172.891],[-65.375,-112.805],[-61.507,1.5],[-65.673,-78.614],[-71.869,-138.936],[-83.556,-205.912]],"c":true}],"e":[{"i":[[1.179,13.587],[-16.316,-11.006],[0,0],[0,0],[0,0],[51.329,28.838],[-0.631,46.436],[1.219,29.821]],"o":[[-1.863,-21.465],[33.579,22.652],[0,0],[0,0],[0,0],[-23.827,-13.386],[0.145,-10.708],[-0.944,-23.088]],"v":[[-180.137,-248.535],[-116.079,-227.152],[-76.301,-169.391],[-71.875,-105.305],[-64.007,0.5],[-127.173,-60.614],[-176.869,-121.436],[-176.556,-181.412]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[1.179,13.587],[-16.316,-11.006],[0,0],[0,0],[0,0],[51.329,28.838],[-0.631,46.436],[1.219,29.821]],"o":[[-1.863,-21.465],[33.579,22.652],[0,0],[0,0],[0,0],[-23.827,-13.386],[0.145,-10.708],[-0.944,-23.088]],"v":[[-180.137,-248.535],[-116.079,-227.152],[-76.301,-169.391],[-71.875,-105.305],[-64.007,0.5],[-127.173,-60.614],[-176.869,-121.436],[-176.556,-181.412]],"c":true}],"e":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[62.482,13.5],[0.713,41.144],[-1.198,29.377]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-23.658,-5.112],[-0.183,-10.545],[1.875,-45.981]],"v":[[-210.589,-237.355],[-131.463,-229.593],[-83.507,-180.593],[-80.113,-142.106],[-67.007,-0.5],[-149.982,-38.5],[-213.713,-83.644],[-211.875,-154.519]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[62.482,13.5],[0.713,41.144],[-1.198,29.377]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-23.658,-5.112],[-0.183,-10.545],[1.875,-45.981]],"v":[[-210.589,-237.355],[-131.463,-229.593],[-83.507,-180.593],[-80.113,-142.106],[-67.007,-0.5],[-149.982,-38.5],[-213.713,-83.644],[-211.875,-154.519]],"c":true}],"e":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[49.59,6.194],[2.062,42.216],[0.844,29.39]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-24.018,-3],[-0.514,-10.534],[-1.267,-44.142]],"v":[[-219.089,-243.355],[-134.463,-234.593],[-89.007,-187.093],[-84.613,-147.106],[-68.507,-0.5],[-150.482,-30.5],[-213.713,-68.644],[-215.875,-135.019]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[49.59,6.194],[2.062,42.216],[0.844,29.39]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-24.018,-3],[-0.514,-10.534],[-1.267,-44.142]],"v":[[-219.089,-243.355],[-134.463,-234.593],[-89.007,-187.093],[-84.613,-147.106],[-68.507,-0.5],[-150.482,-30.5],[-213.713,-68.644],[-215.875,-135.019]],"c":true}],"e":[{"i":[[1.979,12.724],[-39.037,-17.407],[0,0],[0,0],[0,0],[49.482,7],[3.213,42.144],[3.102,33.18]],"o":[[-3.911,-25.145],[30.419,13.564],[0,0],[0,0],[0,0],[-13.966,-1.976],[-0.805,-10.559],[-4.66,-49.835]],"v":[[-212.089,-255.355],[-134.463,-244.093],[-94.007,-197.593],[-89.078,-155.355],[-71.007,-0.5],[-128.482,-21.5],[-193.213,-61.644],[-199.771,-135.061]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[1.979,12.724],[-39.037,-17.407],[0,0],[0,0],[0,0],[49.482,7],[3.213,42.144],[3.102,33.18]],"o":[[-3.911,-25.145],[30.419,13.564],[0,0],[0,0],[0,0],[-13.966,-1.976],[-0.805,-10.559],[-4.66,-49.835]],"v":[[-212.089,-255.355],[-134.463,-244.093],[-94.007,-197.593],[-89.078,-155.355],[-71.007,-0.5],[-128.482,-21.5],[-193.213,-61.644],[-199.771,-135.061]],"c":true}],"e":[{"i":[[2.758,12.578],[-32.825,-21.239],[0,0],[0,0],[0,0],[34.982,4],[4.713,44.644],[5.969,34.173]],"o":[[-8.911,-40.645],[27.963,18.093],[0,0],[0,0],[0,0],[-14.013,-1.602],[-1.112,-10.531],[-8.965,-51.327]],"v":[[-179.589,-262.855],[-130.463,-262.593],[-96.507,-222.593],[-91.042,-175.962],[-71.007,-5],[-104.982,-18.5],[-144.713,-64.144],[-156.854,-139.358]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[2.758,12.578],[-32.825,-21.239],[0,0],[0,0],[0,0],[34.982,4],[4.713,44.644],[5.969,34.173]],"o":[[-8.911,-40.645],[27.963,18.093],[0,0],[0,0],[0,0],[-14.013,-1.602],[-1.112,-10.531],[-8.965,-51.327]],"v":[[-179.589,-262.855],[-130.463,-262.593],[-96.507,-222.593],[-91.042,-175.962],[-71.007,-5],[-104.982,-18.5],[-144.713,-64.144],[-156.854,-139.358]],"c":true}],"e":[{"i":[[3.235,12.104],[-17.053,-18.911],[0,0],[3.05,20.138],[0,0],[9.544,-4.956],[7.213,61.144],[5.736,34.461]],"o":[[-17.411,-65.145],[14.963,16.593],[0,0],[-3.05,-20.138],[0,0],[-12.518,6.5],[-1.291,-10.944],[-8.055,-48.393]],"v":[[-114.589,-252.855],[-102.463,-279.593],[-83.507,-232.593],[-72.45,-171.862],[-51.007,-10.5],[-65.982,-2.5],[-81.213,-61.644],[-90.187,-141.969]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[3.235,12.104],[-17.053,-18.911],[0,0],[3.05,20.138],[0,0],[9.544,-4.956],[7.213,61.144],[5.736,34.461]],"o":[[-17.411,-65.145],[14.963,16.593],[0,0],[-3.05,-20.138],[0,0],[-12.518,6.5],[-1.291,-10.944],[-8.055,-48.393]],"v":[[-114.589,-252.855],[-102.463,-279.593],[-83.507,-232.593],[-72.45,-171.862],[-51.007,-10.5],[-65.982,-2.5],[-81.213,-61.644],[-90.187,-141.969]],"c":true}],"e":[{"i":[[2.706,12.59],[7.96,-31.787],[0,0],[0,0],[0,0],[-52.303,4.363],[12.713,79.144],[5.528,26.028]],"o":[[-18.411,-85.645],[-8.037,32.093],[0,0],[0,0],[0,0],[17.982,-1.5],[-1.68,-10.456],[-8.303,-39.094]],"v":[[-41.089,-239.855],[-57.963,-260.093],[-97.507,-214.093],[-93.006,-168.319],[-76.507,-0.5],[-13.982,-7.5],[-8.213,-83.644],[-20.289,-143.83]],"c":true}]},{"t":16}]},"nm":"B"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":10,"op":15,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"B blue layer 4","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[3.637,14.035],[-6.562,-18.555],[0,0],[0,0],[0,0],[1.944,58.843],[5.869,46.436],[6.789,29.064]],"o":[[-3.783,-14.599],[12.079,34.152],[0,0],[0,0],[0,0],[-0.327,-9.886],[-2.413,-19.093],[-6.444,-27.588]],"v":[[-100.137,-270.035],[-81.079,-226.152],[-69.301,-172.891],[-65.375,-112.805],[-61.507,1.5],[-65.673,-78.614],[-71.869,-138.936],[-83.556,-205.912]],"c":true}],"e":[{"i":[[1.179,13.587],[-16.316,-11.006],[0,0],[0,0],[0,0],[51.329,28.838],[-0.631,46.436],[1.219,29.821]],"o":[[-1.863,-21.465],[33.579,22.652],[0,0],[0,0],[0,0],[-23.827,-13.386],[0.145,-10.708],[-0.944,-23.088]],"v":[[-180.137,-248.535],[-116.079,-227.152],[-76.301,-169.391],[-71.875,-105.305],[-64.007,0.5],[-127.173,-60.614],[-176.869,-121.436],[-176.556,-181.412]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[1.179,13.587],[-16.316,-11.006],[0,0],[0,0],[0,0],[51.329,28.838],[-0.631,46.436],[1.219,29.821]],"o":[[-1.863,-21.465],[33.579,22.652],[0,0],[0,0],[0,0],[-23.827,-13.386],[0.145,-10.708],[-0.944,-23.088]],"v":[[-180.137,-248.535],[-116.079,-227.152],[-76.301,-169.391],[-71.875,-105.305],[-64.007,0.5],[-127.173,-60.614],[-176.869,-121.436],[-176.556,-181.412]],"c":true}],"e":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[62.482,13.5],[0.713,41.144],[-1.198,29.377]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-23.658,-5.112],[-0.183,-10.545],[1.875,-45.981]],"v":[[-210.589,-237.355],[-131.463,-229.593],[-83.507,-180.593],[-80.113,-142.106],[-67.007,-0.5],[-149.982,-38.5],[-213.713,-83.644],[-211.875,-154.519]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[62.482,13.5],[0.713,41.144],[-1.198,29.377]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-23.658,-5.112],[-0.183,-10.545],[1.875,-45.981]],"v":[[-210.589,-237.355],[-131.463,-229.593],[-83.507,-180.593],[-80.113,-142.106],[-67.007,-0.5],[-149.982,-38.5],[-213.713,-83.644],[-211.875,-154.519]],"c":true}],"e":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[49.59,6.194],[2.062,42.216],[0.844,29.39]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-24.018,-3],[-0.514,-10.534],[-1.267,-44.142]],"v":[[-219.089,-243.355],[-134.463,-234.593],[-89.007,-187.093],[-84.613,-147.106],[-68.507,-0.5],[-150.482,-30.5],[-213.713,-68.644],[-215.875,-135.019]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0.592,13.423],[-38.037,-14.907],[0,0],[0,0],[0,0],[49.59,6.194],[2.062,42.216],[0.844,29.39]],"o":[[-0.911,-20.645],[31.01,12.153],[0,0],[0,0],[0,0],[-24.018,-3],[-0.514,-10.534],[-1.267,-44.142]],"v":[[-219.089,-243.355],[-134.463,-234.593],[-89.007,-187.093],[-84.613,-147.106],[-68.507,-0.5],[-150.482,-30.5],[-213.713,-68.644],[-215.875,-135.019]],"c":true}],"e":[{"i":[[1.979,12.724],[-39.037,-17.407],[0,0],[0,0],[0,0],[49.482,7],[3.213,42.144],[3.102,33.18]],"o":[[-3.911,-25.145],[30.419,13.564],[0,0],[0,0],[0,0],[-13.966,-1.976],[-0.805,-10.559],[-4.66,-49.835]],"v":[[-212.089,-255.355],[-134.463,-244.093],[-94.007,-197.593],[-89.078,-155.355],[-71.007,-0.5],[-128.482,-21.5],[-193.213,-61.644],[-199.771,-135.061]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[1.979,12.724],[-39.037,-17.407],[0,0],[0,0],[0,0],[49.482,7],[3.213,42.144],[3.102,33.18]],"o":[[-3.911,-25.145],[30.419,13.564],[0,0],[0,0],[0,0],[-13.966,-1.976],[-0.805,-10.559],[-4.66,-49.835]],"v":[[-212.089,-255.355],[-134.463,-244.093],[-94.007,-197.593],[-89.078,-155.355],[-71.007,-0.5],[-128.482,-21.5],[-193.213,-61.644],[-199.771,-135.061]],"c":true}],"e":[{"i":[[2.758,12.578],[-32.825,-21.239],[0,0],[0,0],[0,0],[34.982,4],[4.713,44.644],[5.969,34.173]],"o":[[-8.911,-40.645],[27.963,18.093],[0,0],[0,0],[0,0],[-14.013,-1.602],[-1.112,-10.531],[-8.965,-51.327]],"v":[[-179.589,-262.855],[-130.463,-262.593],[-96.507,-222.593],[-91.042,-175.962],[-71.007,-5],[-104.982,-18.5],[-144.713,-64.144],[-156.854,-139.358]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[2.758,12.578],[-32.825,-21.239],[0,0],[0,0],[0,0],[34.982,4],[4.713,44.644],[5.969,34.173]],"o":[[-8.911,-40.645],[27.963,18.093],[0,0],[0,0],[0,0],[-14.013,-1.602],[-1.112,-10.531],[-8.965,-51.327]],"v":[[-179.589,-262.855],[-130.463,-262.593],[-96.507,-222.593],[-91.042,-175.962],[-71.007,-5],[-104.982,-18.5],[-144.713,-64.144],[-156.854,-139.358]],"c":true}],"e":[{"i":[[3.235,12.104],[-17.053,-18.911],[0,0],[-3.55,-45.138],[0,0],[4.732,-1.5],[7.213,61.144],[5.736,34.461]],"o":[[-17.411,-65.145],[14.963,16.593],[0,0],[3.168,40.285],[0,0],[-13.445,4.262],[-1.291,-10.944],[-8.055,-48.393]],"v":[[-114.589,-252.855],[-102.463,-279.593],[-83.507,-232.593],[-73.45,-164.862],[-61.507,-3],[-68.482,-0.25],[-81.213,-61.644],[-90.187,-141.969]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[3.235,12.104],[-17.053,-18.911],[0,0],[-3.55,-45.138],[0,0],[4.732,-1.5],[7.213,61.144],[5.736,34.461]],"o":[[-17.411,-65.145],[14.963,16.593],[0,0],[3.168,40.285],[0,0],[-13.445,4.262],[-1.291,-10.944],[-8.055,-48.393]],"v":[[-114.589,-252.855],[-102.463,-279.593],[-83.507,-232.593],[-73.45,-164.862],[-61.507,-3],[-68.482,-0.25],[-81.213,-61.644],[-90.187,-141.969]],"c":true}],"e":[{"i":[[2.706,12.59],[7.96,-31.787],[0,0],[0,0],[0,0],[-52.303,4.363],[12.713,79.144],[5.528,26.028]],"o":[[-18.411,-85.645],[-8.037,32.093],[0,0],[0,0],[0,0],[17.982,-1.5],[-1.68,-10.456],[-8.303,-39.094]],"v":[[-41.089,-239.855],[-57.963,-260.093],[-97.507,-214.093],[-93.006,-168.319],[-76.507,-0.5],[-13.982,-7.5],[-8.213,-83.644],[-20.289,-143.83]],"c":true}]},{"t":16}]},"nm":"B"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":9,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"B blue layer 3","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[20.982,16]],"o":[[0,0],[0,0],[-11.216,-8.553]],"v":[[-78.007,-37.093],[-72.507,0.5],[-84.482,-27.5]],"c":true}},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":14,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":3,"nm":"Null smoke","parent":34,"ks":{"o":{"k":0},"r":{"k":26.875},"p":{"k":[{"i":{"x":0.663,"y":0.933},"o":{"x":0.334,"y":0.066},"n":"0p663_0p933_0p334_0p066","t":9,"s":[269.705,292.352,0],"e":[250.705,285.352,0],"to":[-0.5,-0.33333334326744,0],"ti":[-0.60055363178253,-0.48845085501671,0]},{"i":{"x":0.685,"y":1},"o":{"x":0.334,"y":0.228},"n":"0p685_1_0p334_0p228","t":11,"s":[250.705,285.352,0],"e":[276,308,0],"to":[9.00963115692139,7.32784128189087,0],"ti":[-0.48727434873581,0,0]},{"t":22.5016243755817}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":10.0000001490116,"op":24.4098640978336,"st":-11.1670814454556,"bm":0,"sr":0.99000012874603},{"ddd":0,"ind":11,"ty":3,"nm":"Null smoke","parent":34,"ks":{"o":{"k":0},"r":{"k":-21.596},"p":{"k":[{"i":{"x":0.58,"y":0.829},"o":{"x":0.278,"y":0.114},"n":"0p58_0p829_0p278_0p114","t":9,"s":[217.311,226.631,0],"e":[198.311,219.631,0],"to":[0,0,0],"ti":[-3.21461248397827,3.18686246871948,0]},{"i":{"x":0.726,"y":1},"o":{"x":0.278,"y":0.371},"n":"0p726_1_0p278_0p371","t":11,"s":[198.311,219.631,0],"e":[223,195,0],"to":[8.70546340942383,-8.63031387329102,0],"ti":[-1.45636057853699,0,0]},{"t":21.5996034443378}]},"a":{"k":[0,0,0]},"s":{"k":[100,-100,100]}},"ao":0,"ip":10.0000001490116,"op":24.4098640978336,"st":-11.1670814454556,"bm":0,"sr":0.99000012874603},{"ddd":0,"ind":12,"ty":3,"nm":"null smoke","parent":34,"ks":{"o":{"k":0},"r":{"k":16.774},"p":{"k":[{"i":{"x":0.577,"y":0.847},"o":{"x":0.284,"y":0.103},"n":"0p577_0p847_0p284_0p103","t":9,"s":[261.182,221.23,0],"e":[242.182,214.23,0],"to":[0,0,0],"ti":[-3.1457417011261,0.33704376220703,0]},{"i":{"x":0.697,"y":1},"o":{"x":0.284,"y":0.405},"n":"0p697_1_0p284_0p405","t":11,"s":[242.182,214.23,0],"e":[263,212,0],"to":[7.38616800308228,-0.79137516021729,0],"ti":[-3.2727952003479,0.3506566286087,0]},{"t":18.9003057777882}]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":9.9,"s":[100,100,100],"e":[122,122,100]},{"t":20.7004822790623}]}},"ao":0,"ip":10.0000001490116,"op":24.4098640978336,"st":-11.1670814454556,"bm":0,"sr":0.99000012874603},{"ddd":0,"ind":13,"ty":3,"nm":"Null 26","parent":34,"ks":{"o":{"k":0},"r":{"k":-11.144},"p":{"k":[{"i":{"x":0.573,"y":0.757},"o":{"x":0.294,"y":0.167},"n":"0p573_0p757_0p294_0p167","t":9,"s":[267.556,276.269,0],"e":[248.556,269.269,0],"to":[0,0,0],"ti":[-4.61654806137085,2.50612592697144,0]},{"i":{"x":0.699,"y":1},"o":{"x":0.294,"y":0.426},"n":"0p699_1_0p294_0p426","t":11,"s":[248.556,269.269,0],"e":[273,256,0],"to":[9.04685020446777,-4.91114711761475,0],"ti":[-3.86238408088684,2.09672284126282,0]},{"t":17.4897499382496}]},"a":{"k":[0,0,0]},"s":{"k":[100,-100,100]}},"ao":0,"ip":10.0000001490116,"op":21.5510979294777,"st":-11.1670814454556,"bm":0,"sr":0.99000012874603},{"ddd":0,"ind":14,"ty":4,"nm":"B blue layer 2","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[-1.24,5.104],[0.198,1.892],[0,0],[0,0],[0,0],[-0.804,-2.124],[0.343,-5.77],[-1.462,6.091]],"o":[[1.049,-4.319],[-0.297,-2.847],[0,0],[0,0],[0,0],[0.386,1.02],[0.093,-2.77],[0.816,-3.399]],"v":[[-22.001,-21.919],[-20.415,-30.453],[-22.49,-31.96],[-27.759,-19.513],[-32.548,3.666],[-29.736,4.974],[-28.593,7.27],[-25.53,-6.238]],"c":true}],"e":[{"i":[[-1.032,7.042],[1.743,2.453],[0,0],[0,0],[0,0],[-3.84,-2.615],[-0.171,-9.84],[-1.176,8.399]],"o":[[0.873,-5.959],[-2.624,-3.692],[0,0],[0,0],[0,0],[1.845,1.256],[2.053,-13.363],[0.656,-4.688]],"v":[[-19.587,-23.915],[-19.439,-35.572],[-25.627,-39.562],[-30.78,-20.831],[-37.568,3.797],[-29.696,6.026],[-25.346,16.687],[-22.197,-8.804]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[-1.032,7.042],[1.743,2.453],[0,0],[0,0],[0,0],[-3.84,-2.615],[-0.171,-9.84],[-1.176,8.399]],"o":[[0.873,-5.959],[-2.624,-3.692],[0,0],[0,0],[0,0],[1.845,1.256],[2.053,-13.363],[0.656,-4.688]],"v":[[-19.587,-23.915],[-19.439,-35.572],[-25.627,-39.562],[-30.78,-20.831],[-37.568,3.797],[-29.696,6.026],[-25.346,16.687],[-22.197,-8.804]],"c":true}],"e":[{"i":[[-0.284,9.426],[4.036,2.935],[0,0],[0,0],[0,0],[-7.528,-4.291],[-1.775,-13.654],[-0.23,11.234]],"o":[[0.241,-7.977],[-6.074,-4.417],[0,0],[0,0],[0,0],[6.05,3.449],[0.725,-17.904],[0.128,-6.27]],"v":[[-11.741,-32.523],[-17.536,-48.935],[-30.445,-51.84],[-35.936,-26.366],[-41.832,3.676],[-25.8,5.301],[-13.725,26.404],[-12.128,-11.48]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[-0.284,9.426],[4.036,2.935],[0,0],[0,0],[0,0],[-7.528,-4.291],[-1.775,-13.654],[-0.23,11.234]],"o":[[0.241,-7.977],[-6.074,-4.417],[0,0],[0,0],[0,0],[6.05,3.449],[0.725,-17.904],[0.128,-6.27]],"v":[[-11.741,-32.523],[-17.536,-48.935],[-30.445,-51.84],[-35.936,-26.366],[-41.832,3.676],[-25.8,5.301],[-13.725,26.404],[-12.128,-11.48]],"c":true}],"e":[{"i":[[0.512,9.416],[12.036,5.935],[0,0],[0,0],[0,0],[-10.429,-3.711],[-2.775,-15.904],[1.665,20.58]],"o":[[-0.759,-13.977],[-8.794,-4.337],[0,0],[0,0],[0,0],[11.8,4.199],[-1.275,-18.904],[-0.872,-10.77]],"v":[[-0.741,-42.023],[-15.536,-66.935],[-34.945,-68.34],[-40.936,-29.866],[-44.332,2.676],[-17.3,1.801],[4.275,28.904],[1.372,-13.73]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0.512,9.416],[12.036,5.935],[0,0],[0,0],[0,0],[-10.429,-3.711],[-2.775,-15.904],[1.665,20.58]],"o":[[-0.759,-13.977],[-8.794,-4.337],[0,0],[0,0],[0,0],[11.8,4.199],[-1.275,-18.904],[-0.872,-10.77]],"v":[[-0.741,-42.023],[-15.536,-66.935],[-34.945,-68.34],[-40.936,-29.866],[-44.332,2.676],[-17.3,1.801],[4.275,28.904],[1.372,-13.73]],"c":true}],"e":[{"i":[[2.118,9.189],[13.168,3.137],[0,0],[0,0],[0,0],[-21.716,-6.523],[-3.775,-12.404],[3.122,20.41]],"o":[[-4.259,-18.477],[-14.964,-3.565],[0,0],[0,0],[0,0],[22.3,6.699],[-2.775,-18.904],[-2.872,-18.77]],"v":[[12.259,-65.023],[-14.536,-90.935],[-40.945,-84.34],[-43.436,-51.366],[-48.332,2.176],[-5.8,-5.199],[26.275,28.404],[16.372,-36.73]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[2.118,9.189],[13.168,3.137],[0,0],[0,0],[0,0],[-21.716,-6.523],[-3.775,-12.404],[3.122,20.41]],"o":[[-4.259,-18.477],[-14.964,-3.565],[0,0],[0,0],[0,0],[22.3,6.699],[-2.775,-18.904],[-2.872,-18.77]],"v":[[12.259,-65.023],[-14.536,-90.935],[-40.945,-84.34],[-43.436,-51.366],[-48.332,2.176],[-5.8,-5.199],[26.275,28.404],[16.372,-36.73]],"c":true}],"e":[{"i":[[2.118,9.189],[13.533,0.289],[0,0],[0,0],[0,0],[-54.798,-20.458],[-2.775,-7.904],[4.128,20.23]],"o":[[-4.259,-18.477],[-26.464,-0.565],[0,0],[0,0],[0,0],[23.3,8.699],[-0.275,-14.904],[-3.009,-14.743]],"v":[[31.259,-89.523],[-7.536,-119.435],[-46.945,-102.34],[-48.936,-56.366],[-51.832,2.676],[27.2,-12.199],[54.275,22.904],[40.872,-40.73]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[2.118,9.189],[13.533,0.289],[0,0],[0,0],[0,0],[-54.798,-20.458],[-2.775,-7.904],[4.128,20.23]],"o":[[-4.259,-18.477],[-26.464,-0.565],[0,0],[0,0],[0,0],[23.3,8.699],[-0.275,-14.904],[-3.009,-14.743]],"v":[[31.259,-89.523],[-7.536,-119.435],[-46.945,-102.34],[-48.936,-56.366],[-51.832,2.676],[27.2,-12.199],[54.275,22.904],[40.872,-40.73]],"c":true}],"e":[{"i":[[2.741,9.023],[35.536,-9.065],[0,0],[0,0],[0,0],[-58.271,5.078],[7.345,30.067],[7.32,28.81]],"o":[[-6.003,-19.766],[-38.857,9.912],[0,0],[0,0],[0,0],[72.3,-6.301],[-3.275,-13.404],[-3.372,-13.27]],"v":[[77.259,-132.023],[-1.536,-158.935],[-53.945,-122.34],[-54.436,-66.866],[-54.832,1.176],[23.7,-42.699],[103.275,-31.596],[86.872,-91.23]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[2.741,9.023],[35.536,-9.065],[0,0],[0,0],[0,0],[-58.271,5.078],[7.345,30.067],[7.32,28.81]],"o":[[-6.003,-19.766],[-38.857,9.912],[0,0],[0,0],[0,0],[72.3,-6.301],[-3.275,-13.404],[-3.372,-13.27]],"v":[[77.259,-132.023],[-1.536,-158.935],[-53.945,-122.34],[-54.436,-66.866],[-54.832,1.176],[23.7,-42.699],[103.275,-31.596],[86.872,-91.23]],"c":true}],"e":[{"i":[[2.692,12.158],[14.536,-18.065],[0,0],[0,0],[0,0],[-45.886,36.274],[7.225,30.096],[8.494,27.268]],"o":[[-3.759,-16.977],[-25.14,31.242],[0,0],[0,0],[0,0],[35.8,-28.301],[-2.392,-9.964],[-7.872,-25.27]],"v":[[26.759,-245.023],[-23.036,-213.935],[-60.445,-143.84],[-59.936,-99.866],[-58.832,1.676],[-5.3,-69.199],[64.275,-130.596],[40.372,-201.73]],"c":true}]},{"t":8}]},"nm":"B"},{"ty":"mm","mm":2,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":1,"op":9,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"B orange layer 3 shadow 2","parent":34,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[40]},{"t":22}]},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-99,-265],[-121,-264],[-133,-219],[-107,10],[-84,33],[-49,13],[-62,-108]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-70,-275],[-92,-274],[-104,-229],[-78,0],[-55,23],[-20,3],[-33,-118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-70,-275],[-92,-274],[-104,-229],[-78,0],[-55,23],[-20,3],[-33,-118]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-25.168,-278.566],[-92,-274],[-104,-229],[-78,0],[-55,23],[22.285,0.453],[-2.338,-146.717]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-25.168,-278.566],[-92,-274],[-104,-229],[-78,0],[-55,23],[22.285,0.453],[-2.338,-146.717]],"c":true}],"e":[{"i":[[16.753,14.499],[0,0],[0,0],[0,0],[0,0],[-3,10],[21.96,31.036]],"o":[[-16.753,-14.499],[0,0],[0,0],[0,0],[0,0],[3,-10],[2.96,-38.964]],"v":[[19.753,-282.501],[-92,-274],[-104,-229],[-78,0],[-55,23],[64.682,-1.606],[39.04,-141.036]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[16.753,14.499],[0,0],[0,0],[0,0],[0,0],[-3,10],[21.96,31.036]],"o":[[-16.753,-14.499],[0,0],[0,0],[0,0],[0,0],[3,-10],[2.96,-38.964]],"v":[[19.753,-282.501],[-92,-274],[-104,-229],[-78,0],[-55,23],[64.682,-1.606],[39.04,-141.036]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[24,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[12,-31]],"v":[[67,-296],[-92,-274],[-104,-229],[-78,0],[-55,23],[110,9],[57,-143]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[24,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[12,-31]],"v":[[67,-296],[-92,-274],[-104,-229],[-78,0],[-55,23],[110,9],[57,-143]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[60,-286],[-92,-274],[-104,-229],[-78,0],[-55,23],[104,4],[115,-139]],"c":true}]},{"t":19}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[-17.127,-8.576],[-4.287,-8.856]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[11.982,6],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-46.507,-102.093],[-51.007,3.5],[-21.482,0],[-8.713,17.856]],"c":true}],"e":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}],"e":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}],"e":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}],"e":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}],"e":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}],"e":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}],"e":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}],"e":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[37.766,0],[0,0],[0,0],[0,0],[0,41.089]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[37.463,0],[0,-29.004]],"v":[[55.241,-119.037],[79.411,-164.355],[12.037,-226.593],[-79.507,-226.593],[-79.507,0],[23.518,0],[90.287,-63.144]],"c":true}]},{"t":24}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-1.324,-11.343],[1.439,-10.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[3.112,-1.724]],"v":[[-264.603,-181.739],[-262.939,-148.686],[-267.481,-144.898],[-273.154,-192.488],[-271.112,-195.276]],"c":true}],"e":[{"i":[[-1.324,-11.343],[1.439,-10.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[3.112,-1.724]],"v":[[-60.603,-177.739],[-58.939,-144.686],[-63.481,-140.898],[-69.154,-188.488],[-67.112,-191.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.324,-11.343],[1.439,-10.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[3.112,-1.724]],"v":[[-60.603,-177.739],[-58.939,-144.686],[-63.481,-140.898],[-69.154,-188.488],[-67.112,-191.276]],"c":true}],"e":[{"i":[[-1.324,-11.343],[4.939,-8.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[6.612,-3.724]],"v":[[-40.603,-178.239],[-44.439,-146.186],[-54.981,-139.898],[-61.654,-188.488],[-53.612,-193.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-1.324,-11.343],[4.939,-8.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[6.612,-3.724]],"v":[[-40.603,-178.239],[-44.439,-146.186],[-54.981,-139.898],[-61.654,-188.488],[-53.612,-193.776]],"c":true}],"e":[{"i":[[-0.897,-12.761],[7.439,-4.314],[0,0],[0,0],[0,0]],"o":[[1.049,14.93],[0,0],[0,0],[0,0],[11.112,-4.224]],"v":[[-22.103,-175.239],[-29.439,-144.686],[-49.481,-139.398],[-53.654,-189.988],[-40.112,-193.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[-0.897,-12.761],[7.439,-4.314],[0,0],[0,0],[0,0]],"o":[[1.049,14.93],[0,0],[0,0],[0,0],[11.112,-4.224]],"v":[[-22.103,-175.239],[-29.439,-144.686],[-49.481,-139.398],[-53.654,-189.988],[-40.112,-193.776]],"c":true}],"e":[{"i":[[-2.295,-14.342],[14.615,-7.06],[0,0],[0,0],[0,0]],"o":[[2.247,14.043],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[-5.749,-174.483],[-19.893,-141.684],[-44.391,-137.152],[-47.397,-188.494],[-26.535,-193.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[-2.295,-14.342],[14.615,-7.06],[0,0],[0,0],[0,0]],"o":[[2.247,14.043],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[-5.749,-174.483],[-19.893,-141.684],[-44.391,-137.152],[-47.397,-188.494],[-26.535,-193.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[7.397,-171.739],[-12.939,-138.686],[-40.981,-136.898],[-43.154,-187.488],[-17.112,-191.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[7.397,-171.739],[-12.939,-138.686],[-40.981,-136.898],[-43.154,-187.488],[-17.112,-191.276]],"c":true}],"e":[{"i":[[-1.534,-14.395],[17.58,-1.876],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.855,-1.149]],"v":[[16.498,-167.632],[-5.273,-137.269],[-37.547,-135.91],[-39.662,-187.025],[-9.278,-190.383]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[-1.534,-14.395],[17.58,-1.876],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.855,-1.149]],"v":[[16.498,-167.632],[-5.273,-137.269],[-37.547,-135.91],[-39.662,-187.025],[-9.278,-190.383]],"c":true}],"e":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[24.639,-165.025],[-0.738,-135.852],[-35.862,-134.172],[-36.92,-187.061],[-2.991,-188.991]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[24.639,-165.025],[-0.738,-135.852],[-35.862,-134.172],[-36.92,-187.061],[-2.991,-188.991]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[28.279,-161.917],[4.297,-134.435],[-34.177,-133.435],[-34.177,-187.098],[3.297,-187.598]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[28.279,-161.917],[4.297,-134.435],[-34.177,-133.435],[-34.177,-187.098],[3.297,-187.598]],"c":true}],"e":[{"i":[[0,-14.502],[16.037,-0.065],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[31.613,-160.417],[4.963,-133.935],[-33.677,-133.268],[-33.677,-186.264],[4.297,-186.598]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[0,-14.502],[16.037,-0.065],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[31.613,-160.417],[4.963,-133.935],[-33.677,-133.268],[-33.677,-186.264],[4.297,-186.598]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[32.279,-158.917],[6.297,-132.935],[-32.677,-132.935],[-32.677,-184.598],[6.297,-184.598]],"c":true}]},{"t":24}]},"nm":"B"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[2.931,-7.005],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[2.931,0.658],[2.344,19.176]],"v":[[-262.931,-52.995],[-268.677,-50.995],[-274.177,-102.658],[-270.431,-105.658],[-264.344,-84.176]],"c":true}],"e":[{"i":[[2.931,-7.005],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[2.931,0.658],[2.344,19.176]],"v":[[-46.431,-52.995],[-52.177,-50.995],[-57.677,-102.658],[-53.931,-105.658],[-47.844,-84.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[2.931,-7.005],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[2.931,0.658],[2.344,19.176]],"v":[[-46.431,-52.995],[-52.177,-50.995],[-57.677,-102.658],[-53.931,-105.658],[-47.844,-84.176]],"c":true}],"e":[{"i":[[7.931,-3.505],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.344,19.176]],"v":[[-32.931,-51.495],[-45.677,-48.995],[-51.177,-100.658],[-40.431,-104.658],[-26.844,-83.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[7.931,-3.505],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.344,19.176]],"v":[[-32.931,-51.495],[-45.677,-48.995],[-51.177,-100.658],[-40.431,-104.658],[-26.844,-83.176]],"c":true}],"e":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.589,13.962]],"v":[[-19.931,-48.995],[-40.177,-47.495],[-45.177,-99.158],[-24.431,-103.158],[-6.344,-82.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.589,13.962]],"v":[[-19.931,-48.995],[-40.177,-47.495],[-45.177,-99.158],[-24.431,-103.158],[-6.344,-82.676]],"c":true}],"e":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[15.681,-1.092],[2.589,13.962]],"v":[[-7.681,-46.495],[-37.927,-44.245],[-41.177,-97.908],[-14.681,-101.408],[8.906,-80.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[15.681,-1.092],[2.589,13.962]],"v":[[-7.681,-46.495],[-37.927,-44.245],[-41.177,-97.908],[-14.681,-101.408],[8.906,-80.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[2.589,13.962]],"v":[[-0.931,-44.995],[-36.677,-42.995],[-39.177,-97.158],[-3.931,-100.158],[21.656,-76.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[2.589,13.962]],"v":[[-0.931,-44.995],[-36.677,-42.995],[-39.177,-97.158],[-3.931,-100.158],[21.656,-76.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-1.77,-14.283]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.726,14.041]],"v":[[7.902,-44.495],[-34.344,-44.162],[-35.844,-96.158],[5.902,-97.825],[29.989,-73.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-1.77,-14.283]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.726,14.041]],"v":[[7.902,-44.495],[-34.344,-44.162],[-35.844,-96.158],[5.902,-97.825],[29.989,-73.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[12.235,-42.745],[-33.761,-42.329],[-34.761,-95.908],[11.235,-96.242],[37.322,-69.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[12.235,-42.745],[-33.761,-42.329],[-34.761,-95.908],[11.235,-96.242],[37.322,-69.926]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[13.569,-41.995],[-32.677,-41.995],[-33.677,-95.658],[16.569,-94.658],[40.656,-68.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[13.569,-41.995],[-32.677,-41.995],[-33.677,-95.658],[16.569,-94.658],[40.656,-68.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-94.658],[43.156,-67.676]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-94.658],[43.156,-67.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-93.658],[43.156,-67.676]],"c":true}]},{"t":24}]},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":15,"op":23,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"B orange layer 3 shadow","parent":34,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[40]},{"t":22}]},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-99,-265],[-121,-264],[-133,-219],[-107,10],[-84,33],[-49,13],[-62,-108]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-70,-275],[-92,-274],[-104,-229],[-78,0],[-55,23],[-20,3],[-33,-118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-70,-275],[-92,-274],[-104,-229],[-78,0],[-55,23],[-20,3],[-33,-118]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-25.168,-278.566],[-92,-274],[-104,-229],[-78,0],[-55,23],[22.285,0.453],[-2.338,-146.717]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[-25.168,-278.566],[-92,-274],[-104,-229],[-78,0],[-55,23],[22.285,0.453],[-2.338,-146.717]],"c":true}],"e":[{"i":[[16.753,14.499],[0,0],[0,0],[0,0],[0,0],[-3,10],[21.96,31.036]],"o":[[-16.753,-14.499],[0,0],[0,0],[0,0],[0,0],[3,-10],[2.96,-38.964]],"v":[[19.753,-282.501],[-92,-274],[-104,-229],[-78,0],[-55,23],[64.682,-1.606],[39.04,-141.036]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[16.753,14.499],[0,0],[0,0],[0,0],[0,0],[-3,10],[21.96,31.036]],"o":[[-16.753,-14.499],[0,0],[0,0],[0,0],[0,0],[3,-10],[2.96,-38.964]],"v":[[19.753,-282.501],[-92,-274],[-104,-229],[-78,0],[-55,23],[64.682,-1.606],[39.04,-141.036]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[24,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[12,-31]],"v":[[67,-296],[-92,-274],[-104,-229],[-78,0],[-55,23],[110,9],[57,-143]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[24,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[12,-31]],"v":[[67,-296],[-92,-274],[-104,-229],[-78,0],[-55,23],[110,9],[57,-143]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-3,10],[4,29]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[3,-10],[-4,-29]],"v":[[60,-286],[-92,-274],[-104,-229],[-78,0],[-55,23],[104,4],[115,-139]],"c":true}]},{"t":19}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[-17.127,-8.576],[-4.287,-8.856]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[11.982,6],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-46.507,-102.093],[-51.007,3.5],[-21.482,0],[-8.713,17.856]],"c":true}],"e":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}],"e":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}],"e":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}],"e":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}],"e":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}],"e":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}],"e":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}],"e":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[37.766,0],[0,0],[0,0],[0,0],[0,41.089]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[37.463,0],[0,-29.004]],"v":[[55.241,-119.037],[79.411,-164.355],[12.037,-226.593],[-79.507,-226.593],[-79.507,0],[23.518,0],[90.287,-63.144]],"c":true}]},{"t":24}]},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":14,"op":15,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"B orange layer 5","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[-17.127,-8.576],[-4.287,-8.856]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[11.982,6],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-46.507,-102.093],[-51.007,3.5],[-21.482,0],[-8.713,17.856]],"c":true}],"e":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}],"e":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}],"e":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}],"e":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}],"e":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}],"e":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}],"e":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}],"e":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[37.766,0],[0,0],[0,0],[0,0],[0,41.089]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[37.463,0],[0,-29.004]],"v":[[55.241,-119.037],[79.411,-164.355],[12.037,-226.593],[-79.507,-226.593],[-79.507,0],[23.518,0],[90.287,-63.144]],"c":true}]},{"t":24}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-1.324,-11.343],[1.439,-10.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[3.112,-1.724]],"v":[[-264.603,-181.739],[-262.939,-148.686],[-267.481,-144.898],[-273.154,-192.488],[-271.112,-195.276]],"c":true}],"e":[{"i":[[-1.324,-11.343],[1.439,-10.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[3.112,-1.724]],"v":[[-60.603,-177.739],[-58.939,-144.686],[-63.481,-140.898],[-69.154,-188.488],[-67.112,-191.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.324,-11.343],[1.439,-10.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[3.112,-1.724]],"v":[[-60.603,-177.739],[-58.939,-144.686],[-63.481,-140.898],[-69.154,-188.488],[-67.112,-191.276]],"c":true}],"e":[{"i":[[-1.324,-11.343],[4.939,-8.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[6.612,-3.724]],"v":[[-40.603,-178.239],[-44.439,-146.186],[-54.981,-139.898],[-61.654,-188.488],[-53.612,-193.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-1.324,-11.343],[4.939,-8.814],[0,0],[0,0],[0,0]],"o":[[1.603,13.739],[0,0],[0,0],[0,0],[6.612,-3.724]],"v":[[-40.603,-178.239],[-44.439,-146.186],[-54.981,-139.898],[-61.654,-188.488],[-53.612,-193.776]],"c":true}],"e":[{"i":[[-0.897,-12.761],[7.439,-4.314],[0,0],[0,0],[0,0]],"o":[[1.049,14.93],[0,0],[0,0],[0,0],[11.112,-4.224]],"v":[[-22.103,-175.239],[-29.439,-144.686],[-49.481,-139.398],[-53.654,-189.988],[-40.112,-193.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[-0.897,-12.761],[7.439,-4.314],[0,0],[0,0],[0,0]],"o":[[1.049,14.93],[0,0],[0,0],[0,0],[11.112,-4.224]],"v":[[-22.103,-175.239],[-29.439,-144.686],[-49.481,-139.398],[-53.654,-189.988],[-40.112,-193.776]],"c":true}],"e":[{"i":[[-2.295,-14.342],[14.615,-7.06],[0,0],[0,0],[0,0]],"o":[[2.247,14.043],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[-5.749,-174.483],[-19.893,-141.684],[-44.391,-137.152],[-47.397,-188.494],[-26.535,-193.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[-2.295,-14.342],[14.615,-7.06],[0,0],[0,0],[0,0]],"o":[[2.247,14.043],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[-5.749,-174.483],[-19.893,-141.684],[-44.391,-137.152],[-47.397,-188.494],[-26.535,-193.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[7.397,-171.739],[-12.939,-138.686],[-40.981,-136.898],[-43.154,-187.488],[-17.112,-191.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[7.397,-171.739],[-12.939,-138.686],[-40.981,-136.898],[-43.154,-187.488],[-17.112,-191.276]],"c":true}],"e":[{"i":[[-1.534,-14.395],[17.58,-1.876],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.855,-1.149]],"v":[[16.498,-167.632],[-5.273,-137.269],[-37.547,-135.91],[-39.662,-187.025],[-9.278,-190.383]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[-1.534,-14.395],[17.58,-1.876],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.855,-1.149]],"v":[[16.498,-167.632],[-5.273,-137.269],[-37.547,-135.91],[-39.662,-187.025],[-9.278,-190.383]],"c":true}],"e":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[24.639,-165.025],[-0.738,-135.852],[-35.862,-134.172],[-36.92,-187.061],[-2.991,-188.991]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[24.639,-165.025],[-0.738,-135.852],[-35.862,-134.172],[-36.92,-187.061],[-2.991,-188.991]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[28.279,-161.917],[4.297,-134.435],[-34.177,-133.435],[-34.177,-187.098],[3.297,-187.598]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[28.279,-161.917],[4.297,-134.435],[-34.177,-133.435],[-34.177,-187.098],[3.297,-187.598]],"c":true}],"e":[{"i":[[0,-14.502],[16.037,-0.065],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[31.613,-160.417],[4.963,-133.935],[-33.677,-133.268],[-33.677,-186.264],[4.297,-186.598]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[0,-14.502],[16.037,-0.065],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[31.613,-160.417],[4.963,-133.935],[-33.677,-133.268],[-33.677,-186.264],[4.297,-186.598]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[32.279,-158.917],[6.297,-132.935],[-32.677,-132.935],[-32.677,-184.598],[6.297,-184.598]],"c":true}]},{"t":24}]},"nm":"B"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[2.931,-7.005],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[2.931,0.658],[2.344,19.176]],"v":[[-262.931,-52.995],[-268.677,-50.995],[-274.177,-102.658],[-270.431,-105.658],[-264.344,-84.176]],"c":true}],"e":[{"i":[[2.931,-7.005],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[2.931,0.658],[2.344,19.176]],"v":[[-46.431,-52.995],[-52.177,-50.995],[-57.677,-102.658],[-53.931,-105.658],[-47.844,-84.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[2.931,-7.005],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[2.931,0.658],[2.344,19.176]],"v":[[-46.431,-52.995],[-52.177,-50.995],[-57.677,-102.658],[-53.931,-105.658],[-47.844,-84.176]],"c":true}],"e":[{"i":[[7.931,-3.505],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.344,19.176]],"v":[[-32.931,-51.495],[-45.677,-48.995],[-51.177,-100.658],[-40.431,-104.658],[-26.844,-83.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[7.931,-3.505],[0,0],[0,0],[0,0],[-1.768,-14.461]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.344,19.176]],"v":[[-32.931,-51.495],[-45.677,-48.995],[-51.177,-100.658],[-40.431,-104.658],[-26.844,-83.176]],"c":true}],"e":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.589,13.962]],"v":[[-19.931,-48.995],[-40.177,-47.495],[-45.177,-99.158],[-24.431,-103.158],[-6.344,-82.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[8.931,-2.842],[2.589,13.962]],"v":[[-19.931,-48.995],[-40.177,-47.495],[-45.177,-99.158],[-24.431,-103.158],[-6.344,-82.676]],"c":true}],"e":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[15.681,-1.092],[2.589,13.962]],"v":[[-7.681,-46.495],[-37.927,-44.245],[-41.177,-97.908],[-14.681,-101.408],[8.906,-80.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[15.681,-1.092],[2.589,13.962]],"v":[[-7.681,-46.495],[-37.927,-44.245],[-41.177,-97.908],[-14.681,-101.408],[8.906,-80.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[2.589,13.962]],"v":[[-0.931,-44.995],[-36.677,-42.995],[-39.177,-97.158],[-3.931,-100.158],[21.656,-76.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[2.589,13.962]],"v":[[-0.931,-44.995],[-36.677,-42.995],[-39.177,-97.158],[-3.931,-100.158],[21.656,-76.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-1.77,-14.283]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.726,14.041]],"v":[[7.902,-44.495],[-34.344,-44.162],[-35.844,-96.158],[5.902,-97.825],[29.989,-73.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-1.77,-14.283]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.726,14.041]],"v":[[7.902,-44.495],[-34.344,-44.162],[-35.844,-96.158],[5.902,-97.825],[29.989,-73.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[12.235,-42.745],[-33.761,-42.329],[-34.761,-95.908],[11.235,-96.242],[37.322,-69.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[12.235,-42.745],[-33.761,-42.329],[-34.761,-95.908],[11.235,-96.242],[37.322,-69.926]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[13.569,-41.995],[-32.677,-41.995],[-33.677,-95.658],[16.569,-94.658],[40.656,-68.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[13.569,-41.995],[-32.677,-41.995],[-33.677,-95.658],[16.569,-94.658],[40.656,-68.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-94.658],[43.156,-67.676]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-94.658],[43.156,-67.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[16.569,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-93.658],[43.156,-67.676]],"c":true}]},{"t":24}]},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":15,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"B orange layer 3","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[-17.127,-8.576],[-4.287,-8.856]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[11.982,6],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-46.507,-102.093],[-51.007,3.5],[-21.482,0],[-8.713,17.856]],"c":true}],"e":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-73.259,-145.537],[-82.089,-178.355],[-90.963,-174.593],[-83.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-87.007,-159.593],[-69.007,-0.5],[-59.482,-33.5],[-71.713,-94.644]],"c":true}],"e":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[2.759,16.037],[1.089,6.855],[3.15,2.884],[0,0],[0,0],[0.024,23.358],[2.213,13.144]],"o":[[-0.741,-7.963],[-2.92,-18.378],[-1.537,-1.407],[0,0],[0,0],[-0.018,-17.5],[-2.755,-16.362]],"v":[[-74.759,-145.537],[-84.089,-185.855],[-90.463,-219.593],[-95.507,-208.093],[-71.507,0.5],[-51.482,-32],[-65.713,-94.144]],"c":true}],"e":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.509,31.287],[6.813,20.34],[4.963,-11.907],[0,0],[0,0],[-17.018,16],[9.213,50.737]],"o":[[-6.241,-30.463],[-5.911,-17.645],[-6.06,14.54],[0,0],[0,0],[9.992,-9.394],[-3.787,-20.856]],"v":[[-51.259,-158.537],[-71.589,-238.355],[-80.963,-225.093],[-96.007,-202.593],[-72.007,0],[-29.482,-25.5],[-34.213,-88.644]],"c":true}],"e":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[8.509,31.287],[4.772,20.913],[18.771,-35.562],[0,0],[0,0],[-35.294,7.846],[9.713,50.644]],"o":[[-6.241,-30.463],[-20.911,-91.645],[-14.037,26.593],[0,0],[0,0],[44.982,-10],[-4.991,-26.022]],"v":[[-6.759,-153.537],[-31.089,-246.855],[-59.463,-246.093],[-97.007,-208.093],[-74.007,0.5],[-18.482,-13.5],[11.287,-77.644]],"c":true}],"e":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[9.759,27.037],[3.56,21.153],[32.297,-24.991],[0,0],[0,0],[-51.855,8.105],[16.213,81.144]],"o":[[-6.241,-30.463],[-13.911,-82.645],[-39.537,30.593],[0,0],[0,0],[47.982,-7.5],[-5.191,-25.982]],"v":[[27.241,-164.537],[14.411,-234.855],[-36.963,-250.093],[-97.507,-214.093],[-76.507,-0.5],[0.018,-9],[47.287,-86.144]],"c":true}],"e":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[9.759,25.037],[3.589,22.355],[46.963,-21.907],[0,0],[0,0],[-52.444,2.078],[5.958,46.178]],"o":[[-1.241,-27.463],[-10.199,-63.523],[-35.55,16.583],[0,0],[0,0],[50.482,-2],[-5.787,-44.856]],"v":[[49.241,-157.537],[45.911,-224.855],[-24.963,-243.593],[-95.007,-217.593],[-76.507,-0.5],[33.018,-7],[72.287,-80.144]],"c":true}],"e":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,21.037],[2.598,21.286],[45.963,-10.657],[0,0],[0,0],[-28.018,1],[5.463,51.394]],"o":[[3.509,-24.213],[-4.161,-64.895],[-38.537,12.343],[0,0],[0,0],[59.982,2.5],[-3.676,-32.795]],"v":[[59.241,-140.287],[64.661,-201.605],[-11.463,-241.343],[-91.757,-220.343],[-77.257,-0.75],[28.018,-4.5],[84.787,-81.144]],"c":true}],"e":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[21.759,21.537],[2.058,21.352],[37.463,-5.907],[0,0],[0,0],[0,0],[4.713,56.644]],"o":[[10.259,-19.963],[-5.411,-56.145],[-38.749,6.11],[0,0],[0,0],[45.482,1],[-2.393,-28.758]],"v":[[62.241,-133.037],[74.911,-192.355],[-0.463,-236.593],[-88.507,-223.093],[-78.007,-1],[23.018,-2.5],[92.287,-70.144]],"c":true}],"e":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[0.089,22.605],[44.213,-5.407],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[11.759,-13.713],[-2.705,-47.408],[-24.787,2.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[60.241,-127.787],[78.411,-180.605],[5.787,-233.593],[-86.007,-223.593],[-78.007,-1],[24.768,-0.25],[93.287,-66.644]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[21.149,8.762],[0,21.451],[38.463,-2.407],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[59.241,-124.037],[79.411,-176.855],[14.537,-231.593],[-83.507,-224.093],[-78.007,-1],[23.518,0],[94.787,-61.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":22.253,"s":[{"i":[[21.149,8.762],[0.749,21.438],[38.114,-1.203],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.741,-120.537],[79.911,-168.605],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[92.037,-63.144]],"c":true}],"e":[{"i":[[21.149,8.762],[0,21.451],[37.766,0],[0,0],[0,0],[0,0],[0,41.089]],"o":[[15.106,-9.064],[0,-38.672],[0,0],[0,0],[0,0],[37.463,0],[0,-29.004]],"v":[[55.241,-119.037],[79.411,-164.355],[12.037,-226.593],[-79.507,-226.593],[-79.507,0],[23.518,0],[90.287,-63.144]],"c":true}]},{"t":24}]},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":11,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"B orange layer 2 shadow","parent":34,"ks":{"o":{"k":5},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[27,-20],[0,0],[-5,-11],[-20,3],[0,21],[-1,63]],"o":[[-10.811,8.008],[0,0],[5,11],[20,-3],[0,-21],[1,-63]],"v":[[-55,-172],[-86,-85],[-92,10],[-95,22],[0,21],[-15,-137]],"c":true}],"e":[{"i":[[27,-20],[0,0],[-5,-11],[-20,3],[0,21],[-1,63]],"o":[[-10.811,8.008],[0,0],[5,11],[20,-3],[0,-21],[1,-63]],"v":[[-55,-172],[-86,-85],[-92,10],[-58,40],[42,28],[20,-147]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[27,-20],[0,0],[-5,-11],[-20,3],[0,21],[-1,63]],"o":[[-10.811,8.008],[0,0],[5,11],[20,-3],[0,-21],[1,-63]],"v":[[-55,-172],[-86,-85],[-92,10],[-58,40],[42,28],[20,-147]],"c":true}],"e":[{"i":[[55,-29],[0,0],[-5,-11],[-20,3],[0,21],[28,61]],"o":[[-55,29],[0,0],[5,11],[20,-3],[0,-21],[-26.285,-57.263]],"v":[[-79,-179],[-124,-104],[-119,72],[-21,87],[50,-29],[4,-198]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[55,-29],[0,0],[-5,-11],[-20,3],[0,21],[28,61]],"o":[[-55,29],[0,0],[5,11],[20,-3],[0,-21],[-26.285,-57.263]],"v":[[-79,-179],[-124,-104],[-119,72],[-21,87],[50,-29],[4,-198]],"c":true}],"e":[{"i":[[29.478,-54.745],[0,0],[-5,-11],[-20,3],[0,21],[13,66]],"o":[[-7,13],[0,0],[5,11],[20,-3],[0,-21],[-12.177,-61.82]],"v":[[-115,-165],[-124,-104],[-107,16],[-80,39],[-19,5],[-54,-216]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[29.478,-54.745],[0,0],[-5,-11],[-20,3],[0,21],[13,66]],"o":[[-7,13],[0,0],[5,11],[20,-3],[0,-21],[-12.177,-61.82]],"v":[[-115,-165],[-124,-104],[-107,16],[-80,39],[-19,5],[-54,-216]],"c":true}],"e":[{"i":[[29.478,-54.745],[0,0],[-5,-11],[-20,3],[0,21],[13,66]],"o":[[-7,13],[0,0],[5,11],[20,-3],[0,-21],[-12.177,-61.82]],"v":[[-150,-165],[-159,-104],[-142,16],[-115,39],[-54,5],[-77,-199]],"c":true}]},{"t":10}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-0.993,13.755],[-0.576,6.238],[1.302,0.585],[0,0],[0,0],[0,0],[-2.275,-1.384],[-0.28,-3.435]],"o":[[1.757,-16.495],[0.509,-5.518],[-2.446,-1.099],[0,0],[0,0],[0,0],[1.508,0.917],[1.082,-12.356]],"v":[[-36.507,-32.755],[-33.509,-58.982],[-33.554,-66.651],[-36.609,-64.578],[-39.481,-45.472],[-46.5,1.214],[-41.725,1.384],[-40.332,4.606]],"c":true}],"e":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-44.677,-58.245],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-44.677,-58.245],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}],"e":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[0,0],[-15.518,-7.5],[-1.787,-7.356]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[0,0],[12.065,5.831],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-47.257,-101.593],[-49.484,-64.148],[-53.507,3.5],[-22.232,0.5],[-8.713,17.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[0,0],[-15.518,-7.5],[-1.787,-7.356]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[0,0],[12.065,5.831],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-47.257,-101.593],[-49.484,-64.148],[-53.507,3.5],[-22.232,0.5],[-8.713,17.856]],"c":true}],"e":[{"i":[[5.759,37.537],[1.35375,9.22725],[1.2945,5.92749999999999],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-3.1205,-19.9815],[-1.35375,-9.22725],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[12.9565,-90.9865],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[1.35375,9.22725],[1.2945,5.92749999999999],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-3.1205,-19.9815],[-1.35375,-9.22725],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[12.9565,-90.9865],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[1.54124999999999,8.22725],[1.5445,4.67749999999998],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-3.62050000000001,-19.2315],[-1.54125000000001,-8.22725],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[76.519,-124.8615],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[1.54124999999999,8.22725],[1.5445,4.67749999999998],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-3.62050000000001,-19.2315],[-1.54125000000001,-8.22725],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[76.519,-124.8615],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.4935,12.920375],[2.2355,2.65499999999997],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-3.6205,-10.9815],[-4.4935,-12.920375],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[32.28725,-233.940875],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.4935,12.920375],[2.2355,2.65499999999997],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-3.6205,-10.9815],[-4.4935,-12.920375],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[32.28725,-233.940875],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[3.073,9.17012500000001],[0.66749999999999,3.40600000000001],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-1.3705,-6.23150000000001],[-3.07300000000001,-9.17012499999998],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-60.45125,-196.815125],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[3.073,9.17012500000001],[0.66749999999999,3.40600000000001],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-1.3705,-6.23150000000001],[-3.07300000000001,-9.17012499999998],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-60.45125,-196.815125],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.545875,6.84424999999999],[0.27600000000001,3.45950000000002],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.37050000000001,-3.98150000000001],[-0.545875,-6.84424999999999],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-80.744875,-161.3375],[-82.089,-178.355],[-90.963,-174.593],[-80.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"t":11}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-0.993,13.755],[-0.576,6.238],[1.302,0.585],[0,0],[0,0],[-2.275,-1.384],[-0.28,-3.435]],"o":[[1.757,-16.495],[0.509,-5.518],[-2.446,-1.099],[0,0],[0,0],[1.508,0.917],[1.082,-12.356]],"v":[[-36.507,-32.755],[-33.509,-58.982],[-33.554,-66.651],[-36.609,-64.578],[-46.5,1.214],[-41.725,1.384],[-40.332,4.606]],"c":true}],"e":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}],"e":[{"i":[[0.832,26.037],[0.279,9.355],[-0.34,-0.907],[0,0],[0,0],[-1.764,2.5],[-2,4.644]],"o":[[-0.587,-21.463],[-0.181,-6.06],[-2.641,3.629],[0,0],[0,0],[1.764,-2.5],[3,-26.606]],"v":[[-48.414,-64.537],[-46.516,-92.355],[-47.66,-93.593],[-51.128,-76.843],[-60.507,13.25],[-56.514,6],[-52.5,-2.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0.832,26.037],[0.279,9.355],[-0.34,-0.907],[0,0],[0,0],[-1.764,2.5],[-2,4.644]],"o":[[-0.587,-21.463],[-0.181,-6.06],[-2.641,3.629],[0,0],[0,0],[1.764,-2.5],[3,-26.606]],"v":[[-48.414,-64.537],[-46.516,-92.355],[-47.66,-93.593],[-51.128,-76.843],[-60.507,13.25],[-56.514,6],[-52.5,-2.394]],"c":true}],"e":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-80.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"t":11}]},"nm":"B 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":6,"op":11,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"B orange layer 2","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-0.993,13.755],[-0.576,6.238],[1.302,0.585],[0,0],[0,0],[0,0],[-2.275,-1.384],[-0.28,-3.435]],"o":[[1.757,-16.495],[0.509,-5.518],[-2.446,-1.099],[0,0],[0,0],[0,0],[1.508,0.917],[1.082,-12.356]],"v":[[-36.507,-32.755],[-33.509,-58.982],[-33.554,-66.651],[-36.609,-64.578],[-39.481,-45.472],[-46.5,1.214],[-41.725,1.384],[-40.332,4.606]],"c":true}],"e":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-44.677,-58.245],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-44.677,-58.245],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}],"e":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[0,0],[-15.518,-7.5],[-1.787,-7.356]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[0,0],[12.065,5.831],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-47.257,-101.593],[-49.484,-64.148],[-53.507,3.5],[-22.232,0.5],[-8.713,17.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[1.759,26.037],[0.589,9.355],[8.227,2.939],[0,0],[0,0],[0,0],[-15.518,-7.5],[-1.787,-7.356]],"o":[[-1.241,-21.463],[-0.382,-6.06],[-9.537,-3.407],[0,0],[0,0],[0,0],[12.065,5.831],[-1.787,-26.856]],"v":[[-12.759,-43.537],[-15.089,-87.355],[-25.963,-106.093],[-47.257,-101.593],[-49.484,-64.148],[-53.507,3.5],[-22.232,0.5],[-8.713,17.856]],"c":true}],"e":[{"i":[[5.759,37.537],[1.35375,9.22725],[1.2945,5.92749999999999],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-3.1205,-19.9815],[-1.35375,-9.22725],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[12.9565,-90.9865],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[1.35375,9.22725],[1.2945,5.92749999999999],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-3.1205,-19.9815],[-1.35375,-9.22725],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[12.9565,-90.9865],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[1.54124999999999,8.22725],[1.5445,4.67749999999998],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-3.62050000000001,-19.2315],[-1.54125000000001,-8.22725],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[76.519,-124.8615],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[1.54124999999999,8.22725],[1.5445,4.67749999999998],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-3.62050000000001,-19.2315],[-1.54125000000001,-8.22725],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[76.519,-124.8615],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.4935,12.920375],[2.2355,2.65499999999997],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-3.6205,-10.9815],[-4.4935,-12.920375],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[32.28725,-233.940875],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.4935,12.920375],[2.2355,2.65499999999997],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-3.6205,-10.9815],[-4.4935,-12.920375],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[32.28725,-233.940875],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[3.073,9.17012500000001],[0.66749999999999,3.40600000000001],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-1.3705,-6.23150000000001],[-3.07300000000001,-9.17012499999998],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-60.45125,-196.815125],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[3.073,9.17012500000001],[0.66749999999999,3.40600000000001],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-1.3705,-6.23150000000001],[-3.07300000000001,-9.17012499999998],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-60.45125,-196.815125],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.545875,6.84424999999999],[0.27600000000001,3.45950000000002],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.37050000000001,-3.98150000000001],[-0.545875,-6.84424999999999],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-80.744875,-161.3375],[-82.089,-178.355],[-90.963,-174.593],[-80.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"t":11}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-0.993,13.755],[-0.576,6.238],[1.302,0.585],[0,0],[0,0],[-2.275,-1.384],[-0.28,-3.435]],"o":[[1.757,-16.495],[0.509,-5.518],[-2.446,-1.099],[0,0],[0,0],[1.508,0.917],[1.082,-12.356]],"v":[[-36.507,-32.755],[-33.509,-58.982],[-33.554,-66.651],[-36.609,-64.578],[-46.5,1.214],[-41.725,1.384],[-40.332,4.606]],"c":true}],"e":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-0.741,19.537],[-0.161,8.855],[3.194,1.609],[0,0],[0,0],[-8.518,-3.5],[-1.037,-4.856]],"o":[[-0.241,-13.963],[0.11,-6.071],[-3.787,-1.907],[0,0],[0,0],[4.451,1.829],[0.963,-28.106]],"v":[[-29.259,-43.037],[-28.339,-74.105],[-32.213,-84.593],[-40.757,-84.843],[-54.257,6.75],[-37.482,2.75],[-30.463,12.606]],"c":true}],"e":[{"i":[[0.832,26.037],[0.279,9.355],[-0.34,-0.907],[0,0],[0,0],[-1.764,2.5],[-2,4.644]],"o":[[-0.587,-21.463],[-0.181,-6.06],[-2.641,3.629],[0,0],[0,0],[1.764,-2.5],[3,-26.606]],"v":[[-48.414,-64.537],[-46.516,-92.355],[-47.66,-93.593],[-51.128,-76.843],[-60.507,13.25],[-56.514,6],[-52.5,-2.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0.832,26.037],[0.279,9.355],[-0.34,-0.907],[0,0],[0,0],[-1.764,2.5],[-2,4.644]],"o":[[-0.587,-21.463],[-0.181,-6.06],[-2.641,3.629],[0,0],[0,0],[1.764,-2.5],[3,-26.606]],"v":[[-48.414,-64.537],[-46.516,-92.355],[-47.66,-93.593],[-51.128,-76.843],[-60.507,13.25],[-56.514,6],[-52.5,-2.394]],"c":true}],"e":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[5.759,37.537],[2.589,11.855],[15.486,1.354],[0,0],[0,0],[-32.518,-11.5],[-4.287,-8.856]],"o":[[-6.241,-39.963],[-1.296,-5.932],[-27.537,-2.407],[0,0],[0,0],[21.489,7.6],[-3.287,-20.356]],"v":[[19.241,-49.037],[9.411,-111.855],[-17.463,-132.593],[-53.507,-120.593],[-55.507,2.5],[4.018,-9.5],[30.287,16.856]],"c":true}],"e":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[7.259,32.537],[3.089,9.355],[44.113,-3.3],[0,0],[0,0],[-53.018,1],[3.713,19.144]],"o":[[-7.241,-38.463],[-1.904,-5.765],[-48.037,3.593],[0,0],[0,0],[60.505,-1.141],[-3.159,-16.288]],"v":[[83.741,-85.537],[72.411,-142.355],[4.537,-172.593],[-61.007,-138.593],[-59.007,1.5],[28.018,-33.5],[99.787,-17.644]],"c":true}],"e":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.759,29.037],[4.471,5.31],[29.463,-40.407],[0,0],[0,0],[-43.018,23.5],[3.713,19.144]],"o":[[-7.241,-21.963],[-3.911,-4.645],[-7.99,10.959],[0,0],[0,0],[44.538,-24.331],[-3.159,-16.288]],"v":[[45.241,-195.037],[21.411,-260.355],[-37.963,-203.593],[-68.007,-155.093],[-61.507,3],[11.018,-60],[71.287,-111.144]],"c":true}],"e":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[4.259,17.037],[1.335,6.812],[2.963,-14.907],[0,0],[0,0],[-7.018,26.5],[3.713,19.144]],"o":[[-2.741,-12.463],[-0.911,-4.645],[-2.644,13.302],[0,0],[0,0],[9.673,-36.528],[-3.159,-16.288]],"v":[[-52.759,-171.537],[-67.089,-217.855],[-68.963,-189.593],[-76.007,-170.093],[-64.007,1.5],[-40.982,-50],[-39.713,-115.644]],"c":true}],"e":[{"i":[[2.759,16.037],[0.552,6.919],[3.15,2.884],[0,0],[0,0],[4.147,22.987],[2.213,13.144]],"o":[[-0.741,-7.963],[-0.411,-5.145],[-1.537,-1.407],[0,0],[0,0],[-3.518,-19.5],[-2.755,-16.362]],"v":[[-79.259,-143.537],[-82.089,-178.355],[-90.963,-174.593],[-80.007,-159.593],[-66.507,1.5],[-58.482,-36],[-71.713,-94.644]],"c":true}]},{"t":11}]},"nm":"B 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":4,"op":11,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"B blue layer 1","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[0,0],[1.135,0.16],[0.519,-0.169],[0.368,-1.304],[0.165,-1.422],[-2.463,0.226],[-0.024,0.731],[0.1,1.443]],"o":[[0,0],[-0.591,-0.084],[-0.572,0.81],[-0.408,1.446],[-0.141,1.212],[2.637,-0.242],[-0.113,-1.414],[-0.065,-0.946]],"v":[[-29.39,-0.524],[-31.301,-0.669],[-32.486,-0.16],[-34.047,2.548],[-34.859,5.55],[-31.571,8.49],[-28.75,5.075],[-29.073,1.857]],"c":true}],"e":[{"i":[[0,0],[4.131,0.584],[1.89,-0.615],[1.34,-4.746],[0.602,-5.175],[-8.964,0.823],[-0.088,2.66],[0.363,5.252]],"o":[[0,0],[-2.152,-0.304],[-2.08,2.95],[-1.486,5.262],[-0.513,4.413],[9.6,-0.881],[-0.41,-5.148],[-0.238,-3.443]],"v":[[-27.079,-7.92],[-34.036,-8.446],[-38.349,-6.594],[-44.031,3.262],[-46.987,14.191],[-35.017,24.893],[-24.75,12.463],[-25.925,0.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[4.131,0.584],[1.89,-0.615],[1.34,-4.746],[0.602,-5.175],[-8.964,0.823],[-0.088,2.66],[0.363,5.252]],"o":[[0,0],[-2.152,-0.304],[-2.08,2.95],[-1.486,5.262],[-0.513,4.413],[9.6,-0.881],[-0.41,-5.148],[-0.238,-3.443]],"v":[[-27.079,-7.92],[-34.036,-8.446],[-38.349,-6.594],[-44.031,3.262],[-46.987,14.191],[-35.017,24.893],[-24.75,12.463],[-25.925,0.75]],"c":true}],"e":[{"i":[[0,0],[8.324,1.188],[3.808,-1.25],[2.7,-9.654],[1.213,-10.525],[-18.063,1.674],[-0.178,5.41],[0.731,10.682]],"o":[[0,0],[-4.337,-0.619],[-4.192,6],[-2.994,10.703],[-1.034,8.975],[19.344,-1.793],[-0.826,-10.471],[-0.479,-7.002]],"v":[[-18.099,-21.695],[-32.116,-22.765],[-40.808,-19],[-52.256,1.047],[-58.213,23.275],[-34.094,45.043],[-13.405,19.761],[-15.773,-4.063]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[8.324,1.188],[3.808,-1.25],[2.7,-9.654],[1.213,-10.525],[-18.063,1.674],[-0.178,5.41],[0.731,10.682]],"o":[[0,0],[-4.337,-0.619],[-4.192,6],[-2.994,10.703],[-1.034,8.975],[19.344,-1.793],[-0.826,-10.471],[-0.479,-7.002]],"v":[[-18.099,-21.695],[-32.116,-22.765],[-40.808,-19],[-52.256,1.047],[-58.213,23.275],[-34.094,45.043],[-13.405,19.761],[-15.773,-4.063]],"c":true}],"e":[{"i":[[0,0],[12.843,1.833],[4.559,8.938],[3.186,-15.134],[3.035,-13.004],[-27.952,1.396],[-0.275,8.346],[1.128,16.48]],"o":[[0,0],[-6.691,-0.955],[-2.441,12.438],[-4.015,19.071],[-3.168,13.574],[31.05,-1.551],[-1.275,-16.154],[-0.74,-10.803]],"v":[[-2.195,-42.59],[-24.593,-43.083],[-44.559,-47.688],[-56.436,-7.116],[-64.082,27.176],[-28.8,62.301],[4.275,27.154],[0.622,-14.23]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[12.843,1.833],[4.559,8.938],[3.186,-15.134],[3.035,-13.004],[-27.952,1.396],[-0.275,8.346],[1.128,16.48]],"o":[[0,0],[-6.691,-0.955],[-2.441,12.438],[-4.015,19.071],[-3.168,13.574],[31.05,-1.551],[-1.275,-16.154],[-0.74,-10.803]],"v":[[-2.195,-42.59],[-24.593,-43.083],[-44.559,-47.688],[-56.436,-7.116],[-64.082,27.176],[-28.8,62.301],[4.275,27.154],[0.622,-14.23]],"c":true}],"e":[{"i":[[0,0],[30.844,0.507],[4.059,4.688],[1.936,-11.384],[-2.168,-13.176],[-27.451,0.398],[1.225,11.846],[3.429,20.36]],"o":[[0,0],[-10.157,-0.167],[-1.941,14.188],[-3.267,19.214],[1.6,9.723],[38.05,-0.551],[-1.275,-15.904],[-3.372,-20.02]],"v":[[12.805,-58.84],[-26.843,-38.833],[-49.309,-49.938],[-55.686,-8.616],[-60.582,43.176],[-20.55,70.051],[26.275,28.904],[17.122,-30.23]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[30.844,0.507],[4.059,4.688],[1.936,-11.384],[-2.168,-13.176],[-27.451,0.398],[1.225,11.846],[3.429,20.36]],"o":[[0,0],[-10.157,-0.167],[-1.941,14.188],[-3.267,19.214],[1.6,9.723],[38.05,-0.551],[-1.275,-15.904],[-3.372,-20.02]],"v":[[12.805,-58.84],[-26.843,-38.833],[-49.309,-49.938],[-55.686,-8.616],[-60.582,43.176],[-20.55,70.051],[26.275,28.904],[17.122,-30.23]],"c":true}],"e":[{"i":[[0,0],[-0.089,-0.987],[-0.278,-3.396],[-0.525,-7.148],[-4.945,-5.803],[-9.866,11.148],[0.725,3.596],[6.837,19.482]],"o":[[0,0],[0.121,1.333],[0.323,3.936],[1.428,19.437],[2.832,3.324],[11.55,-13.051],[-1.275,-15.904],[-5.622,-16.02]],"v":[[10.305,-57.09],[10.44,-55.64],[11.04,-48.623],[12.314,-32.116],[21.668,57.426],[44.2,51.551],[54.275,22.904],[39.872,-29.73]],"c":true}]},{"t":6}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[-0.404,3.747],[1.477,0.688],[1.74,-9.708],[-5.091,0.021],[-0.25,4.402]],"o":[[-1.673,-0.138],[-1.523,11.938],[-0.954,5.323],[3.195,-0.013],[0.819,-14.412]],"v":[[-23.513,-54.481],[-25.144,-53.423],[-32.713,-2.808],[-29.826,7.494],[-26.917,-1.136]],"c":true}],"e":[{"i":[[-0.404,3.747],[1.477,0.688],[1.74,-9.708],[-5.091,0.021],[-0.25,4.402]],"o":[[-1.673,-0.138],[-1.523,11.938],[-0.954,5.323],[3.195,-0.013],[0.819,-14.412]],"v":[[-31.013,-45.315],[-32.644,-44.256],[-40.213,6.359],[-37.326,16.661],[-34.417,8.03]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[-0.404,3.747],[1.477,0.688],[1.74,-9.708],[-5.091,0.021],[-0.25,4.402]],"o":[[-1.673,-0.138],[-1.523,11.938],[-0.954,5.323],[3.195,-0.013],[0.819,-14.412]],"v":[[-31.013,-45.315],[-32.644,-44.256],[-40.213,6.359],[-37.326,16.661],[-34.417,8.03]],"c":true}],"e":[{"i":[[-0.404,3.747],[1.477,0.688],[1.74,-9.708],[-5.091,0.021],[-0.25,4.402]],"o":[[-1.673,-0.138],[-1.523,11.938],[-0.954,5.323],[3.196,-0.013],[0.819,-14.412]],"v":[[-37.096,-52.997],[-38.727,-51.938],[-46.296,-1.323],[-43.159,7.979],[-40.5,0.348]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-0.404,3.747],[1.477,0.688],[1.74,-9.708],[-5.091,0.021],[-0.25,4.402]],"o":[[-1.673,-0.138],[-1.523,11.938],[-0.954,5.323],[3.196,-0.013],[0.819,-14.412]],"v":[[-37.096,-52.997],[-38.727,-51.938],[-46.296,-1.323],[-43.159,7.979],[-40.5,0.348]],"c":true}],"e":[{"i":[[-0.103,4.085],[4.059,4.688],[1.686,-13.134],[-16.7,0.449],[-0.025,15.596]],"o":[[-5.407,-0.167],[-1.941,14.188],[-2.481,19.331],[7.341,-0.197],[-0.025,-17.404]],"v":[[-31.343,-55.333],[-44.309,-60.438],[-51.186,-11.116],[-42.05,21.551],[-30.225,2.654]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-0.103,4.085],[4.059,4.688],[1.686,-13.134],[-16.7,0.449],[-0.025,15.596]],"o":[[-5.407,-0.167],[-1.941,14.188],[-2.481,19.331],[7.341,-0.197],[-0.025,-17.404]],"v":[[-31.343,-55.333],[-44.309,-60.438],[-51.186,-11.116],[-42.05,21.551],[-30.225,2.654]],"c":true}],"e":[{"i":[[-0.089,-0.987],[-0.278,-3.396],[-0.525,-7.148],[-9.866,11.148],[0.725,3.596]],"o":[[0.121,1.333],[0.323,3.936],[1.428,19.437],[11.55,-13.051],[-1.275,-15.904]],"v":[[5.773,-76.735],[6.373,-69.719],[7.647,-53.212],[39.533,30.455],[49.608,1.808]],"c":true}]},{"t":6}]},"nm":"B 2"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":1,"op":7,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"B white layer 2 shadow 2","parent":34,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[40]},{"t":22}]},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[0,0],[0,0]],"v":[[-38.124,-198.023],[-153.77,-179.155],[-179.51,0.476],[-152.785,32.892],[-44.446,28.81],[-41.27,-85.157]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[0,0],[0,0]],"v":[[-26.124,-205.023],[-141.77,-186.155],[-167.51,-6.524],[-140.785,25.892],[-10.446,30.81],[-18.323,-87.679]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[0,0],[0,0]],"v":[[-26.124,-205.023],[-141.77,-186.155],[-167.51,-6.524],[-140.785,25.892],[-10.446,30.81],[-18.323,-87.679]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[-22.446,5.81],[5.009,56.785]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[11.259,-2.914],[-4.977,-56.418]],"v":[[7.876,-190.023],[-107.77,-171.155],[-133.51,8.476],[-106.785,40.892],[16.554,39.31],[20.584,-78.085]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[-22.446,5.81],[5.009,56.785]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[11.259,-2.914],[-4.977,-56.418]],"v":[[7.876,-190.023],[-107.77,-171.155],[-133.51,8.476],[-106.785,40.892],[16.554,39.31],[20.584,-78.085]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,31.5],[9.358,52.957]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-15.801],[-9.297,-52.616]],"v":[[37.5,-220],[-101,-170],[-88,11],[-55,37],[65.5,7],[58.347,-118.825]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,31.5],[9.358,52.957]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-15.801],[-9.297,-52.616]],"v":[[37.5,-220],[-101,-170],[-88,11],[-55,37],[65.5,7],[58.347,-118.825]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,33],[14.123,54.022]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-16.553],[-14.032,-53.673]],"v":[[-38.5,-242],[-236,-164],[-88,11],[-55,36],[8.5,-10],[-8.199,-138.898]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,33],[14.123,54.022]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-16.553],[-14.032,-53.673]],"v":[[-38.5,-242],[-236,-164],[-88,11],[-55,36],[8.5,-10],[-8.199,-138.898]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.976,14.749],[13.055,55.474]],"o":[[0,0],[0,0],[0,0],[50,-11],[8.026,-10.785],[-12.971,-55.116]],"v":[[-61,-230],[-236,-164],[-109,24],[-60,28],[-17,2],[-33.126,-122.6]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.976,14.749],[13.055,55.474]],"o":[[0,0],[0,0],[0,0],[50,-11],[8.026,-10.785],[-12.971,-55.116]],"v":[[-61,-230],[-236,-164],[-109,24],[-60,28],[-17,2],[-33.126,-122.6]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,14.5],[13.551,58.865]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-7.273],[-13.463,-58.485]],"v":[[-61,-237],[-191,-176],[-109,24],[-76,30],[-11.5,5],[-33.006,-122.007]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,14.5],[13.551,58.865]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-7.273],[-13.463,-58.485]],"v":[[-61,-237],[-191,-176],[-109,24],[-76,30],[-11.5,5],[-33.006,-122.007]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-14,18],[17.568,58.925]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.023,-9.029],[-17.454,-58.545]],"v":[[-56,-244],[-191,-176],[-109,24],[-76,30],[7,0],[-19.42,-129.321]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-14,18],[17.568,58.925]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.023,-9.029],[-17.454,-58.545]],"v":[[-56,-244],[-191,-176],[-109,24],[-76,30],[7,0],[-19.42,-129.321]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-12,13],[17.065,63.067]],"o":[[0,0],[0,0],[0,0],[50,-11],[6.019,-6.521],[-16.954,-62.66]],"v":[[-39,-257],[-191,-176],[-109,24],[-76,30],[23,1],[-3.665,-133.486]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-12,13],[17.065,63.067]],"o":[[0,0],[0,0],[0,0],[50,-11],[6.019,-6.521],[-16.954,-62.66]],"v":[[-39,-257],[-191,-176],[-109,24],[-76,30],[23,1],[-3.665,-133.486]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,17],[17.689,64.569]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-8.528],[-17.575,-64.152]],"v":[[-13,-271],[-191,-176],[-109,24],[-76,30],[53,-5],[23.204,-145]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,17],[17.689,64.569]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-8.528],[-17.575,-64.152]],"v":[[-13,-271],[-191,-176],[-109,24],[-76,30],[53,-5],[23.204,-145]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,20],[23.562,61.869]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.752,-9.689],[-8.438,-57.131]],"v":[[17,-282],[-191,-176],[-109,24],[-76,30],[71,-9],[50.438,-146.869]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,20],[23.562,61.869]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.752,-9.689],[-8.438,-57.131]],"v":[[17,-282],[-191,-176],[-109,24],[-76,30],[71,-9],[50.438,-146.869]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,15],[24.604,34.177]],"o":[[0,0],[0,0],[0,0],[50,-11],[16,-15],[3.604,-39.823]],"v":[[46,-289],[-116,-244],[-109,24],[-51,19],[77,-7],[61.396,-150.177]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,15],[24.604,34.177]],"o":[[0,0],[0,0],[0,0],[50,-11],[16,-15],[3.604,-39.823]],"v":[[46,-289],[-116,-244],[-109,24],[-51,19],[77,-7],[61.396,-150.177]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.999,17.25],[28.431,29.796]],"o":[[0,0],[0,0],[0,0],[50,-11],[10.999,-17.25],[16.431,-29.204]],"v":[[65.252,-286.25],[-116,-244],[-109,24],[-51,19],[88.001,-9.75],[65.569,-132.796]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.999,17.25],[28.431,29.796]],"o":[[0,0],[0,0],[0,0],[50,-11],[10.999,-17.25],[16.431,-29.204]],"v":[[65.252,-286.25],[-116,-244],[-109,24],[-51,19],[88.001,-9.75],[65.569,-132.796]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[50,-11],[0,0],[0,0]],"v":[[92,-282],[-116,-244],[-109,24],[-51,19],[110,22],[100.956,-130.738]],"c":true}]},{"t":19.1474609375}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-1.282,17.269],[-0.661,17.73],[1.838,0.593],[0,0],[0,0],[-1.643,0],[-0.912,-1.481]],"o":[[1.259,-16.963],[0.075,-2.02],[-1.701,-0.549],[0,0],[0,0],[1.257,0],[0.338,-3.231]],"v":[[-41.009,-32.537],[-38.089,-79.48],[-39.588,-83.593],[-42.507,-82.468],[-50.507,4.375],[-47.107,4],[-44.213,5.856]],"c":true}],"e":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}],"e":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}],"e":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}],"e":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}],"e":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}],"e":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}],"e":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}],"e":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}],"e":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}],"e":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}],"e":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}],"e":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}],"e":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}],"e":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}],"e":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}],"e":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}],"e":[{"i":[[23.009,8.287],[0.374,21.444],[37.94,-0.602],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[39.468,0.25],[0.053,-28.967]],"v":[[55.991,-119.287],[79.661,-166.48],[11.162,-226.593],[-79.507,-226.218],[-79.132,-0.25],[22.518,-0.25],[91.162,-62.644]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-2.196,-15.458],[4.87,-2.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[2.979,-1.252]],"v":[[-276.179,-132.292],[-277.37,-102.994],[-282.552,-101.351],[-288.355,-146.931],[-283.229,-149.748]],"c":true}],"e":[{"i":[[-2.196,-15.458],[4.87,-2.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[2.979,-1.252]],"v":[[-45.179,-170.292],[-46.37,-140.994],[-51.552,-139.351],[-57.355,-184.931],[-52.229,-187.748]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-2.196,-15.458],[4.87,-2.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[2.979,-1.252]],"v":[[-45.179,-170.292],[-46.37,-140.994],[-51.552,-139.351],[-57.355,-184.931],[-52.229,-187.748]],"c":true}],"e":[{"i":[[-2.196,-15.458],[10.37,-3.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[5.729,-1.752]],"v":[[-29.679,-174.292],[-36.62,-141.244],[-48.302,-138.851],[-53.605,-186.431],[-42.979,-189.748]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-2.196,-15.458],[10.37,-3.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[5.729,-1.752]],"v":[[-29.679,-174.292],[-36.62,-141.244],[-48.302,-138.851],[-53.605,-186.431],[-42.979,-189.748]],"c":true}],"e":[{"i":[[-2.196,-15.458],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[12.104,-2.127]],"v":[[-14.179,-171.542],[-26.62,-140.744],[-44.802,-137.851],[-48.605,-186.931],[-32.479,-190.998]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[-2.196,-15.458],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[12.104,-2.127]],"v":[[-14.179,-171.542],[-26.62,-140.744],[-44.802,-137.851],[-48.605,-186.931],[-32.479,-190.998]],"c":true}],"e":[{"i":[[-0.946,-15.083],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[0.889,14.172],[0,0],[0,0],[0,0],[11.854,-1.752]],"v":[[-0.554,-168.667],[-16.12,-139.619],[-41.927,-136.351],[-45.105,-186.931],[-21.854,-190.998]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[-0.946,-15.083],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[0.889,14.172],[0,0],[0,0],[0,0],[11.854,-1.752]],"v":[[-0.554,-168.667],[-16.12,-139.619],[-41.927,-136.351],[-45.105,-186.931],[-21.854,-190.998]],"c":true}],"e":[{"i":[[0,-14.502],[17.62,-0.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[16.104,-1.752]],"v":[[9.196,-166.167],[-14.62,-138.119],[-39.927,-136.351],[-41.855,-185.931],[-15.354,-189.498]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[0,-14.502],[17.62,-0.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[16.104,-1.752]],"v":[[9.196,-166.167],[-14.62,-138.119],[-39.927,-136.351],[-41.855,-185.931],[-15.354,-189.498]],"c":true}],"e":[{"i":[[0,-14.502],[18.37,-0.631],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[15.303,-0.876]],"v":[[18.196,-164.417],[-8.37,-136.494],[-37.552,-135.101],[-38.855,-185.806],[-8.479,-188.373]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[0,-14.502],[18.37,-0.631],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[15.303,-0.876]],"v":[[18.196,-164.417],[-8.37,-136.494],[-37.552,-135.101],[-38.855,-185.806],[-8.479,-188.373]],"c":true}],"e":[{"i":[[0,-14.502],[19.12,-1.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[24.196,-162.667],[-2.12,-134.869],[-35.177,-133.851],[-35.855,-185.681],[-1.604,-187.248]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[0,-14.502],[19.12,-1.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[24.196,-162.667],[-2.12,-134.869],[-35.177,-133.851],[-35.855,-185.681],[-1.604,-187.248]],"c":true}],"e":[{"i":[[0,-14.502],[18.37,0.935],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[30.446,-160.417],[1.88,-133.369],[-33.177,-133.101],[-33.105,-184.681],[4.646,-184.998]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[6.056,-1.63],[0,0],[0,0],[0,0],[-1.281,-9.949]],"o":[[0,0],[0,0],[0,0],[4.931,-1.967],[1.649,12.81]],"v":[[-287.306,-16.62],[-293.677,-14.62],[-299.802,-64.783],[-294.431,-67.033],[-284.719,-47.051]],"c":true}],"e":[{"i":[[6.056,-1.63],[0,0],[0,0],[0,0],[-1.281,-9.949]],"o":[[0,0],[0,0],[0,0],[4.931,-1.967],[1.649,12.81]],"v":[[-33.306,-52.62],[-39.677,-50.62],[-45.802,-100.783],[-40.431,-103.033],[-30.719,-83.051]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[6.056,-1.63],[0,0],[0,0],[0,0],[-1.281,-9.949]],"o":[[0,0],[0,0],[0,0],[4.931,-1.967],[1.649,12.81]],"v":[[-33.306,-52.62],[-39.677,-50.62],[-45.802,-100.783],[-40.431,-103.033],[-30.719,-83.051]],"c":true}],"e":[{"i":[[11.556,-3.13],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[8.681,-1.967],[0.969,10.301]],"v":[[-21.806,-51.87],[-37.427,-49.12],[-43.552,-99.783],[-28.431,-103.533],[-13.719,-83.551]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[11.556,-3.13],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[8.681,-1.967],[0.969,10.301]],"v":[[-21.806,-51.87],[-37.427,-49.12],[-43.552,-99.783],[-28.431,-103.533],[-13.719,-83.551]],"c":true}],"e":[{"i":[[13.181,-3.38],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[14.306,-2.342],[0.969,10.301]],"v":[[-10.556,-49.87],[-36.177,-47.37],[-40.302,-98.783],[-18.181,-102.533],[2.031,-79.801]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[13.181,-3.38],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[14.306,-2.342],[0.969,10.301]],"v":[[-10.556,-49.87],[-36.177,-47.37],[-40.302,-98.783],[-18.181,-102.533],[2.031,-79.801]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[-5.181,-47.745],[-34.927,-46.745],[-38.427,-97.908],[-7.931,-101.158],[14.156,-75.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[-5.181,-47.745],[-34.927,-46.745],[-38.427,-97.908],[-7.931,-101.158],[14.156,-75.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[2.819,-46.495],[-33.927,-44.495],[-36.427,-96.908],[0.069,-98.908],[23.656,-72.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[2.819,-46.495],[-33.927,-44.495],[-36.427,-96.908],[0.069,-98.908],[23.656,-72.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[16.556,-0.967],[0,14.2]],"v":[[6.819,-45.12],[-33.427,-44.245],[-34.802,-95.783],[5.694,-97.283],[31.781,-71.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[16.556,-0.967],[0,14.2]],"v":[[6.819,-45.12],[-33.427,-44.245],[-34.802,-95.783],[5.694,-97.283],[31.781,-71.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[10.819,-43.745],[-32.927,-43.995],[-33.177,-94.658],[11.319,-95.658],[36.406,-69.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[10.819,-43.745],[-32.927,-43.995],[-33.177,-94.658],[11.319,-95.658],[36.406,-69.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[14.819,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-94.158],[41.656,-68.176]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":15,"op":23,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"B white layer 2 shadow","parent":34,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[40]},{"t":22}]},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[0,0],[0,0]],"v":[[-38.124,-198.023],[-153.77,-179.155],[-179.51,0.476],[-152.785,32.892],[-44.446,28.81],[-41.27,-85.157]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[0,0],[0,0]],"v":[[-26.124,-205.023],[-141.77,-186.155],[-167.51,-6.524],[-140.785,25.892],[-10.446,30.81],[-18.323,-87.679]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[0,0],[0,0]],"v":[[-26.124,-205.023],[-141.77,-186.155],[-167.51,-6.524],[-140.785,25.892],[-10.446,30.81],[-18.323,-87.679]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[-22.446,5.81],[5.009,56.785]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[11.259,-2.914],[-4.977,-56.418]],"v":[[7.876,-190.023],[-107.77,-171.155],[-133.51,8.476],[-106.785,40.892],[16.554,39.31],[20.584,-78.085]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[-4,0.01],[-22.446,5.81],[5.009,56.785]],"o":[[0,0],[0,0],[0,0],[51.196,-0.129],[11.259,-2.914],[-4.977,-56.418]],"v":[[7.876,-190.023],[-107.77,-171.155],[-133.51,8.476],[-106.785,40.892],[16.554,39.31],[20.584,-78.085]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,31.5],[9.358,52.957]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-15.801],[-9.297,-52.616]],"v":[[37.5,-220],[-101,-170],[-88,11],[-55,37],[65.5,7],[58.347,-118.825]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,31.5],[9.358,52.957]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-15.801],[-9.297,-52.616]],"v":[[37.5,-220],[-101,-170],[-88,11],[-55,37],[65.5,7],[58.347,-118.825]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,33],[14.123,54.022]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-16.553],[-14.032,-53.673]],"v":[[-38.5,-242],[-236,-164],[-88,11],[-55,36],[8.5,-10],[-8.199,-138.898]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-18.5,33],[14.123,54.022]],"o":[[0,0],[0,0],[0,0],[50,-11],[9.28,-16.553],[-14.032,-53.673]],"v":[[-38.5,-242],[-236,-164],[-88,11],[-55,36],[8.5,-10],[-8.199,-138.898]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.976,14.749],[13.055,55.474]],"o":[[0,0],[0,0],[0,0],[50,-11],[8.026,-10.785],[-12.971,-55.116]],"v":[[-61,-230],[-236,-164],[-109,24],[-60,28],[-17,2],[-33.126,-122.6]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.976,14.749],[13.055,55.474]],"o":[[0,0],[0,0],[0,0],[50,-11],[8.026,-10.785],[-12.971,-55.116]],"v":[[-61,-230],[-236,-164],[-109,24],[-60,28],[-17,2],[-33.126,-122.6]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,14.5],[13.551,58.865]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-7.273],[-13.463,-58.485]],"v":[[-61,-237],[-191,-176],[-109,24],[-76,30],[-11.5,5],[-33.006,-122.007]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,14.5],[13.551,58.865]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-7.273],[-13.463,-58.485]],"v":[[-61,-237],[-191,-176],[-109,24],[-76,30],[-11.5,5],[-33.006,-122.007]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-14,18],[17.568,58.925]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.023,-9.029],[-17.454,-58.545]],"v":[[-56,-244],[-191,-176],[-109,24],[-76,30],[7,0],[-19.42,-129.321]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-14,18],[17.568,58.925]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.023,-9.029],[-17.454,-58.545]],"v":[[-56,-244],[-191,-176],[-109,24],[-76,30],[7,0],[-19.42,-129.321]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-12,13],[17.065,63.067]],"o":[[0,0],[0,0],[0,0],[50,-11],[6.019,-6.521],[-16.954,-62.66]],"v":[[-39,-257],[-191,-176],[-109,24],[-76,30],[23,1],[-3.665,-133.486]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-12,13],[17.065,63.067]],"o":[[0,0],[0,0],[0,0],[50,-11],[6.019,-6.521],[-16.954,-62.66]],"v":[[-39,-257],[-191,-176],[-109,24],[-76,30],[23,1],[-3.665,-133.486]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,17],[17.689,64.569]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-8.528],[-17.575,-64.152]],"v":[[-13,-271],[-191,-176],[-109,24],[-76,30],[53,-5],[23.204,-145]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-9,17],[17.689,64.569]],"o":[[0,0],[0,0],[0,0],[50,-11],[4.515,-8.528],[-17.575,-64.152]],"v":[[-13,-271],[-191,-176],[-109,24],[-76,30],[53,-5],[23.204,-145]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,20],[23.562,61.869]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.752,-9.689],[-8.438,-57.131]],"v":[[17,-282],[-191,-176],[-109,24],[-76,30],[71,-9],[50.438,-146.869]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,20],[23.562,61.869]],"o":[[0,0],[0,0],[0,0],[50,-11],[7.752,-9.689],[-8.438,-57.131]],"v":[[17,-282],[-191,-176],[-109,24],[-76,30],[71,-9],[50.438,-146.869]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,15],[24.604,34.177]],"o":[[0,0],[0,0],[0,0],[50,-11],[16,-15],[3.604,-39.823]],"v":[[46,-289],[-116,-244],[-109,24],[-51,19],[77,-7],[61.396,-150.177]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-16,15],[24.604,34.177]],"o":[[0,0],[0,0],[0,0],[50,-11],[16,-15],[3.604,-39.823]],"v":[[46,-289],[-116,-244],[-109,24],[-51,19],[77,-7],[61.396,-150.177]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.999,17.25],[28.431,29.796]],"o":[[0,0],[0,0],[0,0],[50,-11],[10.999,-17.25],[16.431,-29.204]],"v":[[65.252,-286.25],[-116,-244],[-109,24],[-51,19],[88.001,-9.75],[65.569,-132.796]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[-10.999,17.25],[28.431,29.796]],"o":[[0,0],[0,0],[0,0],[50,-11],[10.999,-17.25],[16.431,-29.204]],"v":[[65.252,-286.25],[-116,-244],[-109,24],[-51,19],[88.001,-9.75],[65.569,-132.796]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-3.907,0.859],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[50,-11],[0,0],[0,0]],"v":[[92,-282],[-116,-244],[-109,24],[-51,19],[110,22],[100.956,-130.738]],"c":true}]},{"t":19.1474609375}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-1.282,17.269],[-0.661,17.73],[1.838,0.593],[0,0],[0,0],[-1.643,0],[-0.912,-1.481]],"o":[[1.259,-16.963],[0.075,-2.02],[-1.701,-0.549],[0,0],[0,0],[1.257,0],[0.338,-3.231]],"v":[[-41.009,-32.537],[-38.089,-79.48],[-39.588,-83.593],[-42.507,-82.468],[-50.507,4.375],[-47.107,4],[-44.213,5.856]],"c":true}],"e":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}],"e":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}],"e":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}],"e":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}],"e":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}],"e":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}],"e":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}],"e":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}],"e":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}],"e":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}],"e":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}],"e":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}],"e":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}],"e":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}],"e":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}],"e":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}],"e":[{"i":[[23.009,8.287],[0.374,21.444],[37.94,-0.602],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[39.468,0.25],[0.053,-28.967]],"v":[[55.991,-119.287],[79.661,-166.48],[11.162,-226.593],[-79.507,-226.218],[-79.132,-0.25],[22.518,-0.25],[91.162,-62.644]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":6,"op":15,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"B white layer 3","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-1.282,17.269],[-0.661,17.73],[1.838,0.593],[0,0],[0,0],[-1.643,0],[-0.912,-1.481]],"o":[[1.259,-16.963],[0.075,-2.02],[-1.701,-0.549],[0,0],[0,0],[1.257,0],[0.338,-3.231]],"v":[[-41.009,-32.537],[-38.089,-79.48],[-39.588,-83.593],[-42.507,-82.468],[-50.507,4.375],[-47.107,4],[-44.213,5.856]],"c":true}],"e":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}],"e":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}],"e":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}],"e":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}],"e":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}],"e":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}],"e":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}],"e":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}],"e":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}],"e":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}],"e":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}],"e":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}],"e":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}],"e":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}],"e":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}],"e":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}],"e":[{"i":[[23.009,8.287],[0.374,21.444],[37.94,-0.602],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[39.468,0.25],[0.053,-28.967]],"v":[[55.991,-119.287],[79.661,-166.48],[11.162,-226.593],[-79.507,-226.218],[-79.132,-0.25],[22.518,-0.25],[91.162,-62.644]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-2.196,-15.458],[4.87,-2.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[2.979,-1.252]],"v":[[-276.179,-132.292],[-277.37,-102.994],[-282.552,-101.351],[-288.355,-146.931],[-283.229,-149.748]],"c":true}],"e":[{"i":[[-2.196,-15.458],[4.87,-2.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[2.979,-1.252]],"v":[[-45.179,-170.292],[-46.37,-140.994],[-51.552,-139.351],[-57.355,-184.931],[-52.229,-187.748]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-2.196,-15.458],[4.87,-2.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[2.979,-1.252]],"v":[[-45.179,-170.292],[-46.37,-140.994],[-51.552,-139.351],[-57.355,-184.931],[-52.229,-187.748]],"c":true}],"e":[{"i":[[-2.196,-15.458],[10.37,-3.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[5.729,-1.752]],"v":[[-29.679,-174.292],[-36.62,-141.244],[-48.302,-138.851],[-53.605,-186.431],[-42.979,-189.748]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-2.196,-15.458],[10.37,-3.756],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[5.729,-1.752]],"v":[[-29.679,-174.292],[-36.62,-141.244],[-48.302,-138.851],[-53.605,-186.431],[-42.979,-189.748]],"c":true}],"e":[{"i":[[-2.196,-15.458],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[12.104,-2.127]],"v":[[-14.179,-171.542],[-26.62,-140.744],[-44.802,-137.851],[-48.605,-186.931],[-32.479,-190.998]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[-2.196,-15.458],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[1.997,14.059],[0,0],[0,0],[0,0],[12.104,-2.127]],"v":[[-14.179,-171.542],[-26.62,-140.744],[-44.802,-137.851],[-48.605,-186.931],[-32.479,-190.998]],"c":true}],"e":[{"i":[[-0.946,-15.083],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[0.889,14.172],[0,0],[0,0],[0,0],[11.854,-1.752]],"v":[[-0.554,-168.667],[-16.12,-139.619],[-41.927,-136.351],[-45.105,-186.931],[-21.854,-190.998]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[-0.946,-15.083],[11.62,-1.881],[0,0],[0,0],[0,0]],"o":[[0.889,14.172],[0,0],[0,0],[0,0],[11.854,-1.752]],"v":[[-0.554,-168.667],[-16.12,-139.619],[-41.927,-136.351],[-45.105,-186.931],[-21.854,-190.998]],"c":true}],"e":[{"i":[[0,-14.502],[17.62,-0.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[16.104,-1.752]],"v":[[9.196,-166.167],[-14.62,-138.119],[-39.927,-136.351],[-41.855,-185.931],[-15.354,-189.498]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[0,-14.502],[17.62,-0.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[16.104,-1.752]],"v":[[9.196,-166.167],[-14.62,-138.119],[-39.927,-136.351],[-41.855,-185.931],[-15.354,-189.498]],"c":true}],"e":[{"i":[[0,-14.502],[18.37,-0.631],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[15.303,-0.876]],"v":[[18.196,-164.417],[-8.37,-136.494],[-37.552,-135.101],[-38.855,-185.806],[-8.479,-188.373]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[0,-14.502],[18.37,-0.631],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[15.303,-0.876]],"v":[[18.196,-164.417],[-8.37,-136.494],[-37.552,-135.101],[-38.855,-185.806],[-8.479,-188.373]],"c":true}],"e":[{"i":[[0,-14.502],[19.12,-1.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[24.196,-162.667],[-2.12,-134.869],[-35.177,-133.851],[-35.855,-185.681],[-1.604,-187.248]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[0,-14.502],[19.12,-1.131],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[24.196,-162.667],[-2.12,-134.869],[-35.177,-133.851],[-35.855,-185.681],[-1.604,-187.248]],"c":true}],"e":[{"i":[[0,-14.502],[18.37,0.935],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[30.446,-160.417],[1.88,-133.369],[-33.177,-133.101],[-33.105,-184.681],[4.646,-184.998]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[6.056,-1.63],[0,0],[0,0],[0,0],[-1.281,-9.949]],"o":[[0,0],[0,0],[0,0],[4.931,-1.967],[1.649,12.81]],"v":[[-287.306,-16.62],[-293.677,-14.62],[-299.802,-64.783],[-294.431,-67.033],[-284.719,-47.051]],"c":true}],"e":[{"i":[[6.056,-1.63],[0,0],[0,0],[0,0],[-1.281,-9.949]],"o":[[0,0],[0,0],[0,0],[4.931,-1.967],[1.649,12.81]],"v":[[-33.306,-52.62],[-39.677,-50.62],[-45.802,-100.783],[-40.431,-103.033],[-30.719,-83.051]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[6.056,-1.63],[0,0],[0,0],[0,0],[-1.281,-9.949]],"o":[[0,0],[0,0],[0,0],[4.931,-1.967],[1.649,12.81]],"v":[[-33.306,-52.62],[-39.677,-50.62],[-45.802,-100.783],[-40.431,-103.033],[-30.719,-83.051]],"c":true}],"e":[{"i":[[11.556,-3.13],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[8.681,-1.967],[0.969,10.301]],"v":[[-21.806,-51.87],[-37.427,-49.12],[-43.552,-99.783],[-28.431,-103.533],[-13.719,-83.551]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[11.556,-3.13],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[8.681,-1.967],[0.969,10.301]],"v":[[-21.806,-51.87],[-37.427,-49.12],[-43.552,-99.783],[-28.431,-103.533],[-13.719,-83.551]],"c":true}],"e":[{"i":[[13.181,-3.38],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[14.306,-2.342],[0.969,10.301]],"v":[[-10.556,-49.87],[-36.177,-47.37],[-40.302,-98.783],[-18.181,-102.533],[2.031,-79.801]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[13.181,-3.38],[0,0],[0,0],[0,0],[-0.953,-10.127]],"o":[[0,0],[0,0],[0,0],[14.306,-2.342],[0.969,10.301]],"v":[[-10.556,-49.87],[-36.177,-47.37],[-40.302,-98.783],[-18.181,-102.533],[2.031,-79.801]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[-5.181,-47.745],[-34.927,-46.745],[-38.427,-97.908],[-7.931,-101.158],[14.156,-75.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[-5.181,-47.745],[-34.927,-46.745],[-38.427,-97.908],[-7.931,-101.158],[14.156,-75.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[2.819,-46.495],[-33.927,-44.495],[-36.427,-96.908],[0.069,-98.908],[23.656,-72.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[2.819,-46.495],[-33.927,-44.495],[-36.427,-96.908],[0.069,-98.908],[23.656,-72.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[16.556,-0.967],[0,14.2]],"v":[[6.819,-45.12],[-33.427,-44.245],[-34.802,-95.783],[5.694,-97.283],[31.781,-71.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[16.556,-0.967],[0,14.2]],"v":[[6.819,-45.12],[-33.427,-44.245],[-34.802,-95.783],[5.694,-97.283],[31.781,-71.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[10.819,-43.745],[-32.927,-43.995],[-33.177,-94.658],[11.319,-95.658],[36.406,-69.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[10.819,-43.745],[-32.927,-43.995],[-33.177,-94.658],[11.319,-95.658],[36.406,-69.676]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[14.819,-41.995],[-32.677,-41.995],[-32.677,-93.658],[16.569,-94.158],[41.656,-68.176]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":15,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"B white layer 2","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-1.282,17.269],[-0.661,17.73],[1.838,0.593],[0,0],[0,0],[-1.643,0],[-0.912,-1.481]],"o":[[1.259,-16.963],[0.075,-2.02],[-1.701,-0.549],[0,0],[0,0],[1.257,0],[0.338,-3.231]],"v":[[-41.009,-32.537],[-38.089,-79.48],[-39.588,-83.593],[-42.507,-82.468],[-50.507,4.375],[-47.107,4],[-44.213,5.856]],"c":true}],"e":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.008,17.316],[0.339,16.48],[3.281,1.942],[0,0],[0,0],[-6.268,-1],[-1.162,-9.106]],"o":[[0.009,-21.463],[-0.098,-4.771],[-4.912,-2.907],[0,0],[0,0],[5.666,0.904],[-0.412,-10.356]],"v":[[-34.509,-42.537],[-34.339,-91.23],[-37.588,-101.593],[-47.007,-102.468],[-59.132,7.5],[-45.982,2.75],[-34.588,14.106]],"c":true}],"e":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[1.009,17.287],[2.01,28.256],[7.354,3.812],[0,0],[0,0],[-11.66,-5.191],[-3.162,-10.856]],"o":[[-1.064,-18.224],[-0.411,-5.77],[-10.912,-5.657],[0,0],[0,0],[11.232,5],[-1.162,-18.356]],"v":[[-16.009,-48.037],[-20.089,-101.23],[-28.588,-120.343],[-52.757,-120.968],[-55.882,3.75],[-26.232,2.5],[-10.838,21.356]],"c":true}],"e":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[3.581,24.09],[2.339,28.23],[18.566,5.173],[0,0],[0,0],[-42.815,-12.244],[-3.162,-9.856]],"o":[[-4.491,-30.213],[-0.972,-11.734],[-34.662,-9.657],[0,0],[0,0],[19.232,5.5],[-2.412,-16.356]],"v":[[28.491,-50.787],[21.161,-112.48],[-7.588,-142.843],[-60.007,-138.968],[-58.382,3.5],[13.518,-2.5],[41.412,22.606]],"c":true}],"e":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[6.259,23.537],[9.028,29.832],[35.338,-11.407],[0,0],[0,0],[-43.647,8.83],[7.838,30.644]],"o":[[-6.901,-25.951],[-3.411,-11.27],[-35.699,11.524],[0,0],[0,0],[66.732,-13.5],[-4.529,-17.709]],"v":[[98.991,-111.037],[77.161,-192.23],[3.912,-187.593],[-68.757,-153.968],[-60.882,2],[23.768,-27],[112.412,-55.894]],"c":true}],"e":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[9.241,25.213],[14.339,35.48],[31.838,-35.407],[0,0],[0,0],[-37.642,23.794],[7.838,30.644]],"o":[[-9.241,-25.213],[-15.283,-37.816],[-16.668,18.536],[0,0],[0,0],[45.482,-28.75],[-4.529,-17.709]],"v":[[33.991,-189.537],[9.161,-252.48],[-36.838,-201.593],[-76.007,-167.218],[-63.882,2],[24.768,-48],[62.412,-113.394]],"c":true}],"e":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[9.241,25.213],[15.339,35.73],[24.588,-31.657],[0,0],[0,0],[-33.385,29.471],[8.088,31.144]],"o":[[-9.241,-25.213],[-19.116,-44.526],[-15.291,19.687],[0,0],[0,0],[38.232,-33.75],[-4.594,-17.692]],"v":[[1.491,-181.287],[-33.839,-268.23],[-51.588,-209.843],[-83.257,-178.968],[-66.382,1.5],[2.768,-41.25],[25.662,-113.144]],"c":true}],"e":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[9.241,25.213],[14.589,37.98],[24.588,-31.657],[0,0],[0,0],[-36.476,25.546],[8.088,31.144]],"o":[[-9.241,-25.213],[-17.376,-45.234],[-15.291,19.687],[0,0],[0,0],[34.982,-24.5],[-4.594,-17.692]],"v":[[-0.759,-180.537],[-36.839,-272.73],[-56.338,-216.843],[-89.257,-186.468],[-69.382,1],[6.518,-38],[24.662,-104.894]],"c":true}],"e":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[8.009,25.037],[13.247,38.034],[35.338,-37.657],[0,0],[0,0],[-39.772,20.031],[8.088,31.144]],"o":[[-11.991,-32.463],[-17.16,-49.27],[-21.388,22.792],[0,0],[0,0],[36.732,-18.5],[-4.594,-17.692]],"v":[[11.241,-169.037],[-25.59,-271.98],[-60.088,-220.343],[-93.257,-193.718],[-71.382,1],[15.768,-34.75],[32.662,-102.144]],"c":true}],"e":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[8.259,24.037],[10.641,35.776],[35.838,-35.157],[0,0],[0,0],[-42.018,14.75],[10.338,43.894]],"o":[[-9.241,-31.213],[-13.91,-46.77],[-22.312,21.888],[0,0],[0,0],[40.972,-14.383],[-7.971,-33.842]],"v":[[23.991,-176.037],[-5.09,-269.48],[-49.338,-232.593],[-95.757,-200.718],[-72.382,0.25],[27.268,-29],[47.662,-96.394]],"c":true}],"e":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.009,23.287],[7.59,33.73],[50.58,-35.169],[0,0],[0,0],[0,0],[11.714,49.114]],"o":[[-7.241,-28.463],[-10.225,-45.445],[-25.662,17.843],[0,0],[0,0],[43.732,-7.5],[-10.162,-42.606]],"v":[[42.741,-173.287],[20.411,-260.73],[-42.588,-234.593],[-97.257,-206.968],[-73.882,0.25],[35.018,-20.5],[65.662,-88.144]],"c":true}],"e":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[3.259,21.287],[6.044,31.942],[57.588,-23.657],[0,0],[0,0],[0,0],[10.088,66.644]],"o":[[-1.741,-23.963],[-8.661,-45.77],[-33.448,13.74],[0,0],[0,0],[43.732,-7.5],[-8.74,-57.737]],"v":[[54.991,-175.537],[44.161,-246.98],[-37.838,-233.593],[-96.757,-212.718],[-75.382,0],[38.518,-14.75],[79.662,-80.894]],"c":true}],"e":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[3.259,21.287],[4.985,35.86],[31.838,-13.407],[0,0],[0,0],[0,0],[7.588,68.394]],"o":[[-1.491,-26.213],[-5.911,-42.52],[-31.691,13.345],[0,0],[0,0],[38.732,-3.75],[-6.443,-58.072]],"v":[[65.241,-152.287],[61.661,-221.73],[10.912,-247.343],[-94.007,-216.968],[-77.382,-0.75],[40.268,-9.5],[88.162,-79.394]],"c":true}],"e":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[2.759,8.787],[5.839,35.73],[33.162,-9.093],[0,0],[0,0],[0,0],[2.478,49.663]],"o":[[-2.741,-7.463],[-6.377,-39.022],[-33.162,9.093],[0,0],[0,0],[38.732,-3.75],[-2.912,-58.356]],"v":[[66.241,-138.287],[71.911,-205.73],[16.162,-241.093],[-91.507,-220.468],[-77.382,-0.75],[41.768,-6.5],[92.912,-66.894]],"c":true}],"e":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[27.259,18.287],[2.089,21.98],[37.838,-4.407],[0,0],[0,0],[0,0],[0.838,46.394]],"o":[[11.509,-17.213],[-3.742,-39.362],[0,0],[0,0],[0,0],[36.982,0],[-0.523,-28.962]],"v":[[63.241,-131.037],[77.161,-188.98],[16.162,-235.843],[-89.507,-222.468],[-78.882,-0.5],[31.768,-3.75],[95.162,-60.894]],"c":true}],"e":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[25.509,15.287],[1.964,22.98],[38.338,-2.657],[0,0],[0,0],[0,0],[-0.037,44.769]],"o":[[11.884,-14.088],[-3.365,-39.367],[0,0],[0,0],[0,0],[36.982,0],[0.026,-31.246]],"v":[[61.616,-125.787],[79.286,-179.98],[15.537,-232.218],[-86.382,-224.093],[-79.007,-0.375],[30.268,-2.75],[94.037,-62.519]],"c":true}],"e":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[23.759,12.287],[0.374,21.444],[38.838,-0.907],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[12.259,-10.963],[-0.705,-39.533],[0,0],[0,0],[0,0],[36.982,0],[0.053,-28.967]],"v":[[59.491,-123.537],[79.911,-170.48],[17.412,-229.593],[-83.257,-225.718],[-79.132,-0.25],[28.768,-1.75],[93.412,-61.644]],"c":true}],"e":[{"i":[[23.009,8.287],[0.374,21.444],[37.94,-0.602],[0,0],[0,0],[0,0],[-0.076,41.089]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[39.468,0.25],[0.053,-28.967]],"v":[[55.991,-119.287],[79.661,-166.48],[11.162,-226.593],[-79.507,-226.218],[-79.132,-0.25],[22.518,-0.25],[91.162,-62.644]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":5,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":4,"nm":"B light blue layer 3 shadow 2","parent":34,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[40]},{"t":22}]},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[4.596,42.859],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[-5.931,-55.302],[0,0]],"v":[[-58.13,-221.16],[-111.991,-226.753],[-103.289,41.823],[-46.069,-81.698],[-54.696,-253.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3.12,0.516],[9.482,45.79],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[-11.278,-54.464],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[-0.569,37.802],[-54.696,-253.118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[9.482,45.79],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[-11.278,-54.464],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[-0.569,37.802],[-54.696,-253.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[42.431,32.302],[11.804,-249.118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[42.431,32.302],[11.804,-249.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[70.931,-10.698],[8.304,-239.118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[70.931,-10.698],[8.304,-239.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[59,30],[-33,-263]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[59,30],[-33,-263]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[41,8],[-35,-264]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[41,8],[-35,-264]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[-1,39],[0,0]],"o":[[0,0],[0,0],[3,-1],[1.444,-56.302],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[70,-17],[3,-268]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[-3,1],[-1,39],[0,0]],"o":[[0,0],[0,0],[3,-1],[1.444,-56.302],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[70,-17],[3,-268]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-9],[28,-280]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-9],[28,-280]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-19],[50,-287]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-19],[50,-287]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[116,-7],[70,-285]],"c":true}]},{"t":18}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.201,21.411],[-0.286,15.23],[2.474,0.203],[0,0],[0,0],[-1.893,-0.375],[-0.662,-1.856]],"o":[[0.134,-14.338],[0.036,-1.896],[-1.912,-0.157],[0,0],[0,0],[0.644,0.128],[1.338,-20.856]],"v":[[-46.509,-50.162],[-44.214,-98.23],[-45.963,-101.593],[-49.132,-100.593],[-55.007,4.75],[-50.857,4.25],[-48.588,6.856]],"c":true}],"e":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}],"e":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}],"e":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}],"e":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}],"e":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}],"e":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}],"e":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}],"e":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}],"e":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}],"e":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}],"e":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}],"e":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}],"e":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}],"e":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}],"e":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}],"e":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[32.213,-0.907],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.241,-119.787],[79.411,-168.105],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[90.787,-62.894]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-2.154,-14.341],[5.939,-1.064],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[3.862,-1.474]],"v":[[-268.103,-143.239],[-271.189,-115.936],[-276.731,-115.148],[-282.154,-159.988],[-277.112,-161.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[5.939,-1.064],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[3.862,-1.474]],"v":[[-36.103,-162.739],[-39.189,-135.436],[-44.731,-134.648],[-50.154,-179.488],[-45.112,-180.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-2.154,-14.341],[5.939,-1.064],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[3.862,-1.474]],"v":[[-36.103,-162.739],[-39.189,-135.436],[-44.731,-134.648],[-50.154,-179.488],[-45.112,-180.776]],"c":true}],"e":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[7.862,-1.724]],"v":[[-22.103,-167.239],[-29.189,-138.186],[-43.481,-135.648],[-49.154,-181.988],[-37.862,-184.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[7.862,-1.724]],"v":[[-22.103,-167.239],[-29.189,-138.186],[-43.481,-135.648],[-49.154,-181.988],[-37.862,-184.776]],"c":true}],"e":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[10.862,0.026]],"v":[[-9.353,-166.739],[-20.189,-138.686],[-42.231,-135.648],[-46.654,-183.988],[-26.862,-187.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[10.862,0.026]],"v":[[-9.353,-166.739],[-20.189,-138.686],[-42.231,-135.648],[-46.654,-183.988],[-26.862,-187.276]],"c":true}],"e":[{"i":[[-1.634,-14.432],[15.643,-0.316],[0,0],[0,0],[0,0]],"o":[[1.499,13.233],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[1.501,-165.483],[-19.143,-137.184],[-39.891,-135.152],[-43.647,-185.494],[-18.285,-187.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[-1.634,-14.432],[15.643,-0.316],[0,0],[0,0],[0,0]],"o":[[1.499,13.233],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[1.501,-165.483],[-19.143,-137.184],[-39.891,-135.152],[-43.647,-185.494],[-18.285,-187.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[10.147,-167.739],[-8.939,-136.936],[-38.481,-134.898],[-40.154,-185.488],[-12.862,-186.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[10.147,-167.739],[-8.939,-136.936],[-38.481,-134.898],[-40.154,-185.488],[-12.862,-186.776]],"c":true}],"e":[{"i":[[-1.534,-14.395],[14.273,-2.231],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.778,1.383]],"v":[[17.998,-164.132],[-2.523,-136.269],[-36.047,-134.41],[-37.912,-185.525],[-5.028,-187.133]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[-1.534,-14.395],[14.273,-2.231],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.778,1.383]],"v":[[17.998,-164.132],[-2.523,-136.269],[-36.047,-134.41],[-37.912,-185.525],[-5.028,-187.133]],"c":true}],"e":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[23.139,-163.775],[0.762,-135.102],[-34.862,-134.172],[-35.92,-185.061],[-3.241,-186.241]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[23.139,-163.775],[0.762,-135.102],[-34.862,-134.172],[-35.92,-185.061],[-3.241,-186.241]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[27.029,-160.917],[4.297,-134.435],[-33.677,-133.685],[-33.677,-184.598],[2.797,-185.348]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[27.029,-160.917],[4.297,-134.435],[-33.677,-133.685],[-33.677,-184.598],[2.797,-185.348]],"c":true}],"e":[{"i":[[0,-14.502],[16.037,-0.065],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[30.363,-160.417],[4.963,-133.935],[-32.927,-133.268],[-32.927,-184.014],[3.297,-184.848]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7.181,0.245],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[5.681,-0.592],[2.589,13.962]],"v":[[-272.931,-26.995],[-280.427,-25.995],[-286.427,-75.158],[-279.181,-76.658],[-269.094,-56.926]],"c":true}],"e":[{"i":[[7.181,0.245],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[5.681,-0.592],[2.589,13.962]],"v":[[-25.931,-49.995],[-33.427,-48.995],[-39.427,-98.158],[-32.181,-99.658],[-22.094,-79.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.181,0.245],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[5.681,-0.592],[2.589,13.962]],"v":[[-25.931,-49.995],[-33.427,-48.995],[-39.427,-98.158],[-32.181,-99.658],[-22.094,-79.926]],"c":true}],"e":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[7.681,-0.842],[2.589,13.962]],"v":[[-17.681,-50.245],[-33.677,-48.495],[-39.427,-98.158],[-22.431,-100.908],[-7.094,-82.426]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[7.681,-0.842],[2.589,13.962]],"v":[[-17.681,-50.245],[-33.677,-48.495],[-39.427,-98.158],[-22.431,-100.908],[-7.094,-82.426]],"c":true}],"e":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[11.931,0.158],[2.589,13.962]],"v":[[-9.181,-49.745],[-33.677,-47.745],[-37.927,-97.908],[-12.681,-100.908],[5.906,-78.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[11.931,0.158],[2.589,13.962]],"v":[[-9.181,-49.745],[-33.677,-47.745],[-37.927,-97.908],[-12.681,-100.908],[5.906,-78.676]],"c":true}],"e":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-1.406,-16.074]],"o":[[0,0],[0,0],[0,0],[11.868,-1.421],[1.237,14.146]],"v":[[-2.681,-47.745],[-34.177,-45.745],[-36.927,-96.908],[-7.181,-99.908],[16.656,-76.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-1.406,-16.074]],"o":[[0,0],[0,0],[0,0],[11.868,-1.421],[1.237,14.146]],"v":[[-2.681,-47.745],[-34.177,-45.745],[-36.927,-96.908],[-7.181,-99.908],[16.656,-76.926]],"c":true}],"e":[{"i":[[12.181,0.495],[0,0],[0,0],[0,0],[-0.906,-12.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.041,14.162]],"v":[[3.069,-47.245],[-32.927,-45.495],[-35.677,-96.408],[1.819,-98.408],[24.906,-73.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[12.181,0.495],[0,0],[0,0],[0,0],[-0.906,-12.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.041,14.162]],"v":[[3.069,-47.245],[-32.927,-45.495],[-35.677,-96.408],[1.819,-98.408],[24.906,-73.926]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.264,-12.571]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.261,12.426]],"v":[[8.652,-45.745],[-33.344,-44.412],[-34.844,-95.658],[6.902,-97.325],[31.239,-71.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.264,-12.571]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.261,12.426]],"v":[[8.652,-45.745],[-33.344,-44.412],[-34.844,-95.658],[6.902,-97.325],[31.239,-71.926]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[10.735,-44.495],[-33.261,-43.579],[-33.761,-94.908],[11.235,-95.742],[35.822,-70.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[10.735,-44.495],[-33.261,-43.579],[-33.761,-94.908],[11.235,-95.742],[35.822,-70.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[12.681,0.408],[0,14.2]],"v":[[14.319,-43.995],[-32.677,-43.245],[-33.177,-93.658],[16.569,-94.658],[39.156,-68.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[12.681,0.408],[0,14.2]],"v":[[14.319,-43.995],[-32.677,-43.245],[-33.177,-93.658],[16.569,-94.658],[39.156,-68.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[14.819,-42.745],[-32.677,-41.995],[-32.677,-93.658],[16.069,-94.158],[41.406,-67.926]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":15,"op":23,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":27,"ty":4,"nm":"B light blue layer 3 shadow","parent":34,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[5],"e":[40]},{"t":22}]},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[4.596,42.859],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[-5.931,-55.302],[0,0]],"v":[[-58.13,-221.16],[-111.991,-226.753],[-103.289,41.823],[-46.069,-81.698],[-54.696,-253.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3.12,0.516],[9.482,45.79],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[-11.278,-54.464],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[-0.569,37.802],[-54.696,-253.118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[9.482,45.79],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[-11.278,-54.464],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[-0.569,37.802],[-54.696,-253.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[42.431,32.302],[11.804,-249.118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[42.431,32.302],[11.804,-249.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[70.931,-10.698],[8.304,-239.118]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[-3.12,0.516],[-3.803,42.936],[0,0]],"o":[[0,0],[0,0],[3.12,-0.516],[3.803,-42.936],[0,0]],"v":[[-9.13,-263.16],[-128.991,-241.753],[-103.289,41.823],[70.931,-10.698],[8.304,-239.118]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[59,30],[-33,-263]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[59,30],[-33,-263]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[41,8],[-35,-264]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[-3,1],[3,43],[0,0]],"o":[[0,0],[0,0],[3,-1],[-3,-43],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[41,8],[-35,-264]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[-1,39],[0,0]],"o":[[0,0],[0,0],[3,-1],[1.444,-56.302],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[70,-17],[3,-268]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[-3,1],[-1,39],[0,0]],"o":[[0,0],[0,0],[3,-1],[1.444,-56.302],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[70,-17],[3,-268]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-9],[28,-280]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-9],[28,-280]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-19],[50,-287]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[96,-19],[50,-287]],"c":true}],"e":[{"i":[[0,0],[0,0],[-3,1],[9.112,40.348],[0,0]],"o":[[0,0],[0,0],[3,-1],[-12.406,-54.937],[0,0]],"v":[[-47,-270],[-162,-230],[-92,46],[116,-7],[70,-285]],"c":true}]},{"t":18}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.201,21.411],[-0.286,15.23],[2.474,0.203],[0,0],[0,0],[-1.893,-0.375],[-0.662,-1.856]],"o":[[0.134,-14.338],[0.036,-1.896],[-1.912,-0.157],[0,0],[0,0],[0.644,0.128],[1.338,-20.856]],"v":[[-46.509,-50.162],[-44.214,-98.23],[-45.963,-101.593],[-49.132,-100.593],[-55.007,4.75],[-50.857,4.25],[-48.588,6.856]],"c":true}],"e":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}],"e":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}],"e":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}],"e":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}],"e":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}],"e":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}],"e":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}],"e":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}],"e":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}],"e":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}],"e":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}],"e":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}],"e":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}],"e":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}],"e":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}],"e":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[32.213,-0.907],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.241,-119.787],[79.411,-168.105],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[90.787,-62.894]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":7,"op":15,"st":0,"bm":10,"sr":1},{"ddd":0,"ind":28,"ty":4,"nm":"B light blue layer 4","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.201,21.411],[-0.286,15.23],[2.474,0.203],[0,0],[0,0],[-1.893,-0.375],[-0.662,-1.856]],"o":[[0.134,-14.338],[0.036,-1.896],[-1.912,-0.157],[0,0],[0,0],[0.644,0.128],[1.338,-20.856]],"v":[[-46.509,-50.162],[-44.214,-98.23],[-45.963,-101.593],[-49.132,-100.593],[-55.007,4.75],[-50.857,4.25],[-48.588,6.856]],"c":true}],"e":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}],"e":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}],"e":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}],"e":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}],"e":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}],"e":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}],"e":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}],"e":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}],"e":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}],"e":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}],"e":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}],"e":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}],"e":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}],"e":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}],"e":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}],"e":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[32.213,-0.907],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.241,-119.787],[79.411,-168.105],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[90.787,-62.894]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-2.154,-14.341],[5.939,-1.064],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[3.862,-1.474]],"v":[[-268.103,-143.239],[-271.189,-115.936],[-276.731,-115.148],[-282.154,-159.988],[-277.112,-161.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[5.939,-1.064],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[3.862,-1.474]],"v":[[-36.103,-162.739],[-39.189,-135.436],[-44.731,-134.648],[-50.154,-179.488],[-45.112,-180.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-2.154,-14.341],[5.939,-1.064],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[3.862,-1.474]],"v":[[-36.103,-162.739],[-39.189,-135.436],[-44.731,-134.648],[-50.154,-179.488],[-45.112,-180.776]],"c":true}],"e":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[7.862,-1.724]],"v":[[-22.103,-167.239],[-29.189,-138.186],[-43.481,-135.648],[-49.154,-181.988],[-37.862,-184.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[7.862,-1.724]],"v":[[-22.103,-167.239],[-29.189,-138.186],[-43.481,-135.648],[-49.154,-181.988],[-37.862,-184.776]],"c":true}],"e":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[10.862,0.026]],"v":[[-9.353,-166.739],[-20.189,-138.686],[-42.231,-135.648],[-46.654,-183.988],[-26.862,-187.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[-2.154,-14.341],[7.939,-1.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[10.862,0.026]],"v":[[-9.353,-166.739],[-20.189,-138.686],[-42.231,-135.648],[-46.654,-183.988],[-26.862,-187.276]],"c":true}],"e":[{"i":[[-1.634,-14.432],[15.643,-0.316],[0,0],[0,0],[0,0]],"o":[[1.499,13.233],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[1.501,-165.483],[-19.143,-137.184],[-39.891,-135.152],[-43.647,-185.494],[-18.285,-187.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[-1.634,-14.432],[15.643,-0.316],[0,0],[0,0],[0,0]],"o":[[1.499,13.233],[0,0],[0,0],[0,0],[12.13,-2.72]],"v":[[1.501,-165.483],[-19.143,-137.184],[-39.891,-135.152],[-43.647,-185.494],[-18.285,-187.276]],"c":true}],"e":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[10.147,-167.739],[-8.939,-136.936],[-38.481,-134.898],[-40.154,-185.488],[-12.862,-186.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[-2.154,-14.341],[17.439,-2.814],[0,0],[0,0],[0,0]],"o":[[2.109,14.042],[0,0],[0,0],[0,0],[13.612,-1.724]],"v":[[10.147,-167.739],[-8.939,-136.936],[-38.481,-134.898],[-40.154,-185.488],[-12.862,-186.776]],"c":true}],"e":[{"i":[[-1.534,-14.395],[14.273,-2.231],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.778,1.383]],"v":[[17.998,-164.132],[-2.523,-136.269],[-36.047,-134.41],[-37.912,-185.525],[-5.028,-187.133]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[-1.534,-14.395],[14.273,-2.231],[0,0],[0,0],[0,0]],"o":[[1.502,14.095],[0,0],[0,0],[0,0],[14.778,1.383]],"v":[[17.998,-164.132],[-2.523,-136.269],[-36.047,-134.41],[-37.912,-185.525],[-5.028,-187.133]],"c":true}],"e":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[23.139,-163.775],[0.762,-135.102],[-34.862,-134.172],[-35.92,-185.061],[-3.241,-186.241]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[-0.767,-14.448],[16.041,-0.938],[0,0],[0,0],[0,0]],"o":[[0.751,14.147],[0,0],[0,0],[0,0],[14.678,-0.575]],"v":[[23.139,-163.775],[0.762,-135.102],[-34.862,-134.172],[-35.92,-185.061],[-3.241,-186.241]],"c":true}],"e":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[27.029,-160.917],[4.297,-134.435],[-33.677,-133.685],[-33.677,-184.598],[2.797,-185.348]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[0,-14.502],[14.502,0],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[27.029,-160.917],[4.297,-134.435],[-33.677,-133.685],[-33.677,-184.598],[2.797,-185.348]],"c":true}],"e":[{"i":[[0,-14.502],[16.037,-0.065],[0,0],[0,0],[0,0]],"o":[[0,14.2],[0,0],[0,0],[0,0],[14.502,0]],"v":[[30.363,-160.417],[4.963,-133.935],[-32.927,-133.268],[-32.927,-184.014],[3.297,-184.848]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7.181,0.245],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[5.681,-0.592],[2.589,13.962]],"v":[[-272.931,-26.995],[-280.427,-25.995],[-286.427,-75.158],[-279.181,-76.658],[-269.094,-56.926]],"c":true}],"e":[{"i":[[7.181,0.245],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[5.681,-0.592],[2.589,13.962]],"v":[[-25.931,-49.995],[-33.427,-48.995],[-39.427,-98.158],[-32.181,-99.658],[-22.094,-79.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.181,0.245],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[5.681,-0.592],[2.589,13.962]],"v":[[-25.931,-49.995],[-33.427,-48.995],[-39.427,-98.158],[-32.181,-99.658],[-22.094,-79.926]],"c":true}],"e":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[7.681,-0.842],[2.589,13.962]],"v":[[-17.681,-50.245],[-33.677,-48.495],[-39.427,-98.158],[-22.431,-100.908],[-7.094,-82.426]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[7.681,-0.842],[2.589,13.962]],"v":[[-17.681,-50.245],[-33.677,-48.495],[-39.427,-98.158],[-22.431,-100.908],[-7.094,-82.426]],"c":true}],"e":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[11.931,0.158],[2.589,13.962]],"v":[[-9.181,-49.745],[-33.677,-47.745],[-37.927,-97.908],[-12.681,-100.908],[5.906,-78.676]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[13.431,-1.505],[0,0],[0,0],[0,0],[-2.656,-14.324]],"o":[[0,0],[0,0],[0,0],[11.931,0.158],[2.589,13.962]],"v":[[-9.181,-49.745],[-33.677,-47.745],[-37.927,-97.908],[-12.681,-100.908],[5.906,-78.676]],"c":true}],"e":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-1.406,-16.074]],"o":[[0,0],[0,0],[0,0],[11.868,-1.421],[1.237,14.146]],"v":[[-2.681,-47.745],[-34.177,-45.745],[-36.927,-96.908],[-7.181,-99.908],[16.656,-76.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[14.118,-0.752],[0,0],[0,0],[0,0],[-1.406,-16.074]],"o":[[0,0],[0,0],[0,0],[11.868,-1.421],[1.237,14.146]],"v":[[-2.681,-47.745],[-34.177,-45.745],[-36.927,-96.908],[-7.181,-99.908],[16.656,-76.926]],"c":true}],"e":[{"i":[[12.181,0.495],[0,0],[0,0],[0,0],[-0.906,-12.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.041,14.162]],"v":[[3.069,-47.245],[-32.927,-45.495],[-35.677,-96.408],[1.819,-98.408],[24.906,-73.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[12.181,0.495],[0,0],[0,0],[0,0],[-0.906,-12.324]],"o":[[0,0],[0,0],[0,0],[14.804,0],[1.041,14.162]],"v":[[3.069,-47.245],[-32.927,-45.495],[-35.677,-96.408],[1.819,-98.408],[24.906,-73.926]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.264,-12.571]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.261,12.426]],"v":[[8.652,-45.745],[-33.344,-44.412],[-34.844,-95.658],[6.902,-97.325],[31.239,-71.926]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.264,-12.571]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.261,12.426]],"v":[[8.652,-45.745],[-33.344,-44.412],[-34.844,-95.658],[6.902,-97.325],[31.239,-71.926]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[10.735,-44.495],[-33.261,-43.579],[-33.761,-94.908],[11.235,-95.742],[35.822,-70.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[-0.885,-14.241]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0.863,14.121]],"v":[[10.735,-44.495],[-33.261,-43.579],[-33.761,-94.908],[11.235,-95.742],[35.822,-70.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[12.681,0.408],[0,14.2]],"v":[[14.319,-43.995],[-32.677,-43.245],[-33.177,-93.658],[16.569,-94.658],[39.156,-68.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[12.681,0.408],[0,14.2]],"v":[[14.319,-43.995],[-32.677,-43.245],[-33.177,-93.658],[16.569,-94.658],[39.156,-68.176]],"c":true}],"e":[{"i":[[14.804,0],[0,0],[0,0],[0,0],[0,-14.2]],"o":[[0,0],[0,0],[0,0],[14.804,0],[0,14.2]],"v":[[14.819,-42.745],[-32.677,-41.995],[-32.677,-93.658],[16.069,-94.158],[41.406,-67.926]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":15,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":29,"ty":4,"nm":"B light blue layer 3","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.201,21.411],[-0.286,15.23],[2.474,0.203],[0,0],[0,0],[-1.893,-0.375],[-0.662,-1.856]],"o":[[0.134,-14.338],[0.036,-1.896],[-1.912,-0.157],[0,0],[0,0],[0.644,0.128],[1.338,-20.856]],"v":[[-46.509,-50.162],[-44.214,-98.23],[-45.963,-101.593],[-49.132,-100.593],[-55.007,4.75],[-50.857,4.25],[-48.588,6.856]],"c":true}],"e":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0.279,24.912],[0.464,22.605],[2.088,1.343],[0,0],[0,0],[-4.143,-2],[-0.787,-3.981]],"o":[[-0.241,-21.463],[-0.098,-4.771],[-4.242,-2.728],[0,0],[0,0],[3.51,1.694],[-0.037,-19.356]],"v":[[-40.884,-52.662],[-41.839,-108.48],[-44.463,-118.593],[-53.507,-120.718],[-54.757,3.5],[-45.357,4.875],[-39.963,12.856]],"c":true}],"e":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[2.509,24.787],[1.952,19.983],[11.463,8.593],[0,0],[0,0],[-8.268,-3.75],[-3.537,-7.856]],"o":[[-1.87,-18.476],[-0.161,-1.645],[-7.865,-5.896],[0,0],[0,0],[10.005,4.538],[-1.787,-20.356]],"v":[[-22.759,-58.037],[-27.839,-117.855],[-38.713,-134.843],[-60.257,-138.093],[-58.257,2.5],[-32.482,4.25],[-15.963,19.356]],"c":true}],"e":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[2.509,23.537],[1.952,19.983],[37.213,10.843],[0,0],[0,0],[-37.012,-3.318],[3.87,36.773]],"o":[[-1.969,-18.466],[-0.161,-1.645],[-39.595,-11.537],[0,0],[0,0],[52.982,4.75],[-2.037,-19.356]],"v":[[46.741,-67.787],[41.411,-115.355],[-2.713,-150.593],[-68.757,-153.593],[-61.507,2.25],[4.268,0.25],[56.037,7.356]],"c":true}],"e":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[5.869,20.677],[5.339,19.355],[49.963,-14.657],[0,0],[0,0],[-48.018,8.5],[14.463,52.894]],"o":[[-5.241,-18.463],[-6.854,-24.846],[-39.574,11.609],[0,0],[0,0],[56.175,-9.944],[-11.083,-40.532]],"v":[[79.741,-141.537],[64.661,-196.855],[-12.963,-182.843],[-76.257,-168.093],[-64.507,2],[54.518,-20],[98.287,-79.394]],"c":true}],"e":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[7.415,20.175],[10.589,29.855],[50.213,-22.407],[0,0],[0,0],[-48.907,15.377],[14.389,46.029]],"o":[[-8.991,-24.463],[-8.616,-24.291],[-37.662,16.806],[0,0],[0,0],[43.732,-13.75],[-12.537,-40.106]],"v":[[75.491,-152.537],[45.911,-232.355],[-25.463,-197.593],[-83.007,-177.843],[-66.757,2],[45.518,-26.75],[98.787,-83.894]],"c":true}],"e":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6.732,20.413],[9.339,28.855],[50.213,-22.407],[0,0],[0,0],[-49.459,13.494],[14.043,47.445]],"o":[[-7.491,-22.713],[-7.937,-24.521],[-37.662,16.806],[0,0],[0,0],[43.982,-12],[-12.537,-42.356]],"v":[[73.491,-153.537],[43.411,-239.855],[-29.463,-206.343],[-89.007,-186.343],[-68.507,1.5],[45.518,-26.75],[96.287,-84.644]],"c":true}],"e":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[5.741,20.713],[9.339,28.855],[60.463,-27.657],[0,0],[0,0],[-49.459,13.494],[12.963,47.644]],"o":[[-5.741,-20.713],[-7.937,-24.521],[-37.505,17.155],[0,0],[0,0],[43.982,-12],[-11.586,-42.584]],"v":[[73.741,-153.787],[45.411,-241.855],[-29.713,-213.843],[-93.257,-193.343],[-71.257,0.5],[49.768,-26.5],[95.287,-81.894]],"c":true}],"e":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[5.741,20.713],[7.839,29.855],[63.713,-28.907],[0,0],[0,0],[-50.018,11.25],[12.963,53.394]],"o":[[-5.741,-20.713],[-6.546,-24.929],[-37.557,17.04],[0,0],[0,0],[46.058,-10.359],[-10.749,-44.276]],"v":[[75.741,-154.037],[52.411,-240.355],[-22.963,-222.593],[-96.007,-200.343],[-72.507,1.25],[48.768,-23.5],[95.037,-81.894]],"c":true}],"e":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[4.259,17.037],[7.839,29.855],[64.463,-23.407],[0,0],[0,0],[-49.518,7.25],[10.523,50.543]],"o":[[-5.991,-25.463],[-6.546,-24.929],[-38.765,14.076],[0,0],[0,0],[48.964,-7.169],[-9.287,-44.606]],"v":[[76.491,-154.787],[58.161,-239.105],[-23.213,-225.593],[-97.507,-206.343],[-74.007,1.25],[52.268,-20],[94.787,-82.394]],"c":true}],"e":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.009,18.287],[9.089,30.105],[63.963,-18.157],[0,0],[0,0],[-52.207,5.395],[4.963,38.144]],"o":[[-1.741,-23.713],[-7.236,-23.967],[-39.674,11.262],[0,0],[0,0],[67.732,-7],[-5.852,-44.98]],"v":[[74.491,-158.287],[64.411,-233.605],[-18.713,-229.093],[-96.757,-211.843],[-75.507,0.25],[45.268,-14.75],[94.287,-79.394]],"c":true}],"e":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.963,"s":[{"i":[[5.509,15.037],[12.589,49.605],[49.213,-8.907],[0,0],[0,0],[-52.29,4.52],[5.084,46.282]],"o":[[-2.241,-23.713],[-7.654,-30.16],[-40.583,7.345],[0,0],[0,0],[60.732,-5.25],[-5.037,-45.856]],"v":[[73.241,-141.287],[69.161,-222.855],[-16.963,-229.093],[-94.757,-216.843],[-76.507,-0.5],[42.768,-11.75],[94.037,-80.894]],"c":true}],"e":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.93,"s":[{"i":[[15.759,20.037],[2.089,16.855],[46.963,-6.157],[0,0],[0,0],[-32.059,1.901],[3.213,53.144]],"o":[[4.509,-21.713],[-5.161,-61.645],[-32.938,4.318],[0,0],[0,0],[63.232,-3.75],[-3.787,-41.856]],"v":[[68.491,-134.287],[76.911,-187.605],[-8.463,-229.843],[-91.507,-219.843],[-77.257,-0.75],[22.518,-7.25],[94.037,-72.894]],"c":true}],"e":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.756,"s":[{"i":[[20.259,14.037],[1.766,21.378],[30.713,-3.907],[0,0],[0,0],[-39.232,1.5],[3.134,56.753]],"o":[[11.509,-19.963],[-4.411,-53.395],[-38.914,4.95],[0,0],[0,0],[39.232,-1.5],[-1.787,-32.356]],"v":[[63.741,-128.537],[77.411,-184.105],[3.537,-230.593],[-88.507,-223.093],[-78.007,-1],[25.018,-5.5],[93.537,-70.894]],"c":true}],"e":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.63,"s":[{"i":[[24.259,15.287],[1.029,21.401],[37.213,-2.157],[0,0],[0,0],[0,0],[2.205,48.866]],"o":[[12.683,-14.513],[-3.911,-45.645],[-21.287,1.093],[0,0],[0,0],[45.482,1],[-1.09,-28.807]],"v":[[61.241,-124.787],[78.661,-178.355],[4.787,-229.343],[-86.007,-223.593],[-78.007,-1],[18.768,-3.5],[92.287,-66.644]],"c":true}],"e":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.505,"s":[{"i":[[22.009,10.287],[0,21.451],[39.713,-1.157],[0,0],[0,0],[0,0],[-0.303,41.088]],"o":[[14.509,-10.713],[0,-38.672],[0,0],[0,0],[0,0],[45.482,1],[0.213,-28.856]],"v":[[58.491,-122.287],[79.161,-171.855],[11.037,-228.593],[-83.507,-224.093],[-78.007,-1],[21.268,-2.5],[92.037,-63.394]],"c":true}],"e":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.376,"s":[{"i":[[21.149,8.762],[0.374,21.444],[35.338,-1.657],[0,0],[0,0],[0,0],[-0.227,41.088]],"o":[[15.106,-9.064],[-0.705,-39.533],[0,0],[0,0],[0,0],[43.478,0.75],[0.16,-28.893]],"v":[[56.741,-121.162],[79.411,-167.48],[13.912,-227.343],[-81.507,-224.968],[-78.382,-0.75],[19.518,-1.25],[91.287,-62.019]],"c":true}],"e":[{"i":[[21.149,8.762],[0.749,21.438],[32.213,-0.907],[0,0],[0,0],[0,0],[-0.152,41.088]],"o":[[15.106,-9.064],[-1.411,-40.395],[0,0],[0,0],[0,0],[41.473,0.5],[0.106,-28.93]],"v":[[56.241,-119.787],[79.411,-168.105],[13.287,-226.593],[-79.507,-225.843],[-78.757,-0.5],[21.518,-0.5],[90.787,-62.894]],"c":true}]},{"t":22.2529296875}]},"nm":"B"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":6,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":30,"ty":4,"nm":"B light blue layer 2","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.899,27.404],[-1.161,21.73],[-2.043,1.082],[0,0],[0,0],[1.78,-1.142],[1.963,-3.606]],"o":[[0.634,-19.338],[0.161,-3.017],[1.713,-0.907],[0,0],[0,0],[-2.143,1.375],[-0.037,-20.106]],"v":[[-64.884,-51.412],[-61.589,-110.48],[-56.963,-116.843],[-53.507,-117.468],[-55.257,2.75],[-61.857,5.625],[-66.463,11.356]],"c":true}},"nm":"B"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":7,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":31,"ty":4,"nm":"B light blue layer 1","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[2.067,0.035],[0.272,0.321],[0.13,-0.779],[-0.356,-1.134],[-1.495,0.021],[0.012,0.775],[0.067,1.41]],"o":[[0,0],[-0.681,-0.011],[-0.197,0.927],[-0.219,1.314],[0.201,0.642],[2.094,-0.03],[0.082,-1.953],[-0.078,-1.64]],"v":[[-48.938,-1.125],[-52.016,0.387],[-54.014,-0.086],[-54.792,2.812],[-54.769,6.713],[-51.876,8.407],[-48.457,5.952],[-48.648,1.19]],"c":true}],"e":[{"i":[[0,0],[8.009,0.121],[1.054,1.117],[0.503,-2.712],[-1.38,-3.952],[-5.796,0.074],[0.046,2.698],[0.26,4.913]],"o":[[0,0],[-2.637,-0.04],[-0.765,3.23],[-0.848,4.577],[0.781,2.235],[8.117,-0.104],[0.318,-6.802],[-0.303,-5.714]],"v":[[-41.806,-11.476],[-53.736,-6.21],[-62.84,-11.105],[-65.858,1.238],[-65.495,16.577],[-54.51,22.479],[-39.943,14.677],[-40.685,-3.661]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[8.009,0.121],[1.054,1.117],[0.503,-2.712],[-1.38,-3.952],[-5.796,0.074],[0.046,2.698],[0.26,4.913]],"o":[[0,0],[-2.637,-0.04],[-0.765,3.23],[-0.848,4.577],[0.781,2.235],[8.117,-0.104],[0.318,-6.802],[-0.303,-5.714]],"v":[[-41.806,-11.476],[-53.736,-6.21],[-62.84,-11.105],[-65.858,1.238],[-65.495,16.577],[-54.51,22.479],[-39.943,14.677],[-40.685,-3.661]],"c":true}],"e":[{"i":[[0,0],[18.114,0.262],[4.357,-2.3],[0.602,-17.382],[-1.273,-6.802],[-19.282,0.006],[0.47,7.998],[1.175,10.637]],"o":[[0,0],[-5.965,-0.086],[-1.14,7.324],[-0.349,10.097],[0.939,5.019],[22.347,-0.007],[-0.749,-8.21],[-1.405,-12.724]],"v":[[-32.13,-94.796],[-52.413,-95.468],[-69.857,-95.45],[-70.102,-37.118],[-69.977,24.12],[-51.218,42.744],[-15.72,20.252],[-22.595,-20.776]],"c":true}]},{"t":8}]},"nm":"B"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":6,"op":9,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":32,"ty":4,"nm":"B white layer 1","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[2.067,0.035],[0.272,0.321],[0.13,-0.779],[-0.356,-1.134],[-1.495,0.021],[0.012,0.775],[0.067,1.41]],"o":[[0,0],[-0.681,-0.011],[-0.197,0.927],[-0.219,1.314],[0.201,0.642],[2.094,-0.03],[0.082,-1.953],[-0.078,-1.64]],"v":[[-45.188,-1.125],[-48.266,0.387],[-50.264,-0.086],[-51.042,2.812],[-51.019,6.713],[-48.126,8.407],[-44.707,5.952],[-44.898,1.19]],"c":true}],"e":[{"i":[[0,0],[7.348,0.121],[0.967,1.117],[0.461,-2.712],[-1.266,-3.952],[-5.317,0.074],[0.042,2.698],[0.239,4.913]],"o":[[0,0],[-2.42,-0.04],[-0.702,3.23],[-0.778,4.577],[0.716,2.235],[7.447,-0.104],[0.292,-6.802],[-0.278,-5.714]],"v":[[-36.501,-11.351],[-47.446,-6.085],[-55.798,-10.98],[-58.567,1.363],[-58.234,15.952],[-47.697,21.854],[-34.792,13.302],[-35.472,-3.536]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[7.348,0.121],[0.967,1.117],[0.461,-2.712],[-1.266,-3.952],[-5.317,0.074],[0.042,2.698],[0.239,4.913]],"o":[[0,0],[-2.42,-0.04],[-0.702,3.23],[-0.778,4.577],[0.716,2.235],[7.447,-0.104],[0.292,-6.802],[-0.278,-5.714]],"v":[[-36.501,-11.351],[-47.446,-6.085],[-55.798,-10.98],[-58.567,1.363],[-58.234,15.952],[-47.697,21.854],[-34.792,13.302],[-35.472,-3.536]],"c":true}],"e":[{"i":[[0,0],[18.114,0.262],[2.384,2.42],[1.102,-14.882],[-1.273,-6.802],[-19.282,0.006],[0.47,7.998],[1.175,10.637]],"o":[[0,0],[-5.965,-0.086],[-1.14,7.324],[-0.746,10.075],[0.939,5.019],[22.347,-0.007],[-0.749,-8.211],[-1.405,-12.724]],"v":[[-20.38,-97.546],[-49.163,-91.968],[-61.857,-100.7],[-65.602,-41.118],[-67.977,23.12],[-40.968,39.244],[-11.22,17.752],[-14.595,-21.526]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[18.114,0.262],[2.384,2.42],[1.102,-14.882],[-1.273,-6.802],[-19.282,0.006],[0.47,7.998],[1.175,10.637]],"o":[[0,0],[-5.965,-0.086],[-1.14,7.324],[-0.746,10.075],[0.939,5.019],[22.347,-0.007],[-0.749,-8.211],[-1.405,-12.724]],"v":[[-20.38,-97.546],[-49.163,-91.968],[-61.857,-100.7],[-65.602,-41.118],[-67.977,23.12],[-40.968,39.244],[-11.22,17.752],[-14.595,-21.526]],"c":true}],"e":[{"i":[[0,0],[5.836,-0.538],[0.9,1.062],[-1.035,-10.477],[-0.481,-2.985],[-4.731,0.661],[-0.012,3.839],[1.64,5.168]],"o":[[0,0],[-2.242,0.207],[0.323,6.451],[0.436,4.412],[0.355,2.203],[8.337,-1.165],[-0.012,-6.693],[-1.375,-4.332]],"v":[[33.321,-6.126],[25.664,-9.212],[19,-11.513],[22.285,15.477],[25.087,31.97],[31.697,39.589],[41.03,25.38],[38.496,8.259]],"c":true}]},{"t":8}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-0.007,0.279],[0.272,0.321],[0.079,-0.813],[-1.102,-0.004],[0.001,1.067]],"o":[[-0.362,-0.011],[-0.13,0.97],[-0.13,1.326],[0.541,0.002],[-0.002,-1.19]],"v":[[-254.943,4.83],[-255.945,4.464],[-256.48,7.854],[-255.801,10.105],[-255.008,8.796]],"c":true}],"e":[{"i":[[-0.025,0.973],[0.967,1.117],[0.283,-2.831],[-3.919,-0.012],[0.005,3.715]],"o":[[-1.288,-0.04],[-0.462,3.38],[-0.461,4.62],[1.925,0.006],[-0.006,-4.146]],"v":[[-49.268,-10.266],[-52.833,-11.541],[-54.733,0.268],[-52.319,8.11],[-49.502,3.548]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.025,0.973],[0.967,1.117],[0.283,-2.831],[-3.919,-0.012],[0.005,3.715]],"o":[[-1.288,-0.04],[-0.462,3.38],[-0.461,4.62],[1.925,0.006],[-0.006,-4.146]],"v":[[-49.268,-10.266],[-52.833,-11.541],[-54.733,0.268],[-52.319,8.11],[-49.502,3.548]],"c":true}],"e":[{"i":[[-0.103,2.475],[4.052,2.841],[0.919,-10.247],[-10.422,0.015],[0.022,12.118]],"o":[[-5.362,-2.495],[-1.938,8.597],[-0.804,8.962],[8.067,-0.012],[-0.019,-10.546]],"v":[[-44.638,-94.255],[-60.829,-101],[-66.196,3.288],[-56.078,21.235],[-40.272,8.382]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-0.103,2.475],[4.052,2.841],[0.919,-10.247],[-10.422,0.015],[0.022,12.118]],"o":[[-5.362,-2.495],[-1.938,8.597],[-0.804,8.962],[8.067,-0.012],[-0.019,-10.546]],"v":[[-44.638,-94.255],[-60.829,-101],[-66.196,3.288],[-56.078,21.235],[-40.272,8.382]],"c":true}],"e":[{"i":[[-0.061,2.109],[3.595,-2.75],[0.696,-6.135],[-9.66,-0.026],[0.013,8.051]],"o":[[-3.175,-0.086],[-1.14,7.324],[-1.137,10.012],[4.745,0.013],[-0.015,-8.985]],"v":[[-56.056,-36.486],[-75.595,-26.5],[-76.296,12.591],[-66.594,33.585],[-52.9,17.2]],"c":true}]},{"t":8}]},"nm":"B 2"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":5,"op":9,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":33,"ty":4,"nm":"B orange layer 1","parent":34,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[2.067,0.035],[0.272,0.321],[0.13,-0.779],[-0.356,-1.134],[-1.495,0.021],[0.012,0.775],[0.067,1.41]],"o":[[0,0],[-0.681,-0.011],[-0.197,0.927],[-0.219,1.314],[0.201,0.642],[2.094,-0.03],[0.082,-1.953],[-0.078,-1.64]],"v":[[-40.938,-1],[-44.016,0.512],[-46.014,0.039],[-46.792,2.937],[-46.769,6.838],[-43.876,9.032],[-40.457,6.077],[-40.648,1.315]],"c":true}],"e":[{"i":[[0,0],[7.348,0.121],[0.967,1.117],[0.461,-2.712],[-1.266,-3.952],[-5.317,0.074],[0.042,2.698],[0.239,4.913]],"o":[[0,0],[-2.42,-0.04],[-0.702,3.23],[-0.778,4.577],[0.716,2.235],[7.447,-0.104],[0.292,-6.802],[-0.278,-5.714]],"v":[[-32.501,-11.351],[-43.446,-6.085],[-50.548,-7.73],[-53.317,2.363],[-53.734,15.952],[-42.697,22.604],[-30.292,13.552],[-31.472,-3.286]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[7.348,0.121],[0.967,1.117],[0.461,-2.712],[-1.266,-3.952],[-5.317,0.074],[0.042,2.698],[0.239,4.913]],"o":[[0,0],[-2.42,-0.04],[-0.702,3.23],[-0.778,4.577],[0.716,2.235],[7.447,-0.104],[0.292,-6.802],[-0.278,-5.714]],"v":[[-32.501,-11.351],[-43.446,-6.085],[-50.548,-7.73],[-53.317,2.363],[-53.734,15.952],[-42.697,22.604],[-30.292,13.552],[-31.472,-3.286]],"c":true}],"e":[{"i":[[0,0],[18.114,0.262],[2.384,2.42],[1.602,-8.382],[-1.273,-6.802],[-16.121,0.205],[0.47,7.998],[2.014,10.511]],"o":[[0,0],[-5.965,-0.086],[-1.14,7.324],[-1.896,9.923],[0.939,5.019],[22.345,-0.285],[-0.749,-8.211],[-1.98,-10.335]],"v":[[-16.38,-29.046],[-39.663,-18.718],[-54.607,-25.2],[-57.602,-5.368],[-59.727,23.12],[-35.218,37.244],[-9.72,15.252],[-13.845,-14.276]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[18.114,0.262],[2.384,2.42],[1.602,-8.382],[-1.273,-6.802],[-16.121,0.205],[0.47,7.998],[2.014,10.511]],"o":[[0,0],[-5.965,-0.086],[-1.14,7.324],[-1.896,9.923],[0.939,5.019],[22.345,-0.285],[-0.749,-8.211],[-1.98,-10.335]],"v":[[-16.38,-29.046],[-39.663,-18.718],[-54.607,-25.2],[-57.602,-5.368],[-59.727,23.12],[-35.218,37.244],[-9.72,15.252],[-13.845,-14.276]],"c":true}],"e":[{"i":[[0,0],[18.114,0.262],[2.384,2.42],[0.352,-20.882],[-1.273,-6.802],[-12.532,1.506],[-0.03,8.748],[4.345,11.776]],"o":[[0,0],[-5.965,-0.086],[0.857,14.7],[-0.17,10.101],[0.939,5.019],[22.085,-2.655],[-0.03,-15.252],[-3.642,-9.873]],"v":[[7.12,-52.546],[-13.163,-60.718],[-24.857,-45.45],[-24.102,2.382],[-21.977,37.12],[-4.468,50.494],[29.53,19.252],[22.155,-15.776]],"c":true}]},{"t":7}]},"nm":"B"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-0.007,0.279],[0.272,0.321],[0.079,-0.813],[-1.102,-0.004],[0.001,1.067]],"o":[[-0.362,-0.011],[-0.13,0.97],[-0.13,1.326],[0.541,0.002],[-0.002,-1.19]],"v":[[-254.943,4.83],[-255.945,4.464],[-256.48,7.854],[-255.801,10.105],[-255.008,8.796]],"c":true}],"e":[{"i":[[-0.025,0.973],[0.967,1.117],[0.283,-2.831],[-3.919,-0.012],[0.005,3.715]],"o":[[-1.288,-0.04],[-0.462,3.38],[-0.461,4.62],[1.925,0.006],[-0.006,-4.146]],"v":[[-44.518,-9.766],[-48.083,-11.041],[-49.983,0.768],[-47.319,8.11],[-44.752,2.798]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-0.025,0.973],[0.967,1.117],[0.283,-2.831],[-3.919,-0.012],[0.005,3.715]],"o":[[-1.288,-0.04],[-0.462,3.38],[-0.461,4.62],[1.925,0.006],[-0.006,-4.146]],"v":[[-44.518,-9.766],[-48.083,-11.041],[-49.983,0.768],[-47.319,8.11],[-44.752,2.798]],"c":true}],"e":[{"i":[[-0.103,2.475],[4.052,2.841],[1.184,-7.201],[-11.422,1.515],[0.022,9.45]],"o":[[-5.398,-0.101],[-1.938,8.597],[-1.932,11.751],[7.997,-1.061],[-0.025,-10.546]],"v":[[-35.638,-26.505],[-50.579,-29.75],[-56.696,0.288],[-45.828,20.985],[-35.272,6.382]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.103,2.475],[4.052,2.841],[1.184,-7.201],[-11.422,1.515],[0.022,9.45]],"o":[[-5.398,-0.101],[-1.938,8.597],[-1.932,11.751],[7.997,-1.061],[-0.025,-10.546]],"v":[[-35.638,-26.505],[-50.579,-29.75],[-56.696,0.288],[-45.828,20.985],[-35.272,6.382]],"c":true}],"e":[{"i":[[-0.061,2.109],[3.595,-2.75],[0.696,-6.135],[-9.66,-0.026],[0.013,8.051]],"o":[[-3.175,-0.086],[-1.14,7.324],[-1.137,10.012],[4.745,0.013],[-0.015,-8.985]],"v":[[-15.306,-36.486],[-34.095,-25],[-34.796,14.091],[-25.094,35.085],[-12.4,18.95]],"c":true}]},{"t":7}]},"nm":"B 2"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"B"}],"ip":4,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":34,"ty":1,"nm":"ResizerTemp","parent":35,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[74,102,0]},"a":{"k":[250,300,0]},"s":{"k":[30,30,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":35,"ty":1,"nm":"White Solid 8","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[70,100,0]},"s":{"k":[57.143,50,100]}},"ao":0,"sw":140,"sh":200,"sc":"#ffffff","ip":0,"op":37,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":37,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/BlinkingCursor.json b/example/shared/src/commonMain/composeResources/files/mobilo/BlinkingCursor.json new file mode 100644 index 00000000..3b1b10b9 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/BlinkingCursor.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[100],"e":[0]},{"t":17}]},"r":{"k":0},"p":{"k":[48,50,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-36.5,-40.5],[-36.5,43]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":1,"nm":"ResizerTemp","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,51,0]},"a":{"k":[250,300,0]},"s":{"k":[15,15,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":21,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":21,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/C.json b/example/shared/src/commonMain/composeResources/files/mobilo/C.json new file mode 100644 index 00000000..026a6f12 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/C.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"goop_17","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.5,3.5],[0,0],[0,0],[4.924,-1.97],[4,0],[4.25,0],[3.75,0.25],[4,-0.5],[5,2.5],[3,5.5],[2.5,-1.5]],"o":[[-4.5,-3.5],[0,0],[0,0],[-5,2],[-4,0],[-4.25,0],[-3.75,-0.25],[-4,0.5],[-5,-2.5],[-3,-5.5],[-2.5,1.5]],"v":[[-32.25,38],[-8.5,69],[53.25,55],[51,47.5],[40.75,49.25],[28.25,52.25],[18.5,50.25],[8.25,57.25],[-6.5,53.5],[-16.75,44],[-24,38.75]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[3.75,0.25],[3.5,-0.75],[5.25,0],[5.5,-0.25],[3.75,-1],[4.25,-1.25],[6,-4],[-38.5,6.25],[2.75,1]],"o":[[-3.75,-0.25],[-3.5,0.75],[-5.25,0],[-5.5,0.25],[-3.75,1],[-4.25,1.25],[-6,4],[38.5,-6.25],[-2.75,-1]],"v":[[63.5,-153.75],[54,-149],[19.75,-147.5],[6.25,-149.75],[-10.75,-141.25],[-23.75,-139.5],[-36.75,-130],[23.25,-130.75],[71,-149.25]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[-9,0.5],[25.5,-14],[-5.5,5.25],[-4.5,4],[-5.5,3],[-4.5,1.25],[-6,0.75],[-5,0.75]],"o":[[9,-0.5],[-25.5,14],[5.5,-5.25],[4.5,-4],[5.5,-3],[4.5,-1.25],[6,-0.75],[5,-0.75]],"v":[[32,-104.75],[-15.75,-104],[-42,-65.25],[-27.25,-74.75],[-18.25,-90.25],[-3.5,-93],[5,-99.75],[16,-99.25]],"c":true}},"nm":"Path 3"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":21,"op":23,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"goop_16","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.5,0],[0.062,-1.125],[-2.812,-0.125],[0.562,1.375]],"o":[[-1.5,0],[-0.111,1.997],[2.812,0.125],[-0.562,-1.375]],"v":[[56.688,-88.625],[53.812,-87],[59.188,-82.562],[61.25,-85.75]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":[{"t":21,"s":[{"i":[[0.688,0.125],[0.062,-1.5],[-0.5,0],[0,1.062]],"o":[[-0.688,-0.125],[-0.062,1.5],[0.5,0],[0,-1.062]],"v":[[67.938,-35.5],[66.438,-33.312],[67.812,-30.938],[69.062,-33.125]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.467,0.085],[0.042,-1.02],[-0.34,0],[0,0.723]],"o":[[-0.467,-0.085],[-0.043,1.02],[0.34,0],[0,-0.723]],"v":[[68.031,-28.228],[67.011,-26.74],[67.946,-25.125],[68.796,-26.613]],"c":true}],"h":1}]},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":[{"t":21,"s":[{"i":[[0.25,-1.75],[-2.375,-2.312],[-2.312,0.125],[2.254,2.681]],"o":[[-0.25,1.75],[2.375,2.312],[2.312,-0.125],[-3.625,-4.312]],"v":[[19.5,-26.375],[24.625,-21.75],[29.625,-15.125],[28,-24.188]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.25,-1.75],[-2.375,-2.312],[-2.312,0.125],[2.254,2.681]],"o":[[-0.25,1.75],[2.375,2.312],[2.312,-0.125],[-3.625,-4.312]],"v":[[20.25,-21.625],[26.625,-18],[30.375,-10.375],[26.688,-17.875]],"c":true}],"h":1}]},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":[{"t":21,"s":[{"i":[[0.438,-0.094],[-0.125,-2.375],[-0.5,0],[0.25,2.75]],"o":[[-0.438,0.094],[0.125,2.375],[0.5,0],[-0.25,-2.75]],"v":[[13.125,-17.125],[12.125,-13.875],[14,-10.375],[15,-14.5]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.29,-0.062],[-0.083,-1.576],[-0.332,0],[0.166,1.825]],"o":[[-0.29,0.062],[0.083,1.576],[0.332,0],[-0.166,-1.825]],"v":[[13.247,-11.542],[12.583,-9.385],[13.827,-7.062],[14.491,-9.8]],"c":true}],"h":1}]},"nm":"Path 4"},{"ind":4,"ty":"sh","ks":{"k":[{"t":21,"s":[{"i":[[1,-0.75],[-0.125,-1.375],[-2.25,0.125],[0.5,3]],"o":[[-1,0.75],[0.125,1.375],[2.25,-0.125],[-0.5,-3]],"v":[[7.5,-42],[8.375,-38],[10.375,-31.625],[12.125,-38.125]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.714,-0.536],[-0.089,-0.982],[-1.607,0.089],[0.357,2.143]],"o":[[-0.714,0.536],[0.089,0.982],[1.607,-0.089],[-0.357,-2.143]],"v":[[10.214,-35.125],[9.402,-32.08],[10.643,-28.714],[12.018,-32.92]],"c":true}],"h":1}]},"nm":"Path 5"},{"ind":5,"ty":"sh","ks":{"k":[{"t":21,"s":[{"i":[[0.625,-0.125],[-0.125,-2.375],[-1.125,0],[0.25,1.625]],"o":[[-0.625,0.125],[0.125,2.375],[1.125,0],[-0.25,-1.625]],"v":[[6.375,-58.875],[4.875,-55.5],[6.75,-51.5],[8.25,-55.75]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.344,-0.069],[-0.069,-1.306],[-0.619,0],[0.137,0.894]],"o":[[-0.344,0.069],[0.069,1.306],[0.619,0],[-0.137,-0.894]],"v":[[6.394,-53.681],[5.569,-51.825],[6.6,-49.625],[7.425,-51.963]],"c":true}],"h":1}]},"nm":"Path 6"},{"ind":6,"ty":"sh","ks":{"k":[{"t":21,"s":[{"i":[[1.48,-0.555],[-0.875,-3.625],[0,2.125]],"o":[[-1,0.375],[0.875,3.625],[0,-2.125]],"v":[[-25.25,-14.25],[-25.25,-7.625],[-22.25,-9.375]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0.873,-0.328],[-0.516,-2.139],[0,1.254]],"o":[[-0.59,0.221],[0.516,2.139],[0,-1.254]],"v":[[-24.785,-6.172],[-24.785,-2.264],[-23.015,-3.296]],"c":true}],"h":1}]},"nm":"Path 7"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":21,"op":25,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"goop_15","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1,1.125],[1.375,-0.938],[-1.75,0.5],[-1.812,1.125]],"o":[[1,-1.125],[-1.375,0.938],[1.75,-0.5],[1.812,-1.125]],"v":[[94.688,70.375],[90.75,71.625],[88.688,75.438],[92.75,73.938]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[2.438,0],[-1.625,0],[-2,0]],"o":[[-2.438,0],[1.625,0],[2,0]],"v":[[97.938,103],[95.375,104.562],[100.062,104.562]],"c":true}},"nm":"Path 2"},{"ty":"gr","it":[{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":18,"op":20,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"goop_14","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.719,-0.312],[-0.938,-0.5],[-0.062,0.969]],"o":[[-0.719,0.312],[0.629,0.336],[0.062,-0.969]],"v":[[-43.062,-7.906],[-43.094,-4.312],[-41.594,-6.156]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0.75,-0.188],[-0.844,-0.438],[0.031,0.844]],"o":[[-0.75,0.188],[0.5,0.156],[-0.031,-0.844]],"v":[[-47.438,-33.469],[-47.375,-30.094],[-46.094,-31.531]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[0.656,-0.219],[-0.594,-0.188],[0.031,0.562]],"o":[[-0.656,0.219],[0.594,0.188],[-0.031,-0.562]],"v":[[-48.156,-38.562],[-48.312,-36.969],[-47.031,-37.781]],"c":true}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[-0.938,3.312],[0,0],[-1.062,0.562],[-1.375,0.562]],"o":[[0.938,-3.312],[0,0],[1.062,-0.562],[1.375,-0.562]],"v":[[-50.438,-73.5],[-54.125,-68.188],[-54.125,-60.188],[-51.25,-59.625]],"c":true}},"nm":"Path 4"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":18,"op":21,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"goop_13","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.25,1.75],[0,-5],[-2,4.75],[-2.5,-0.75],[-0.75,-3.25],[-2.375,2.625],[0.25,2.75],[3.75,1.375],[0.75,0.125]],"o":[[0.25,-1.75],[0,5],[2,-4.75],[2.5,0.75],[0.75,3.25],[2.375,-2.625],[-0.25,-2.75],[-3.75,-1.375],[-0.75,-0.125]],"v":[[53.25,-146.375],[44.25,-142],[47.375,-124.875],[54.375,-132.625],[57.125,-126.625],[62.875,-125],[60.5,-134.625],[58.75,-143.375],[53.5,-142]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[1.75,0.125],[0.125,-2.5],[-1.625,-1.375],[0.375,3.125]],"o":[[-1.75,-0.125],[-0.05,1.007],[1.625,1.375],[-0.375,-3.125]],"v":[[55.625,-91.25],[50.5,-89.375],[54.75,-85.125],[60.625,-86.5]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[1.455,0.364],[0,-2],[-1.375,-0.375],[-0.125,1.375]],"o":[[-0.875,-0.25],[0,2],[1.375,0.375],[0.125,-1.375]],"v":[[65.625,-45.25],[64.375,-41.375],[65.75,-36],[67.875,-40.375]],"c":true}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[2.75,2.25],[1.5,-1.5],[1.625,0.75],[0,0],[0,0],[2.75,5.125]],"o":[[-2.75,-2.25],[-1.5,1.5],[-1.625,-0.75],[0,0],[0,0],[-2.75,-5.125]],"v":[[76.875,30.75],[70.375,31.25],[66.625,32.125],[72.125,43.875],[89.25,52.875],[84.25,45.75]],"c":true}},"nm":"Path 4"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":18,"op":21,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"goop_12","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.875,2],[0,0],[-3.25,0.375],[-0.812,-1.312],[-2.125,1.062],[1.188,2.312],[-1.125,0.562],[-1.312,1]],"o":[[1.875,-2],[0,0],[3.25,-0.375],[0.812,1.312],[2.125,-1.062],[-1.188,-2.312],[1.125,-0.562],[1.312,-1]],"v":[[94.125,73.875],[86.688,74.5],[79.875,84.188],[85.875,86.688],[89.875,90],[88.5,84.812],[87.25,79.375],[92.688,79.625]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[4.062,0],[-2.25,0],[-2.312,0]],"o":[[-4.062,0],[2.25,0],[2.312,0]],"v":[[97.625,101.938],[93.312,104.562],[101.5,104.562]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[3.125,-0.75],[-2.375,0.062],[-0.625,-1.125],[0.688,1.812],[-1.625,1]],"o":[[-3.125,0.75],[2.375,-0.062],[0.625,1.125],[-0.688,-1.812],[1.625,-1]],"v":[[70.5,86.312],[68.562,90.688],[73.625,92.5],[74.375,91.312],[76.062,86.438]],"c":true}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[2.75,0],[-1.688,0],[-1.438,0]],"o":[[-2.75,0],[1.688,0],[1.438,0]],"v":[[79.375,102.25],[76.75,104.625],[81.625,104.625]],"c":true}},"nm":"Path 4"},{"ind":4,"ty":"sh","ks":{"k":{"i":[[0,0],[-2,-0.5],[-0.75,-2.812],[0.562,0],[1,0],[0.625,2.75],[-1.125,0.938]],"o":[[0,0],[2,0.5],[0.75,2.812],[-0.562,0],[-1,0],[-0.625,-2.75],[1.125,-0.938]],"v":[[59.688,92.25],[59.188,94.938],[63.125,99.875],[62.812,104.812],[65.625,104.75],[63.25,98.562],[63.438,92.812]],"c":true}},"nm":"Path 5"},{"ind":5,"ty":"sh","ks":{"k":{"i":[[1,0],[0.25,-0.625],[-3.625,0],[0.438,0.812]],"o":[[-1,0],[-0.25,0.625],[3.625,0],[-0.438,-0.812]],"v":[[-29.688,102.688],[-32.062,103.75],[-29.75,104.75],[-27.438,103.688]],"c":true}},"nm":"Path 6"},{"ind":6,"ty":"sh","ks":{"k":{"i":[[0,0],[-3.562,-4],[-3.625,-0.312],[-3.625,-0.688]],"o":[[0,0],[3.562,4],[3.625,0.312],[3.625,0.688]],"v":[[-36.125,82.125],[-42.938,83.812],[-30.125,95.812],[-22.125,95]],"c":true}},"nm":"Path 7"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":16,"op":18,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"goop_11","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.312,3.75],[0,0],[-1.25,1.438],[-0.062,-2.375],[-0.625,0.375],[0.188,2]],"o":[[1.312,-3.75],[0,0],[1.25,-1.438],[0.062,2.375],[0.625,-0.375],[-0.188,-2]],"v":[[-50,-69.938],[-56.188,-64.062],[-53.312,-56.688],[-51.438,-54],[-49.625,-51.438],[-50.125,-59.75]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[1.125,-0.438],[-0.312,-2.25],[-0.875,-0.875],[0.125,2.188]],"o":[[-1.125,0.438],[0.312,2.25],[0.875,0.875],[-0.125,-2.188]],"v":[[-49,-42.062],[-48.875,-37.5],[-47.875,-31.812],[-46.375,-37.688]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[1,-0.25],[-0.25,-1.562],[-0.562,0],[0.062,1.75]],"o":[[-1,0.25],[0.25,1.562],[0.562,0],[-0.062,-1.75]],"v":[[-43.938,-13.375],[-43.75,-10.125],[-42.75,-6.812],[-41.812,-10]],"c":true}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[0.5,0],[0,-0.562],[-0.375,-0.062],[0.062,0.75]],"o":[[-0.5,0],[0,0.562],[0.375,0.062],[-0.062,-0.75]],"v":[[-41.438,2.375],[-42,3.75],[-41.375,5.25],[-40.625,3.75]],"c":true}},"nm":"Path 4"},{"ind":4,"ty":"sh","ks":{"k":{"i":[[0.75,1.125],[-1.875,-1.625],[1.875,4.5],[3.75,2.375]],"o":[[-0.75,-1.125],[1.875,1.625],[-1.875,-4.5],[-3.75,-2.375]],"v":[[-42.375,18.375],[-39.25,30.625],[-31.75,33.375],[-37.75,19.25]],"c":true}},"nm":"Path 5"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":16,"op":18,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"goop_10","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-2.5,5.75],[0,0],[-1.5,1.625],[-1.5,-4.25],[-0.125,-3],[-0.874,0.049],[0.875,11.75]],"o":[[2.5,-5.75],[0,0],[1.5,-1.625],[1.5,4.25],[0.125,3],[2.25,-0.125],[-0.875,-11.75]],"v":[[54,-135],[47.125,-132.875],[45,-115.25],[50.875,-112.625],[50.875,-98.5],[53.75,-94.5],[55.75,-113.125]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0.75,-1.625],[-0.75,-0.125],[0,1]],"o":[[-0.524,1.135],[0.75,0.125],[0,-1]],"v":[[56.625,-74.375],[58.375,-72],[60,-73.875]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[2.386,-0.716],[-0.5,-4.5],[-1,0],[0.625,4.625]],"o":[[-1.25,0.375],[0.5,4.5],[1,0],[-0.625,-4.625]],"v":[[62.625,-55],[62.625,-46.5],[66.125,-37.875],[67,-46.25]],"c":true}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[2,1.75],[0.5,-6.5],[0.75,-5.25],[0,0],[0,0],[3.5,4.75],[1.75,8],[0.5,7.25]],"o":[[-2,-1.75],[-0.5,6.5],[-0.75,5.25],[0,0],[0,0],[-3.5,-4.75],[-1.75,-8],[-0.5,-7.25]],"v":[[74.25,-7],[69.5,7.25],[73.5,30.75],[67.25,34.25],[71.5,45.75],[82,45.75],[78.25,28.5],[71.75,9]],"c":true}},"nm":"Path 4"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":16,"op":18,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"goop_09","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-2.688,3.062],[3.188,-1.25],[0,0],[-3.125,-7.812],[0,0],[0,0],[3.25,8.312]],"o":[[2.688,-3.062],[-3.188,1.25],[0,0],[3.125,7.812],[0,0],[0,0],[-1.923,-4.919]],"v":[[96,76.938],[90,77.562],[86.312,83],[95.688,93.25],[99.062,104.375],[104.812,104.375],[96.812,93.125]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[-0.062,-0.188],[-3.375,0.125],[-1.541,-3.918],[0,0],[0,0],[1.5,5.188],[-1.688,1.938]],"o":[[0.062,0.188],[3.375,-0.125],[3,7.625],[0,0],[0,0],[-1.5,-5.188],[1.688,-1.938]],"v":[[86.188,79.562],[83,85.75],[91.875,94.938],[91.188,104.5],[99.625,104.5],[92.562,93.938],[91.75,80.25]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[-1.438,0.562],[0,0],[-1.509,0.424],[-0.375,-2],[0,0],[0,0],[0.438,3]],"o":[[1.438,-0.562],[0,0],[2,-0.562],[0.375,2],[0,0],[0,0],[-0.438,-3]],"v":[[65.375,93.438],[61.062,93.438],[60.062,95.562],[63.562,99.938],[64,104.562],[66.75,104.562],[64.062,99.812]],"c":true}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[-1,0.562],[-3.938,0.562],[-1.875,-4.375],[0,0],[0,0],[2.188,5.125]],"o":[[1,-0.562],[1.517,-0.217],[1.875,4.375],[0,0],[0,0],[-2.188,-5.125]],"v":[[76.75,88.5],[69.812,91.875],[76.25,97.562],[78,104.625],[82.188,104.625],[77.188,97.062]],"c":true}},"nm":"Path 4"},{"ind":4,"ty":"sh","ks":{"k":{"i":[[0,0],[-3,-4.188],[-0.375,-3.938],[0,0],[0,0],[0.25,3.688],[-2.188,-0.375]],"o":[[0,0],[3,4.188],[0.375,3.938],[0,0],[0,0],[-0.25,-3.688],[2.188,0.375]],"v":[[-29.312,85.25],[-39,87.25],[-31.062,99.188],[-32.875,104.625],[-25.812,104.625],[-28.938,98.562],[-25.938,93.812]],"c":true}},"nm":"Path 5"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":14,"op":16,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"goop_08","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.25,-0.562],[-2.562,-2],[-0.688,-5.812],[0,0],[0,0],[1.125,4.5],[-2.75,2.938]],"o":[[-3.25,0.562],[2.562,2],[0.688,5.812],[0,0],[0,0],[-1.125,-4.5],[2.75,-2.938]],"v":[[99.312,82.375],[95.188,88.625],[100.812,97.688],[100.875,104.438],[108.25,104.438],[102.25,96.375],[105.25,83.375]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0,0],[-3.75,0.062],[-0.562,-3.375],[0,0],[0,0],[0.75,5.5],[-2.375,2.125]],"o":[[0,0],[3.75,-0.062],[0.562,3.375],[0,0],[0,0],[-0.75,-5.5],[2.375,-2.125]],"v":[[95,85.062],[83.688,93.375],[92.688,99.25],[90.062,104.5],[101.125,104.5],[97.438,96.938],[100.875,85.938]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[0,0],[-3.125,-0.375],[-0.188,-2.25],[0,0],[0,0],[0.438,3.062],[-1.875,0.812]],"o":[[0,0],[3.125,0.375],[0.188,2.25],[0,0],[0,0],[-0.438,-3.062],[1.875,-0.812]],"v":[[81.25,89.562],[74.625,96.25],[78.312,101.062],[77,104.625],[83.125,104.625],[80.312,100.312],[82.938,93.5]],"c":true}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[0.25,-0.125],[-1.125,-0.188],[-0.062,-1.25],[0,0],[0,0],[-0.062,1.938],[-0.562,0.188]],"o":[[-0.25,0.125],[1.125,0.188],[0.062,1.25],[0,0],[0,0],[0.062,-1.938],[0.562,-0.188]],"v":[[66.688,96.75],[65.188,98.125],[66.875,101.062],[66.688,104.375],[68.375,104.375],[67.625,101],[68.75,97.688]],"c":true}},"nm":"Path 4"},{"ind":4,"ty":"sh","ks":{"k":{"i":[[0,0],[-1.812,-0.438],[0,-1],[0,0],[0,0],[0,1.812],[-1.188,0.438]],"o":[[0,0],[1.812,0.438],[0,1],[0,0],[0,0],[0,-1.812],[1.188,-0.438]],"v":[[63.375,96.812],[60.25,99.625],[62.688,102.062],[61.812,104.438],[65.875,104.438],[64.375,101.438],[66.125,98.188]],"c":true}},"nm":"Path 5"},{"ind":5,"ty":"sh","ks":{"k":{"i":[[-4.082,-4.26],[-1,-4.5],[0,0],[0,0],[-0.125,2.875],[-2.25,-0.625],[0,0]],"o":[[5.75,6],[1,4.5],[0,0],[0,0],[0.125,-2.875],[2.25,0.625],[0,0]],"v":[[-47.75,81.75],[-34.25,96.75],[-34.875,104.25],[-23.75,104.25],[-26.375,99.5],[-21.25,96.125],[-27.375,85.875]],"c":true}},"nm":"Path 6"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":12,"op":14,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"goop_07","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":12,"s":[{"i":[[-1,4.125],[1.375,-2.125],[-0.75,2.125],[-3.875,-21.125],[2.625,4.375],[0,0],[6.75,9.625],[3.125,19.375]],"o":[[1,-4.125],[-1.375,2.125],[0.75,-2.125],[3.875,21.125],[-2.625,-4.375],[0,0],[-6.75,-9.625],[-3.125,-19.375]],"v":[[-48.875,-64],[-53.375,-60.625],[-52.5,-50.5],[-46.5,-26.875],[-43.25,7.5],[-41.75,21.25],[-29,30.875],[-45.125,-26.25]],"c":true}],"h":1},{"t":14,"s":[{"i":[[-1,4.125],[1.375,-2.125],[-0.75,2.125],[-3.257,-21.229],[2.625,4.375],[0,0],[9.849,6.419],[3.125,19.375]],"o":[[1,-4.125],[-1.375,2.125],[0.75,-2.125],[3.375,22],[-2.625,-4.375],[0,0],[-11.125,-7.25],[-3.125,-19.375]],"v":[[-50.375,-64.25],[-53.375,-60.625],[-52.125,-53],[-45.125,-22.5],[-40,20.125],[-38.125,37.625],[-27,36.625],[-44.375,-22.625]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":12,"op":16,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"goop_06","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":12,"s":[{"i":[[1.125,-1],[-3.25,0.25],[-0.875,-9],[-5,0.875],[2,12.75],[-1.75,0.5]],"o":[[-1.125,1],[3.25,-0.25],[0.875,9],[5,-0.875],[-2,-12.75],[1.75,-0.5]],"v":[[73.125,-111.125],[70,-105.25],[76.75,-89.5],[81.25,-63.75],[78.875,-90.875],[80,-110]],"c":true}],"h":1},{"t":14,"s":[{"i":[[1.171,-0.295],[-2.153,1.61],[-0.201,-1.34],[-5.009,-0.246],[-0.336,3.735],[-1.247,1.676]],"o":[[-1.171,0.295],[2.198,-1.643],[0.267,1.777],[5.009,0.246],[0.293,-3.254],[1.247,-1.676]],"v":[[61.452,-136.777],[60.778,-129.11],[63.233,-128.777],[66.531,-120.371],[66.167,-133.36],[69.461,-140.05]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":12,"op":16,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"goop_05","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.125,-0.875],[-0.25,-2.125],[1.125,-2.25],[0.75,-3.125],[0,0],[0,0],[1.125,2.25],[0,2.625],[-0.25,4.125],[0.625,1.5]],"o":[[-0.125,0.875],[0.25,2.125],[-1.125,2.25],[-0.75,3.125],[0,0],[0,0],[-1.125,-2.25],[0,-2.625],[0.25,-4.125],[-0.625,-1.5]],"v":[[113.625,71.75],[115.75,76.5],[114.25,87.75],[112.5,100],[111.125,104.875],[119.375,104.875],[118,100.25],[115.75,92.5],[118,84],[117.125,73.125]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[3,-1.375],[-2.75,-0.5],[0.125,-4.875],[-0.25,-5.25],[-0.625,-1.625],[-1.625,0.625],[1.75,1.75],[-1.375,4],[1,7.875]],"o":[[-3,1.375],[2.75,0.5],[-0.125,4.875],[0.25,5.25],[0.625,1.625],[1.625,-0.625],[-1.75,-1.75],[1.375,-4],[-1,-7.875]],"v":[[111.25,12.875],[107.25,17.375],[111.5,25.125],[108,43.625],[111.875,51],[114.625,54.375],[113.375,47.875],[111.375,40.75],[115.75,16.875]],"c":true}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[4,-0.25],[-2.625,0],[-2.123,-34.473],[3.375,0],[-2.75,-0.75],[2.375,1],[2.375,41.5],[-2.5,0]],"o":[[-4,0.25],[2.625,0],[2.125,34.5],[-3.375,0],[2.75,0.75],[-2.375,-1],[-2.375,-41.5],[2.5,0]],"v":[[96,13.875],[90.25,18],[97.5,59],[96.375,99.75],[100.5,103.25],[109.375,104.125],[98.875,59],[104,16.875]],"c":true}},"nm":"Path 3"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":10,"op":12,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"goop_04","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":10,"s":[{"i":[[5.125,0.25],[-1.375,-0.375],[-4.625,-33.375],[7.75,-0.875],[0,0],[3,1],[1.375,23.375],[-6.375,1.25]],"o":[[-5.125,-0.25],[1.375,0.375],[4.61,33.267],[-7.75,0.875],[0,0],[-11.972,-3.991],[-1.375,-23.375],[6.375,-1.25]],"v":[[81.5,10.875],[69,17.125],[80.75,56.75],[70.625,99.125],[88.625,103.125],[102.25,103],[87.125,59.75],[92.375,17.25]],"c":true}],"h":1},{"t":12,"s":[{"i":[[5.125,0.447],[-1.444,0.506],[-10.156,-58.957],[12.125,-9.788],[0,0],[1.868,2.95],[7.875,41.831],[-6.375,2.234]],"o":[[-5.125,-0.447],[9.25,-3.241],[8,46.443],[-6.152,4.966],[0,0],[-9,-14.213],[-7.733,-41.076],[6.375,-2.234]],"v":[[54.5,-109.678],[46,-93.759],[68.5,-25.193],[62.375,51.788],[81.375,59.436],[96.25,62.463],[72.375,-25.331],[70.375,-105.035]],"c":true}],"h":1},{"t":14,"s":[{"i":[[5.125,0.447],[-1.528,0.059],[-10.156,-58.957],[3.875,-4.538],[0,0],[2.383,2.552],[5.875,39.581],[-8.375,9.535]],"o":[[-5.125,-0.447],[6.25,-0.241],[8,46.443],[-5.134,6.012],[0,0],[-3,-3.213],[-6.137,-41.344],[4.458,-5.075]],"v":[[42.5,-129.678],[42,-108.009],[62.25,-37.443],[68.625,41.538],[81.375,59.436],[83.25,47.963],[64.875,-38.331],[58.625,-127.285]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":10,"op":16,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"goop_03","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":10,"s":[{"i":[[6.75,-2.5],[-3,4.75],[-3,-40.5],[4.875,-0.125],[-4.5,0.25],[6.766,0.199],[0.75,40.5],[-4.25,0.5]],"o":[[-6.75,2.5],[3,-4.75],[3,40.5],[-3.134,0.08],[4.5,-0.25],[-8.5,-0.25],[-0.75,-40.5],[4.25,-0.5]],"v":[[3.25,-18.75],[-0.25,7],[7.5,50.5],[3.375,99.375],[13.75,103.25],[22.5,99.75],[10,38.5],[12.75,-15.75]],"c":true}],"h":1},{"t":12,"s":[{"i":[[6.588,-2.899],[-4.064,3.879],[-5.149,-40.969],[5.125,2.411],[-4.477,0.519],[5.698,3.653],[10.402,59.073],[-11.849,0.39]],"o":[[-6.588,2.899],[3.767,-3.596],[5.68,45.195],[-2.837,-1.334],[4.477,-0.519],[-6.738,-4.32],[-7.025,-39.893],[4.277,-0.141]],"v":[[-37.813,-105.067],[-46.517,-74.404],[-28.93,-21.195],[-29.625,30.839],[-15.537,59.837],[-2.262,56.07],[-21.902,-21.573],[-18.651,-96.14]],"c":true}],"h":1},{"t":14,"s":[{"i":[[6.588,-2.899],[-4.064,3.879],[-5.149,-40.969],[7.875,3.161],[-4.477,0.519],[5.698,3.653],[10.402,59.073],[-16.099,-0.36]],"o":[[-6.588,2.899],[3.767,-3.596],[5.68,45.195],[-2.909,-1.168],[4.477,-0.519],[-6.738,-4.32],[-7.025,-39.893],[4.278,0.096]],"v":[[-37.813,-105.067],[-45.767,-76.654],[-29.18,-23.445],[-29.625,35.839],[-15.537,59.837],[-3.012,56.57],[-23.402,-23.573],[-18.401,-103.39]],"c":true}],"h":1},{"t":16,"s":[{"i":[[6.588,-2.899],[-4.064,3.879],[-5.149,-40.969],[5.375,3.161],[-4.477,0.519],[5.698,3.653],[7.132,61.45],[-12.349,5.89]],"o":[[-6.588,2.899],[3.767,-3.596],[5.68,45.195],[-2.702,-1.589],[4.477,-0.519],[-6.738,-4.32],[-5.098,-43.927],[3.862,-1.842]],"v":[[-37.813,-105.067],[-47.267,-78.154],[-30.18,-28.695],[-26.875,40.089],[-15.537,59.837],[-6.012,54.57],[-25.902,-27.573],[-22.901,-106.89]],"c":true}],"h":1},{"t":18,"s":[{"i":[[6.588,-2.899],[-4.563,3.277],[-5.149,-40.969],[5.375,3.161],[-4.477,0.519],[6.006,3.121],[7.132,61.45],[-8.849,5.89]],"o":[[-6.588,2.899],[3.267,-2.346],[5.68,45.195],[-2.702,-1.589],[4.477,-0.519],[-10.238,-5.32],[-5.098,-43.927],[3.562,-2.371]],"v":[[-37.813,-105.067],[-45.517,-84.154],[-29.68,-28.195],[-26.375,39.839],[-15.537,59.837],[-7.012,53.07],[-28.402,-28.323],[-27.401,-105.39]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":10,"op":21,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"goop_02","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":10,"s":[{"i":[[24.5,-1.25],[-5.393,2.825],[-3.002,-48.722],[6.75,-0.25],[-17.258,1.726],[5.75,2.5],[2.103,47.519],[-5.5,0]],"o":[[-24.5,1.25],[5.25,-2.75],[3.25,52.75],[-10.543,0.39],[5,-0.5],[-3.076,-1.337],[-2.5,-56.5],[-0.25,0.5]],"v":[[28,-27.5],[7.5,-16.75],[26.75,35.25],[20.25,100.25],[42,102.25],[58.25,99.5],[45.5,45.75],[56.25,-7]],"c":true}],"h":1},{"t":12,"s":[{"i":[[24.5,-1.25],[-5.75,2],[-11.25,-57.5],[10.25,-2.5],[-16.75,4.5],[13.75,-1.75],[7.001,61.759],[-5.5,0]],"o":[[-24.5,1.25],[5.75,-2],[11.25,57.5],[-10.25,2.5],[16.75,-4.5],[-13.75,1.75],[-7,-61.75],[-0.25,0.5]],"v":[[9.5,-109.5],[-22.75,-96.75],[5.25,-33],[10.75,60.5],[33.5,72.5],[58.5,54.25],[29.5,-18],[38.25,-90.75]],"c":true}],"h":1},{"t":14,"s":[{"i":[[24.5,-1.25],[-5.75,2],[-11.25,-57.5],[10.25,-2.5],[-16.75,4.5],[13.844,-0.675],[10.25,64],[-6.5,-0.25]],"o":[[-24.5,1.25],[5.75,-2],[11.25,57.5],[-10.25,2.5],[16.75,-4.5],[-10.25,0.5],[-9.828,-61.364],[-0.25,0.5]],"v":[[-0.25,-124],[-23.5,-103.75],[4.75,-43.5],[11,60.75],[33.5,72.5],[50.5,53.25],[23.75,-31.5],[26.75,-112.75]],"c":true}],"h":1},{"t":16,"s":[{"i":[[24.5,-1.25],[-5.75,2],[-9.593,-57.799],[9.5,-0.25],[-16.75,4.5],[13.624,-2.554],[10.25,64],[-6.5,-0.25]],"o":[[-24.5,1.25],[5.75,-2],[10,60.25],[-10.547,0.278],[16.75,-4.5],[-8,1.5],[-9.828,-61.364],[-0.25,0.5]],"v":[[-0.25,-124],[-23.25,-107.5],[5.25,-43.75],[12.75,60],[33.5,72.5],[46,52],[21.75,-31.5],[17,-120.25]],"c":true}],"h":1},{"t":18,"s":[{"i":[[24.5,-1.25],[-5.75,2],[-10.25,-55],[9.5,-0.25],[-16.75,4.5],[13.624,-2.554],[10.25,64],[-6.5,-0.25]],"o":[[-24.5,1.25],[5.75,-2],[11.189,60.04],[-10.547,0.278],[16.75,-4.5],[-8,1.5],[-9.828,-61.364],[-0.25,0.5]],"v":[[-0.5,-129.25],[-20.75,-110.5],[6,-42.75],[13.75,59.25],[33.5,72.5],[43.75,51.75],[21,-33.5],[17.75,-123.75]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":10,"s":[{"i":[[2.063,0.026],[0.19,-7.45],[-1.891,-0.169],[-0.06,7.78]],"o":[[-2.063,-0.026],[-0.19,7.45],[1.891,0.169],[0.06,-7.78]],"v":[[37.358,-12.819],[34.741,0.451],[37.902,16.622],[40.201,1.575]],"c":true}],"h":1},{"t":12,"s":[{"i":[[3.25,-0.25],[-0.75,-11.75],[-3,0],[1,12.25]],"o":[[-3.25,0.25],[0.75,11.75],[3,0],[-1,-12.25]],"v":[[15.75,-91.5],[13.5,-70.25],[20.75,-45.25],[22.25,-69.25]],"c":true}],"h":1},{"t":14,"s":[{"i":[[3.25,-0.259],[-0.75,-12.192],[-3,0],[1,12.711]],"o":[[-3.25,0.259],[0.75,12.192],[3,0],[-1,-12.711]],"v":[[8.5,-107.241],[6.25,-85.191],[13.5,-59.25],[15,-84.153]],"c":true}],"h":1},{"t":16,"s":[{"i":[[3.242,-0.342],[-1.058,-12.169],[-2.999,0.076],[1.322,12.682]],"o":[[-3.242,0.342],[1.058,12.169],[2.999,-0.076],[-1.321,-12.682]],"v":[[2.647,-113.923],[1.706,-89.823],[10.36,-63.574],[10.979,-88.507]],"c":true}],"h":1},{"t":18,"s":[{"i":[[3.242,-0.342],[-1.058,-12.169],[-2.999,0.076],[1.322,12.682]],"o":[[-3.242,0.342],[1.058,12.169],[2.999,-0.076],[-1.321,-12.682]],"v":[[50.897,-90.173],[49.956,-66.073],[58.61,-39.824],[59.229,-64.757]],"c":true}],"h":1}]},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":[{"t":10,"s":[{"i":[[2.229,0.064],[-0.228,-17.339],[-2.078,-0.19],[0.231,12.73]],"o":[[-2.229,-0.064],[0.228,17.339],[2.078,0.19],[-0.231,-12.73]],"v":[[34.222,39.563],[31.343,63.133],[33.987,90.906],[39.021,63.403]],"c":true}],"h":1},{"t":12,"s":[{"i":[[4,-0.25],[-3.25,-31],[-3.75,0],[2.5,22.75]],"o":[[-4,0.25],[3.25,31],[3.75,0],[-2.5,-22.75]],"v":[[16,-36.5],[16.5,6],[27.25,56.5],[26.75,6]],"c":true}],"h":1},{"t":14,"s":[{"i":[[2.75,0.25],[-3.25,-31],[-3.75,0],[2.5,22.75]],"o":[[-2.75,-0.25],[3.25,31],[3.75,0],[-2.5,-22.75]],"v":[[13.75,-46.5],[14.75,-1.25],[27.75,52],[24.5,-2.75]],"c":true}],"h":1},{"t":16,"s":[{"i":[[2.75,0.25],[-5.201,-30.733],[-2.75,0.25],[2.5,22.75]],"o":[[-2.75,-0.25],[5.5,32.5],[3.735,-0.34],[-2.5,-22.75]],"v":[[8.75,-57.5],[13.25,-7.25],[26.25,47.5],[22.5,-9]],"c":true}],"h":1},{"t":18,"s":[{"i":[[4.25,0],[-5.201,-30.733],[-2.75,0.25],[2.5,22.75]],"o":[[-7.603,0],[5.5,32.5],[3.735,-0.34],[-2.5,-22.75]],"v":[[1,-113.75],[9.5,-40.25],[27.5,49],[17,-43.25]],"c":true}],"h":1}]},"nm":"Path 2"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":10,"op":21,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"goop_01","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-2.25,-1.375],[-0.875,-8.625],[1.75,0],[-2,0.125],[2.125,0.5],[0.5,2.625],[0.25,3.25],[-2.75,0.875]],"o":[[2.25,1.375],[0.875,8.625],[-1.275,0],[2,-0.125],[-2.125,-0.5],[-0.5,-2.625],[-0.25,-3.25],[2.75,-0.875]],"v":[[41,61.125],[45.625,78.25],[44.75,91],[49.125,95.375],[52,93.25],[47.875,87.25],[45.625,70.25],[48.75,63.375]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[5,-1],[-3.625,-0.125],[-0.375,-5.25],[2.625,0.5],[-6.875,-1.75],[3.5,1],[1.25,8.5],[-2.625,0.125]],"o":[[-5,1],[3.625,0.125],[0.375,5.25],[-2.625,-0.5],[6.875,1.75],[-3.5,-1],[-1.25,-8.5],[2.625,-0.125]],"v":[[34.875,58.375],[29.75,61.5],[35.25,72.625],[31.75,86.875],[42.125,94.875],[46,91.5],[37.75,72.5],[42.375,62.125]],"c":true}},"nm":"Path 2"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":8,"op":10,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"C_shape_01","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[13,0],[16.5,0],[5.956,-0.726],[0,0],[0,0],[11.5,0.75]],"o":[[-13,0],[-16.5,0],[-10.25,1.25],[0,0],[0,0],[-11.5,-0.75]],"v":[[43.75,97],[-5,101],[-67.25,100.75],[-69.75,104.75],[101.5,104.75],[79.5,102.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":2,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"C_shape_02","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[33.5,0],[12.512,-3.204],[0,0],[0,0],[0,1.75],[18,2.5],[12.5,0.5]],"o":[[-33.5,0],[-20.5,5.25],[0,0],[0,0],[0,-1.75],[-18,-2.5],[-12.5,-0.5]],"v":[[-16.25,87.25],[-78,93.5],[-87.75,104],[137.5,104],[141.5,102.5],[107,91.75],[65,90.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":4,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"C_shape_03","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[59,0],[5.5,-2.25],[0,-2.75],[0,0],[0,0],[0,3.25],[8.5,5]],"o":[[-55,0],[-5.5,2.25],[0,2.75],[0,0],[0,0],[0,-3.25],[-8.5,-5]],"v":[[17.25,55.75],[-71,95.25],[-82.5,101.75],[-77,104.5],[136.75,104.5],[140.75,100.75],[122,89.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":6,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"C_shape_04","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[19.25,0],[15.25,-12],[0,-2.75],[0,-2.75],[0,0],[0,0],[0,2],[1.25,3.5],[22,13.5]],"o":[[-19.25,0],[-16.268,12.801],[0,2.75],[0,2.75],[0,0],[0,0],[0,-2],[-1.25,-3.5],[-22,-13.5]],"v":[[15.75,41.5],[-44.5,62.75],[-58.5,94.75],[-61,100.5],[-57.25,104],[121.5,104],[126,101.5],[121.5,95],[88.25,55.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":8,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"C_shape_05","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[18.5,-10.75],[2.5,-10.75],[0,-9.5],[0,0],[-10.75,0],[0,7.25],[49.25,28.75]],"o":[[-18.5,10.75],[-2.5,10.75],[0,9.5],[0,0],[5.5,0],[0,-7.25],[-28.385,-16.57]],"v":[[-21.5,7.25],[-43.75,59.5],[-57.75,95.25],[-53.5,104.5],[124.75,104.5],[125.25,88.75],[55.75,14.25]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[7.044,7.208],[0,-11.25],[-8,-2.75],[-2.25,2.25]],"o":[[-10.75,-11],[0,11.25],[8,2.75],[2.25,-2.25]],"v":[[54,69.25],[23,70.25],[44,90.5],[66,92.75]],"c":true}},"nm":"Path 2"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":8,"op":10,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"C_shape_06","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[19,1.5],[13.25,-18.25],[-2.5,-20.5],[1.5,-9.5],[-0.25,-7],[0,0],[0,0],[18,0],[17.5,0],[0,4.75],[0,8.75],[-33.25,0],[0,0],[0,0],[31.738,30.227]],"o":[[-19,-1.5],[-13.25,18.25],[2.5,20.5],[-1.5,9.5],[0.25,7],[0,0],[0,0],[-18,0],[-17.5,0],[0,-4.75],[0,-8.75],[33.25,0],[0,0],[0,0],[-26.25,-25]],"v":[[13.75,-84],[-51,-67],[-54.25,1.75],[-50.5,83],[-56.75,98],[-47.25,104.625],[112.5,104.5],[66.75,98.5],[17.5,100],[-3.75,92],[0.5,54.25],[23.25,-24],[67.5,17.25],[116.75,17.25],[83.25,-47]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":12,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"C","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[267.5,286.5,0]},"a":{"k":[17.5,-113.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":12,"s":[{"i":[[-75.371,0],[-29.102,19.63],[0,0],[27.758,0],[0,39.88],[-14.871,8.889],[-17.399,-15.135],[0,0],[33.005,-27.323],[0,-56.954]],"o":[[28.379,0],[0,0],[-21.399,14.728],[-33.492,0],[0,-39.88],[18.412,-11.006],[0,0],[-43.102,-64.537],[-20.371,16.864],[0,65.546]],"v":[[17.871,3.021],[110.102,-19.63],[79.399,-59.228],[16.492,-39.454],[-52.722,-133.297],[-22.129,-196.889],[38.649,-190.115],[81.602,-210.463],[-55.879,-235.614],[-93.697,-126.546]],"c":true}],"h":1},{"t":14,"s":[{"i":[[-73.121,0],[-23.352,24.88],[0,0],[21.451,0],[0,39.88],[-25.621,13.139],[-14.399,-9.885],[0,0],[34.879,-24.886],[0,-56.954]],"o":[[28.379,0],[0,0],[-13.399,13.228],[-41.371,0],[0,-39.88],[19.087,-9.788],[0,0],[-60.852,-29.037],[-21.382,15.256],[0,65.546]],"v":[[17.871,3.021],[107.352,-33.13],[70.149,-63.478],[15.492,-40.704],[-52.972,-128.796],[-15.879,-208.639],[41.649,-205.615],[74.102,-245.463],[-54.379,-238.114],[-96.197,-128.546]],"c":true}],"h":1},{"t":16,"s":[{"i":[[-73.121,0],[-23.352,24.88],[0,0],[21.451,0],[0,39.88],[-27.571,14.639],[-17.399,-8.235],[0,0],[35.183,-27.163],[0,-61.393]],"o":[[28.379,0],[0,0],[-12.973,14.355],[-41.371,0],[0,-39.88],[18.952,-10.046],[0,0],[-43.902,-18.237],[-18.075,13.821],[0,65.546]],"v":[[17.871,3.021],[104.052,-35.08],[67.449,-66.628],[15.42,-41.304],[-55.222,-131.646],[-13.629,-212.839],[44.199,-213.565],[64.352,-254.913],[-55.579,-240.064],[-98.897,-133.197]],"c":true}],"h":1},{"t":18,"s":[{"i":[[-73.121,0],[-23.352,24.88],[0,0],[21.451,0],[0,39.88],[-28.871,15.639],[-19.399,-7.135],[0,0],[35.385,-28.682],[0,-64.352]],"o":[[28.379,0],[0,0],[-12.689,15.106],[-41.371,0],[0,-39.88],[18.861,-10.217],[0,0],[-32.602,-11.037],[-15.871,12.864],[0,65.547]],"v":[[17.871,3.021],[101.852,-36.38],[65.649,-68.728],[15.371,-41.704],[-56.722,-133.547],[-12.129,-215.639],[45.899,-218.865],[57.852,-261.213],[-56.379,-241.364],[-100.697,-136.297]],"c":true}],"h":1},{"t":21,"s":[{"i":[[-65.621,0],[-23.352,24.88],[0,0],[21.451,0],[0,39.88],[-38.121,11.389],[-21.899,0],[0,0],[37.129,-26.386],[0,-64.352]],"o":[[35.348,0],[0,0],[-12.689,15.106],[-43.371,0],[0,-39.88],[20.553,-6.141],[0,0],[-32.602,0],[-25.979,18.462],[0,66.797]],"v":[[17.871,3.021],[105.102,-35.88],[68.399,-68.478],[17.871,-43.204],[-53.972,-116.297],[4.871,-200.639],[71.899,-204.115],[73.602,-249.713],[-44.879,-225.114],[-97.447,-116.297]],"c":true}],"h":1},{"t":23,"s":[{"i":[[-68.806,0],[-28.5,22.214],[0,0],[22.279,0],[0,39.261],[-41.419,0],[-13.91,-13.396],[0,0],[41.444,0],[0,-63.353]],"o":[[36.713,0],[0,0],[-14.91,13.625],[-41.419,0],[0,-39.261],[22.279,0],[0,0],[-21.965,-25.876],[-67.15,0],[0,59.979]],"v":[[18.306,3.021],[114.75,-36.214],[73.41,-67.125],[18.306,-42.486],[-57.241,-107.989],[14.806,-177.743],[74.66,-153.604],[111.75,-183.265],[12.056,-228],[-104,-111.479]],"c":true}],"h":1},{"t":25,"s":[{"i":[[-64.655,0],[-21.149,25.983],[0,0],[21.451,0],[0,39.88],[-39.88,0],[-12.689,-15.408],[0,0],[35.349,0],[0,-64.352]],"o":[[35.349,0],[0,0],[-12.689,15.106],[-39.88,0],[0,-39.88],[21.451,0],[0,0],[-21.149,-26.285],[-64.655,0],[0,64.352]],"v":[[17.871,3.021],[107.602,-39.88],[71.649,-67.978],[17.871,-43.204],[-52.222,-113.297],[17.871,-183.389],[71.649,-158.615],[107.602,-186.713],[17.871,-229.614],[-98.447,-113.297]],"c":true}],"h":1}]},"nm":"C"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"C"}],"ip":12,"op":32,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":1,"nm":"ResizerTemp","parent":26,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":1,"nm":"White Solid 17","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":32,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/Colon.json b/example/shared/src/commonMain/composeResources/files/mobilo/Colon.json new file mode 100644 index 00000000..f0cb55ff --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/Colon.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 6","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[303,350.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":36,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 16","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,56,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.937,-48.274]],"o":[[0,0],[-1,51.5]],"v":[[-54,-160],[-54,-156]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":51},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":22,"st":19,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 18","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-122,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.937,-48.274]],"o":[[0,0],[-1,51.5]],"v":[[-54,-148],[-54,-156]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":51},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":18,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 17","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-82,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.937,-48.274]],"o":[[0,0],[-1,51.5]],"v":[[-54,-144],[-54,-156]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":51},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":17,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 15","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,42,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.937,-48.274]],"o":[[0,0],[-1,51.5]],"v":[[-54,-160],[-54,-156]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":51},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 13","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,28,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.937,-48.274]],"o":[[0,0],[-1,51.5]],"v":[[-54,-120],[-54,-54]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":51},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":15,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 12","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-53,74,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,2.5]],"o":[[0,0],[-0.005,-222]],"v":[[20,-95],[19,-96.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":29},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-20,50],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":5,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 29","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-110,148,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-5,-0.5]],"o":[[0,0],[220.899,22.09]],"v":[[102,-154],[103,-153.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":20},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-40,30],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":6,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 28","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-86,96,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-5,-0.5]],"o":[[0,0],[220.899,22.09]],"v":[[102,-154],[103,-153.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":28},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-40,30],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":5,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 9","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-26,20,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-5,-0.5]],"o":[[0,0],[220.899,22.09]],"v":[[102,-154],[103,-153.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":40},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-40,30],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":4,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 20","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-73,58,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,2.5]],"o":[[0,0],[-0.005,-222]],"v":[[19,-135],[19,-148.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":50},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 19","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-73,98,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,2.5]],"o":[[0,0],[-0.005,-222]],"v":[[20,-135],[19,-88.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":51},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":15,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 10","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-49,58,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,2.5]],"o":[[0,0],[-0.005,-222]],"v":[[20,-95],[19,-96.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":55},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":4,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 1","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-52,44]],"o":[[0,0],[169.472,-143.399]],"v":[[-54,34],[-10,-66]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":55},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":3,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 8","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-19,12.5]],"o":[[0,0],[185.462,-122.015]],"v":[[-10,-68],[31,-102.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":55},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":3,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 7","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[34,-6,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[21,2.5],[0,0]],"o":[[-21,-2.5],[0,0]],"v":[[102,-154],[59,-143.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":45},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":3,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Shape Layer 3","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-16,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-51,-4]],"o":[[0,0],[221.32,17.358]],"v":[[69,-153],[136,-160]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":55},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":2,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 5","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-14,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-127.5,-8.5]],"o":[[0,0],[221.508,14.767]],"v":[[14,-126],[164,-160.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":55},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":2,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"Up 6","parent":1,"ks":{"o":{"k":100},"r":{"k":90},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"n":"0p833_0p833_1_0","t":2,"s":[-53.446,-328.607,0],"e":[-53.446,-94.607,0],"to":[0,39,0],"ti":[4.73695171290616e-15,-9.33333301544189,0]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[-53.446,-94.607,0],"e":[-53.446,-272.607,0],"to":[-4.73695171290616e-15,9.33333301544189,0],"ti":[4.73695171290616e-15,29.6666660308838,0]},{"i":{"x":0,"y":0},"o":{"x":1,"y":1},"n":"0_0_1_1","t":18,"s":[-53.446,-272.607,0],"e":[-53.446,-272.607,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"n":"0p833_0p833_1_0","t":21,"s":[-53.446,-272.607,0],"e":[-53.446,-54.607,0],"to":[4.73695171290616e-15,36.3333320617676,0],"ti":[-4.73695171290616e-15,-36.3333320617676,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[-53.446,-54.607,0],"e":[-53.446,-54.607,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[25.893,-128.554,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":14,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":22,"s":[100,100,100],"e":[80,120,100]},{"i":{"x":[0.34,0.34,0.34],"y":[1,1,0.34]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p34_1_0p167_0p167","0p34_1_0p167_0p167","0p34_0p34_0p167_0p167"],"t":23,"s":[80,120,100],"e":[100,100,100]},{"t":25}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}],"e":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}],"e":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,13.898]],"v":[[15.838,-99.015],[28.843,-128.901],[15.838,-158.408],[-7.041,-128.901]],"c":true}]},{"i":{"x":0.34,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p34_1_0p167_0p167","t":23,"s":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,13.898]],"v":[[15.838,-99.015],[28.843,-128.901],[15.838,-158.408],[-7.041,-128.901]],"c":true}],"e":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}]},{"t":25}]},"nm":"colonpath"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"colon"}],"ip":15,"op":36,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"Up 5","parent":1,"ks":{"o":{"k":100},"r":{"k":90},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"n":"0p833_0p833_1_0","t":-2,"s":[-53.446,-328.607,0],"e":[-53.446,51.393,0],"to":[0,63.3333320617676,0],"ti":[0,-63.3333320617676,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[-53.446,51.393,0],"e":[-53.446,51.393,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":13,"s":[-53.446,51.393,0],"e":[-53.446,-130.607,0],"to":[-4.73695171290616e-15,-30.3333339691162,0],"ti":[4.73695171290616e-15,30.3333339691162,0]},{"i":{"x":0,"y":0},"o":{"x":1,"y":1},"n":"0_0_1_1","t":17,"s":[-53.446,-130.607,0],"e":[-53.446,-130.607,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"n":"0p833_0p833_1_0","t":19,"s":[-53.446,-130.607,0],"e":[-53.446,51.393,0],"to":[4.73695171290616e-15,30.3333339691162,0],"ti":[-4.73695171290616e-15,-30.3333339691162,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[-53.446,51.393,0],"e":[-53.446,51.393,0],"to":[0,0,0],"ti":[0,0,0]},{"t":24}]},"a":{"k":[25.893,-128.554,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":1,"s":[100,100,100],"e":[80,120,100]},{"i":{"x":[0.34,0.34,0.34],"y":[1,1,0.34]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p34_1_0p167_0p167","0p34_1_0p167_0p167","0p34_0p34_0p167_0p167"],"t":2,"s":[80,120,100],"e":[50,200,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.66,0.66,0.66],"y":[0,0,0.66]},"n":["0p833_0p833_0p66_0","0p833_0p833_0p66_0","0p833_0p833_0p66_0p66"],"t":13,"s":[50,200,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":14,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":21,"s":[100,100,100],"e":[80,120,100]},{"i":{"x":[0.34,0.34,0.34],"y":[1,1,0.34]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p34_1_0p167_0p167","0p34_1_0p167_0p167","0p34_0p34_0p167_0p167"],"t":22,"s":[80,120,100],"e":[100,100,100]},{"t":24}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}],"e":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,13.898]],"v":[[15.838,-99.015],[28.843,-128.901],[15.838,-158.408],[-7.041,-128.901]],"c":true}]},{"i":{"x":0.34,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p34_1_0p167_0p167","t":2,"s":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,13.898]],"v":[[15.838,-99.015],[28.843,-128.901],[15.838,-158.408],[-7.041,-128.901]],"c":true}],"e":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-17.284]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,17.716]],"v":[[15.838,-95.682],[28.843,-128.901],[15.838,-161.741],[-7.041,-128.901]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.66,"y":0},"n":"0p833_0p833_0p66_0","t":13,"s":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-17.284]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,17.716]],"v":[[15.838,-95.682],[28.843,-128.901],[15.838,-161.741],[-7.041,-128.901]],"c":true}],"e":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}],"e":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}],"e":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,13.898]],"v":[[15.838,-99.015],[28.843,-128.901],[15.838,-158.408],[-7.041,-128.901]],"c":true}]},{"i":{"x":0.34,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p34_1_0p167_0p167","t":22,"s":[{"i":[[-13.596,0],[0,28.113],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-28.137],[-13.596,0],[0,13.898]],"v":[[15.838,-99.015],[28.843,-128.901],[15.838,-158.408],[-7.041,-128.901]],"c":true}],"e":[{"i":[[-13.596,0],[0,13.898],[13.898,0],[0,-13.596]],"o":[[13.898,0],[0,-13.596],[-13.596,0],[0,13.898]],"v":[[0.213,-103.024],[25.893,-128.705],[0.213,-154.083],[-25.166,-128.705]],"c":true}]},{"t":24}]},"nm":"colon path"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"colon"}],"ip":3,"op":36,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 25","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-155,-110,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-0.866]],"o":[[0,0],[0,42]],"v":[[101,-174],[101,-164.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":50},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":22,"op":23,"st":20,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 24","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-155,-92,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-0.866]],"o":[[0,0],[0,42]],"v":[[101,-174],[101,-164.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":50},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":18,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 23","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-155,-52,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.236,-5.794],[0,-0.866]],"o":[[0,0],[-0.049,1.207],[0,42]],"v":[[102,-174],[101.079,-160.66],[101,-156.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":50},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":17,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"Shape Layer 22","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-73,6,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,2.5]],"o":[[0,0],[-0.005,-222]],"v":[[20,-147],[19,-148.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":50},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":22,"st":19,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"Shape Layer 21","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-73,6,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,2.5]],"o":[[0,0],[-0.005,-222]],"v":[[20,-147],[19,-148.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":50},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":17,"st":14,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":36,"fr":25,"w":500,"h":600} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/Comma.json b/example/shared/src/commonMain/composeResources/files/mobilo/Comma.json new file mode 100644 index 00000000..27c96e66 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/Comma.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":1,"ty":1,"nm":"Main Circle","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.397,"y":1},"o":{"x":0.749,"y":0},"n":"0p397_1_0p749_0","t":0,"s":[248.189,381.189,0],"e":[250.189,158.189,0],"to":[0.33333334326744,-37.1666679382324,0],"ti":[-0.33333334326744,37.1666679382324,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":2,"s":[250.189,158.189,0],"e":[250.189,158.189,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.596,"y":0},"n":"0p667_1_0p596_0","t":11,"s":[250.189,158.189,0],"e":[250.189,377.189,0],"to":[0,36.5,0],"ti":[0,-36.5,0]},{"t":14}]},"a":{"k":[145.439,169.439,0]},"s":{"k":[{"i":{"x":[0,0,0.667],"y":[1,1,0.667]},"o":{"x":[0.559,0.559,0.333],"y":[0,0,0.333]},"n":["0_1_0p559_0","0_1_0p559_0","0p667_0p667_0p333_0p333"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"t":1}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":{"i":[[14.05,0],[0,-14.05],[-14.05,0],[0,14.05]],"o":[[-14.05,0],[0,14.05],[14.05,0],[0,-14.05]],"v":[[145.439,144],[120,169.439],[145.439,194.879],[170.879,169.439]],"c":true}},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#00023d","ip":0,"op":41,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":1,"nm":"Tail/Tracer","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[242.354,343.012,0]},"a":{"k":[222.854,231.512,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"t":1}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.733,"y":0},"n":"0p833_0p833_0p733_0","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[250.207,189.75],[210.5,189.5],[221.75,214.523],[237.207,214.797]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.858,53.779],[206.504,53.482],[221.905,207.999],[237.362,208.272]],"c":true}]},{"i":{"x":0.187,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p187_1_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.858,53.779],[206.504,53.482],[221.905,207.999],[237.362,208.272]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.102,53.812],[206.457,53.688],[222,204.023],[237.457,204.297]],"c":true}]},{"i":{"x":0.747,"y":1},"o":{"x":0.733,"y":0},"n":"0p747_1_0p733_0","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.102,53.812],[206.457,53.688],[222,204.023],[237.457,204.297]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.977,53.938],[206.457,54.062],[221.5,186.523],[236.957,186.797]],"c":true}]},{"i":{"x":0.267,"y":1},"o":{"x":1,"y":0},"n":"0p267_1_1_0","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.977,53.938],[206.457,54.062],[221.5,186.523],[236.957,186.797]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.227,53.688],[206.457,54.062],[223.5,114.773],[238.457,114.797]],"c":true}]},{"i":{"x":0.267,"y":1},"o":{"x":0.367,"y":1},"n":"0p267_1_0p367_1","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.227,53.688],[206.457,54.062],[223.5,114.773],[238.457,114.797]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.476,56.312],[207.207,56.437],[221.75,88.773],[239.957,89.047]],"c":true}]},{"i":{"x":0.314,"y":1},"o":{"x":0.367,"y":1},"n":"0p314_1_0p367_1","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.476,56.312],[207.207,56.437],[221.75,88.773],[239.957,89.047]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[246.852,55.688],[215.332,56.812],[217.5,45.523],[244.457,45.547]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[246.852,55.688],[215.332,56.812],[217.5,45.523],[244.457,45.547]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[247.232,50.625],[213.9,53.25],[220.099,36.398],[241.306,36.547]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[247.232,50.625],[213.9,53.25],[220.099,36.398],[241.306,36.547]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.363,66.813],[207.468,66.188],[222.699,27.273],[238.156,27.547]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.363,66.813],[207.468,66.188],[222.699,27.273],[238.156,27.547]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.863,182.5],[205.593,183],[224,64.023],[238.207,64.297]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.863,182.5],[205.593,183],[224,64.023],[238.207,64.297]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.456,260],[206.312,259.625],[221.541,102.523],[242.123,102.719]],"c":true}]},{"i":{"x":0.801,"y":1},"o":{"x":0.736,"y":0},"n":"0p801_1_0p736_0","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[255.456,260],[206.312,259.625],[221.541,102.523],[242.123,102.719]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.331,257.75],[206.937,257.688],[216.324,244.273],[244.406,243.969]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.331,257.75],[206.937,257.688],[216.324,244.273],[244.406,243.969]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[251.331,280.25],[219.937,288.688],[219.074,291.898],[244.531,296.844]],"c":true}]},{"i":{"x":0.382,"y":1},"o":{"x":0.614,"y":0},"n":"0p382_1_0p614_0","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[251.331,280.25],[219.937,288.688],[219.074,291.898],[244.531,296.844]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[251.331,280.25],[219.937,288.688],[192.574,362.523],[211.906,369.719]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.922,"y":0},"n":"0_1_0p922_0","t":23.234,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[251.331,280.25],[219.937,288.688],[192.574,362.523],[211.906,369.719]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[251.331,280.25],[219.937,288.688],[204.381,335.535],[223.713,342.73]],"c":true}]},{"t":27}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#00023d","ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Little Circle","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":1,"y":1},"o":{"x":0.49,"y":0},"n":"1_1_0p49_0","t":17,"s":[250.189,158.189,0],"e":[250.189,377.189,0],"to":[0,14.2553644180298,0],"ti":[0,-22.2446365356445,0]},{"t":21}]},"a":{"k":[0.605,-79.222,0]},"s":{"k":[274,274,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[8.59,8.59]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0.605,-79.222],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":13,"op":41,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"splash 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250.5,371,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[16.75,1.25]],"o":[[0,0],[-11.977,-0.894]],"v":[[-12.5,-28.25],[-30.5,-2.5]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[100],"e":[0]},{"t":6}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[100],"e":[0]},{"t":11}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":41,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"splash 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[244,341,0]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[16.75,1.25]],"o":[[0,0],[-11.977,-0.894]],"v":[[-12.5,-28.25],[-30.5,-2.5]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[100],"e":[0]},{"t":6}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[100],"e":[0]},{"t":15}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":41,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"splash 3","ks":{"o":{"k":100},"r":{"k":30},"p":{"k":[271,361,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[17.086,-12.301]],"o":[[0,0],[-14.422,10.383]],"v":[[-15,-28.25],[-30.5,-2.5]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[0],"e":[100]},{"t":28}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[0],"e":[100]},{"t":25}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-3.199,93.223],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":37,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"splash 4","ks":{"o":{"k":100},"r":{"k":19},"p":{"k":[268.5,372.5,0]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[17.086,-12.301]],"o":[[0,0],[-14.422,10.383]],"v":[[-15,-28.25],[-30.5,-2.5]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":25,"s":[0],"e":[100]},{"t":30}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[0],"e":[100]},{"t":27}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-3.199,93.223],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":37,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"dot 4","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[317.711,287.902,0]},"a":{"k":[-89.598,-97.598,0]},"s":{"k":[24.33,24.011,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[28.805,28.805]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-89.598,-97.598],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":13,"op":17,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"dot 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[298.711,239.902,0]},"a":{"k":[-89.598,-97.598,0]},"s":{"k":[43.33,42.761,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[28.805,28.805]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-89.598,-97.598],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":9,"op":13,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"dot 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[180.711,351.902,0]},"a":{"k":[-89.598,-97.598,0]},"s":{"k":[30,29.606,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[28.805,28.805]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-89.598,-97.598],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":18,"op":23,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"dot 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[208.711,277.902,0]},"a":{"k":[-89.598,-97.598,0]},"s":{"k":[24,23.685,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[28.805,28.805]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-89.598,-97.598],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":4,"op":9,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":",","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[241.75,399.75,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,4.532],[13.898,0],[0,-13.898],[-8.157,-4.532],[0,0],[0,0],[0,0]],"o":[[0,-13.898],[-13.898,0],[0,9.668],[0,0],[0,0],[0,0],[2.115,-3.625]],"v":[[34.097,-22.357],[8.416,-48.038],[-16.962,-22.357],[-3.065,0.302],[-19.077,48.038],[2.374,55.289],[30.773,-9.97]],"c":true}},"nm":","},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":","}],"ip":27,"op":48,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":48,"fr":25,"w":500,"h":600} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/D.json b/example/shared/src/commonMain/composeResources/files/mobilo/D.json new file mode 100644 index 00000000..66998a66 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/D.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Rotation","parent":22,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p3_1_0p167_0p167"],"t":9,"s":[0],"e":[-27.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0],"y":[0]},"n":["0p833_0p833_0_0"],"t":17,"s":[-27.4],"e":[-27.4]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p2_1_0p167_0p167"],"t":20,"s":[-27.4],"e":[1.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.8],"y":[0]},"n":["0p833_0p833_0p8_0"],"t":22,"s":[1.6],"e":[-0.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[-0.4],"e":[0]},{"t":25}]},"p":{"k":[324,281,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":3,"nm":"Position","parent":0,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p2_1_0p167_0p167","t":8,"s":[0,0,0],"e":[-48.2,0,0],"to":[-8.03333377838135,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0,"y":0},"n":"0p833_0p833_0_0","t":18,"s":[-48.2,0,0],"e":[0,0,0],"to":[0,0,0],"ti":[-8.36658191680908,0.00751352356747,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[0,0,0],"e":[1.999,-0.045,0],"to":[8.36658191680908,-0.00751352356747,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[1.999,-0.045,0],"e":[0,0,0],"to":[0,0,0],"ti":[0.33324864506721,-0.00751352356747,0]},{"t":24}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Mobilo_D 2","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,119,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,-40.485],[43.506,0]],"o":[[0,0],[0,0],[43.506,0],[0,40.485],[0,0]],"v":[[-43.027,-41.995],[-43.027,-184.598],[-18.858,-184.598],[49.725,-113.297],[-18.858,-41.995]],"c":true}},"nm":"D"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"D"}],"ip":22,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Mobilo_D","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,119,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,62.54],[73.114,0],[0,0]],"o":[[0,0],[73.114,0],[0,-62.54],[0,0],[0,0]],"v":[[-89.857,0],[-16.743,0],[98.669,-113.297],[-16.743,-226.593],[-89.857,-226.593]],"c":true}},"nm":"D"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"D"}],"ip":22,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"MotionLine","parent":1,"ks":{"o":{"k":100},"r":{"k":180},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[-13,-56.9,0],"e":[74,-56.9,0],"to":[14.5,0,0],"ti":[-14.5,0,0]},{"t":23}]},"a":{"k":[0,0,0]},"s":{"k":[100,50,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[222.5,-54.5],[-87,-55]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p1_1_0p167_0p167"],"t":20,"s":[57],"e":[100]},{"t":23}],"ix":1},"e":{"k":100,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":26},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":29,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"MotionLine","parent":1,"ks":{"o":{"k":100},"r":{"k":180},"p":{"k":[78,-10.4,0]},"a":{"k":[0,0,0]},"s":{"k":[100,50,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[222.5,-54.5],[-87,-55]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p1_1_0p167_0p167"],"t":21,"s":[22.6],"e":[100]},{"t":24}],"ix":1},"e":{"k":100,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":26},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":29,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"BackHighlight","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.607,"y":0.67},"o":{"x":0.167,"y":0.167},"n":"0p607_0p67_0p167_0p167","t":0,"s":[-74,139,0],"e":[-74,67.964,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.38,"y":1},"o":{"x":0.143,"y":0.564},"n":"0p38_1_0p143_0p564","t":1,"s":[-74,67.964,0],"e":[-74,-8,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.8,"y":0},"n":"0p833_0p833_0p8_0","t":6,"s":[-74,-8,0],"e":[-74,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[-74,19,0],"e":[-170.759,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":0.799},"o":{"x":0.167,"y":0.167},"n":"0p2_0p799_0p167_0p167","t":9,"s":[-170.759,19,0],"e":[-289,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0,"y":0},"n":"0p833_0p833_0_0","t":15,"s":[-289,19,0],"e":[-298.9,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[-298.9,19,0],"e":[-207.9,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[-207.9,19,0],"e":[-216.1,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[-216.1,19,0],"e":[-214.7,19,0],"to":[0,0,0],"ti":[0,0,0]},{"t":23}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[74,-127],[74,99.625]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":47},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p5_1_0p167_0p167"],"t":1,"s":[58],"e":[0]},{"t":5}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.8],"y":[0]},"n":["0p833_0p833_0p8_0"],"t":2,"s":[100],"e":[0]},{"t":7}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":1,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Back","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.607,"y":0.67},"o":{"x":0.167,"y":0.167},"n":"0p607_0p67_0p167_0p167","t":0,"s":[-74,139,0],"e":[-74,67.964,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.38,"y":1},"o":{"x":0.143,"y":0.564},"n":"0p38_1_0p143_0p564","t":1,"s":[-74,67.964,0],"e":[-74,-8,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.8,"y":0},"n":"0p833_0p833_0p8_0","t":6,"s":[-74,-8,0],"e":[-74,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[-74,19,0],"e":[-170.759,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":0.799},"o":{"x":0.167,"y":0.167},"n":"0p2_0p799_0p167_0p167","t":9,"s":[-170.759,19,0],"e":[-289,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0,"y":0},"n":"0p833_0p833_0_0","t":15,"s":[-289,19,0],"e":[-298.9,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[-298.9,19,0],"e":[-207.9,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[-207.9,19,0],"e":[-216.1,19,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[-216.1,19,0],"e":[-214.7,19,0],"to":[0,0,0],"ti":[0,0,0]},{"t":23}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[74,-127],[74,99.625]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":47},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p5_1_0p167_0p167"],"t":1,"s":[58],"e":[0]},{"t":5}],"ix":1},"e":{"k":100,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":1,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"MotionLine","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,45,0]},"a":{"k":[0,0,0]},"s":{"k":[100,50,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[222.5,-54.5],[-125,-54.5]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.5],"y":[0]},"n":["0p833_0p833_0p5_0"],"t":11,"s":[0],"e":[100]},{"t":16}],"ix":1},"e":{"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p5_1_0p167_0p167"],"t":9,"s":[0],"e":[100]},{"t":15}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":26},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"MotionLine","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,-2,0]},"a":{"k":[0,0,0]},"s":{"k":[100,50,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[222.5,-54.5],[-125,-54.5]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.5],"y":[0]},"n":["0p833_0p833_0p5_0"],"t":9,"s":[0],"e":[100]},{"t":14}],"ix":1},"e":{"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p5_1_0p167_0p167"],"t":8,"s":[0],"e":[100]},{"t":13}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":26},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Arrow","parent":1,"ks":{"o":{"k":100},"r":{"k":90},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[62.468,0.5,0],"e":[64.461,-5.413,0],"to":[0,0,0],"ti":[0,0,0]},{"t":22}]},"a":{"k":[74,-19,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[74,-127],[74,99.625]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":47},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":21,"s":[22],"e":[6]},{"t":22}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":21,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Arrow","parent":6,"ks":{"o":{"k":100},"r":{"k":90},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[223.987,-19,0],"e":[211.587,-19,0],"to":[0,0,0],"ti":[0,0,0]},{"t":9}]},"a":{"k":[74,-19,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[100,100,100],"e":[100,110.2,100]},{"t":11}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[74,-127],[74,99.625]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":47},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[21.3],"e":[100]},{"t":9}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":9,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Arrow","parent":1,"ks":{"o":{"k":100},"r":{"k":90},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[53.229,0,0],"e":[40.829,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":9}]},"a":{"k":[74,-19,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[74,-127],[74,99.625]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":47},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[21.3],"e":[100]},{"t":9}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":7,"op":9,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"CurveHL","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,19,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,-0.625],[0,-25.5],[0,-48.625]],"o":[[0,41.25],[0,25.5],[-0.25,0.062]],"v":[[74,-127],[74.5,-13],[74,99.625]],"c":false}],"e":[{"i":[[-0.225,-0.4],[0,-25.5],[33.99,-16.002]],"o":[[33.884,13.084],[0,25.5],[-0.25,0.062]],"v":[[42.116,-98.584],[74.5,-13],[42.26,72.252]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-0.225,-0.4],[0,-25.5],[33.99,-16.002]],"o":[[33.884,13.084],[0,25.5],[-0.25,0.062]],"v":[[42.116,-98.584],[74.5,-13],[42.26,72.252]],"c":false}],"e":[{"i":[[-0.401,-0.224],[0,-25.5],[52.054,-11.526]],"o":[[52.781,7.349],[0,25.5],[-0.25,0.062]],"v":[[17.731,-104.975],[74.5,-13],[17.696,77.838]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-0.401,-0.224],[0,-25.5],[52.054,-11.526]],"o":[[52.781,7.349],[0,25.5],[-0.25,0.062]],"v":[[17.731,-104.975],[74.5,-13],[17.696,77.838]],"c":false}],"e":[{"i":[[-0.522,-0.103],[0,-25.5],[64.171,-5.304]],"o":[[65.855,3.382],[0,25.5],[-0.25,0.062]],"v":[[0.994,-106.893],[74.5,-13],[0.672,80.067]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p2_1_0p167_0p167","t":11,"s":[{"i":[[-0.522,-0.103],[0,-25.5],[64.171,-5.304]],"o":[[65.855,3.382],[0,25.5],[-0.25,0.062]],"v":[[0.994,-106.893],[74.5,-13],[0.672,80.067]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0,"y":0},"n":"0p833_0p833_0_0","t":14,"s":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[61,0]],"o":[[62.5,0],[0,25.5],[-0.25,0.062]],"v":[[-3.5,-105.75],[74.5,-13],[-4,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.625,0],[0,-25.5],[61,0]],"o":[[62.5,0],[0,25.5],[-0.25,0.062]],"v":[[-3.5,-105.75],[74.5,-13],[-4,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[0],"e":[45]},{"t":21}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[100],"e":[55]},{"t":21}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":19,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"BotLineHL","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,-7.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,-100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-56.75,-0.625],[-19,-44.875]],"o":[[56.75,0.625],[18.113,42.779]],"v":[[-45.438,-104.812],[68.5,-68.875]],"c":false}],"e":[{"i":[[-43.247,1.238],[-25.5,-39.375]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-104.625],[59,-76.625]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-43.247,1.238],[-25.5,-39.375]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-104.625],[59,-76.625]],"c":false}],"e":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.688,-105.125],[62.25,-67.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.688,-105.125],[62.25,-67.125]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-104.75],[-7.625,-106.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-104.75],[-7.625,-106.062]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105],[-11.75,-105.562]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105],[-11.75,-105.562]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.688,-105.188],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.688,-105.188],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.125],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.125],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-90,-105.5],[-12.125,-105.5]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[0],"e":[63.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[63.4],"e":[100]},{"t":21}],"ix":1},"e":{"k":100,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":19,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"TopLineHL","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,18.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-56.75,-0.625],[-19,-44.875]],"o":[[56.75,0.625],[18.113,42.779]],"v":[[-44.5,-105.875],[68.5,-68.875]],"c":false}],"e":[{"i":[[-43.247,1.238],[-22.25,-35.625]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-105.875],[59,-78.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-43.247,1.238],[-22.25,-35.625]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-105.875],[59,-78.125]],"c":false}],"e":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.75,-105.875],[62.25,-67.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.75,-105.875],[62.25,-67.125]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-105.5],[-7.125,-105.438]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-105.5],[-7.125,-105.438]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105.5],[-11.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105.5],[-11.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.875,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.875,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-90,-105.5],[-12.125,-105.5]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[0],"e":[63]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[63],"e":[100]},{"t":21}],"ix":1},"e":{"k":100,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":19,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Curve","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,19,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,-0.625],[0,-25.5],[0,-48.625]],"o":[[0,41.25],[0,25.5],[-0.25,0.062]],"v":[[74,-127],[74.5,-13],[74,99.625]],"c":false}],"e":[{"i":[[-0.225,-0.4],[0,-25.5],[33.99,-16.002]],"o":[[33.884,13.084],[0,25.5],[-0.25,0.062]],"v":[[42.116,-98.584],[74.5,-13],[42.26,72.252]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-0.225,-0.4],[0,-25.5],[33.99,-16.002]],"o":[[33.884,13.084],[0,25.5],[-0.25,0.062]],"v":[[42.116,-98.584],[74.5,-13],[42.26,72.252]],"c":false}],"e":[{"i":[[-0.401,-0.224],[0,-25.5],[52.054,-11.526]],"o":[[52.781,7.349],[0,25.5],[-0.25,0.062]],"v":[[17.731,-104.975],[74.5,-13],[17.696,77.838]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-0.401,-0.224],[0,-25.5],[52.054,-11.526]],"o":[[52.781,7.349],[0,25.5],[-0.25,0.062]],"v":[[17.731,-104.975],[74.5,-13],[17.696,77.838]],"c":false}],"e":[{"i":[[-0.522,-0.103],[0,-25.5],[64.171,-5.304]],"o":[[65.855,3.382],[0,25.5],[-0.25,0.062]],"v":[[0.994,-106.893],[74.5,-13],[0.672,80.067]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p2_1_0p167_0p167","t":11,"s":[{"i":[[-0.522,-0.103],[0,-25.5],[64.171,-5.304]],"o":[[65.855,3.382],[0,25.5],[-0.25,0.062]],"v":[[0.994,-106.893],[74.5,-13],[0.672,80.067]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0,"y":0},"n":"0p833_0p833_0_0","t":14,"s":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[61,0]],"o":[[62.5,0],[0,25.5],[-0.25,0.062]],"v":[[-3.5,-105.75],[74.5,-13],[-4,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.625,0],[0,-25.5],[61,0]],"o":[[62.5,0],[0,25.5],[-0.25,0.062]],"v":[[-3.5,-105.75],[74.5,-13],[-4,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":19,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"BotLine","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,-7.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,-100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-56.75,-0.625],[-19,-44.875]],"o":[[56.75,0.625],[18.113,42.779]],"v":[[-45.438,-104.812],[68.5,-68.875]],"c":false}],"e":[{"i":[[-43.247,1.238],[-25.5,-39.375]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-104.625],[59,-76.625]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-43.247,1.238],[-25.5,-39.375]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-104.625],[59,-76.625]],"c":false}],"e":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.688,-105.125],[62.25,-67.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.688,-105.125],[62.25,-67.125]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-104.75],[-7.625,-106.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-104.75],[-7.625,-106.062]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105],[-11.75,-105.562]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105],[-11.75,-105.562]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.688,-105.188],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.688,-105.188],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.125],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.125],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-90,-105.5],[-12.125,-105.5]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":19,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"TopLine","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,18.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-56.75,-0.625],[-19,-44.875]],"o":[[56.75,0.625],[18.113,42.779]],"v":[[-44.5,-105.875],[68.5,-68.875]],"c":false}],"e":[{"i":[[-43.247,1.238],[-22.25,-35.625]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-105.875],[59,-78.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-43.247,1.238],[-22.25,-35.625]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-105.875],[59,-78.125]],"c":false}],"e":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.75,-105.875],[62.25,-67.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.75,-105.875],[62.25,-67.125]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-105.5],[-7.125,-105.438]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-105.5],[-7.125,-105.438]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105.5],[-11.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105.5],[-11.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.875,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.875,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-90,-105.5],[-12.125,-105.5]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":19,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"Curve","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,19,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,-0.625],[0,-25.5],[0,-48.625]],"o":[[0,41.25],[0,25.5],[-0.25,0.062]],"v":[[74,-127],[74.5,-13],[74,99.625]],"c":false}],"e":[{"i":[[-0.225,-0.4],[0,-25.5],[33.99,-16.002]],"o":[[33.884,13.084],[0,25.5],[-0.25,0.062]],"v":[[42.116,-98.584],[74.5,-13],[42.26,72.252]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-0.225,-0.4],[0,-25.5],[33.99,-16.002]],"o":[[33.884,13.084],[0,25.5],[-0.25,0.062]],"v":[[42.116,-98.584],[74.5,-13],[42.26,72.252]],"c":false}],"e":[{"i":[[-0.401,-0.224],[0,-25.5],[52.054,-11.526]],"o":[[52.781,7.349],[0,25.5],[-0.25,0.062]],"v":[[17.731,-104.975],[74.5,-13],[17.696,77.838]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-0.401,-0.224],[0,-25.5],[52.054,-11.526]],"o":[[52.781,7.349],[0,25.5],[-0.25,0.062]],"v":[[17.731,-104.975],[74.5,-13],[17.696,77.838]],"c":false}],"e":[{"i":[[-0.522,-0.103],[0,-25.5],[64.171,-5.304]],"o":[[65.855,3.382],[0,25.5],[-0.25,0.062]],"v":[[0.994,-106.893],[74.5,-13],[0.672,80.067]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p2_1_0p167_0p167","t":11,"s":[{"i":[[-0.522,-0.103],[0,-25.5],[64.171,-5.304]],"o":[[65.855,3.382],[0,25.5],[-0.25,0.062]],"v":[[0.994,-106.893],[74.5,-13],[0.672,80.067]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0,"y":0},"n":"0p833_0p833_0_0","t":14,"s":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[61,0]],"o":[[62.5,0],[0,25.5],[-0.25,0.062]],"v":[[-3.5,-105.75],[74.5,-13],[-4,79.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.625,0],[0,-25.5],[61,0]],"o":[[62.5,0],[0,25.5],[-0.25,0.062]],"v":[[-3.5,-105.75],[74.5,-13],[-4,79.188]],"c":false}],"e":[{"i":[[-0.625,0],[0,-25.5],[74.5,0]],"o":[[77,0],[0,25.5],[-0.25,0.062]],"v":[[-13.5,-105.75],[74.5,-13],[-14,79.188]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":9,"op":19,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"BotLine","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,-7.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,-100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-56.75,-0.625],[-19,-44.875]],"o":[[56.75,0.625],[18.113,42.779]],"v":[[-45.438,-104.812],[68.5,-68.875]],"c":false}],"e":[{"i":[[-43.247,1.238],[-25.5,-39.375]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-104.625],[59,-76.625]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-43.247,1.238],[-25.5,-39.375]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-104.625],[59,-76.625]],"c":false}],"e":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.688,-105.125],[62.25,-67.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.688,-105.125],[62.25,-67.125]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-104.75],[-7.625,-106.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-104.75],[-7.625,-106.062]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105],[-11.75,-105.562]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105],[-11.75,-105.562]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.688,-105.188],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.688,-105.188],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.125],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.125],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-90,-105.5],[-12.125,-105.5]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":9,"op":19,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"TopLine","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-74,18.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-56.75,-0.625],[-19,-44.875]],"o":[[56.75,0.625],[18.113,42.779]],"v":[[-44.5,-105.875],[68.5,-68.875]],"c":false}],"e":[{"i":[[-43.247,1.238],[-22.25,-35.625]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-105.875],[59,-78.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-43.247,1.238],[-22.25,-35.625]],"o":[[74.25,-2.125],[34.5,53.875]],"v":[[-82.25,-105.875],[59,-78.125]],"c":false}],"e":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.75,-105.875],[62.25,-67.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-81.75,0],[-31.75,-52.625]],"o":[[120.5,0],[35.366,58.619]],"v":[[-115.75,-105.875],[62.25,-67.125]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-105.5],[-7.125,-105.438]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-135.75,-105.5],[-7.125,-105.438]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105.5],[-11.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-148.875,-105.5],[-11.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.875,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-157.875,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-163.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-166.625,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-168.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.5,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-173.75,-105.5],[-13,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-128.75,-105.5],[-7.875,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-82.375,-105.5],[-2.75,-105.5]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-90,-105.5],[-12.125,-105.5]],"c":false}]},{"t":22}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":42},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":9,"op":19,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":1,"nm":"ResizerTemp","parent":24,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":1,"nm":"White Solid 24","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":29,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/E.json b/example/shared/src/commonMain/composeResources/files/mobilo/E.json new file mode 100644 index 00000000..0cfbebe2 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/E.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"scale","parent":17,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[257,401,0]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.732,0.667,0.667],"y":[1.089,0.667,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p732_1p089_0p167_0p167","0p667_0p667_0p167_0p167","0p667_0p667_0p167_0p167"],"t":0,"s":[100,100,100],"e":[80,100,100]},{"i":{"x":[0.667,0.645,0.667],"y":[1,1.164,0.667]},"o":{"x":[0.35,0.333,0.333],"y":[0.083,0,0.333]},"n":["0p667_1_0p35_0p083","0p645_1p164_0p333_0","0p667_0p667_0p333_0p333"],"t":7,"s":[80,100,100],"e":[100,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.271,0.333],"y":[0.333,0.125,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p271_0p125","0p667_0p667_0p333_0p333"],"t":12,"s":[100,90,100],"e":[100,100,100]},{"t":17}]}},"ao":0,"ip":0,"op":26,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"splash","parent":0,"ks":{"o":{"k":100},"r":{"k":23},"p":{"k":[39,-13.5,0]},"a":{"k":[-75,-100.5,0]},"s":{"k":[-72,72,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-110.5,-124.5],[-109,-102.5],[-99,-103],[-96.5,-123.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-97.5,-154],[-100,-135],[-98.5,-135],[-95,-152.5]],"c":true}]},{"t":20}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-121.5,-113],[-131,-111],[-117.5,-101.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-134,-124.5],[-134.5,-123],[-129,-116.5]],"c":true}]},{"t":20}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-86,-110],[-94.5,-96],[-89.5,-90.5],[-72.5,-103.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-57.5,-127.5],[-68.5,-116],[-67.5,-116],[-56.5,-126]],"c":true}]},{"t":21}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 4"}],"ip":18,"op":22,"st":18,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"splash","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-78,-182.5,0]},"a":{"k":[-75,-100.5,0]},"s":{"k":[-120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-110.5,-124.5],[-109,-102.5],[-99,-103],[-96.5,-123.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-97.5,-154],[-100,-135],[-98.5,-135],[-95,-152.5]],"c":true}]},{"t":23}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-121.5,-113],[-131,-111],[-117.5,-101.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-134,-124.5],[-134.5,-123],[-129,-116.5]],"c":true}]},{"t":23}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-86,-110],[-94.5,-96],[-89.5,-90.5],[-72.5,-103.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-57.5,-127.5],[-68.5,-116],[-67.5,-116],[-56.5,-126]],"c":true}]},{"t":24}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 4"}],"ip":21,"op":25,"st":21,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"splash","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-8,-192.5,0]},"a":{"k":[-75,-100.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-102.5,-125.5],[-105.5,-101],[-101,-100],[-96.5,-123.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-97.5,-154],[-100,-135],[-98.5,-135],[-93.5,-152.5]],"c":true}]},{"t":22}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-126.5,-112],[-131,-111],[-121.5,-101]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-134,-124.5],[-134.5,-123],[-129,-116.5]],"c":true}]},{"t":23}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-78,-108.5],[-93,-92.5],[-89.5,-90.5],[-72.5,-103.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-56.5,-127.5],[-67.5,-116],[-66.5,-116],[-55.5,-126]],"c":true}]},{"t":22}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137,-109.25],[-143.75,-109],[-129.25,-91.25],[-123.75,-91.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-172,-146],[-174.25,-145.5],[-161.75,-131],[-160.25,-133]],"c":true}]},{"t":22}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 3"}],"ip":20,"op":24,"st":20,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"splash","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-67,-11.5,0]},"a":{"k":[-75,-100.5,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-110.5,-124.5],[-109,-102.5],[-99,-103],[-96.5,-123.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-97.5,-154],[-100,-135],[-98.5,-135],[-95,-152.5]],"c":true}]},{"t":13}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-121.5,-113],[-131,-111],[-117.5,-101.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-134,-124.5],[-134.5,-123],[-129,-116.5]],"c":true}]},{"t":13}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-86,-110],[-94.5,-96],[-89.5,-90.5],[-72.5,-103.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-57.5,-127.5],[-68.5,-116],[-67.5,-116],[-56.5,-126]],"c":true}]},{"t":14}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 4"}],"ip":11,"op":15,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"splash","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-13,-11.5,0]},"a":{"k":[-75,-100.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-102.5,-125.5],[-105.5,-101],[-101,-100],[-96.5,-123.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-97.5,-154],[-100,-135],[-98.5,-135],[-93.5,-152.5]],"c":true}]},{"t":14}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-126.5,-112],[-131,-111],[-121.5,-101]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-134,-124.5],[-134.5,-123],[-129,-116.5]],"c":true}]},{"t":15}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-78,-108.5],[-93,-92.5],[-89.5,-90.5],[-72.5,-103.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-56.5,-127.5],[-67.5,-116],[-66.5,-116],[-55.5,-126]],"c":true}]},{"t":14}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-137,-109.25],[-143.75,-109],[-129.25,-91.25],[-123.75,-91.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-172,-146],[-174.25,-145.5],[-161.75,-131],[-160.25,-133]],"c":true}]},{"t":14}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 3"}],"ip":12,"op":16,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"bottom","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.791],"y":[0.766]},"o":{"x":[0.17],"y":[0.399]},"n":["0p791_0p766_0p17_0p399"],"t":14,"s":[-90],"e":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":18,"s":[0],"e":[-5]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":21,"s":[-5],"e":[0]},{"t":24}]},"p":{"k":[-25.5,-1,0]},"a":{"k":[-18.5,100,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[75,58.5],[-19,58.5],[-18.5,100],[75,100]],"c":true}},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 1"}],"ip":14,"op":25,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"middle","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-48,-0.938,0]},"a":{"k":[-41.5,100.062,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[35.25,52.25],[-10.875,52.25],[-11.75,99.938],[35.375,99.938]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[31.328,-170.889],[-4.317,-170.889],[-5.561,32.657],[30.91,32.657]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.12,"y":0},"n":"0_1_0p12_0","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[31.328,-170.889],[-4.317,-170.889],[-5.561,32.657],[30.91,32.657]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.972,-295.602],[-27.382,-287.684],[-23.317,-235.872],[53.825,-243.872]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"n":"0p833_1_1_0","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.972,-295.602],[-27.382,-287.684],[-23.317,-235.872],[53.825,-243.872]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[62.125,-24.812],[-18.75,-24.812],[-19.062,17.875],[62,17.875]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[62.125,-24.812],[-18.75,-24.812],[-19.062,17.875],[62,17.875]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[62.125,-33.812],[-63.75,-33.75],[-64.062,7.938],[62,7.875]],"c":true}]},{"t":21}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 2"}],"ip":6,"op":25,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"up","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-48,-0.938,0]},"a":{"k":[-41.5,100.062,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[35.25,52.25],[-10.875,52.25],[-11.75,99.938],[35.375,99.938]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[31.328,-170.889],[-4.317,-170.889],[-5.561,32.657],[30.91,32.657]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.12,"y":0},"n":"0_1_0p12_0","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[31.328,-170.889],[-4.317,-170.889],[-5.561,32.657],[30.91,32.657]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.047,-287.433],[-73.771,-272.223],[-68.425,-220.528],[54.18,-235.839]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"n":"0p833_0p833_1_0","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.047,-287.433],[-73.771,-272.223],[-68.425,-220.528],[54.18,-235.839]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[60.121,-232.057],[-67.946,-229.727],[-68.882,-181.194],[59.754,-183.524]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[60.121,-232.057],[-67.946,-229.727],[-68.882,-181.194],[59.754,-183.524]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.25,-134.062],[-62.875,-126.938],[-63.188,-80.25],[74.125,-91.375]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.25,-134.062],[-62.875,-126.938],[-63.188,-80.25],[74.125,-91.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.25,-124.062],[-63.875,-126.938],[-64.188,-84.25],[74.125,-81.375]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.25,-124.062],[-63.875,-126.938],[-64.188,-84.25],[74.125,-81.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.188,-126.441],[-63.75,-126.566],[-64.062,-85.879],[74.062,-85.754]],"c":true}]},{"t":25}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 2"}],"ip":12,"op":25,"st":8,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"vertical","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-48,-0.938,0]},"a":{"k":[-41.5,100.062,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.75,52.25],[-63.875,52.25],[-64.75,99.938],[-17.625,99.938]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-22.672,-170.889],[-58.317,-170.889],[-59.561,32.657],[-23.09,32.657]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.12,"y":0},"n":"0_1_0p12_0","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-22.672,-170.889],[-58.317,-170.889],[-59.561,32.657],[-23.09,32.657]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.121,-251.893],[-78.815,-255.146],[-82.316,-203.293],[-4.829,-200.007]],"c":true}]},{"i":{"x":1,"y":1},"o":{"x":1,"y":0},"n":"1_1_1_0","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.121,-251.893],[-78.815,-255.146],[-82.316,-203.293],[-4.829,-200.007]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18,-51.75],[-64.125,-51.75],[-64.75,99.938],[-17.625,99.938]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0,"y":0},"n":"0p667_1_0_0","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18,-51.75],[-64.125,-51.75],[-64.75,99.938],[-17.625,99.938]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.75,-85.75],[-63.875,-85.75],[-64.75,99.938],[-17.625,99.938]],"c":true}]},{"t":18}]},"nm":"Tracé 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fond 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 2"}],"ip":1,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"stroke_blue","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-7,-101,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[77.5,99],[-21,3.833]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[74.5,99],[41.5,41]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[74.5,99],[41.5,41]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[70,99],[69,89]],"c":false}]},{"t":18}]},"nm":"Tracé 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":15},"lc":1,"lj":1,"ml":4,"nm":"Contour 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 1"}],"ip":14,"op":19,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"stroke_orange","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-7,-101,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,92],[-40,73.45],[-40,65]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,27],[-40,-130.331],[-40,-202]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,27],[-40,-130.331],[-40,-202]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,-207],[-40,-223.489],[-40,-231]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,-207],[-40,-223.489],[-40,-231]],"c":false}],"e":[{"i":[[0,0],[6.75,8.5],[0,0]],"o":[[0,0],[-10.028,-12.627],[0,0]],"v":[[-41.75,-167],[-39,-194],[-36.5,-225]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[6.75,8.5],[0,0]],"o":[[0,0],[-10.028,-12.627],[0,0]],"v":[[-41.75,-167],[-39,-194],[-36.5,-225]],"c":false}],"e":[{"i":[[0,0],[0.5,41.705],[0,0]],"o":[[0,0],[-0.528,-44.061],[0,0]],"v":[[-40,-4],[-40.5,-144.705],[-40,-235]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0.5,41.705],[0,0]],"o":[[0,0],[-0.528,-44.061],[0,0]],"v":[[-40,-4],[-40.5,-144.705],[-40,-235]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,91],[-40,-141.218],[-40,-247]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,91],[-40,-141.218],[-40,-247]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,91],[-40,-122.864],[-40,-220.286]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,91],[-40,-122.864],[-40,-220.286]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40,91],[-40,-42.285],[-40,-103]],"c":false}]},{"t":20}]},"nm":"Tracé 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":15},"lc":1,"lj":1,"ml":4,"nm":"Contour 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 1"}],"ip":10,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"white_line","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[73,-45,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-40,-274],[-40,-93]],"c":false}},"nm":"Tracé 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":10},"lc":1,"lj":1,"ml":4,"nm":"Contour 1"},{"ty":"tr","p":{"k":[-20,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":14,"s":[0],"e":[90]},{"t":18}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[0],"e":[90]},{"t":21}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les tracés 1"}],"ip":15,"op":25,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"white_line","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[86,-101,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-40,-274],[-40,-136]],"c":false}},"nm":"Tracé 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":10},"lc":1,"lj":1,"ml":4,"nm":"Contour 1"},{"ty":"tr","p":{"k":[-20,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[0],"e":[90]},{"t":22}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":19,"s":[0],"e":[90]},{"t":24}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les tracés 1"}],"ip":20,"op":25,"st":19,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"white_line","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[66,-101,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-40,101],[-40,-231]],"c":false}},"nm":"Tracé 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":10},"lc":1,"lj":1,"ml":4,"nm":"Contour 1"},{"ty":"tr","p":{"k":[-20,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":6,"s":[0],"e":[90]},{"t":9}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":7,"s":[0],"e":[90]},{"t":13}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les tracés 1"}],"ip":6,"op":19,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"white_line","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[13,-101,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-40,101],[-40,-212]],"c":false}},"nm":"Tracé 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":10},"lc":1,"lj":1,"ml":4,"nm":"Contour 1"},{"ty":"tr","p":{"k":[-20,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Forme 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0.179]},"n":["0p667_1_0p333_0p179"],"t":2,"s":[14.481],"e":[83]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":3,"s":[83],"e":[90]},{"t":5}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[0.512]},"o":{"x":[0.333],"y":[0.2]},"n":["0p667_0p512_0p333_0p2"],"t":2,"s":[4.509],"e":[17.423]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0.347]},"n":["0p667_1_0p333_0p347"],"t":3,"s":[17.423],"e":[90]},{"t":7}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les tracés 1"}],"ip":1,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"E Outlines","parent":17,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[0],"e":[100]},{"t":25}]},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[75.082,-184.9],[75.082,-226.593],[-64.197,-226.593],[-64.197,0],[75.082,0],[75.082,-41.693],[-17.065,-41.693],[-17.065,-92.45],[62.393,-92.45],[62.393,-134.143],[-17.065,-134.143],[-17.065,-184.9]],"c":true}},"nm":"E"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"E"}],"ip":23,"op":26,"st":23,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":1,"nm":"ResizerTemp","parent":19,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":26,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":1,"nm":"White Solid 18","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":26,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":26,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/F.json b/example/shared/src/commonMain/composeResources/files/mobilo/F.json new file mode 100644 index 00000000..840da5ed --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/F.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"sphere_dark_blue","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"n":"0p4_1_0p6_0","t":7,"s":[104,110,0],"e":[104,50,0],"to":[0,-10.6982717514038,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"n":"0p4_1_0p6_0","t":11,"s":[104,50,0],"e":[104,100.97,0],"to":[0,0,0],"ti":[0,-11.2149543762207,0]},{"t":15}]},"a":{"k":[-174,-76,0]},"s":{"k":[{"i":{"x":[0.199,0.199,0.667],"y":[1,1,0.667]},"o":{"x":[0.062,0.062,0.333],"y":[0.16,0.16,0.333]},"n":["0p199_1_0p062_0p16","0p199_1_0p062_0p16","0p667_0p667_0p333_0p333"],"t":7,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.938,0.938,0.667],"y":[0.775,0.775,0.667]},"o":{"x":[0.696,0.696,0.333],"y":[0,0,0.333]},"n":["0p938_0p775_0p696_0","0p938_0p775_0p696_0","0p667_0p667_0p333_0p333"],"t":11,"s":[100,100,100],"e":[0,0,100]},{"t":15}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[14,14]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-174,-76],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":7,"op":27,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"triangle_dark_blue","parent":21,"ks":{"o":{"k":100},"r":{"k":132.407},"p":{"k":[-180.668,161.401,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"k":3,"ix":3},"p":{"k":[0,0],"ix":4},"r":{"k":143.746,"ix":5},"or":{"k":18.601,"ix":7},"os":{"k":-10,"ix":9},"ix":1,"nm":"Polystar Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":8},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-186,-259],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":9,"s":[0],"e":[100]},{"t":16}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":4,"s":[0],"e":[100]},{"t":11}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":4,"op":16,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"stroke_mid_blue","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":5,"s":[-125.5,-48,0],"e":[84.5,-48,0],"to":[35,0,0],"ti":[-35,0,0]},{"t":15}]},"a":{"k":[-45.5,-48,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-61,-48],[13,-48]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p833_1_0p333_0"],"t":5,"s":[0],"e":[100]},{"t":16}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p833_1_0p333_0"],"t":5,"s":[0],"e":[100]},{"t":6}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":8},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-40,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":16,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"stroke_mid_white","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":4,"s":[-125.5,-48,0],"e":[84.5,-48,0],"to":[35,0,0],"ti":[-35,0,0]},{"t":14}]},"a":{"k":[-45.5,-48,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-61,-48],[13,-48]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p833_1_0p333_0"],"t":4,"s":[0],"e":[100]},{"t":15}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p833_1_0p333_0"],"t":4,"s":[0],"e":[100]},{"t":5}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":6},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-40,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":15,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"F_2_dark_blue","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":10,"s":[-173.614,-13.297,0],"e":[-13.614,-13.297,0],"to":[26.6666660308838,0,0],"ti":[-26.6666660308838,0,0]},{"t":18}]},"a":{"k":[-13.614,-113.297,0]},"s":{"k":[{"i":{"x":[0.51,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.156,0.333,0.333],"y":[0.296,0.333,0.333]},"n":["0p51_1_0p156_0p296","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":10,"s":[0,100,100],"e":[181,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0.333,0.333]},"n":["0p667_1_0p333_0","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":15,"s":[181,100,100],"e":[85,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0.333,0.333]},"n":["0p667_1_0p333_0","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":20,"s":[85,100,100],"e":[102,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,0.833,0.833]},"o":{"x":[0.333,0.333,0.333],"y":[0,0.333,0.333]},"n":["0p833_1_0p333_0","0p833_0p833_0p333_0p333","0p833_0p833_0p333_0p333"],"t":24,"s":[102,100,100],"e":[100,100,100]},{"t":27}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.106,"y":1},"n":"0p833_0p833_0p106_1","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[16.669,-92.75],[125.284,-92.75],[125.284,-110.097],[125.284,-134.375],[19.455,-134.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[-19.588,1.33],[0,0],[0.496,7.025],[0,0],[19.339,-8.458]],"o":[[0,0],[0,0],[14.99,-1.018],[0,0],[-0.496,-7.025],[0,0],[-18.025,7.883]],"v":[[5.884,-101.376],[2.773,-97.217],[33.499,-98.703],[63.561,-99.399],[59.54,-113.494],[65.224,-130.418],[37.282,-121.46]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[-19.588,1.33],[0,0],[0.496,7.025],[0,0],[19.339,-8.458]],"o":[[0,0],[0,0],[14.99,-1.018],[0,0],[-0.496,-7.025],[0,0],[-18.025,7.883]],"v":[[5.884,-101.376],[2.773,-97.217],[33.499,-98.703],[63.561,-99.399],[59.54,-113.494],[65.224,-130.418],[37.282,-121.46]],"c":true}],"e":[{"i":[[0,0],[0,0],[-17.812,-6.546],[0,0],[0,0],[0,0],[23.433,-12.455]],"o":[[0,0],[0,0],[27.12,9.966],[0,0],[0,0],[0,0],[-17.372,9.234]],"v":[[-7.848,-111.637],[-7.746,-109.418],[34.43,-85.977],[124.849,-82.809],[124.003,-109.558],[122.82,-146.995],[33.634,-136.678]],"c":true}]},{"i":{"x":0.51,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p51_1_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[-17.812,-6.546],[0,0],[0,0],[0,0],[23.433,-12.455]],"o":[[0,0],[0,0],[27.12,9.966],[0,0],[0,0],[0,0],[-17.372,9.234]],"v":[[-7.848,-111.637],[-7.746,-109.418],[34.43,-85.977],[124.849,-82.809],[124.003,-109.558],[122.82,-146.995],[33.634,-136.678]],"c":true}],"e":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[0,0],[33.651,0]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[0,0],[-33.651,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[27.549,-99.716],[124.669,-78.711],[123.475,-109.336],[121.805,-152.198],[28.958,-127.294]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":15,"s":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[0,0],[33.651,0]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[0,0],[-33.651,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[27.549,-99.716],[124.669,-78.711],[123.475,-109.336],[121.805,-152.198],[28.958,-127.294]],"c":true}],"e":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[0,0],[36.974,-0.126]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[0,0],[-33.651,0.114]],"v":[[-13.995,-134.375],[-13.995,-92.75],[29.313,-85.466],[121.728,-106.211],[121.27,-111.831],[120.628,-119.698],[30.134,-138.544]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":20,"s":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[0,0],[36.974,-0.126]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[0,0],[-33.651,0.114]],"v":[[-13.995,-134.375],[-13.995,-92.75],[29.313,-85.466],[121.728,-106.211],[121.27,-111.831],[120.628,-119.698],[30.134,-138.544]],"c":true}],"e":[{"i":[[0,0],[0,0],[13.014,0],[0,0],[0,0],[0,0],[28.807,0.161]],"o":[[0,0],[0,0],[-13.014,0],[0,0],[0,0],[0,0],[-15.801,-0.088]],"v":[[-13.995,-134.375],[-13.995,-92.75],[27.943,-93.331],[125.284,-92],[125.284,-109.868],[125.284,-134.875],[27.299,-133.081]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[0,0],[0,0],[13.014,0],[0,0],[0,0],[0,0],[28.807,0.161]],"o":[[0,0],[0,0],[-13.014,0],[0,0],[0,0],[0,0],[-15.801,-0.088]],"v":[[-13.995,-134.375],[-13.995,-92.75],[27.943,-93.331],[125.284,-92],[125.284,-109.868],[125.284,-134.875],[27.299,-133.081]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[16.669,-92.75],[125.284,-92.75],[125.284,-110.097],[125.284,-134.375],[19.455,-134.375]],"c":true}]},{"t":27}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[78.534,-184.9],[78.534,-226.593],[-60.745,-226.593],[-60.745,0],[-13.614,0],[-13.835,-77.7],[65.758,-82.2],[65.758,-142.143],[-13.748,-140.893],[-13.614,-184.9]],"c":true}},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":10,"op":27,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"F_side_dark blue","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-36.893,100,0]},"a":{"k":[-37.18,0,0]},"s":{"k":[{"i":{"x":[0.667,0.467,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.134,0.333],"y":[0,0.28,0.333]},"n":["0p667_1_0p333_0","0p467_1_0p134_0p28","0p667_0p667_0p333_0p333"],"t":1,"s":[100,0,100],"e":[100,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.502,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p502_0","0p667_0p667_0p333_0p333"],"t":7,"s":[100,120,100],"e":[100,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":11,"s":[100,90,100],"e":[100,100,100]},{"t":15}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-60.745,-114],[-60.745,0],[-13.614,0],[-13.728,-113.4]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,-98.98],[0,0],[0,0],[0,87.878]],"o":[[0,0],[0,0],[0,96.348],[0,0],[0,0],[0,-87.406]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-47.245,-113.833],[-60.745,0],[-13.614,0],[-30.478,-113.467]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":8,"s":[{"i":[[0,0],[0,0],[0,-98.98],[0,0],[0,0],[0,87.878]],"o":[[0,0],[0,0],[0,96.348],[0,0],[0,0],[0,-87.406]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-47.245,-113.833],[-60.745,0],[-13.614,0],[-30.478,-113.467]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,-72.832],[0,0],[0,0],[0,74.993]],"o":[[0,0],[0,0],[0,72.832],[0,0],[0,0],[0,-74.993]],"v":[[-6.013,-195.535],[-67.979,-194.356],[-95.771,-108.668],[-60.745,0],[-13.614,0],[23.47,-110.278]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":12,"s":[{"i":[[0,0],[0,0],[0,-72.832],[0,0],[0,0],[0,74.993]],"o":[[0,0],[0,0],[0,72.832],[0,0],[0,0],[0,-74.993]],"v":[[-6.013,-195.535],[-67.979,-194.356],[-95.771,-108.668],[-60.745,0],[-13.614,0],[23.47,-110.278]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-60.745,-114],[-60.745,0],[-13.614,0],[-13.728,-113.4]],"c":true}]},{"t":16}]},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":1,"op":27,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"F_2_orange","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":8,"s":[-173.614,-13.297,0],"e":[-13.614,-13.297,0],"to":[26.6666660308838,0,0],"ti":[-26.6666660308838,0,0]},{"t":16}]},"a":{"k":[-13.614,-113.297,0]},"s":{"k":[{"i":{"x":[0.51,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.156,0.333,0.333],"y":[0.296,0.333,0.333]},"n":["0p51_1_0p156_0p296","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":8,"s":[0,100,100],"e":[181,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0.333,0.333]},"n":["0p667_1_0p333_0","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":13,"s":[181,100,100],"e":[85,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0.333,0.333]},"n":["0p667_1_0p333_0","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":17,"s":[85,100,100],"e":[100,100,100]},{"t":22}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.106,"y":1},"n":"0p833_0p833_0p106_1","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[16.669,-92.75],[125.284,-92.75],[125.284,-134.375],[19.455,-134.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[-26.831,-5.763],[0,0],[0,0],[22.97,-5.231]],"o":[[0,0],[0,0],[27.083,5.818],[0,0],[0,0],[-23.274,5.3]],"v":[[-10.607,-113.395],[-10.814,-111.521],[36.147,-107.507],[124.849,-82.809],[122.82,-146.995],[40.059,-127.198]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[-26.831,-5.763],[0,0],[0,0],[22.97,-5.231]],"o":[[0,0],[0,0],[27.083,5.818],[0,0],[0,0],[-23.274,5.3]],"v":[[-10.607,-113.395],[-10.814,-111.521],[36.147,-107.507],[124.849,-82.809],[122.82,-146.995],[40.059,-127.198]],"c":true}],"e":[{"i":[[0,0],[0,0],[-23.489,-13.646],[0,0],[0,0],[26.022,-7.322]],"o":[[0,0],[0,0],[22.547,13.098],[0,0],[0,0],[-26.243,7.384]],"v":[[-12.728,-112.582],[-12.609,-111.404],[50.729,-92.277],[124.784,-81.346],[122.458,-148.852],[33.161,-129.261]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[-23.489,-13.646],[0,0],[0,0],[26.022,-7.322]],"o":[[0,0],[0,0],[22.547,13.098],[0,0],[0,0],[-26.243,7.384]],"v":[[-12.728,-112.582],[-12.609,-111.404],[50.729,-92.277],[124.784,-81.346],[122.458,-148.852],[33.161,-129.261]],"c":true}],"e":[{"i":[[0,0],[0,0],[-22.022,-8.631],[0,0],[0,0],[30.842,0]],"o":[[0,0],[0,0],[23.037,9.029],[0,0],[0,0],[-30.842,0]],"v":[[-13.595,-127.402],[-13.685,-98.814],[27.054,-93.742],[124.72,-79.882],[122.095,-150.71],[26.29,-139.377]],"c":true}]},{"i":{"x":0.51,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p51_1_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[-22.022,-8.631],[0,0],[0,0],[30.842,0]],"o":[[0,0],[0,0],[23.037,9.029],[0,0],[0,0],[-30.842,0]],"v":[[-13.595,-127.402],[-13.685,-98.814],[27.054,-93.742],[124.72,-79.882],[122.095,-150.71],[26.29,-139.377]],"c":true}],"e":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[33.651,0]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[-33.651,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[27.549,-99.716],[124.669,-78.711],[121.805,-152.198],[28.958,-127.294]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":13,"s":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[33.651,0]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[-33.651,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[27.549,-99.716],[124.669,-78.711],[121.805,-152.198],[28.958,-127.294]],"c":true}],"e":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[36.974,-0.126]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[-33.651,0.114]],"v":[[-13.995,-134.375],[-13.995,-92.75],[29.313,-84.216],[121.728,-106.211],[120.628,-119.698],[30.134,-139.794]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":17,"s":[{"i":[[0,0],[0,0],[-26.997,0],[0,0],[0,0],[36.974,-0.126]],"o":[[0,0],[0,0],[26.997,0],[0,0],[0,0],[-33.651,0.114]],"v":[[-13.995,-134.375],[-13.995,-92.75],[29.313,-84.216],[121.728,-106.211],[120.628,-119.698],[30.134,-139.794]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-134.375],[-13.995,-92.75],[16.669,-92.75],[125.284,-92.75],[125.284,-134.375],[19.455,-134.375]],"c":true}]},{"t":22}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[78.534,-184.9],[78.534,-226.593],[-60.745,-226.593],[-60.745,0],[-13.614,0],[-13.835,-77.7],[65.758,-82.2],[65.758,-142.143],[-13.748,-140.893],[-13.614,-184.9]],"c":true}},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":8,"op":23,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"stroke_orange","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.461,"y":1},"o":{"x":0.645,"y":0},"n":"0p461_1_0p645_0","t":6,"s":[-185.5,20,0],"e":[-15.5,20,0],"to":[28.3333339691162,0,0],"ti":[-28.3333339691162,0,0]},{"t":16}]},"a":{"k":[-45.5,-48,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-61,-48],[63,-48]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":6,"s":[0],"e":[100]},{"t":17}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":6,"s":[25],"e":[100]},{"t":7}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":8},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-40,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"F_side_orange 2","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-36.893,100,0]},"a":{"k":[-37.18,0,0]},"s":{"k":[{"i":{"x":[0.667,0.467,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.134,0.333],"y":[0,0.28,0.333]},"n":["0p667_1_0p333_0","0p467_1_0p134_0p28","0p667_0p667_0p333_0p333"],"t":0,"s":[100,0,100],"e":[100,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.502,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p502_0","0p667_0p667_0p333_0p333"],"t":6,"s":[100,120,100],"e":[100,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":10,"s":[100,90,100],"e":[100,100,100]},{"t":14}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-60.745,-114],[-60.745,0],[-13.614,0],[-13.728,-113.4]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,-98.98],[0,0],[0,0],[0,87.878]],"o":[[0,0],[0,0],[0,96.348],[0,0],[0,0],[0,-87.406]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-47.245,-113.833],[-60.745,0],[-13.614,0],[-30.478,-113.467]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[0,0],[0,0],[0,-98.98],[0,0],[0,0],[0,87.878]],"o":[[0,0],[0,0],[0,96.348],[0,0],[0,0],[0,-87.406]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-47.245,-113.833],[-60.745,0],[-13.614,0],[-30.478,-113.467]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,-72.832],[0,0],[0,0],[0,74.993]],"o":[[0,0],[0,0],[0,72.832],[0,0],[0,0],[0,-74.993]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-78.818,-110.044],[-60.745,0],[-13.614,0],[6.63,-114.314]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":11,"s":[{"i":[[0,0],[0,0],[0,-72.832],[0,0],[0,0],[0,74.993]],"o":[[0,0],[0,0],[0,72.832],[0,0],[0,0],[0,-74.993]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-78.818,-110.044],[-60.745,0],[-13.614,0],[6.63,-114.314]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-60.745,-114],[-60.745,0],[-13.614,0],[-13.728,-113.4]],"c":true}]},{"t":15}]},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":10,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"F_side_orange","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-36.893,100,0]},"a":{"k":[-37.18,0,0]},"s":{"k":[{"i":{"x":[0.667,0.467,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.134,0.333],"y":[0,0.28,0.333]},"n":["0p667_1_0p333_0","0p467_1_0p134_0p28","0p667_0p667_0p333_0p333"],"t":0,"s":[100,0,100],"e":[100,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.502,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p502_0","0p667_0p667_0p333_0p333"],"t":6,"s":[100,120,100],"e":[100,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":10,"s":[100,90,100],"e":[100,100,100]},{"t":14}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-60.745,-114],[-60.745,0],[-13.614,0],[-13.728,-113.4]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,-98.98],[0,0],[0,0],[0,87.878]],"o":[[0,0],[0,0],[0,96.348],[0,0],[0,0],[0,-87.406]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-47.245,-113.833],[-60.745,0],[-13.614,0],[-30.478,-113.467]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[0,0],[0,0],[0,-98.98],[0,0],[0,0],[0,87.878]],"o":[[0,0],[0,0],[0,96.348],[0,0],[0,0],[0,-87.406]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-47.245,-113.833],[-60.745,0],[-13.614,0],[-30.478,-113.467]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,-72.832],[0,0],[0,0],[0,74.993]],"o":[[0,0],[0,0],[0,72.832],[0,0],[0,0],[0,-74.993]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-78.818,-110.044],[-60.745,0],[-13.614,0],[6.63,-114.314]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":11,"s":[{"i":[[0,0],[0,0],[0,-72.832],[0,0],[0,0],[0,74.993]],"o":[[0,0],[0,0],[0,72.832],[0,0],[0,0],[0,-74.993]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-78.818,-110.044],[-60.745,0],[-13.614,0],[6.63,-114.314]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.747,-226.686],[-60.745,-226.593],[-60.745,-114],[-60.745,0],[-13.614,0],[-13.728,-113.4]],"c":true}]},{"t":15}]},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":0,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"F_1_dark_blue","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":6,"s":[-14.058,-4.938,0],"e":[-14.058,-124.938,0],"to":[0,-17.0738315582275,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":10,"s":[-14.058,-124.938,0],"e":[-14.058,-64.938,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":13,"s":[-14.058,-64.938,0],"e":[-14.058,-84.938,0],"to":[0,0,0],"ti":[0,0,0]},{"t":15}]},"a":{"k":[-14.058,-184.938,0]},"s":{"k":[{"i":{"x":[0.459,0.459,0.459],"y":[0.459,1,0.459]},"o":{"x":[0.052,0.052,0.052],"y":[0.052,0.123,0.052]},"n":["0p459_0p459_0p052_0p052","0p459_1_0p052_0p123","0p459_0p459_0p052_0p052"],"t":6,"s":[100,0,100],"e":[100,180.2,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.585,0.585,0.585],"y":[0.585,0,0.585]},"n":["0p667_0p667_0p585_0p585","0p667_1_0p585_0","0p667_0p667_0p585_0p585"],"t":11,"s":[100,180.2,100],"e":[100,60,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,0.833]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p833_0p833_0p333_0p333","0p833_1_0p333_0","0p833_0p833_0p333_0p333"],"t":14,"s":[100,60,100],"e":[100,100,100]},{"t":16}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.052,"y":0.889},"n":"0p833_0p833_0p052_0p889","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-227.5],[-13.995,-185],[60.006,-185],[125.284,-185],[125.284,-227.5],[58.005,-227.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[-22.517,0],[0,0],[0,0],[33.113,0]],"o":[[0,0],[0,0],[22.517,0],[0,0],[0,0],[-33.113,0]],"v":[[-13.992,-220.997],[-13.995,-185],[60.006,-196.477],[125.284,-185],[125.465,-222.527],[58.322,-238.021]],"c":true}]},{"i":{"x":0.459,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p459_1_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[-22.517,0],[0,0],[0,0],[33.113,0]],"o":[[0,0],[0,0],[22.517,0],[0,0],[0,0],[-33.113,0]],"v":[[-13.992,-220.997],[-13.995,-185],[60.006,-196.477],[125.284,-185],[125.465,-222.527],[58.322,-238.021]],"c":true}],"e":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[62.468,-198.778],[125.284,-185],[125.557,-219.99],[58.005,-236.743]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.585,"y":0},"n":"0p667_1_0p585_0","t":12,"s":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[62.468,-198.778],[125.284,-185],[125.557,-219.99],[58.005,-236.743]],"c":true}],"e":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[66.022,-174.067],[125.284,-185],[125.557,-219.99],[67.044,-197.776]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":15,"s":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[66.022,-174.067],[125.284,-185],[125.557,-219.99],[67.044,-197.776]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-226.562],[-13.995,-184.062],[60.006,-184.062],[125.284,-184.062],[125.284,-226.562],[58.005,-226.562]],"c":true}]},{"t":17}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[78.534,-172.59],[78.534,-238.918],[-60.745,-238.918],[-60.745,121.561],[-13.614,121.561],[-13.614,-25.514],[65.845,-25.514],[65.845,-91.843],[-13.614,-91.843],[-13.614,-172.59]],"c":true}},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":6,"op":27,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"F_1_light_blue","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":5,"s":[-14.058,-4.938,0],"e":[-14.058,-124.938,0],"to":[0,-17.0738315582275,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":9,"s":[-14.058,-124.938,0],"e":[-14.058,-64.938,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":12,"s":[-14.058,-64.938,0],"e":[-14.058,-84.938,0],"to":[0,0,0],"ti":[0,0,0]},{"t":14}]},"a":{"k":[-14.058,-184.938,0]},"s":{"k":[{"i":{"x":[0.459,0.459,0.459],"y":[0.459,1,0.459]},"o":{"x":[0.052,0.052,0.052],"y":[0.052,0.123,0.052]},"n":["0p459_0p459_0p052_0p052","0p459_1_0p052_0p123","0p459_0p459_0p052_0p052"],"t":5,"s":[100,0,100],"e":[100,180.2,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.585,0.585,0.585],"y":[0.585,0,0.585]},"n":["0p667_0p667_0p585_0p585","0p667_1_0p585_0","0p667_0p667_0p585_0p585"],"t":10,"s":[100,180.2,100],"e":[100,60,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,0.833]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p833_0p833_0p333_0p333","0p833_1_0p333_0","0p833_0p833_0p333_0p333"],"t":13,"s":[100,60,100],"e":[100,100,100]},{"t":15}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.052,"y":0.889},"n":"0p833_0p833_0p052_0p889","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-227.5],[-13.995,-185],[60.006,-185],[125.284,-185],[125.284,-227.5],[58.005,-227.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[-53.193,1.252],[0,0],[0,0],[48.861,0]],"o":[[0,0],[0,0],[48.784,-1.148],[0,0],[0,0],[-48.861,0]],"v":[[-13.991,-217.904],[-13.995,-173.083],[67.024,-183.649],[124.468,-174.019],[125.551,-220.162],[58.005,-236.532]],"c":true}]},{"i":{"x":0.459,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p459_1_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[-53.193,1.252],[0,0],[0,0],[48.861,0]],"o":[[0,0],[0,0],[48.784,-1.148],[0,0],[0,0],[-48.861,0]],"v":[[-13.991,-217.904],[-13.995,-173.083],[67.024,-183.649],[124.468,-174.019],[125.551,-220.162],[58.005,-236.532]],"c":true}],"e":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-172.804],[63.006,-188.916],[125.284,-185],[125.557,-219.99],[58.005,-236.743]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.585,"y":0},"n":"0p667_1_0p585_0","t":11,"s":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-172.804],[63.006,-188.916],[125.284,-185],[125.557,-219.99],[58.005,-236.743]],"c":true}],"e":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[60.023,-170.482],[125.284,-185],[125.557,-219.99],[59.022,-201.034]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":14,"s":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[60.023,-170.482],[125.284,-185],[125.557,-219.99],[59.022,-201.034]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-227.5],[-13.995,-185],[60.006,-185],[125.284,-185],[125.284,-227.5],[58.005,-227.5]],"c":true}]},{"t":16}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[78.534,-172.59],[78.534,-238.918],[-60.745,-238.918],[-60.745,121.561],[-13.614,121.561],[-13.614,-25.514],[65.845,-25.514],[65.845,-91.843],[-13.614,-91.843],[-13.614,-172.59]],"c":true}},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":5,"op":17,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"F_1_orange","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":7,"s":[-14.058,-29.238,0],"e":[-14.058,-124.938,0],"to":[0,-17.0738315582275,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":11,"s":[-14.058,-124.938,0],"e":[-14.058,-64.938,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":14,"s":[-14.058,-64.938,0],"e":[-14.058,-84.938,0],"to":[0,0,0],"ti":[0,0,0]},{"t":16}]},"a":{"k":[-14.058,-184.938,0]},"s":{"k":[{"i":{"x":[0.459,0.459,0.459],"y":[0.459,1,0.459]},"o":{"x":[0.052,0.052,0.052],"y":[0.052,0.123,0.052]},"n":["0p459_0p459_0p052_0p052","0p459_1_0p052_0p123","0p459_0p459_0p052_0p052"],"t":7,"s":[100,0,100],"e":[100,180.2,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.585,0.585,0.585],"y":[0.585,0,0.585]},"n":["0p667_0p667_0p585_0p585","0p667_1_0p585_0","0p667_0p667_0p585_0p585"],"t":12,"s":[100,180.2,100],"e":[100,60,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,0.833]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p833_0p833_0p333_0p333","0p833_1_0p333_0","0p833_0p833_0p333_0p333"],"t":15,"s":[100,60,100],"e":[100,100,100]},{"t":17}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.052,"y":0.889},"n":"0p833_0p833_0p052_0p889","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-227.5],[-13.995,-185],[60.006,-185],[125.284,-185],[125.284,-227.5],[58.005,-227.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[-22.517,0],[0,0],[0,0],[33.113,0]],"o":[[0,0],[0,0],[22.517,0],[0,0],[0,0],[-33.113,0]],"v":[[-13.992,-220.997],[-13.995,-185],[60.006,-196.477],[125.284,-185],[125.465,-222.527],[58.322,-238.021]],"c":true}]},{"i":{"x":0.459,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p459_1_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[-22.517,0],[0,0],[0,0],[33.113,0]],"o":[[0,0],[0,0],[22.517,0],[0,0],[0,0],[-33.113,0]],"v":[[-13.992,-220.997],[-13.995,-185],[60.006,-196.477],[125.284,-185],[125.465,-222.527],[58.322,-238.021]],"c":true}],"e":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[62.468,-198.778],[125.284,-185],[125.557,-219.99],[58.005,-236.743]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.585,"y":0},"n":"0p667_1_0p585_0","t":13,"s":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[62.468,-198.778],[125.284,-185],[125.557,-219.99],[58.005,-236.743]],"c":true}],"e":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[66.022,-174.067],[125.284,-185],[125.557,-219.99],[67.044,-197.776]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":16,"s":[{"i":[[0,0],[0,0],[-34.003,0],[0,0],[0,0],[50.004,0]],"o":[[0,0],[0,0],[34.003,0],[0,0],[0,0],[-50.004,0]],"v":[[-13.99,-217.679],[-13.995,-185],[66.022,-174.067],[125.284,-185],[125.557,-219.99],[67.044,-197.776]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.995,-226.562],[-13.995,-184.062],[60.006,-184.062],[125.284,-184.062],[125.284,-226.562],[58.005,-226.562]],"c":true}]},{"t":18}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[78.534,-172.59],[78.534,-238.918],[-60.745,-238.918],[-60.745,121.561],[-13.614,121.561],[-13.614,-25.514],[65.845,-25.514],[65.845,-91.843],[-13.614,-91.843],[-13.614,-172.59]],"c":true}},"nm":"F"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"F"}],"ip":7,"op":18,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"stroke_white_top","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":2,"s":[268,342,0],"e":[268,262,0],"to":[0,-13.3333330154419,0],"ti":[0,13.3333330154419,0]},{"t":7}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-133,-36],[-133,-165]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":5,"s":[0],"e":[100]},{"t":13}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[25],"e":[100]},{"t":10}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":7.4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":13,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"stroke_orange_top","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":1,"s":[252,350,0],"e":[252,270,0],"to":[0,-13.3333330154419,0],"ti":[0,13.3333330154419,0]},{"t":6}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-133,-108],[-133,-165]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":4,"s":[0],"e":[100]},{"t":12}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":1,"s":[25],"e":[100]},{"t":9}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":7.4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":12,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"stroke_circle_dark_blue","parent":19,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0],"e":[165]},{"t":19}]},"p":{"k":[30.292,21.938,0]},"a":{"k":[-154,-236,0]},"s":{"k":[50,50,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[47,47]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":8},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-154.376,-235.917],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0],"e":[85]},{"t":17}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[82],"e":[85]},{"t":22}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":5,"op":19,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"stroke_circle_orange","parent":19,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[0],"e":[165]},{"t":23}]},"p":{"k":[30.292,21.938,0]},"a":{"k":[-154,-236,0]},"s":{"k":[83,83,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[47,47]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":5.7},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-154.376,-235.917],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[0],"e":[85]},{"t":21}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[82],"e":[85]},{"t":26}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":9,"op":22,"st":9,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"stroke_dark_blue bottom","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[270,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.773,-25.698],[0,0]],"o":[[-4,133],[0,0]],"v":[[-13,-153],[19,69]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[100],"e":[0]},{"t":7}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":4,"s":[100],"e":[0]},{"t":8}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":8},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":8,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"stroke_light_blue bottom","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.694,-25.278],[0,0]],"o":[[-13,70],[0,0]],"v":[[-9,-180],[8,-16]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[100],"e":[0]},{"t":6}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[100],"e":[0]},{"t":7}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":8},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":6,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":3,"nm":"X_position","parent":21,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[250,300,0],"e":[250,200,0],"to":[0,-16.6666660308838,0],"ti":[0,-10,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":6,"s":[250,200,0],"e":[250,360,0],"to":[0,10,0],"ti":[0,-26.6666660308838,0]},{"t":13}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":3,"nm":"Letter_position","parent":21,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.444],"y":[1]},"o":{"x":[0.06],"y":[0.114]},"n":["0p444_1_0p06_0p114"],"t":0,"s":[0],"e":[-8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.546],"y":[0]},"n":["0p667_1_0p546_0"],"t":5,"s":[-8],"e":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":11,"s":[5],"e":[0]},{"t":16}]},"p":{"k":[{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":0,"s":[249.5,519.029,0],"e":[249.5,218.366,0],"to":[0,-34.1917610168457,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":5,"s":[249.5,218.366,0],"e":[249.5,309.856,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.36,"y":1},"o":{"x":0.64,"y":0},"n":"0p36_1_0p64_0","t":11,"s":[249.5,309.856,0],"e":[249.5,299.919,0],"to":[0,0,0],"ti":[0,0,0]},{"t":16}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":1,"nm":"ResizerTemp","parent":23,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":1,"nm":"White Solid 19","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":27,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":27,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/G.json b/example/shared/src/commonMain/composeResources/files/mobilo/G.json new file mode 100644 index 00000000..e266ed46 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/G.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"G Outlines 3","parent":38,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[-10.291,-113.297,0]},"s":{"k":[25,25,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[38.241,314.561],[0,0],[0,0],[0,0],[136.927,0],[0,162.832],[-161.598,0],[-51.81,-62.912],[0,0],[145.562,0],[0,-262.751],[-263.985,0]],"o":[[0,0],[0,0],[0,0],[-17.27,111.022],[-162.832,0],[0,-162.832],[88.817,0],[0,0],[-86.35,-107.321],[-262.751,0],[0,262.751],[291.123,0]],"v":[[441.759,-172.508],[7.542,-172.508],[7.542,-12.143],[248.088,-12.143],[6.308,172.892],[-278.647,-113.297],[7.542,-399.485],[228.351,-298.332],[375.146,-413.055],[7.542,-588.222],[-467.384,-113.297],[6.308,361.629]],"c":true}},"nm":"G"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"G"}],"ip":25,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 18","parent":2,"ks":{"o":{"k":100},"r":{"k":-180},"p":{"k":[-431,-20,0]},"a":{"k":[431,20,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-678,20],[450,20]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p11_1_0p167_0p167"],"t":20,"s":[67],"e":[62]},{"t":25}],"ix":1},"e":{"k":[{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p11_1_0p167_0p167"],"t":20,"s":[86],"e":[100]},{"t":25}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p11_1_0p167_0p167"],"t":20,"s":[110],"e":[159]},{"t":25}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 2"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":20,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":3,"nm":"Null 3","parent":3,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":18,"op":25,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":3,"nm":"Null 3","parent":0,"ks":{"o":{"k":0},"r":{"k":180},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":18,"op":25,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"G 2","parent":3,"ks":{"o":{"k":100},"r":{"k":-180},"p":{"k":[-0.062,0.669,0]},"a":{"k":[40.062,32.743,0]},"s":{"k":[100,101.798,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.173,"y":0.098},"n":"0p12_1_0p173_0p098","t":18,"s":[{"i":[[-55.466,0],[-18.17425,-18.1745],[0,-27.733],[55.466,0],[0,55.466]],"o":[[27.733,0],[18.17425,18.1745],[0,55.466],[-55.466,0],[0,-55.466]],"v":[[-1.4,-105.5],[69.61475,-76.08425],[99.03,-5.069],[-1.4,95.361],[-101.831,-5.069]],"c":true}],"e":[{"i":[[-216.918,0.355],[-64.267,-76.958],[-2.356,-97.03],[245.939,4.892],[0,216.919]],"o":[[152.427,-0.249],[49.339,59.082],[6.26,257.8],[-216.876,-4.314],[0,-216.918]],"v":[[1.075,-400.067],[323.104,-257.643],[380.484,-6.177],[-8.599,392.766],[-400.29,0]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[31],"e":[307]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p1_1_0p167_0p167"],"t":20,"s":[307],"e":[197]},{"t":25}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[49.188,36.125],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[93.036,94.175],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.622],"y":[0.605]},"o":{"x":[0.414],"y":[0]},"n":["0p622_0p605_0p414_0"],"t":18,"s":[28],"e":[16.5]},{"i":{"x":[0.539],"y":[0.719]},"o":{"x":[0.236],"y":[0.331]},"n":["0p539_0p719_0p236_0p331"],"t":19,"s":[16.5],"e":[7.898]},{"i":{"x":[0.467],"y":[1]},"o":{"x":[0.176],"y":[0.583]},"n":["0p467_1_0p176_0p583"],"t":20,"s":[7.898],"e":[0]},{"t":25}],"ix":1},"e":{"k":[{"i":{"x":[0.622],"y":[0.622]},"o":{"x":[0.414],"y":[0.414]},"n":["0p622_0p622_0p414_0p414"],"t":18,"s":[100],"e":[100]},{"i":{"x":[0.539],"y":[0.598]},"o":{"x":[0.236],"y":[0.267]},"n":["0p539_0p598_0p236_0p267"],"t":19,"s":[100],"e":[96.95]},{"i":{"x":[0.467],"y":[1]},"o":{"x":[0.176],"y":[0.472]},"n":["0p467_1_0p176_0p472"],"t":20,"s":[96.95],"e":[92]},{"t":25}],"ix":2},"o":{"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p1_1_0p167_0p167"],"t":18,"s":[0],"e":[82]},{"t":25}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":18,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"G","parent":3,"ks":{"o":{"k":100},"r":{"k":-180},"p":{"k":[-0.062,0.669,0]},"a":{"k":[40.062,32.743,0]},"s":{"k":[100,101.798,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p12_1_0p167_0p167","t":18,"s":[{"i":[[-28.468,0],[-9.328,-9.32825],[0,-14.234],[28.468,0],[0,28.468]],"o":[[14.234,0],[9.328,9.32825],[0,28.468],[-28.468,0],[0,-28.468]],"v":[[-1.4,-56.616],[35.0485,-41.518],[50.146,-5.069],[-1.4,46.477],[-52.946,-5.069]],"c":true}],"e":[{"i":[[-216.918,0.355],[-64.267,-76.958],[-2.356,-97.03],[245.939,4.892],[0,216.919]],"o":[[152.427,-0.249],[49.339,59.082],[6.26,257.8],[-216.876,-4.314],[0,-216.918]],"v":[[1.075,-400.067],[323.104,-257.643],[380.484,-6.177],[-8.599,392.766],[-400.29,0]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[71],"e":[143]},{"t":19}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[49.188,36.125],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[93.036,94.175],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.622],"y":[0.633]},"o":{"x":[0.414],"y":[0]},"n":["0p622_0p633_0p414_0"],"t":18,"s":[28],"e":[16.505]},{"i":{"x":[0.322],"y":[1]},"o":{"x":[0.115],"y":[0.465]},"n":["0p322_1_0p115_0p465"],"t":19,"s":[16.505],"e":[0]},{"t":25}],"ix":1},"e":{"k":[{"i":{"x":[0.622],"y":[0.622]},"o":{"x":[0.414],"y":[0.414]},"n":["0p622_0p622_0p414_0p414"],"t":18,"s":[100],"e":[100]},{"i":{"x":[0.322],"y":[1]},"o":{"x":[0.115],"y":[0.258]},"n":["0p322_1_0p115_0p258"],"t":19,"s":[100],"e":[92]},{"t":25}],"ix":2},"o":{"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p1_1_0p167_0p167"],"t":18,"s":[0],"e":[82]},{"t":25}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":18,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":3,"nm":"Null 3","parent":0,"ks":{"o":{"k":0},"r":{"k":180},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":1,"op":18,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Outer_circles","parent":6,"ks":{"o":{"k":[{"t":3,"s":[100],"h":1},{"t":5,"s":[0],"h":1},{"t":7,"s":[100],"h":1}]},"r":{"k":0},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"n":"0_1_0p333_0","t":8,"s":[-726,-1,0],"e":[-866,-1,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.849,"y":0},"n":"0p833_0p833_0p849_0","t":12,"s":[-866,-1,0],"e":[-726,-1,0],"to":[0,0,0],"ti":[-23.3333339691162,0,0]},{"t":14}]},"a":{"k":[-706,-1,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[74.227,74.227]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-706,-1],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":3,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Outer_circles","parent":6,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-726,0],[0,0]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[0],"e":[25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[25],"e":[91]},{"t":17}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[0.1],"e":[75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[75],"e":[100]},{"t":17}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[80],"e":[25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[25],"e":[61]},{"t":17}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":18,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Outer_circles","parent":0,"ks":{"o":{"k":[{"t":3,"s":[100],"h":1},{"t":5,"s":[0],"h":1},{"t":7,"s":[100],"h":1}]},"r":{"k":0},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"n":"0_1_0p333_0","t":8,"s":[-716.291,-114.297,0],"e":[-876.291,-114.297,0],"to":[0,0,0],"ti":[3.33333325386047,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.849,"y":0},"n":"0p833_0p833_0p849_0","t":12,"s":[-876.291,-114.297,0],"e":[-736.291,-114.297,0],"to":[-3.33333325386047,0,0],"ti":[-23.3333339691162,0,0]},{"t":14}]},"a":{"k":[-706,-1,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[74.227,74.227]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-706,-1],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":3,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Outer_circles","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-726,0],[0,0]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[0],"e":[25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[25],"e":[91]},{"t":17}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[0.1],"e":[75]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[75],"e":[100]},{"t":17}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[80],"e":[25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[25],"e":[61]},{"t":17}]},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":18,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 15","parent":7,"ks":{"o":{"k":100},"r":{"k":-180},"p":{"k":[47.999,-1,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[113.477,74.477]},"p":{"k":[0,0]},"r":{"k":267},"nm":"Rectangle Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[734.691,-0.762],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":9,"op":10,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 14","parent":9,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[48.999,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[113.477,74.477]},"p":{"k":[0,0]},"r":{"k":267},"nm":"Rectangle Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-735.262,-0.762],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":9,"op":10,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 13","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-705.412,-1,0]},"a":{"k":[-706,-1,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[74.227,74.227]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-706,-1],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":4,"op":6,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 12","parent":9,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-706.789,-1,0]},"a":{"k":[-706,-1,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[74.227,74.227]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-706,-1],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":4,"op":6,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"pauw","parent":17,"ks":{"o":{"k":100},"r":{"k":-145.581},"p":{"k":[157.945,351.65,0]},"a":{"k":[327.031,203.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.03,0.03],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p03_1_0p167_0p167","0p03_1_0p167_0p167"],"t":17,"s":[80.781,80.781],"e":[0,0]},{"t":28}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[327.031,203.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":28,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"piew","parent":17,"ks":{"o":{"k":100},"r":{"k":-145.581},"p":{"k":[-154.753,-352.723,0]},"a":{"k":[327.031,203.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.03,0.03],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p03_1_0p167_0p167","0p03_1_0p167_0p167"],"t":17,"s":[80.781,80.781],"e":[0,0]},{"t":28}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[327.031,203.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":28,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":3,"nm":"Null 3","parent":0,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.719],"y":[0.817]},"o":{"x":[0.389],"y":[0]},"n":["0p719_0p817_0p389_0"],"t":3,"s":[-2],"e":[2.601]},{"i":{"x":[0.05],"y":[0.81]},"o":{"x":[0.456],"y":[0.215]},"n":["0p05_0p81_0p456_0p215"],"t":4,"s":[2.601],"e":[145.581]},{"t":17}]},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.03,0.03,0.03],"y":[1,1,0.03]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p03_1_0p167_0p167","0p03_1_0p167_0p167","0p03_0p03_0p167_0p167"],"t":17,"s":[100,100,100],"e":[260,260,100]},{"t":28}]}},"ao":0,"ip":3,"op":28,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 7","parent":17,"ks":{"o":{"k":100},"r":{"k":180},"p":{"k":[-0.125,-0.25,0]},"a":{"k":[-20.125,11.75,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[771.25,771.25],"x":"var $bm_rt;\n$bm_rt = thisComp.layer('dotted_lines').content('Ellipse 1').content('Ellipse Path 1').size;"},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tm","s":{"k":40.797,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Shape Layer 6').content('Ellipse 1').content('Trim Paths 1').start;","ix":1},"e":{"k":45.776,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Shape Layer 6').content('Ellipse 1').content('Trim Paths 1').end;","ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":78.297,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Shape Layer 6').content('Ellipse 1').content('Stroke 1').strokeWidth;"},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-20,12],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":3,"op":17,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 6","parent":17,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-0.125,-0.25,0]},"a":{"k":[-20.125,11.75,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[771.25,771.25],"x":"var $bm_rt;\n$bm_rt = thisComp.layer('dotted_lines').content('Ellipse 1').content('Ellipse Path 1').size;"},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.155],"y":[1]},"o":{"x":[0.726],"y":[0]},"n":["0p155_1_0p726_0"],"t":4,"s":[0],"e":[40.797]},{"i":{"x":[0.155],"y":[0.155]},"o":{"x":[0.167],"y":[0.167]},"n":["0p155_0p155_0p167_0p167"],"t":15,"s":[40.797],"e":[40.797]},{"t":18}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":3,"s":[1.5],"e":[3]},{"i":{"x":[0.665],"y":[0.609]},"o":{"x":[0.196],"y":[0]},"n":["0p665_0p609_0p196_0"],"t":4,"s":[3],"e":[21.532]},{"i":{"x":[0.659],"y":[0.496]},"o":{"x":[0.253],"y":[0.681]},"n":["0p659_0p496_0p253_0p681"],"t":6,"s":[21.532],"e":[37.019]},{"i":{"x":[0.423],"y":[1]},"o":{"x":[0.116],"y":[0.297]},"n":["0p423_1_0p116_0p297"],"t":10,"s":[37.019],"e":[45.776]},{"i":{"x":[0.423],"y":[0.423]},"o":{"x":[0.167],"y":[0.167]},"n":["0p423_0p423_0p167_0p167"],"t":15,"s":[45.776],"e":[45.776]},{"t":18}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.522],"y":[0.759]},"o":{"x":[0.558],"y":[0]},"n":["0p522_0p759_0p558_0"],"t":3,"s":[62],"e":[159.446]},{"i":{"x":[0.51],"y":[1]},"o":{"x":[0.207],"y":[-0.135]},"n":["0p51_1_0p207_-0p135"],"t":4,"s":[159.446],"e":[83.949]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.125],"y":[0.752]},"n":["0p667_1_0p125_0p752"],"t":5,"s":[83.949],"e":[42]},{"i":{"x":[0.377],"y":[1]},"o":{"x":[0.08],"y":[0]},"n":["0p377_1_0p08_0"],"t":8,"s":[42],"e":[78.297]},{"t":17}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-20,12],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":3,"op":17,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":3,"nm":"Null 3","parent":0,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.719],"y":[0.849]},"o":{"x":[0.389],"y":[0]},"n":["0p719_0p849_0p389_0"],"t":4,"s":[-2],"e":[3.601]},{"i":{"x":[0],"y":[0.817]},"o":{"x":[0.456],"y":[0.199]},"n":["0_0p817_0p456_0p199"],"t":5,"s":[3.601],"e":[145.581]},{"t":17}]},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":4,"op":25,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 17","parent":20,"ks":{"o":{"k":100},"r":{"k":180},"p":{"k":[-0.125,-0.25,0]},"a":{"k":[-20.125,11.75,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[771.25,771.25],"x":"var $bm_rt;\n$bm_rt = thisComp.layer('dotted_lines').content('Ellipse 1').content('Ellipse Path 1').size;"},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tm","s":{"k":40.797,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Shape Layer 16').content('Ellipse 1').content('Trim Paths 1').start;","ix":1},"e":{"k":45.776,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Shape Layer 16').content('Ellipse 1').content('Trim Paths 1').end;","ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":78.297,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Shape Layer 6').content('Ellipse 1').content('Stroke 1').strokeWidth;"},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-20,12],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":4,"op":17,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 16","parent":20,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-0.125,-0.25,0]},"a":{"k":[-20.125,11.75,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[771.25,771.25],"x":"var $bm_rt;\n$bm_rt = thisComp.layer('dotted_lines').content('Ellipse 1').content('Ellipse Path 1').size;"},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.155],"y":[1]},"o":{"x":[0.726],"y":[0]},"n":["0p155_1_0p726_0"],"t":5,"s":[0],"e":[40.797]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[40.797],"e":[40.797]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[40.797],"e":[50]},{"t":24}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":4,"s":[1.5],"e":[3]},{"i":{"x":[0.665],"y":[0.609]},"o":{"x":[0.196],"y":[0]},"n":["0p665_0p609_0p196_0"],"t":5,"s":[3],"e":[21.532]},{"i":{"x":[0.659],"y":[0.496]},"o":{"x":[0.253],"y":[0.681]},"n":["0p659_0p496_0p253_0p681"],"t":7,"s":[21.532],"e":[37.019]},{"i":{"x":[0.423],"y":[1]},"o":{"x":[0.116],"y":[0.238]},"n":["0p423_1_0p116_0p238"],"t":11,"s":[37.019],"e":[45.776]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[45.776],"e":[45.776]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[45.776],"e":[50]},{"t":24}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.522],"y":[0.759]},"o":{"x":[0.558],"y":[0]},"n":["0p522_0p759_0p558_0"],"t":3,"s":[62],"e":[159.446]},{"i":{"x":[0.51],"y":[1]},"o":{"x":[0.207],"y":[-0.135]},"n":["0p51_1_0p207_-0p135"],"t":4,"s":[159.446],"e":[83.949]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.125],"y":[0.752]},"n":["0p667_1_0p125_0p752"],"t":5,"s":[83.949],"e":[42]},{"i":{"x":[0.377],"y":[1]},"o":{"x":[0.08],"y":[0]},"n":["0p377_1_0p08_0"],"t":8,"s":[42],"e":[78.297]},{"t":18}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-20,12],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":4,"op":17,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":3,"nm":"Dotted_lines_Null","parent":0,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.591],"y":[0]},"n":["0p11_1_0p591_0"],"t":0,"s":[0],"e":[148.379]},{"t":16}]},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"Dotted_lines","parent":23,"ks":{"o":{"k":100},"r":{"k":180},"p":{"k":[-0.125,-0.125,0]},"a":{"k":[-20.125,11.875,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[771.25,771.25]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.109],"y":[1]},"o":{"x":[0.745],"y":[0]},"n":["0p109_1_0p745_0"],"t":4,"s":[0],"e":[43]},{"t":16}],"ix":1},"e":{"k":[{"i":{"x":[0.602],"y":[0.436]},"o":{"x":[0.228],"y":[0]},"n":["0p602_0p436_0p228_0"],"t":0,"s":[3],"e":[9.842]},{"i":{"x":[0.54],"y":[0.526]},"o":{"x":[0.29],"y":[0.285]},"n":["0p54_0p526_0p29_0p285"],"t":2,"s":[9.842],"e":[25.357]},{"i":{"x":[0.294],"y":[1]},"o":{"x":[0.15],"y":[0.532]},"n":["0p294_1_0p15_0p532"],"t":5,"s":[25.357],"e":[43]},{"t":16}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"d":[{"n":"d","nm":"dash","v":{"k":[{"i":{"x":[0.922],"y":[0.997]},"o":{"x":[0.37],"y":[0]},"n":["0p922_0p997_0p37_0"],"t":0,"s":[20],"e":[58.449]},{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p11_1_0p167_0p167"],"t":9,"s":[58.449],"e":[52.308]},{"t":16}]}},{"n":"g","nm":"gap","v":{"k":[{"i":{"x":[0.958],"y":[0.996]},"o":{"x":[0.63],"y":[0]},"n":["0p958_0p996_0p63_0"],"t":0,"s":[45],"e":[127]},{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p11_1_0p167_0p167"],"t":8,"s":[127],"e":[69.231]},{"t":16}]}},{"n":"o","nm":"offset","v":{"k":0}}],"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-20,12],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":1,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"dotted_lines","parent":23,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-0.125,-0.25,0]},"a":{"k":[-20.125,11.75,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.1,0.1],"y":[1,1]},"o":{"x":[0.36,0.36],"y":[0,0]},"n":["0p1_1_0p36_0","0p1_1_0p36_0"],"t":0,"s":[1232.858,1232.858],"e":[771.25,771.25]},{"t":16}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.109],"y":[1]},"o":{"x":[0.745],"y":[0]},"n":["0p109_1_0p745_0"],"t":4,"s":[0],"e":[43]},{"t":16}],"ix":1},"e":{"k":[{"i":{"x":[0.602],"y":[0.436]},"o":{"x":[0.228],"y":[0]},"n":["0p602_0p436_0p228_0"],"t":0,"s":[3],"e":[9.842]},{"i":{"x":[0.54],"y":[0.526]},"o":{"x":[0.29],"y":[0.285]},"n":["0p54_0p526_0p29_0p285"],"t":2,"s":[9.842],"e":[25.357]},{"i":{"x":[0.294],"y":[1]},"o":{"x":[0.15],"y":[0.532]},"n":["0p294_1_0p15_0p532"],"t":5,"s":[25.357],"e":[43]},{"t":16}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":8},"lc":1,"lj":1,"ml":4,"d":[{"n":"d","nm":"dash","v":{"k":[{"i":{"x":[0.922],"y":[0.997]},"o":{"x":[0.37],"y":[0]},"n":["0p922_0p997_0p37_0"],"t":0,"s":[20],"e":[58.449]},{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p11_1_0p167_0p167"],"t":9,"s":[58.449],"e":[52.308]},{"t":16}]}},{"n":"g","nm":"gap","v":{"k":[{"i":{"x":[0.958],"y":[0.996]},"o":{"x":[0.63],"y":[0]},"n":["0p958_0p996_0p63_0"],"t":0,"s":[45],"e":[127]},{"i":{"x":[0.11],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p11_1_0p167_0p167"],"t":8,"s":[127],"e":[69.231]},{"t":16}]}},{"n":"o","nm":"offset","v":{"k":0}}],"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-20,12],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":1,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":4,"nm":"action_strokes","parent":0,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[879,879]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":1162},"lc":1,"lj":1,"ml":4,"d":[{"n":"d","nm":"dash","v":{"k":11}},{"n":"g","nm":"gap","v":{"k":134.4}},{"n":"o","nm":"offset","v":{"k":68}}],"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":28,"ty":4,"nm":"action_strokes_mask","parent":0,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.704,0.704],"y":[0.75,0.75]},"o":{"x":[0.415,0.415],"y":[0.11,0.11]},"n":["0p704_0p75_0p415_0p11","0p704_0p75_0p415_0p11"],"t":16,"s":[0,0],"e":[453.221,453.221]},{"i":{"x":[0.213,0.213],"y":[1,1]},"o":{"x":[0.103,0.103],"y":[0.438,0.438]},"n":["0p213_1_0p103_0p438","0p213_1_0p103_0p438"],"t":17,"s":[453.221,453.221],"e":[1440,1440]},{"t":28}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":20,"s":[50],"e":[0]},{"t":28}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":29,"ty":4,"nm":"action_strokes","parent":0,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[879,879]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1162},"lc":1,"lj":1,"ml":4,"d":[{"n":"d","nm":"dash","v":{"k":11}},{"n":"g","nm":"gap","v":{"k":134.4}},{"n":"o","nm":"offset","v":{"k":68}}],"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":31,"ty":4,"nm":"action_strokes_mask","parent":0,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.598,0.598],"y":[0.165,0.165]},"o":{"x":[0.416,0.416],"y":[0.304,0.304]},"n":["0p598_0p165_0p416_0p304","0p598_0p165_0p416_0p304"],"t":15,"s":[0,0],"e":[387.422,387.422]},{"i":{"x":[0.337,0.337],"y":[1,1]},"o":{"x":[0.117,0.117],"y":[0.583,0.583]},"n":["0p337_1_0p117_0p583","0p337_1_0p117_0p583"],"t":17,"s":[387.422,387.422],"e":[1279,1279]},{"t":28}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":20,"s":[50],"e":[0]},{"t":28}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":32,"ty":4,"nm":"action_strokes","parent":0,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[879,879]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":1162},"lc":1,"lj":1,"ml":4,"d":[{"n":"d","nm":"dash","v":{"k":11}},{"n":"g","nm":"gap","v":{"k":134.4}},{"n":"o","nm":"offset","v":{"k":0}}],"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":33,"ty":4,"nm":"action_strokes_mask","parent":0,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.598,0.598],"y":[0.42,0.42]},"o":{"x":[0.416,0.416],"y":[0.211,0.211]},"n":["0p598_0p42_0p416_0p211","0p598_0p42_0p416_0p211"],"t":15,"s":[0,0],"e":[558.422,558.422]},{"i":{"x":[0.337,0.337],"y":[1,1]},"o":{"x":[0.117,0.117],"y":[0.517,0.517]},"n":["0p337_1_0p117_0p517","0p337_1_0p117_0p517"],"t":17,"s":[558.422,558.422],"e":[1563,1563]},{"t":28}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":20,"s":[50],"e":[0]},{"t":28}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":34,"ty":4,"nm":"action_strokes","parent":0,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[879,879]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1162},"lc":1,"lj":1,"ml":4,"d":[{"n":"d","nm":"dash","v":{"k":11}},{"n":"g","nm":"gap","v":{"k":134.4}},{"n":"o","nm":"offset","v":{"k":0}}],"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":35,"ty":4,"nm":"action_strokes_mask","parent":0,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[{"i":{"x":[0.09,0.09],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p09_1_0p167_0p167","0p09_1_0p167_0p167"],"t":15,"s":[0,0],"e":[1844,1844]},{"t":28}]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":20,"s":[50],"e":[0]},{"t":28}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":36,"ty":4,"nm":"action_strokes","parent":0,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-10.291,-113.297,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[879,879]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":1162},"lc":1,"lj":1,"ml":4,"d":[{"n":"d","nm":"dash","v":{"k":11}},{"n":"g","nm":"gap","v":{"k":134.4}},{"n":"o","nm":"offset","v":{"k":0}}],"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":29,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":38,"ty":1,"nm":"ResizerTemp","parent":39,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":39,"ty":1,"nm":"White Solid 20","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":33,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":33,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/H.json b/example/shared/src/commonMain/composeResources/files/mobilo/H.json new file mode 100644 index 00000000..62d549d4 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/H.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Stroke_06","parent":23,"ks":{"o":{"k":100},"r":{"k":30},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[325.75,423,0],"e":[325.75,433,0],"to":[0,1.66666662693024,0],"ti":[0,-2,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[325.75,433,0],"e":[325.75,435,0],"to":[0,2,0],"ti":[0,-0.33333334326744,0]},{"t":22}]},"a":{"k":[-100,-159,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-112,-171]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.25,-161.041]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.25,-161.041]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-101.733,-152.967]],"c":false}]},{"t":20}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":24,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Stroke_05","parent":0,"ks":{"o":{"k":100},"r":{"k":-32.115},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[-73.656,-182.87,0],"e":[-72.906,-181.571,0],"to":[0.125,0.2165063470602,0],"ti":[-0.125,-0.2165063470602,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[-72.906,-181.571,0],"e":[-72.906,-181.571,0],"to":[0,0,0],"ti":[0,0,0]},{"t":22}]},"a":{"k":[-100,-159,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-112,-171]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.836,-161.803]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.836,-161.803]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-102.135,-153.624]],"c":false}]},{"t":20}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":24,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Stroke_04","parent":0,"ks":{"o":{"k":100},"r":{"k":39.997},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[-131.777,-143.54,0],"e":[-131.777,-143.54,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[-131.777,-143.54,0],"e":[-131.777,-143.54,0],"to":[0,0,0],"ti":[0,0,0]},{"t":22}]},"a":{"k":[-100,-159,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-112,-171]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-105.383,-158.481]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-105.383,-158.481]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-101.167,-150.695]],"c":false}]},{"t":20}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":24,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Stroke_03","parent":23,"ks":{"o":{"k":100},"r":{"k":30},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[181.75,423,0],"e":[181.75,433,0],"to":[0,1.66666662693024,0],"ti":[0,-2,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[181.75,433,0],"e":[181.75,435,0],"to":[0,2,0],"ti":[0,-0.33333334326744,0]},{"t":22}]},"a":{"k":[-100,-159,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-112,-171]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.25,-161.041]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.25,-161.041]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-101.733,-152.967]],"c":false}]},{"t":20}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":24,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Stroke_02","parent":3,"ks":{"o":{"k":100},"r":{"k":-32.115},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[-73.656,-182.87,0],"e":[-72.906,-181.571,0],"to":[0.125,0.2165063470602,0],"ti":[-0.125,-0.2165063470602,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[-72.906,-181.571,0],"e":[-72.906,-181.571,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20}]},"a":{"k":[-100,-159,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-112,-171]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.836,-161.803]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-106.836,-161.803]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-102.135,-153.624]],"c":false}]},{"t":20}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":24,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Stroke_01","parent":3,"ks":{"o":{"k":100},"r":{"k":39.997},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[-131.777,-143.54,0],"e":[-131.777,-143.54,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[-131.777,-143.54,0],"e":[-131.777,-143.54,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20}]},"a":{"k":[-100,-159,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-112,-171]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-105.383,-158.481]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-105.383,-158.481]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-97,-144],[-101.167,-150.695]],"c":false}]},{"t":20}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":24,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Foot_03","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":5,"s":[321,306.5,0],"h":1},{"t":6,"s":[321,406.5,0],"h":1},{"t":7,"s":[321,422.5,0],"h":1},{"t":8,"s":[321,420.5,0],"h":1}]},"a":{"k":[-71,121,0]},"s":{"k":[{"t":5,"s":[100,100,100],"h":1},{"t":6,"s":[100,100,100],"h":1},{"t":7,"s":[111.518,92.917,100],"h":1},{"t":8,"s":[100,100,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-24.25],[0,0],[0,0],[0,0]],"o":[[0,0],[0,24.25],[0,0],[0,0],[0,0]],"v":[[-94.25,100.25],[-118.75,119.5],[-94.25,140.25],[-46,140.25],[-46,100.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":18,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Sock_02","parent":6,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-70.25,93.5,0]},"a":{"k":[-69.643,39,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":5,"s":[110.955,100,100],"e":[82.412,172.59,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[82.412,172.59,100],"e":[110.955,67.525,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[110.955,67.525,100],"e":[110.955,100,100]},{"t":8}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[23.636,-25.566],[-23.636,-25.566],[-23.636,25.566],[23.636,25.566]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-69.227,38.447],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[91.281,76.125],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":5,"op":18,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Foot_01","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":3,"s":[178,306.5,0],"h":1},{"t":4,"s":[178,406.5,0],"h":1},{"t":5,"s":[178,422.5,0],"h":1},{"t":6,"s":[178,420.5,0],"h":1}]},"a":{"k":[-71,121,0]},"s":{"k":[{"t":3,"s":[100,100,100],"h":1},{"t":4,"s":[100,100,100],"h":1},{"t":5,"s":[111.518,92.917,100],"h":1},{"t":6,"s":[100,100,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-24.25],[0,0],[0,0],[0,0]],"o":[[0,0],[0,24.25],[0,0],[0,0],[0,0]],"v":[[-94.25,100.25],[-118.75,119.5],[-94.25,140.25],[-46,140.25],[-46,100.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":18,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Sock_01","parent":8,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-70.25,93.5,0]},"a":{"k":[-69.643,39,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":3,"s":[110.955,100,100],"e":[82.412,172.59,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":4,"s":[82.412,172.59,100],"e":[110.955,67.525,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":5,"s":[110.955,67.525,100],"e":[110.955,100,100]},{"t":6}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[23.636,-25.566],[-23.636,-25.566],[-23.636,25.566],[23.636,25.566]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-69.227,38.447],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[91.281,76.125],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":3,"op":18,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Pupil_01","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":8,"s":[13.129,-32.447,0],"h":1},{"t":9,"s":[13.129,-53.829,0],"h":1},{"t":19,"s":[13.129,-53.829,0],"h":1}]},"a":{"k":[13.129,-53.829,0]},"s":{"k":[{"t":8,"s":[50,50,100],"h":1},{"t":19,"s":[36.826,36.826,100],"h":1},{"t":20,"s":[19.03,19.03,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.34,-55.66],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[62.062,62.062],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":8,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Eye_01","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":8,"s":[179.5,218,0],"h":1},{"t":9,"s":[179.5,199.5,0],"h":1},{"t":10,"s":[179.5,209.5,0],"h":1},{"t":12,"s":[179.5,199.5,0],"h":1},{"t":19,"s":[179.5,199.5,0],"h":1},{"t":22,"s":[179.5,199.5,0],"h":1}]},"a":{"k":[13.129,-53.829,0]},"s":{"k":[{"t":8,"s":[19.826,70.155,100],"h":1},{"t":9,"s":[33.242,33.242,100],"h":1},{"t":10,"s":[45.625,21.493,100],"h":1},{"t":12,"s":[33.242,33.242,100],"h":1},{"t":19,"s":[37.158,37.158,100],"h":1},{"t":20,"s":[38.137,38.137,100],"h":1},{"t":21,"s":[36.179,36.179,100],"h":1},{"t":22,"s":[20.514,20.514,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[82.561,-2.071],[0,-43.818],[-80.001,1.701],[0,43.818]],"o":[[-75.937,1.904],[0,43.818],[86.589,-1.841],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}],"e":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}]},{"t":9,"s":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}],"h":1},{"t":10,"s":[{"i":[[43.818,0],[-4.54,-71.912],[-43.818,0],[1.392,85.415]],"o":[[-43.818,0],[4.682,74.17],[43.818,0],[-1.421,-87.182]],"v":[[0,-79.34],[-68.745,0],[0,79.34],[74.042,-3.748]],"c":true}],"h":1},{"t":12,"s":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.34,-55.66],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[62.062,62.062],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":8,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Pupil_02","parent":13,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":10,"s":[12.377,-53.829,0],"h":1},{"t":15,"s":[15.385,-53.829,0],"h":1},{"t":17,"s":[12.377,-53.829,0],"h":1}]},"a":{"k":[13.129,-53.829,0]},"s":{"k":[{"t":10,"s":[50,50,100],"h":1},{"t":17,"s":[36.826,36.826,100],"h":1},{"t":18,"s":[23.479,23.479,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.34,-55.66],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[62.062,62.062],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":10,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Eye_02","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[322.75,220,0],"e":[322.75,182,0],"to":[0,-6.33333349227905,0],"ti":[0,2.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[322.75,182,0],"e":[322.75,205,0],"to":[0,-2.5,0],"ti":[0,-3,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[322.75,205,0],"e":[322.75,200,0],"to":[0,3,0],"ti":[0,0.83333331346512,0]},{"t":14,"s":[322.75,200,0],"h":1},{"t":17,"s":[322.75,200,0],"h":1},{"t":20,"s":[322.75,200,0],"h":1}]},"a":{"k":[13.129,-53.829,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[26.443,26.443,100],"e":[33.242,33.242,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":11,"s":[33.242,33.242,100],"e":[34.274,23.451,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[34.274,23.451,100],"e":[33.242,33.242,100]},{"t":14,"s":[33.242,33.242,100],"h":1},{"t":17,"s":[37.158,37.158,100],"h":1},{"t":18,"s":[39.116,39.116,100],"h":1},{"t":19,"s":[36.179,36.179,100],"h":1},{"t":20,"s":[20.514,20.514,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[43.818,0],[0,-43.818],[-55.683,1.782],[0,43.818]],"o":[[-43.818,0],[0,43.818],[67.889,-2.172],[0,-43.818]],"v":[[0,-79.34],[-62.375,0],[2.424,128.647],[59.951,0]],"c":true}],"e":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}]},{"t":11}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.34,-55.66],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[62.062,62.062],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":10,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Nose_Small","parent":23,"ks":{"o":{"k":100},"r":{"k":[{"t":0,"s":[0],"h":1},{"t":9,"s":[-13.784],"h":1},{"t":10,"s":[0],"h":1},{"t":15,"s":[0],"h":1}]},"p":{"k":[{"i":{"x":0.926,"y":0},"o":{"x":0.333,"y":0},"n":"0p926_0_0p333_0","t":0,"s":[251,377.5,0],"e":[251,379.995,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.629},"o":{"x":0.333,"y":0.149},"n":"0p667_0p629_0p333_0p149","t":1,"s":[251,379.995,0],"e":[251,304.495,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.875},"n":"0p667_1_0p333_0p875","t":2,"s":[251,304.495,0],"e":[251,208.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"n":"0p833_1_1_0","t":5,"s":[251,208.5,0],"e":[251,229.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":8,"s":[251,229.5,0],"h":1},{"t":9,"s":[251,238.5,0],"h":1},{"t":10,"s":[251,211.5,0],"h":1},{"i":{"x":0.575,"y":0.623},"o":{"x":0.341,"y":0.302},"n":"0p575_0p623_0p341_0p302","t":11,"s":[251,199.5,0],"e":[251,191.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.724,"y":0},"o":{"x":0.338,"y":0.186},"n":"0p724_0_0p338_0p186","t":12,"s":[251,191.5,0],"e":[251,204.428,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.664,"y":1},"o":{"x":0.332,"y":0.526},"n":"0p664_1_0p332_0p526","t":13,"s":[251,204.428,0],"e":[251,234,0],"to":[0,0,0],"ti":[0,0,0]},{"t":14,"s":[251,234,0],"h":1},{"t":15,"s":[251,230.5,0],"h":1},{"t":16,"s":[251,223.5,0],"h":1},{"t":17,"s":[251,222.5,0],"h":1},{"t":22,"s":[250.75,222,0],"h":1}]},"a":{"k":[13.129,-53.829,0]},"s":{"k":[{"t":0,"s":[66.483,66.483,100],"h":1},{"t":8,"s":[85.059,50.819,100],"h":1},{"t":10,"s":[56.164,70.4,100],"h":1},{"t":11,"s":[49.972,80.186,100],"h":1},{"t":12,"s":[62.356,54.875,100],"h":1},{"t":13,"s":[66.483,50.546,100],"h":1},{"t":14,"s":[80.796,49.617,100],"h":1},{"t":15,"s":[66.483,66.483,100],"h":1},{"t":21,"s":[7.742,7.742,100],"h":1},{"t":22,"s":[18.511,18.511,100],"h":1},{"t":23,"s":[7.253,7.253,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.34,-55.66],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[62.062,62.062],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Nose_Matte","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[251,224,0],"e":[251,225.5,0],"to":[0,0.25,0],"ti":[0,-0.16666667163372,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[251,225.5,0],"e":[251,225,0],"to":[0,0.16666667163372,0],"ti":[0,0.08333333581686,0]},{"t":22}]},"a":{"k":[13.129,-53.829,0]},"s":{"k":[{"t":20,"s":[89.038,89.038,100],"h":1},{"t":21,"s":[194.089,194.089,100],"h":1},{"t":22,"s":[144.05,144.05,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.19,0.3,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.84,-56.16],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[12.804,12.804],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":20,"op":23,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Nose","parent":23,"ks":{"o":{"k":100},"r":{"k":[{"t":1,"s":[0],"h":1},{"t":10,"s":[-13.784],"h":1},{"t":11,"s":[0],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"i":{"x":0.926,"y":0},"o":{"x":0.333,"y":0},"n":"0p926_0_0p333_0","t":1,"s":[251,377.5,0],"e":[251,379.995,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.629},"o":{"x":0.333,"y":0.149},"n":"0p667_0p629_0p333_0p149","t":2,"s":[251,379.995,0],"e":[251,304.495,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.875},"n":"0p667_1_0p333_0p875","t":3,"s":[251,304.495,0],"e":[251,208.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"n":"0p833_1_1_0","t":6,"s":[251,208.5,0],"e":[251,229.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":9,"s":[251,229.5,0],"h":1},{"t":10,"s":[251,238.5,0],"h":1},{"t":11,"s":[251,211.5,0],"h":1},{"i":{"x":0.575,"y":0.623},"o":{"x":0.341,"y":0.302},"n":"0p575_0p623_0p341_0p302","t":12,"s":[251,199.5,0],"e":[251,191.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.724,"y":0},"o":{"x":0.338,"y":0.186},"n":"0p724_0_0p338_0p186","t":13,"s":[251,191.5,0],"e":[251,204.428,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.664,"y":1},"o":{"x":0.332,"y":0.526},"n":"0p664_1_0p332_0p526","t":14,"s":[251,204.428,0],"e":[251,234,0],"to":[0,0,0],"ti":[0,0,0]},{"t":15,"s":[251,234,0],"h":1},{"t":16,"s":[251,230.5,0],"h":1},{"t":17,"s":[251,223.5,0],"h":1},{"t":18,"s":[251,222.5,0],"h":1}]},"a":{"k":[13.129,-53.829,0]},"s":{"k":[{"t":1,"s":[66.483,66.483,100],"h":1},{"t":9,"s":[85.059,50.819,100],"h":1},{"t":11,"s":[56.164,70.4,100],"h":1},{"t":12,"s":[49.972,80.186,100],"h":1},{"t":13,"s":[62.356,54.875,100],"h":1},{"t":14,"s":[66.483,50.546,100],"h":1},{"t":15,"s":[80.796,49.617,100],"h":1},{"t":16,"s":[66.483,66.483,100],"h":1},{"t":20,"s":[72.358,72.358,100],"h":1},{"t":21,"s":[64.525,64.525,100],"h":1},{"t":22,"s":[36.134,36.134,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[43.818,0],[-0.572,-22.9],[-54.472,2.996],[0.101,30.733]],"o":[[-43.818,0],[0.67,26.835],[61.768,-3.398],[-0.092,-28.04]],"v":[[1.81,109.702],[-76.318,115.524],[0,133.775],[84.785,113.999]],"c":true}],"e":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-40.562],[-79.34,38.778],[0,118.118],[79.34,38.778]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-40.562],[-79.34,38.778],[0,118.118],[79.34,38.778]],"c":true}],"e":[{"i":[[43.818,0],[0,-43.818],[-54.472,2.996],[0,43.818]],"o":[[-43.818,0],[0,43.818],[61.768,-3.398],[0,-43.818]],"v":[[0,-79.34],[-45.409,1.512],[0,133.775],[45.409,0]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[43.818,0],[0,-43.818],[-54.472,2.996],[0,43.818]],"o":[[-43.818,0],[0,43.818],[61.768,-3.398],[0,-43.818]],"v":[[0,-79.34],[-45.409,1.512],[0,133.775],[45.409,0]],"c":true}],"e":[{"i":[[43.818,0],[0,-43.818],[-47.369,0.999],[0,43.818]],"o":[[-43.818,0],[0,43.818],[49.802,-1.133],[0,-43.818]],"v":[[0,-79.34],[-80.148,0.504],[0,78.096],[77.724,0]],"c":true}]},{"t":7,"s":[{"i":[[43.818,0],[0,-43.818],[-47.369,0.999],[0,43.818]],"o":[[-43.818,0],[0,43.818],[49.802,-1.133],[0,-43.818]],"v":[[0,-79.34],[-80.148,0.504],[0,78.096],[77.724,0]],"c":true}],"h":1},{"t":9,"s":[{"i":[[43.818,0],[1.049,-65.218],[-43.818,0],[0.283,43.817]],"o":[[-43.818,0],[-0.705,43.813],[43.818,0],[-0.401,-62.047]],"v":[[0,-34.951],[-79.34,0],[0,79.34],[79.34,0]],"c":true}],"h":1},{"t":11,"s":[{"i":[[64.384,1.243],[0,-43.818],[-67.583,0.286],[0,43.818]],"o":[[-64.714,-1.25],[0,43.818],[67.286,-0.285],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}],"h":1},{"t":15,"s":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-31.032],[-79.34,65.629],[0,105.999],[79.34,62.382]],"c":true}],"h":1},{"t":16,"s":[{"i":[[43.818,0],[0,-43.818],[-43.818,0],[0,43.818]],"o":[[-43.818,0],[0,43.818],[43.818,0],[0,-43.818]],"v":[[0,-79.34],[-79.34,0],[0,79.34],[79.34,0]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.34,-55.66],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[62.062,62.062],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":1,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"H_Mid_02","parent":23,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[12.569],"e":[13.994]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[13.994],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[0],"e":[-15.659]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":10,"s":[-15.659],"e":[-2.319]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[-2.319],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[0],"e":[0]},{"t":14}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[188,333.5,0],"e":[237,296,0],"to":[8.16666698455811,-6.25,0],"ti":[-10.5,9.58333301544189,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[237,296,0],"e":[251,276,0],"to":[10.5,-9.58333301544189,0],"ti":[-2.33333325386047,5.33333349227905,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[251,276,0],"e":[251,264,0],"to":[2.33333325386047,-5.33333349227905,0],"ti":[0,-3.33333325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[251,264,0],"e":[251,286.499,0],"to":[0,1.60912728309631,0],"ti":[0,-2.92168927192688,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[251,286.499,0],"e":[251,296,0],"to":[0,3.13063764572144,0],"ti":[0,-1.29315459728241,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[251,296,0],"e":[250,288,0],"to":[0,2.5,0],"ti":[0,0,0]},{"t":14,"s":[250,288,0],"h":1},{"t":15,"s":[250,288,0],"h":1},{"t":16,"s":[250,293,0],"h":1},{"t":17,"s":[250,286,0],"h":1},{"t":18,"s":[250,288,0],"h":1}]},"a":{"k":[0.528,-112,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[60.751,100,100],"e":[152.878,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[152.878,100,100],"e":[189.365,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":9,"s":[189.365,100,100],"e":[189.365,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[189.365,100,100],"e":[189.365,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":11,"s":[189.365,100,100],"e":[189.365,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[189.365,100,100],"e":[189.365,100,100]},{"t":14,"s":[189.365,100,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}],"e":[{"i":[[0,0],[14.438,0],[0,0],[0,0],[13.325,0],[0,0]],"o":[[0,0],[-14.438,0],[0,0],[0,0],[-13.325,0],[0,0]],"v":[[48.862,-110.919],[2.132,-145.599],[-47.074,-134.445],[-47.074,-92.45],[3.381,-108.939],[34.109,-72.578]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[14.438,0],[0,0],[0,0],[13.325,0],[0,0]],"o":[[0,0],[-14.438,0],[0,0],[0,0],[-13.325,0],[0,0]],"v":[[48.862,-110.919],[2.132,-145.599],[-47.074,-134.445],[-47.074,-92.45],[3.381,-108.939],[34.109,-72.578]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}],"e":[{"i":[[0,0],[19.879,0.372],[0,0],[0,0],[-21.824,0.691],[0,0]],"o":[[0,0],[-19.879,-0.372],[0,0],[0,0],[21.824,-0.691],[0,0]],"v":[[48.397,-134.445],[-0.701,-113.45],[-47.074,-134.445],[-47.074,-92.45],[0.488,-74.454],[48.397,-92.45]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[19.879,0.372],[0,0],[0,0],[-21.824,0.691],[0,0]],"o":[[0,0],[-19.879,-0.372],[0,0],[0,0],[21.824,-0.691],[0,0]],"v":[[48.397,-134.445],[-0.701,-113.45],[-47.074,-134.445],[-47.074,-92.45],[0.488,-74.454],[48.397,-92.45]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-15.159,-0.45],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[15.159,0.45],[0,0]],"v":[[48.397,-134.445],[-0.473,-134.445],[-47.074,-134.445],[-47.074,-92.45],[0.684,-92.45],[48.397,-92.45]],"c":true}]},{"t":15}]},"nm":"H"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"H"}],"ip":7,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"H_Left_02","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":6,"s":[178,402,0],"h":1},{"t":8,"s":[178,386,0],"h":1},{"t":10,"s":[178,412,0],"h":1},{"t":12,"s":[178,402,0],"h":1},{"t":15,"s":[178,402,0],"h":1}]},"a":{"k":[-72,2,0]},"s":{"k":[{"t":6,"s":[100,24.757,100],"h":1},{"t":8,"s":[100,100,100],"h":1},{"t":10,"s":[100,100,100],"h":1},{"t":12,"s":[100,100,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-47.074,-226.593],[-94.205,-226.593],[-94.205,0],[-47.074,0]],"c":true}},"nm":"H"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"H"}],"ip":6,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"H_Right_02","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":8,"s":[178,402,0],"h":1},{"t":10,"s":[178,386,0],"h":1},{"t":12,"s":[178,412,0],"h":1},{"t":14,"s":[178,402,0],"h":1},{"t":15,"s":[178,402,0],"h":1}]},"a":{"k":[-72,2,0]},"s":{"k":[{"t":8,"s":[100,24.757,100],"h":1},{"t":10,"s":[100,100,100],"h":1},{"t":12,"s":[100,100,100],"h":1},{"t":14,"s":[100,100,100],"h":1}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-226.593],[48.397,0],[95.226,0],[95.226,-226.593]],"c":true}},"nm":"H"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"H"}],"ip":8,"op":23,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"H_Mid","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[189.365,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-134.445],[-47.074,-134.445],[-47.074,-92.45],[48.397,-92.45]],"c":true}},"nm":"H"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"H"}],"ip":23,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"H_Left","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-47.074,-226.593],[-94.205,-226.593],[-94.205,0],[-47.074,0]],"c":true}},"nm":"H"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"H"}],"ip":23,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"H_Right","parent":23,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.397,-226.593],[48.397,0],[95.226,0],[95.226,-226.593]],"c":true}},"nm":"H"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"H"}],"ip":23,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":1,"nm":"ResizerTemp","parent":25,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":1,"nm":"White Solid 21","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":32,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/I.json b/example/shared/src/commonMain/composeResources/files/mobilo/I.json new file mode 100644 index 00000000..9b3cc7e2 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/I.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"24","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-23.245,0],[23.886,0],[23.886,-226.593],[-23.245,-226.593]],"c":true}},"nm":"I"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"I"}],"ip":24,"op":40,"st":-6,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"23","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,-12.5],[0,0],[13.798,-0.564],[0,0],[0,-14.25]],"o":[[0,0],[0,0],[0,12.5],[0,0],[-14.5,0.593],[0,0],[0,14.25]],"v":[[-23.245,0],[23.886,0],[23.886,-208],[24.285,-226.338],[8.5,-227.343],[-23.24,-225.218],[-23.245,-203.5]],"c":true}},"nm":"I"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"I"}],"ip":23,"op":24,"st":-6,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"22","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,12.75],[-1.386,16.5],[0,0],[13.809,-0.076],[0,0],[-1.26,-23],[0,-13.818]],"o":[[0,0],[0,0],[0,-12.75],[1.046,-12.456],[0,0],[-17,0.093],[0,0],[0.157,2.872],[-0.001,54.632]],"v":[[-23.245,0],[23.886,0],[23.772,-172.75],[25.886,-210.75],[25.285,-227.838],[9.75,-230.093],[-17.99,-225.718],[-22.74,-201.75],[-23.241,-172]],"c":true}},"nm":"I"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"I"}],"ip":22,"op":23,"st":-6,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"21","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,12.75],[-4.003,16.067],[0,0],[13.783,-0.861],[0,0],[0.24,-23.25],[0,-13.818]],"o":[[0,0],[0,0],[0,-12.75],[3.364,-13.5],[0,0],[-17.5,1.093],[0,0],[-0.03,2.877],[-0.001,54.632]],"v":[[-23.245,0],[23.886,0],[23.772,-172.75],[27.136,-213.5],[25.285,-230.088],[9,-233.593],[-14.24,-225.968],[-22.74,-201.75],[-23.241,-172]],"c":true}},"nm":"I"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"I"}],"ip":21,"op":22,"st":-6,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"20","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,12.75],[1.114,15.75],[4.035,1.662],[9.5,-2.157],[2.49,-5.282],[-10.769,1],[0,-13.818]],"o":[[0,0],[0,0],[0,-12.75],[-0.628,-8.877],[-4.035,-1.662],[-10.116,2.297],[-2.804,5.947],[-0.03,2.877],[-0.001,54.632]],"v":[[-23.245,0],[23.886,0],[23.772,-172.75],[23.886,-208],[12.785,-221.588],[-9.75,-224.843],[-29.49,-210.468],[-22.981,-200.75],[-23.241,-172]],"c":true}},"nm":"I"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"I"}],"ip":20,"op":21,"st":-6,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"19","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,12.75],[1.341,8.912],[2.467,5.275],[20.715,-2.662],[0.008,-9.742],[-9.26,-2.532],[0.719,-4.704],[-3.473,-0.111],[0,-13.818]],"o":[[0,0],[0,0],[6.835,-8.75],[-1.279,-8.5],[-4.693,-10.037],[-13.024,1.674],[-0.01,11.093],[-1.26,8.468],[-0.574,3.753],[-0.03,2.877],[-0.001,54.632]],"v":[[-23.245,0],[23.886,0],[23.915,-160.5],[29.529,-187],[21.283,-200.775],[-5.215,-217.338],[-30.74,-195.093],[-20.731,-176.718],[-27.512,-158.887],[-22.848,-151.5],[-23.222,-119.25]],"c":true}},"nm":"I"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"I"}],"ip":19,"op":20,"st":-6,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"18","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[19,-0.5],[-0.336,-8.243],[0,-4.75],[-0.25,-6],[1,-3.25],[-1.5,-11.25],[-4.828,-5.214],[0,0],[0,0],[0,0],[0,12],[-2.75,6.25],[2,5],[-0.5,9],[4.25,6]],"o":[[-19,0.5],[0.5,12.25],[0,4.75],[0.25,6],[-1,3.25],[1.5,11.25],[6.25,6.75],[0,0],[0,0],[0,0],[0,-6.75],[2.75,-6.25],[-2,-5],[0.5,-9],[-4.25,-6]],"v":[[-9.5,-101.75],[-42.5,-78.5],[-31.75,-63.5],[-38.25,-48],[-33.5,-41.25],[-39.75,-19.5],[-29,2],[-23,12.25],[-23,100],[24,100],[24.25,-11.75],[33.5,-34.25],[34.5,-51.75],[29.5,-64.25],[26.25,-85.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":19,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"17","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[9.25,1],[5,-10],[-3.25,-1.75],[2.25,-5],[-0.75,-5.75],[-2,-1],[3.25,-2.75],[-1,-17.75],[-8.201,-5.858],[0,0],[0,0],[0,0],[0,8.5],[-3.75,4.75],[1.5,4.75],[2.81,7.494],[6.25,8.25]],"o":[[-9.25,-1],[-5,10],[3.25,1.75],[-2.25,5],[0.75,5.75],[2,1],[-3.25,2.75],[1,17.75],[14,10],[0,0],[0,0],[0,0],[0,-8.5],[3.75,-4.75],[-1.5,-4.75],[-5.25,-14],[-6.25,-8.25]],"v":[[-4,-89],[-45,-79.5],[-45,-65],[-41,-58],[-46,-44.5],[-36,-30.75],[-36,-25.75],[-46,4.75],[-34.75,34.25],[-23.25,47],[-23.25,100],[24,100],[24,1.25],[33.25,-20.25],[37.5,-37],[32,-48.75],[23.25,-76]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"16","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[8.5,1.25],[12.25,-7.5],[-2,-6.25],[0,0],[-2.5,-5.75],[0,0],[-1.826,-21.916],[0,0],[0,0],[0,0],[0,12.25],[-3.75,5.75],[1.75,11.5],[0,0],[3.25,6.75],[7,2],[5.5,3]],"o":[[-8.5,-1.25],[-12.25,7.5],[2,6.25],[0,0],[2.5,5.75],[0,0],[3,36],[0,0],[0,0],[0,0],[0,-12.25],[3.75,-5.75],[-1.75,-11.5],[0,0],[-3.25,-6.75],[-7,-2],[-5.5,-3]],"v":[[-12,-72.75],[-43.25,-69],[-60,-44.75],[-51.75,-36],[-52.25,-24],[-44.25,-15.25],[-56.75,19],[-23.25,63.25],[-23.25,100],[23.75,100],[23.75,16],[29.75,0.25],[36.25,-24],[25,-38.75],[29.25,-49.25],[16.75,-60.5],[2.5,-64.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"15","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[16.25,-0.5],[0,-12.752],[0,0],[-1,-10],[0,0],[-1.25,-14],[-8.25,-6.75],[-2,-3.25],[1,-3.75],[-0.5,-1.5],[-0.116,-3.072],[0,0],[0,0],[0,8],[-8,8.75],[0,16.5],[0,0],[6.871,3.515],[8,2.25]],"o":[[-16.25,0.5],[0,15.75],[0,0],[1,10],[0,0],[1.25,14],[8.25,6.75],[2,3.25],[-1,3.75],[0.319,0.956],[0.066,1.746],[0,0],[0,0],[0,-8],[6.481,-7.089],[0,-14.25],[0,0],[-10.75,-5.5],[-8,-2.25]],"v":[[-37,-60.5],[-65.5,-39],[-55,-24.25],[-60.5,-8.75],[-51.75,6.25],[-62.5,28.25],[-47.5,59.75],[-26,72.75],[-25,80.5],[-24,87.5],[-23.348,95.941],[-23.25,100],[24.25,100],[24.25,47],[35.25,20.75],[49,-9],[30.5,-28.25],[26,-40.25],[4,-43.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"14","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[8.293,0.535],[2,-4.75],[-0.75,-5.75],[5.5,-6.75],[-0.198,-12.289],[0,0],[-1.937,-17.787],[0,0],[-0.835,-3.69],[0,0],[0,0],[2.25,10],[-2.25,2],[-7,10],[2.25,13.5],[24.25,0.25],[3.25,-1.75],[5.25,2.5],[4.25,4.75],[-1.006,6.441]],"o":[[-7.75,-0.5],[-2,4.75],[0.75,5.75],[-5.5,6.75],[0.25,15.5],[0,0],[2.75,25.25],[0,0],[1.188,5.25],[0,0],[0,0],[-2.25,-10],[2.25,-2],[7,-10],[-2.25,-13.5],[-2.5,-2.25],[-0.75,-2.25],[-5.25,-2.5],[-4.25,-4.75],[1.25,-8]],"v":[[-28.5,-70.75],[-42.75,-61],[-47.75,-48.25],[-49,-31],[-66,-5.5],[-54.5,17.25],[-65.5,45.5],[-25.25,81.5],[-27.75,91.5],[-23.25,100],[24,100],[24,79.25],[25.5,60.5],[45.75,41],[51.75,3.75],[19.25,-22],[10.25,-24.5],[4.25,-32.75],[-9.5,-38.75],[-13,-57]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"13","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.5,1.5],[3.25,-8],[-1,-10],[4,-3.25],[-0.75,-11.75],[0,0],[0.75,-4.25],[0,0],[2,-24.75],[-9.75,-9.25],[0,0],[-0.25,-3.25],[0,0],[0,0],[-4.5,8],[-7,3.5],[-6.5,9.25],[5.75,11.25],[10.5,-2],[9.964,1.423],[0.64,4.224],[0,0],[0.365,12.059],[4.56,2.389],[4,4.25],[-2.75,3],[2,7.75],[0.75,6.75]],"o":[[-6.5,-1.5],[-3.25,8],[1,10],[-4,3.25],[0.75,11.75],[0,0],[-0.75,4.25],[0,0],[-1.311,16.228],[9.75,9.25],[0,0],[0.25,3.25],[0,0],[0,0],[4.5,-8],[7,-3.5],[6.5,-9.25],[-5.75,-11.25],[-10.5,2],[-10.5,-1.5],[-1.25,-8.25],[0,0],[-0.25,-8.25],[-5.25,-2.75],[-4,-4.25],[2.75,-3],[-2,-7.75],[-0.75,-6.75]],"v":[[-17,-104],[-33.5,-88.5],[-37.5,-61.25],[-38.75,-44.75],[-54.75,-25.5],[-44.75,-11.75],[-51,-5.25],[-52,2.5],[-68,32.5],[-55.5,72.5],[-33.25,84.75],[-35,93.25],[-30.75,99.992],[24,99.992],[37.75,90.75],[50.75,75.25],[80.25,55],[82.25,18.75],[57.5,2.75],[29,7],[16.75,-2.75],[11,-11.5],[16.25,-24.5],[4.75,-36.5],[-10.25,-42.25],[-11.75,-54],[-7.75,-67.25],[-12.25,-80.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":13,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"12","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7,5.5],[6,-11.75],[-4,-8],[0,0],[3.75,-5],[1.75,-2.75],[-2.5,-5.5],[7.5,-6.75],[-0.25,-8],[2.75,-2.25],[-4.25,-15.5],[-6.25,-4.75],[0,0],[0.251,-4.77],[0,0],[0,0],[-4.5,6.5],[-9,7],[1,15.5],[29.362,-7.34],[1,6.5],[9.25,-1.25],[4.25,2.5],[9,0.75],[4.25,4.5],[-1.75,5.75],[-1.5,6.75],[3,2.75],[-3.25,10.5]],"o":[[-7,-5.5],[-6,11.75],[4,8],[0,0],[-3.75,5],[-1.75,2.75],[2.5,5.5],[-7.5,6.75],[-3.25,1.75],[-2.75,2.25],[4.25,15.5],[6.25,4.75],[0,0],[-0.5,9.5],[0,0],[0,0],[4.5,-6.5],[9,-7],[-1,-15.5],[-8,2],[-1,-6.5],[1.25,-2.5],[2,-3.5],[-9,-0.75],[-4.25,-4.5],[1.75,-5.75],[1.5,-6.75],[-3,-2.75],[3.25,-10.5]],"v":[[-7.25,-151.25],[-26.5,-138],[-33.25,-110.25],[-26.25,-104],[-27.25,-95.25],[-32.75,-85],[-33.5,-43.75],[-46.25,-30.25],[-52.75,-9],[-58,1],[-66.25,39.5],[-49.25,66.5],[-38.25,77.25],[-42.5,88.25],[-37.5,100],[42,100],[55.5,92],[64,78],[88.5,46],[51,5],[35.5,-1],[20.25,-8.25],[19.75,-19.25],[11.5,-38.75],[-9.75,-48.5],[-15.25,-64.75],[-16.5,-72],[-17.75,-93.75],[-22.5,-113.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"11","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[10,-0.25],[2.5,-4.5],[-8.5,-0.25],[-8.75,-1.75],[-0.785,5.89]],"o":[[-10,0.25],[-2.5,4.5],[8.5,0.25],[8.75,1.75],[1,-7.5]],"v":[[48.5,-175],[25.25,-168.75],[32.75,-159.5],[64.25,-159.5],[81.75,-164.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.5,1.5],[1.151,-2.302],[-0.75,-0.75],[-2.268,0.412]],"o":[[-1.5,-1.5],[-1.25,2.5],[0.75,0.75],[2.75,-0.5]],"v":[[-12.25,-157.75],[-17.25,-156.5],[-19.75,-149.75],[-15,-153.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.75,1.75],[1,-6],[-1.25,-6.25],[-3,1.5],[2.5,5],[-2,6.5]],"o":[[-1.75,-1.75],[-1,6],[1.25,6.25],[3,-1.5],[-2.5,-5],[2,-6.5]],"v":[[-29,-135.5],[-35.5,-128.75],[-36.75,-109.75],[-29.25,-96],[-28.25,-105.25],[-30.75,-122]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.25,1.25],[2.75,-2.25],[3.361,-6.385],[-4.821,-8.265],[1,-6],[11.25,-1],[6.251,-9.137],[-7.558,-15.116],[0,0],[1.895,-8.339],[0,0],[0,0],[-11.75,18.5],[9.094,8.968],[0,0],[7.25,6.5],[0,0],[4.5,5.5],[0,0],[3.25,7.5],[17.346,6.462],[-1,7.75],[-3.75,3.75]],"o":[[-2.25,-1.25],[-2.75,2.25],[-2.5,4.75],[7,12],[-1,6],[-11.25,1],[-6.5,9.5],[13.25,26.5],[0,0],[-2.5,11],[0,0],[0,0],[11.75,-18.5],[-18,-17.75],[0,0],[-7.25,-6.5],[0,0],[-4.5,-5.5],[0,0],[-3.25,-7.5],[-12.75,-4.75],[1,-7.75],[3.75,-3.75]],"v":[[-14.5,-93.5],[-21.5,-86],[-34.5,-76],[-33.75,-51.75],[-20,-32.75],[-34,-22],[-60,-7],[-62.5,41.5],[-22.5,66.75],[-47.25,84.75],[-44.25,100],[47.75,100],[84.75,78],[80.5,22.5],[52.25,9.25],[46.5,-9],[24,-14.25],[23.5,-24],[13.25,-28.25],[14,-39],[-10,-54.75],[-21,-72.5],[-13.75,-86.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":11,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"10","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.768,2.285],[1.75,-7.75],[1.5,-7.5],[-1,-2.5],[-6.5,5],[-0.5,7.25]],"o":[[-8.5,-2.5],[-1.75,7.75],[-1.5,7.5],[1,2.5],[9.75,-7.5],[0.38,-5.51]],"v":[[117.75,-97.5],[101.75,-89],[100.75,-68.75],[95,-48.25],[109.75,-48],[126.5,-78.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2,-0.25],[0.5,-6.25],[-3,-0.5],[-0.75,8.5]],"o":[[-2,0.25],[-0.5,6.25],[3,0.5],[0.75,-8.5]],"v":[[143.25,-120.25],[141,-112.5],[142,-102.25],[145.5,-110.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.5,-2.25],[-8.5,-3.5],[-9.5,-11.5],[-4,2.5],[6.255,6.553],[7.75,3.75]],"o":[[-1.5,2.25],[8.5,3.5],[7.816,9.462],[4,-2.5],[-5.25,-5.5],[-8.363,-4.047]],"v":[[88.5,-181],[97,-173],[126.25,-151],[136.75,-141.75],[127.5,-162.75],[106.75,-178.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.5,-0.75],[4.25,-1.75],[5.5,-10.25],[-3.557,-15.795],[1,-9],[9.75,-9],[0.5,-20.25],[-9,-7.25],[0,0],[6.081,-3.105],[7,-10.5],[-4.5,-7],[0,0],[0,0],[-7,18.5],[3.905,9.274],[16.75,7.25],[1.75,3.75],[1.5,14.75],[0,0],[1.5,15.5],[9.75,7.25],[2.5,11.25],[-7.175,10.763],[-7.75,2.25],[-0.75,3.25]],"o":[[-3.5,0.75],[-4.25,1.75],[-5.5,10.25],[6.25,27.75],[-0.668,6.015],[-9.75,9],[-0.5,20.25],[9,7.25],[0,0],[-11.75,6],[-7,10.5],[4.147,6.451],[0,0],[0,0],[7,-18.5],[-4,-9.5],[-16.75,-7.25],[4.5,-4.75],[-1.5,-14.75],[0,0],[-1.5,-15.5],[-9.75,-7.25],[-2.5,-11.25],[5.5,-8.25],[7.75,-2.25],[0.75,-3.25]],"v":[[21.75,-171.25],[14.5,-166.75],[-8.5,-151.25],[-19.75,-106.75],[-7.75,-78.25],[-23,-54.75],[-49,-10.75],[-38.25,21.75],[-14.75,31.25],[-22,42.5],[-55,58.75],[-56.25,89.75],[-44.25,100],[32.5,100],[60.25,79.5],[59.75,42.75],[33,17.25],[18.5,1.5],[29.5,-27.75],[21.5,-42.25],[27.5,-65.25],[9.75,-90.75],[-11,-112.25],[-6,-145.25],[15.75,-162.25],[29.75,-168.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":11,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"9","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.5,-0.75],[4.5,-1],[-10.25,1.25],[-3.25,0.75]],"o":[[-6.5,0.75],[-4.5,1],[10.25,-1.25],[3.25,-0.75]],"v":[[-11.75,16],[-33.75,20.25],[-30,22.5],[-11.5,20]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.25,1.75],[-2,-1.75]],"o":[[0.25,-1.75],[2,1.75]],"v":[[27,7.5],[19,10]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.75,4],[9.5,-5.5],[7,-3.5],[-1.25,-3.25],[-12.75,2],[-6.5,5.75]],"o":[[-1.75,-4],[-9.5,5.5],[-7,3.5],[1.25,3.25],[12.75,-2],[6.5,-5.75]],"v":[[88.25,-26],[71,-25.5],[49.75,-12.5],[27,2],[52.5,2.5],[80,-11.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.25,1.5],[1.5,-4.5],[7,-7.25],[6,-5],[-8.75,3.75],[-9,13]],"o":[[-4.25,-1.5],[-1.5,4.5],[-7,7.25],[-6,5],[8.75,-3.75],[9,-13]],"v":[[141.5,-89],[134,-81.25],[119.5,-56.5],[104.75,-42],[102,-34.5],[133,-64.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[22.062,4.453],[16.75,-6.25],[6.25,-20.75],[-2,-8.5],[-2.25,-10],[4.75,-6.5],[0.25,-19.5],[-5.25,-14.5],[2.25,-5.25],[7.75,-5.5],[-0.133,-10.752],[0,0],[0,0],[1.25,18],[4.75,1.5],[0,0],[2.5,12.75],[6.25,8.75],[-1.25,7.75],[-0.25,19],[0,0],[10,14],[1.5,13.75],[-15.75,8.25],[-12,-3.75],[-9.5,-1.75],[-8.75,-2],[-3,-14.5],[0.25,-10],[-3.75,4.75],[2.75,11],[7.25,13.5]],"o":[[-27.25,-5.5],[-16.75,6.25],[-6.25,20.75],[2,8.5],[2.25,10],[-4.75,6.5],[-0.204,15.875],[5.25,14.5],[-2.25,5.25],[-7.75,5.5],[0.25,20.25],[0,0],[0,0],[-1.25,-18],[-4.75,-1.5],[0,0],[-2.5,-12.75],[-6.25,-8.75],[4.25,-0.75],[0.25,-19],[0,0],[-10,-14],[-1.5,-13.75],[15.75,-8.25],[12,3.75],[9.5,1.75],[8.75,2],[3,14.5],[-0.25,10],[3.75,-4.75],[-2.75,-11],[-7.25,-13.5]],"v":[[98,-181.75],[22,-181.75],[-17,-145.5],[-23,-106.5],[-15.75,-83.5],[-18.5,-64.25],[-29.5,-28],[-21.25,8.25],[-19.75,38.5],[-40,53],[-51.75,75],[-45.25,100],[37.5,100],[44,76.25],[27.5,56.25],[18,53.25],[24,35.75],[9.25,14.25],[-1.5,-13.5],[18.5,-42.75],[12,-65],[9.25,-90],[-10.25,-125.75],[10,-169],[52.5,-177.75],[75,-168.25],[108.25,-168],[131.25,-146.75],[136,-111],[142.75,-97.5],[150.5,-122.75],[139,-149.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":9,"op":10,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"8","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.031,-2.062],[2,1.75]],"o":[[-1.5,3],[-2,-1.75]],"v":[[-144.5,25],[-134.25,26.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.75,0],[6,-0.75],[-0.5,-1.25],[-6.75,0.25],[-6.5,1],[-0.5,2.75]],"o":[[-3.75,0],[-6,0.75],[0.5,1.25],[6.75,-0.25],[6.5,-1],[0.5,-2.75]],"v":[[-69.25,24.75],[-102,27.5],[-114.5,30],[-102.75,31.5],[-69.5,28.75],[-56.75,25.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[8.25,-3],[8.75,-1.75],[5.75,-0.75],[-0.75,-3.25],[-6.75,0.25],[-11.25,4],[2,6]],"o":[[-8.25,3],[-8.75,1.75],[-5.75,0.75],[0.75,3.25],[6.75,-0.25],[11.25,-4],[-1.277,-3.832]],"v":[[13.5,4.25],[-8,13.5],[-31.75,18.75],[-41.5,24.75],[-31.5,27.75],[6.25,23.75],[31.25,7.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[27.5,-4.75],[6.25,-9.75],[1,-18.25],[0.5,-24],[-5,-19.5],[4.75,-12.5],[9.5,-12.25],[0,0],[0,0],[10.25,13],[0,0],[3.25,2],[-1.5,3],[4,10.5],[7.75,8],[-1.5,10],[3.5,4.5],[-0.25,8.5],[-12.75,10.75],[-1.25,9.5],[1,5.5],[-11.75,0.5],[-7.5,5.75],[-11.75,2.25],[-6.5,-17.25],[-3.25,-12.25],[-2,-9.75],[16,-16],[7,-5.75],[-10.08,5.428],[-13.25,14],[-1,23],[25.75,11.5]],"o":[[-36.411,6.289],[-6.25,9.75],[-1.03,18.8],[-0.5,24],[5,19.5],[-4.75,12.5],[-9.864,12.719],[0,0],[0,0],[-10.25,-13],[0,0],[-3.25,-2],[1.5,-3],[-4,-10.5],[-7.75,-8],[1.5,-10],[-3.5,-4.5],[0.25,-8.5],[12.75,-10.75],[1.25,-9.5],[-1,-5.5],[11.75,-0.5],[7.5,-5.75],[11.75,-2.25],[6.5,17.25],[3.25,12.25],[2,9.75],[-16,16],[-7,5.75],[13,-7],[13.25,-14],[1,-23],[-25.75,-11.5]],"v":[[40.25,-184.5],[-18.75,-140.5],[-21,-93.5],[-29.25,-49.75],[-22.5,6],[-19,46],[-45.25,74.5],[-44.75,100],[39.063,99.938],[38.5,73.5],[22.75,62.25],[17,55.75],[14.25,45],[18.75,19.75],[3,-1],[-6.5,-23.5],[-10.25,-43.5],[-19,-56.25],[-4.75,-91],[15,-119.25],[12.25,-139],[23.25,-150.75],[52,-154],[72,-174.25],[109,-159],[114,-124.5],[124,-95],[110.5,-53.25],[72,-19.25],[78.5,-18.5],[122.25,-50],[149.25,-109],[118.25,-172.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":9,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"7","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.25,3],[-0.5,-5.75],[-1,-2.25],[0.75,4.75]],"o":[[-0.25,-3],[0.5,5.75],[1,2.25],[-0.75,-4.75]],"v":[[-215.5,-35.75],[-219,-32.5],[-216.25,-21],[-213,-22.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.75,5.75],[-5.5,-6.25],[-5.325,-1.505],[7.5,1.75]],"o":[[-6.146,-4.56],[5.5,6.25],[11.5,3.25],[-7.5,-1.75]],"v":[[-196.5,7.25],[-199.5,10.5],[-174,22.25],[-166.5,19.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[9.5,-1.5],[-12,-2],[-8,1],[0.5,7.5],[13,-0.5]],"o":[[-9.5,1.5],[10.168,1.695],[8,-1],[-0.5,-7.5],[-13,0.5]],"v":[[-133,25.5],[-126.5,38.5],[-82.5,41],[-66,32],[-95.5,26]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[23.896,8.902],[19,-11.5],[6.5,-13.5],[-1,-17.5],[-4.5,19.5],[-11.5,23.5],[-20.988,0.874],[-7.5,1],[-2.5,-8],[-24.5,8.5],[8.5,-13],[12,-8.5],[7.705,-21.929],[23,-11.5],[15.497,-1.051],[-17,3],[-32.5,8.5],[-27,22],[0.622,51.035]],"o":[[-25.5,-9.5],[-19,11.5],[-6.5,13.5],[1,17.5],[4.5,-19.5],[6.464,-13.209],[12,-0.5],[7.5,-1],[2.5,8],[19,5],[-8.5,13],[-12,8.5],[-6.5,18.5],[-19.682,9.841],[-29.5,2],[8.985,-1.586],[32.5,-8.5],[27,-22],[-0.5,-41]],"v":[[103.5,-179.5],[23,-176],[-15.5,-140],[-29,-88],[-13,-94.5],[0.5,-140.5],[34,-151.5],[59,-163],[67.5,-150],[114,-136],[125.5,-95.5],[98,-74.5],[69.5,-33.5],[25.5,4.5],[-40.5,20.5],[-46,27.5],[12.5,17],[101,-27],[151,-116]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3,-19],[0,-30.5],[-6,-27],[2.395,-17.364],[7,-3.5],[0,0],[0,0],[10,7],[4.5,2.5],[-3.5,8.5],[6.5,10],[1,13],[2,18.5],[1.537,18.443],[-3,12]],"o":[[-3,19],[0,26.879],[6,27],[-2,14.5],[-11.628,5.814],[0,0],[0,0],[-10,-7],[-4.5,-2.5],[3.5,-8.5],[-6.5,-10],[-1,-13],[-2,-18.5],[-1.5,-18],[3,-12]],"v":[[-26.5,-108],[-31.5,-45.5],[-22.5,9],[-19.5,53],[-35,80],[-43.5,100],[38,100],[40,85],[16.5,80],[12,65],[7,36.5],[-3.5,10.5],[1,-26],[-11.5,-69],[-12,-111]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"6","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.5,-1.5],[6,-3],[-10.867,5.67],[-3.5,0.25]],"o":[[-6.5,1.5],[-6,3],[5.75,-3],[4.598,-0.328]],"v":[[-166.5,-102.75],[-187.5,-95.25],[-183.25,-92],[-165.75,-99.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.287,4.901],[6,-10],[-0.5,-7.5],[0,4],[-2.5,2],[-1,3.5]],"o":[[-1.75,-3.75],[-5.505,9.176],[0.5,7.5],[0,-4],[2.5,-2],[1,-3.5]],"v":[[-205.75,-85.75],[-218.5,-71.5],[-225,-48.5],[-217,-53],[-214,-63],[-209.5,-74.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5,-1.5],[-6,-9.5],[-3.5,-0.5],[3,8]],"o":[[-5,1.5],[6,9.5],[3.5,0.5],[-3,-8]],"v":[[-243,-60],[-248,-40],[-234,-25.5],[-231.5,-37.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[18,3],[10.481,-11.463],[24.5,-11],[34.5,4],[14.663,7.874],[5.5,-1.5],[-11,-11],[-19,-5],[-27.5,3.5],[-28.5,14],[-14,9.5],[22.896,-15.741]],"o":[[-18,-3],[-16,17.5],[-12.12,5.442],[-34.5,-4],[-27,-14.5],[-5.5,1.5],[11,11],[19,5],[27.5,-3.5],[28.5,-14],[14,-9.5],[-8,5.5]],"v":[[26.5,-28],[-23,-20.5],[-63.5,19],[-127.5,26.5],[-182,13.5],[-207.5,-14],[-204,9],[-159,29.5],[-62.5,37],[5.5,12.5],[96,-25.5],[71.5,-28.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[26.5,-24.5],[9.5,-15],[0.5,-25],[0.5,-12.5],[2,-10.5],[-11.5,5],[4,21],[-0.5,18],[-13.5,18],[-2.5,10.5],[-12,0.5],[-8,2],[-12.5,-6],[-1,-16],[3,-9],[8.5,-5.5],[-18,7.5],[-9.5,16],[17.5,27]],"o":[[-30.5,12.5],[-9.5,15],[-0.5,25],[-0.5,12.5],[-2,10.5],[8.125,-3.533],[-4,-21],[0.5,-18],[13.5,-18],[2.5,-10.5],[12,-0.5],[8,-2],[-4.5,5],[1,16],[-3,9],[-8.5,5.5],[18,-7.5],[9.5,-16],[-17.5,-27]],"v":[[59,-140.5],[9,-109.5],[-19,-49],[-17,6.5],[-18.5,50],[-9.5,71],[-3,45.5],[-8,5.5],[5.5,-55.5],[20.5,-87.5],[39,-111.5],[69,-115.5],[105.5,-121.5],[92,-94],[95.5,-60],[74.5,-30.5],[88.5,-23],[138,-60.5],[146.5,-131]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":7,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"5","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4,0.75],[0,-1.5],[-4.5,-1.75],[-0.75,1.25]],"o":[[-4,-0.75],[0,1.5],[2.947,1.146],[1.099,-1.832]],"v":[[-75.75,-83],[-87.25,-83.75],[-75.25,-79.75],[-66,-78]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[14.958,1.116],[-1,-5.5],[0,0],[-8,1],[-7,-0.25],[0,2]],"o":[[-16.75,-1.25],[1,5.5],[0,0],[8,-1],[7,0.25],[0,-3.162]],"v":[[-132.5,-97.75],[-170.5,-92.5],[-151.25,-90.25],[-144,-89],[-116,-90.75],[-97.5,-93]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-6,4.5],[11.5,-12.5],[-7.5,1.5],[-0.5,6]],"o":[[6,-4.5],[-7.425,8.07],[7.5,-1.5],[0.5,-6]],"v":[[-221.5,-103.5],[-245.5,-98.5],[-239.5,-77],[-230.5,-92]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[36.5,1.5],[15.34,-11.997],[-6,0],[-0.5,6],[-8.5,4.5],[-15.179,-1.897],[-7.5,3],[-2.5,-6],[10,-4],[4,-15],[3,-7],[12.5,-3.5],[20.5,2.5],[11.5,-4],[9.052,-8.621],[21,-2],[14.5,12.5],[9.5,9],[0,8.5],[-18.047,11.643],[0,2.5],[14.5,-7],[-0.5,-20.5],[-18,-15.5],[-103.5,30],[-21.5,33]],"o":[[-36.5,-1.5],[-39,30.5],[6,0],[0.5,-6],[8.5,-4.5],[12,1.5],[7.5,-3],[2.5,6],[-10,4],[-3.516,13.187],[-3,7],[-12.5,3.5],[-20.5,-2.5],[-11.5,4],[-10.5,10],[-21,2],[-14.5,-12.5],[-9.5,-9],[0,-8.5],[15.5,-10],[0,-2.5],[-14.5,7],[0.5,20.5],[18,15.5],[103.5,-30],[21.5,-33]],"v":[[113,-136],[20,-110.5],[7.5,-70.5],[15.5,-79],[29,-96],[59.5,-100],[83,-110],[101,-105.5],[88,-90.5],[66.5,-68],[63,-44.5],[37.5,-28.5],[-2.5,-26.5],[-51,-27],[-82.5,-3],[-121,12],[-178,1.5],[-200,-28],[-223.5,-44.5],[-203,-83],[-180.5,-94],[-203.5,-89.5],[-234.5,-48.5],[-215,-3.5],[-48.5,9.5],[152,-88]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":6,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"4","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.25,-2],[-6.75,-3],[-2.75,-2],[5.5,4.25]],"o":[[-1.25,2],[6.75,3],[2.75,2],[-5.5,-4.25]],"v":[[-32,-59.25],[-27.25,-53.5],[-14.5,-46.5],[-12.5,-49.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.5,-3.5],[-7.5,-2],[4.029,0.288],[-5,-2],[-5.5,-3.25],[-2.5,3],[0,0],[15.5,6]],"o":[[-0.5,3.5],[7.5,2],[-3.5,-0.25],[5,2],[5.5,3.25],[2.5,-3],[0,0],[-15.5,-6]],"v":[[-85.5,-92],[-71.5,-86],[-63.5,-82.5],[-63.75,-79],[-43.5,-71],[-25,-64.75],[-25.5,-72.5],[-52,-86]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[11,-1],[1.5,-8],[-11.5,-3],[-1,5]],"o":[[-11,1],[-1.5,8],[11.5,3],[1,-5]],"v":[[-182,-119],[-202.5,-117.5],[-194,-103],[-172.5,-109.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[27,-1],[-4.5,-8],[-11.5,1],[-5,-9.5],[12,-5.5],[-0.904,-4.52],[-4,1.5],[16.5,-3],[7,-6],[10,-3],[22,3],[14.5,-2.5],[10,-4],[9,11],[-3.662,16.847],[-14,3],[-13.5,4.5],[-7.5,3.5],[-9.5,-1.5],[20,4.5],[15.5,-3],[10.5,-18],[-12,-20.5],[-48,3],[-39,14],[-25.5,15.5],[3.793,16.435]],"o":[[-27,1],[4.5,8],[11.5,-1],[5,9.5],[-12,5.5],[1,5],[4,-1.5],[-16.5,3],[-7,6],[-10,3],[-22,-3],[-14.5,2.5],[-10,4],[-9,-11],[2.5,-11.5],[14,-3],[13.5,-4.5],[7.5,-3.5],[9.5,1.5],[-20,-4.5],[-15.5,3],[-10.5,18],[12,20.5],[48,-3],[39,-14],[25.5,-15.5],[-3,-13]],"v":[[68,-112],[2,-92.5],[28,-88],[80,-91.5],[64,-74.5],[36.5,-59],[55.5,-60],[36,-51.5],[8,-36.5],[-18,-18],[-70,-15],[-114.5,-21],[-151.5,-5],[-186.5,-10],[-197.5,-49.5],[-177.5,-78.5],[-139.5,-84],[-120,-98.5],[-92,-100],[-92,-106],[-137,-106.5],[-195,-76.5],[-200.5,-20],[-121,13.5],[-8,-12],[100,-59.5],[135.5,-100]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":5,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"3","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2,-1.25],[-1.75,-3],[-2.75,0.25],[0.5,3.75]],"o":[[-2,1.25],[1.75,3],[2.75,-0.25],[-0.5,-3.75]],"v":[[17,-23],[18.25,-16.75],[23,-8.25],[23.5,-16.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.5,-0.5],[-6.5,-13.5],[-4,1.25]],"o":[[-7.5,0.5],[6.5,13.5],[4,-1.25]],"v":[[14.25,-55],[16.75,-39.25],[32.75,-16.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.75,1.5],[4.25,-1.25],[5.5,-1.25],[6.75,-0.25],[-0.75,-3.25],[-18.5,4],[-8.5,1.25]],"o":[[-0.75,-1.5],[-4.25,1.25],[-5.5,1.25],[-6.75,0.25],[0.75,3.25],[18.5,-4],[8.5,-1.25]],"v":[[28.25,-57.75],[6.25,-55.5],[-7.75,-52],[-30.75,-46.25],[-49.5,-39.25],[-20.25,-39.5],[21,-52.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[10.5,-0.5],[-1.25,-7],[-8.75,1.5],[0.75,7],[-3.5,4]],"o":[[-10.5,0.5],[1.25,7],[8.75,-1.5],[-0.75,-7],[3.5,-4]],"v":[[-127.5,-110.75],[-144.75,-98],[-127.5,-82.25],[-116,-92.25],[-120.75,-105]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[10,2],[-1.5,-5.25],[-7.5,-3.75],[-6.5,-5.75],[-8.25,4],[7,2.25],[4,4.25],[7,2.5]],"o":[[-10,-2],[1.5,5.25],[7.5,3.75],[6.5,5.75],[8.25,-4],[-7,-2.25],[-4,-4.25],[-7,-2.5]],"v":[[-87.5,-92],[-98,-85.5],[-80.5,-75],[-68.25,-61.25],[-39.75,-61],[-39.75,-72],[-62.25,-80.75],[-76,-86.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[19.569,3.09],[29,-6],[13.75,-12.25],[7.25,-15],[-19.5,0],[-53.75,15],[-24,8],[2,1.75],[23.5,-2.5],[13.5,-2.75],[13,-7],[29,-8.25],[16.25,10.75],[-12.75,6],[-9.25,1.75],[-3,1],[-10.25,0.5],[-10.75,-1.5]],"o":[[-33.25,-5.25],[-29,6],[-13.75,12.25],[-7.25,15],[21.024,0],[53.75,-15],[24,-8],[-2,-1.75],[-23.5,2.5],[-13.5,2.75],[-13,7],[-29,8.25],[-16.25,-10.75],[12.75,-6],[9.25,-1.75],[3,-1],[10.25,-0.5],[10.75,1.5]],"v":[[0.75,-73],[-88.75,-69.75],[-146.5,-36.5],[-168.5,-4],[-152.75,14.25],[-42.5,-9],[104,-55.5],[129,-67.25],[96.75,-64],[12.5,-46],[-36,-27.25],[-74.25,-11],[-143,-12.5],[-121.5,-47.75],[-89,-57],[-79.75,-63],[-29.25,-68.75],[4.5,-65.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":4,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"2","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[14.5,-2.75],[11.25,-6.25],[2.5,-8.25],[-19.75,-9.5],[-14.5,0.75],[0.5,3],[27.25,-1],[5.75,2],[2.75,3],[0,3.25],[-6.75,5.5],[-10.25,3.25],[-16.75,-2.25],[-3.26,0],[11.5,3.75]],"o":[[-14.5,2.75],[-11.25,6.25],[-2.5,8.25],[19.75,9.5],[14.5,-0.75],[-0.5,-3],[-27.25,1],[-5.75,-2],[-2.75,-3],[0,-3.25],[6.75,-5.5],[10.25,-3.25],[16.75,2.25],[8,0],[-11.5,-3.75]],"v":[[-99,-67.75],[-141.5,-48],[-162.5,-25.5],[-143,-7],[-85.25,-3.5],[-53,-13.5],[-89.5,-14],[-130.25,-17.25],[-139.75,-27.5],[-145,-33],[-134.25,-46.25],[-101.75,-63],[-60.25,-65],[-26.25,-52],[-53,-67.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5,0],[-0.75,-1.75],[-8.75,0]],"o":[[-5,0],[0.75,1.75],[8.75,0]],"v":[[-113.5,-19.75],[-126,-19.25],[-105.5,-16.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":2,"op":3,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"1","parent":24,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6,-3.5],[-6.75,-6],[3,9]],"o":[[-6,3.5],[6.75,6],[-3,-9]],"v":[[-41,-62.5],[-31.5,-48.25],[-12.25,-41.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":2,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":1,"nm":"ResizerTemp","parent":26,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":40,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":1,"nm":"White Solid 22","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":40,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":40,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/J.json b/example/shared/src/commonMain/composeResources/files/mobilo/J.json new file mode 100644 index 00000000..123851c5 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/J.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 14","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[218,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[23.526,-1.312],[-4.568,-14.082],[-13.373,16.557]],"o":[[-23.526,1.312],[8.936,27.546],[13.373,-16.557]],"v":[[-37.29,51.813],[-29.551,121.006],[-22.65,76.568]],"c":true}],"e":[{"i":[[58.936,-80.342],[-21.987,27.546],[-13.373,16.557]],"o":[[-3.239,4.415],[30.045,-37.641],[13.373,-16.557]],"v":[[-20.797,24.267],[-34.705,60.011],[77.334,-7.054]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[58.936,-80.342],[-21.987,27.546],[-13.373,16.557]],"o":[[-3.239,4.415],[30.045,-37.641],[13.373,-16.557]],"v":[[-20.797,24.267],[-34.705,60.011],[77.334,-7.054]],"c":true}],"e":[{"i":[[29.71,10.986],[-49.609,-22.594],[-14.973,-6.719]],"o":[[-29.71,-10.986],[15.12,6.886],[36.558,16.405]],"v":[[128.664,-105.101],[101.356,-83.622],[107.742,-52.308]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[29.71,10.986],[-49.609,-22.594],[-14.973,-6.719]],"o":[[-29.71,-10.986],[15.12,6.886],[36.558,16.405]],"v":[[128.664,-105.101],[101.356,-83.622],[107.742,-52.308]],"c":true}],"e":[{"i":[[-14.098,28.202],[18.728,-59.519],[-11.312,-15.416]],"o":[[14.098,-28.202],[-0.856,23.119],[11.312,15.416]],"v":[[268.333,-179.377],[190.518,-226.762],[226.796,-194.465]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-14.098,28.202],[18.728,-59.519],[-11.312,-15.416]],"o":[[14.098,-28.202],[-0.856,23.119],[11.312,15.416]],"v":[[268.333,-179.377],[190.518,-226.762],[226.796,-194.465]],"c":true}],"e":[{"i":[[-23.525,18.036],[6.531,-38.86],[-16.347,-33.281]],"o":[[6.367,-25.25],[6.531,31.973],[9.66,19.666]],"v":[[268.849,-221.679],[207.869,-257.259],[245.178,-239.227]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-23.525,18.036],[6.531,-38.86],[-16.347,-33.281]],"o":[[6.367,-25.25],[6.531,31.973],[9.66,19.666]],"v":[[268.849,-221.679],[207.869,-257.259],[245.178,-239.227]],"c":true}],"e":[{"i":[[7.549,11.477],[14.949,-10.33],[-8.148,-7.18]],"o":[[-7.548,-11.477],[-12.627,8.726],[8.563,7.546]],"v":[[274.518,-256.112],[237.59,-266.113],[253.252,-246.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[7.549,11.477],[14.949,-10.33],[-8.148,-7.18]],"o":[[-7.548,-11.477],[-12.627,8.726],[8.563,7.546]],"v":[[274.518,-256.112],[237.59,-266.113],[253.252,-246.606]],"c":true}],"e":[{"i":[[5.851,0.328],[-3.294,-5.456],[-1.573,4.103]],"o":[[-4.735,-0.265],[3.267,5.411],[1.954,-5.097]],"v":[[255.449,-268.901],[254.941,-257.259],[265.45,-259.887]],"c":true}]},{"t":18}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[97.015,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":19,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 13","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[218,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[10.396,-4.8],[-7.556,0],[-21.673,8.038]],"o":[[-4.972,2.295],[5.213,0],[6.316,-2.343]],"v":[[-78.521,62.634],[-80.059,89.525],[-61.819,70.665]],"c":true}],"e":[{"i":[[-2.91,18.528],[-41.572,-31.481],[-16.355,35.755]],"o":[[2.94,-18.72],[8.936,18.692],[6.673,-14.589]],"v":[[-60.997,53.288],[-61.505,114.119],[-43.781,72.632]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-2.91,18.528],[-41.572,-31.481],[-16.355,35.755]],"o":[[2.94,-18.72],[8.936,18.692],[6.673,-14.589]],"v":[[-60.997,53.288],[-61.505,114.119],[-43.781,72.632]],"c":true}],"e":[{"i":[[-79.036,61.65],[7.39,-93.952],[-12.233,-7.819]],"o":[[79.036,-61.65],[-10.133,62.47],[7.189,4.595]],"v":[[-6.882,10.494],[-81.605,-3.443],[-16.466,139.038]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-79.036,61.65],[7.39,-93.952],[-12.233,-7.819]],"o":[[79.036,-61.65],[-10.133,62.47],[7.189,4.595]],"v":[[-6.882,10.494],[-81.605,-3.443],[-16.466,139.038]],"c":true}],"e":[{"i":[[-36.926,57.387],[27.146,-35.908],[-32.839,-125.757]],"o":[[6.367,-25.25],[-15.115,30.005],[5.536,21.199]],"v":[[2.91,-95.755],[-51.885,-115.595],[-41.376,61.811]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-36.926,57.387],[27.146,-35.908],[-32.839,-125.757]],"o":[[6.367,-25.25],[-15.115,30.005],[5.536,21.199]],"v":[[2.91,-95.755],[-51.885,-115.595],[-41.376,61.811]],"c":true}],"e":[{"i":[[7.549,11.477],[14.949,-10.33],[-32.028,37.284]],"o":[[-7.548,-11.478],[-12.627,8.726],[18.871,-21.967]],"v":[[-32.652,-193.15],[-69.58,-203.151],[-76.594,-138.389]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7.549,11.477],[14.949,-10.33],[-32.028,37.284]],"o":[[-7.548,-11.478],[-12.627,8.726],[18.871,-21.967]],"v":[[-32.652,-193.15],[-69.58,-203.151],[-76.594,-138.389]],"c":true}],"e":[{"i":[[5.851,0.328],[-3.294,-5.456],[-1.573,4.103]],"o":[[-4.735,-0.265],[3.267,5.411],[1.954,-5.097]],"v":[[-76.459,-186.263],[-76.967,-174.622],[-66.458,-177.249]],"c":true}]},{"t":15}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[97.015,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":11,"op":16,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 12","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[218,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[3.426,-3.279],[-7.041,-2.952],[-0.489,6.719]],"o":[[-3.426,3.279],[4.808,2.015],[0.489,-6.719]],"v":[[-159.951,31.153],[-158.397,45.254],[-146.343,38.2]],"c":true}],"e":[{"i":[[-1.879,10.658],[29.551,-36.4],[-7.704,-4.103]],"o":[[2.479,-14.059],[31.613,-15.741],[7.704,4.103]],"v":[[-66.151,46.402],[-136.751,47.222],[-79.858,56.892]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-1.879,10.658],[29.551,-36.4],[-7.704,-4.103]],"o":[[2.479,-14.059],[31.613,-15.741],[7.704,4.103]],"v":[[-66.151,46.402],[-136.751,47.222],[-79.858,56.892]],"c":true}],"e":[{"i":[[40.898,28.858],[22.503,-34.924],[-10.334,-28.854]],"o":[[-3.875,-2.734],[-22.503,34.924],[13.601,37.976]],"v":[[-7.913,-84.933],[-77.482,-59.519],[-20.589,-55.751]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[40.898,28.858],[22.503,-34.924],[-10.334,-28.854]],"o":[[-3.875,-2.734],[-22.503,34.924],[13.601,37.976]],"v":[[-7.913,-84.933],[-77.482,-59.519],[-20.589,-55.751]],"c":true}],"e":[{"i":[[15.644,6.231],[-13.054,-24.103],[-27.995,-20.53]],"o":[[-37.956,-18.364],[16.839,27.054],[17.668,12.957]],"v":[[-86.767,-111.496],[-161.146,-92.967],[-98.068,-88.708]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[15.644,6.231],[-13.054,-24.103],[-27.995,-20.53]],"o":[[-37.956,-18.364],[16.839,27.054],[17.668,12.957]],"v":[[-86.767,-111.496],[-161.146,-92.967],[-98.068,-88.708]],"c":true}],"e":[{"i":[[7.549,11.477],[5.667,-14.265],[-7.532,11.146]],"o":[[-7.549,-11.478],[-5.667,14.265],[7.532,-11.146]],"v":[[-142.944,-144.944],[-175.749,-151.011],[-126.071,-133.47]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[7.549,11.477],[5.667,-14.265],[-7.532,11.146]],"o":[[-7.549,-11.478],[-5.667,14.265],[7.532,-11.146]],"v":[[-142.944,-144.944],[-175.749,-151.011],[-126.071,-133.47]],"c":true}],"e":[{"i":[[5.851,0.328],[-3.294,-5.456],[-1.573,4.103]],"o":[[-4.735,-0.265],[3.267,5.411],[1.954,-5.097]],"v":[[-181.598,-202.987],[-182.105,-191.346],[-171.597,-193.973]],"c":true}]},{"t":14}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[97.015,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":9,"op":15,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 10","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[218,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[3.426,-3.279],[-7.041,-2.952],[-0.489,6.719]],"o":[[-3.426,3.279],[4.808,2.015],[0.489,-6.719]],"v":[[-44.505,102.969],[-42.951,117.07],[-30.896,110.016]],"c":true}],"e":[{"i":[[29.71,0.164],[11.679,-38.367],[10.063,2.061]],"o":[[-29.71,-0.164],[36.767,-46.238],[-8.788,-1.8]],"v":[[109.079,52.305],[42.603,125.925],[117.019,69.681]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[29.71,0.164],[11.679,-38.367],[10.063,2.061]],"o":[[-29.71,-0.164],[36.767,-46.238],[-8.788,-1.8]],"v":[[109.079,52.305],[42.603,125.925],[117.019,69.681]],"c":true}],"e":[{"i":[[58.421,-26.234],[32.128,-58.535],[-10.171,-1.433]],"o":[[-4.326,1.943],[21.821,-6.395],[53.574,7.546]],"v":[[187.933,29.186],[133.826,91],[193.811,63.286]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[58.421,-26.234],[32.128,-58.535],[-10.171,-1.433]],"o":[[-4.326,1.943],[21.821,-6.395],[53.574,7.546]],"v":[[187.933,29.186],[133.826,91],[193.811,63.286]],"c":true}],"e":[{"i":[[40.898,-17.38],[-2.746,-24.103],[-14.576,-3.119]],"o":[[-4.462,1.207],[3.438,15.249],[14.576,3.119]],"v":[[212.156,43.942],[190.346,51.649],[219.409,69.681]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[40.898,-17.38],[-2.746,-24.103],[-14.576,-3.119]],"o":[[-4.462,1.207],[3.438,15.249],[14.576,3.119]],"v":[[212.156,43.942],[190.346,51.649],[219.409,69.681]],"c":true}],"e":[{"i":[[23.374,-8.526],[-3.02,-14.779],[-8.074,0.492]],"o":[[-4.598,0.471],[3.353,10.33],[8.265,-0.989]],"v":[[236.379,48.861],[225.22,68.373],[245.006,76.076]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[23.374,-8.526],[-3.02,-14.779],[-8.074,0.492]],"o":[[-4.598,0.471],[3.353,10.33],[8.265,-0.989]],"v":[[236.379,48.861],[225.22,68.373],[245.006,76.076]],"c":true}],"e":[{"i":[[5.851,0.328],[-3.294,-5.456],[-1.573,4.103]],"o":[[-4.735,-0.265],[3.267,5.411],[1.954,-5.097]],"v":[[260.602,73.456],[260.095,85.098],[270.603,82.47]],"c":true}]},{"t":18}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[97.015,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":11,"op":19,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 8","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[3.426,-3.279],[-7.041,-2.952],[-0.489,6.719]],"o":[[-3.426,3.279],[4.808,2.015],[0.489,-6.719]],"v":[[78.156,115.759],[79.71,129.86],[91.765,122.805]],"c":true}],"e":[{"i":[[10.49,-9.018],[19.926,-19.676],[-4.612,9.178]],"o":[[-3.596,3.091],[52.744,-48.697],[4.612,-9.178]],"v":[[146.187,56.24],[79.71,129.86],[159.28,62.795]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[10.49,-9.018],[19.926,-19.676],[-4.612,9.178]],"o":[[-3.596,3.091],[52.744,-48.697],[4.612,-9.178]],"v":[[146.187,56.24],[79.71,129.86],[159.28,62.795]],"c":true}],"e":[{"i":[[10.49,-9.018],[19.926,-19.676],[-4.612,9.178]],"o":[[-3.596,3.091],[52.744,-48.697],[4.612,-9.178]],"v":[[171.441,41.975],[116.303,93.952],[184.534,48.53]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[10.49,-9.018],[19.926,-19.676],[-4.612,9.178]],"o":[[-3.596,3.091],[52.744,-48.697],[4.612,-9.178]],"v":[[171.441,41.975],[116.303,93.952],[184.534,48.53]],"c":true}],"e":[{"i":[[5.851,0.328],[-3.294,-5.456],[-1.573,4.103]],"o":[[-4.735,-0.265],[3.267,5.411],[1.954,-5.097]],"v":[[220.402,51.813],[219.895,63.454],[230.404,60.827]],"c":true}]},{"t":7}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[97.015,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":8,"st":-7,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 6","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[17.157,-10.353],[-8.446,19.233],[6.235,7.546]],"o":[[-36.41,21.971],[15.121,-34.433],[-8.301,-10.046]],"v":[[-210.974,45.91],[-211.997,92.476],[-172.112,47.546]],"c":true}],"e":[{"i":[[9.974,-17.38],[-14.373,2.995],[6.235,7.546]],"o":[[-10.693,18.633],[14.167,-2.952],[-8.301,-10.046]],"v":[[-122.328,165.932],[-50.167,194.789],[-42.235,174.454]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[9.974,-17.38],[-14.373,2.995],[6.235,7.546]],"o":[[-10.693,18.633],[14.167,-2.952],[-8.301,-10.046]],"v":[[-122.328,165.932],[-50.167,194.789],[-42.235,174.454]],"c":true}],"e":[{"i":[[19.243,-32.332],[-14.373,2.995],[-5.082,8.366]],"o":[[-5.261,8.84],[14.167,-2.952],[9.758,-16.065]],"v":[[114.241,16.396],[83.326,100.346],[145.888,24.919]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[19.243,-32.332],[-14.373,2.995],[-5.082,8.366]],"o":[[-5.261,8.84],[14.167,-2.952],[9.758,-16.065]],"v":[[114.241,16.396],[83.326,100.346],[145.888,24.919]],"c":true}],"e":[{"i":[[-21.776,-37.541],[-13.414,-5.968],[0.574,9.772]],"o":[[37.282,64.274],[17.69,7.87],[-1.58,-26.886]],"v":[[153.41,-119.366],[158.572,22.627],[172.688,-127.568]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-21.776,-37.541],[-13.414,-5.968],[0.574,9.772]],"o":[[37.282,64.274],[17.69,7.87],[-1.58,-26.886]],"v":[[153.41,-119.366],[158.572,22.627],[172.688,-127.568]],"c":true}],"e":[{"i":[[-38.888,-19.267],[-29.726,2.951],[3.062,9.297]],"o":[[40.374,20.004],[19.267,-1.913],[-9.827,-29.838]],"v":[[136.918,-169.539],[158.572,-124.94],[146.919,-174.789]],"c":true}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[97.015,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":22,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 5","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[32.667,-44.926],[-40.893,12.156],[-37.765,34.108]],"o":[[-26.08,35.867],[23.167,-6.887],[65.813,-59.44]],"v":[[-182.667,79.359],[-188.167,177.081],[-141.235,95.751]],"c":true}],"e":[{"i":[[32.667,-44.926],[-36.167,22.627],[-10.765,25.254]],"o":[[-26.08,35.867],[36.167,-22.627],[17.502,-41.058]],"v":[[-1.667,162.98],[42.833,215.449],[39.765,179.373]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[32.667,-44.926],[-36.167,22.627],[-10.765,25.254]],"o":[[-26.08,35.867],[36.167,-22.627],[17.502,-41.058]],"v":[[-1.667,162.98],[42.833,215.449],[39.765,179.373]],"c":true}],"e":[{"i":[[32.667,-22.299],[-36.167,22.627],[33.765,-29.189]],"o":[[-36.627,25.002],[36.167,-22.627],[-33.765,29.189]],"v":[[127.333,-75.096],[171.833,-22.627],[168.765,-58.703]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[32.667,-22.299],[-36.167,22.627],[33.765,-29.189]],"o":[[-36.627,25.002],[36.167,-22.627],[-33.765,29.189]],"v":[[127.333,-75.096],[171.833,-22.627],[168.765,-58.703]],"c":true}],"e":[{"i":[[12.625,-13.516],[-42.662,0],[5.093,15.076]],"o":[[-11.333,12.133],[19.167,0],[-3.765,-11.146]],"v":[[121.333,-194.133],[134.833,-164.292],[152.765,-186.595]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[12.625,-13.516],[-42.662,0],[5.093,15.076]],"o":[[-11.333,12.133],[19.167,0],[-3.765,-11.146]],"v":[[121.333,-194.133],[134.833,-164.292],[152.765,-186.595]],"c":true}],"e":[{"i":[[7.667,-9.51],[-15.054,-1.456],[5.093,15.076]],"o":[[-8.887,11.024],[10.167,0.984],[-3.765,-11.146]],"v":[[50.333,-253.16],[47.833,-233.157],[70.765,-250.541]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[7.667,-9.51],[-15.054,-1.456],[5.093,15.076]],"o":[[-8.887,11.024],[10.167,0.984],[-3.765,-11.146]],"v":[[50.333,-253.16],[47.833,-233.157],[70.765,-250.541]],"c":true}],"e":[{"i":[[9.407,-7.793],[-7.833,0],[0.475,5.087]],"o":[[-6.333,5.247],[10.214,0],[-0.765,-8.195]],"v":[[-6.667,-222.663],[-3.167,-209.546],[9.765,-218.076]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[9.407,-7.793],[-7.833,0],[0.475,5.087]],"o":[[-6.333,5.247],[10.214,0],[-0.765,-8.195]],"v":[[-6.667,-222.663],[-3.167,-209.546],[9.765,-218.076]],"c":true}],"e":[{"i":[[2.667,-2.623],[-3.718,0.934],[1.629,4.843]],"o":[[-2.709,2.665],[3.917,-0.984],[-1.515,-4.505]],"v":[[-10.667,-204.955],[-7.667,-196.019],[-3.485,-202.335]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[2.667,-2.623],[-3.718,0.934],[1.629,4.843]],"o":[[-2.709,2.665],[3.917,-0.984],[-1.515,-4.505]],"v":[[-10.667,-204.955],[-7.667,-196.019],[-3.485,-202.335]],"c":true}],"e":[{"i":[[1.417,-3.853],[-3.833,-0.246],[1.629,4.843]],"o":[[-1.311,3.567],[4.03,0.259],[-1.515,-4.505]],"v":[[-9.417,-186.263],[-7.667,-179.295],[-2.485,-190.038]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[1.417,-3.853],[-3.833,-0.246],[1.629,4.843]],"o":[[-1.311,3.567],[4.03,0.259],[-1.515,-4.505]],"v":[[-9.417,-186.263],[-7.667,-179.295],[-2.485,-190.038]],"c":true}],"e":[{"i":[[2.667,-2.623],[-3.718,0.934],[-3.723,3.499]],"o":[[-2.709,2.665],[3.917,-0.984],[3.485,-3.276]],"v":[[-6.417,-152.814],[-9.167,-141.911],[-1.485,-151.178]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[2.667,-2.623],[-3.718,0.934],[-3.723,3.499]],"o":[[-2.709,2.665],[3.917,-0.984],[3.485,-3.276]],"v":[[-6.417,-152.814],[-9.167,-141.911],[-1.485,-151.178]],"c":true}],"e":[{"i":[[5.583,-6.477],[-2.167,3.197],[-2.985,0.324]],"o":[[-5.583,6.477],[2.167,-3.197],[2.985,-0.324]],"v":[[-4.417,-129.941],[-3.667,-124.203],[3.765,-127.814]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[5.583,-6.477],[-2.167,3.197],[-2.985,0.324]],"o":[[-5.583,6.477],[2.167,-3.197],[2.985,-0.324]],"v":[[-4.417,-129.941],[-3.667,-124.203],[3.765,-127.814]],"c":true}],"e":[{"i":[[2.667,-2.623],[0.333,-4.181],[1.629,4.843]],"o":[[-2.709,2.665],[-0.333,4.181],[-1.515,-4.505]],"v":[[-44.667,-141.993],[-41.667,-133.057],[-37.485,-139.373]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[2.667,-2.623],[0.333,-4.181],[1.629,4.843]],"o":[[-2.709,2.665],[-0.333,4.181],[-1.515,-4.505]],"v":[[-44.667,-141.993],[-41.667,-133.057],[-37.485,-139.373]],"c":true}],"e":[{"i":[[2.667,-2.623],[-1.692,-1.623],[-8.485,-1.151]],"o":[[-2.709,2.665],[1.792,1.598],[8.485,1.151]],"v":[[-51.667,-105.593],[-48.667,-96.657],[-44.485,-102.973]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[2.667,-2.623],[-1.692,-1.623],[-8.485,-1.151]],"o":[[-2.709,2.665],[1.792,1.598],[8.485,1.151]],"v":[[-51.667,-105.593],[-48.667,-96.657],[-44.485,-102.973]],"c":true}],"e":[{"i":[[2.667,-2.623],[-3.718,0.934],[6.015,-5.332]],"o":[[-2.709,2.665],[3.917,-0.984],[-6.015,5.332]],"v":[[-59.167,-64.766],[-55.667,-60.257],[-53.485,-64.605]],"c":true}]},{"t":27}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":28,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 4","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[2.56,-5.758],[-16.333,-11.314],[4.722,0.98]],"o":[[-5.833,13.117],[-3.808,-8.609],[-4.994,-1.036]],"v":[[-40.667,28.202],[-9.667,39.843],[-26.506,26.122]],"c":true}],"e":[{"i":[[4.967,-5.898],[-12.833,-17.708],[2.602,4.061]],"o":[[-13.405,15.916],[-3.808,-8.609],[-2.75,-4.292]],"v":[[-17.667,28.202],[1.833,47.222],[-7.006,27.106]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[4.967,-5.898],[-12.833,-17.708],[2.602,4.061]],"o":[[-13.405,15.916],[-3.808,-8.609],[-2.75,-4.292]],"v":[[-17.667,28.202],[1.833,47.222],[-7.006,27.106]],"c":true}],"e":[{"i":[[10.321,-10.862],[-20.833,-28.53],[7.056,7.195]],"o":[[-14.333,15.085],[-0.891,-7.652],[-7.458,-7.606]],"v":[[-7.667,27.218],[32.833,53.124],[20.037,26.947]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[10.321,-10.862],[-20.833,-28.53],[7.056,7.195]],"o":[[-14.333,15.085],[-0.891,-7.652],[-7.458,-7.606]],"v":[[-7.667,27.218],[32.833,53.124],[20.037,26.947]],"c":true}],"e":[{"i":[[10.106,-17.525],[7.167,-36.4],[11.392,11.756]],"o":[[21.667,7.214],[22.167,-12.789],[-12.042,-12.426]],"v":[[35.333,33.121],[70.833,89.524],[78.765,28.854]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[10.106,-17.525],[7.167,-36.4],[11.392,11.756]],"o":[[21.667,7.214],[22.167,-12.789],[-12.042,-12.426]],"v":[[35.333,33.121],[70.833,89.524],[78.765,28.854]],"c":true}],"e":[{"i":[[9.667,-34.105],[36.167,-37.384],[21.805,35.207]],"o":[[93.667,0.328],[45.167,0],[-26.139,-42.204]],"v":[[64.333,34.105],[124.833,134.779],[162.139,46.139]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[9.667,-34.105],[36.167,-37.384],[21.805,35.207]],"o":[[93.667,0.328],[45.167,0],[-26.139,-42.204]],"v":[[64.333,34.105],[124.833,134.779],[162.139,46.139]],"c":true}],"e":[{"i":[[65.667,-9.51],[14.167,-64.93],[33.861,14.855]],"o":[[93.667,0.328],[53.167,-9.838],[-13.55,-5.944]],"v":[[103.333,12.461],[203.833,121.989],[211.139,18.593]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[65.667,-9.51],[14.167,-64.93],[33.861,14.855]],"o":[[93.667,0.328],[53.167,-9.838],[-13.55,-5.944]],"v":[[103.333,12.461],[203.833,121.989],[211.139,18.593]],"c":true}],"e":[{"i":[[43.667,22.955],[-8.833,-56.076],[15.861,9.936]],"o":[[59.667,32.793],[30.167,-7.87],[-12.539,-7.855]],"v":[[157.333,-15.085],[225.833,86.573],[218.139,15.642]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[43.667,22.955],[-8.833,-56.076],[15.861,9.936]],"o":[[59.667,32.793],[30.167,-7.87],[-12.539,-7.855]],"v":[[157.333,-15.085],[225.833,86.573],[218.139,15.642]],"c":true}],"e":[{"i":[[16.667,21.971],[1.167,-31.481],[1.861,16.823]],"o":[[8.667,38.695],[30.167,-7.87],[-1.627,-14.707]],"v":[[190.333,-16.068],[194.833,61.979],[221.139,31.383]],"c":true}]},{"t":14}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 3","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[1.042,-1.517],[-4.583,-2.583],[0.713,-0.384]],"o":[[3.542,-0.041],[-6.708,-7.378],[-1.162,0.845]],"v":[[23.458,27.833],[35.583,27.792],[25.787,23.995]],"c":true}],"e":[{"i":[[1.917,-3.361],[-4.583,-2.583],[2.535,-0.994]],"o":[[-1.861,3.264],[-6.708,-7.378],[-3.412,1.337]],"v":[[23.583,26.972],[48.083,24.718],[31.912,19.937]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[1.917,-3.361],[-4.583,-2.583],[2.535,-0.994]],"o":[[-1.861,3.264],[-6.708,-7.378],[-3.412,1.337]],"v":[[23.583,26.972],[48.083,24.718],[31.912,19.937]],"c":true}],"e":[{"i":[[5.042,-9.018],[-20.833,-28.53],[9.941,1.653]],"o":[[-10.154,18.163],[-0.891,-7.652],[-12.662,-2.106]],"v":[[52.833,10.617],[111.708,33.818],[82.412,-1.214]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[5.042,-9.018],[-20.833,-28.53],[9.941,1.653]],"o":[[-10.154,18.163],[-0.891,-7.652],[-12.662,-2.106]],"v":[[52.833,10.617],[111.708,33.818],[82.412,-1.214]],"c":true}],"e":[{"i":[[2.917,-13.445],[-5.833,-28.407],[10.078,0.041]],"o":[[17.917,-6.313],[-4.458,-31.235],[-3.787,-0.015]],"v":[[84.958,6.559],[131.083,26.439],[104.537,-11.298]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[2.917,-13.445],[-5.833,-28.407],[10.078,0.041]],"o":[[17.917,-6.313],[-4.458,-31.235],[-3.787,-0.015]],"v":[[84.958,6.559],[131.083,26.439],[104.537,-11.298]],"c":true}],"e":[{"i":[[8.667,-11.477],[-5.833,-28.407],[20.088,-2.475]],"o":[[17.917,-6.313],[39.792,-15.126],[-3.759,0.463]],"v":[[120.333,-6.108],[162.583,14.142],[158.537,-22.735]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[8.667,-11.477],[-5.833,-28.407],[20.088,-2.475]],"o":[[17.917,-6.313],[39.792,-15.126],[-3.759,0.463]],"v":[[120.333,-6.108],[162.583,14.142],[158.537,-22.735]],"c":true}],"e":[{"i":[[8.667,-11.477],[-1.708,-19.43],[8.213,12.897]],"o":[[14.792,-2.869],[12.292,-6.026],[-4.494,-7.056]],"v":[[192.708,-35.252],[215.208,-12.42],[230.537,-37.368]],"c":true}]},{"t":12}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 9","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-6.651,3.674],[24,-9.838],[-11,-0.492],[-28.5,-10.822]],"o":[[28.5,-15.741],[-32.75,13.425],[31.697,1.417],[-5.5,-14.757]],"v":[[-115.5,62.962],[-155,39.351],[-166,82.146],[-114.5,94.443]],"c":true}],"e":[{"i":[[-86.5,110.184],[34.776,-45.248],[-11,-0.492],[-28.5,-10.822]],"o":[[31.532,-40.166],[-62,80.67],[31.697,1.417],[-16.5,-30.497]],"v":[[-66.5,-11.805],[-139,-9.838],[-154,114.611],[-87.5,129.86]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-86.5,110.184],[34.776,-45.248],[-11,-0.492],[-28.5,-10.822]],"o":[[31.532,-40.166],[-62,80.67],[31.697,1.417],[-16.5,-30.497]],"v":[[-66.5,-11.805],[-139,-9.838],[-154,114.611],[-87.5,129.86]],"c":true}],"e":[{"i":[[-7.5,121.989],[-1.279,-57.054],[-16.059,-8.131],[-28.5,42.303]],"o":[[3.134,-50.968],[3,133.795],[34,17.216],[-90.5,95.427]],"v":[[-175.5,-25.578],[-222,-29.514],[-70,178.557],[36.5,149.535]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-7.5,121.989],[-1.279,-57.054],[-16.059,-8.131],[-28.5,42.303]],"o":[[3.134,-50.968],[3,133.795],[34,17.216],[-90.5,95.427]],"v":[[-175.5,-25.578],[-222,-29.514],[-70,178.557],[36.5,149.535]],"c":true}],"e":[{"i":[[4.5,134.778],[-1.279,-57.054],[-16.059,-8.131],[-43.5,67.881]],"o":[[-1.704,-51.036],[3,133.794],[34,17.216],[-115.5,12.789]],"v":[[-106.5,5.903],[-204,14.757],[-40,227.746],[102.5,202.66]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[4.5,134.778],[-1.279,-57.054],[-16.059,-8.131],[-43.5,67.881]],"o":[[-1.704,-51.036],[3,133.794],[34,17.216],[-115.5,12.789]],"v":[[-106.5,5.903],[-204,14.757],[-40,227.746],[102.5,202.66]],"c":true}],"e":[{"i":[[118.5,62.962],[-10.535,-56.087],[-146,-87.065],[-7.5,42.303]],"o":[[-59.919,-31.836],[17,90.508],[32.732,19.519],[-75.5,40.335]],"v":[[-123.5,59.027],[-233,130.843],[-16,179.54],[76.5,135.762]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[118.5,62.962],[-10.535,-56.087],[-146,-87.065],[-7.5,42.303]],"o":[[-59.919,-31.836],[17,90.508],[32.732,19.519],[-75.5,40.335]],"v":[[-123.5,59.027],[-233,130.843],[-16,179.54],[76.5,135.762]],"c":true}],"e":[{"i":[[130.396,31.675],[-118.907,-33.144],[-57.676,64.477],[-2.5,22.627]],"o":[[-121.5,-29.514],[240,66.897],[11,-12.297],[-75.5,40.335]],"v":[[-37.5,77.719],[-91,252.832],[174,-58.535],[190.5,-107.233]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[130.396,31.675],[-118.907,-33.144],[-57.676,64.477],[-2.5,22.627]],"o":[[-121.5,-29.514],[240,66.897],[11,-12.297],[-75.5,40.335]],"v":[[-37.5,77.719],[-91,252.832],[174,-58.535],[190.5,-107.233]],"c":true}],"e":[{"i":[[58.5,-60.011],[-44,87.557],[-57.676,64.477],[9.5,-1.968]],"o":[[-87.278,89.532],[58.572,-116.555],[11,-12.297],[-75.5,40.335]],"v":[[113.5,112.151],[204,140.681],[139,-58.535],[144.5,-100.346]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[58.5,-60.011],[-44,87.557],[-57.676,64.477],[9.5,-1.968]],"o":[[-87.278,89.532],[58.572,-116.555],[11,-12.297],[-75.5,40.335]],"v":[[113.5,112.151],[204,140.681],[139,-58.535],[144.5,-100.346]],"c":true}],"e":[{"i":[[-13.965,-105.056],[25.01,42.697],[58,5.411],[26.5,6.887]],"o":[[8.5,63.946],[-68,-116.087],[-22.948,-2.141],[20.5,59.027]],"v":[[122.5,-154.454],[187,-154.454],[-74,-189.379],[-108.5,-204.627]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-13.965,-105.056],[25.01,42.697],[58,5.411],[26.5,6.887]],"o":[[8.5,63.946],[-68,-116.087],[-22.948,-2.141],[20.5,59.027]],"v":[[122.5,-154.454],[187,-154.454],[-74,-189.379],[-108.5,-204.627]],"c":true}],"e":[{"i":[[-154.501,-29.514],[27.57,1.927],[-13,-30.989],[-9.5,7.87]],"o":[[51.5,9.838],[-183,-12.789],[6.963,16.599],[-49.5,-58.043]],"v":[[22.5,-240.043],[30,-268.573],[-137,-160.849],[-97.5,-159.373]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-154.501,-29.514],[27.57,1.927],[-13,-30.989],[-9.5,7.87]],"o":[[51.5,9.838],[-183,-12.789],[6.963,16.599],[-49.5,-58.043]],"v":[[22.5,-240.043],[30,-268.573],[-137,-160.849],[-97.5,-159.373]],"c":true}],"e":[{"i":[[-11.5,19.676],[14.048,-23.801],[-13,-30.989],[-9.5,3.935]],"o":[[7.637,-13.066],[-18,30.497],[6.963,16.599],[-49.5,-58.043]],"v":[[-138.5,-207.579],[-161,-206.595],[-129,-122.481],[-110.5,-120.022]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-11.5,19.676],[14.048,-23.801],[-13,-30.989],[-9.5,3.935]],"o":[[7.637,-13.066],[-18,30.497],[6.963,16.599],[-49.5,-58.043]],"v":[[-138.5,-207.579],[-161,-206.595],[-129,-122.481],[-110.5,-120.022]],"c":true}],"e":[{"i":[[0.5,25.579],[4,-10.822],[-18.852,-27.819],[-5.5,7.87]],"o":[[-0.296,-15.131],[-5.84,15.799],[3,4.427],[-18.5,-1.968]],"v":[[-101.5,28.53],[-115,9.838],[-93,59.519],[-72.5,55.092]],"c":true}]},{"t":20}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 11","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[4,0.984],[3,-4.919],[-2.04,-0.287],[-1.5,2.459]],"o":[[-4,-0.984],[-3,4.919],[7,0.984],[1.856,-3.044]],"v":[[-187,-76.735],[-198,-72.8],[-195.5,-62.47],[-184,-67.389]],"c":true}],"e":[{"i":[[10.5,1.968],[6,-4.427],[-5.975,-3.674],[-4.5,7.87]],"o":[[-7.147,-1.339],[-2.822,2.082],[8,4.919],[3.319,-5.805]],"v":[[-187,-2.459],[-205,2.951],[-201.5,16.724],[-181,12.297]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[10.5,1.968],[6,-4.427],[-5.975,-3.674],[-4.5,7.87]],"o":[[-7.147,-1.339],[-2.822,2.082],[8,4.919],[3.319,-5.805]],"v":[[-187,-2.459],[-205,2.951],[-201.5,16.724],[-181,12.297]],"c":true}],"e":[{"i":[[74,-13.773],[-5,-19.676],[-18,0],[-25.76,28.838]],"o":[[-31.593,5.88],[5,19.676],[38.013,0],[29,-32.465]],"v":[[-120,61.978],[-173,99.362],[-138,119.038],[-48,127.892]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[74,-13.773],[-5,-19.676],[-18,0],[-25.76,28.838]],"o":[[-31.593,5.88],[5,19.676],[38.013,0],[29,-32.465]],"v":[[-120,61.978],[-173,99.362],[-138,119.038],[-48,127.892]],"c":true}],"e":[{"i":[[74,-13.773],[3.217,-20.045],[-16.059,-8.131],[-28.5,42.303]],"o":[[-31.593,5.88],[-4.5,28.038],[34,17.216],[24.323,-36.102]],"v":[[-44.5,52.141],[-101,111.168],[-70,178.557],[36.5,149.535]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[74,-13.773],[3.217,-20.045],[-16.059,-8.131],[-28.5,42.303]],"o":[[-31.593,5.88],[-4.5,28.038],[34,17.216],[24.323,-36.102]],"v":[[-44.5,52.141],[-101,111.168],[-70,178.557],[36.5,149.535]],"c":true}],"e":[{"i":[[101.5,-44.762],[3.217,-20.045],[-15.712,-8.783],[-28.5,42.303]],"o":[[-29.403,12.967],[-4.5,28.038],[66,36.892],[24.323,-36.102]],"v":[[-14,104.281],[-70.5,163.308],[-39.5,230.697],[108,205.119]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[101.5,-44.762],[3.217,-20.045],[-15.712,-8.783],[-28.5,42.303]],"o":[[-29.403,12.967],[-4.5,28.038],[66,36.892],[24.323,-36.102]],"v":[[-14,104.281],[-70.5,163.308],[-39.5,230.697],[108,205.119]],"c":true}],"e":[{"i":[[54,-27.546],[3.217,-20.045],[-15.681,-8.837],[-8.286,48.429]],"o":[[-28.626,14.603],[-4.5,28.038],[51.5,29.022],[8.5,-49.681]],"v":[[-12.5,58.535],[-58.5,109.692],[-27.5,177.081],[83,130.351]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[54,-27.546],[3.217,-20.045],[-15.681,-8.837],[-8.286,48.429]],"o":[[-28.626,14.603],[-4.5,28.038],[51.5,29.022],[8.5,-49.681]],"v":[[-12.5,58.535],[-58.5,109.692],[-27.5,177.081],[83,130.351]],"c":true}],"e":[{"i":[[19.946,3.712],[12,-18.692],[-15.965,-8.315],[-7.661,13.567]],"o":[[-18.5,-3.443],[-7.576,11.8],[25.5,13.281],[10,-17.708]],"v":[[176.5,-120.514],[147,-86.573],[129,-46.73],[184.5,-69.357]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[19.946,3.712],[12,-18.692],[-15.965,-8.315],[-7.661,13.567]],"o":[[-18.5,-3.443],[-7.576,11.8],[25.5,13.281],[10,-17.708]],"v":[[176.5,-120.514],[147,-86.573],[129,-46.73],[184.5,-69.357]],"c":true}],"e":[{"i":[[18,1.476],[12,-18.692],[-7.673,-4.645],[-7.661,13.567]],"o":[[-11.555,-0.947],[-7.576,11.8],[13,7.87],[10,-17.708]],"v":[[138,-106.741],[109,-82.146],[107,-51.649],[146.5,-64.93]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[18,1.476],[12,-18.692],[-7.673,-4.645],[-7.661,13.567]],"o":[[-11.555,-0.947],[-7.576,11.8],[13,7.87],[10,-17.708]],"v":[[138,-106.741],[109,-82.146],[107,-51.649],[146.5,-64.93]],"c":true}],"e":[{"i":[[12,3.443],[3.5,-10.822],[-8.569,-2.649],[-1.44,5.311]],"o":[[-11.145,-3.198],[-4.315,13.342],[17.5,5.411],[2,-7.378]],"v":[[-103.5,-204.627],[-133,-193.805],[-111.5,-177.081],[-86,-184.46]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[12,3.443],[3.5,-10.822],[-8.569,-2.649],[-1.44,5.311]],"o":[[-11.145,-3.198],[-4.315,13.342],[17.5,5.411],[2,-7.378]],"v":[[-103.5,-204.627],[-133,-193.805],[-111.5,-177.081],[-86,-184.46]],"c":true}],"e":[{"i":[[12.076,3.168],[3.5,-10.822],[-6,-1.476],[-3,9.346]],"o":[[-7.5,-1.968],[-4.315,13.342],[6,1.476],[2.336,-7.279]],"v":[[-112.5,-166.26],[-135,-155.93],[-120.5,-138.714],[-100.5,-147.568]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[12.076,3.168],[3.5,-10.822],[-6,-1.476],[-3,9.346]],"o":[[-7.5,-1.968],[-4.315,13.342],[6,1.476],[2.336,-7.279]],"v":[[-112.5,-166.26],[-135,-155.93],[-120.5,-138.714],[-100.5,-147.568]],"c":true}],"e":[{"i":[[7,0.492],[1,-4.919],[-6,-1.476],[-0.556,5.474]],"o":[[-7.995,-0.562],[-1.309,6.437],[6,1.476],[0.5,-4.919]],"v":[[-117.5,-126.416],[-129,-117.07],[-121,-106.741],[-109.5,-114.611]],"c":true}]},{"t":19}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 15","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[9.5,-12.297],[-9.69,-10.895],[-21.5,-11.805],[2,10.33]],"o":[[-10.829,14.017],[29.219,32.853],[33.747,18.53],[-3.652,-18.859]],"v":[[184.5,-203.151],[204.781,-163.696],[214.5,-94.443],[219,-170.687]],"c":true}],"e":[{"i":[[4.24,-6.446],[-9.69,-10.895],[-7.078,-2.667],[6.156,8.533]],"o":[[-5.5,8.362],[29.219,32.853],[23.5,8.854],[-11,-15.249]],"v":[[159.5,-235.616],[170.781,-211.902],[189.5,-189.87],[187,-229.714]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[4.24,-6.446],[-9.69,-10.895],[-7.078,-2.667],[6.156,8.533]],"o":[[-5.5,8.362],[29.219,32.853],[23.5,8.854],[-11,-15.249]],"v":[[159.5,-235.616],[170.781,-211.902],[189.5,-189.87],[187,-229.714]],"c":true}],"e":[{"i":[[1.838,-7.493],[-6.781,-5.515],[-7.407,1.534],[6.638,8.163]],"o":[[-3.5,14.265],[6.951,5.653],[9.5,-1.967],[-6,-7.378]],"v":[[137.5,-254.308],[153.781,-236.496],[171.5,-231.189],[160,-253.325]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[1.838,-7.493],[-6.781,-5.515],[-7.407,1.534],[6.638,8.163]],"o":[[-3.5,14.265],[6.951,5.653],[9.5,-1.967],[-6,-7.378]],"v":[[137.5,-254.308],[153.781,-236.496],[171.5,-231.189],[160,-253.325]],"c":true}],"e":[{"i":[[1.642,-7.539],[-5.209,-1.514],[-6.999,2.869],[6.5,1.968]],"o":[[-1.5,6.886],[4.719,1.372],[6,-2.459],[-6.206,-1.879]],"v":[[123.5,-258.243],[132.281,-248.793],[149.5,-247.914],[139,-264.146]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[1.642,-7.539],[-5.209,-1.514],[-6.999,2.869],[6.5,1.968]],"o":[[-1.5,6.886],[4.719,1.372],[6,-2.459],[-6.206,-1.879]],"v":[[123.5,-258.243],[132.281,-248.793],[149.5,-247.914],[139,-264.146]],"c":true}],"e":[{"i":[[1.642,-7.539],[-5.209,-1.514],[-2,2.951],[6.5,1.968]],"o":[[-1.5,6.886],[4.719,1.372],[2.361,-3.484],[-6.206,-1.879]],"v":[[86,-264.638],[93.281,-254.696],[104,-258.735],[98,-269.065]],"c":true}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":22,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 1","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,101.648,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[20.5,0.492],[15.219,1.372],[18.5,0.492],[-1.533,-31.175],[-31,-87.065]],"o":[[-18.812,-0.451],[-23.918,-2.156],[-18.811,-0.5],[1.5,30.497],[5.369,15.08]],"v":[[-184.5,100.838],[-203.219,77.331],[-226.5,47.714],[-237.5,85.589],[-183,139.205]],"c":true}],"e":[{"i":[[27.5,-2.46],[16.128,-1.753],[18.5,0.492],[2.158,-31.138],[-19.079,5.631]],"o":[[-18.743,1.676],[-39.781,4.323],[-18.811,-0.5],[-4.5,64.93],[15,-4.427]],"v":[[-173.5,142.157],[-193.219,171.774],[-218.5,87.065],[-232.5,153.47],[-168,200.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[27.5,-2.46],[16.128,-1.753],[18.5,0.492],[2.158,-31.138],[-19.079,5.631]],"o":[[-18.743,1.676],[-39.781,4.323],[-18.811,-0.5],[-4.5,64.93],[15,-4.427]],"v":[[-173.5,142.157],[-193.219,171.774],[-218.5,87.065],[-232.5,153.47],[-168,200.2]],"c":true}],"e":[{"i":[[39.5,31.973],[2.219,-14.369],[15.24,-3.822],[-28.799,-12.035],[-1.122,29.262]],"o":[[-27.99,-22.657],[-6.54,42.356],[-25.5,6.395],[56.5,23.611],[1,-26.07]],"v":[[-109.5,187.411],[-160.219,182.596],[-214.5,174.622],[-162.5,250.865],[-39,241.519]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[39.5,31.973],[2.219,-14.369],[15.24,-3.822],[-28.799,-12.035],[-1.122,29.262]],"o":[[-27.99,-22.657],[-6.54,42.356],[-25.5,6.395],[56.5,23.611],[1,-26.07]],"v":[[-109.5,187.411],[-160.219,182.596],[-214.5,174.622],[-162.5,250.865],[-39,241.519]],"c":true}],"e":[{"i":[[31.31,-12.401],[-5.781,-22.239],[9.283,-12.676],[-24.5,-30.497],[-1.122,29.262]],"o":[[-38.5,15.249],[10.783,41.479],[-33.5,45.746],[38.351,47.738],[1,-26.07]],"v":[[202.5,-30.005],[217.781,56.672],[202.5,148.06],[126.5,237.092],[231,90.016]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[31.31,-12.401],[-5.781,-22.239],[9.283,-12.676],[-24.5,-30.497],[-1.122,29.262]],"o":[[-38.5,15.249],[10.783,41.479],[-33.5,45.746],[38.351,47.738],[1,-26.07]],"v":[[202.5,-30.005],[217.781,56.672],[202.5,148.06],[126.5,237.092],[231,90.016]],"c":true}],"e":[{"i":[[23.438,-24.182],[-8.804,-11.622],[1.763,-15.612],[-18.806,0],[2,10.33]],"o":[[-20.5,21.151],[12.219,16.128],[-1.5,13.281],[38.5,0],[-3.652,-18.859]],"v":[[191.5,-87.065],[205.781,-46.626],[213.5,-6.395],[213.5,38.367],[224,-55.584]],"c":true}]},{"t":16}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"J Outlines 3","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[-16.654,-13.977],[11.662,43.546],[-8.03,11.593],[18.799,-1.907],[-12.201,-29.124],[12.666,-3.276],[15.619,-4.559],[-12.425,14.113]],"o":[[7.719,6.479],[-6.53,-24.386],[7.823,-11.294],[-21.146,2.145],[18.087,43.173],[-12.666,3.276],[-15.619,4.559],[12.425,-14.113]],"v":[[-11.219,64.021],[20.53,43.886],[45.03,28.907],[25.701,-0.593],[5.701,40.124],[-27.334,47.724],[-37.381,68.941],[-24.425,84.113]],"c":true}],"e":[{"i":[[-12.281,30.479],[6.47,44.614],[11.07,40.071],[-25.556,-44.659],[-3.571,-17.615],[15.894,-26.34],[13.881,-15.941],[-24.36,23.593]],"o":[[13.465,-33.42],[-3.261,-22.487],[-15.03,-54.407],[21.799,38.093],[9.299,45.876],[-17.666,29.276],[-16.348,18.774],[9.925,-9.613]],"v":[[61.281,17.521],[68.53,-88.614],[48.03,-175.093],[31.701,-167.593],[63.201,-92.376],[51.666,4.724],[-6.381,46.941],[28.075,70.613]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[-12.281,30.479],[6.47,44.614],[11.07,40.071],[-25.556,-44.659],[-3.571,-17.615],[15.894,-26.34],[13.881,-15.941],[-24.36,23.593]],"o":[[13.465,-33.42],[-3.261,-22.487],[-15.03,-54.407],[21.799,38.093],[9.299,45.876],[-17.666,29.276],[-16.348,18.774],[9.925,-9.613]],"v":[[61.281,17.521],[68.53,-88.614],[48.03,-175.093],[31.701,-167.593],[63.201,-92.376],[51.666,4.724],[-6.381,46.941],[28.075,70.613]],"c":true}],"e":[{"i":[[6.219,66.979],[13.97,11.114],[19.53,-20.593],[-11.457,6.258],[-25.299,-8.376],[-7.334,-49.276],[18.619,-20.559],[-12.151,28.753]],"o":[[-4.994,-53.777],[-11.131,-8.855],[-19.53,20.593],[21.799,-11.907],[25.299,8.376],[7.334,49.276],[-18.619,20.559],[4.925,-26.613]],"v":[[52.781,-106.979],[19.03,-180.114],[-41.97,-179.593],[-25.799,-142.593],[1.201,-171.376],[49.166,-99.776],[4.619,30.441],[17.075,42.113]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[6.219,66.979],[13.97,11.114],[19.53,-20.593],[-11.457,6.258],[-25.299,-8.376],[-7.334,-49.276],[18.619,-20.559],[-12.151,28.753]],"o":[[-4.994,-53.777],[-11.131,-8.855],[-19.53,20.593],[21.799,-11.907],[25.299,8.376],[7.334,49.276],[-18.619,20.559],[4.925,-26.613]],"v":[[52.781,-106.979],[19.03,-180.114],[-41.97,-179.593],[-25.799,-142.593],[1.201,-171.376],[49.166,-99.776],[4.619,30.441],[17.075,42.113]],"c":true}],"e":[{"i":[[32.719,20.479],[18.53,-10.114],[8.778,-25.278],[-15.799,17.907],[-0.281,17.971],[-45.834,-2.776],[11.119,-30.059],[0.058,33.913]],"o":[[-30.541,-19.116],[-18.53,10.114],[-29.03,83.593],[15.799,-17.907],[0.299,-19.124],[45.834,2.776],[-11.119,30.059],[-0.075,-43.613]],"v":[[24.281,-187.479],[-73.47,-190.614],[-118.97,-143.593],[-52.299,-80.593],[-39.799,-124.376],[14.666,-166.776],[60.619,-60.559],[77.075,-68.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[32.719,20.479],[18.53,-10.114],[8.778,-25.278],[-15.799,17.907],[-0.281,17.971],[-45.834,-2.776],[11.119,-30.059],[0.058,33.913]],"o":[[-30.541,-19.116],[-18.53,10.114],[-29.03,83.593],[15.799,-17.907],[0.299,-19.124],[45.834,2.776],[-11.119,30.059],[-0.075,-43.613]],"v":[[24.281,-187.479],[-73.47,-190.614],[-118.97,-143.593],[-52.299,-80.593],[-39.799,-124.376],[14.666,-166.776],[60.619,-60.559],[77.075,-68.387]],"c":true}],"e":[{"i":[[56.053,6.979],[29.47,-35.553],[-61.94,-57.102],[17.035,39.74],[4.701,37.791],[-23.666,-3.391],[-6.214,-21.392],[12.347,16.737]],"o":[[-26.067,-2.176],[-29.778,35.924],[70.97,65.427],[-17.035,-39.74],[-4.701,-37.791],[52.834,12.609],[6.214,21.392],[-10.913,-23.894]],"v":[[-42.053,-209.979],[-165.47,-175.947],[-139.97,-45.927],[-20.965,-76.26],[-88.299,-152.209],[-20.834,-194.609],[52.286,-128.892],[65.241,-132.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[56.053,6.979],[29.47,-35.553],[-61.94,-57.102],[17.035,39.74],[4.701,37.791],[-23.666,-3.391],[-6.214,-21.392],[12.347,16.737]],"o":[[-26.067,-2.176],[-29.778,35.924],[70.97,65.427],[-17.035,-39.74],[-4.701,-37.791],[52.834,12.609],[6.214,21.392],[-10.913,-23.894]],"v":[[-42.053,-209.979],[-165.47,-175.947],[-139.97,-45.927],[-20.965,-76.26],[-88.299,-152.209],[-20.834,-194.609],[52.286,-128.892],[65.241,-132.887]],"c":true}],"e":[{"i":[[31.114,-15.479],[-37.47,-64.781],[-27.46,-6.15],[51.132,17.926],[11,21.333],[-19.666,6.943],[-11.453,-2.274],[7.592,2.387]],"o":[[-31.114,15.479],[37.47,64.781],[98.47,24.26],[-32.893,-11.532],[-10.871,-21.297],[13.527,-4.776],[16.615,3.299],[-30.33,-9.536]],"v":[[-156.886,-189.979],[-176.97,-66.781],[-43.97,19.74],[10.368,-75.926],[-95.799,-140.542],[-73.334,-189.443],[-22.047,-194.226],[-19.092,-199.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[31.114,-15.479],[-37.47,-64.781],[-27.46,-6.15],[51.132,17.926],[11,21.333],[-19.666,6.943],[-11.453,-2.274],[7.592,2.387]],"o":[[-31.114,15.479],[37.47,64.781],[98.47,24.26],[-32.893,-11.532],[-10.871,-21.297],[13.527,-4.776],[16.615,3.299],[-30.33,-9.536]],"v":[[-156.886,-189.979],[-176.97,-66.781],[-43.97,19.74],[10.368,-75.926],[-95.799,-140.542],[-73.334,-189.443],[-22.047,-194.226],[-19.092,-199.887]],"c":true}],"e":[{"i":[[-10.785,-34.105],[-27.765,-17.566],[-45.58,3.413],[82.298,-21.407],[28.033,0.168],[43.334,24.776],[2.893,21.278],[4.989,-32.921]],"o":[[11.22,35.479],[49.97,31.614],[138.969,-10.407],[-29.25,7.608],[-20.701,-0.124],[-15.062,-8.612],[-3.119,-22.941],[-4.075,26.887]],"v":[[-200.22,-78.479],[-136.97,4.886],[25.031,38.407],[41.702,-75.593],[-49.799,-64.876],[-128.834,-92.276],[-173.381,-163.059],[-207.425,-158.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-10.785,-34.105],[-27.765,-17.566],[-45.58,3.413],[82.298,-21.407],[28.033,0.168],[43.334,24.776],[2.893,21.278],[4.989,-32.921]],"o":[[11.22,35.479],[49.97,31.614],[138.969,-10.407],[-29.25,7.608],[-20.701,-0.124],[-15.062,-8.612],[-3.119,-22.941],[-4.075,26.887]],"v":[[-200.22,-78.479],[-136.97,4.886],[25.031,38.407],[41.702,-75.593],[-49.799,-64.876],[-128.834,-92.276],[-173.381,-163.059],[-207.425,-158.387]],"c":true}],"e":[{"i":[[-19.97,-10.979],[-47.22,-6.864],[-51.36,23.556],[89.298,-40.407],[23.643,-3.303],[19.416,5.724],[16.119,11.941],[-17.675,-37.887]],"o":[[19.97,10.979],[47.22,6.864],[80.469,-36.907],[-28.976,16.101],[-18.701,2.876],[-19.416,-5.724],[-16.119,-11.941],[17.675,37.887]],"v":[[-136.97,-0.979],[-36.72,25.636],[116.031,7.407],[67.202,-89.093],[-15.049,-64.376],[-97.584,-71.276],[-169.881,-103.559],[-212.175,-65.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-19.97,-10.979],[-47.22,-6.864],[-51.36,23.556],[89.298,-40.407],[23.643,-3.303],[19.416,5.724],[16.119,11.941],[-17.675,-37.887]],"o":[[19.97,10.979],[47.22,6.864],[80.469,-36.907],[-28.976,16.101],[-18.701,2.876],[-19.416,-5.724],[-16.119,-11.941],[17.675,37.887]],"v":[[-136.97,-0.979],[-36.72,25.636],[116.031,7.407],[67.202,-89.093],[-15.049,-64.376],[-97.584,-71.276],[-169.881,-103.559],[-212.175,-65.887]],"c":true}],"e":[{"i":[[-24.031,35.979],[11.78,27.386],[6.97,23.093],[-12.444,-25.537],[-14.799,-33.126],[24.166,1.974],[27.131,-2.441],[-152.825,-25.363]],"o":[[18.969,-36.021],[-11.78,-27.386],[-9.852,-32.645],[14.299,29.343],[14.799,33.126],[-24.166,-1.974],[-131.869,2.559],[113.175,24.637]],"v":[[149.031,9.021],[165.28,-79.614],[166.03,-126.093],[125.201,-127.343],[114.701,-81.626],[-8.334,-77.026],[-81.131,-83.559],[-72.175,101.363]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-24.031,35.979],[11.78,27.386],[6.97,23.093],[-12.444,-25.537],[-14.799,-33.126],[24.166,1.974],[27.131,-2.441],[-152.825,-25.363]],"o":[[18.969,-36.021],[-11.78,-27.386],[-9.852,-32.645],[14.299,29.343],[14.799,33.126],[-24.166,-1.974],[-131.869,2.559],[113.175,24.637]],"v":[[149.031,9.021],[165.28,-79.614],[166.03,-126.093],[125.201,-127.343],[114.701,-81.626],[-8.334,-77.026],[-81.131,-83.559],[-72.175,101.363]],"c":true}],"e":[{"i":[[25.219,78.479],[20.47,39.614],[24.816,13.23],[-39.701,-8.907],[46.799,-17.624],[60.334,-13.724],[22.381,-34.941],[-188.075,55.387]],"o":[[-19.819,-61.672],[-21.884,-42.351],[-42.03,-22.407],[27.9,6.259],[-51.398,19.356],[-26.505,6.029],[-36.619,64.059],[58.65,-17.272]],"v":[[206.781,-33.979],[209.53,-133.114],[164.03,-187.593],[136.701,-145.593],[156.701,-94.876],[-29.334,-84.276],[-112.381,-25.059],[75.075,129.613]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[25.219,78.479],[20.47,39.614],[24.816,13.23],[-39.701,-8.907],[46.799,-17.624],[60.334,-13.724],[22.381,-34.941],[-188.075,55.387]],"o":[[-19.819,-61.672],[-21.884,-42.351],[-42.03,-22.407],[27.9,6.259],[-51.398,19.356],[-26.505,6.029],[-36.619,64.059],[58.65,-17.272]],"v":[[206.781,-33.979],[209.53,-133.114],[164.03,-187.593],[136.701,-145.593],[156.701,-94.876],[-29.334,-84.276],[-112.381,-25.059],[75.075,129.613]],"c":true}],"e":[{"i":[[31.781,58.271],[49.031,58.636],[75.522,-2.875],[-15.451,-9.657],[-16.701,-66.374],[16.835,-16.224],[13.156,-27.022],[-123.075,100.387]],"o":[[-31.781,-58.271],[-49.031,-58.636],[-35.281,1.343],[35.049,31.843],[2.299,43.626],[-16.166,13.776],[-101.369,119.559],[68.925,-58.613]],"v":[[210.281,-73.229],[190.531,-234.364],[28.781,-218.843],[4.451,-177.343],[151.201,-196.126],[18.166,-62.776],[-64.631,11.441],[155.075,144.613]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[31.781,58.271],[49.031,58.636],[75.522,-2.875],[-15.451,-9.657],[-16.701,-66.374],[16.835,-16.224],[13.156,-27.022],[-123.075,100.387]],"o":[[-31.781,-58.271],[-49.031,-58.636],[-35.281,1.343],[35.049,31.843],[2.299,43.626],[-16.166,13.776],[-101.369,119.559],[68.925,-58.613]],"v":[[210.281,-73.229],[190.531,-234.364],[28.781,-218.843],[4.451,-177.343],[151.201,-196.126],[18.166,-62.776],[-64.631,11.441],[155.075,144.613]],"c":true}],"e":[{"i":[[42.719,43.979],[41.469,8.114],[34.531,-9.093],[-44.95,13.191],[0.299,-20.624],[11.665,-8.276],[37.881,-36.941],[-122.075,126.387]],"o":[[-20.281,-18.021],[-42.814,-8.377],[-34.53,9.093],[50.799,-14.907],[-5.701,28.376],[-11.665,8.276],[-119.119,115.059],[57.925,-76.613]],"v":[[158.281,-176.979],[72.531,-230.114],[-34.47,-222.093],[-17.799,-169.093],[74.701,-155.376],[30.665,-102.276],[-40.881,-48.059],[158.075,61.613]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[42.719,43.979],[41.469,8.114],[34.531,-9.093],[-44.95,13.191],[0.299,-20.624],[11.665,-8.276],[37.881,-36.941],[-122.075,126.387]],"o":[[-20.281,-18.021],[-42.814,-8.377],[-34.53,9.093],[50.799,-14.907],[-5.701,28.376],[-11.665,8.276],[-119.119,115.059],[57.925,-76.613]],"v":[[158.281,-176.979],[72.531,-230.114],[-34.47,-222.093],[-17.799,-169.093],[74.701,-155.376],[30.665,-102.276],[-40.881,-48.059],[158.075,61.613]],"c":true}],"e":[{"i":[[72.904,13.613],[26.135,-15.033],[26.03,-43.593],[-37.701,-6.407],[-26.701,9.876],[-14.666,6.276],[-32.619,-12.941],[12.248,37.173]],"o":[[-40.281,-7.521],[-44.53,25.614],[-26.03,43.593],[9.995,1.698],[16.695,-6.175],[11.4,-4.879],[71.223,28.256],[-11.075,-33.613]],"v":[[88.28,-299.479],[-38.47,-289.614],[-110.97,-217.593],[-56.299,-111.593],[-6.299,-115.876],[34.666,-139.276],[109.619,-139.059],[198.075,-214.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[72.904,13.613],[26.135,-15.033],[26.03,-43.593],[-37.701,-6.407],[-26.701,9.876],[-14.666,6.276],[-32.619,-12.941],[12.248,37.173]],"o":[[-40.281,-7.521],[-44.53,25.614],[-26.03,43.593],[9.995,1.698],[16.695,-6.175],[11.4,-4.879],[71.223,28.256],[-11.075,-33.613]],"v":[[88.28,-299.479],[-38.47,-289.614],[-110.97,-217.593],[-56.299,-111.593],[-6.299,-115.876],[34.666,-139.276],[109.619,-139.059],[198.075,-214.387]],"c":true}],"e":[{"i":[[74.059,3.935],[26.483,-14.411],[12.156,-25.359],[-37.701,-6.407],[-8.299,22.124],[-79.666,9.276],[-28.693,-11.575],[18.925,57.387]],"o":[[-66.281,-3.521],[-30.53,16.614],[-41.03,85.593],[9.995,1.698],[8.299,-22.124],[31.241,-3.638],[89.381,36.059],[-14.786,-44.835]],"v":[[26.281,-324.479],[-90.47,-298.614],[-161.97,-223.593],[-140.299,-44.593],[-106.299,-71.876],[-19.334,-148.276],[48.619,-132.059],[164.075,-231.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[74.059,3.935],[26.483,-14.411],[12.156,-25.359],[-37.701,-6.407],[-8.299,22.124],[-79.666,9.276],[-28.693,-11.575],[18.925,57.387]],"o":[[-66.281,-3.521],[-30.53,16.614],[-41.03,85.593],[9.995,1.698],[8.299,-22.124],[31.241,-3.638],[89.381,36.059],[-14.786,-44.835]],"v":[[26.281,-324.479],[-90.47,-298.614],[-161.97,-223.593],[-140.299,-44.593],[-106.299,-71.876],[-19.334,-148.276],[48.619,-132.059],[164.075,-231.387]],"c":true}],"e":[{"i":[[-24.731,-69.919],[-24.47,-17.614],[-10.116,14.208],[16.656,-14.259],[12.299,5.876],[1.335,21.276],[0.381,58.059],[12.616,-62.128]],"o":[[9.72,27.479],[24.47,17.614],[10.97,-15.407],[-7.701,6.593],[-16.062,-7.673],[-4.055,-64.639],[-0.619,-70.941],[-13.075,64.387]],"v":[[-142.72,-103.479],[-90.47,-30.614],[-7.97,-27.593],[-26.299,-34.593],[-62.799,-34.376],[-85.335,-101.276],[-62.381,-264.059],[-159.925,-271.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-24.731,-69.919],[-24.47,-17.614],[-10.116,14.208],[16.656,-14.259],[12.299,5.876],[1.335,21.276],[0.381,58.059],[12.616,-62.128]],"o":[[9.72,27.479],[24.47,17.614],[10.97,-15.407],[-7.701,6.593],[-16.062,-7.673],[-4.055,-64.639],[-0.619,-70.941],[-13.075,64.387]],"v":[[-142.72,-103.479],[-90.47,-30.614],[-7.97,-27.593],[-26.299,-34.593],[-62.799,-34.376],[-85.335,-101.276],[-62.381,-264.059],[-159.925,-271.387]],"c":true}],"e":[{"i":[[-26.72,-24.979],[-30.469,1.386],[-6.073,21.9],[3.477,-28.333],[28.701,-0.376],[12.335,16.276],[0.381,58.059],[-3,-83]],"o":[[26.72,24.979],[30.469,-1.386],[7.563,-37.986],[0.357,21.69],[-28.701,0.376],[-18.86,-44.681],[-0.619,-70.941],[5.425,67.887]],"v":[[-108.72,-56.979],[-38.469,-28.614],[13.03,-70.093],[-15.799,-75.093],[-42.799,-34.876],[-88.835,-64.276],[-75.881,-222.059],[-157.925,-219.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-26.72,-24.979],[-30.469,1.386],[-6.073,21.9],[3.477,-28.333],[28.701,-0.376],[12.335,16.276],[0.381,58.059],[-3,-83]],"o":[[26.72,24.979],[30.469,-1.386],[7.563,-37.986],[0.357,21.69],[-28.701,0.376],[-18.86,-44.681],[-0.619,-70.941],[5.425,67.887]],"v":[[-108.72,-56.979],[-38.469,-28.614],[13.03,-70.093],[-15.799,-75.093],[-42.799,-34.876],[-88.835,-64.276],[-75.881,-222.059],[-157.925,-219.887]],"c":true}],"e":[{"i":[[-53.78,-28.521],[-22.758,27.627],[-2.03,29.593],[-9.701,-42.407],[18.843,-21.158],[24.835,22.276],[0.381,58.059],[-3.075,-77.113]],"o":[[46.72,16.479],[15.97,-19.386],[4.156,-60.565],[8.416,36.787],[-17.701,19.876],[-33.665,-24.724],[-0.619,-71.441],[5.925,69.887]],"v":[[-86.72,-18.479],[10.03,-38.114],[34.03,-112.593],[-5.299,-115.593],[-1.799,-36.876],[-79.335,-34.276],[-89.381,-180.059],[-151.425,-176.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-53.78,-28.521],[-22.758,27.627],[-2.03,29.593],[-9.701,-42.407],[18.843,-21.158],[24.835,22.276],[0.381,58.059],[-3.075,-77.113]],"o":[[46.72,16.479],[15.97,-19.386],[4.156,-60.565],[8.416,36.787],[-17.701,19.876],[-33.665,-24.724],[-0.619,-71.441],[5.925,69.887]],"v":[[-86.72,-18.479],[10.03,-38.114],[34.03,-112.593],[-5.299,-115.593],[-1.799,-36.876],[-79.335,-34.276],[-89.381,-180.059],[-151.425,-176.887]],"c":true}],"e":[{"i":[[-27.78,-1.521],[-5.637,50.386],[10.929,53.643],[-46.701,-60.407],[-7.299,-27.376],[29.335,8.276],[12.381,7.059],[-32.575,-16.613]],"o":[[41.72,-3.521],[5.47,-48.886],[-19.03,-93.407],[59.837,77.398],[7.299,27.376],[-18.665,-4.224],[-30.619,-16.441],[28.425,13.387]],"v":[[-13.72,0.521],[59.53,-87.614],[38.03,-221.593],[-45.299,-210.593],[25.701,-91.876],[-23.335,-35.276],[-58.381,-51.059],[-78.925,-12.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-27.78,-1.521],[-5.637,50.386],[10.929,53.643],[-46.701,-60.407],[-7.299,-27.376],[29.335,8.276],[12.381,7.059],[-32.575,-16.613]],"o":[[41.72,-3.521],[5.47,-48.886],[-19.03,-93.407],[59.837,77.398],[7.299,27.376],[-18.665,-4.224],[-30.619,-16.441],[28.425,13.387]],"v":[[-13.72,0.521],[59.53,-87.614],[38.03,-221.593],[-45.299,-210.593],[25.701,-91.876],[-23.335,-35.276],[-58.381,-51.059],[-78.925,-12.387]],"c":true}],"e":[{"i":[[-25.259,-0.541],[-2.004,46.147],[-9.933,16.74],[19.532,-45.096],[-2.595,-9.734],[25.033,2.943],[10.438,6.793],[-26.075,-16.613]],"o":[[46.57,-1.252],[1.945,-17.382],[16.725,-28.185],[-13.825,31.919],[2.595,26.673],[-14.619,-1.502],[-20.619,-14.941],[19.452,10.99]],"v":[[-8.553,7.132],[57.919,-78.27],[67.275,-217.815],[16.468,-227.904],[15.712,-85.431],[-13.335,-32.854],[-47.381,-45.059],[-67.925,-6.387]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[-25.259,-0.541],[-2.004,46.147],[-9.933,16.74],[19.532,-45.096],[-2.595,-9.734],[25.033,2.943],[10.438,6.793],[-26.075,-16.613]],"o":[[46.57,-1.252],[1.945,-17.382],[16.725,-28.185],[-13.825,31.919],[2.595,26.673],[-14.619,-1.502],[-20.619,-14.941],[19.452,10.99]],"v":[[-8.553,7.132],[57.919,-78.27],[67.275,-217.815],[16.468,-227.904],[15.712,-85.431],[-13.335,-32.854],[-47.381,-45.059],[-67.925,-6.387]],"c":true}],"e":[{"i":[[-24.441,-0.223],[-0.825,44.771],[3.765,7.076],[-7.782,-15.867],[-1.069,-4.008],[23.637,1.212],[9.807,6.707],[-10.737,-6.841]],"o":[[48.144,-0.516],[0.801,-7.157],[-12.249,-23.021],[6.307,12.86],[1.069,26.444],[-13.306,-0.618],[-8.49,-6.152],[16.54,10.212]],"v":[[-16.004,4.714],[57.397,-75.237],[33.249,-218.979],[-15.218,-223.133],[12.471,-83.34],[-19.217,-36.632],[-65.851,-55.588],[-86.396,-16.917]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[-24.441,-0.223],[-0.825,44.771],[3.765,7.076],[-7.782,-15.867],[-1.069,-4.008],[23.637,1.212],[9.807,6.707],[-10.737,-6.841]],"o":[[48.144,-0.516],[0.801,-7.157],[-12.249,-23.021],[6.307,12.86],[1.069,26.444],[-13.306,-0.618],[-8.49,-6.152],[16.54,10.212]],"v":[[-16.004,4.714],[57.397,-75.237],[33.249,-218.979],[-15.218,-223.133],[12.471,-83.34],[-19.217,-36.632],[-65.851,-55.588],[-86.396,-16.917]],"c":true}],"e":[{"i":[[-23.868,0],[0,43.808],[0,0],[0,0],[0,0],[22.659,0],[9.366,6.647],[0,0]],"o":[[49.246,0],[0,0],[0,0],[0,0],[0,26.285],[-12.387,0],[0,0],[14.502,9.668]],"v":[[-21.22,3.021],[57.03,-73.114],[57.03,-226.593],[10.201,-226.593],[10.201,-81.876],[-23.335,-39.276],[-58.381,-51.059],[-78.925,-12.387]],"c":true}]},{"t":25}]},"nm":"J"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"J"}],"ip":1,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":1,"nm":"ResizerTemp","parent":16,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[19,25.5,0]},"a":{"k":[250,300,0]},"s":{"k":[7.5,7.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":1,"nm":"White Solid 23","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[20,25,0]},"s":{"k":[200,200,100]}},"ao":0,"sw":40,"sh":50,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":29,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/K.json b/example/shared/src/commonMain/composeResources/files/mobilo/K.json new file mode 100644 index 00000000..3e447b81 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/K.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"K","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[114.5,0],[5.434,-126.59],[103.926,-226.593],[71.221,-226.593],[43.199,-226.593],[-38.374,-138.675],[-38.374,-226.593],[-62.78,-226.593],[-85.506,-226.593],[-85.506,-146.896],[-85.506,0],[-62.03,0],[-38.374,0],[-38.374,-109.671],[51.659,0],[80.338,0]],"c":true}},"nm":"K"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"K"}],"ip":25,"op":35,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"speed_line_4","parent":21,"ks":{"o":{"k":100},"r":{"k":-23},"p":{"k":[150,288,0]},"a":{"k":[-100,-12,0]},"s":{"k":[84,84,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-14.914,85.778]],"o":[[0,0],[16.074,-92.454]],"v":[[-38.075,76.348],[18.384,-37.812]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.932],"y":[0]},"n":["0_1_0p932_0"],"t":7,"s":[0],"e":[100]},{"t":13}],"ix":1},"e":{"k":[{"i":{"x":[0.229],"y":[1]},"o":{"x":[0.761],"y":[0]},"n":["0p229_1_0p761_0"],"t":5,"s":[0],"e":[100]},{"t":9}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,4],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":31,"st":-15,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"speed_line_3","parent":21,"ks":{"o":{"k":100},"r":{"k":-23},"p":{"k":[145,283,0]},"a":{"k":[-100,-12,0]},"s":{"k":[84,84,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-22.836,154.762]],"o":[[0,0],[13.699,-92.836]],"v":[[-118.849,111.253],[16.275,-37.414]],"c":false}},"nm":"Path 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.932],"y":[0]},"n":["0_1_0p932_0"],"t":6,"s":[0],"e":[100]},{"t":12}],"ix":1},"e":{"k":[{"i":{"x":[0.229],"y":[1]},"o":{"x":[0.761],"y":[0]},"n":["0p229_1_0p761_0"],"t":4,"s":[0],"e":[100]},{"t":8}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,4],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":31,"st":-16,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"speed_shape","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[-0.093,-0.712],[-1.417,-8.102],[-2.524,-3.282],[0,5],[-4.679,0.78],[-1.25,-3.75],[-0.692,-2.78],[0,0],[-0.5,3.25],[0.619,2.663],[0,0],[-1.75,0],[0,-1.25],[0.25,3.25],[-1,0.25],[0,0]],"o":[[0,0],[0,0],[0,0],[0.362,2.757],[1.818,10.397],[5,6.5],[0,-5],[3,-0.5],[0.721,2.162],[0.509,2.043],[0,0],[0.272,-1.77],[-0.518,-2.227],[0,0],[1.75,0],[0,1.25],[-0.25,-3.25],[1,-0.25],[0,0]],"v":[[-139.5,-27.75],[-168.5,-18],[-174.75,-11],[-174.608,-9.896],[-171.803,8.51],[-165,33.5],[-160.5,25.5],[-163.5,-3],[-155.75,0.75],[-153.367,9.433],[-152.5,13],[-148.5,13.75],[-149.464,5.99],[-150.5,2],[-150,-3],[-147.5,0.5],[-144.5,3],[-145,-5.25],[-134,-8]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[5.153,-7.808],[6.299,-16.335],[0.803,-5.879],[-0.565,13.237],[-6.036,-5.491],[1.804,-3.517],[2.104,-4.648],[0,0],[-2.672,1.917],[-2.085,4.439],[0,0],[-1.225,-1.25],[0.497,-1.147],[-2.373,3.946],[-1.258,3.375],[0,0]],"o":[[0,0],[0,0],[0,0],[-4.425,6.705],[-3.315,8.598],[-1.134,8.309],[0.565,-13.237],[2.25,2.047],[-0.915,1.783],[-2.045,4.518],[0,0],[1.32,-0.947],[2.134,-4.543],[0,0],[1.225,1.25],[-3.204,7.4],[1.48,-2.462],[4.01,-10.756],[0,0]],"v":[[-138.517,-64.454],[-165.775,-78.347],[-175.15,-81.414],[-179.903,-71.442],[-194.412,-43.654],[-198.616,-23.809],[-192.252,-25.192],[-172.992,-64.279],[-171.247,-56.369],[-177.125,-47.283],[-179.474,-35.975],[-177.211,-32.592],[-172.41,-45.605],[-167.467,-51.493],[-163.545,-54.635],[-164.546,-47.9],[-163.482,-39.757],[-161.189,-48.138],[-143.527,-55.704]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[5.153,-7.808],[6.299,-16.335],[0.803,-5.879],[-0.565,13.237],[-6.036,-5.491],[1.804,-3.517],[2.104,-4.648],[0,0],[-2.672,1.917],[-2.085,4.439],[0,0],[-1.225,-1.25],[0.497,-1.147],[-2.373,3.946],[-1.258,3.375],[0,0]],"o":[[0,0],[0,0],[0,0],[-4.425,6.705],[-3.315,8.598],[-1.134,8.309],[0.565,-13.237],[2.25,2.047],[-0.915,1.783],[-2.045,4.518],[0,0],[1.32,-0.947],[2.134,-4.543],[0,0],[1.225,1.25],[-3.204,7.4],[1.48,-2.462],[4.01,-10.756],[0,0]],"v":[[-138.517,-64.454],[-165.775,-78.347],[-175.15,-81.414],[-179.903,-71.442],[-194.412,-43.654],[-198.616,-23.809],[-192.252,-25.192],[-172.992,-64.279],[-171.247,-56.369],[-177.125,-47.283],[-179.474,-35.975],[-177.211,-32.592],[-172.41,-45.605],[-167.467,-51.493],[-163.545,-54.635],[-164.546,-47.9],[-163.482,-39.757],[-161.189,-48.138],[-143.527,-55.704]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[7.87,-5.059],[12.364,-12.395],[3.11,-5.053],[-7.48,10.936],[-3.301,-7.462],[3.072,-2.488],[3.803,-3.401],[0,0],[-3.219,0.674],[-3.701,3.217],[0,0],[-0.615,-1.638],[0.918,-0.848],[-3.765,2.65],[-2.515,2.578],[0,0]],"o":[[0,0],[0,0],[0,0],[-6.757,4.344],[-6.508,6.524],[-4.396,7.141],[8.467,-12.378],[1.23,2.781],[-1.558,1.261],[-3.697,3.306],[0,0],[1.591,-0.333],[3.788,-3.292],[0,0],[0.615,1.638],[-5.922,5.473],[2.349,-1.654],[8.016,-8.217],[0,0]],"v":[[-108.447,-80.311],[-127.763,-104.038],[-135.098,-110.632],[-143.477,-103.432],[-163.73,-87.631],[-175.097,-72.679],[-169.467,-73.622],[-140.05,-94.087],[-140.903,-87.647],[-148.701,-81.713],[-155.421,-74.319],[-154.718,-70.31],[-147.067,-76.772],[-139.415,-81.659],[-135.308,-81.448],[-138.946,-75.692],[-139.265,-71.064],[-135.779,-74.552],[-116.566,-74.334]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0],[0,0],[7.87,-5.059],[12.364,-12.395],[3.11,-5.053],[-7.48,10.936],[-3.301,-7.462],[3.072,-2.488],[3.803,-3.401],[0,0],[-3.219,0.674],[-3.701,3.217],[0,0],[-0.615,-1.638],[0.918,-0.848],[-3.765,2.65],[-2.515,2.578],[0,0]],"o":[[0,0],[0,0],[0,0],[-6.757,4.344],[-6.508,6.524],[-4.396,7.141],[8.467,-12.378],[1.23,2.781],[-1.558,1.261],[-3.697,3.306],[0,0],[1.591,-0.333],[3.788,-3.292],[0,0],[0.615,1.638],[-5.922,5.473],[2.349,-1.654],[8.016,-8.217],[0,0]],"v":[[-108.447,-80.311],[-127.763,-104.038],[-135.098,-110.632],[-143.477,-103.432],[-163.73,-87.631],[-175.097,-72.679],[-169.467,-73.622],[-140.05,-94.087],[-140.903,-87.647],[-148.701,-81.713],[-155.421,-74.319],[-154.718,-70.31],[-147.067,-76.772],[-139.415,-81.659],[-135.308,-81.448],[-138.946,-75.692],[-139.265,-71.064],[-135.779,-74.552],[-116.566,-74.334]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[9.114,-2.111],[4.496,-1.767],[4.801,-3.487],[-8.131,2.976],[-0.593,-8.138],[3.731,-1.307],[4.727,-1.92],[0,0],[-3.257,-0.45],[-4.569,1.781],[0,0],[-0.027,-1.75],[1.15,-0.489],[-4.438,1.227],[-3.237,1.58],[0,0]],"o":[[0,0],[0,0],[0,0],[-7.826,1.813],[-8.576,3.37],[-1.013,0.736],[8.408,-3.077],[0.221,3.033],[-1.892,0.663],[-4.595,1.867],[0,0],[1.61,0.223],[4.676,-1.823],[0,0],[0.027,1.75],[-7.42,3.157],[2.769,-0.765],[10.316,-5.035],[0,0]],"v":[[-100.914,-86.962],[-110.354,-116.06],[-112.038,-124.74],[-117.603,-123.535],[-140.746,-116.983],[-153.987,-110.236],[-148.369,-109.226],[-126.026,-110.582],[-127.249,-106.305],[-136.091,-103.346],[-140.16,-101.149],[-140.849,-97.138],[-136.217,-98.144],[-124.116,-100.167],[-123.446,-97.083],[-128.186,-95.39],[-131.608,-91.516],[-126.088,-93],[-110.572,-84.07]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[9.114,-2.111],[4.496,-1.767],[4.801,-3.487],[-8.131,2.976],[-0.593,-8.138],[3.731,-1.307],[4.727,-1.92],[0,0],[-3.257,-0.45],[-4.569,1.781],[0,0],[-0.027,-1.75],[1.15,-0.489],[-4.438,1.227],[-3.237,1.58],[0,0]],"o":[[0,0],[0,0],[0,0],[-7.826,1.813],[-8.576,3.37],[-1.013,0.736],[8.408,-3.077],[0.221,3.033],[-1.892,0.663],[-4.595,1.867],[0,0],[1.61,0.223],[4.676,-1.823],[0,0],[0.027,1.75],[-7.42,3.157],[2.769,-0.765],[10.316,-5.035],[0,0]],"v":[[-100.914,-86.962],[-110.354,-116.06],[-112.038,-124.74],[-117.603,-123.535],[-140.746,-116.983],[-153.987,-110.236],[-148.369,-109.226],[-126.026,-110.582],[-127.249,-106.305],[-136.091,-103.346],[-140.16,-101.149],[-140.849,-97.138],[-136.217,-98.144],[-124.116,-100.167],[-123.446,-97.083],[-128.186,-95.39],[-131.608,-91.516],[-126.088,-93],[-110.572,-84.07]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[9.353,-0.233],[4.76,-0.826],[5.404,-2.449],[-8.564,1.279],[1.057,-8.091],[3.917,-0.529],[5.016,-0.93],[0,0],[-3.1,-1.097],[-4.834,0.825],[0,0],[0.326,-1.719],[1.225,-0.248],[-4.594,0.308],[-3.489,0.896],[0,0]],"o":[[0,0],[0,0],[0,0],[-8.031,0.2],[-9.079,1.575],[-1.14,0.517],[8.855,-1.322],[-0.394,3.016],[-1.986,0.268],[-4.877,0.904],[0,0],[1.532,0.542],[4.948,-0.845],[0,0],[-0.326,1.719],[-7.904,1.599],[2.867,-0.192],[11.118,-2.856],[0,0]],"v":[[-72.835,-88.484],[-76.225,-118.887],[-76.127,-127.728],[-81.821,-127.668],[-105.809,-125.908],[-120.137,-121.964],[-114.837,-119.844],[-92.679,-116.675],[-94.738,-112.732],[-103.995,-111.614],[-108.422,-110.28],[-109.904,-106.49],[-105.165,-106.543],[-92.904,-106.089],[-92.868,-102.934],[-97.852,-102.229],[-101.984,-99.123],[-96.278,-99.466],[-82.878,-87.595]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":20,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"front_arm_circle","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[110.812,224.062,0],"e":[90.562,191.812,0],"to":[-3.375,-5.375,0],"ti":[5.125,6.95833349227905,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[90.562,191.812,0],"e":[80.062,182.312,0],"to":[-5.125,-6.95833349227905,0],"ti":[3.70833325386047,1.08333337306976,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[80.062,182.312,0],"e":[68.312,185.312,0],"to":[-3.70833325386047,-1.08333337306976,0],"ti":[4.25,-0.58333331346512,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[68.312,185.312,0],"e":[54.562,185.812,0],"to":[-4.25,0.58333331346512,0],"ti":[3.29166674613953,-0.33333334326744,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[54.562,185.812,0],"e":[48.562,187.312,0],"to":[-3.29166674613953,0.33333334326744,0],"ti":[1.5,-0.29166665673256,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[48.562,187.312,0],"e":[45.562,187.562,0],"to":[-1.5,0.29166665673256,0],"ti":[0.58333331346512,-0.08333333581686,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[45.562,187.562,0],"e":[45.062,187.812,0],"to":[-0.58333331346512,0.08333333581686,0],"ti":[0.45833334326744,-0.125,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[45.062,187.812,0],"e":[42.812,188.312,0],"to":[-0.45833334326744,0.125,0],"ti":[0.625,-0.16666667163372,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[42.812,188.312,0],"e":[41.312,188.812,0],"to":[-0.625,0.16666667163372,0],"ti":[0.25,-0.08333333581686,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[41.312,188.812,0],"e":[41.312,188.812,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[41.312,188.812,0],"e":[49.312,187.812,0],"to":[1.33333337306976,-0.16666667163372,0],"ti":[-3.54166674613953,2.70833325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[49.312,187.812,0],"e":[62.562,172.562,0],"to":[3.54166674613953,-2.70833325386047,0],"ti":[-8.125,3.45833325386047,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[62.562,172.562,0],"e":[98.062,167.062,0],"to":[8.125,-3.45833325386047,0],"ti":[-14.9166669845581,0.25,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[98.062,167.062,0],"e":[152.062,171.062,0],"to":[14.9166669845581,-0.25,0],"ti":[-20.7083339691162,-4.95833349227905,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[152.062,171.062,0],"e":[222.312,196.812,0],"to":[20.7083339691162,4.95833349227905,0],"ti":[-21.7083339691162,-15.2083330154419,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[222.312,196.812,0],"e":[282.312,262.312,0],"to":[21.7083339691162,15.2083330154419,0],"ti":[-10,-10.9166669845581,0]},{"t":20}]},"a":{"k":[-135.188,-77.188,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":3,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":17,"s":[100,100,100],"e":[36,36,100]},{"t":20}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[10.124,10.124]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-135.188,-77.188],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":3,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"front_arm_shadow","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[5.873,-7.421],[13.663,9.54],[0,0],[2.685,1.964],[0,0],[0,0],[0,0],[0,0]],"o":[[-5.873,7.421],[-24.846,-17.349],[0,0],[-5.471,-4.002],[0,0],[0,0],[0,0],[0,0]],"v":[[-81.754,-39.574],[-112.663,-54.29],[-133.659,-74.011],[-136.779,-80.248],[-145.752,-78.531],[-151.515,-86.093],[-162.715,-72.933],[-89.727,-22.924]],"c":true}],"e":[{"i":[[-3.58,-8.761],[10.739,-5.08],[0,0],[5.45,-2.22],[0,0],[0,0],[0,0],[0,0]],"o":[[3.58,8.761],[-53.129,25.134],[0,0],[-6.878,2.802],[0,0],[0,0],[0,0],[0,0]],"v":[[-78.248,-148.139],[-92.886,-129.231],[-153.671,-108.401],[-161.667,-112.771],[-165.846,-103.391],[-172.854,-101.012],[-166.89,-84.793],[-67.273,-125.05]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-3.58,-8.761],[10.739,-5.08],[0,0],[5.45,-2.22],[0,0],[0,0],[0,0],[0,0]],"o":[[3.58,8.761],[-53.129,25.134],[0,0],[-6.878,2.802],[0,0],[0,0],[0,0],[0,0]],"v":[[-78.248,-148.139],[-92.886,-129.231],[-153.671,-108.401],[-161.667,-112.771],[-165.846,-103.391],[-172.854,-101.012],[-166.89,-84.793],[-67.273,-125.05]],"c":true}],"e":[{"i":[[-8.453,-4.255],[4.761,-10.884],[0,0],[2.651,-5.253],[0,0],[0,0],[0,0],[0,0]],"o":[[8.453,4.255],[-23.554,53.848],[0,0],[-3.346,6.63],[0,0],[0,0],[0,0],[0,0]],"v":[[-136.326,-202.22],[-134.946,-178.348],[-167.1,-122.717],[-176,-120.76],[-172.989,-110.942],[-176.712,-104.546],[-161.562,-96.233],[-112.885,-192.018]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-8.453,-4.255],[4.761,-10.884],[0,0],[2.651,-5.253],[0,0],[0,0],[0,0],[0,0]],"o":[[8.453,4.255],[-23.554,53.848],[0,0],[-3.346,6.63],[0,0],[0,0],[0,0],[0,0]],"v":[[-136.326,-202.22],[-134.946,-178.348],[-167.1,-122.717],[-176,-120.76],[-172.989,-110.942],[-176.712,-104.546],[-161.562,-96.233],[-112.885,-192.018]],"c":true}],"e":[{"i":[[-9.25,-2],[2.32,-11.651],[0,0],[1.25,-5.75],[0,0],[0,0],[0,0],[0,0]],"o":[[9.25,2],[-11,55.25],[0,0],[-1.578,7.257],[0,0],[0,0],[0,0],[0,0]],"v":[[-174.25,-202.25],[-165.5,-179.25],[-179.75,-120.75],[-187.875,-116.625],[-182.5,-107.875],[-184.5,-100.75],[-167.75,-96.5],[-145.75,-196.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-9.25,-2],[2.32,-11.651],[0,0],[1.25,-5.75],[0,0],[0,0],[0,0],[0,0]],"o":[[9.25,2],[-11,55.25],[0,0],[-1.578,7.257],[0,0],[0,0],[0,0],[0,0]],"v":[[-174.25,-202.25],[-165.5,-179.25],[-179.75,-120.75],[-187.875,-116.625],[-182.5,-107.875],[-184.5,-100.75],[-167.75,-96.5],[-145.75,-196.75]],"c":true}],"e":[{"i":[[-9.462,-0.166],[0.013,-11.88],[0,0],[0.047,-7.622],[0,0],[0,0],[0,0],[0,0]],"o":[[9.462,0.166],[-0.063,56.334],[0,0],[-0.051,8.187],[0,0],[0,0],[0,0],[0,0]],"v":[[-207.479,-198.237],[-191.591,-180.015],[-194.78,-121.311],[-202.699,-114.937],[-196.478,-106.647],[-198.056,-100.519],[-180.8,-99.602],[-178.683,-202.216]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-9.462,-0.166],[0.013,-11.88],[0,0],[0.047,-7.622],[0,0],[0,0],[0,0],[0,0]],"o":[[9.462,0.166],[-0.063,56.334],[0,0],[-0.051,8.187],[0,0],[0,0],[0,0],[0,0]],"v":[[-207.479,-198.237],[-191.591,-180.015],[-194.78,-121.311],[-202.699,-114.937],[-196.478,-106.647],[-198.056,-100.519],[-180.8,-99.602],[-178.683,-202.216]],"c":true}],"e":[{"i":[[-9.371,1.32],[-1.85,-11.735],[0,0],[-1.246,-7.743],[0,0],[0,0],[0,0],[0,0]],"o":[[9.371,-1.32],[8.773,55.647],[0,0],[1.301,8.083],[0,0],[0,0],[0,0],[0,0]],"v":[[-226.789,-193.027],[-206.24,-179.022],[-202.182,-120.044],[-209.004,-111.507],[-201.309,-105.546],[-202.157,-97.996],[-184.971,-99.797],[-198.973,-201.473]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-9.371,1.32],[-1.85,-11.735],[0,0],[-1.246,-7.743],[0,0],[0,0],[0,0],[0,0]],"o":[[9.371,-1.32],[8.773,55.647],[0,0],[1.301,8.083],[0,0],[0,0],[0,0],[0,0]],"v":[[-226.789,-193.027],[-206.24,-179.022],[-202.182,-120.044],[-209.004,-111.507],[-201.309,-105.546],[-202.157,-97.996],[-184.971,-99.797],[-198.973,-201.473]],"c":true}],"e":[{"i":[[-9.262,1.945],[-2.633,-11.584],[0,0],[-1.762,-7.642],[0,0],[0,0],[0,0],[0,0]],"o":[[9.262,-1.945],[12.484,54.934],[0,0],[1.84,7.978],[0,0],[0,0],[0,0],[0,0]],"v":[[-234.849,-191.185],[-213.406,-178.589],[-205.404,-120.016],[-211.638,-111.041],[-203.561,-105.609],[-203.901,-98.019],[-186.874,-100.968],[-207.662,-201.477]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-9.262,1.945],[-2.633,-11.584],[0,0],[-1.762,-7.642],[0,0],[0,0],[0,0],[0,0]],"o":[[9.262,-1.945],[12.484,54.934],[0,0],[1.84,7.978],[0,0],[0,0],[0,0],[0,0]],"v":[[-234.849,-191.185],[-213.406,-178.589],[-205.404,-120.016],[-211.638,-111.041],[-203.561,-105.609],[-203.901,-98.019],[-186.874,-100.968],[-207.662,-201.477]],"c":true}],"e":[{"i":[[-9.221,2.13],[-2.863,-11.529],[0,0],[-1.915,-7.605],[0,0],[0,0],[0,0],[0,0]],"o":[[9.221,-2.13],[13.579,54.673],[0,0],[1.999,7.939],[0,0],[0,0],[0,0],[0,0]],"v":[[-236.395,-190.571],[-215.706,-178.656],[-205.535,-120.004],[-211.588,-110.906],[-203.404,-105.637],[-203.592,-98.042],[-186.627,-101.331],[-209.419,-201.403]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-9.221,2.13],[-2.863,-11.529],[0,0],[-1.915,-7.605],[0,0],[0,0],[0,0],[0,0]],"o":[[9.221,-2.13],[13.579,54.673],[0,0],[1.999,7.939],[0,0],[0,0],[0,0],[0,0]],"v":[[-236.395,-190.571],[-215.706,-178.656],[-205.535,-120.004],[-211.588,-110.906],[-203.404,-105.637],[-203.592,-98.042],[-186.627,-101.331],[-209.419,-201.403]],"c":true}],"e":[{"i":[[-9.002,2.921],[-3.851,-11.238],[0,0],[-2.566,-7.411],[0,0],[0,0],[0,0],[0,0]],"o":[[9.002,-2.921],[18.264,53.292],[0,0],[2.679,7.736],[0,0],[0,0],[0,0],[0,0]],"v":[[-245.549,-186.774],[-222.887,-176.534],[-208.692,-119.146],[-213.935,-109.558],[-205.325,-105.017],[-204.854,-97.435],[-188.238,-102.181],[-219.613,-199.903]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-9.002,2.921],[-3.851,-11.238],[0,0],[-2.566,-7.411],[0,0],[0,0],[0,0],[0,0]],"o":[[9.002,-2.921],[18.264,53.292],[0,0],[2.679,7.736],[0,0],[0,0],[0,0],[0,0]],"v":[[-245.549,-186.774],[-222.887,-176.534],[-208.692,-119.146],[-213.935,-109.558],[-205.325,-105.017],[-204.854,-97.435],[-188.238,-102.181],[-219.613,-199.903]],"c":true}],"e":[{"i":[[-8.894,3.234],[-4.242,-11.096],[0,0],[-2.824,-7.316],[0,0],[0,0],[0,0],[0,0]],"o":[[8.894,-3.234],[20.118,52.62],[0,0],[2.948,7.638],[0,0],[0,0],[0,0],[0,0]],"v":[[-249.894,-184.905],[-229.138,-175.215],[-210.692,-118.609],[-215.595,-108.843],[-206.832,-104.606],[-206.096,-97.045],[-189.656,-102.37],[-224.434,-198.934]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-8.894,3.234],[-4.242,-11.096],[0,0],[-2.824,-7.316],[0,0],[0,0],[0,0],[0,0]],"o":[[8.894,-3.234],[20.118,52.62],[0,0],[2.948,7.638],[0,0],[0,0],[0,0],[0,0]],"v":[[-249.894,-184.905],[-229.138,-175.215],[-210.692,-118.609],[-215.595,-108.843],[-206.832,-104.606],[-206.096,-97.045],[-189.656,-102.37],[-224.434,-198.934]],"c":true}],"e":[{"i":[[-8.894,3.234],[-4.242,-11.096],[0,0],[-2.824,-7.316],[0,0],[0,0],[0,0],[0,0]],"o":[[8.894,-3.234],[20.118,52.62],[0,0],[2.948,7.638],[0,0],[0,0],[0,0],[0,0]],"v":[[-249.894,-184.905],[-229.138,-175.215],[-210.692,-118.609],[-215.595,-108.843],[-206.832,-104.606],[-206.096,-97.045],[-189.656,-102.37],[-224.434,-198.934]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-8.894,3.234],[-4.242,-11.096],[0,0],[-2.824,-7.316],[0,0],[0,0],[0,0],[0,0]],"o":[[8.894,-3.234],[20.118,52.62],[0,0],[2.948,7.638],[0,0],[0,0],[0,0],[0,0]],"v":[[-249.894,-184.905],[-229.138,-175.215],[-210.692,-118.609],[-215.595,-108.843],[-206.832,-104.606],[-206.096,-97.045],[-189.656,-102.37],[-224.434,-198.934]],"c":true}],"e":[{"i":[[-9.002,2.921],[-3.851,-11.238],[0,0],[-2.566,-7.411],[0,0],[0,0],[0,0],[0,0]],"o":[[9.002,-2.921],[18.264,53.292],[0,0],[2.679,7.736],[0,0],[0,0],[0,0],[0,0]],"v":[[-239.799,-187.274],[-214.637,-178.284],[-202.942,-119.646],[-208.185,-110.058],[-199.575,-105.517],[-199.104,-97.935],[-182.488,-102.681],[-204.613,-201.903]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-9.002,2.921],[-3.851,-11.238],[0,0],[-2.566,-7.411],[0,0],[0,0],[0,0],[0,0]],"o":[[9.002,-2.921],[18.264,53.292],[0,0],[2.679,7.736],[0,0],[0,0],[0,0],[0,0]],"v":[[-239.799,-187.274],[-214.637,-178.284],[-202.942,-119.646],[-208.185,-110.058],[-199.575,-105.517],[-199.104,-97.935],[-182.488,-102.681],[-204.613,-201.903]],"c":true}],"e":[{"i":[[-9.454,0.426],[-0.729,-11.857],[0,0],[-0.506,-7.826],[0,0],[0,0],[0,0],[0,0]],"o":[[9.454,-0.426],[3.458,56.228],[0,0],[0.529,8.17],[0,0],[0,0],[0,0],[0,0]],"v":[[-204.322,-210.091],[-182.451,-194.742],[-186.745,-135.104],[-194.345,-127.252],[-187.251,-120.588],[-188.81,-113.153],[-171.53,-113.316],[-166.515,-214.852]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-9.454,0.426],[-0.729,-11.857],[0,0],[-0.506,-7.826],[0,0],[0,0],[0,0],[0,0]],"o":[[9.454,-0.426],[3.458,56.228],[0,0],[0.529,8.17],[0,0],[0,0],[0,0],[0,0]],"v":[[-204.322,-210.091],[-182.451,-194.742],[-186.745,-135.104],[-194.345,-127.252],[-187.251,-120.588],[-188.81,-113.153],[-171.53,-113.316],[-166.515,-214.852]],"c":true}],"e":[{"i":[[-8.624,-3.898],[4.714,-10.904],[0,0],[3.555,-7.081],[0,0],[0,0],[0,0],[0,0]],"o":[[8.624,3.898],[-22.355,51.709],[0,0],[-2.364,4.71],[0,0],[0,0],[0,0],[0,0]],"v":[[-129.974,-213.558],[-117.413,-189.975],[-148.224,-138.733],[-158.305,-135.669],[-155.242,-126.016],[-157.247,-119.341],[-144.513,-112.419],[-94.103,-200.699]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-8.624,-3.898],[4.714,-10.904],[0,0],[3.555,-7.081],[0,0],[0,0],[0,0],[0,0]],"o":[[8.624,3.898],[-22.355,51.709],[0,0],[-2.364,4.71],[0,0],[0,0],[0,0],[0,0]],"v":[[-129.974,-213.558],[-117.413,-189.975],[-148.224,-138.733],[-158.305,-135.669],[-155.242,-126.016],[-157.247,-119.341],[-144.513,-112.419],[-94.103,-200.699]],"c":true}],"e":[{"i":[[-4.376,-8.391],[10.442,-5.665],[0,0],[7.169,-3.375],[0,0],[0,0],[0,0],[0,0]],"o":[[4.376,8.391],[-49.516,26.866],[0,0],[-4.768,2.245],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.646,-177.528],[-35.33,-151.222],[-91.209,-129.945],[-101.029,-133.76],[-104.582,-124.276],[-110.281,-120.264],[-104.54,-106.956],[-10.373,-145.262]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-4.376,-8.391],[10.442,-5.665],[0,0],[7.169,-3.375],[0,0],[0,0],[0,0],[0,0]],"o":[[4.376,8.391],[-49.516,26.866],[0,0],[-4.768,2.245],[0,0],[0,0],[0,0],[0,0]],"v":[[-30.646,-177.528],[-35.33,-151.222],[-91.209,-129.945],[-101.029,-133.76],[-104.582,-124.276],[-110.281,-120.264],[-104.54,-106.956],[-10.373,-145.262]],"c":true}],"e":[{"i":[[8.249,-4.639],[5.993,10.257],[0,0],[3.6,7.059],[0,0],[0,0],[0,0],[0,0]],"o":[[-8.249,4.639],[-28.418,-48.641],[0,0],[-2.394,-4.695],[0,0],[0,0],[0,0],[0,0]],"v":[[35.023,-10.832],[-0.918,-41.681],[-23.952,-96.859],[-21.449,-105.796],[-30.04,-110.047],[-34.23,-115.616],[-47.351,-109.457],[1.414,2.451]],"c":true}]},{"t":19}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[3.25,-3.25],[-1.5,-1.5],[0,0],[-3,1.75],[1,6],[3.75,3],[2.25,1.75]],"o":[[-8.31,8.31],[1.5,1.5],[0,0],[3,-1.75],[-1,-6],[-3.75,-3],[-2.25,-1.75]],"v":[[-145,-85.5],[-132,-62.25],[-92.25,-35.25],[-85.5,-35],[-83,-45.25],[-103,-66],[-132.75,-85.25]],"c":true}],"e":[{"i":[[-1.418,-6.519],[-2.095,0.335],[0,0],[-1.03,3.317],[7.376,-0.043],[4.629,-1.277],[2.737,-0.796]],"o":[[2.55,11.721],[2.095,-0.335],[0,0],[2.78,-8.956],[-13.885,0.082],[-4.629,1.277],[-2.737,0.796]],"v":[[-171.082,-104.481],[-149.376,-100.12],[-100.942,-116.224],[-83.03,-126.794],[-93.365,-138.582],[-130.651,-128.306],[-165.943,-115.005]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-1.418,-6.519],[-2.095,0.335],[0,0],[-1.03,3.317],[7.376,-0.043],[4.629,-1.277],[2.737,-0.796]],"o":[[2.55,11.721],[2.095,-0.335],[0,0],[2.78,-8.956],[-13.885,0.082],[-4.629,1.277],[-2.737,0.796]],"v":[[-171.082,-104.481],[-149.376,-100.12],[-100.942,-116.224],[-83.03,-126.794],[-93.365,-138.582],[-130.651,-128.306],[-165.943,-115.005]],"c":true}],"e":[{"i":[[-6.347,-3.45],[-1.358,1.629],[0,0],[0.758,4.423],[6.045,-6.739],[2.649,-4.006],[1.54,-2.399]],"o":[[8.69,4.723],[1.358,-1.629],[0,0],[-1.584,-9.242],[-9.272,10.337],[-2.649,4.006],[-1.54,2.399]],"v":[[-175.44,-108.723],[-160.468,-110.957],[-134.807,-165.182],[-125.008,-191.923],[-142.795,-192.261],[-163.137,-155.756],[-180.237,-121.782]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-6.347,-3.45],[-1.358,1.629],[0,0],[0.758,4.423],[6.045,-6.739],[2.649,-4.006],[1.54,-2.399]],"o":[[8.69,4.723],[1.358,-1.629],[0,0],[-1.584,-9.242],[-9.272,10.337],[-2.649,4.006],[-1.54,2.399]],"v":[[-175.44,-108.723],[-160.468,-110.957],[-134.807,-165.182],[-125.008,-191.923],[-142.795,-192.261],[-163.137,-155.756],[-180.237,-121.782]],"c":true}],"e":[{"i":[[-7.074,-1.466],[-0.829,1.953],[0,0],[2.005,4.014],[2.765,-8.435],[1.675,-10.764],[0.214,-7.483]],"o":[[9.685,2.007],[0.829,-1.953],[0,0],[-4.191,-8.389],[-4.326,13.195],[-0.739,4.745],[-0.081,2.849]],"v":[[-182.844,-104.905],[-170.658,-113.625],[-161.034,-168.456],[-158.142,-192.638],[-178.765,-190.565],[-186.675,-154.236],[-191.464,-117.267]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-7.074,-1.466],[-0.829,1.953],[0,0],[2.005,4.014],[2.765,-8.435],[1.675,-10.764],[0.214,-7.483]],"o":[[9.685,2.007],[0.829,-1.953],[0,0],[-4.191,-8.389],[-4.326,13.195],[-0.739,4.745],[-0.081,2.849]],"v":[[-182.844,-104.905],[-170.658,-113.625],[-161.034,-168.456],[-158.142,-192.638],[-178.765,-190.565],[-186.675,-154.236],[-191.464,-117.267]],"c":true}],"e":[{"i":[[-7.206,-0.512],[-0.562,2.046],[0,0],[3.43,4.838],[1.345,-10.209],[0.228,-10.892],[-0.784,-7.444]],"o":[[9.866,0.701],[0.562,-2.046],[0,0],[-6.288,-8.868],[-1.814,13.767],[-0.101,4.801],[0.298,2.835]],"v":[[-195.991,-103.35],[-184.324,-113.113],[-183.83,-166.987],[-186.43,-189.838],[-204.345,-185.541],[-206.352,-150.982],[-205.429,-113.955]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-7.206,-0.512],[-0.562,2.046],[0,0],[3.43,4.838],[1.345,-10.209],[0.228,-10.892],[-0.784,-7.444]],"o":[[9.866,0.701],[0.562,-2.046],[0,0],[-6.288,-8.868],[-1.814,13.767],[-0.101,4.801],[0.298,2.835]],"v":[[-195.991,-103.35],[-184.324,-113.113],[-183.83,-166.987],[-186.43,-189.838],[-204.345,-185.541],[-206.352,-150.982],[-205.429,-113.955]],"c":true}],"e":[{"i":[[-7.217,0.32],[0.008,2.121],[0,0],[4.098,5.87],[-0.6,-8.708],[-1.025,-10.846],[-0.739,-7.449]],"o":[[9.881,-0.438],[-0.061,-16.105],[0,0],[-6.223,-8.914],[0.83,12.047],[0.452,4.781],[0.502,5.056]],"v":[[-200.158,-101.105],[-189.439,-112.645],[-195.139,-165.218],[-202.348,-185.37],[-219.4,-179.792],[-216.422,-147.982],[-210.752,-109.306]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-7.217,0.32],[0.008,2.121],[0,0],[4.098,5.87],[-0.6,-8.708],[-1.025,-10.846],[-0.739,-7.449]],"o":[[9.881,-0.438],[-0.061,-16.105],[0,0],[-6.223,-8.914],[0.83,12.047],[0.452,4.781],[0.502,5.056]],"v":[[-200.158,-101.105],[-189.439,-112.645],[-195.139,-165.218],[-202.348,-185.37],[-219.4,-179.792],[-216.422,-147.982],[-210.752,-109.306]],"c":true}],"e":[{"i":[[-7.206,0.52],[0.067,2.12],[0,0],[4.259,5.754],[-0.841,-8.688],[-1.325,-10.813],[-0.945,-7.426]],"o":[[9.865,-0.711],[-0.507,-16.097],[0,0],[-6.467,-8.738],[1.164,12.02],[0.584,4.767],[0.642,5.04]],"v":[[-203.419,-101.139],[-193.024,-112.971],[-200.179,-165.367],[-207.944,-185.31],[-224.835,-179.262],[-220.976,-147.546],[-214.236,-109.043]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-7.206,0.52],[0.067,2.12],[0,0],[4.259,5.754],[-0.841,-8.688],[-1.325,-10.813],[-0.945,-7.426]],"o":[[9.865,-0.711],[-0.507,-16.097],[0,0],[-6.467,-8.738],[1.164,12.02],[0.584,4.767],[0.642,5.04]],"v":[[-203.419,-101.139],[-193.024,-112.971],[-200.179,-165.367],[-207.944,-185.31],[-224.835,-179.262],[-220.976,-147.546],[-214.236,-109.043]],"c":true}],"e":[{"i":[[-7.179,0.806],[0.151,2.116],[0,0],[4.484,5.58],[-1.409,-8.549],[-1.754,-10.752],[-1.24,-7.382]],"o":[[9.829,-1.103],[-1.146,-16.064],[0,0],[-6.81,-8.474],[1.964,11.915],[0.773,4.74],[0.841,5.011]],"v":[[-203.087,-99.991],[-193.171,-112.227],[-202.403,-165.297],[-210.954,-184.166],[-227.591,-177.451],[-222.475,-146.664],[-214.71,-107.959]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-7.179,0.806],[0.151,2.116],[0,0],[4.484,5.58],[-1.409,-8.549],[-1.754,-10.752],[-1.24,-7.382]],"o":[[9.829,-1.103],[-1.146,-16.064],[0,0],[-6.81,-8.474],[1.964,11.915],[0.773,4.74],[0.841,5.011]],"v":[[-203.087,-99.991],[-193.171,-112.227],[-202.403,-165.297],[-210.954,-184.166],[-227.591,-177.451],[-222.475,-146.664],[-214.71,-107.959]],"c":true}],"e":[{"i":[[-7.084,1.419],[0.332,2.095],[0,0],[4.947,5.174],[-2.138,-8.396],[-2.671,-10.562],[-1.869,-7.248]],"o":[[9.698,-1.943],[-2.522,-15.906],[0,0],[-7.512,-7.858],[2.98,11.702],[1.177,4.656],[1.269,4.92]],"v":[[-204.322,-99.732],[-195.994,-112.524],[-206.751,-162.105],[-217.392,-183.42],[-233.141,-175.3],[-226.149,-145.316],[-216.586,-106.672]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-7.084,1.419],[0.332,2.095],[0,0],[4.947,5.174],[-2.138,-8.396],[-2.671,-10.562],[-1.869,-7.248]],"o":[[9.698,-1.943],[-2.522,-15.906],[0,0],[-7.512,-7.858],[2.98,11.702],[1.177,4.656],[1.269,4.92]],"v":[[-204.322,-99.732],[-195.994,-112.524],[-206.751,-162.105],[-217.392,-183.42],[-233.141,-175.3],[-226.149,-145.316],[-216.586,-106.672]],"c":true}],"e":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}],"e":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}],"e":[{"i":[[-7.07,1.484],[0.259,2.105],[0,0],[4.994,5.129],[-2.215,-8.376],[-2.768,-10.537],[-1.936,-7.231]],"o":[[9.68,-2.032],[-2.584,-21.011],[0,0],[-7.584,-7.788],[3.087,11.675],[1.22,4.645],[1.314,4.908]],"v":[[-197.364,-101.241],[-189.049,-115.356],[-199.079,-163.983],[-209.915,-185.199],[-225.09,-176.894],[-219.525,-147.62],[-209.733,-107.57]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-7.07,1.484],[0.259,2.105],[0,0],[4.994,5.129],[-2.215,-8.376],[-2.768,-10.537],[-1.936,-7.231]],"o":[[9.68,-2.032],[-2.584,-21.011],[0,0],[-7.584,-7.788],[3.087,11.675],[1.22,4.645],[1.314,4.908]],"v":[[-197.364,-101.241],[-189.049,-115.356],[-199.079,-163.983],[-209.915,-185.199],[-225.09,-176.894],[-219.525,-147.62],[-209.733,-107.57]],"c":true}],"e":[{"i":[[-7.217,-0.324],[-0.274,2.104],[0,0],[3.559,6.211],[0.613,-8.642],[-0.055,-10.894],[-0.073,-7.485]],"o":[[9.881,0.444],[2.733,-20.992],[0,0],[-5.404,-9.433],[-0.889,12.53],[0.024,4.802],[0.049,5.081]],"v":[[-186.612,-115.355],[-175.042,-126.952],[-172.638,-176.545],[-176.845,-199.792],[-193.861,-195.53],[-196.516,-165.793],[-197.014,-124.317]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-7.217,-0.324],[-0.274,2.104],[0,0],[3.559,6.211],[0.613,-8.642],[-0.055,-10.894],[-0.073,-7.485]],"o":[[9.881,0.444],[2.733,-20.992],[0,0],[-5.404,-9.433],[-0.889,12.53],[0.024,4.802],[0.049,5.081]],"v":[[-186.612,-115.355],[-175.042,-126.952],[-172.638,-176.545],[-176.845,-199.792],[-193.861,-195.53],[-196.516,-165.793],[-197.014,-124.317]],"c":true}],"e":[{"i":[[-6.318,-3.504],[-1.182,1.762],[0,0],[0.42,7.146],[4.397,-7.465],[4.802,-9.779],[3.268,-6.735]],"o":[[8.649,4.798],[11.795,-17.579],[0,0],[-0.638,-10.852],[-6.376,10.823],[-2.117,4.311],[-2.218,4.571]],"v":[[-155.667,-122.126],[-140.144,-127.357],[-115.907,-170.691],[-109.322,-193.379],[-126.456,-197.141],[-142.075,-171.697],[-160.991,-134.782]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-6.318,-3.504],[-1.182,1.762],[0,0],[0.42,7.146],[4.397,-7.465],[4.802,-9.779],[3.268,-6.735]],"o":[[8.649,4.798],[11.795,-17.579],[0,0],[-0.638,-10.852],[-6.376,10.823],[-2.117,4.311],[-2.218,4.571]],"v":[[-155.667,-122.126],[-140.144,-127.357],[-115.907,-170.691],[-109.322,-193.379],[-126.456,-197.141],[-142.075,-171.697],[-160.991,-134.782]],"c":true}],"e":[{"i":[[-2.54,-6.763],[-2.042,0.575],[0,0],[-4.312,5.715],[8.187,-2.835],[9.995,-4.334],[6.854,-3.011]],"o":[[3.478,9.259],[20.375,-5.742],[0,0],[6.547,-8.678],[-11.87,4.11],[-4.406,1.911],[-4.652,2.044]],"v":[[-107.578,-124.427],[-92.366,-118.35],[-45.824,-135.642],[-26.104,-149.153],[-36.964,-163.622],[-65.1,-153.369],[-103.43,-137.515]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-2.54,-6.763],[-2.042,0.575],[0,0],[-4.312,5.715],[8.187,-2.835],[9.995,-4.334],[6.854,-3.011]],"o":[[3.478,9.259],[20.375,-5.742],[0,0],[6.547,-8.678],[-11.87,4.11],[-4.406,1.911],[-4.652,2.044]],"v":[[-107.578,-124.427],[-92.366,-118.35],[-45.824,-135.642],[-26.104,-149.153],[-36.964,-163.622],[-65.1,-153.369],[-103.43,-137.515]],"c":true}],"e":[{"i":[[6.684,-2.741],[-0.636,-2.024],[-2.747,-6.111],[-5.841,-4.139],[1.556,8.523],[4.632,9.86],[6.644,8.182]],"o":[[-9.151,3.753],[6.35,20.194],[4.291,9.546],[8.87,6.285],[-3.691,-20.222],[-2.042,-4.347],[-3.203,-3.945]],"v":[[-32.85,-114.437],[-37.719,-96.3],[-18.541,-49.796],[4.553,-17.489],[20.691,-27.278],[0.35,-76.094],[-18.644,-110.182]],"c":true}]},{"t":19}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"front_arm","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[3.25,-3.25],[-1.5,-1.5],[0,0],[-3,1.75],[1,6],[3.75,3],[2.25,1.75]],"o":[[-8.31,8.31],[1.5,1.5],[0,0],[3,-1.75],[-1,-6],[-3.75,-3],[-2.25,-1.75]],"v":[[-145,-85.5],[-132,-62.25],[-92.25,-35.25],[-85.5,-35],[-83,-45.25],[-103,-66],[-132.75,-85.25]],"c":true}],"e":[{"i":[[-1.418,-6.519],[-2.095,0.335],[0,0],[-1.03,3.317],[7.376,-0.043],[4.629,-1.277],[2.737,-0.796]],"o":[[2.55,11.721],[2.095,-0.335],[0,0],[2.78,-8.956],[-13.885,0.082],[-4.629,1.277],[-2.737,0.796]],"v":[[-171.082,-104.481],[-149.376,-100.12],[-100.942,-116.224],[-83.03,-126.794],[-93.365,-138.582],[-130.651,-128.306],[-165.943,-115.005]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-1.418,-6.519],[-2.095,0.335],[0,0],[-1.03,3.317],[7.376,-0.043],[4.629,-1.277],[2.737,-0.796]],"o":[[2.55,11.721],[2.095,-0.335],[0,0],[2.78,-8.956],[-13.885,0.082],[-4.629,1.277],[-2.737,0.796]],"v":[[-171.082,-104.481],[-149.376,-100.12],[-100.942,-116.224],[-83.03,-126.794],[-93.365,-138.582],[-130.651,-128.306],[-165.943,-115.005]],"c":true}],"e":[{"i":[[-6.347,-3.45],[-1.358,1.629],[0,0],[0.758,4.423],[6.045,-6.739],[2.649,-4.006],[1.54,-2.399]],"o":[[8.69,4.723],[1.358,-1.629],[0,0],[-1.584,-9.242],[-9.272,10.337],[-2.649,4.006],[-1.54,2.399]],"v":[[-175.44,-108.723],[-160.468,-110.957],[-134.807,-165.182],[-125.008,-191.923],[-142.795,-192.261],[-163.137,-155.756],[-180.237,-121.782]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-6.347,-3.45],[-1.358,1.629],[0,0],[0.758,4.423],[6.045,-6.739],[2.649,-4.006],[1.54,-2.399]],"o":[[8.69,4.723],[1.358,-1.629],[0,0],[-1.584,-9.242],[-9.272,10.337],[-2.649,4.006],[-1.54,2.399]],"v":[[-175.44,-108.723],[-160.468,-110.957],[-134.807,-165.182],[-125.008,-191.923],[-142.795,-192.261],[-163.137,-155.756],[-180.237,-121.782]],"c":true}],"e":[{"i":[[-7.074,-1.466],[-0.829,1.953],[0,0],[2.005,4.014],[2.765,-8.435],[1.675,-10.764],[0.214,-7.483]],"o":[[9.685,2.007],[0.829,-1.953],[0,0],[-4.191,-8.389],[-4.326,13.195],[-0.739,4.745],[-0.081,2.849]],"v":[[-182.844,-104.905],[-170.658,-113.625],[-161.034,-168.456],[-158.142,-192.638],[-178.765,-190.565],[-186.675,-154.236],[-191.464,-117.267]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-7.074,-1.466],[-0.829,1.953],[0,0],[2.005,4.014],[2.765,-8.435],[1.675,-10.764],[0.214,-7.483]],"o":[[9.685,2.007],[0.829,-1.953],[0,0],[-4.191,-8.389],[-4.326,13.195],[-0.739,4.745],[-0.081,2.849]],"v":[[-182.844,-104.905],[-170.658,-113.625],[-161.034,-168.456],[-158.142,-192.638],[-178.765,-190.565],[-186.675,-154.236],[-191.464,-117.267]],"c":true}],"e":[{"i":[[-7.206,-0.512],[-0.562,2.046],[0,0],[3.43,4.838],[1.345,-10.209],[0.228,-10.892],[-0.784,-7.444]],"o":[[9.866,0.701],[0.562,-2.046],[0,0],[-6.288,-8.868],[-1.814,13.767],[-0.101,4.801],[0.298,2.835]],"v":[[-195.991,-103.35],[-184.324,-113.113],[-183.83,-166.987],[-186.43,-189.838],[-204.345,-185.541],[-206.352,-150.982],[-205.429,-113.955]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-7.206,-0.512],[-0.562,2.046],[0,0],[3.43,4.838],[1.345,-10.209],[0.228,-10.892],[-0.784,-7.444]],"o":[[9.866,0.701],[0.562,-2.046],[0,0],[-6.288,-8.868],[-1.814,13.767],[-0.101,4.801],[0.298,2.835]],"v":[[-195.991,-103.35],[-184.324,-113.113],[-183.83,-166.987],[-186.43,-189.838],[-204.345,-185.541],[-206.352,-150.982],[-205.429,-113.955]],"c":true}],"e":[{"i":[[-7.217,0.32],[0.008,2.121],[0,0],[4.098,5.87],[-0.6,-8.708],[-1.025,-10.846],[-0.739,-7.449]],"o":[[9.881,-0.438],[-0.061,-16.105],[0,0],[-6.223,-8.914],[0.83,12.047],[0.452,4.781],[0.502,5.056]],"v":[[-200.158,-101.105],[-189.439,-112.645],[-195.139,-165.218],[-202.348,-185.37],[-219.4,-179.792],[-216.422,-147.982],[-210.752,-109.306]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-7.217,0.32],[0.008,2.121],[0,0],[4.098,5.87],[-0.6,-8.708],[-1.025,-10.846],[-0.739,-7.449]],"o":[[9.881,-0.438],[-0.061,-16.105],[0,0],[-6.223,-8.914],[0.83,12.047],[0.452,4.781],[0.502,5.056]],"v":[[-200.158,-101.105],[-189.439,-112.645],[-195.139,-165.218],[-202.348,-185.37],[-219.4,-179.792],[-216.422,-147.982],[-210.752,-109.306]],"c":true}],"e":[{"i":[[-7.206,0.52],[0.067,2.12],[0,0],[4.259,5.754],[-0.841,-8.688],[-1.325,-10.813],[-0.945,-7.426]],"o":[[9.865,-0.711],[-0.507,-16.097],[0,0],[-6.467,-8.738],[1.164,12.02],[0.584,4.767],[0.642,5.04]],"v":[[-203.419,-101.139],[-193.024,-112.971],[-200.179,-165.367],[-207.944,-185.31],[-224.835,-179.262],[-220.976,-147.546],[-214.236,-109.043]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-7.206,0.52],[0.067,2.12],[0,0],[4.259,5.754],[-0.841,-8.688],[-1.325,-10.813],[-0.945,-7.426]],"o":[[9.865,-0.711],[-0.507,-16.097],[0,0],[-6.467,-8.738],[1.164,12.02],[0.584,4.767],[0.642,5.04]],"v":[[-203.419,-101.139],[-193.024,-112.971],[-200.179,-165.367],[-207.944,-185.31],[-224.835,-179.262],[-220.976,-147.546],[-214.236,-109.043]],"c":true}],"e":[{"i":[[-7.179,0.806],[0.151,2.116],[0,0],[4.484,5.58],[-1.409,-8.549],[-1.754,-10.752],[-1.24,-7.382]],"o":[[9.829,-1.103],[-1.146,-16.064],[0,0],[-6.81,-8.474],[1.964,11.915],[0.773,4.74],[0.841,5.011]],"v":[[-203.087,-99.991],[-193.171,-112.227],[-202.403,-165.297],[-210.954,-184.166],[-227.591,-177.451],[-222.475,-146.664],[-214.71,-107.959]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-7.179,0.806],[0.151,2.116],[0,0],[4.484,5.58],[-1.409,-8.549],[-1.754,-10.752],[-1.24,-7.382]],"o":[[9.829,-1.103],[-1.146,-16.064],[0,0],[-6.81,-8.474],[1.964,11.915],[0.773,4.74],[0.841,5.011]],"v":[[-203.087,-99.991],[-193.171,-112.227],[-202.403,-165.297],[-210.954,-184.166],[-227.591,-177.451],[-222.475,-146.664],[-214.71,-107.959]],"c":true}],"e":[{"i":[[-7.084,1.419],[0.332,2.095],[0,0],[4.947,5.174],[-2.138,-8.396],[-2.671,-10.562],[-1.869,-7.248]],"o":[[9.698,-1.943],[-2.522,-15.906],[0,0],[-7.512,-7.858],[2.98,11.702],[1.177,4.656],[1.269,4.92]],"v":[[-204.322,-99.732],[-195.994,-112.524],[-206.751,-162.105],[-217.392,-183.42],[-233.141,-175.3],[-226.149,-145.316],[-216.586,-106.672]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-7.084,1.419],[0.332,2.095],[0,0],[4.947,5.174],[-2.138,-8.396],[-2.671,-10.562],[-1.869,-7.248]],"o":[[9.698,-1.943],[-2.522,-15.906],[0,0],[-7.512,-7.858],[2.98,11.702],[1.177,4.656],[1.269,4.92]],"v":[[-204.322,-99.732],[-195.994,-112.524],[-206.751,-162.105],[-217.392,-183.42],[-233.141,-175.3],[-226.149,-145.316],[-216.586,-106.672]],"c":true}],"e":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}],"e":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-6.921,2.071],[0.434,2.076],[0,0],[5.406,4.692],[-2.909,-8.161],[-3.64,-10.268],[-2.535,-7.043]],"o":[[9.476,-2.836],[-4.335,-20.721],[0,0],[-8.21,-7.126],[4.054,11.375],[1.605,4.526],[1.72,4.781]],"v":[[-204.769,-99.518],[-197.665,-114.279],[-211.732,-161.896],[-224.307,-182.13],[-238.733,-172.583],[-230.736,-143.878],[-217.625,-104.789]],"c":true}],"e":[{"i":[[-7.07,1.484],[0.259,2.105],[0,0],[4.994,5.129],[-2.215,-8.376],[-2.768,-10.537],[-1.936,-7.231]],"o":[[9.68,-2.032],[-2.584,-21.011],[0,0],[-7.584,-7.788],[3.087,11.675],[1.22,4.645],[1.314,4.908]],"v":[[-197.364,-101.241],[-189.049,-115.356],[-199.079,-163.983],[-209.915,-185.199],[-225.09,-176.894],[-219.525,-147.62],[-209.733,-107.57]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-7.07,1.484],[0.259,2.105],[0,0],[4.994,5.129],[-2.215,-8.376],[-2.768,-10.537],[-1.936,-7.231]],"o":[[9.68,-2.032],[-2.584,-21.011],[0,0],[-7.584,-7.788],[3.087,11.675],[1.22,4.645],[1.314,4.908]],"v":[[-197.364,-101.241],[-189.049,-115.356],[-199.079,-163.983],[-209.915,-185.199],[-225.09,-176.894],[-219.525,-147.62],[-209.733,-107.57]],"c":true}],"e":[{"i":[[-7.217,-0.324],[-0.274,2.104],[0,0],[3.559,6.211],[0.613,-8.642],[-0.055,-10.894],[-0.073,-7.485]],"o":[[9.881,0.444],[2.733,-20.992],[0,0],[-5.404,-9.433],[-0.889,12.53],[0.024,4.802],[0.049,5.081]],"v":[[-186.612,-115.355],[-175.042,-126.952],[-172.638,-176.545],[-176.845,-199.792],[-193.861,-195.53],[-196.516,-165.793],[-197.014,-124.317]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-7.217,-0.324],[-0.274,2.104],[0,0],[3.559,6.211],[0.613,-8.642],[-0.055,-10.894],[-0.073,-7.485]],"o":[[9.881,0.444],[2.733,-20.992],[0,0],[-5.404,-9.433],[-0.889,12.53],[0.024,4.802],[0.049,5.081]],"v":[[-186.612,-115.355],[-175.042,-126.952],[-172.638,-176.545],[-176.845,-199.792],[-193.861,-195.53],[-196.516,-165.793],[-197.014,-124.317]],"c":true}],"e":[{"i":[[-6.318,-3.504],[-1.182,1.762],[0,0],[0.42,7.146],[4.397,-7.465],[4.802,-9.779],[3.268,-6.735]],"o":[[8.649,4.798],[11.795,-17.579],[0,0],[-0.638,-10.852],[-6.376,10.823],[-2.117,4.311],[-2.218,4.571]],"v":[[-155.667,-122.126],[-140.144,-127.357],[-115.907,-170.691],[-109.322,-193.379],[-126.456,-197.141],[-142.075,-171.697],[-160.991,-134.782]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-6.318,-3.504],[-1.182,1.762],[0,0],[0.42,7.146],[4.397,-7.465],[4.802,-9.779],[3.268,-6.735]],"o":[[8.649,4.798],[11.795,-17.579],[0,0],[-0.638,-10.852],[-6.376,10.823],[-2.117,4.311],[-2.218,4.571]],"v":[[-155.667,-122.126],[-140.144,-127.357],[-115.907,-170.691],[-109.322,-193.379],[-126.456,-197.141],[-142.075,-171.697],[-160.991,-134.782]],"c":true}],"e":[{"i":[[-2.54,-6.763],[-2.042,0.575],[0,0],[-4.312,5.715],[8.187,-2.835],[9.995,-4.334],[6.854,-3.011]],"o":[[3.478,9.259],[20.375,-5.742],[0,0],[6.547,-8.678],[-11.87,4.11],[-4.406,1.911],[-4.652,2.044]],"v":[[-107.578,-124.427],[-92.366,-118.35],[-45.824,-135.642],[-26.104,-149.153],[-36.964,-163.622],[-65.1,-153.369],[-103.43,-137.515]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-2.54,-6.763],[-2.042,0.575],[0,0],[-4.312,5.715],[8.187,-2.835],[9.995,-4.334],[6.854,-3.011]],"o":[[3.478,9.259],[20.375,-5.742],[0,0],[6.547,-8.678],[-11.87,4.11],[-4.406,1.911],[-4.652,2.044]],"v":[[-107.578,-124.427],[-92.366,-118.35],[-45.824,-135.642],[-26.104,-149.153],[-36.964,-163.622],[-65.1,-153.369],[-103.43,-137.515]],"c":true}],"e":[{"i":[[6.684,-2.741],[-0.636,-2.024],[-2.747,-6.111],[-5.841,-4.139],[1.556,8.523],[4.632,9.86],[6.644,8.182]],"o":[[-9.151,3.753],[6.35,20.194],[4.291,9.546],[8.87,6.285],[-3.691,-20.222],[-2.042,-4.347],[-3.203,-3.945]],"v":[[-32.85,-114.437],[-37.719,-96.3],[-18.541,-49.796],[4.553,-17.489],[20.691,-27.278],[0.35,-76.094],[-18.644,-110.182]],"c":true}]},{"t":19}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"front_hand","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[-0.251,-0.384],[0,-2.01],[-1.375,0.375],[2,5.5]],"o":[[0,0],[0,0],[0.683,1.044],[0,2.75],[1.375,-0.375],[-1.04,-2.861]],"v":[[-83.875,-41.125],[-85.5,-36.375],[-85.077,-35.765],[-83.125,-30.5],[-80.625,-26.5],[-80.625,-36]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.458,0.034],[-1.759,-0.974],[-0.338,1.385],[5.78,0.915]],"o":[[0,0],[0,0],[1.244,-0.092],[2.406,1.332],[0.338,-1.385],[-3.007,-0.476]],"v":[[-86.24,-136.975],[-82.872,-133.252],[-82.133,-133.326],[-76.582,-132.483],[-71.871,-132.732],[-80.182,-137.335]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0],[-0.458,0.034],[-1.759,-0.974],[-0.338,1.385],[5.78,0.915]],"o":[[0,0],[0,0],[1.244,-0.092],[2.406,1.332],[0.338,-1.385],[-3.007,-0.476]],"v":[[-86.24,-136.975],[-82.872,-133.252],[-82.133,-133.326],[-76.582,-132.483],[-71.871,-132.732],[-80.182,-137.335]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.103,0.285],[-2.27,1.249],[-0.399,2.637],[5.257,-3.301]],"o":[[0,0],[0,0],[0.28,-0.775],[2.351,-1.293],[0.391,-2.583],[-3.694,2.32]],"v":[[-133.817,-197.784],[-127.091,-195.931],[-126.959,-196.388],[-123.583,-200.02],[-116.203,-201.855],[-128.243,-203.945]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[-0.103,0.285],[-2.27,1.249],[-0.399,2.637],[5.257,-3.301]],"o":[[0,0],[0,0],[0.28,-0.775],[2.351,-1.293],[0.391,-2.583],[-3.694,2.32]],"v":[[-133.817,-197.784],[-127.091,-195.931],[-126.959,-196.388],[-123.583,-200.02],[-116.203,-201.855],[-128.243,-203.945]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.143,0.862],[-0.982,2.151],[-0.065,2.666],[3.774,-5.305]],"o":[[0,0],[0,0],[0.321,-1.935],[1.114,-2.441],[0.093,-3.809],[-2.529,3.555]],"v":[[-170.944,-197.354],[-161.232,-196.884],[-160.508,-199.69],[-160.518,-203.776],[-152.656,-208.003],[-168.399,-206.258]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[-0.143,0.862],[-0.982,2.151],[-0.065,2.666],[3.774,-5.305]],"o":[[0,0],[0,0],[0.321,-1.935],[1.114,-2.441],[0.093,-3.809],[-2.529,3.555]],"v":[[-170.944,-197.354],[-161.232,-196.884],[-160.508,-199.69],[-160.518,-203.776],[-152.656,-208.003],[-168.399,-206.258]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.143,0.862],[-0.297,1.401],[1.093,0.816],[1.649,-5.68]],"o":[[0,0],[0,0],[0.321,-1.935],[1.08,-5.099],[-2.344,-0.434],[-1.216,4.189]],"v":[[-197.631,-193.979],[-190.857,-193.759],[-190.758,-198.128],[-189.268,-203.589],[-190.281,-209.441],[-195.961,-201.695]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[-0.143,0.862],[-0.297,1.401],[1.093,0.816],[1.649,-5.68]],"o":[[0,0],[0,0],[0.321,-1.935],[1.08,-5.099],[-2.344,-0.434],[-1.216,4.189]],"v":[[-197.631,-193.979],[-190.857,-193.759],[-190.758,-198.128],[-189.268,-203.589],[-190.281,-209.441],[-195.961,-201.695]],"c":true}],"e":[{"i":[[0,0],[0,0],[0.071,1.44],[0.073,1.43],[1.343,-0.184],[-0.025,-5.264]],"o":[[0,0],[0,0],[-0.096,-1.959],[-0.232,-4.536],[-2.032,0.378],[0.024,5.008]],"v":[[-214.819,-188.291],[-209.545,-188.259],[-209.258,-191.19],[-209.455,-198.339],[-213.031,-203.816],[-214.524,-196.07]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[0.071,1.44],[0.073,1.43],[1.343,-0.184],[-0.025,-5.264]],"o":[[0,0],[0,0],[-0.096,-1.959],[-0.232,-4.536],[-2.032,0.378],[0.024,5.008]],"v":[[-214.819,-188.291],[-209.545,-188.259],[-209.258,-191.19],[-209.455,-198.339],[-213.031,-203.816],[-214.524,-196.07]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.008,1.442],[0.484,2.97],[1.343,-0.184],[-0.476,-4.242]],"o":[[0,0],[0,0],[0.008,-1.435],[-0.607,-3.724],[-2.032,0.378],[0.405,3.61]],"v":[[-220.006,-187.541],[-215.67,-188.259],[-215.571,-190.628],[-215.955,-197.526],[-219.906,-203.816],[-220.149,-196.133]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[-0.008,1.442],[0.484,2.97],[1.343,-0.184],[-0.476,-4.242]],"o":[[0,0],[0,0],[0.008,-1.435],[-0.607,-3.724],[-2.032,0.378],[0.405,3.61]],"v":[[-220.006,-187.541],[-215.67,-188.259],[-215.571,-190.628],[-215.955,-197.526],[-219.906,-203.816],[-220.149,-196.133]],"c":true}],"e":[{"i":[[0,0],[0,0],[0.055,1.441],[1.062,2.815],[1.628,-0.916],[-1.067,-3.753]],"o":[[0,0],[0,0],[-0.071,-1.867],[-1.231,-3.264],[-1.872,1.771],[1.611,5.67]],"v":[[-223.551,-186.059],[-218.344,-187.334],[-218.492,-189.571],[-220.144,-196.236],[-226.378,-201.896],[-224.246,-194.309]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0.055,1.441],[1.062,2.815],[1.628,-0.916],[-1.067,-3.753]],"o":[[0,0],[0,0],[-0.071,-1.867],[-1.231,-3.264],[-1.872,1.771],[1.611,5.67]],"v":[[-223.551,-186.059],[-218.344,-187.334],[-218.492,-189.571],[-220.144,-196.236],[-226.378,-201.896],[-224.246,-194.309]],"c":true}],"e":[{"i":[[0,0],[0,0],[0.195,1.429],[1.199,2.759],[1.628,-0.916],[-1.504,-4.191]],"o":[[0,0],[0,0],[-0.383,-2.804],[-2.044,-4.702],[-1.872,1.771],[1.991,5.548]],"v":[[-228.926,-185.122],[-224.844,-185.584],[-224.929,-188.383],[-227.269,-196.423],[-233.253,-201.709],[-231.183,-193.184]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0.195,1.429],[1.199,2.759],[1.628,-0.916],[-1.504,-4.191]],"o":[[0,0],[0,0],[-0.383,-2.804],[-2.044,-4.702],[-1.872,1.771],[1.991,5.548]],"v":[[-228.926,-185.122],[-224.844,-185.584],[-224.929,-188.383],[-227.269,-196.423],[-233.253,-201.709],[-231.183,-193.184]],"c":true}],"e":[{"i":[[0,0],[0,0],[0.529,1.342],[1.538,2.586],[1.499,-1.115],[-2.022,-3.967]],"o":[[0,0],[0,0],[-1.004,-2.546],[-2.621,-4.406],[-1.634,1.994],[2.676,5.252]],"v":[[-235.486,-182.339],[-230.495,-183.313],[-231.558,-186.454],[-235.27,-193.759],[-242.249,-198.684],[-238.744,-190.052]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0.529,1.342],[1.538,2.586],[1.499,-1.115],[-2.022,-3.967]],"o":[[0,0],[0,0],[-1.004,-2.546],[-2.621,-4.406],[-1.634,1.994],[2.676,5.252]],"v":[[-235.486,-182.339],[-230.495,-183.313],[-231.558,-186.454],[-235.27,-193.759],[-242.249,-198.684],[-238.744,-190.052]],"c":true}],"e":[{"i":[[0,0],[0,0],[0.529,1.342],[1.538,2.586],[1.499,-1.115],[-2.022,-3.967]],"o":[[0,0],[0,0],[-1.004,-2.546],[-2.621,-4.406],[-1.634,1.994],[2.676,5.252]],"v":[[-235.486,-182.339],[-230.495,-183.313],[-231.558,-186.454],[-235.27,-193.759],[-242.249,-198.684],[-238.744,-190.052]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0.529,1.342],[1.538,2.586],[1.499,-1.115],[-2.022,-3.967]],"o":[[0,0],[0,0],[-1.004,-2.546],[-2.621,-4.406],[-1.634,1.994],[2.676,5.252]],"v":[[-235.486,-182.339],[-230.495,-183.313],[-231.558,-186.454],[-235.27,-193.759],[-242.249,-198.684],[-238.744,-190.052]],"c":true}],"e":[{"i":[[0,0],[0,0],[0.259,1.419],[1.347,2.69],[1.693,-1.152],[-0.801,-4.824]],"o":[[0,0],[0,0],[-0.368,-2.015],[-2.294,-4.583],[-0.932,1.098],[0.694,4.177]],"v":[[-221.552,-186.567],[-215.992,-187.133],[-216.257,-190.172],[-218.393,-197.042],[-224.068,-202.536],[-221.887,-195.051]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0.259,1.419],[1.347,2.69],[1.693,-1.152],[-0.801,-4.824]],"o":[[0,0],[0,0],[-0.368,-2.015],[-2.294,-4.583],[-0.932,1.098],[0.694,4.177]],"v":[[-221.552,-186.567],[-215.992,-187.133],[-216.257,-190.172],[-218.393,-197.042],[-224.068,-202.536],[-221.887,-195.051]],"c":true}],"e":[{"i":[[0,0],[0,0],[0.024,1.442],[0.653,2.937],[1.858,-0.86],[-0.003,-4.89]],"o":[[0,0],[0,0],[-0.035,-2.049],[-1.292,-5.81],[-1.098,0.932],[0.003,4.234]],"v":[[-186.283,-203.495],[-180.705,-203.146],[-180.47,-206.188],[-180.833,-213.377],[-185.848,-219.66],[-186.104,-211.732]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0.024,1.442],[0.653,2.937],[1.858,-0.86],[-0.003,-4.89]],"o":[[0,0],[0,0],[-0.035,-2.049],[-1.292,-5.81],[-1.098,0.932],[0.003,4.234]],"v":[[-186.283,-203.495],[-180.705,-203.146],[-180.47,-206.188],[-180.833,-213.377],[-185.848,-219.66],[-186.104,-211.732]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.678,1.273],[-0.664,2.935],[2.038,-0.2],[1.166,-4.749]],"o":[[0,0],[0,0],[0.736,-1.382],[1.21,-5.349],[-1.344,0.518],[-0.834,3.397]],"v":[[-117.674,-200.991],[-111.585,-198.386],[-110.361,-200.743],[-108.397,-206.463],[-110.25,-214.61],[-114.166,-208.334]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[-0.678,1.273],[-0.664,2.935],[2.038,-0.2],[1.166,-4.749]],"o":[[0,0],[0,0],[0.736,-1.382],[1.21,-5.349],[-1.344,0.518],[-0.834,3.397]],"v":[[-117.674,-200.991],[-111.585,-198.386],[-110.361,-200.743],[-108.397,-206.463],[-110.25,-214.61],[-114.166,-208.334]],"c":true}],"e":[{"i":[[0,0],[0,0],[-1.14,0.883],[-1.758,2.442],[1.636,1.103],[2.093,-2.079]],"o":[[0,0],[0,0],[1.238,-0.959],[2.223,-3.088],[-1.113,-0.75],[-2.518,2.501]],"v":[[-28.24,-161.035],[-25.379,-155.976],[-22.421,-157.75],[-18.66,-161.6],[-17.824,-167.978],[-22.906,-164.296]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[-1.14,0.883],[-1.758,2.442],[1.636,1.103],[2.093,-2.079]],"o":[[0,0],[0,0],[1.238,-0.959],[2.223,-3.088],[-1.113,-0.75],[-2.518,2.501]],"v":[[-28.24,-161.035],[-25.379,-155.976],[-22.421,-157.75],[-18.66,-161.6],[-17.824,-167.978],[-22.906,-164.296]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.312,-1.689],[0.05,-1.814],[-1.972,-0.065],[-0.201,2.943]],"o":[[0,0],[0,0],[0.285,1.54],[-0.115,4.184],[3.257,0.108],[0.311,-4.538]],"v":[[18.367,-18.152],[12.025,-16.06],[13.125,-13.686],[13.763,-8.561],[13.368,-1.17],[18.564,-9.025]],"c":true}]},{"t":19}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"front_leg_circle","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[127.733,344.983,0],"e":[134.233,319.733,0],"to":[1.08333337306976,-4.20833349227905,0],"ti":[-0.79166668653488,9.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[134.233,319.733,0],"e":[132.483,287.983,0],"to":[0.79166668653488,-9.5,0],"ti":[1.16666662693024,7.91666650772095,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[132.483,287.983,0],"e":[127.233,272.233,0],"to":[-1.16666662693024,-7.91666650772095,0],"ti":[1.08333337306976,4.54166650772095,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[127.233,272.233,0],"e":[125.983,260.733,0],"to":[-1.08333337306976,-4.54166650772095,0],"ti":[1.58333337306976,2.41666674613953,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[125.983,260.733,0],"e":[117.733,257.733,0],"to":[-1.58333337306976,-2.41666674613953,0],"ti":[3.125,1.41666662693024,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[117.733,257.733,0],"e":[107.233,252.233,0],"to":[-3.125,-1.41666662693024,0],"ti":[1.91666662693024,1,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[107.233,252.233,0],"e":[106.233,251.733,0],"to":[-1.91666662693024,-1,0],"ti":[0.25,0.08333333581686,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[106.233,251.733,0],"e":[105.733,251.733,0],"to":[-0.25,-0.08333333581686,0],"ti":[0.16666667163372,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[105.733,251.733,0],"e":[105.233,251.733,0],"to":[-0.16666667163372,0,0],"ti":[0.125,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[105.233,251.733,0],"e":[104.983,251.733,0],"to":[-0.125,0,0],"ti":[0.08333333581686,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[104.983,251.733,0],"e":[104.733,251.733,0],"to":[-0.08333333581686,0,0],"ti":[0.04166666790843,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[104.733,251.733,0],"e":[104.733,251.733,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[104.733,251.733,0],"e":[105.733,251.983,0],"to":[0.16666667163372,0.04166666790843,0],"ti":[-1.75,0.16666667163372,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[105.733,251.983,0],"e":[115.233,250.733,0],"to":[1.75,-0.16666667163372,0],"ti":[-5.33333349227905,0.20833332836628,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[115.233,250.733,0],"e":[137.733,250.733,0],"to":[5.33333349227905,-0.20833332836628,0],"ti":[-4.58333349227905,-0.625,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[137.733,250.733,0],"e":[142.733,254.483,0],"to":[4.58333349227905,0.625,0],"ti":[-3.08333325386047,-3,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[142.733,254.483,0],"e":[156.233,268.733,0],"to":[3.08333325386047,3,0],"ti":[-7.54166650772095,0.04166666790843,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[156.233,268.733,0],"e":[187.983,254.233,0],"to":[7.54166650772095,-0.04166666790843,0],"ti":[-5,0.79166668653488,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[187.983,254.233,0],"e":[186.233,263.983,0],"to":[5,-0.79166668653488,0],"ti":[0.29166665673256,-1.625,0]},{"t":21}]},"a":{"k":[-121.267,48.733,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":2,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":17,"s":[100,100,100],"e":[0,0,100]},{"t":21}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[12.467,12.467]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-121.267,48.733],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":4,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"front_leg_shadow","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-42.335,19.64],[-12.75,1.75],[20.25,-13.75]],"o":[[0,0],[0,0],[0,0],[0,0],[24.25,-11.25],[0.75,-11.25],[-13.905,9.442]],"v":[[-155,-54.5],[-181.5,-81.5],[-177.091,-28.681],[-168.25,77.25],[-120.75,92.25],[-115.5,35.25],[-138.25,37.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-26.851,17.309],[-11.219,1.531],[53.656,-5.187]],"o":[[0,0],[0,0],[0,0],[-10.067,-3.401],[62.344,5.531],[0.719,-9.844],[-12.98,6.324]],"v":[[-155,-54.5],[-181.5,-81.5],[-178.89,-30.272],[-173.656,72.469],[-142.344,89.469],[-98.375,7.344],[-143.156,-7.813]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-26.851,17.309],[-11.219,1.531],[53.656,-5.187]],"o":[[0,0],[0,0],[0,0],[-10.067,-3.401],[62.344,5.531],[0.719,-9.844],[-12.98,6.324]],"v":[[-155,-54.5],[-181.5,-81.5],[-178.89,-30.272],[-173.656,72.469],[-142.344,89.469],[-98.375,7.344],[-143.156,-7.813]],"c":true}],"e":[{"i":[[-1.5,-20.5],[0,0],[0,0],[0,0],[-25.709,20.935],[-0.286,10.67],[-1.223,9.482]],"o":[[1.564,21.369],[0,0],[0,0],[-8.629,-2.915],[48.723,12.384],[0.214,-12.58],[0.527,-17.268]],"v":[[-135,-3.5],[-166,13.75],[-168.445,32.171],[-173.348,69.116],[-142.723,88.116],[-99.464,5.58],[-108.527,-12.232]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-1.5,-20.5],[0,0],[0,0],[0,0],[-25.709,20.935],[-0.286,10.67],[-1.223,9.482]],"o":[[1.564,21.369],[0,0],[0,0],[-8.629,-2.915],[48.723,12.384],[0.214,-12.58],[0.527,-17.268]],"v":[[-135,-3.5],[-166,13.75],[-168.445,32.171],[-173.348,69.116],[-142.723,88.116],[-99.464,5.58],[-108.527,-12.232]],"c":true}],"e":[{"i":[[-3.833,-23.083],[0,0],[0,0],[0,0],[-24.566,24.561],[8.554,15.35],[3.856,6.86]],"o":[[2.925,17.614],[0,0],[0,0],[-7.191,-2.429],[41.603,-43.263],[-4.946,-9.65],[-5.644,-6.64]],"v":[[-140.667,-15.667],[-145.333,29.875],[-154.552,41.816],[-173.04,65.763],[-128.103,84.763],[-106.554,-23.35],[-115.856,-32.86]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-3.833,-23.083],[0,0],[0,0],[0,0],[-24.566,24.561],[8.554,15.35],[3.856,6.86]],"o":[[2.925,17.614],[0,0],[0,0],[-7.191,-2.429],[41.603,-43.263],[-4.946,-9.65],[-5.644,-6.64]],"v":[[-140.667,-15.667],[-145.333,29.875],[-154.552,41.816],[-173.04,65.763],[-128.103,84.763],[-106.554,-23.35],[-115.856,-32.86]],"c":true}],"e":[{"i":[[-0.167,-22.417],[0,0],[0,0],[0,0],[-23.424,28.187],[7.843,33.98],[4.435,8.438]],"o":[[0.106,14.283],[0,0],[0,0],[-5.753,-1.943],[30.482,-25.411],[-3.157,-9.02],[-2.815,-10.812]],"v":[[-140.083,-25.583],[-152.567,7.6],[-159.276,25.837],[-172.732,62.411],[-124.982,76.911],[-104.843,-28.98],[-116.935,-42.438]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.167,-22.417],[0,0],[0,0],[0,0],[-23.424,28.187],[7.843,33.98],[4.435,8.438]],"o":[[0.106,14.283],[0,0],[0,0],[-5.753,-1.943],[30.482,-25.411],[-3.157,-9.02],[-2.815,-10.812]],"v":[[-140.083,-25.583],[-152.567,7.6],[-159.276,25.837],[-172.732,62.411],[-124.982,76.911],[-104.843,-28.98],[-116.935,-42.438]],"c":true}],"e":[{"i":[[-0.938,-15.187],[0,0],[0,0],[0,0],[-22.282,31.813],[4.445,13.672],[2.785,10.918]],"o":[[0.66,10.693],[0,0],[0,0],[-4.314,-1.458],[43.862,-57.808],[-2.555,-7.328],[-3.424,-9.671]],"v":[[-143.812,-36.063],[-159.8,-14.675],[-164,9.857],[-172.424,59.058],[-126.362,79.808],[-110.445,-34.172],[-123.576,-46.079]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-0.938,-15.187],[0,0],[0,0],[0,0],[-22.282,31.813],[4.445,13.672],[2.785,10.918]],"o":[[0.66,10.693],[0,0],[0,0],[-4.314,-1.458],[43.862,-57.808],[-2.555,-7.328],[-3.424,-9.671]],"v":[[-143.812,-36.063],[-159.8,-14.675],[-164,9.857],[-172.424,59.058],[-126.362,79.808],[-110.445,-34.172],[-123.576,-46.079]],"c":true}],"e":[{"i":[[-0.625,-10.125],[0,0],[0,0],[0,0],[-21.14,35.439],[12.38,18.448],[3.5,11.197]],"o":[[0.44,7.128],[0,0],[0,0],[-2.876,-0.972],[28.908,-42.705],[-6.12,-9.052],[-6.866,-12.031]],"v":[[-154.292,-45.708],[-167.033,-33.45],[-168.724,-6.122],[-172.116,55.705],[-123.908,78.205],[-119.38,-39.948],[-133.634,-51.219]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-0.625,-10.125],[0,0],[0,0],[0,0],[-21.14,35.439],[12.38,18.448],[3.5,11.197]],"o":[[0.44,7.128],[0,0],[0,0],[-2.876,-0.972],[28.908,-42.705],[-6.12,-9.052],[-6.866,-12.031]],"v":[[-154.292,-45.708],[-167.033,-33.45],[-168.724,-6.122],[-172.116,55.705],[-123.908,78.205],[-119.38,-39.948],[-133.634,-51.219]],"c":true}],"e":[{"i":[[-1.708,-10.292],[0,0],[0,0],[0,0],[-21.14,35.439],[8.38,12.448],[3.5,11.197]],"o":[[1.169,7.046],[0,0],[0,0],[-2.876,-0.972],[32.908,-36.205],[-2.37,-3.552],[-4.866,-11.781]],"v":[[-156.792,-47.458],[-168.783,-37.95],[-169.892,-6.789],[-172.116,55.705],[-123.908,75.705],[-121.13,-44.948],[-135.384,-51.969]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-1.708,-10.292],[0,0],[0,0],[0,0],[-21.14,35.439],[8.38,12.448],[3.5,11.197]],"o":[[1.169,7.046],[0,0],[0,0],[-2.876,-0.972],[32.908,-36.205],[-2.37,-3.552],[-4.866,-11.781]],"v":[[-156.792,-47.458],[-168.783,-37.95],[-169.892,-6.789],[-172.116,55.705],[-123.908,75.705],[-121.13,-44.948],[-135.384,-51.969]],"c":true}],"e":[{"i":[[-1.958,-11.042],[0,0],[0,0],[0,0],[-21.14,35.439],[6.13,4.948],[3.5,11.197]],"o":[[1.132,6.381],[0,0],[0,0],[-2.876,-0.972],[37.658,-35.205],[-3.87,-4.052],[-7.366,-11.281]],"v":[[-155.292,-45.708],[-168.783,-37.95],[-169.892,-6.789],[-172.116,55.705],[-128.158,80.205],[-120.13,-44.948],[-135.134,-51.969]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-1.958,-11.042],[0,0],[0,0],[0,0],[-21.14,35.439],[6.13,4.948],[3.5,11.197]],"o":[[1.132,6.381],[0,0],[0,0],[-2.876,-0.972],[37.658,-35.205],[-3.87,-4.052],[-7.366,-11.281]],"v":[[-155.292,-45.708],[-168.783,-37.95],[-169.892,-6.789],[-172.116,55.705],[-128.158,80.205],[-120.13,-44.948],[-135.134,-51.969]],"c":true}],"e":[{"i":[[-1.958,-11.042],[0,0],[0,0],[0,0],[-21.14,35.439],[6.13,4.948],[3.5,11.197]],"o":[[1.132,6.381],[0,0],[0,0],[-2.876,-0.972],[37.658,-35.205],[-3.87,-4.052],[-7.366,-11.281]],"v":[[-147.292,-46.208],[-163.283,-38.45],[-169.892,-6.789],[-172.116,55.705],[-128.158,80.205],[-115.63,-45.948],[-126.134,-56.469]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-1.958,-11.042],[0,0],[0,0],[0,0],[-21.14,35.439],[6.13,4.948],[3.5,11.197]],"o":[[1.132,6.381],[0,0],[0,0],[-2.876,-0.972],[37.658,-35.205],[-3.87,-4.052],[-7.366,-11.281]],"v":[[-147.292,-46.208],[-163.283,-38.45],[-169.892,-6.789],[-172.116,55.705],[-128.158,80.205],[-115.63,-45.948],[-126.134,-56.469]],"c":true}],"e":[{"i":[[-1.958,-11.042],[0,0],[0,0],[0,0],[-21.14,35.439],[6.13,4.948],[3.5,11.197]],"o":[[1.132,6.381],[0,0],[0,0],[-2.876,-0.972],[41.158,-36.205],[-3.87,-4.052],[-7.366,-11.281]],"v":[[-124.792,-46.208],[-143.783,-38.45],[-169.892,-6.789],[-172.116,55.705],[-130.658,80.705],[-96.63,-43.948],[-103.634,-54.969]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-1.958,-11.042],[0,0],[0,0],[0,0],[-21.14,35.439],[6.13,4.948],[3.5,11.197]],"o":[[1.132,6.381],[0,0],[0,0],[-2.876,-0.972],[41.158,-36.205],[-3.87,-4.052],[-7.366,-11.281]],"v":[[-124.792,-46.208],[-143.783,-38.45],[-169.892,-6.789],[-172.116,55.705],[-130.658,80.705],[-96.63,-43.948],[-103.634,-54.969]],"c":true}],"e":[{"i":[[-0.208,-7.292],[0,0],[0,0],[0,0],[-21.14,35.439],[5.04,1.03],[3.134,5.469]],"o":[[0.185,6.478],[0,0],[0,0],[-2.876,-0.972],[35.158,-22.955],[-6.37,-1.302],[-3.866,-7.531]],"v":[[-117.792,-45.708],[-143.783,-38.45],[-169.892,-6.789],[-172.116,55.705],[-134.408,78.955],[-93.63,-34.198],[-99.884,-49.469]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-0.208,-7.292],[0,0],[0,0],[0,0],[-21.14,35.439],[5.04,1.03],[3.134,5.469]],"o":[[0.185,6.478],[0,0],[0,0],[-2.876,-0.972],[35.158,-22.955],[-6.37,-1.302],[-3.866,-7.531]],"v":[[-117.792,-45.708],[-143.783,-38.45],[-169.892,-6.789],[-172.116,55.705],[-134.408,78.955],[-93.63,-34.198],[-99.884,-49.469]],"c":true}],"e":[{"i":[[-0.208,-7.292],[0,0],[0,0],[0,0],[-24.092,10.545],[-1.62,8.948],[3.134,5.469]],"o":[[0.185,6.478],[0,0],[0,0],[-2.876,-0.972],[35.158,-22.955],[1.158,-6.398],[-3.866,-7.531]],"v":[[-104.542,-31.708],[-143.783,-38.45],[-169.892,-6.789],[-172.116,55.705],[-153.158,80.455],[-84.13,-20.198],[-86.634,-35.469]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-0.208,-7.292],[0,0],[0,0],[0,0],[-24.092,10.545],[-1.62,8.948],[3.134,5.469]],"o":[[0.185,6.478],[0,0],[0,0],[-2.876,-0.972],[35.158,-22.955],[1.158,-6.398],[-3.866,-7.531]],"v":[[-104.542,-31.708],[-143.783,-38.45],[-169.892,-6.789],[-172.116,55.705],[-153.158,80.455],[-84.13,-20.198],[-86.634,-35.469]],"c":true}],"e":[{"i":[[7.141,-1.488],[0,0],[0,0],[0,0],[-24.791,-8.776],[-8.124,4.086],[0.224,8.675]],"o":[[-5.636,1.174],[0,0],[0,0],[-1.435,-2.676],[41.352,7.284],[4.337,-2.181],[-1.776,-9.325]],"v":[[-68.864,-54.674],[-91.393,-88.923],[-132.093,-83.667],[-176.442,-39.58],[-180.027,-1.057],[-61.837,-31.819],[-54.224,-46.175]],"c":true}]},{"t":20}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[4.75,1],[9,-22],[1.434,-5.714],[-7.055,-2.665],[0,0],[-1,24]],"o":[[-4.75,-1],[-3.356,8.204],[-2.411,9.608],[9.702,3.665],[0,0],[1.032,-24.774]],"v":[[-118.5,35.25],[-138,52.25],[-145.451,73.121],[-139.75,91.5],[-128,94],[-105.25,76]],"c":true}],"e":[{"i":[[4.75,1],[4.25,-15.5],[3.209,-11.832],[-14.975,-6.846],[0,0],[-5.826,23.304]],"o":[[-4.75,-1],[-2.098,7.653],[-6.331,23.343],[8.75,4],[0,0],[11.75,-47]],"v":[[-110.25,-0.5],[-135.25,11.25],[-137.169,44.657],[-144.25,89.25],[-120,91],[-95.75,62]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[4.75,1],[4.25,-15.5],[3.209,-11.832],[-14.975,-6.846],[0,0],[-5.826,23.304]],"o":[[-4.75,-1],[-2.098,7.653],[-6.331,23.343],[8.75,4],[0,0],[11.75,-47]],"v":[[-110.25,-0.5],[-135.25,11.25],[-137.169,44.657],[-144.25,89.25],[-120,91],[-95.75,62]],"c":true}],"e":[{"i":[[4.741,1.041],[5.25,-18.25],[3.787,-17.742],[-14.75,-7],[-6.801,3.4],[-1.936,23.943]],"o":[[-10.25,-2.25],[-2.194,7.626],[-2.581,12.093],[8.692,4.125],[9.5,-4.75],[4.75,-58.75]],"v":[[-110.75,-26],[-135.5,-9.75],[-137.169,40.657],[-145.5,87],[-116,87.5],[-96,42]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[4.741,1.041],[5.25,-18.25],[3.787,-17.742],[-14.75,-7],[-6.801,3.4],[-1.936,23.943]],"o":[[-10.25,-2.25],[-2.194,7.626],[-2.581,12.093],[8.692,4.125],[9.5,-4.75],[4.75,-58.75]],"v":[[-110.75,-26],[-135.5,-9.75],[-137.169,40.657],[-145.5,87],[-116,87.5],[-96,42]],"c":true}],"e":[{"i":[[4.741,1.041],[3.75,-12.75],[2.419,-28.407],[-17.25,-7],[-8.75,9],[1.25,31.25]],"o":[[-10.25,-2.25],[-2.239,7.613],[-2.302,27.042],[13.557,5.501],[13.575,-13.963],[-1.449,-36.221]],"v":[[-115.75,-43.75],[-140.5,-31.75],[-135.169,22.157],[-146.75,82],[-115.5,75.5],[-94.25,11.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[4.741,1.041],[3.75,-12.75],[2.419,-28.407],[-17.25,-7],[-8.75,9],[1.25,31.25]],"o":[[-10.25,-2.25],[-2.239,7.613],[-2.302,27.042],[13.557,5.501],[13.575,-13.963],[-1.449,-36.221]],"v":[[-115.75,-43.75],[-140.5,-31.75],[-135.169,22.157],[-146.75,82],[-115.5,75.5],[-94.25,11.25]],"c":true}],"e":[{"i":[[6.5,4],[3.75,-12.75],[2.293,-28.417],[-16.09,-10.012],[-8.75,9],[-0.489,32.012]],"o":[[-10.671,-6.567],[-2.239,7.613],[-2.831,35.093],[11.25,7],[13.575,-13.963],[0.5,-32.75]],"v":[[-116,-53.5],[-141,-42],[-136.169,18.157],[-146.75,80.75],[-116,72.25],[-95.25,9.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[6.5,4],[3.75,-12.75],[2.293,-28.417],[-16.09,-10.012],[-8.75,9],[-0.489,32.012]],"o":[[-10.671,-6.567],[-2.239,7.613],[-2.831,35.093],[11.25,7],[13.575,-13.963],[0.5,-32.75]],"v":[[-116,-53.5],[-141,-42],[-136.169,18.157],[-146.75,80.75],[-116,72.25],[-95.25,9.25]],"c":true}],"e":[{"i":[[6.402,4.155],[1.5,-13],[2.293,-28.417],[-12.25,-9.75],[-7.531,10.042],[-0.489,32.012]],"o":[[-14.25,-9.25],[-0.91,7.883],[-2.831,35.093],[10.367,8.251],[11.25,-15],[0.5,-32.75]],"v":[[-120.75,-55.25],[-149.25,-47],[-138.419,13.657],[-146.25,79],[-116,68.25],[-95.75,8.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[6.402,4.155],[1.5,-13],[2.293,-28.417],[-12.25,-9.75],[-7.531,10.042],[-0.489,32.012]],"o":[[-14.25,-9.25],[-0.91,7.883],[-2.831,35.093],[10.367,8.251],[11.25,-15],[0.5,-32.75]],"v":[[-120.75,-55.25],[-149.25,-47],[-138.419,13.657],[-146.25,79],[-116,68.25],[-95.75,8.75]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.065,-45.985],[-12.614,-9.275],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.169,35.843],[8.5,6.25],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-160.75,-54],[-146.169,9.657],[-142.25,77.5],[-116.25,69.5],[-102.75,6]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.065,-45.985],[-12.614,-9.275],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.169,35.843],[8.5,6.25],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-160.75,-54],[-146.169,9.657],[-142.25,77.5],[-116.25,69.5],[-102.75,6]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.581,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.535,35.809],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-162.75,-54],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-103.25,5.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.581,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.535,35.809],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-162.75,-54],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-103.25,5.75]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-164.5,-54.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-164.5,-54.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-164.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-164.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-165.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-165.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[7.5,4.75],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.353,-9.09],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-166.5,-55.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7.5,4.75],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.353,-9.09],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-166.5,-55.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[7.319,5.025],[2.566,-12.832],[-5.831,-47.657],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-16.75,-11.5],[-4,20],[4.37,35.717],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-128,-58.5],[-165,-54],[-146.919,7.657],[-142.25,77.5],[-116.75,69.75],[-103.5,4.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.319,5.025],[2.566,-12.832],[-5.831,-47.657],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-16.75,-11.5],[-4,20],[4.37,35.717],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-128,-58.5],[-165,-54],[-146.919,7.657],[-142.25,77.5],[-116.75,69.75],[-103.5,4.25]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-11.25],[-5.277,-51.162],[-11.5,-10],[-7.135,10.327],[1.942,32.239]],"o":[[-7.5,-15.25],[-5.657,14.142],[4.419,42.843],[5.738,4.989],[9.5,-13.75],[-2.5,-41.5]],"v":[[-118.25,-58.25],[-152,-60.75],[-142.169,5.407],[-142,74.25],[-115,67.5],[-100.5,7.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.297,8.738],[4.5,-11.25],[-5.277,-51.162],[-11.5,-10],[-7.135,10.327],[1.942,32.239]],"o":[[-7.5,-15.25],[-5.657,14.142],[4.419,42.843],[5.738,4.989],[9.5,-13.75],[-2.5,-41.5]],"v":[[-118.25,-58.25],[-152,-60.75],[-142.169,5.407],[-142,74.25],[-115,67.5],[-100.5,7.25]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-11.25],[3.782,-33.367],[-14.25,-11.25],[-7.135,10.327],[-4.397,31.997]],"o":[[-7.5,-15.25],[-5.657,14.142],[-3.581,31.593],[5.968,4.711],[9.5,-13.75],[4.5,-32.75]],"v":[[-97.75,-58.5],[-127.75,-58.5],[-134.169,-2.593],[-141,75.25],[-115.25,66.75],[-91.75,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[4.297,8.738],[4.5,-11.25],[3.782,-33.367],[-14.25,-11.25],[-7.135,10.327],[-4.397,31.997]],"o":[[-7.5,-15.25],[-5.657,14.142],[-3.581,31.593],[5.968,4.711],[9.5,-13.75],[4.5,-32.75]],"v":[[-97.75,-58.5],[-127.75,-58.5],[-134.169,-2.593],[-141,75.25],[-115.25,66.75],[-91.75,5.5]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-9.25],[4.919,-35.157],[-10.25,-4.25],[-7.135,10.327],[-4.741,31.948]],"o":[[-7.5,-15.25],[-4.549,9.351],[-5.123,36.615],[5.164,2.141],[9.5,-13.75],[5.75,-38.75]],"v":[[-91.75,-54.75],[-123.25,-56.25],[-135.419,-2.343],[-139.75,75.25],[-115.25,63.25],[-93.5,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[4.297,8.738],[4.5,-9.25],[4.919,-35.157],[-10.25,-4.25],[-7.135,10.327],[-4.741,31.948]],"o":[[-7.5,-15.25],[-4.549,9.351],[-5.123,36.615],[5.164,2.141],[9.5,-13.75],[5.75,-38.75]],"v":[[-91.75,-54.75],[-123.25,-56.25],[-135.419,-2.343],[-139.75,75.25],[-115.25,63.25],[-93.5,5.5]],"c":true}],"e":[{"i":[[0.836,9.701],[7.548,-6.989],[19.077,-31.597],[-7.5,-13.589],[-10.394,7.037],[-16.002,28.055]],"o":[[-1.46,-16.932],[-7.63,7.065],[-19.11,31.65],[3.884,7.038],[13.839,-9.37],[19.41,-34.028]],"v":[[-78.878,-31.909],[-105.69,-40.479],[-138.577,1.097],[-169,76.839],[-144.316,80.289],[-102.356,23.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0.836,9.701],[7.548,-6.989],[19.077,-31.597],[-7.5,-13.589],[-10.394,7.037],[-16.002,28.055]],"o":[[-1.46,-16.932],[-7.63,7.065],[-19.11,31.65],[3.884,7.038],[13.839,-9.37],[19.41,-34.028]],"v":[[-78.878,-31.909],[-105.69,-40.479],[-138.577,1.097],[-169,76.839],[-144.316,80.289],[-102.356,23.606]],"c":true}],"e":[{"i":[[-5.236,8.209],[10.285,0.149],[35.61,-9.708],[3.564,-11.86],[-10.922,-1.389],[-35.154,8.189]],"o":[[9.298,-14.576],[-10.397,-0.151],[-35.67,9.724],[-2.313,7.698],[16.579,2.108],[36.9,-8.596]],"v":[[-46.798,-36.424],[-60.792,-62.127],[-110.283,-52.474],[-176.064,-22.64],[-164.828,-3.611],[-99.846,-17.189]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-5.236,8.209],[10.285,0.149],[35.61,-9.708],[3.564,-11.86],[-10.922,-1.389],[-35.154,8.189]],"o":[[9.298,-14.576],[-10.397,-0.151],[-35.67,9.724],[-2.313,7.698],[16.579,2.108],[36.9,-8.596]],"v":[[-46.798,-36.424],[-60.792,-62.127],[-110.283,-52.474],[-176.064,-22.64],[-164.828,-3.611],[-99.846,-17.189]],"c":true}],"e":[{"i":[[-9.417,2.476],[7.453,7.089],[33.409,16.044],[11.518,-4.55],[-7.509,-8.052],[-31.695,-17.272]],"o":[[16.721,-4.397],[-7.535,-7.166],[-33.328,-16.005],[-8.279,3.27],[10.881,11.669],[26.688,14.544]],"v":[[-57.672,-18.423],[-48.508,-43.549],[-104.659,-76.544],[-165.221,-94.77],[-171.631,-73.169],[-112.688,-38.794]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-9.417,2.476],[7.453,7.089],[33.409,16.044],[11.518,-4.55],[-7.509,-8.052],[-31.695,-17.272]],"o":[[16.721,-4.397],[-7.535,-7.166],[-33.328,-16.005],[-8.279,3.27],[10.881,11.669],[26.688,14.544]],"v":[[-57.672,-18.423],[-48.508,-43.549],[-104.659,-76.544],[-165.221,-94.77],[-171.631,-73.169],[-112.688,-38.794]],"c":true}],"e":[{"i":[[-16.301,-3.458],[5.665,8.586],[20.659,27.544],[12.221,-2.48],[-0.619,-10.831],[-8.487,-9.741]],"o":[[19.672,4.173],[-5.742,-8.701],[-4.588,-6.117],[-8.724,1.77],[0.353,6.17],[15.938,18.294]],"v":[[-67.172,-13.673],[-51.008,-38.799],[-92.159,-94.794],[-123.471,-115.52],[-139.881,-99.419],[-126.188,-72.544]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-16.301,-3.458],[5.665,8.586],[20.659,27.544],[12.221,-2.48],[-0.619,-10.831],[-8.487,-9.741]],"o":[[19.672,4.173],[-5.742,-8.701],[-4.588,-6.117],[-8.724,1.77],[0.353,6.17],[15.938,18.294]],"v":[[-67.172,-13.673],[-51.008,-38.799],[-92.159,-94.794],[-123.471,-115.52],[-139.881,-99.419],[-126.188,-72.544]],"c":true}],"e":[{"i":[[-13.997,-19.394],[3.421,9.701],[13.386,31.722],[12.458,0.549],[0.572,-9.112],[-5.88,-11.505]],"o":[[4.19,5.806],[-3.467,-9.832],[-2.973,-7.045],[-8.893,-0.392],[-0.387,6.168],[11.042,21.605]],"v":[[-77.753,-9.606],[-48.994,-23.827],[-75.634,-99.862],[-94.005,-126.544],[-127.572,-117.138],[-116.033,-84.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-13.997,-19.394],[3.421,9.701],[13.386,31.722],[12.458,0.549],[0.572,-9.112],[-5.88,-11.505]],"o":[[4.19,5.806],[-3.467,-9.832],[-2.973,-7.045],[-8.893,-0.392],[-0.387,6.168],[11.042,21.605]],"v":[[-77.753,-9.606],[-48.994,-23.827],[-75.634,-99.862],[-94.005,-126.544],[-127.572,-117.138],[-116.033,-84.5]],"c":true}],"e":[{"i":[[-1.747,-5.394],[-6.756,2.827],[4.043,12.991],[7.255,0.544],[-0.928,-4.362],[-3.067,-11.365]],"o":[[6.753,3.106],[0.566,-2.66],[-1.366,-4.388],[-8.876,-0.666],[1.287,6.045],[9.783,36.25]],"v":[[-80.253,-20.856],[-45.744,-25.077],[-61.384,-119.112],[-69.005,-128.294],[-107.822,-124.388],[-99.783,-88]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.747,-5.394],[-6.756,2.827],[4.043,12.991],[7.255,0.544],[-0.928,-4.362],[-3.067,-11.365]],"o":[[6.753,3.106],[0.566,-2.66],[-1.366,-4.388],[-8.876,-0.666],[1.287,6.045],[9.783,36.25]],"v":[[-80.253,-20.856],[-45.744,-25.077],[-61.384,-119.112],[-69.005,-128.294],[-107.822,-124.388],[-99.783,-88]],"c":true}],"e":[{"i":[[0.253,-11.644],[-7.006,-0.673],[-0.275,13.603],[7.255,0.544],[0.072,-1.612],[0.283,-11.75]],"o":[[7.503,2.356],[0.566,-2.66],[0.134,-6.638],[-8.876,-0.666],[-0.275,6.174],[-0.905,37.536]],"v":[[-85.253,-21.856],[-39.494,-19.577],[-38.634,-121.362],[-46.005,-126.544],[-85.322,-126.138],[-85.533,-105.25]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"front_leg 2","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[4.75,1],[9,-22],[1.434,-5.714],[-7.055,-2.665],[0,0],[-1,24]],"o":[[-4.75,-1],[-3.356,8.204],[-2.411,9.608],[9.702,3.665],[0,0],[1.032,-24.774]],"v":[[-118.5,35.25],[-138,52.25],[-145.451,73.121],[-139.75,91.5],[-128,94],[-105.25,76]],"c":true}],"e":[{"i":[[4.75,1],[4.25,-15.5],[3.209,-11.832],[-14.975,-6.846],[0,0],[-5.826,23.304]],"o":[[-4.75,-1],[-2.098,7.653],[-6.331,23.343],[8.75,4],[0,0],[11.75,-47]],"v":[[-110.25,-0.5],[-135.25,11.25],[-137.169,44.657],[-144.25,89.25],[-120,91],[-95.75,62]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[4.75,1],[4.25,-15.5],[3.209,-11.832],[-14.975,-6.846],[0,0],[-5.826,23.304]],"o":[[-4.75,-1],[-2.098,7.653],[-6.331,23.343],[8.75,4],[0,0],[11.75,-47]],"v":[[-110.25,-0.5],[-135.25,11.25],[-137.169,44.657],[-144.25,89.25],[-120,91],[-95.75,62]],"c":true}],"e":[{"i":[[4.741,1.041],[5.25,-18.25],[3.787,-17.742],[-14.75,-7],[-6.801,3.4],[-1.936,23.943]],"o":[[-10.25,-2.25],[-2.194,7.626],[-2.581,12.093],[8.692,4.125],[9.5,-4.75],[4.75,-58.75]],"v":[[-110.75,-26],[-135.5,-9.75],[-137.169,40.657],[-145.5,87],[-116,87.5],[-96,42]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[4.741,1.041],[5.25,-18.25],[3.787,-17.742],[-14.75,-7],[-6.801,3.4],[-1.936,23.943]],"o":[[-10.25,-2.25],[-2.194,7.626],[-2.581,12.093],[8.692,4.125],[9.5,-4.75],[4.75,-58.75]],"v":[[-110.75,-26],[-135.5,-9.75],[-137.169,40.657],[-145.5,87],[-116,87.5],[-96,42]],"c":true}],"e":[{"i":[[4.741,1.041],[3.75,-12.75],[2.419,-28.407],[-17.25,-7],[-8.75,9],[1.25,31.25]],"o":[[-10.25,-2.25],[-2.239,7.613],[-2.302,27.042],[13.557,5.501],[13.575,-13.963],[-1.449,-36.221]],"v":[[-115.75,-43.75],[-140.5,-31.75],[-135.169,22.157],[-146.75,82],[-115.5,75.5],[-94.25,11.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[4.741,1.041],[3.75,-12.75],[2.419,-28.407],[-17.25,-7],[-8.75,9],[1.25,31.25]],"o":[[-10.25,-2.25],[-2.239,7.613],[-2.302,27.042],[13.557,5.501],[13.575,-13.963],[-1.449,-36.221]],"v":[[-115.75,-43.75],[-140.5,-31.75],[-135.169,22.157],[-146.75,82],[-115.5,75.5],[-94.25,11.25]],"c":true}],"e":[{"i":[[6.5,4],[3.75,-12.75],[2.293,-28.417],[-16.09,-10.012],[-8.75,9],[-0.489,32.012]],"o":[[-10.671,-6.567],[-2.239,7.613],[-2.831,35.093],[11.25,7],[13.575,-13.963],[0.5,-32.75]],"v":[[-116,-53.5],[-141,-42],[-136.169,18.157],[-146.75,80.75],[-116,72.25],[-95.25,9.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[6.5,4],[3.75,-12.75],[2.293,-28.417],[-16.09,-10.012],[-8.75,9],[-0.489,32.012]],"o":[[-10.671,-6.567],[-2.239,7.613],[-2.831,35.093],[11.25,7],[13.575,-13.963],[0.5,-32.75]],"v":[[-116,-53.5],[-141,-42],[-136.169,18.157],[-146.75,80.75],[-116,72.25],[-95.25,9.25]],"c":true}],"e":[{"i":[[6.402,4.155],[1.5,-13],[2.293,-28.417],[-12.25,-9.75],[-7.531,10.042],[-0.489,32.012]],"o":[[-14.25,-9.25],[-0.91,7.883],[-2.831,35.093],[10.367,8.251],[11.25,-15],[0.5,-32.75]],"v":[[-120.75,-55.25],[-149.25,-47],[-138.419,13.657],[-146.25,79],[-116,68.25],[-95.75,8.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[6.402,4.155],[1.5,-13],[2.293,-28.417],[-12.25,-9.75],[-7.531,10.042],[-0.489,32.012]],"o":[[-14.25,-9.25],[-0.91,7.883],[-2.831,35.093],[10.367,8.251],[11.25,-15],[0.5,-32.75]],"v":[[-120.75,-55.25],[-149.25,-47],[-138.419,13.657],[-146.25,79],[-116,68.25],[-95.75,8.75]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.065,-45.985],[-12.614,-9.275],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.169,35.843],[8.5,6.25],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-160.75,-54],[-146.169,9.657],[-142.25,77.5],[-116.25,69.5],[-102.75,6]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.065,-45.985],[-12.614,-9.275],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.169,35.843],[8.5,6.25],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-160.75,-54],[-146.169,9.657],[-142.25,77.5],[-116.25,69.5],[-102.75,6]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.581,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.535,35.809],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-162.75,-54],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-103.25,5.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.581,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.535,35.809],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-162.75,-54],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-103.25,5.75]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-164.5,-54.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-164.5,-54.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-164.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-164.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-165.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-165.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[7.5,4.75],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.353,-9.09],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-166.5,-55.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7.5,4.75],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.353,-9.09],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-166.5,-55.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[7.319,5.025],[2.566,-12.832],[-5.831,-47.657],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-16.75,-11.5],[-4,20],[4.37,35.717],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-128,-58.5],[-165,-54],[-146.919,7.657],[-142.25,77.5],[-116.75,69.75],[-103.5,4.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.319,5.025],[2.566,-12.832],[-5.831,-47.657],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-16.75,-11.5],[-4,20],[4.37,35.717],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-128,-58.5],[-165,-54],[-146.919,7.657],[-142.25,77.5],[-116.75,69.75],[-103.5,4.25]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-11.25],[-5.277,-51.162],[-11.5,-10],[-7.135,10.327],[1.942,32.239]],"o":[[-7.5,-15.25],[-5.657,14.142],[4.419,42.843],[5.738,4.989],[9.5,-13.75],[-2.5,-41.5]],"v":[[-118.25,-58.25],[-152,-60.75],[-142.169,5.407],[-142,74.25],[-115,67.5],[-100.5,7.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.297,8.738],[4.5,-11.25],[-5.277,-51.162],[-11.5,-10],[-7.135,10.327],[1.942,32.239]],"o":[[-7.5,-15.25],[-5.657,14.142],[4.419,42.843],[5.738,4.989],[9.5,-13.75],[-2.5,-41.5]],"v":[[-118.25,-58.25],[-152,-60.75],[-142.169,5.407],[-142,74.25],[-115,67.5],[-100.5,7.25]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-11.25],[3.782,-33.367],[-14.25,-11.25],[-7.135,10.327],[-4.397,31.997]],"o":[[-7.5,-15.25],[-5.657,14.142],[-3.581,31.593],[5.968,4.711],[9.5,-13.75],[4.5,-32.75]],"v":[[-97.75,-58.5],[-127.75,-58.5],[-134.169,-2.593],[-141,75.25],[-115.25,66.75],[-91.75,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[4.297,8.738],[4.5,-11.25],[3.782,-33.367],[-14.25,-11.25],[-7.135,10.327],[-4.397,31.997]],"o":[[-7.5,-15.25],[-5.657,14.142],[-3.581,31.593],[5.968,4.711],[9.5,-13.75],[4.5,-32.75]],"v":[[-97.75,-58.5],[-127.75,-58.5],[-134.169,-2.593],[-141,75.25],[-115.25,66.75],[-91.75,5.5]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-9.25],[4.919,-35.157],[-10.25,-4.25],[-7.135,10.327],[-4.741,31.948]],"o":[[-7.5,-15.25],[-4.549,9.351],[-5.123,36.615],[5.164,2.141],[9.5,-13.75],[5.75,-38.75]],"v":[[-91.75,-54.75],[-123.25,-56.25],[-135.419,-2.343],[-139.75,75.25],[-115.25,63.25],[-93.5,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[4.297,8.738],[4.5,-9.25],[4.919,-35.157],[-10.25,-4.25],[-7.135,10.327],[-4.741,31.948]],"o":[[-7.5,-15.25],[-4.549,9.351],[-5.123,36.615],[5.164,2.141],[9.5,-13.75],[5.75,-38.75]],"v":[[-91.75,-54.75],[-123.25,-56.25],[-135.419,-2.343],[-139.75,75.25],[-115.25,63.25],[-93.5,5.5]],"c":true}],"e":[{"i":[[0.836,9.701],[7.548,-6.989],[19.077,-31.597],[-7.5,-13.589],[-10.394,7.037],[-16.002,28.055]],"o":[[-1.46,-16.932],[-7.63,7.065],[-19.11,31.65],[3.884,7.038],[13.839,-9.37],[19.41,-34.028]],"v":[[-78.878,-31.909],[-105.69,-40.479],[-138.577,1.097],[-169,76.839],[-144.316,80.289],[-102.356,23.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0.836,9.701],[7.548,-6.989],[19.077,-31.597],[-7.5,-13.589],[-10.394,7.037],[-16.002,28.055]],"o":[[-1.46,-16.932],[-7.63,7.065],[-19.11,31.65],[3.884,7.038],[13.839,-9.37],[19.41,-34.028]],"v":[[-78.878,-31.909],[-105.69,-40.479],[-138.577,1.097],[-169,76.839],[-144.316,80.289],[-102.356,23.606]],"c":true}],"e":[{"i":[[-5.236,8.209],[10.285,0.149],[35.61,-9.708],[3.564,-11.86],[-10.922,-1.389],[-35.154,8.189]],"o":[[9.298,-14.576],[-10.397,-0.151],[-35.67,9.724],[-2.313,7.698],[16.579,2.108],[36.9,-8.596]],"v":[[-46.798,-36.424],[-60.792,-62.127],[-110.283,-52.474],[-176.064,-22.64],[-164.828,-3.611],[-99.846,-17.189]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-5.236,8.209],[10.285,0.149],[35.61,-9.708],[3.564,-11.86],[-10.922,-1.389],[-35.154,8.189]],"o":[[9.298,-14.576],[-10.397,-0.151],[-35.67,9.724],[-2.313,7.698],[16.579,2.108],[36.9,-8.596]],"v":[[-46.798,-36.424],[-60.792,-62.127],[-110.283,-52.474],[-176.064,-22.64],[-164.828,-3.611],[-99.846,-17.189]],"c":true}],"e":[{"i":[[-9.417,2.476],[7.453,7.089],[33.409,16.044],[11.518,-4.55],[-7.509,-8.052],[-31.695,-17.272]],"o":[[16.721,-4.397],[-7.535,-7.166],[-33.328,-16.005],[-8.279,3.27],[10.881,11.669],[26.688,14.544]],"v":[[-57.672,-18.423],[-48.508,-43.549],[-104.659,-76.544],[-165.221,-94.77],[-171.631,-73.169],[-112.688,-38.794]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-9.417,2.476],[7.453,7.089],[33.409,16.044],[11.518,-4.55],[-7.509,-8.052],[-31.695,-17.272]],"o":[[16.721,-4.397],[-7.535,-7.166],[-33.328,-16.005],[-8.279,3.27],[10.881,11.669],[26.688,14.544]],"v":[[-57.672,-18.423],[-48.508,-43.549],[-104.659,-76.544],[-165.221,-94.77],[-171.631,-73.169],[-112.688,-38.794]],"c":true}],"e":[{"i":[[-13.328,-39.327],[5.665,8.586],[20.659,27.544],[12.221,-2.48],[-0.619,-10.831],[-8.487,-9.741]],"o":[[6.455,19.045],[-5.742,-8.701],[-4.588,-6.117],[-8.724,1.77],[0.353,6.17],[15.938,18.294]],"v":[[-78.672,-5.173],[-51.008,-38.799],[-92.159,-94.794],[-123.471,-115.52],[-139.881,-99.419],[-126.188,-72.544]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-13.328,-39.327],[5.665,8.586],[20.659,27.544],[12.221,-2.48],[-0.619,-10.831],[-8.487,-9.741]],"o":[[6.455,19.045],[-5.742,-8.701],[-4.588,-6.117],[-8.724,1.77],[0.353,6.17],[15.938,18.294]],"v":[[-78.672,-5.173],[-51.008,-38.799],[-92.159,-94.794],[-123.471,-115.52],[-139.881,-99.419],[-126.188,-72.544]],"c":true}],"e":[{"i":[[-2.747,-26.894],[3.421,9.701],[13.386,31.722],[12.458,0.549],[0.572,-9.112],[-5.88,-11.505]],"o":[[1.76,17.236],[-3.467,-9.832],[-2.973,-7.045],[-8.893,-0.392],[-0.387,6.168],[11.042,21.605]],"v":[[-82.253,-9.606],[-48.994,-23.827],[-75.634,-99.862],[-94.005,-126.544],[-127.572,-117.138],[-110.533,-86.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-2.747,-26.894],[3.421,9.701],[13.386,31.722],[12.458,0.549],[0.572,-9.112],[-5.88,-11.505]],"o":[[1.76,17.236],[-3.467,-9.832],[-2.973,-7.045],[-8.893,-0.392],[-0.387,6.168],[11.042,21.605]],"v":[[-82.253,-9.606],[-48.994,-23.827],[-75.634,-99.862],[-94.005,-126.544],[-127.572,-117.138],[-110.533,-86.5]],"c":true}],"e":[{"i":[[-1.747,-5.394],[-6.756,2.827],[4.043,12.991],[7.255,0.544],[-0.928,-4.362],[-3.067,-11.365]],"o":[[6.753,3.106],[0.566,-2.66],[-1.366,-4.388],[-8.876,-0.666],[1.287,6.045],[9.783,36.25]],"v":[[-80.253,-20.856],[-45.744,-25.077],[-61.384,-119.112],[-69.005,-128.294],[-107.822,-124.388],[-99.783,-88]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.747,-5.394],[-6.756,2.827],[4.043,12.991],[7.255,0.544],[-0.928,-4.362],[-3.067,-11.365]],"o":[[6.753,3.106],[0.566,-2.66],[-1.366,-4.388],[-8.876,-0.666],[1.287,6.045],[9.783,36.25]],"v":[[-80.253,-20.856],[-45.744,-25.077],[-61.384,-119.112],[-69.005,-128.294],[-107.822,-124.388],[-99.783,-88]],"c":true}],"e":[{"i":[[0.253,-11.644],[-7.006,-0.673],[-0.275,13.603],[7.255,0.544],[0.072,-1.612],[0.283,-11.75]],"o":[[7.503,2.356],[0.566,-2.66],[0.134,-6.638],[-8.876,-0.666],[-0.275,6.174],[-0.905,37.536]],"v":[[-85.253,-21.856],[-39.494,-19.577],[-38.634,-121.362],[-46.005,-126.544],[-85.322,-126.138],[-85.533,-105.25]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"front_leg","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[4.75,1],[9,-22],[1.434,-5.714],[-7.055,-2.665],[0,0],[-1,24]],"o":[[-4.75,-1],[-3.356,8.204],[-2.411,9.608],[9.702,3.665],[0,0],[1.032,-24.774]],"v":[[-118.5,35.25],[-138,52.25],[-145.451,73.121],[-139.75,91.5],[-128,94],[-105.25,76]],"c":true}],"e":[{"i":[[4.75,1],[4.25,-15.5],[3.209,-11.832],[-14.975,-6.846],[0,0],[-5.826,23.304]],"o":[[-4.75,-1],[-2.098,7.653],[-6.331,23.343],[8.75,4],[0,0],[11.75,-47]],"v":[[-110.25,-0.5],[-135.25,11.25],[-137.169,44.657],[-144.25,89.25],[-120,91],[-95.75,62]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[4.75,1],[4.25,-15.5],[3.209,-11.832],[-14.975,-6.846],[0,0],[-5.826,23.304]],"o":[[-4.75,-1],[-2.098,7.653],[-6.331,23.343],[8.75,4],[0,0],[11.75,-47]],"v":[[-110.25,-0.5],[-135.25,11.25],[-137.169,44.657],[-144.25,89.25],[-120,91],[-95.75,62]],"c":true}],"e":[{"i":[[4.741,1.041],[5.25,-18.25],[3.787,-17.742],[-14.75,-7],[-6.801,3.4],[-1.936,23.943]],"o":[[-10.25,-2.25],[-2.194,7.626],[-2.581,12.093],[8.692,4.125],[9.5,-4.75],[4.75,-58.75]],"v":[[-110.75,-26],[-135.5,-9.75],[-137.169,40.657],[-145.5,87],[-116,87.5],[-96,42]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[4.741,1.041],[5.25,-18.25],[3.787,-17.742],[-14.75,-7],[-6.801,3.4],[-1.936,23.943]],"o":[[-10.25,-2.25],[-2.194,7.626],[-2.581,12.093],[8.692,4.125],[9.5,-4.75],[4.75,-58.75]],"v":[[-110.75,-26],[-135.5,-9.75],[-137.169,40.657],[-145.5,87],[-116,87.5],[-96,42]],"c":true}],"e":[{"i":[[4.741,1.041],[3.75,-12.75],[2.419,-28.407],[-17.25,-7],[-8.75,9],[1.25,31.25]],"o":[[-10.25,-2.25],[-2.239,7.613],[-2.302,27.042],[13.557,5.501],[13.575,-13.963],[-1.449,-36.221]],"v":[[-115.75,-43.75],[-140.5,-31.75],[-135.169,22.157],[-146.75,82],[-115.5,75.5],[-94.25,11.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[4.741,1.041],[3.75,-12.75],[2.419,-28.407],[-17.25,-7],[-8.75,9],[1.25,31.25]],"o":[[-10.25,-2.25],[-2.239,7.613],[-2.302,27.042],[13.557,5.501],[13.575,-13.963],[-1.449,-36.221]],"v":[[-115.75,-43.75],[-140.5,-31.75],[-135.169,22.157],[-146.75,82],[-115.5,75.5],[-94.25,11.25]],"c":true}],"e":[{"i":[[6.5,4],[3.75,-12.75],[2.293,-28.417],[-16.09,-10.012],[-8.75,9],[-0.489,32.012]],"o":[[-10.671,-6.567],[-2.239,7.613],[-2.831,35.093],[11.25,7],[13.575,-13.963],[0.5,-32.75]],"v":[[-116,-53.5],[-141,-42],[-136.169,18.157],[-146.75,80.75],[-116,72.25],[-95.25,9.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[6.5,4],[3.75,-12.75],[2.293,-28.417],[-16.09,-10.012],[-8.75,9],[-0.489,32.012]],"o":[[-10.671,-6.567],[-2.239,7.613],[-2.831,35.093],[11.25,7],[13.575,-13.963],[0.5,-32.75]],"v":[[-116,-53.5],[-141,-42],[-136.169,18.157],[-146.75,80.75],[-116,72.25],[-95.25,9.25]],"c":true}],"e":[{"i":[[6.402,4.155],[1.5,-13],[2.293,-28.417],[-12.25,-9.75],[-7.531,10.042],[-0.489,32.012]],"o":[[-14.25,-9.25],[-0.91,7.883],[-2.831,35.093],[10.367,8.251],[11.25,-15],[0.5,-32.75]],"v":[[-120.75,-55.25],[-149.25,-47],[-138.419,13.657],[-146.25,79],[-116,68.25],[-95.75,8.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[6.402,4.155],[1.5,-13],[2.293,-28.417],[-12.25,-9.75],[-7.531,10.042],[-0.489,32.012]],"o":[[-14.25,-9.25],[-0.91,7.883],[-2.831,35.093],[10.367,8.251],[11.25,-15],[0.5,-32.75]],"v":[[-120.75,-55.25],[-149.25,-47],[-138.419,13.657],[-146.25,79],[-116,68.25],[-95.75,8.75]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.065,-45.985],[-12.614,-9.275],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.169,35.843],[8.5,6.25],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-160.75,-54],[-146.169,9.657],[-142.25,77.5],[-116.25,69.5],[-102.75,6]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.065,-45.985],[-12.614,-9.275],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.169,35.843],[8.5,6.25],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-160.75,-54],[-146.169,9.657],[-142.25,77.5],[-116.25,69.5],[-102.75,6]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.581,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.535,35.809],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-162.75,-54],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-103.25,5.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-4.581,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[3.535,35.809],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-162.75,-54],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-103.25,5.75]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-164.5,-54.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[0.575,32.01]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-0.75,-41.75]],"v":[[-132.25,-60.75],[-164.5,-54.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-164.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-164.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-165.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[6.402,4.155],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.25,-9.25],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-165.75,-55],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[7.5,4.75],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.353,-9.09],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-166.5,-55.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7.5,4.75],[2.566,-12.832],[-5.831,-46.407],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-14.353,-9.09],[-4,20],[4.486,35.702],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-132.25,-60.75],[-166.5,-55.5],[-146.919,8.407],[-142.25,77.5],[-116.25,69.5],[-104,5.5]],"c":true}],"e":[{"i":[[7.319,5.025],[2.566,-12.832],[-5.831,-47.657],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-16.75,-11.5],[-4,20],[4.37,35.717],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-128,-58.5],[-165,-54],[-146.919,7.657],[-142.25,77.5],[-116.75,69.75],[-103.5,4.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[7.319,5.025],[2.566,-12.832],[-5.831,-47.657],[-10.25,-9.25],[-7.531,10.042],[1.298,32.271]],"o":[[-16.75,-11.5],[-4,20],[4.37,35.717],[7.833,7.068],[11.25,-15],[-1.75,-43.5]],"v":[[-128,-58.5],[-165,-54],[-146.919,7.657],[-142.25,77.5],[-116.75,69.75],[-103.5,4.25]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-11.25],[-5.277,-51.162],[-11.5,-10],[-7.135,10.327],[1.942,32.239]],"o":[[-7.5,-15.25],[-5.657,14.142],[4.419,42.843],[5.738,4.989],[9.5,-13.75],[-2.5,-41.5]],"v":[[-118.25,-58.25],[-152,-60.75],[-142.169,5.407],[-142,74.25],[-115,67.5],[-100.5,7.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[4.297,8.738],[4.5,-11.25],[-5.277,-51.162],[-11.5,-10],[-7.135,10.327],[1.942,32.239]],"o":[[-7.5,-15.25],[-5.657,14.142],[4.419,42.843],[5.738,4.989],[9.5,-13.75],[-2.5,-41.5]],"v":[[-118.25,-58.25],[-152,-60.75],[-142.169,5.407],[-142,74.25],[-115,67.5],[-100.5,7.25]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-11.25],[3.782,-33.367],[-14.25,-11.25],[-7.135,10.327],[-4.397,31.997]],"o":[[-7.5,-15.25],[-5.657,14.142],[-3.581,31.593],[5.968,4.711],[9.5,-13.75],[4.5,-32.75]],"v":[[-97.75,-58.5],[-127.75,-58.5],[-134.169,-2.593],[-141,75.25],[-115.25,66.75],[-91.75,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[4.297,8.738],[4.5,-11.25],[3.782,-33.367],[-14.25,-11.25],[-7.135,10.327],[-4.397,31.997]],"o":[[-7.5,-15.25],[-5.657,14.142],[-3.581,31.593],[5.968,4.711],[9.5,-13.75],[4.5,-32.75]],"v":[[-97.75,-58.5],[-127.75,-58.5],[-134.169,-2.593],[-141,75.25],[-115.25,66.75],[-91.75,5.5]],"c":true}],"e":[{"i":[[4.297,8.738],[4.5,-9.25],[4.919,-35.157],[-10.25,-4.25],[-7.135,10.327],[-4.741,31.948]],"o":[[-7.5,-15.25],[-4.549,9.351],[-5.123,36.615],[5.164,2.141],[9.5,-13.75],[5.75,-38.75]],"v":[[-91.75,-54.75],[-123.25,-56.25],[-135.419,-2.343],[-139.75,75.25],[-115.25,63.25],[-93.5,5.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[4.297,8.738],[4.5,-9.25],[4.919,-35.157],[-10.25,-4.25],[-7.135,10.327],[-4.741,31.948]],"o":[[-7.5,-15.25],[-4.549,9.351],[-5.123,36.615],[5.164,2.141],[9.5,-13.75],[5.75,-38.75]],"v":[[-91.75,-54.75],[-123.25,-56.25],[-135.419,-2.343],[-139.75,75.25],[-115.25,63.25],[-93.5,5.5]],"c":true}],"e":[{"i":[[0.836,9.701],[7.548,-6.989],[19.077,-31.597],[-7.5,-13.589],[-10.394,7.037],[-16.002,28.055]],"o":[[-1.46,-16.932],[-7.63,7.065],[-19.11,31.65],[3.884,7.038],[13.839,-9.37],[19.41,-34.028]],"v":[[-78.878,-31.909],[-105.69,-40.479],[-138.577,1.097],[-169,76.839],[-144.316,80.289],[-102.356,23.606]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0.836,9.701],[7.548,-6.989],[19.077,-31.597],[-7.5,-13.589],[-10.394,7.037],[-16.002,28.055]],"o":[[-1.46,-16.932],[-7.63,7.065],[-19.11,31.65],[3.884,7.038],[13.839,-9.37],[19.41,-34.028]],"v":[[-78.878,-31.909],[-105.69,-40.479],[-138.577,1.097],[-169,76.839],[-144.316,80.289],[-102.356,23.606]],"c":true}],"e":[{"i":[[-5.236,8.209],[10.285,0.149],[35.61,-9.708],[3.564,-11.86],[-10.922,-1.389],[-35.154,8.189]],"o":[[9.298,-14.576],[-10.397,-0.151],[-35.67,9.724],[-2.313,7.698],[16.579,2.108],[36.9,-8.596]],"v":[[-46.798,-36.424],[-60.792,-62.127],[-110.283,-52.474],[-176.064,-22.64],[-164.828,-3.611],[-99.846,-17.189]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-5.236,8.209],[10.285,0.149],[35.61,-9.708],[3.564,-11.86],[-10.922,-1.389],[-35.154,8.189]],"o":[[9.298,-14.576],[-10.397,-0.151],[-35.67,9.724],[-2.313,7.698],[16.579,2.108],[36.9,-8.596]],"v":[[-46.798,-36.424],[-60.792,-62.127],[-110.283,-52.474],[-176.064,-22.64],[-164.828,-3.611],[-99.846,-17.189]],"c":true}],"e":[{"i":[[-9.417,2.476],[7.453,7.089],[33.409,16.044],[11.518,-4.55],[-7.509,-8.052],[-31.695,-17.272]],"o":[[16.721,-4.397],[-7.535,-7.166],[-33.328,-16.005],[-8.279,3.27],[10.881,11.669],[26.688,14.544]],"v":[[-57.672,-18.423],[-48.508,-43.549],[-104.659,-76.544],[-165.221,-94.77],[-171.631,-73.169],[-112.688,-38.794]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-9.417,2.476],[7.453,7.089],[33.409,16.044],[11.518,-4.55],[-7.509,-8.052],[-31.695,-17.272]],"o":[[16.721,-4.397],[-7.535,-7.166],[-33.328,-16.005],[-8.279,3.27],[10.881,11.669],[26.688,14.544]],"v":[[-57.672,-18.423],[-48.508,-43.549],[-104.659,-76.544],[-165.221,-94.77],[-171.631,-73.169],[-112.688,-38.794]],"c":true}],"e":[{"i":[[-13.328,-39.327],[5.665,8.586],[20.659,27.544],[12.221,-2.48],[-0.619,-10.831],[-8.487,-9.741]],"o":[[6.455,19.045],[-5.742,-8.701],[-4.588,-6.117],[-8.724,1.77],[0.353,6.17],[15.938,18.294]],"v":[[-78.672,-5.173],[-51.008,-38.799],[-92.159,-94.794],[-123.471,-115.52],[-139.881,-99.419],[-126.188,-72.544]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-13.328,-39.327],[5.665,8.586],[20.659,27.544],[12.221,-2.48],[-0.619,-10.831],[-8.487,-9.741]],"o":[[6.455,19.045],[-5.742,-8.701],[-4.588,-6.117],[-8.724,1.77],[0.353,6.17],[15.938,18.294]],"v":[[-78.672,-5.173],[-51.008,-38.799],[-92.159,-94.794],[-123.471,-115.52],[-139.881,-99.419],[-126.188,-72.544]],"c":true}],"e":[{"i":[[-2.747,-26.894],[3.421,9.701],[13.386,31.722],[12.458,0.549],[0.572,-9.112],[-5.88,-11.505]],"o":[[1.76,17.236],[-3.467,-9.832],[-2.973,-7.045],[-8.893,-0.392],[-0.387,6.168],[11.042,21.605]],"v":[[-82.253,-9.606],[-48.994,-23.827],[-75.634,-99.862],[-94.005,-126.544],[-127.572,-117.138],[-110.533,-86.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-2.747,-26.894],[3.421,9.701],[13.386,31.722],[12.458,0.549],[0.572,-9.112],[-5.88,-11.505]],"o":[[1.76,17.236],[-3.467,-9.832],[-2.973,-7.045],[-8.893,-0.392],[-0.387,6.168],[11.042,21.605]],"v":[[-82.253,-9.606],[-48.994,-23.827],[-75.634,-99.862],[-94.005,-126.544],[-127.572,-117.138],[-110.533,-86.5]],"c":true}],"e":[{"i":[[-1.747,-5.394],[-6.756,2.827],[4.043,12.991],[7.255,0.544],[-0.928,-4.362],[-3.067,-11.365]],"o":[[6.753,3.106],[0.566,-2.66],[-1.366,-4.388],[-8.876,-0.666],[1.287,6.045],[9.783,36.25]],"v":[[-80.253,-20.856],[-45.744,-25.077],[-61.384,-119.112],[-69.005,-128.294],[-107.822,-124.388],[-99.783,-88]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.747,-5.394],[-6.756,2.827],[4.043,12.991],[7.255,0.544],[-0.928,-4.362],[-3.067,-11.365]],"o":[[6.753,3.106],[0.566,-2.66],[-1.366,-4.388],[-8.876,-0.666],[1.287,6.045],[9.783,36.25]],"v":[[-80.253,-20.856],[-45.744,-25.077],[-61.384,-119.112],[-69.005,-128.294],[-107.822,-124.388],[-99.783,-88]],"c":true}],"e":[{"i":[[0.253,-11.644],[-7.006,-0.673],[-0.275,13.603],[7.255,0.544],[0.072,-1.612],[0.283,-11.75]],"o":[[7.503,2.356],[0.566,-2.66],[0.134,-6.638],[-8.876,-0.666],[-0.275,6.174],[-0.905,37.536]],"v":[[-85.253,-21.856],[-39.494,-19.577],[-38.634,-121.362],[-46.005,-126.544],[-85.322,-126.138],[-85.533,-105.25]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"front_foot","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[-3.75,0],[-1.317,0.051],[1.875,0.125],[1.5,0.188],[0.125,2.125]],"o":[[0,0],[0,0],[3.75,0],[1.625,-0.062],[-6.175,-0.412],[-1.5,-0.188],[-0.188,-0.062]],"v":[[-134.938,93.625],[-135,98.375],[-130.625,99.75],[-113.25,99.75],[-113.062,97.625],[-131,97.125],[-132.125,93.812]],"c":true}],"e":[{"i":[[0,0],[-0.312,-1.938],[-3.75,0],[-1.317,0.051],[1.875,0.125],[2,0.5],[0.125,2.125]],"o":[[0,0],[0.312,1.938],[3.75,0],[1.625,-0.062],[-6.175,-0.412],[-1.467,-0.367],[-0.188,-0.062]],"v":[[-135.875,91.188],[-137.312,97.312],[-130.625,99.75],[-116.688,99.875],[-116.5,96.812],[-132.25,96.25],[-133.062,91.375]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[-0.312,-1.938],[-3.75,0],[-1.317,0.051],[1.875,0.125],[2,0.5],[0.125,2.125]],"o":[[0,0],[0.312,1.938],[3.75,0],[1.625,-0.062],[-6.175,-0.412],[-1.467,-0.367],[-0.188,-0.062]],"v":[[-135.875,91.188],[-137.312,97.312],[-130.625,99.75],[-116.688,99.875],[-116.5,96.812],[-132.25,96.25],[-133.062,91.375]],"c":true}],"e":[{"i":[[0,0],[0.205,-1.952],[-3.75,0],[-1.317,0.051],[2,0.062],[2,0.5],[0.125,2.125]],"o":[[0,0],[-0.25,2.375],[3.75,0],[1.625,-0.062],[-7.122,-0.223],[-1.467,-0.367],[-0.188,-0.062]],"v":[[-142.312,88.75],[-146.75,97.625],[-139.188,99.688],[-125.25,99.812],[-125.062,96.375],[-140.5,95.812],[-139.312,89]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0.205,-1.952],[-3.75,0],[-1.317,0.051],[2,0.062],[2,0.5],[0.125,2.125]],"o":[[0,0],[-0.25,2.375],[3.75,0],[1.625,-0.062],[-7.122,-0.223],[-1.467,-0.367],[-0.188,-0.062]],"v":[[-142.312,88.75],[-146.75,97.625],[-139.188,99.688],[-125.25,99.812],[-125.062,96.375],[-140.5,95.812],[-139.312,89]],"c":true}],"e":[{"i":[[0,0],[0.205,-1.952],[-3.75,0],[-1.317,0.051],[2,0.062],[2.375,0.312],[0.125,2.125]],"o":[[0,0],[-0.25,2.375],[3.75,0],[1.625,-0.062],[-7.122,-0.223],[-1.499,-0.197],[-0.188,-0.062]],"v":[[-142.562,83.25],[-148.875,97.75],[-140.938,99.938],[-127,100.062],[-127.312,96.812],[-142.312,96.25],[-139.125,83.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0.205,-1.952],[-3.75,0],[-1.317,0.051],[2,0.062],[2.375,0.312],[0.125,2.125]],"o":[[0,0],[-0.25,2.375],[3.75,0],[1.625,-0.062],[-7.122,-0.223],[-1.499,-0.197],[-0.188,-0.062]],"v":[[-142.562,83.25],[-148.875,97.75],[-140.938,99.938],[-127,100.062],[-127.312,96.812],[-142.312,96.25],[-139.125,83.5]],"c":true}],"e":[{"i":[[0,0],[0.513,-1.894],[-4.688,-0.375],[-1.317,0.051],[2.875,0.062],[2.41,1.748],[-0.438,0.562]],"o":[[0,0],[-0.812,3],[3.738,0.299],[1.625,-0.062],[-7.124,-0.155],[-3.188,-2.312],[-0.188,-0.062]],"v":[[-144.875,82.25],[-151.688,93.125],[-144.938,99.812],[-130.625,99.812],[-131.188,96.438],[-145.625,95],[-140.25,82.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0.513,-1.894],[-4.688,-0.375],[-1.317,0.051],[2.875,0.062],[2.41,1.748],[-0.438,0.562]],"o":[[0,0],[-0.812,3],[3.738,0.299],[1.625,-0.062],[-7.124,-0.155],[-3.188,-2.312],[-0.188,-0.062]],"v":[[-144.875,82.25],[-151.688,93.125],[-144.938,99.812],[-130.625,99.812],[-131.188,96.438],[-145.625,95],[-140.25,82.75]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.688,-0.375],[-1.376,0],[2.875,0.062],[3.125,2.75],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[3.738,0.299],[2.875,0],[-7.124,-0.155],[-2.956,-2.602],[-0.188,-0.062]],"v":[[-145.438,80.438],[-152.25,91.188],[-145.312,99.812],[-136.438,99.75],[-136.75,96.5],[-147.312,94.562],[-140.812,80.938]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[1.144,-3.133],[-4.688,-0.375],[-1.376,0],[2.875,0.062],[3.125,2.75],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[3.738,0.299],[2.875,0],[-7.124,-0.155],[-2.956,-2.602],[-0.188,-0.062]],"v":[[-145.438,80.438],[-152.25,91.188],[-145.312,99.812],[-136.438,99.75],[-136.75,96.5],[-147.312,94.562],[-140.812,80.938]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[0.375,0.812],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152,91],[-145.312,99.812],[-139.625,100],[-139.688,96.5],[-147.312,94.562],[-139.25,78.875]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[1.125,0.875],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152.25,91],[-146,99.812],[-140.312,100],[-140.375,96.5],[-147.75,94.562],[-139.062,78.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[1.125,0.875],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152.25,91],[-146,99.812],[-140.312,100],[-140.375,96.5],[-147.75,94.562],[-139.062,78.75]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[1.125,0.875],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152.328,90.922],[-146.168,99.809],[-140.48,99.996],[-140.543,96.496],[-147.75,94.562],[-139.062,78.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[1.125,0.875],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-143.062,76.625],[-152.328,90.922],[-146.168,99.809],[-140.48,99.996],[-140.543,96.496],[-147.75,94.562],[-139.062,78.75]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[1.188,1.25],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-142.938,73.625],[-152.141,90.297],[-146.168,99.809],[-138.918,99.996],[-138.98,96.496],[-147.75,94.562],[-138.938,75.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[1.188,1.25],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[-2.433,-3.097],[-0.188,-0.062]],"v":[[-142.938,73.625],[-152.141,90.297],[-146.168,99.809],[-138.918,99.996],[-138.98,96.496],[-147.75,94.562],[-138.938,75.75]],"c":true}],"e":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[-0.188,1.562],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[1,-6.688],[-0.188,-0.062]],"v":[[-142.938,73.625],[-151.453,90.359],[-152.543,99.871],[-138.168,99.871],[-138.23,96.371],[-148.5,94.312],[-137.938,75.312]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[1.144,-3.133],[-4.697,-0.224],[-1.376,0],[2.875,0.062],[-0.188,1.562],[-0.438,0.562]],"o":[[0,0],[-1.438,3.938],[2.625,0.125],[2.875,0],[-7.124,-0.155],[1,-6.688],[-0.188,-0.062]],"v":[[-142.938,73.625],[-151.453,90.359],[-152.543,99.871],[-138.168,99.871],[-138.23,96.371],[-148.5,94.312],[-137.938,75.312]],"c":true}],"e":[{"i":[[0,0],[1.368,-3.042],[-4.77,-0.059],[-1.376,0],[2.875,0.062],[-0.5,2.438],[-0.438,0.562]],"o":[[0,0],[-2.734,6.078],[2.628,0.032],[2.875,0],[-7.124,-0.155],[1,-6.688],[-0.188,-0.062]],"v":[[-143.125,73.625],[-150.391,90.109],[-149.043,99.746],[-137.355,99.871],[-137.48,95.934],[-147.812,93.875],[-139,74]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[1.368,-3.042],[-4.77,-0.059],[-1.376,0],[2.875,0.062],[-0.5,2.438],[-0.438,0.562]],"o":[[0,0],[-2.734,6.078],[2.628,0.032],[2.875,0],[-7.124,-0.155],[1,-6.688],[-0.188,-0.062]],"v":[[-143.125,73.625],[-150.391,90.109],[-149.043,99.746],[-137.355,99.871],[-137.48,95.934],[-147.812,93.875],[-139,74]],"c":true}],"e":[{"i":[[0,0],[1.224,-3.103],[-4.414,-1.808],[-1.376,0],[2.873,0.125],[0.75,2.312],[-0.438,0.562]],"o":[[0,0],[-0.672,1.703],[1.23,0.504],[2.875,0],[-5.645,-0.246],[-0.75,-4.688],[-0.188,-0.062]],"v":[[-166.75,79.188],[-172.016,87.797],[-163.355,99.496],[-159.168,99.871],[-159.355,96.684],[-167.062,89.75],[-162.938,81.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[1.224,-3.103],[-4.414,-1.808],[-1.376,0],[2.873,0.125],[0.75,2.312],[-0.438,0.562]],"o":[[0,0],[-0.672,1.703],[1.23,0.504],[2.875,0],[-5.645,-0.246],[-0.75,-4.688],[-0.188,-0.062]],"v":[[-166.75,79.188],[-172.016,87.797],[-163.355,99.496],[-159.168,99.871],[-159.355,96.684],[-167.062,89.75],[-162.938,81.5]],"c":true}],"e":[{"i":[[0,0],[3.102,-1.225],[-1.694,-4.459],[-3.394,-5.471],[1.17,2.627],[-1.177,2.127],[-0.71,0.065]],"o":[[0,0],[-1.703,0.672],[0.472,1.243],[1.689,2.723],[-1.657,-3.72],[0.48,-0.542],[-0.082,-0.18]],"v":[[-176.364,-14.881],[-185.561,-14.472],[-188.88,-8.594],[-180.856,7.596],[-178.093,6.157],[-182.293,-9.833],[-175.449,-10.517]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[3.102,-1.225],[-1.694,-4.459],[-3.394,-5.471],[1.17,2.627],[-1.177,2.127],[-0.71,0.065]],"o":[[0,0],[-1.703,0.672],[0.472,1.243],[1.689,2.723],[-1.657,-3.72],[0.48,-0.542],[-0.082,-0.18]],"v":[[-176.364,-14.881],[-185.561,-14.472],[-188.88,-8.594],[-180.856,7.596],[-178.093,6.157],[-182.293,-9.833],[-175.449,-10.517]],"c":true}],"e":[{"i":[[0,0],[0.418,0.417],[2.637,-2.056],[0.813,-6.387],[-0.747,2.777],[-2.254,0.91],[-0.366,-0.494]],"o":[[-0.163,-0.123],[-1.769,-1.395],[-1.189,0.927],[-0.405,3.179],[1.058,-3.932],[1.554,-0.245],[0.049,-0.191]],"v":[[-168.957,-92.689],[-171.293,-94.48],[-176.324,-92.256],[-182.484,-81.692],[-179.432,-81.068],[-174.679,-89.13],[-172.497,-88.099]],"c":true}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"torso_shadow","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-22.926,6.45],[0,4.032],[1.869,8.098]],"o":[[0,0],[0,0],[0,0],[0,0],[6.388,-1.797],[0,-18.5],[-4.5,-19.5]],"v":[[-125.5,-51.25],[-234,-46],[-219.38,-14.604],[-203.5,19.5],[-127.973,18.555],[-117.5,10],[-127.25,-28]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-23.137,7.517],[0.331,4.018],[6.375,11.167]],"o":[[0,0],[0,0],[0,0],[0,0],[6.447,-2.094],[-1.667,-20.25],[-8.208,-14.833]],"v":[[-147.167,-93.25],[-241.125,-74.75],[-226.505,-43.354],[-210.625,-9.25],[-134.402,-13.708],[-99.333,-18.75],[-141.375,-71.667]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-23.137,7.517],[0.331,4.018],[6.375,11.167]],"o":[[0,0],[0,0],[0,0],[0,0],[6.447,-2.094],[-1.667,-20.25],[-8.208,-14.833]],"v":[[-147.167,-93.25],[-241.125,-74.75],[-226.505,-43.354],[-210.625,-9.25],[-134.402,-13.708],[-99.333,-18.75],[-141.375,-71.667]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-23.348,8.583],[-0.859,3.939],[14.206,9.366]],"o":[[0,0],[0,0],[0,0],[0,0],[6.506,-2.392],[5.667,-26],[-11.917,-10.167]],"v":[[-166.833,-119.25],[-246.25,-87.5],[-231.63,-56.104],[-215.75,-22],[-138.832,-29.971],[-108.667,-35.5],[-158.5,-97.333]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-23.348,8.583],[-0.859,3.939],[14.206,9.366]],"o":[[0,0],[0,0],[0,0],[0,0],[6.506,-2.392],[5.667,-26],[-11.917,-10.167]],"v":[[-166.833,-119.25],[-246.25,-87.5],[-231.63,-56.104],[-215.75,-22],[-138.832,-29.971],[-108.667,-35.5],[-158.5,-97.333]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-23.559,9.649],[0,4.032],[20.375,10]],"o":[[0,0],[0,0],[0,0],[0,0],[6.565,-2.689],[0,-18.5],[-15.625,-5.5]],"v":[[-179.25,-126.25],[-244.125,-81.25],[-229.505,-49.854],[-213.625,-15.75],[-136.012,-27.234],[-111.75,-45.25],[-165.875,-105]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-23.559,9.649],[0,4.032],[20.375,10]],"o":[[0,0],[0,0],[0,0],[0,0],[6.565,-2.689],[0,-18.5],[-15.625,-5.5]],"v":[[-179.25,-126.25],[-244.125,-81.25],[-229.505,-49.854],[-213.625,-15.75],[-136.012,-27.234],[-111.75,-45.25],[-165.875,-105]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-22.526,8.583],[-0.085,4.031],[19.75,6.25]],"o":[[0,0],[0,0],[0,0],[0,0],[6.277,-2.392],[0.5,-23.75],[-20.967,-6.635]],"v":[[-189.5,-124],[-246.5,-94.25],[-231.88,-62.854],[-216,-28.75],[-141.79,-36.721],[-119.5,-46.25],[-172.25,-103.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-22.526,8.583],[-0.085,4.031],[19.75,6.25]],"o":[[0,0],[0,0],[0,0],[0,0],[6.277,-2.392],[0.5,-23.75],[-20.967,-6.635]],"v":[[-189.5,-124],[-246.5,-94.25],[-231.88,-62.854],[-216,-28.75],[-141.79,-36.721],[-119.5,-46.25],[-172.25,-103.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-22.226,8.183],[-0.042,4.031],[17.062,-3.375]],"o":[[0,0],[0,0],[0,0],[0,0],[6.193,-2.28],[0.25,-21.125],[-19.938,-0.875]],"v":[[-198.125,-131.938],[-248.75,-92.875],[-234.13,-61.479],[-218.25,-27.375],[-145.028,-34.029],[-124.625,-44.125],[-185.062,-106.125]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-22.226,8.183],[-0.042,4.031],[17.062,-3.375]],"o":[[0,0],[0,0],[0,0],[0,0],[6.193,-2.28],[0.25,-21.125],[-19.938,-0.875]],"v":[[-198.125,-131.938],[-248.75,-92.875],[-234.13,-61.479],[-218.25,-27.375],[-145.028,-34.029],[-124.625,-44.125],[-185.062,-106.125]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[0,4.032],[20.875,-6]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[0,-18.5],[-24.625,5]],"v":[[-210.75,-120.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-127.75,-51],[-190.375,-103]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[0,4.032],[20.875,-6]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[0,-18.5],[-24.625,5]],"v":[[-210.75,-120.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-127.75,-51],[-190.375,-103]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[-0.394,4.012],[14.375,-2]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[2.75,-28],[-25.125,2]],"v":[[-217.25,-114.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-127.25,-44],[-190.875,-101.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[-0.394,4.012],[14.375,-2]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[2.75,-28],[-25.125,2]],"v":[[-217.25,-114.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-127.25,-44],[-190.875,-101.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[0,4.032],[22.375,-6]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[0,-18.5],[-30.625,4]],"v":[[-208.25,-124.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-125.75,-48],[-186.875,-102.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[0,4.032],[22.375,-6]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[0,-18.5],[-30.625,4]],"v":[[-208.25,-124.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-125.75,-48],[-186.875,-102.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[-0.276,4.022],[23.375,-3]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[1.75,-25.5],[-36.625,1.5]],"v":[[-199.25,-139.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-116.75,-42.5],[-172.375,-117.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-21.926,7.783],[-0.276,4.022],[23.375,-3]],"o":[[0,0],[0,0],[0,0],[0,0],[6.11,-2.169],[1.75,-25.5],[-36.625,1.5]],"v":[[-199.25,-139.375],[-251,-91.5],[-236.38,-60.104],[-220.5,-26],[-148.266,-31.337],[-116.75,-42.5],[-172.375,-117.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-22.462,6.067],[-0.311,4.02],[19.806,-2.204]],"o":[[0,0],[0,0],[0,0],[0,0],[6.259,-1.69],[1.429,-18.445],[-28.194,-8.204]],"v":[[-158.337,-152.043],[-228.363,-105.335],[-216.212,-72.904],[-203.013,-37.676],[-115.082,-37.418],[-104.389,-42.781],[-144.806,-123.296]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-22.462,6.067],[-0.311,4.02],[19.806,-2.204]],"o":[[0,0],[0,0],[0,0],[0,0],[6.259,-1.69],[1.429,-18.445],[-28.194,-8.204]],"v":[[-158.337,-152.043],[-228.363,-105.335],[-216.212,-72.904],[-203.013,-37.676],[-115.082,-37.418],[-104.389,-42.781],[-144.806,-123.296]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-26.861,6.333],[-0.603,3.986],[10.806,12.796]],"o":[[0,0],[0,0],[0,0],[0,0],[7.485,-1.765],[6.389,-42.219],[-10.194,-21.704]],"v":[[-90.837,-148.043],[-165.863,-149.335],[-173.257,-95.553],[-203.013,-37.676],[-116.092,-38.296],[-105.889,-32.781],[-106.806,-118.796]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-26.861,6.333],[-0.603,3.986],[10.806,12.796]],"o":[[0,0],[0,0],[0,0],[0,0],[7.485,-1.765],[6.389,-42.219],[-10.194,-21.704]],"v":[[-90.837,-148.043],[-165.863,-149.335],[-173.257,-95.553],[-203.013,-37.676],[-116.092,-38.296],[-105.889,-32.781],[-106.806,-118.796]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-26.314,-8.317],[-2.326,3.293],[-1.535,28.194]],"o":[[0,0],[0,0],[0,0],[0,0],[7.332,2.318],[10.674,-15.11],[0.465,-14.306]],"v":[[-13.665,-111.571],[-25.844,-146.001],[-97.812,-112.595],[-173.86,-77.295],[-98.886,-33.312],[-83.63,-34.093],[-35.465,-98.694]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-26.314,-8.317],[-2.326,3.293],[-1.535,28.194]],"o":[[0,0],[0,0],[0,0],[0,0],[7.332,2.318],[10.674,-15.11],[0.465,-14.306]],"v":[[-13.665,-111.571],[-25.844,-146.001],[-97.812,-112.595],[-173.86,-77.295],[-98.886,-33.312],[-83.63,-34.093],[-35.465,-98.694]],"c":true}],"e":[{"i":[[0.588,-12.173],[0,0],[0,0],[0,0],[16.188,-26.117],[-8.968,-0.754],[0.348,7.573]],"o":[[-0.066,1.365],[0,0],[0,0],[0,0],[-4.511,7.277],[19.518,1.642],[-2.652,-5.927]],"v":[[36.912,-33.827],[73.885,-32.534],[53.12,-84.888],[30.564,-141.758],[-67.93,-59.518],[-62.85,-46.539],[28.152,-37.573]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0.588,-12.173],[0,0],[0,0],[0,0],[16.188,-26.117],[-8.968,-0.754],[0.348,7.573]],"o":[[-0.066,1.365],[0,0],[0,0],[0,0],[-4.511,7.277],[19.518,1.642],[-2.652,-5.927]],"v":[[36.912,-33.827],[73.885,-32.534],[53.12,-84.888],[30.564,-141.758],[-67.93,-59.518],[-62.85,-46.539],[28.152,-37.573]],"c":true}],"e":[{"i":[[-17.35,-6.288],[0,0],[0,0],[0,0],[28.193,-18.421],[-3.528,-1.951],[-15.401,-6.771]],"o":[[1.285,0.466],[0,0],[0,0],[0,0],[-7.856,5.133],[17.142,9.476],[13.099,7.729]],"v":[[42.35,48.288],[69.649,36.155],[65.176,-22.781],[60.317,-86.799],[-50.331,-35.938],[-74.301,-10.81],[-7.099,21.771]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-17.35,-6.288],[0,0],[0,0],[0,0],[28.193,-18.421],[-3.528,-1.951],[-15.401,-6.771]],"o":[[1.285,0.466],[0,0],[0,0],[0,0],[-7.856,5.133],[17.142,9.476],[13.099,7.729]],"v":[[42.35,48.288],[69.649,36.155],[65.176,-22.781],[60.317,-86.799],[-50.331,-35.938],[-74.301,-10.81],[-7.099,21.771]],"c":true}],"e":[{"i":[[-15.917,-9.339],[0,0],[0,0],[0,0],[45.516,-4.212],[-4.543,-3.733],[-13.912,-9.459]],"o":[[1.179,0.692],[0,0],[0,0],[0,0],[-21.206,1.962],[15.133,12.436],[11.475,9.983]],"v":[[30.59,79.435],[50.764,82.738],[70.028,36.435],[90.953,-13.862],[-43.305,-41.39],[-63.962,-0.483],[-12.493,44.848]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-15.917,-9.339],[0,0],[0,0],[0,0],[45.516,-4.212],[-4.543,-3.733],[-13.912,-9.459]],"o":[[1.179,0.692],[0,0],[0,0],[0,0],[-21.206,1.962],[15.133,12.436],[11.475,9.983]],"v":[[30.59,79.435],[50.764,82.738],[70.028,36.435],[90.953,-13.862],[-43.305,-41.39],[-63.962,-0.483],[-12.493,44.848]],"c":true}],"e":[{"i":[[-15.917,-9.339],[0,0],[0,0],[0,0],[45.516,-4.212],[-4.543,-3.733],[-13.912,-9.459]],"o":[[1.179,0.692],[0,0],[0,0],[0,0],[-21.206,1.962],[15.133,12.436],[11.475,9.983]],"v":[[6.59,98.935],[102.764,91.738],[97.102,41.121],[90.953,-13.862],[-43.305,-41.39],[-63.962,-0.483],[-31.493,60.848]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-15.917,-9.339],[0,0],[0,0],[0,0],[45.516,-4.212],[-4.543,-3.733],[-13.912,-9.459]],"o":[[1.179,0.692],[0,0],[0,0],[0,0],[-21.206,1.962],[15.133,12.436],[11.475,9.983]],"v":[[6.59,98.935],[102.764,91.738],[97.102,41.121],[90.953,-13.862],[-43.305,-41.39],[-63.962,-0.483],[-31.493,60.848]],"c":true}],"e":[{"i":[[-15.917,-9.339],[0,0],[0,0],[0,0],[45.516,-4.212],[-4.543,-3.733],[-13.912,-9.459]],"o":[[1.179,0.692],[0,0],[0,0],[0,0],[-21.206,1.962],[15.133,12.436],[11.475,9.983]],"v":[[6.59,98.935],[113.764,112.238],[102.83,51.795],[90.953,-13.862],[-43.305,-58.89],[-63.962,-0.483],[-31.493,60.848]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-15.917,-9.339],[0,0],[0,0],[0,0],[45.516,-4.212],[-4.543,-3.733],[-13.912,-9.459]],"o":[[1.179,0.692],[0,0],[0,0],[0,0],[-21.206,1.962],[15.133,12.436],[11.475,9.983]],"v":[[6.59,98.935],[113.764,112.238],[102.83,51.795],[90.953,-13.862],[-43.305,-58.89],[-63.962,-0.483],[-31.493,60.848]],"c":true}],"e":[{"i":[[-15.917,-9.339],[0,0],[0,0],[0,0],[45.516,-4.212],[-4.543,-3.733],[-13.912,-9.459]],"o":[[1.179,0.692],[0,0],[0,0],[0,0],[-21.206,1.962],[15.133,12.436],[11.475,9.983]],"v":[[6.59,98.935],[149.264,112.738],[121.314,52.055],[90.953,-13.862],[-43.305,-58.89],[-63.962,-0.483],[-31.493,60.848]],"c":true}]},{"t":25}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[14.25,-1.5],[-5,-12.75],[0,0],[0,0],[0,0],[-3.185,-1.414],[-0.417,3.2],[4.25,21.5]],"o":[[-14.25,1.5],[5,12.75],[0,0],[0,0],[0,0],[3.997,1.774],[0.75,-5.75],[-4.25,-21.5]],"v":[[-133.25,-50.25],[-142.25,-16],[-134.5,7],[-126.25,8.5],[-111.5,9.5],[-105.512,12.635],[-96.5,12.5],[-101.5,-23]],"c":true}],"e":[{"i":[[11.5,-1.25],[-9.75,-13.75],[-3.75,-8.25],[0,0],[0,0],[-3.732,-0.976],[-0.417,3.2],[11.886,20.672]],"o":[[-14.245,1.548],[7.922,11.172],[3.997,8.794],[0,0],[0,0],[4.683,1.225],[0.75,-5.75],[-11.5,-20]],"v":[[-147.5,-93.25],[-153,-59],[-136.75,-27.5],[-134,-16],[-116.75,-16],[-109.723,-13.696],[-99.25,-15],[-110.5,-65]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[11.5,-1.25],[-9.75,-13.75],[-3.75,-8.25],[0,0],[0,0],[-3.732,-0.976],[-0.417,3.2],[11.886,20.672]],"o":[[-14.245,1.548],[7.922,11.172],[3.997,8.794],[0,0],[0,0],[4.683,1.225],[0.75,-5.75],[-11.5,-20]],"v":[[-147.5,-93.25],[-153,-59],[-136.75,-27.5],[-134,-16],[-116.75,-16],[-109.723,-13.696],[-99.25,-15],[-110.5,-65]],"c":true}],"e":[{"i":[[11.473,-1.48],[-9,-15.5],[-6.153,-20.218],[-0.699,-4.192],[0,0],[-8.001,1.494],[-0.555,3.179],[11,14.75]],"o":[[-15.5,2],[7.837,13.496],[3.5,11.5],[1.5,9],[0,0],[6.393,-1.194],[2.75,-15.75],[-17.044,-22.854]],"v":[[-164,-119],[-176,-86.5],[-143.5,-49],[-140.25,-30.25],[-130.5,-23.25],[-117.249,-21.744],[-106.75,-38.25],[-124,-94.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[11.473,-1.48],[-9,-15.5],[-6.153,-20.218],[-0.699,-4.192],[0,0],[-8.001,1.494],[-0.555,3.179],[11,14.75]],"o":[[-15.5,2],[7.837,13.496],[3.5,11.5],[1.5,9],[0,0],[6.393,-1.194],[2.75,-15.75],[-17.044,-22.854]],"v":[[-164,-119],[-176,-86.5],[-143.5,-49],[-140.25,-30.25],[-130.5,-23.25],[-117.249,-21.744],[-106.75,-38.25],[-124,-94.5]],"c":true}],"e":[{"i":[[12,-0.5],[-7,-15.75],[-16.75,-23.25],[0,0],[0,0],[-4.845,0.332],[0.124,3.225],[12.283,13.7]],"o":[[-14.565,0.607],[6.338,14.261],[6.608,9.173],[0,0],[0,0],[6.08,-0.416],[-0.75,-19.5],[-19.5,-21.75]],"v":[[-172.25,-128.75],[-186.25,-95.25],[-154.25,-64.5],[-140.75,-41.5],[-129.75,-40.5],[-120.534,-40.675],[-107.75,-45.5],[-133.25,-101.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[12,-0.5],[-7,-15.75],[-16.75,-23.25],[0,0],[0,0],[-4.845,0.332],[0.124,3.225],[12.283,13.7]],"o":[[-14.565,0.607],[6.338,14.261],[6.608,9.173],[0,0],[0,0],[6.08,-0.416],[-0.75,-19.5],[-19.5,-21.75]],"v":[[-172.25,-128.75],[-186.25,-95.25],[-154.25,-64.5],[-140.75,-41.5],[-129.75,-40.5],[-120.534,-40.675],[-107.75,-45.5],[-133.25,-101.25]],"c":true}],"e":[{"i":[[11.25,0.75],[-5.25,-12.25],[-14.25,-14.75],[0,0],[0,0],[-4.237,0.464],[0.792,3.128],[12.283,13.7]],"o":[[-14.545,-0.97],[6.148,14.345],[7.855,8.131],[0,0],[0,0],[5.317,-0.582],[-5,-19.75],[-19.5,-21.75]],"v":[[-182.5,-124.5],[-200.25,-100],[-171.75,-72.25],[-149.25,-42.5],[-134,-44],[-125.844,-44.44],[-115.5,-49.5],[-144,-101]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[11.25,0.75],[-5.25,-12.25],[-14.25,-14.75],[0,0],[0,0],[-4.237,0.464],[0.792,3.128],[12.283,13.7]],"o":[[-14.545,-0.97],[6.148,14.345],[7.855,8.131],[0,0],[0,0],[5.317,-0.582],[-5,-19.75],[-19.5,-21.75]],"v":[[-182.5,-124.5],[-200.25,-100],[-171.75,-72.25],[-149.25,-42.5],[-134,-44],[-125.844,-44.44],[-115.5,-49.5],[-144,-101]],"c":true}],"e":[{"i":[[11.25,0.75],[-3,-9.5],[-16.501,-12.179],[0,0],[0,0],[-5.339,1.543],[1.285,2.96],[13.464,12.542]],"o":[[-14.545,-0.97],[3.62,11.463],[10.5,7.75],[0,0],[0,0],[6.7,-1.937],[-8.25,-19],[-18.25,-17]],"v":[[-196,-127],[-215.75,-104],[-190.25,-76.25],[-161.25,-46.75],[-147.5,-45.75],[-137.183,-48.263],[-124.5,-56],[-155.25,-105.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[11.25,0.75],[-3,-9.5],[-16.501,-12.179],[0,0],[0,0],[-5.339,1.543],[1.285,2.96],[13.464,12.542]],"o":[[-14.545,-0.97],[3.62,11.463],[10.5,7.75],[0,0],[0,0],[6.7,-1.937],[-8.25,-19],[-18.25,-17]],"v":[[-196,-127],[-215.75,-104],[-190.25,-76.25],[-161.25,-46.75],[-147.5,-45.75],[-137.183,-48.263],[-124.5,-56],[-155.25,-105.75]],"c":true}],"e":[{"i":[[11.274,-0.174],[-3.768,-9.222],[-17.443,-10.787],[0,0],[0,0],[-5.195,1.976],[1.523,2.845],[14.446,11.396]],"o":[[-14.576,0.225],[4.547,11.128],[11.1,6.864],[0,0],[0,0],[6.519,-2.479],[-9.779,-18.26],[-19.581,-15.448]],"v":[[-201.482,-122.631],[-219.282,-98.091],[-191.595,-72.523],[-160.276,-45.498],[-146.49,-45.627],[-136.413,-48.977],[-124.407,-57.727],[-159.129,-104.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[11.274,-0.174],[-3.768,-9.222],[-17.443,-10.787],[0,0],[0,0],[-5.195,1.976],[1.523,2.845],[14.446,11.396]],"o":[[-14.576,0.225],[4.547,11.128],[11.1,6.864],[0,0],[0,0],[6.519,-2.479],[-9.779,-18.26],[-19.581,-15.448]],"v":[[-201.482,-122.631],[-219.282,-98.091],[-191.595,-72.523],[-160.276,-45.498],[-146.49,-45.627],[-136.413,-48.977],[-124.407,-57.727],[-159.129,-104.791]],"c":true}],"e":[{"i":[[11.263,-0.515],[-4.045,-9.104],[-17.762,-10.254],[0,0],[0,0],[-4.914,2.186],[1.609,2.797],[14.583,11.629]],"o":[[-14.562,0.666],[4.881,10.985],[11.302,6.525],[0,0],[0,0],[6.166,-2.744],[-10.326,-17.956],[-19.5,-15.551]],"v":[[-203.457,-121.431],[-220.506,-95.864],[-192.058,-71.145],[-161.186,-45.079],[-146.161,-45.625],[-136.606,-49.382],[-125.454,-58.637],[-160.583,-104.379]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[11.263,-0.515],[-4.045,-9.104],[-17.762,-10.254],[0,0],[0,0],[-4.914,2.186],[1.609,2.797],[14.583,11.629]],"o":[[-14.562,0.666],[4.881,10.985],[11.302,6.525],[0,0],[0,0],[6.166,-2.744],[-10.326,-17.956],[-19.5,-15.551]],"v":[[-203.457,-121.431],[-220.506,-95.864],[-192.058,-71.145],[-161.186,-45.079],[-146.161,-45.625],[-136.606,-49.382],[-125.454,-58.637],[-160.583,-104.379]],"c":true}],"e":[{"i":[[11.249,-0.76],[-4.243,-9.014],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[1.669,2.762],[14.833,11.309]],"o":[[-14.544,0.983],[5.119,10.876],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-204.896,-120.191],[-222.385,-95.258],[-192.405,-70.164],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.294,-59.611],[-161.661,-104.077]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[11.249,-0.76],[-4.243,-9.014],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[1.669,2.762],[14.833,11.309]],"o":[[-14.544,0.983],[5.119,10.876],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-204.896,-120.191],[-222.385,-95.258],[-192.405,-70.164],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.294,-59.611],[-161.661,-104.077]],"c":true}],"e":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[1.669,2.762],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-206.146,-119.191],[-223.135,-93.008],[-192.405,-68.914],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.294,-59.611],[-162.161,-102.827]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[1.669,2.762],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-206.146,-119.191],[-223.135,-93.008],[-192.405,-68.914],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.294,-59.611],[-162.161,-102.827]],"c":true}],"e":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[1.669,2.762],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-60.111],[-163.411,-102.327]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[1.669,2.762],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-60.111],[-163.411,-102.327]],"c":true}],"e":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[1.669,2.762],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-60.111],[-163.411,-102.327]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[1.669,2.762],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-10.715,-17.727],[-19.834,-15.122]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-60.111],[-163.411,-102.327]],"c":true}],"e":[{"i":[[11.834,1.217],[-3.085,-9.473],[-16.655,-11.969],[0,0],[0,0],[-4.78,2.011],[1.363,2.925],[13.534,12.835]],"o":[[-14.501,-1.492],[3.312,10.172],[13.446,9.663],[0,0],[0,0],[5.998,-2.523],[-8.751,-18.774],[-18.097,-17.162]],"v":[[-199.472,-123.816],[-218.869,-100.077],[-190.901,-72.826],[-161.938,-45.927],[-146.618,-45.655],[-137.352,-49.061],[-126.258,-58.002],[-157.886,-103.876]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[11.834,1.217],[-3.085,-9.473],[-16.655,-11.969],[0,0],[0,0],[-4.78,2.011],[1.363,2.925],[13.534,12.835]],"o":[[-14.501,-1.492],[3.312,10.172],[13.446,9.663],[0,0],[0,0],[5.998,-2.523],[-8.751,-18.774],[-18.097,-17.162]],"v":[[-199.472,-123.816],[-218.869,-100.077],[-190.901,-72.826],[-161.938,-45.927],[-146.618,-45.655],[-137.352,-49.061],[-126.258,-58.002],[-157.886,-103.876]],"c":true}],"e":[{"i":[[13.303,3.137],[-2.607,-9.739],[-15.234,-13.732],[0,0],[0,0],[-5.691,0.776],[0.465,3.193],[12.089,14.204]],"o":[[-14.188,-3.346],[2.766,10.334],[16.016,14.437],[0,0],[0,0],[7.142,-0.973],[-3.421,-23.49],[-18.033,-21.188]],"v":[[-184.303,-141.137],[-204.893,-122.761],[-182.016,-88.437],[-155.096,-57.029],[-143.823,-52.764],[-132.954,-53.787],[-118.329,-59.76],[-143.967,-113.062]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[13.303,3.137],[-2.607,-9.739],[-15.234,-13.732],[0,0],[0,0],[-5.691,0.776],[0.465,3.193],[12.089,14.204]],"o":[[-14.188,-3.346],[2.766,10.334],[16.016,14.437],[0,0],[0,0],[7.142,-0.973],[-3.421,-23.49],[-18.033,-21.188]],"v":[[-184.303,-141.137],[-204.893,-122.761],[-182.016,-88.437],[-155.096,-57.029],[-143.823,-52.764],[-132.954,-53.787],[-118.329,-59.76],[-143.967,-113.062]],"c":true}],"e":[{"i":[[7.295,5.598],[-0.504,-10.069],[-10.127,-19.658],[0,0],[0,0],[-6.939,2.691],[0.512,3.186],[8.503,17.431]],"o":[[-11.231,-8.619],[0.535,10.684],[9.874,19.168],[0,0],[0,0],[8.708,-3.377],[-2.623,-16.317],[-13.458,-27.589]],"v":[[-145.295,-147.098],[-170.784,-135.955],[-159.623,-97.092],[-139.898,-60.733],[-131.272,-44.947],[-118.026,-49.607],[-100.127,-60.683],[-117.003,-110.181]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[7.295,5.598],[-0.504,-10.069],[-10.127,-19.658],[0,0],[0,0],[-6.939,2.691],[0.512,3.186],[8.503,17.431]],"o":[[-11.231,-8.619],[0.535,10.684],[9.874,19.168],[0,0],[0,0],[8.708,-3.377],[-2.623,-16.317],[-13.458,-27.589]],"v":[[-145.295,-147.098],[-170.784,-135.955],[-159.623,-97.092],[-139.898,-60.733],[-131.272,-44.947],[-118.026,-49.607],[-100.127,-60.683],[-117.003,-110.181]],"c":true}],"e":[{"i":[[3.696,6.947],[5.785,-9.718],[0.824,-13.594],[0,0],[0,0],[-16.426,-1.376],[-0.363,3.047],[-0.575,19.385]],"o":[[-6.97,-13.099],[-5.472,9.192],[-1.305,21.523],[0,0],[0,0],[17.091,1.432],[1.353,-11.357],[0.724,-24.408]],"v":[[-90.53,-139.401],[-120.535,-141.032],[-125.824,-106.906],[-125.11,-71.546],[-124.995,-53.561],[-109.091,-35.432],[-89.603,-51.143],[-84.974,-100.842]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[3.696,6.947],[5.785,-9.718],[0.824,-13.594],[0,0],[0,0],[-16.426,-1.376],[-0.363,3.047],[-0.575,19.385]],"o":[[-6.97,-13.099],[-5.472,9.192],[-1.305,21.523],[0,0],[0,0],[17.091,1.432],[1.353,-11.357],[0.724,-24.408]],"v":[[-90.53,-139.401],[-120.535,-141.032],[-125.824,-106.906],[-125.11,-71.546],[-124.995,-53.561],[-109.091,-35.432],[-89.603,-51.143],[-84.974,-100.842]],"c":true}],"e":[{"i":[[-1.065,7.796],[10.568,-4.027],[9.086,-10.146],[0,0],[0,0],[-10.589,-8.238],[-6.791,6.529],[-12.273,14.117]],"o":[[2.145,-15.705],[-9.996,3.809],[-14.385,16.063],[0,0],[0,0],[12.959,10.083],[10.021,-9.633],[16.021,-18.428]],"v":[[-14.895,-100.795],[-36.404,-119.451],[-62.737,-97.231],[-90.879,-64.067],[-107.704,-41.896],[-102.459,-20.583],[-74.209,-28.529],[-38.477,-67.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-1.065,7.796],[10.568,-4.027],[9.086,-10.146],[0,0],[0,0],[-10.589,-8.238],[-6.791,6.529],[-12.273,14.117]],"o":[[2.145,-15.705],[-9.996,3.809],[-14.385,16.063],[0,0],[0,0],[12.959,10.083],[10.021,-9.633],[16.021,-18.428]],"v":[[-14.895,-100.795],[-36.404,-119.451],[-62.737,-97.231],[-90.879,-64.067],[-107.704,-41.896],[-102.459,-20.583],[-74.209,-28.529],[-38.477,-67.367]],"c":true}],"e":[{"i":[[-5.945,2.473],[6.347,5.67],[14.926,1.617],[0,0],[0,0],[1.738,-12.668],[-12.248,-1.462],[-21.317,-1.666]],"o":[[11.619,-4.834],[-6.35,-5.672],[-23.686,-2.566],[0,0],[0,0],[-2.432,17.726],[13.803,1.648],[24.345,1.902]],"v":[[44.195,-22.723],[49.153,-46.67],[13.686,-53.934],[-22.45,-58.265],[-51.956,-61.828],[-74.068,-51.726],[-49.252,-31.038],[9.817,-22.834]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-5.945,2.473],[6.347,5.67],[14.926,1.617],[0,0],[0,0],[1.738,-12.668],[-12.248,-1.462],[-21.317,-1.666]],"o":[[11.619,-4.834],[-6.35,-5.672],[-23.686,-2.566],[0,0],[0,0],[-2.432,17.726],[13.803,1.648],[24.345,1.902]],"v":[[44.195,-22.723],[49.153,-46.67],[13.686,-53.934],[-22.45,-58.265],[-51.956,-61.828],[-74.068,-51.726],[-49.252,-31.038],[9.817,-22.834]],"c":true}],"e":[{"i":[[-6.404,0.663],[3.41,8.918],[14.634,7.101],[0,0],[0,0],[3.857,-11.962],[-14.973,-7.981],[-17.059,-7.494]],"o":[[11.35,-1.175],[-3.556,-9.3],[-17.369,-8.428],[0,0],[0,0],[-2.819,8.745],[10.777,6.519],[22.357,9.821]],"v":[[51.4,41.425],[62.556,19.8],[28.116,-2.601],[-3.808,-17.679],[-44.292,-37.932],[-60.857,-30.538],[-47.527,-3.019],[17.809,27.744]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-6.404,0.663],[3.41,8.918],[14.634,7.101],[0,0],[0,0],[3.857,-11.962],[-14.973,-7.981],[-17.059,-7.494]],"o":[[11.35,-1.175],[-3.556,-9.3],[-17.369,-8.428],[0,0],[0,0],[-2.819,8.745],[10.777,6.519],[22.357,9.821]],"v":[[51.4,41.425],[62.556,19.8],[28.116,-2.601],[-3.808,-17.679],[-44.292,-37.932],[-60.857,-30.538],[-47.527,-3.019],[17.809,27.744]],"c":true}],"e":[{"i":[[-5.348,3.585],[2.138,3.149],[12.957,9.834],[0,0],[7.301,4.549],[0.416,-7.712],[-8.98,-10.24],[-15.257,-10.695]],"o":[[3.937,-2.639],[-4.495,-6.622],[-15.378,-11.672],[0,0],[-3.238,-2.017],[-0.522,9.677],[9.288,8.507],[19.995,14.017]],"v":[[47.313,70.389],[61.745,49.372],[29.619,24.15],[-8.226,-4.149],[-50.199,-35.451],[-56.393,-24.832],[-45.113,9.149],[3.809,45.383]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-5.348,3.585],[2.138,3.149],[12.957,9.834],[0,0],[7.301,4.549],[0.416,-7.712],[-8.98,-10.24],[-15.257,-10.695]],"o":[[3.937,-2.639],[-4.495,-6.622],[-15.378,-11.672],[0,0],[-3.238,-2.017],[-0.522,9.677],[9.288,8.507],[19.995,14.017]],"v":[[47.313,70.389],[61.745,49.372],[29.619,24.15],[-8.226,-4.149],[-50.199,-35.451],[-56.393,-24.832],[-45.113,9.149],[3.809,45.383]],"c":true}],"e":[{"i":[[-0.786,0.034],[1.075,1.199],[11.892,11.098],[0,0],[6.678,5.422],[1.679,-8.525],[-6.543,-6.396],[-13.766,-12.556]],"o":[[1.214,-0.032],[-4.739,-5.285],[-12.96,-12.094],[0,0],[-6.789,-2.746],[-2.107,10.698],[6.742,7.507],[15.919,14.519]],"v":[[39.786,87.716],[76.175,72.051],[35.96,34.594],[0.654,0.107],[-33.942,-35.059],[-46.729,-23.284],[-40.242,8.493],[2.831,52.231]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.786,0.034],[1.075,1.199],[11.892,11.098],[0,0],[6.678,5.422],[1.679,-8.525],[-6.543,-6.396],[-13.766,-12.556]],"o":[[1.214,-0.032],[-4.739,-5.285],[-12.96,-12.094],[0,0],[-6.789,-2.746],[-2.107,10.698],[6.742,7.507],[15.919,14.519]],"v":[[39.786,87.716],[76.175,72.051],[35.96,34.594],[0.654,0.107],[-33.942,-35.059],[-46.729,-23.284],[-40.242,8.493],[2.831,52.231]],"c":true}],"e":[{"i":[[-0.786,-0.038],[0.815,1.389],[10.909,12.065],[0,0],[5.501,6.719],[7.616,-4.395],[-12.767,-17.539],[-15.906,-17.598]],"o":[[1.213,0.059],[-1.918,-3.268],[-14.93,-16.513],[0,0],[-4.636,-5.614],[-9.557,5.516],[6.162,7.99],[15.073,16.677]],"v":[[49.512,100.112],[94.059,95.708],[51.184,46.779],[12.579,2.509],[-14.265,-29.578],[-36.448,-30.88],[-39.152,4.742],[9.477,58.792]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.786,-0.038],[0.815,1.389],[10.909,12.065],[0,0],[5.501,6.719],[7.616,-4.395],[-12.767,-17.539],[-15.906,-17.598]],"o":[[1.213,0.059],[-1.918,-3.268],[-14.93,-16.513],[0,0],[-4.636,-5.614],[-9.557,5.516],[6.162,7.99],[15.073,16.677]],"v":[[49.512,100.112],[94.059,95.708],[51.184,46.779],[12.579,2.509],[-14.265,-29.578],[-36.448,-30.88],[-39.152,4.742],[9.477,58.792]],"c":true}],"e":[{"i":[[-0.779,-0.11],[1.031,1.237],[11.037,11.948],[0,0],[3.367,6.192],[11.756,0.26],[-11.118,-18.628],[-13.299,-16.345]],"o":[[1.202,0.169],[-9.112,-10.929],[-14.366,-15.552],[0,0],[-2.942,-3.906],[-14.752,-0.327],[5.41,8.517],[14.261,17.528]],"v":[[52.1,99.762],[114.612,99.679],[70.866,49.302],[30.448,1.954],[5.883,-25.942],[-21.761,-34.053],[-38.272,-10.278],[18.239,59.222]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"torso","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[14.25,-1.5],[-5,-12.75],[0,0],[0,0],[0,0],[-3.185,-1.414],[-0.417,3.2],[4.25,21.5]],"o":[[-14.25,1.5],[5,12.75],[0,0],[0,0],[0,0],[3.997,1.774],[0.75,-5.75],[-4.25,-21.5]],"v":[[-133.25,-50.25],[-142.25,-16],[-134.5,7],[-126.25,8.5],[-111.5,9.5],[-105.512,12.635],[-96.5,12.5],[-101.5,-23]],"c":true}],"e":[{"i":[[11.5,-1.25],[-9.75,-13.75],[-3.75,-8.25],[0,0],[0,0],[-3.732,-0.976],[-0.417,3.2],[11.886,20.672]],"o":[[-14.245,1.548],[7.922,11.172],[3.997,8.794],[0,0],[0,0],[4.683,1.225],[0.75,-5.75],[-11.5,-20]],"v":[[-147.5,-93.25],[-153,-59],[-136.75,-27.5],[-134,-16],[-116.75,-16],[-109.723,-13.696],[-99.25,-15],[-110.5,-65]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[11.5,-1.25],[-9.75,-13.75],[-3.75,-8.25],[0,0],[0,0],[-3.732,-0.976],[-0.417,3.2],[11.886,20.672]],"o":[[-14.245,1.548],[7.922,11.172],[3.997,8.794],[0,0],[0,0],[4.683,1.225],[0.75,-5.75],[-11.5,-20]],"v":[[-147.5,-93.25],[-153,-59],[-136.75,-27.5],[-134,-16],[-116.75,-16],[-109.723,-13.696],[-99.25,-15],[-110.5,-65]],"c":true}],"e":[{"i":[[11.473,-1.48],[-9,-15.5],[-6.153,-20.218],[-0.699,-4.192],[0,0],[-8.001,1.494],[-0.555,3.179],[11,14.75]],"o":[[-15.5,2],[7.837,13.496],[3.5,11.5],[1.5,9],[0,0],[6.393,-1.194],[2.75,-15.75],[-17.044,-22.854]],"v":[[-164,-119],[-176,-86.5],[-143.5,-49],[-140.25,-30.25],[-130.5,-23.25],[-117.249,-21.744],[-106.75,-38.25],[-124,-94.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[11.473,-1.48],[-9,-15.5],[-6.153,-20.218],[-0.699,-4.192],[0,0],[-8.001,1.494],[-0.555,3.179],[11,14.75]],"o":[[-15.5,2],[7.837,13.496],[3.5,11.5],[1.5,9],[0,0],[6.393,-1.194],[2.75,-15.75],[-17.044,-22.854]],"v":[[-164,-119],[-176,-86.5],[-143.5,-49],[-140.25,-30.25],[-130.5,-23.25],[-117.249,-21.744],[-106.75,-38.25],[-124,-94.5]],"c":true}],"e":[{"i":[[12,-0.5],[-7,-15.75],[-16.75,-23.25],[0,0],[0,0],[-4.845,0.332],[0.124,3.225],[12.283,13.7]],"o":[[-14.565,0.607],[6.338,14.261],[6.608,9.173],[0,0],[0,0],[6.08,-0.416],[-0.75,-19.5],[-19.5,-21.75]],"v":[[-172.25,-128.75],[-186.25,-95.25],[-154.25,-64.5],[-140.75,-41.5],[-129.75,-40.5],[-120.534,-40.675],[-107.75,-45.5],[-133.25,-101.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[12,-0.5],[-7,-15.75],[-16.75,-23.25],[0,0],[0,0],[-4.845,0.332],[0.124,3.225],[12.283,13.7]],"o":[[-14.565,0.607],[6.338,14.261],[6.608,9.173],[0,0],[0,0],[6.08,-0.416],[-0.75,-19.5],[-19.5,-21.75]],"v":[[-172.25,-128.75],[-186.25,-95.25],[-154.25,-64.5],[-140.75,-41.5],[-129.75,-40.5],[-120.534,-40.675],[-107.75,-45.5],[-133.25,-101.25]],"c":true}],"e":[{"i":[[11.25,0.75],[-5.25,-12.25],[-14.25,-14.75],[0,0],[0,0],[-4.237,0.464],[0.792,3.128],[12.283,13.7]],"o":[[-14.545,-0.97],[6.148,14.345],[7.855,8.131],[0,0],[0,0],[5.317,-0.582],[-5,-19.75],[-19.5,-21.75]],"v":[[-182.5,-124.5],[-200.25,-100],[-171.25,-71.75],[-149.25,-42.5],[-134,-44],[-125.844,-44.44],[-115.5,-49.5],[-144,-101]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[11.25,0.75],[-5.25,-12.25],[-14.25,-14.75],[0,0],[0,0],[-4.237,0.464],[0.792,3.128],[12.283,13.7]],"o":[[-14.545,-0.97],[6.148,14.345],[7.855,8.131],[0,0],[0,0],[5.317,-0.582],[-5,-19.75],[-19.5,-21.75]],"v":[[-182.5,-124.5],[-200.25,-100],[-171.25,-71.75],[-149.25,-42.5],[-134,-44],[-125.844,-44.44],[-115.5,-49.5],[-144,-101]],"c":true}],"e":[{"i":[[11.25,0.75],[-3,-9.5],[-16.501,-12.179],[0,0],[0,0],[-5.339,1.543],[1.285,2.96],[13.464,12.542]],"o":[[-14.545,-0.97],[3.62,11.463],[10.5,7.75],[0,0],[0,0],[6.7,-1.937],[-8.25,-19],[-18.25,-17]],"v":[[-196,-127],[-215.75,-104],[-190.25,-76.25],[-161.25,-46.75],[-147.5,-45.75],[-137.183,-48.263],[-126,-55],[-157.75,-103.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[11.25,0.75],[-3,-9.5],[-16.501,-12.179],[0,0],[0,0],[-5.339,1.543],[1.285,2.96],[13.464,12.542]],"o":[[-14.545,-0.97],[3.62,11.463],[10.5,7.75],[0,0],[0,0],[6.7,-1.937],[-8.25,-19],[-18.25,-17]],"v":[[-196,-127],[-215.75,-104],[-190.25,-76.25],[-161.25,-46.75],[-147.5,-45.75],[-137.183,-48.263],[-126,-55],[-157.75,-103.25]],"c":true}],"e":[{"i":[[11.274,-0.174],[-3.768,-9.222],[-17.443,-10.787],[0,0],[0,0],[-5.195,1.976],[3.407,10.977],[14.446,11.396]],"o":[[-14.576,0.225],[4.547,11.128],[11.1,6.864],[0,0],[0,0],[6.519,-2.479],[-6.14,-19.783],[-19.581,-15.448]],"v":[[-201.482,-122.631],[-219.282,-98.091],[-191.595,-72.523],[-160.276,-45.498],[-146.49,-45.627],[-136.413,-48.977],[-126.407,-55.477],[-162.629,-102.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[11.274,-0.174],[-3.768,-9.222],[-17.443,-10.787],[0,0],[0,0],[-5.195,1.976],[3.407,10.977],[14.446,11.396]],"o":[[-14.576,0.225],[4.547,11.128],[11.1,6.864],[0,0],[0,0],[6.519,-2.479],[-6.14,-19.783],[-19.581,-15.448]],"v":[[-201.482,-122.631],[-219.282,-98.091],[-191.595,-72.523],[-160.276,-45.498],[-146.49,-45.627],[-136.413,-48.977],[-126.407,-55.477],[-162.629,-102.791]],"c":true}],"e":[{"i":[[11.263,-0.515],[-4.045,-9.104],[-17.762,-10.254],[0,0],[0,0],[-4.914,2.186],[3.204,8.637],[14.57,11.646]],"o":[[-14.562,0.666],[4.881,10.985],[11.302,6.525],[0,0],[0,0],[6.166,-2.744],[-7.204,-19.421],[-18.917,-15.121]],"v":[[-203.457,-121.431],[-220.506,-95.864],[-192.058,-71.145],[-161.186,-45.079],[-146.161,-45.625],[-136.606,-49.382],[-126.204,-55.387],[-163.083,-102.379]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[11.263,-0.515],[-4.045,-9.104],[-17.762,-10.254],[0,0],[0,0],[-4.914,2.186],[3.204,8.637],[14.57,11.646]],"o":[[-14.562,0.666],[4.881,10.985],[11.302,6.525],[0,0],[0,0],[6.166,-2.744],[-7.204,-19.421],[-18.917,-15.121]],"v":[[-203.457,-121.431],[-220.506,-95.864],[-192.058,-71.145],[-161.186,-45.079],[-146.161,-45.625],[-136.606,-49.382],[-126.204,-55.387],[-163.083,-102.379]],"c":true}],"e":[{"i":[[11.249,-0.76],[-4.243,-9.014],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[1.794,5.361],[10.161,7.077]],"o":[[-14.544,0.983],[5.119,10.876],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-6.573,-19.643],[-22.045,-15.354]],"v":[[-204.896,-120.191],[-222.385,-95.258],[-192.405,-70.164],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.544,-56.861],[-164.161,-102.077]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[11.249,-0.76],[-4.243,-9.014],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[1.794,5.361],[10.161,7.077]],"o":[[-14.544,0.983],[5.119,10.876],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-6.573,-19.643],[-22.045,-15.354]],"v":[[-204.896,-120.191],[-222.385,-95.258],[-192.405,-70.164],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.544,-56.861],[-164.161,-102.077]],"c":true}],"e":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[2.911,6.788],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-8.206,-19.139],[-19.834,-15.122]],"v":[[-206.146,-119.191],[-223.135,-93.008],[-192.405,-68.914],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.794,-58.361],[-164.161,-101.327]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.701,2.402],[2.911,6.788],[14.833,11.309]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.899,-3.015],[-8.206,-19.139],[-19.834,-15.122]],"v":[[-206.146,-119.191],[-223.135,-93.008],[-192.405,-68.914],[-161.222,-44.277],[-145.962,-45.651],[-136.803,-49.823],[-126.794,-58.361],[-164.161,-101.327]],"c":true}],"e":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[2.544,6.361],[15.775,9.952]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-7.691,-19.233],[-20.089,-12.673]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-58.361],[-165.411,-101.327]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[2.544,6.361],[15.775,9.952]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-7.691,-19.233],[-20.089,-12.673]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-58.361],[-165.411,-101.327]],"c":true}],"e":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[2.544,6.361],[15.987,9.609]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-7.691,-19.233],[-18.589,-11.173]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-58.361],[-166.411,-101.327]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[11.896,-0.059],[-4.083,-9.087],[-17.843,-10.113],[0,0],[0,0],[-4.536,2.512],[2.544,6.361],[15.987,9.609]],"o":[[-14.577,0.073],[4.385,9.758],[14.405,8.164],[0,0],[0,0],[5.693,-3.152],[-7.691,-19.233],[-18.589,-11.173]],"v":[[-206.896,-117.691],[-223.635,-92.008],[-192.905,-67.914],[-161.222,-44.277],[-145.962,-45.651],[-137.115,-50.031],[-127.044,-58.361],[-166.411,-101.327]],"c":true}],"e":[{"i":[[11.834,1.217],[-3.085,-9.473],[-16.655,-11.969],[0,0],[0,0],[-4.78,2.011],[1.363,2.925],[13.534,12.835]],"o":[[-14.501,-1.492],[3.312,10.172],[13.446,9.663],[0,0],[0,0],[5.998,-2.523],[-8.751,-18.774],[-18.097,-17.162]],"v":[[-199.472,-123.816],[-218.869,-100.077],[-190.901,-72.826],[-161.938,-45.927],[-146.618,-45.655],[-137.352,-49.061],[-126.258,-58.002],[-157.886,-103.876]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[11.834,1.217],[-3.085,-9.473],[-16.655,-11.969],[0,0],[0,0],[-4.78,2.011],[1.363,2.925],[13.534,12.835]],"o":[[-14.501,-1.492],[3.312,10.172],[13.446,9.663],[0,0],[0,0],[5.998,-2.523],[-8.751,-18.774],[-18.097,-17.162]],"v":[[-199.472,-123.816],[-218.869,-100.077],[-190.901,-72.826],[-161.938,-45.927],[-146.618,-45.655],[-137.352,-49.061],[-126.258,-58.002],[-157.886,-103.876]],"c":true}],"e":[{"i":[[13.303,3.137],[-2.607,-9.739],[-15.234,-13.732],[0,0],[0,0],[-5.691,0.776],[0.465,3.193],[12.089,14.204]],"o":[[-14.188,-3.346],[2.766,10.334],[16.016,14.437],[0,0],[0,0],[7.142,-0.973],[-3.421,-23.49],[-18.033,-21.188]],"v":[[-184.303,-141.137],[-204.893,-122.761],[-182.016,-88.437],[-155.096,-57.029],[-143.823,-52.764],[-132.954,-53.787],[-118.329,-59.76],[-143.967,-113.062]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[13.303,3.137],[-2.607,-9.739],[-15.234,-13.732],[0,0],[0,0],[-5.691,0.776],[0.465,3.193],[12.089,14.204]],"o":[[-14.188,-3.346],[2.766,10.334],[16.016,14.437],[0,0],[0,0],[7.142,-0.973],[-3.421,-23.49],[-18.033,-21.188]],"v":[[-184.303,-141.137],[-204.893,-122.761],[-182.016,-88.437],[-155.096,-57.029],[-143.823,-52.764],[-132.954,-53.787],[-118.329,-59.76],[-143.967,-113.062]],"c":true}],"e":[{"i":[[7.295,5.598],[-0.504,-10.069],[-10.127,-19.658],[0,0],[0,0],[-6.939,2.691],[0.512,3.186],[8.503,17.431]],"o":[[-11.231,-8.619],[0.535,10.684],[9.874,19.168],[0,0],[0,0],[8.708,-3.377],[-2.623,-16.317],[-13.458,-27.589]],"v":[[-145.295,-147.098],[-170.784,-135.955],[-159.623,-97.092],[-139.898,-60.733],[-131.272,-44.947],[-118.026,-49.607],[-100.127,-60.683],[-117.003,-110.181]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[7.295,5.598],[-0.504,-10.069],[-10.127,-19.658],[0,0],[0,0],[-6.939,2.691],[0.512,3.186],[8.503,17.431]],"o":[[-11.231,-8.619],[0.535,10.684],[9.874,19.168],[0,0],[0,0],[8.708,-3.377],[-2.623,-16.317],[-13.458,-27.589]],"v":[[-145.295,-147.098],[-170.784,-135.955],[-159.623,-97.092],[-139.898,-60.733],[-131.272,-44.947],[-118.026,-49.607],[-100.127,-60.683],[-117.003,-110.181]],"c":true}],"e":[{"i":[[3.696,6.947],[5.785,-9.718],[0.824,-13.594],[0,0],[0,0],[-16.426,-1.376],[-0.363,3.047],[-0.575,19.385]],"o":[[-6.97,-13.099],[-5.472,9.192],[-1.305,21.523],[0,0],[0,0],[17.091,1.432],[1.353,-11.357],[0.724,-24.408]],"v":[[-90.53,-139.401],[-120.535,-141.032],[-125.824,-106.906],[-125.11,-71.546],[-124.995,-53.561],[-109.091,-35.432],[-89.603,-51.143],[-84.974,-100.842]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[3.696,6.947],[5.785,-9.718],[0.824,-13.594],[0,0],[0,0],[-16.426,-1.376],[-0.363,3.047],[-0.575,19.385]],"o":[[-6.97,-13.099],[-5.472,9.192],[-1.305,21.523],[0,0],[0,0],[17.091,1.432],[1.353,-11.357],[0.724,-24.408]],"v":[[-90.53,-139.401],[-120.535,-141.032],[-125.824,-106.906],[-125.11,-71.546],[-124.995,-53.561],[-109.091,-35.432],[-89.603,-51.143],[-84.974,-100.842]],"c":true}],"e":[{"i":[[-1.065,7.796],[10.568,-4.027],[9.086,-10.146],[0,0],[0,0],[-10.589,-8.238],[-6.791,6.529],[-12.273,14.117]],"o":[[2.145,-15.705],[-9.996,3.809],[-14.385,16.063],[0,0],[0,0],[12.959,10.083],[10.021,-9.633],[16.021,-18.428]],"v":[[-14.895,-100.795],[-36.404,-119.451],[-62.737,-97.231],[-90.879,-64.067],[-107.704,-41.896],[-102.459,-20.583],[-74.209,-28.529],[-38.477,-67.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-1.065,7.796],[10.568,-4.027],[9.086,-10.146],[0,0],[0,0],[-10.589,-8.238],[-6.791,6.529],[-12.273,14.117]],"o":[[2.145,-15.705],[-9.996,3.809],[-14.385,16.063],[0,0],[0,0],[12.959,10.083],[10.021,-9.633],[16.021,-18.428]],"v":[[-14.895,-100.795],[-36.404,-119.451],[-62.737,-97.231],[-90.879,-64.067],[-107.704,-41.896],[-102.459,-20.583],[-74.209,-28.529],[-38.477,-67.367]],"c":true}],"e":[{"i":[[-5.945,2.473],[6.347,5.67],[14.926,1.617],[0,0],[0,0],[1.738,-12.668],[-12.248,-1.462],[-21.317,-1.666]],"o":[[11.619,-4.834],[-6.35,-5.672],[-23.686,-2.566],[0,0],[0,0],[-2.432,17.726],[13.803,1.648],[24.345,1.902]],"v":[[44.195,-22.723],[49.153,-46.67],[13.686,-53.934],[-22.45,-58.265],[-51.956,-61.828],[-74.068,-51.726],[-49.252,-31.038],[9.817,-22.834]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-5.945,2.473],[6.347,5.67],[14.926,1.617],[0,0],[0,0],[1.738,-12.668],[-12.248,-1.462],[-21.317,-1.666]],"o":[[11.619,-4.834],[-6.35,-5.672],[-23.686,-2.566],[0,0],[0,0],[-2.432,17.726],[13.803,1.648],[24.345,1.902]],"v":[[44.195,-22.723],[49.153,-46.67],[13.686,-53.934],[-22.45,-58.265],[-51.956,-61.828],[-74.068,-51.726],[-49.252,-31.038],[9.817,-22.834]],"c":true}],"e":[{"i":[[-6.404,0.663],[3.41,8.918],[14.634,7.101],[0,0],[0,0],[3.857,-11.962],[-14.973,-7.981],[-17.059,-7.494]],"o":[[11.35,-1.175],[-3.556,-9.3],[-17.369,-8.428],[0,0],[0,0],[-2.819,8.745],[10.777,6.519],[22.357,9.821]],"v":[[51.4,41.425],[62.556,19.8],[28.116,-2.601],[-3.808,-17.679],[-44.292,-37.932],[-60.857,-30.538],[-47.527,-3.019],[17.809,27.744]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-6.404,0.663],[3.41,8.918],[14.634,7.101],[0,0],[0,0],[3.857,-11.962],[-14.973,-7.981],[-17.059,-7.494]],"o":[[11.35,-1.175],[-3.556,-9.3],[-17.369,-8.428],[0,0],[0,0],[-2.819,8.745],[10.777,6.519],[22.357,9.821]],"v":[[51.4,41.425],[62.556,19.8],[28.116,-2.601],[-3.808,-17.679],[-44.292,-37.932],[-60.857,-30.538],[-47.527,-3.019],[17.809,27.744]],"c":true}],"e":[{"i":[[-5.348,3.585],[2.138,3.149],[12.957,9.834],[0,0],[7.301,4.549],[0.416,-7.712],[-8.98,-10.24],[-15.257,-10.695]],"o":[[3.937,-2.639],[-4.495,-6.622],[-15.378,-11.672],[0,0],[-3.238,-2.017],[-0.522,9.677],[9.288,8.507],[19.995,14.017]],"v":[[47.313,70.389],[61.745,49.372],[29.619,24.15],[-8.226,-4.149],[-50.199,-35.451],[-56.393,-24.832],[-45.113,9.149],[3.809,45.383]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-5.348,3.585],[2.138,3.149],[12.957,9.834],[0,0],[7.301,4.549],[0.416,-7.712],[-8.98,-10.24],[-15.257,-10.695]],"o":[[3.937,-2.639],[-4.495,-6.622],[-15.378,-11.672],[0,0],[-3.238,-2.017],[-0.522,9.677],[9.288,8.507],[19.995,14.017]],"v":[[47.313,70.389],[61.745,49.372],[29.619,24.15],[-8.226,-4.149],[-50.199,-35.451],[-56.393,-24.832],[-45.113,9.149],[3.809,45.383]],"c":true}],"e":[{"i":[[-0.786,0.034],[1.075,1.199],[11.035,11.95],[0,0],[6.678,5.422],[1.679,-8.525],[-6.543,-6.396],[-13.766,-12.556]],"o":[[1.214,-0.032],[-4.739,-5.285],[-13.097,-14.184],[0,0],[-6.789,-2.746],[-2.107,10.698],[6.742,7.507],[15.919,14.519]],"v":[[37.286,80.216],[72.175,75.051],[32.96,34.594],[0.654,0.107],[-33.942,-35.059],[-46.729,-23.284],[-40.242,8.493],[2.831,52.231]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.786,0.034],[1.075,1.199],[11.035,11.95],[0,0],[6.678,5.422],[1.679,-8.525],[-6.543,-6.396],[-13.766,-12.556]],"o":[[1.214,-0.032],[-4.739,-5.285],[-13.097,-14.184],[0,0],[-6.789,-2.746],[-2.107,10.698],[6.742,7.507],[15.919,14.519]],"v":[[37.286,80.216],[72.175,75.051],[32.96,34.594],[0.654,0.107],[-33.942,-35.059],[-46.729,-23.284],[-40.242,8.493],[2.831,52.231]],"c":true}],"e":[{"i":[[-0.779,-0.11],[0.685,1.457],[9.766,13.008],[0,0],[4.867,7.192],[7.984,-3.684],[-11.118,-18.628],[-14.239,-18.972]],"o":[[1.202,0.169],[-1.612,-3.429],[-13.366,-17.802],[0,0],[-4.106,-6.013],[-10.019,4.623],[5.41,8.517],[13.494,17.979]],"v":[[38.475,94.762],[83.237,94.429],[44.991,41.802],[10.573,-5.796],[-13.242,-40.192],[-35.214,-43.506],[-41.147,-8.278],[2.364,49.972]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.779,-0.11],[0.685,1.457],[9.766,13.008],[0,0],[4.867,7.192],[7.984,-3.684],[-11.118,-18.628],[-14.239,-18.972]],"o":[[1.202,0.169],[-1.612,-3.429],[-13.366,-17.802],[0,0],[-4.106,-6.013],[-10.019,4.623],[5.41,8.517],[13.494,17.979]],"v":[[38.475,94.762],[83.237,94.429],[44.991,41.802],[10.573,-5.796],[-13.242,-40.192],[-35.214,-43.506],[-41.147,-8.278],[2.364,49.972]],"c":true}],"e":[{"i":[[-0.779,-0.11],[1.031,1.237],[11.037,11.948],[0,0],[3.367,6.192],[11.756,0.26],[-11.118,-18.628],[-13.299,-16.345]],"o":[[1.202,0.169],[-9.112,-10.929],[-14.366,-15.552],[0,0],[-2.942,-3.906],[-14.752,-0.327],[5.41,8.517],[14.261,17.528]],"v":[[52.1,99.762],[114.612,99.679],[70.866,49.302],[30.448,1.954],[5.883,-25.942],[-21.761,-34.053],[-38.272,-10.278],[18.239,59.222]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"back_leg","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[5.768,2.655],[1,-9.5],[0.578,-9.618],[0.015,-0.253],[0,0],[-5.25,21.5],[3.563,14.191]],"o":[[-2.75,-0.5],[-0.908,8.623],[-0.027,0.449],[-0.018,0.298],[0,0],[3.327,-13.626],[-2.059,-8.201]],"v":[[-100.25,7.25],[-114.25,15.25],[-118.909,85.987],[-118.973,87.045],[-119,87.5],[-89.75,71.75],[-88.767,24.585]],"c":true}],"e":[{"i":[[5.768,2.655],[1,-9.5],[-1.52,-42.597],[-3.395,-2.854],[0,0],[-2.69,21.968],[9.27,13.122]],"o":[[-2.75,-0.5],[-0.801,7.607],[0.384,10.767],[3.999,3.361],[0,0],[1.901,-15.527],[-5.357,-7.583]],"v":[[-98.5,-17],[-112.5,-9],[-102.23,39.597],[-95.209,58.768],[-87,61.75],[-67,46],[-81.203,-0.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[5.768,2.655],[1,-9.5],[-1.52,-42.597],[-3.395,-2.854],[0,0],[-2.69,21.968],[9.27,13.122]],"o":[[-2.75,-0.5],[-0.801,7.607],[0.384,10.767],[3.999,3.361],[0,0],[1.901,-15.527],[-5.357,-7.583]],"v":[[-98.5,-17],[-112.5,-9],[-102.23,39.597],[-95.209,58.768],[-87,61.75],[-67,46],[-81.203,-0.887]],"c":true}],"e":[{"i":[[7.16,0.557],[-2.147,-9.308],[-31.937,-21.714],[-4.243,-5.5],[-9.713,-2.675],[2.995,20.361],[24.628,12.692]],"o":[[-2.763,0.422],[1.719,7.453],[6.613,4.496],[4.998,6.478],[8.716,2.401],[-2.848,-19.357],[-14.233,-7.335]],"v":[[-112.299,-44.021],[-121.182,-30.399],[-83.152,11.208],[-68.193,27.061],[-48.29,42.197],[-22.757,21.044],[-77.582,-31.349]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[7.16,0.557],[-2.147,-9.308],[-31.937,-21.714],[-4.243,-5.5],[-9.713,-2.675],[2.995,20.361],[24.628,12.692]],"o":[[-2.763,0.422],[1.719,7.453],[6.613,4.496],[4.998,6.478],[8.716,2.401],[-2.848,-19.357],[-14.233,-7.335]],"v":[[-112.299,-44.021],[-121.182,-30.399],[-83.152,11.208],[-68.193,27.061],[-48.29,42.197],[-22.757,21.044],[-77.582,-31.349]],"c":true}],"e":[{"i":[[13.299,-6.729],[-2.147,-9.308],[-14.72,4.511],[-16.033,0.243],[-9.564,0.531],[6.016,16.253],[33.808,-0.853]],"o":[[-7.451,4.771],[1.719,7.453],[9.652,-2.958],[18.224,-0.276],[8.04,-0.447],[-4.523,-12.22],[-14.731,0.372]],"v":[[-119.549,-61.271],[-128.432,-44.899],[-103.152,-26.042],[-63.494,-33.607],[-16.79,-27.053],[-5.007,-49.706],[-71.007,-70.787]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[13.299,-6.729],[-2.147,-9.308],[-14.72,4.511],[-16.033,0.243],[-9.564,0.531],[6.016,16.253],[33.808,-0.853]],"o":[[-7.451,4.771],[1.719,7.453],[9.652,-2.958],[18.224,-0.276],[8.04,-0.447],[-4.523,-12.22],[-14.731,0.372]],"v":[[-119.549,-61.271],[-128.432,-44.899],[-103.152,-26.042],[-63.494,-33.607],[-16.79,-27.053],[-5.007,-49.706],[-71.007,-70.787]],"c":true}],"e":[{"i":[[7.049,-4.979],[-2.147,-9.308],[-12.275,9.292],[-20.1,11.342],[-8.226,8.006],[9.457,13.172],[27.166,-15.298]],"o":[[-8.451,7.021],[1.719,7.453],[10.286,-7.786],[20.634,-11.643],[5.771,-5.617],[-8.551,-11.911],[-15.7,8.841]],"v":[[-121.049,-61.021],[-128.432,-44.899],[-103.652,-16.042],[-67.634,-52.357],[-20.04,-68.553],[-16.257,-96.956],[-84.831,-87.64]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[7.049,-4.979],[-2.147,-9.308],[-12.275,9.292],[-20.1,11.342],[-8.226,8.006],[9.457,13.172],[27.166,-15.298]],"o":[[-8.451,7.021],[1.719,7.453],[10.286,-7.786],[20.634,-11.643],[5.771,-5.617],[-8.551,-11.911],[-15.7,8.841]],"v":[[-121.049,-61.021],[-128.432,-44.899],[-103.652,-16.042],[-67.634,-52.357],[-20.04,-68.553],[-16.257,-96.956],[-84.831,-87.64]],"c":true}],"e":[{"i":[[5.068,-8.5],[-6.282,-7.197],[-18.145,28.141],[-10.006,13.984],[-3.833,10.82],[12.911,4.561],[15.39,-24.371]],"o":[[-8.633,5.489],[5.03,5.762],[7.845,-12.167],[11.786,-16.472],[3.107,-8.771],[-16.265,-5.746],[-8.894,14.084]],"v":[[-135.088,-55.041],[-137.795,-40.517],[-103.836,-27.751],[-75.247,-68.33],[-48.857,-111.479],[-62.661,-134.561],[-113.497,-91.783]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[5.068,-8.5],[-6.282,-7.197],[-18.145,28.141],[-10.006,13.984],[-3.833,10.82],[12.911,4.561],[15.39,-24.371]],"o":[[-8.633,5.489],[5.03,5.762],[7.845,-12.167],[11.786,-16.472],[3.107,-8.771],[-16.265,-5.746],[-8.894,14.084]],"v":[[-135.088,-55.041],[-137.795,-40.517],[-103.836,-27.751],[-75.247,-68.33],[-48.857,-111.479],[-62.661,-134.561],[-113.497,-91.783]],"c":true}],"e":[{"i":[[3.304,-9.329],[-7.57,-5.826],[-15.031,39.852],[-6.123,15.004],[-1.177,11.419],[15.845,1.925],[8.114,-26.841]],"o":[[-7.39,7.075],[6.062,4.665],[5.845,-15.496],[7.213,-17.673],[1.633,-15.832],[-17.542,-2.132],[-4.689,15.512]],"v":[[-135.797,-55.611],[-139.688,-38.401],[-102.219,-31.852],[-83.205,-78.523],[-68.883,-123.668],[-87.32,-147.887],[-124.13,-95.776]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[3.304,-9.329],[-7.57,-5.826],[-15.031,39.852],[-6.123,15.004],[-1.177,11.419],[15.845,1.925],[8.114,-26.841]],"o":[[-7.39,7.075],[6.062,4.665],[5.845,-15.496],[7.213,-17.673],[1.633,-15.832],[-17.542,-2.132],[-4.689,15.512]],"v":[[-135.797,-55.611],[-139.688,-38.401],[-102.219,-31.852],[-83.205,-78.523],[-68.883,-123.668],[-87.32,-147.887],[-124.13,-95.776]],"c":true}],"e":[{"i":[[5.731,-17.179],[-8.046,-5.149],[-16.358,39.326],[-5.455,14.427],[1.037,22.837],[14.586,0.219],[4.892,-25.992]],"o":[[-6.75,7.687],[6.443,4.123],[3.852,-9.261],[6.426,-16.994],[-0.627,-13.814],[-17.669,-0.265],[-2.827,15.021]],"v":[[-135.647,-59.595],[-140.035,-39.113],[-103.14,-34.33],[-87.575,-70.082],[-76.873,-130.186],[-97.086,-153.969],[-124.124,-109.106]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[5.731,-17.179],[-8.046,-5.149],[-16.358,39.326],[-5.455,14.427],[1.037,22.837],[14.586,0.219],[4.892,-25.992]],"o":[[-6.75,7.687],[6.443,4.123],[3.852,-9.261],[6.426,-16.994],[-0.627,-13.814],[-17.669,-0.265],[-2.827,15.021]],"v":[[-135.647,-59.595],[-140.035,-39.113],[-103.14,-34.33],[-87.575,-70.082],[-76.873,-130.186],[-97.086,-153.969],[-124.124,-109.106]],"c":true}],"e":[{"i":[[6.097,-17.729],[-8.046,-5.149],[-16.358,39.326],[-4.482,13.721],[1.959,24.574],[14.586,0.219],[2.351,-26.079]],"o":[[-6.75,7.687],[6.443,4.123],[3.852,-9.261],[5.279,-16.162],[-1.317,-16.523],[-17.669,-0.265],[-1.359,15.072]],"v":[[-132.897,-59.345],[-139.035,-38.113],[-102.14,-33.33],[-88.296,-67.434],[-81.123,-127.936],[-102.836,-154.219],[-123.518,-109.67]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[6.097,-17.729],[-8.046,-5.149],[-16.358,39.326],[-4.482,13.721],[1.959,24.574],[14.586,0.219],[2.351,-26.079]],"o":[[-6.75,7.687],[6.443,4.123],[3.852,-9.261],[5.279,-16.162],[-1.317,-16.523],[-17.669,-0.265],[-1.359,15.072]],"v":[[-132.897,-59.345],[-139.035,-38.113],[-102.14,-33.33],[-88.296,-67.434],[-81.123,-127.936],[-102.836,-154.219],[-123.518,-109.67]],"c":true}],"e":[{"i":[[4.541,-18.369],[-8.046,-5.149],[-16.358,39.326],[-4.064,13.334],[0.472,26.873],[14.558,-0.932],[0.439,-25.973]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[4.787,-15.706],[-0.291,-16.573],[-21.968,1.406],[-0.254,15.01]],"v":[[-131.897,-57.345],[-138.035,-36.113],[-103.14,-32.33],[-90.347,-65.31],[-82.373,-127.686],[-104.086,-153.969],[-126.808,-108.302]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[4.541,-18.369],[-8.046,-5.149],[-16.358,39.326],[-4.064,13.334],[0.472,26.873],[14.558,-0.932],[0.439,-25.973]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[4.787,-15.706],[-0.291,-16.573],[-21.968,1.406],[-0.254,15.01]],"v":[[-131.897,-57.345],[-138.035,-36.113],[-103.14,-32.33],[-90.347,-65.31],[-82.373,-127.686],[-104.086,-153.969],[-126.808,-108.302]],"c":true}],"e":[{"i":[[3.259,-19.285],[-8.046,-5.149],[-16.358,39.326],[-3.437,13.334],[0.472,26.873],[14.586,-0.209],[0.334,-26.314]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[4.048,-15.706],[-0.291,-16.573],[-20.701,0.297],[-0.193,15.207]],"v":[[-131.897,-57.345],[-138.035,-36.113],[-103.14,-32.33],[-91.554,-65.31],[-85.123,-127.686],[-106.336,-154.219],[-128.527,-109.928]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[3.259,-19.285],[-8.046,-5.149],[-16.358,39.326],[-3.437,13.334],[0.472,26.873],[14.586,-0.209],[0.334,-26.314]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[4.048,-15.706],[-0.291,-16.573],[-20.701,0.297],[-0.193,15.207]],"v":[[-131.897,-57.345],[-138.035,-36.113],[-103.14,-32.33],[-91.554,-65.31],[-85.123,-127.686],[-106.336,-154.219],[-128.527,-109.928]],"c":true}],"e":[{"i":[[3.259,-19.285],[-8.046,-5.149],[-16.358,39.326],[-3.437,13.334],[0.472,26.873],[14.586,-0.209],[0.334,-26.314]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[4.048,-15.706],[-0.291,-16.573],[-20.701,0.297],[-0.193,15.207]],"v":[[-131.897,-57.345],[-138.035,-36.113],[-103.14,-32.33],[-91.554,-65.31],[-85.123,-127.686],[-106.336,-154.219],[-128.527,-109.928]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[3.259,-19.285],[-8.046,-5.149],[-16.358,39.326],[-3.437,13.334],[0.472,26.873],[14.586,-0.209],[0.334,-26.314]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[4.048,-15.706],[-0.291,-16.573],[-20.701,0.297],[-0.193,15.207]],"v":[[-131.897,-57.345],[-138.035,-36.113],[-103.14,-32.33],[-91.554,-65.31],[-85.123,-127.686],[-106.336,-154.219],[-128.527,-109.928]],"c":true}],"e":[{"i":[[8.02,-23.497],[-8.046,-5.149],[-16.358,39.326],[-5.536,13.831],[-0.745,26.467],[14.584,-0.312],[6.113,-24.46]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[6.521,-16.292],[0.466,-16.569],[-13.888,0.297],[-3.533,14.136]],"v":[[-132.647,-59.595],[-138.035,-36.113],[-102.89,-28.58],[-87.465,-62.584],[-74.373,-125.686],[-93.336,-151.719],[-116.616,-115.808]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[8.02,-23.497],[-8.046,-5.149],[-16.358,39.326],[-5.536,13.831],[-0.745,26.467],[14.584,-0.312],[6.113,-24.46]],"o":[[-6.75,7.688],[6.443,4.123],[3.852,-9.261],[6.521,-16.292],[0.466,-16.569],[-13.888,0.297],[-3.533,14.136]],"v":[[-132.647,-59.595],[-138.035,-36.113],[-102.89,-28.58],[-87.465,-62.584],[-74.373,-125.686],[-93.336,-151.719],[-116.616,-115.808]],"c":true}],"e":[{"i":[[14.215,-22.532],[-6.776,-6.733],[-28.24,31.884],[-9.791,12.36],[-8.311,25.426],[14.502,1.579],[11.686,-23.66]],"o":[[-8.222,6.087],[5.426,5.391],[6.557,-7.403],[11.533,-14.56],[5.15,-15.755],[-16.213,-1.765],[-6.753,13.673]],"v":[[-128.311,-66.98],[-138.539,-39.167],[-106.781,-29.376],[-80.984,-58.362],[-49.134,-117.262],[-65.167,-153.714],[-98.502,-121.221]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[14.215,-22.532],[-6.776,-6.733],[-28.24,31.884],[-9.791,12.36],[-8.311,25.426],[14.502,1.579],[11.686,-23.66]],"o":[[-8.222,6.087],[5.426,5.391],[6.557,-7.403],[11.533,-14.56],[5.15,-15.755],[-16.213,-1.765],[-6.753,13.673]],"v":[[-128.311,-66.98],[-138.539,-39.167],[-106.781,-29.376],[-80.984,-58.362],[-49.134,-117.262],[-65.167,-153.714],[-98.502,-121.221]],"c":true}],"e":[{"i":[[12.75,-13.101],[-5.368,-7.901],[-23.456,30.911],[-13.974,8.379],[-7.77,10.553],[14.396,2.358],[21.728,-16.233]],"o":[[-8.222,6.087],[5.039,7.417],[9.886,-13.028],[16.461,-9.87],[6.546,-8.891],[-13.678,-2.241],[-12.557,9.381]],"v":[[-105.811,-67.73],[-106.539,-23.917],[-82.031,-37.626],[-43.864,-68.557],[-3.634,-97.262],[-11.917,-125.214],[-67.394,-101.902]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[12.75,-13.101],[-5.368,-7.901],[-23.456,30.911],[-13.974,8.379],[-7.77,10.553],[14.396,2.358],[21.728,-16.233]],"o":[[-8.222,6.087],[5.039,7.417],[9.886,-13.028],[16.461,-9.87],[6.546,-8.891],[-13.678,-2.241],[-12.557,9.381]],"v":[[-105.811,-67.73],[-106.539,-23.917],[-82.031,-37.626],[-43.864,-68.557],[-3.634,-97.262],[-11.917,-125.214],[-67.394,-101.902]],"c":true}],"e":[{"i":[[6.157,-4.219],[-3.174,-9.01],[-18.219,2.876],[-19.536,-4.824],[-7.094,9.471],[12.667,9.464],[26.413,1.594]],"o":[[-8.222,6.087],[2.789,7.917],[13.888,-2.193],[23.011,5.683],[6.619,-8.837],[-14.795,-11.054],[-15.264,-0.921]],"v":[[-96.061,-70.73],[-113.039,-49.167],[-87.031,-34.876],[-32.965,-26.81],[18.616,-25.762],[12.583,-54.464],[-61.55,-75.315]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[6.157,-4.219],[-3.174,-9.01],[-18.219,2.876],[-19.536,-4.824],[-7.094,9.471],[12.667,9.464],[26.413,1.594]],"o":[[-8.222,6.087],[2.789,7.917],[13.888,-2.193],[23.011,5.683],[6.619,-8.837],[-14.795,-11.054],[-15.264,-0.921]],"v":[[-96.061,-70.73],[-113.039,-49.167],[-87.031,-34.876],[-32.965,-26.81],[18.616,-25.762],[12.583,-54.464],[-61.55,-75.315]],"c":true}],"e":[{"i":[[3.784,0.699],[2.384,-2.602],[-14.769,-11.05],[-11.834,-18.516],[-7.741,-0.127],[6.515,13.469],[15.976,23.645]],"o":[[-10.419,-2.092],[-1.951,2.13],[8.434,6.31],[13.94,21.81],[12.936,0.213],[-10.803,-22.337],[-9.233,-13.665]],"v":[[-76.331,-39.158],[-92.299,-30.38],[-94.868,0.757],[-62.66,44.386],[-27.187,87.735],[-8.515,66.531],[-55.492,-15.158]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[3.784,0.699],[2.384,-2.602],[-14.769,-11.05],[-11.834,-18.516],[-7.741,-0.127],[6.515,13.469],[15.976,23.645]],"o":[[-10.419,-2.092],[-1.951,2.13],[8.434,6.31],[13.94,21.81],[12.936,0.213],[-10.803,-22.337],[-9.233,-13.665]],"v":[[-76.331,-39.158],[-92.299,-30.38],[-94.868,0.757],[-62.66,44.386],[-27.187,87.735],[-8.515,66.531],[-55.492,-15.158]],"c":true}],"e":[{"i":[[3.132,2.236],[3.262,-1.348],[-4.607,-17.86],[-2.869,-21.957],[-8.292,-3.69],[2.539,22.843],[4.292,23.317]],"o":[[-8.552,-6.307],[-2.67,1.103],[2.592,10.049],[3.38,25.864],[11.82,5.26],[-2.837,-25.521],[-2.48,-13.476]],"v":[[-56.948,-46.943],[-73.38,-46.503],[-86.395,-20.635],[-78.952,33.777],[-62.669,88.572],[-38.023,61.771],[-48.56,-21.453]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[3.132,2.236],[3.262,-1.348],[-4.607,-17.86],[-2.869,-21.957],[-8.292,-3.69],[2.539,22.843],[4.292,23.317]],"o":[[-8.552,-6.307],[-2.67,1.103],[2.592,10.049],[3.38,25.864],[11.82,5.26],[-2.837,-25.521],[-2.48,-13.476]],"v":[[-56.948,-46.943],[-73.38,-46.503],[-86.395,-20.635],[-78.952,33.777],[-62.669,88.572],[-38.023,61.771],[-48.56,-21.453]],"c":true}],"e":[{"i":[[1.812,1.719],[3.262,-1.348],[-2.871,-18.22],[-1.124,-22.745],[-9.914,-3.014],[-0.013,22.984],[1.405,21.736]],"o":[[-8.552,-6.307],[-2.67,1.103],[1.674,10.622],[1.324,26.792],[17.985,5.467],[0.015,-26.472],[-0.812,-12.561]],"v":[[-46.948,-39.943],[-73.38,-46.503],[-81.895,-21.635],[-79.247,35.135],[-64.919,90.822],[-41.523,64.271],[-43.109,-16.827]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[1.812,1.719],[3.262,-1.348],[-2.871,-18.22],[-1.124,-22.745],[-9.914,-3.014],[-0.013,22.984],[1.405,21.736]],"o":[[-8.552,-6.307],[-2.67,1.103],[1.674,10.622],[1.324,26.792],[17.985,5.467],[0.015,-26.472],[-0.812,-12.561]],"v":[[-46.948,-39.943],[-73.38,-46.503],[-81.895,-21.635],[-79.247,35.135],[-64.919,90.822],[-41.523,64.271],[-43.109,-16.827]],"c":true}],"e":[{"i":[[1.812,1.719],[3.262,-1.348],[-2.355,-19.365],[-1.513,-22.933],[-8.156,-1.256],[1.273,19.979],[1.799,22.403]],"o":[[-8.552,-6.307],[-2.67,1.103],[1.298,10.675],[1.782,27.013],[22.533,3.47],[-1.686,-26.456],[-1.04,-12.947]],"v":[[-49.698,-30.443],[-72.88,-39.003],[-84.645,-13.635],[-81.434,43.853],[-68.169,97.822],[-41.023,76.021],[-45.555,-6.636]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[1.812,1.719],[3.262,-1.348],[-2.355,-19.365],[-1.513,-22.933],[-8.156,-1.256],[1.273,19.979],[1.799,22.403]],"o":[[-8.552,-6.307],[-2.67,1.103],[1.298,10.675],[1.782,27.013],[22.533,3.47],[-1.686,-26.456],[-1.04,-12.947]],"v":[[-49.698,-30.443],[-72.88,-39.003],[-84.645,-13.635],[-81.434,43.853],[-68.169,97.822],[-41.023,76.021],[-45.555,-6.636]],"c":true}],"e":[{"i":[[2.728,3.001],[5.63,-1.997],[-0.605,-19.365],[-0.728,-22.203],[-5.858,-0.445],[0.228,20.018],[0.907,23.656]],"o":[[-8.552,-6.307],[-2.723,0.966],[0.336,10.748],[0.857,26.153],[22.734,1.726],[-0.302,-26.472],[-0.524,-13.671]],"v":[[-45.198,-28.193],[-71.13,-33.503],[-83.395,-8.885],[-82.537,47.425],[-73.669,98.572],[-40.773,83.021],[-40.687,-1.403]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[2.728,3.001],[5.63,-1.997],[-0.605,-19.365],[-0.728,-22.203],[-5.858,-0.445],[0.228,20.018],[0.907,23.656]],"o":[[-8.552,-6.307],[-2.723,0.966],[0.336,10.748],[0.857,26.153],[22.734,1.726],[-0.302,-26.472],[-0.524,-13.671]],"v":[[-45.198,-28.193],[-71.13,-33.503],[-83.395,-8.885],[-82.537,47.425],[-73.669,98.572],[-40.773,83.021],[-40.687,-1.403]],"c":true}],"e":[{"i":[[2.728,3.001],[6.38,-0.497],[0.145,-13.615],[0.294,-25.262],[-2.459,-0.287],[0.023,3.979],[0.808,28.804]],"o":[[-4.302,-3.307],[-2.88,0.224],[-0.115,10.753],[-0.346,29.756],[3.669,0.428],[-0.155,-26.473],[-0.467,-16.647]],"v":[[-44.448,-31.193],[-72.63,-33.003],[-82.895,-21.135],[-84.013,41.094],[-81.669,99.572],[-40.523,97.521],[-40.03,0.919]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[2.728,3.001],[6.38,-0.497],[0.145,-13.615],[0.294,-25.262],[-2.459,-0.287],[0.023,3.979],[0.808,28.804]],"o":[[-4.302,-3.307],[-2.88,0.224],[-0.115,10.753],[-0.346,29.756],[3.669,0.428],[-0.155,-26.473],[-0.467,-16.647]],"v":[[-44.448,-31.193],[-72.63,-33.003],[-82.895,-21.135],[-84.013,41.094],[-81.669,99.572],[-40.523,97.521],[-40.03,0.919]],"c":true}],"e":[{"i":[[0.256,3.642],[6.38,-0.497],[0.145,-13.615],[0.124,-24.165],[-0.585,-5.042],[-0.033,1.992],[0.28,31.541]],"o":[[-4.302,-3.307],[-2.88,0.224],[-0.115,10.753],[-0.146,28.464],[5.169,0.178],[0.332,-19.976],[-0.162,-18.228]],"v":[[-39.198,-31.443],[-80.88,-32.753],[-84.895,-21.135],[-85.376,38.197],[-84.919,99.822],[-38.523,99.521],[-38.551,4.741]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"back_foot","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0.375,-0.5],[0,0],[-2.625,-2],[0.625,-3],[-1.875,-0.375],[0.638,12.764],[0,0]],"o":[[-0.375,0.5],[0,0],[2.625,2],[-0.625,3],[1.875,0.375],[-0.125,-2.5],[0,0]],"v":[[-84.375,59.75],[-86.875,61.25],[-84.375,64.5],[-82.625,71.75],[-84.25,79.5],[-78.125,65.25],[-79.375,61.5]],"c":true}],"e":[{"i":[[1.625,-0.062],[0.938,-2.875],[-0.984,-3.15],[0.944,-2.915],[-0.812,0],[-2.305,16.797],[0,0]],"o":[[-0.625,0.024],[-0.425,1.305],[0.938,3],[-1.438,4.438],[1.356,0],[0.438,-3.188],[0,0]],"v":[[-31.75,37.188],[-30.688,47.438],[-32.75,50.5],[-32.75,61.25],[-32.562,66.75],[-27.562,49.625],[-28.438,36.812]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[1.625,-0.062],[0.938,-2.875],[-0.984,-3.15],[0.944,-2.915],[-0.812,0],[-2.305,16.797],[0,0]],"o":[[-0.625,0.024],[-0.425,1.305],[0.938,3],[-1.438,4.438],[1.356,0],[0.438,-3.188],[0,0]],"v":[[-31.75,37.188],[-30.688,47.438],[-32.75,50.5],[-32.75,61.25],[-32.562,66.75],[-27.562,49.625],[-28.438,36.812]],"c":true}],"e":[{"i":[[0.787,-1.423],[-1.976,-2.289],[-3.205,-0.786],[-2.007,-2.316],[-0.42,0.695],[13.184,10.659],[0,0]],"o":[[-0.302,0.547],[0.897,1.039],[3.053,0.749],[3.055,3.525],[0.701,-1.161],[-2.502,-2.023],[0,0]],"v":[[-6.713,-43.205],[2.61,-38.813],[4.164,-35.464],[13.365,-29.905],[18.17,-27.221],[6.098,-40.357],[-5.321,-46.234]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0.787,-1.423],[-1.976,-2.289],[-3.205,-0.786],[-2.007,-2.316],[-0.42,0.695],[13.184,10.659],[0,0]],"o":[[-0.302,0.547],[0.897,1.039],[3.053,0.749],[3.055,3.525],[0.701,-1.161],[-2.502,-2.023],[0,0]],"v":[[-6.713,-43.205],[2.61,-38.813],[4.164,-35.464],[13.365,-29.905],[18.17,-27.221],[6.098,-40.357],[-5.321,-46.234]],"c":true}],"e":[{"i":[[-0.762,-1.437],[-2.997,0.404],[-2.41,2.254],[-3.036,0.415],[0.353,0.732],[16.132,-5.217],[0,0]],"o":[[0.293,0.552],[1.36,-0.183],[2.295,-2.147],[4.622,-0.632],[-0.589,-1.222],[-3.061,0.99],[0,0]],"v":[[-14.913,-92.817],[-6.141,-98.225],[-2.487,-97.697],[7.197,-102.365],[12.07,-104.922],[-5.528,-101.99],[-16.689,-95.638]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-0.762,-1.437],[-2.997,0.404],[-2.41,2.254],[-3.036,0.415],[0.353,0.732],[16.132,-5.217],[0,0]],"o":[[0.293,0.552],[1.36,-0.183],[2.295,-2.147],[4.622,-0.632],[-0.589,-1.222],[-3.061,0.99],[0,0]],"v":[[-14.913,-92.817],[-6.141,-98.225],[-2.487,-97.697],[7.197,-102.365],[12.07,-104.922],[-5.528,-101.99],[-16.689,-95.638]],"c":true}],"e":[{"i":[[1.498,-3.382],[-2.314,-0.793],[-1.565,2.905],[0.266,1.135],[4.409,6.447],[-4.472,-5.194],[-0.357,-1.274]],"o":[[-0.253,0.571],[0.034,0.042],[1.491,-2.767],[-0.725,-3.093],[-2.592,-3.79],[1.374,1.596],[0.424,1.515]],"v":[[-60.498,-133.556],[-56.534,-130.604],[-53.089,-138.019],[-50.337,-145.157],[-60.409,-154.572],[-60.028,-149.556],[-54.706,-144.726]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[1.498,-3.382],[-2.314,-0.793],[-1.565,2.905],[0.266,1.135],[4.409,6.447],[-4.472,-5.194],[-0.357,-1.274]],"o":[[-0.253,0.571],[0.034,0.042],[1.491,-2.767],[-0.725,-3.093],[-2.592,-3.79],[1.374,1.596],[0.424,1.515]],"v":[[-60.498,-133.556],[-56.534,-130.604],[-53.089,-138.019],[-50.337,-145.157],[-60.409,-154.572],[-60.028,-149.556],[-54.706,-144.726]],"c":true}],"e":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[1.76,1.679],[7.373,-0.01],[-7.754,-0.775],[-0.902,-0.968]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-3.257,-3.106],[-3.61,0.005],[3.232,0.323],[1.073,1.151]],"v":[[-83.938,-145.298],[-79.061,-144.997],[-78.033,-153.29],[-78.868,-160.769],[-95.89,-162.505],[-92.746,-158.475],[-83.05,-158.505]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[1.76,1.679],[7.373,-0.01],[-7.754,-0.775],[-0.902,-0.968]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-3.257,-3.106],[-3.61,0.005],[3.232,0.323],[1.073,1.151]],"v":[[-83.938,-145.298],[-79.061,-144.997],[-78.033,-153.29],[-78.868,-160.769],[-95.89,-162.505],[-92.746,-158.475],[-83.05,-158.505]],"c":true}],"e":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-92.438,-150.673],[-87.561,-150.372],[-87.283,-158.79],[-88.118,-166.269],[-103.89,-167.63],[-99.496,-163.475],[-92.3,-163.13]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-92.438,-150.673],[-87.561,-150.372],[-87.283,-158.79],[-88.118,-166.269],[-103.89,-167.63],[-99.496,-163.475],[-92.3,-163.13]],"c":true}],"e":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-99.813,-150.298],[-94.936,-149.997],[-94.658,-158.415],[-95.493,-165.894],[-111.265,-167.255],[-106.871,-163.1],[-99.675,-162.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-99.813,-150.298],[-94.936,-149.997],[-94.658,-158.415],[-95.493,-165.894],[-111.265,-167.255],[-106.871,-163.1],[-99.675,-162.755]],"c":true}],"e":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-102.438,-151.673],[-97.561,-151.372],[-97.283,-159.79],[-98.118,-167.269],[-113.89,-168.63],[-109.496,-164.475],[-102.3,-164.13]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-102.438,-151.673],[-97.561,-151.372],[-97.283,-159.79],[-98.118,-167.269],[-113.89,-168.63],[-109.496,-164.475],[-102.3,-164.13]],"c":true}],"e":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-105.438,-152.048],[-100.561,-151.747],[-100.283,-160.165],[-101.118,-167.644],[-116.89,-169.005],[-112.496,-164.85],[-105.3,-164.505]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-105.438,-152.048],[-100.561,-151.747],[-100.283,-160.165],[-101.118,-167.644],[-116.89,-169.005],[-112.496,-164.85],[-105.3,-164.505]],"c":true}],"e":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-105.438,-152.048],[-100.561,-151.747],[-100.283,-160.165],[-101.118,-167.644],[-116.89,-169.005],[-112.496,-164.85],[-105.3,-164.505]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.055,3.3],[2.362,0.58],[7.64,1.13],[-7.504,-0.025],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.053,-3.143],[-4.507,-1.106],[-3.571,-0.528],[3.248,0.011],[1.221,0.535]],"v":[[-105.438,-152.048],[-100.561,-151.747],[-100.283,-160.165],[-101.118,-167.644],[-116.89,-169.005],[-112.496,-164.85],[-105.3,-164.505]],"c":true}],"e":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.26,3.29],[2.362,0.58],[7.64,1.13],[-7.394,-1.278],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.283,-3.585],[-4.507,-1.106],[-3.571,-0.528],[2.746,0.475],[1.221,0.535]],"v":[[-89.438,-150.798],[-85.436,-150.497],[-84.533,-159.04],[-85.118,-166.019],[-97.765,-167.755],[-94.371,-163.975],[-88.3,-162.88]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0.438,-4.577],[-2.42,0.359],[-0.26,3.29],[2.362,0.58],[7.64,1.13],[-7.394,-1.278],[-1.7,-0.745]],"o":[[-0.06,0.622],[0.049,0.022],[0.283,-3.585],[-4.507,-1.106],[-3.571,-0.528],[2.746,0.475],[1.221,0.535]],"v":[[-89.438,-150.798],[-85.436,-150.497],[-84.533,-159.04],[-85.118,-166.019],[-97.765,-167.755],[-94.371,-163.975],[-88.3,-162.88]],"c":true}],"e":[{"i":[[2.102,-4.09],[-2.381,-0.563],[-1.46,2.96],[2.002,1.381],[5.81,2.669],[-7.112,-2.392],[-1.303,-1.322]],"o":[[-0.286,0.556],[0.037,0.038],[1.591,-3.225],[-4.17,-2.877],[-3.28,-1.507],[2.307,0.776],[0.936,0.95]],"v":[[-58.48,-148.209],[-54.874,-146.447],[-50.871,-154.049],[-49.955,-159.998],[-61.31,-166.419],[-60.557,-162.526],[-53.449,-159.01]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[2.102,-4.09],[-2.381,-0.563],[-1.46,2.96],[2.002,1.381],[5.81,2.669],[-7.112,-2.392],[-1.303,-1.322]],"o":[[-0.286,0.556],[0.037,0.038],[1.591,-3.225],[-4.17,-2.877],[-3.28,-1.507],[2.307,0.776],[0.936,0.95]],"v":[[-58.48,-148.209],[-54.874,-146.447],[-50.871,-154.049],[-49.955,-159.998],[-61.31,-166.419],[-60.557,-162.526],[-53.449,-159.01]],"c":true}],"e":[{"i":[[5.404,-3.723],[-2.04,-1.349],[-2.391,2.274],[1.403,1.987],[4.533,4.509],[-4.499,-6.006],[-0.767,-1.69]],"o":[[-0.515,0.355],[0.022,0.049],[2.605,-2.478],[-2.922,-4.138],[-2.559,-2.546],[1.541,2.057],[0.551,1.214]],"v":[[-2.029,-118.027],[-0.877,-114.88],[6.002,-119.885],[10.414,-125.903],[3.096,-135.346],[2.459,-131.432],[6.169,-125.556]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[5.404,-3.723],[-2.04,-1.349],[-2.391,2.274],[1.403,1.987],[4.533,4.509],[-4.499,-6.006],[-0.767,-1.69]],"o":[[-0.515,0.355],[0.022,0.049],[2.605,-2.478],[-2.922,-4.138],[-2.559,-2.546],[1.541,2.057],[0.551,1.214]],"v":[[-2.029,-118.027],[-0.877,-114.88],[6.002,-119.885],[10.414,-125.903],[3.096,-135.346],[2.459,-131.432],[6.169,-125.556]],"c":true}],"e":[{"i":[[6.024,2.604],[0.06,-2.446],[-2.535,-1.767],[-1.227,3.189],[-1.415,6.235],[1.772,-8.672],[1.025,-1.547]],"o":[[-0.574,-0.248],[-0.03,0.044],[2.95,2.056],[1.819,-4.728],[0.799,-3.52],[-0.815,3.99],[-0.737,1.112]],"v":[[21.447,-34.303],[20.767,-31.281],[27.535,-28.233],[34.727,-27.064],[38.97,-39.278],[35.69,-37.49],[32.179,-30.477]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[6.024,2.604],[0.06,-2.446],[-2.535,-1.767],[-1.227,3.189],[-1.415,6.235],[1.772,-8.672],[1.025,-1.547]],"o":[[-0.574,-0.248],[-0.03,0.044],[2.95,2.056],[1.819,-4.728],[0.799,-3.52],[-0.815,3.99],[-0.737,1.112]],"v":[[21.447,-34.303],[20.767,-31.281],[27.535,-28.233],[34.727,-27.064],[38.97,-39.278],[35.69,-37.49],[32.179,-30.477]],"c":true}],"e":[{"i":[[0.658,5.59],[1.989,-0.15],[-0.082,-2.346],[-2.246,0.018],[-4.436,0.927],[4.319,-0.257],[4.772,0.449]],"o":[[-0.073,-0.621],[-0.053,-0.003],[0.125,3.594],[3.759,-0.03],[3.534,-0.739],[-4.128,0.246],[-1.328,-0.125]],"v":[[-18.658,86.41],[-21.676,86.275],[-21.606,90.596],[-18.572,98.717],[-1.252,95.885],[-2.006,93.007],[-16.397,94.176]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0.658,5.59],[1.989,-0.15],[-0.082,-2.346],[-2.246,0.018],[-4.436,0.927],[4.319,-0.257],[4.772,0.449]],"o":[[-0.073,-0.621],[-0.053,-0.003],[0.125,3.594],[3.759,-0.03],[3.534,-0.739],[-4.128,0.246],[-1.328,-0.125]],"v":[[-18.658,86.41],[-21.676,86.275],[-21.606,90.596],[-18.572,98.717],[-1.252,95.885],[-2.006,93.007],[-16.397,94.176]],"c":true}],"e":[{"i":[[-0.029,5.528],[0.301,0.038],[-0.082,-2.346],[-1.931,-0.11],[-4.372,0.145],[2.381,1.368],[8.086,0.216]],"o":[[-0.154,-0.035],[-0.053,-0.003],[0.125,3.594],[3.884,0.22],[2.189,-0.073],[-2.464,-1.415],[-1.915,-0.051]],"v":[[-53.971,89.347],[-57.614,89.337],[-57.918,93.971],[-55.509,99.842],[-39.314,99.885],[-37.444,97.757],[-52.585,96.489]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.029,5.528],[0.301,0.038],[-0.082,-2.346],[-1.931,-0.11],[-4.372,0.145],[2.381,1.368],[8.086,0.216]],"o":[[-0.154,-0.035],[-0.053,-0.003],[0.125,3.594],[3.884,0.22],[2.189,-0.073],[-2.464,-1.415],[-1.915,-0.051]],"v":[[-53.971,89.347],[-57.614,89.337],[-57.918,93.971],[-55.509,99.842],[-39.314,99.885],[-37.444,97.757],[-52.585,96.489]],"c":true}],"e":[{"i":[[-0.029,5.528],[0.301,0.038],[-0.082,-2.346],[-2.308,-0.019],[-4.372,0.145],[1.881,1.868],[7.835,0.261]],"o":[[-0.154,-0.035],[-0.053,-0.003],[0.125,3.594],[4.009,0.033],[2.189,-0.073],[-0.369,-0.382],[-1.915,-0.064]],"v":[[-57.221,91.097],[-61.239,91.212],[-61.043,94.346],[-58.509,99.905],[-45.502,99.948],[-43.631,97.632],[-53.772,96.426]],"c":true}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"back_arm","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[1,-4.25],[-3,-4.25],[0,0],[-0.25,-0.5],[-1.5,4],[7.749,10.332]],"o":[[0,0],[-1,4.25],[3,4.25],[0,0],[0.25,0.5],[1.5,-4],[-9,-12]],"v":[[-109.25,-53],[-117.75,-51],[-117.5,-40],[-104.75,-27],[-95.25,-16.75],[-87.25,-15.5],[-94,-34]],"c":true}],"e":[{"i":[[0,0],[-3.661,-2.379],[-5.402,-0.344],[-5.575,1.028],[-3.715,5.558],[3.99,1.076],[12.345,-3.795]],"o":[[0,0],[3.661,2.379],[5.873,0.374],[5.575,-1.028],[3.715,-5.558],[-8.169,-2.203],[-14.338,4.408]],"v":[[-139.314,-107.537],[-139.309,-100.112],[-128.623,-97.124],[-107.825,-98.722],[-82.715,-109.942],[-87.081,-120.797],[-113.024,-116.707]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[-3.661,-2.379],[-5.402,-0.344],[-5.575,1.028],[-3.715,5.558],[3.99,1.076],[12.345,-3.795]],"o":[[0,0],[3.661,2.379],[5.873,0.374],[5.575,-1.028],[3.715,-5.558],[-8.169,-2.203],[-14.338,4.408]],"v":[[-139.314,-107.537],[-139.309,-100.112],[-128.623,-97.124],[-107.825,-98.722],[-82.715,-109.942],[-87.081,-120.797],[-113.024,-116.707]],"c":true}],"e":[{"i":[[0,0],[-3.918,-1.927],[-3.817,3.549],[-4.352,3.634],[-9.737,6.88],[6.627,-0.701],[13.782,-7.811]],"o":[[0,0],[4.364,2.146],[4.31,-4.007],[9.348,-7.806],[8.169,-5.772],[-17.325,1.834],[-13.05,7.396]],"v":[[-161.565,-126.346],[-157.864,-118.396],[-147.683,-116.799],[-124.348,-134.944],[-84.013,-156.13],[-92.627,-170.049],[-133.782,-153.189]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[-3.918,-1.927],[-3.817,3.549],[-4.352,3.634],[-9.737,6.88],[6.627,-0.701],[13.782,-7.811]],"o":[[0,0],[4.364,2.146],[4.31,-4.007],[9.348,-7.806],[8.169,-5.772],[-17.325,1.834],[-13.05,7.396]],"v":[[-161.565,-126.346],[-157.864,-118.396],[-147.683,-116.799],[-124.348,-134.944],[-84.013,-156.13],[-92.627,-170.049],[-133.782,-153.189]],"c":true}],"e":[{"i":[[0,0],[-4.02,-1.703],[-2.498,4.575],[-3.754,4.249],[-3.599,8.5],[5.501,-3.761],[8.629,-13.285]],"o":[[0,0],[3.642,1.542],[2.82,-5.165],[8.087,-9.153],[4.78,-11.29],[-10.144,6.937],[-9.69,14.919]],"v":[[-167.169,-118.412],[-161.392,-112.542],[-152.229,-112.75],[-131.337,-139.347],[-113.28,-165.46],[-125.356,-177.437],[-148.81,-150.169]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[-4.02,-1.703],[-2.498,4.575],[-3.754,4.249],[-3.599,8.5],[5.501,-3.761],[8.629,-13.285]],"o":[[0,0],[3.642,1.542],[2.82,-5.165],[8.087,-9.153],[4.78,-11.29],[-10.144,6.937],[-9.69,14.919]],"v":[[-167.169,-118.412],[-161.392,-112.542],[-152.229,-112.75],[-131.337,-139.347],[-113.28,-165.46],[-125.356,-177.437],[-148.81,-150.169]],"c":true}],"e":[{"i":[[-0.46,-4.06],[-4.299,-0.764],[-2.459,4.317],[-2.712,4.979],[-0.282,9.227],[4.524,-4.893],[5.45,-14.874]],"o":[[0.46,4.06],[3.894,0.692],[3.634,-6.38],[5.843,-10.725],[0.415,-13.564],[-8.342,9.023],[-6.121,16.703]],"v":[[-183.21,-119.06],[-177.02,-111.125],[-167.134,-115.87],[-153.196,-144.455],[-137.915,-181.186],[-153.357,-191.419],[-172.642,-150.359]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-0.46,-4.06],[-4.299,-0.764],[-2.459,4.317],[-2.712,4.979],[-0.282,9.227],[4.524,-4.893],[5.45,-14.874]],"o":[[0.46,4.06],[3.894,0.692],[3.634,-6.38],[5.843,-10.725],[0.415,-13.564],[-8.342,9.023],[-6.121,16.703]],"v":[[-183.21,-119.06],[-177.02,-111.125],[-167.134,-115.87],[-153.196,-144.455],[-137.915,-181.186],[-153.357,-191.419],[-172.642,-150.359]],"c":true}],"e":[{"i":[[-0.46,-4.06],[-5.73,-1.875],[-1.67,4.679],[-1.93,5.331],[-0.282,9.227],[4.524,-4.893],[4.798,-15.098]],"o":[[0.46,4.06],[3.759,1.23],[2.634,-7.38],[5.446,-15.045],[0.415,-13.564],[-8.342,9.023],[-5.358,16.859]],"v":[[-182.71,-119.56],[-177.77,-109.375],[-168.134,-112.12],[-156.446,-144.205],[-143.415,-183.436],[-158.857,-193.669],[-175.392,-154.109]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-0.46,-4.06],[-5.73,-1.875],[-1.67,4.679],[-1.93,5.331],[-0.282,9.227],[4.524,-4.893],[4.798,-15.098]],"o":[[0.46,4.06],[3.759,1.23],[2.634,-7.38],[5.446,-15.045],[0.415,-13.564],[-8.342,9.023],[-5.358,16.859]],"v":[[-182.71,-119.56],[-177.77,-109.375],[-168.134,-112.12],[-156.446,-144.205],[-143.415,-183.436],[-158.857,-193.669],[-175.392,-154.109]],"c":true}],"e":[{"i":[[0.207,-6.382],[-5.338,-1.751],[-1.385,4.771],[-1.605,5.437],[0.274,9.227],[4.221,-5.157],[3.232,-17.455]],"o":[[-0.132,4.083],[3.758,1.233],[2.185,-7.526],[4.53,-15.346],[-0.403,-13.564],[-7.784,9.509],[-3.189,17.223]],"v":[[-183.957,-115.868],[-177.662,-108.499],[-169.209,-111.819],[-158.224,-145.3],[-147.579,-185.244],[-163.609,-194.529],[-176.982,-154.045]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0.207,-6.382],[-5.338,-1.751],[-1.385,4.771],[-1.605,5.437],[0.274,9.227],[4.221,-5.157],[3.232,-17.455]],"o":[[-0.132,4.083],[3.758,1.233],[2.185,-7.526],[4.53,-15.346],[-0.403,-13.564],[-7.784,9.509],[-3.189,17.223]],"v":[[-183.957,-115.868],[-177.662,-108.499],[-169.209,-111.819],[-158.224,-145.3],[-147.579,-185.244],[-163.609,-194.529],[-176.982,-154.045]],"c":true}],"e":[{"i":[[0.207,-6.382],[-5.338,-1.751],[-1.385,4.771],[-1.548,6.7],[0.274,9.227],[4.221,-5.157],[3.232,-17.455]],"o":[[-0.132,4.083],[3.758,1.233],[2.185,-7.526],[3.974,-17.2],[-0.403,-13.564],[-7.784,9.509],[-3.189,17.223]],"v":[[-183.957,-115.868],[-177.662,-108.999],[-169.209,-111.819],[-158.724,-146.3],[-150.329,-184.994],[-166.609,-193.279],[-178.232,-153.795]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0.207,-6.382],[-5.338,-1.751],[-1.385,4.771],[-1.548,6.7],[0.274,9.227],[4.221,-5.157],[3.232,-17.455]],"o":[[-0.132,4.083],[3.758,1.233],[2.185,-7.526],[3.974,-17.2],[-0.403,-13.564],[-7.784,9.509],[-3.189,17.223]],"v":[[-183.957,-115.868],[-177.662,-108.999],[-169.209,-111.819],[-158.724,-146.3],[-150.329,-184.994],[-166.609,-193.279],[-178.232,-153.795]],"c":true}],"e":[{"i":[[0.042,-6.386],[-5.381,-1.613],[-1.262,4.805],[-1.375,6.738],[0.511,9.217],[4.087,-5.263],[2.782,-17.532]],"o":[[-0.027,4.086],[3.789,1.136],[1.99,-7.579],[3.531,-17.297],[-0.751,-13.55],[-7.537,9.707],[-2.745,17.299]],"v":[[-183.996,-115.688],[-177.777,-108.234],[-169.649,-107.27],[-159.555,-146.759],[-152.408,-184.657],[-168.645,-193.52],[-179.249,-153.751]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0.042,-6.386],[-5.381,-1.613],[-1.262,4.805],[-1.375,6.738],[0.511,9.217],[4.087,-5.263],[2.782,-17.532]],"o":[[-0.027,4.086],[3.789,1.136],[1.99,-7.579],[3.531,-17.297],[-0.751,-13.55],[-7.537,9.707],[-2.745,17.299]],"v":[[-183.996,-115.688],[-177.777,-108.234],[-169.649,-107.27],[-159.555,-146.759],[-152.408,-184.657],[-168.645,-193.52],[-179.249,-153.751]],"c":true}],"e":[{"i":[[-0.092,-6.385],[-5.414,-1.5],[-1.161,4.831],[-1.233,6.765],[0.705,9.204],[3.975,-5.348],[2.413,-17.587]],"o":[[0.059,4.085],[3.812,1.056],[1.831,-7.619],[3.166,-17.367],[-1.036,-13.531],[-7.331,9.863],[-2.381,17.353]],"v":[[-184.035,-114.275],[-177.661,-106.953],[-169.514,-106.16],[-160.252,-147.103],[-153.904,-186.143],[-170.324,-194.663],[-180.09,-153.679]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-0.092,-6.385],[-5.414,-1.5],[-1.161,4.831],[-1.233,6.765],[0.705,9.204],[3.975,-5.348],[2.413,-17.587]],"o":[[0.059,4.085],[3.812,1.056],[1.831,-7.619],[3.166,-17.367],[-1.036,-13.531],[-7.331,9.863],[-2.381,17.353]],"v":[[-184.035,-114.275],[-177.661,-106.953],[-169.514,-106.16],[-160.252,-147.103],[-153.904,-186.143],[-170.324,-194.663],[-180.09,-153.679]],"c":true}],"e":[{"i":[[-0.092,-6.385],[-5.414,-1.5],[-1.161,4.831],[-1.233,6.765],[0.705,9.204],[3.975,-5.348],[2.413,-17.587]],"o":[[0.059,4.085],[3.812,1.056],[1.831,-7.619],[3.166,-17.367],[-1.036,-13.531],[-7.331,9.863],[-2.381,17.353]],"v":[[-184.035,-114.275],[-177.661,-106.953],[-169.514,-106.16],[-160.252,-147.103],[-153.904,-186.143],[-170.324,-194.663],[-180.09,-153.679]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-0.092,-6.385],[-5.414,-1.5],[-1.161,4.831],[-1.233,6.765],[0.705,9.204],[3.975,-5.348],[2.413,-17.587]],"o":[[0.059,4.085],[3.812,1.056],[1.831,-7.619],[3.166,-17.367],[-1.036,-13.531],[-7.331,9.863],[-2.381,17.353]],"v":[[-184.035,-114.275],[-177.661,-106.953],[-169.514,-106.16],[-160.252,-147.103],[-153.904,-186.143],[-170.324,-194.663],[-180.09,-153.679]],"c":true}],"e":[{"i":[[0.561,-6.361],[-5.232,-2.045],[-1.649,4.687],[-1.919,6.604],[0.058,9.231],[4.501,-4.914],[4.199,-17.248]],"o":[[-0.359,4.07],[3.684,1.44],[2.6,-7.392],[4.925,-16.952],[-0.081,-12.885],[-8.301,9.061],[-4.143,17.018]],"v":[[-178.241,-116.205],[-172.649,-108.27],[-163.126,-109.399],[-151.726,-146.679],[-141.419,-184.615],[-156.882,-195.02],[-171.287,-155.249]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0.561,-6.361],[-5.232,-2.045],[-1.649,4.687],[-1.919,6.604],[0.058,9.231],[4.501,-4.914],[4.199,-17.248]],"o":[[-0.359,4.07],[3.684,1.44],[2.6,-7.392],[4.925,-16.952],[-0.081,-12.885],[-8.301,9.061],[-4.143,17.018]],"v":[[-178.241,-116.205],[-172.649,-108.27],[-163.126,-109.399],[-151.726,-146.679],[-141.419,-184.615],[-156.882,-195.02],[-171.287,-155.249]],"c":true}],"e":[{"i":[[1.276,-6.257],[-3.879,-1.931],[-2.167,4.471],[-2.652,6.345],[-0.985,9.178],[5.027,-4.374],[5.062,-17.014]],"o":[[-0.817,4.003],[3.54,1.763],[3.419,-7.051],[6.809,-16.288],[1.374,-12.812],[-9.271,8.066],[-4.788,16.093]],"v":[[-171.031,-125.585],[-166.121,-116.819],[-156.282,-121.614],[-143.744,-150.119],[-129.218,-186.648],[-143.407,-198.733],[-161.462,-160.843]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[1.276,-6.257],[-3.879,-1.931],[-2.167,4.471],[-2.652,6.345],[-0.985,9.178],[5.027,-4.374],[5.062,-17.014]],"o":[[-0.817,4.003],[3.54,1.763],[3.419,-7.051],[6.809,-16.288],[1.374,-12.812],[-9.271,8.066],[-4.788,16.093]],"v":[[-171.031,-125.585],[-166.121,-116.819],[-156.282,-121.614],[-143.744,-150.119],[-129.218,-186.648],[-143.407,-198.733],[-161.462,-160.843]],"c":true}],"e":[{"i":[[5.268,-3.609],[-2.623,-3.449],[-8.202,2.619],[-6.318,2.716],[-7.373,5.288],[6.654,0.353],[16.755,-5.863]],"o":[[-3.37,2.309],[4.954,6.514],[7.465,-2.384],[16.219,-6.971],[8.28,-5.938],[-12.272,-0.65],[-14.757,5.163]],"v":[[-133.137,-132.478],[-132.454,-123.764],[-116.298,-117.619],[-89.717,-127.136],[-59.127,-141.038],[-60.921,-157.339],[-104.243,-145.163]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[5.268,-3.609],[-2.623,-3.449],[-8.202,2.619],[-6.318,2.716],[-7.373,5.288],[6.654,0.353],[16.755,-5.863]],"o":[[-3.37,2.309],[4.954,6.514],[7.465,-2.384],[16.219,-6.971],[8.28,-5.938],[-12.272,-0.65],[-14.757,5.163]],"v":[[-133.137,-132.478],[-132.454,-123.764],[-116.298,-117.619],[-89.717,-127.136],[-59.127,-141.038],[-60.921,-157.339],[-104.243,-145.163]],"c":true}],"e":[{"i":[[5.775,-2.725],[-3.416,-2.666],[-7.42,0.517],[-6.865,0.397],[-5.841,4.536],[6.513,1.407],[8.793,-2.208]],"o":[[-3.695,1.743],[1.801,1.406],[7.817,-0.545],[9.822,-0.568],[8.498,-6.601],[-12.012,-2.595],[-15.163,3.808]],"v":[[-89.338,-124.368],[-95.301,-115.656],[-82.83,-115.017],[-56.572,-116.682],[-24.659,-123.036],[-27.336,-142.415],[-59.043,-136.542]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[5.775,-2.725],[-3.416,-2.666],[-7.42,0.517],[-6.865,0.397],[-5.841,4.536],[6.513,1.407],[8.793,-2.208]],"o":[[-3.695,1.743],[1.801,1.406],[7.817,-0.545],[9.822,-0.568],[8.498,-6.601],[-12.012,-2.595],[-15.163,3.808]],"v":[[-89.338,-124.368],[-95.301,-115.656],[-82.83,-115.017],[-56.572,-116.682],[-24.659,-123.036],[-27.336,-142.415],[-59.043,-136.542]],"c":true}],"e":[{"i":[[3.602,-6.555],[-5.622,-3.841],[-8.521,3.55],[-7.004,4.023],[-5.226,5.233],[6.922,-0.759],[8.22,-3.825]],"o":[[-1.968,3.58],[4.914,3.357],[7.234,-3.013],[8.531,-4.9],[7.654,-7.664],[-15.334,1.682],[-14.803,6.889]],"v":[[-114.102,-82.445],[-111.628,-68.409],[-94.229,-68.55],[-64.996,-83.273],[-28.154,-105.086],[-36.916,-122.682],[-83.697,-103.139]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[3.602,-6.555],[-5.622,-3.841],[-8.521,3.55],[-7.004,4.023],[-5.226,5.233],[6.922,-0.759],[8.22,-3.825]],"o":[[-1.968,3.58],[4.914,3.357],[7.234,-3.013],[8.531,-4.9],[7.654,-7.664],[-15.334,1.682],[-14.803,6.889]],"v":[[-114.102,-82.445],[-111.628,-68.409],[-94.229,-68.55],[-64.996,-83.273],[-28.154,-105.086],[-36.916,-122.682],[-83.697,-103.139]],"c":true}],"e":[{"i":[[6.982,2.418],[0.467,-6.792],[-6.953,-6.072],[-7.558,-2.849],[-7.592,-0.9],[5.792,3.866],[7.973,4.316]],"o":[[-4.109,-1.423],[-0.274,3.99],[5.902,5.154],[9.268,3.494],[10.756,1.275],[-13.498,-9.008],[-10.526,-5.698]],"v":[[-50.232,-92.168],[-59.476,-88.24],[-50.654,-75.948],[-16.018,-54.994],[8.092,-50.1],[24.248,-52.742],[-27.974,-80.802]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[6.982,2.418],[0.467,-6.792],[-6.953,-6.072],[-7.558,-2.849],[-7.592,-0.9],[5.792,3.866],[7.973,4.316]],"o":[[-4.109,-1.423],[-0.274,3.99],[5.902,5.154],[9.268,3.494],[10.756,1.275],[-13.498,-9.008],[-10.526,-5.698]],"v":[[-50.232,-92.168],[-59.476,-88.24],[-50.654,-75.948],[-16.018,-54.994],[8.092,-50.1],[24.248,-52.742],[-27.974,-80.802]],"c":true}],"e":[{"i":[[0.146,8.656],[6.004,-0.697],[2.53,-4.558],[2.872,-7.549],[0.31,-7.639],[-0.404,5.827],[-2.013,12.846]],"o":[[-0.073,-4.347],[-3.973,0.461],[-3.803,6.851],[-3.749,9.853],[-0.317,7.809],[1.691,-24.36],[1.488,-9.495]],"v":[[-22.146,-119.906],[-30.754,-129.303],[-42.03,-121.692],[-55.501,-84.853],[-67.433,-46.059],[-37.691,-33.14],[-25.987,-94.846]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0.146,8.656],[6.004,-0.697],[2.53,-4.558],[2.872,-7.549],[0.31,-7.639],[-0.404,5.827],[-2.013,12.846]],"o":[[-0.073,-4.347],[-3.973,0.461],[-3.803,6.851],[-3.749,9.853],[-0.317,7.809],[1.691,-24.36],[1.488,-9.495]],"v":[[-22.146,-119.906],[-30.754,-129.303],[-42.03,-121.692],[-55.501,-84.853],[-67.433,-46.059],[-37.691,-33.14],[-25.987,-94.846]],"c":true}],"e":[{"i":[[-3.481,7.926],[7.254,0.553],[3.423,-3.932],[5.169,-6.206],[5.683,-9.941],[-6.594,6.222],[-11.763,18.596]],"o":[[2.896,-6.594],[-3.988,-0.304],[-8.22,9.442],[-6.749,8.103],[-3.879,6.785],[1.441,-1.36],[9.335,-14.759]],"v":[[27.604,-116.906],[16.246,-122.053],[-4.78,-119.942],[-42.001,-70.853],[-63.683,-42.059],[-37.441,-16.64],[-2.237,-72.596]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-3.481,7.926],[7.254,0.553],[3.423,-3.932],[5.169,-6.206],[5.683,-9.941],[-6.594,6.222],[-11.763,18.596]],"o":[[2.896,-6.594],[-3.988,-0.304],[-8.22,9.442],[-6.749,8.103],[-3.879,6.785],[1.441,-1.36],[9.335,-14.759]],"v":[[27.604,-116.906],[16.246,-122.053],[-4.78,-119.942],[-42.001,-70.853],[-63.683,-42.059],[-37.441,-16.64],[-2.237,-72.596]],"c":true}],"e":[{"i":[[-5.354,7.656],[5.754,0.053],[1.28,-1.558],[5.169,-6.206],[6.683,-9.191],[-13.559,-0.119],[-6.013,7.846]],"o":[[4.128,-5.902],[-3.999,-0.037],[-7.947,9.672],[-6.749,8.103],[-4.596,6.321],[15.941,0.14],[10.622,-13.862]],"v":[[42.854,-118.406],[39.246,-124.053],[8.72,-123.942],[-34.501,-74.103],[-54.683,-48.309],[-43.191,-21.39],[-20.987,-31.846]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-5.354,7.656],[5.754,0.053],[1.28,-1.558],[5.169,-6.206],[6.683,-9.191],[-13.559,-0.119],[-6.013,7.846]],"o":[[4.128,-5.902],[-3.999,-0.037],[-7.947,9.672],[-6.749,8.103],[-4.596,6.321],[15.941,0.14],[10.622,-13.862]],"v":[[42.854,-118.406],[39.246,-124.053],[8.72,-123.942],[-34.501,-74.103],[-54.683,-48.309],[-43.191,-21.39],[-20.987,-31.846]],"c":true}],"e":[{"i":[[-6.665,6.546],[5.754,0.053],[2.53,-0.058],[5.169,-6.206],[6.683,-10.191],[-16.713,-3.166],[-6.948,7.032]],"o":[[2.896,-2.844],[-3.999,-0.037],[-0.47,0.192],[-6.749,8.103],[-2.489,3.795],[13.941,2.64],[13.737,-13.904]],"v":[[88.854,-124.156],[85.246,-126.803],[35.47,-126.942],[-26.501,-59.853],[-51.433,-32.309],[-34.941,-11.39],[1.263,-31.096]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-6.665,6.546],[5.754,0.053],[2.53,-0.058],[5.169,-6.206],[6.683,-10.191],[-16.713,-3.166],[-6.948,7.032]],"o":[[2.896,-2.844],[-3.999,-0.037],[-0.47,0.192],[-6.749,8.103],[-2.489,3.795],[13.941,2.64],[13.737,-13.904]],"v":[[88.854,-124.156],[85.246,-126.803],[35.47,-126.942],[-26.501,-59.853],[-51.433,-32.309],[-34.941,-11.39],[1.263,-31.096]],"c":true}],"e":[{"i":[[-7.604,7.156],[5.754,0.053],[0.28,-0.308],[5.169,-6.206],[7.183,-8.691],[-16.911,-1.838],[-7.177,6.798]],"o":[[0.896,-0.344],[-3.999,-0.037],[-0.47,0.192],[-6.749,8.103],[-2.891,3.498],[8.191,0.89],[34.737,-32.904]],"v":[[102.104,-125.156],[98.996,-126.303],[42.97,-125.942],[-22.751,-55.103],[-39.683,-36.559],[-2.441,-23.64],[10.263,-32.596]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"back_hand","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100.35,100.989,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[-0.25,-0.125],[-0.025,-2.374],[-0.007,-0.887],[-0.138,-0.414],[-1.25,6.25]],"o":[[0,0],[1.316,1.908],[0.012,1.14],[0.006,0.776],[0.625,1.875],[1.25,-6.25]],"v":[[-86.25,-17.625],[-90.375,-14.125],[-88.791,-7.173],[-88.81,-4.074],[-88.625,-2.25],[-85,-3.375]],"c":true}],"e":[{"i":[[0,0],[-0.242,0.14],[-1.995,-1.288],[-0.744,-0.483],[-0.422,-0.113],[3.983,4.976]],"o":[[0,0],[2.317,-0.045],[0.958,0.619],[0.65,0.423],[1.909,0.513],[-6.339,-7.918]],"v":[[-85.862,-120.899],[-81.968,-116.403],[-75.295,-113.889],[-72.721,-112.165],[-71.097,-111.313],[-70.036,-114.957]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[-0.242,0.14],[-1.995,-1.288],[-0.744,-0.483],[-0.422,-0.113],[3.983,4.976]],"o":[[0,0],[2.317,-0.045],[0.958,0.619],[0.65,0.423],[1.909,0.513],[-6.339,-7.918]],"v":[[-85.862,-120.899],[-81.968,-116.403],[-75.295,-113.889],[-72.721,-112.165],[-71.097,-111.313],[-70.036,-114.957]],"c":true}],"e":[{"i":[[0,0],[-0.242,0.14],[-1.995,-1.288],[-0.744,-0.483],[-0.422,-0.113],[3.983,4.976]],"o":[[0,0],[2.317,-0.045],[0.958,0.619],[0.65,0.423],[1.909,0.513],[-6.339,-7.918]],"v":[[-85.362,-167.399],[-81.468,-162.903],[-74.795,-160.389],[-72.221,-158.665],[-70.597,-157.813],[-69.536,-161.457]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[-0.242,0.14],[-1.995,-1.288],[-0.744,-0.483],[-0.422,-0.113],[3.983,4.976]],"o":[[0,0],[2.317,-0.045],[0.958,0.619],[0.65,0.423],[1.909,0.513],[-6.339,-7.918]],"v":[[-85.362,-167.399],[-81.468,-162.903],[-74.795,-160.389],[-72.221,-158.665],[-70.597,-157.813],[-69.536,-161.457]],"c":true}],"e":[{"i":[[0,0],[-0.081,0.268],[-1.34,0.397],[-0.545,-0.048],[-0.351,0.035],[6.311,0.893]],"o":[[0,0],[1.285,-3.861],[0.643,-0.191],[0.477,0.042],[1.966,-0.198],[-10.042,-1.42]],"v":[[-121.234,-177.894],[-114.317,-175.665],[-110.217,-181.232],[-108.416,-181.356],[-107.163,-181.285],[-109.388,-185.666]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[-0.081,0.268],[-1.34,0.397],[-0.545,-0.048],[-0.351,0.035],[6.311,0.893]],"o":[[0,0],[1.285,-3.861],[0.643,-0.191],[0.477,0.042],[1.966,-0.198],[-10.042,-1.42]],"v":[[-121.234,-177.894],[-114.317,-175.665],[-110.217,-181.232],[-108.416,-181.356],[-107.163,-181.285],[-109.388,-185.666]],"c":true}],"e":[{"i":[[0,0],[-0.081,0.268],[-0.477,0.869],[-0.218,0.225],[-0.229,0.268],[2.846,-0.594]],"o":[[0,0],[0.956,-3.729],[0.229,-0.417],[0.191,-0.197],[1.788,-2.09],[-4.987,1.041]],"v":[[-146.984,-193.769],[-141.567,-191.665],[-139.562,-197.876],[-138.907,-198.764],[-138.288,-199.41],[-139.888,-202.916]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[-0.081,0.268],[-0.477,0.869],[-0.218,0.225],[-0.229,0.268],[2.846,-0.594]],"o":[[0,0],[0.956,-3.729],[0.229,-0.417],[0.191,-0.197],[1.788,-2.09],[-4.987,1.041]],"v":[[-146.984,-193.769],[-141.567,-191.665],[-139.562,-197.876],[-138.907,-198.764],[-138.288,-199.41],[-139.888,-202.916]],"c":true}],"e":[{"i":[[0,0],[-0.085,0.266],[-0.131,1.534],[-0.026,0.612],[-0.019,0.394],[2.32,-1.906]],"o":[[0,0],[0.529,-1.657],[0.063,-0.737],[0.023,-0.535],[0.134,-2.747],[-3.549,2.916]],"v":[[-153.359,-195.519],[-148.379,-194.165],[-147.469,-199.093],[-147.345,-201.131],[-147.288,-202.535],[-148.263,-206.353]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[-0.085,0.266],[-0.131,1.534],[-0.026,0.612],[-0.019,0.394],[2.32,-1.906]],"o":[[0,0],[0.529,-1.657],[0.063,-0.737],[0.023,-0.535],[0.134,-2.747],[-3.549,2.916]],"v":[[-153.359,-195.519],[-148.379,-194.165],[-147.469,-199.093],[-147.345,-201.131],[-147.288,-202.535],[-148.263,-206.353]],"c":true}],"e":[{"i":[[0.766,-2.519],[-0.147,0.754],[0.301,1.896],[0.157,0.757],[0.064,0.56],[-0.174,-2.147]],"o":[[-0.766,2.519],[0.529,-2.709],[-0.144,-0.91],[-0.137,-0.662],[-0.44,-3.878],[0.348,4.28]],"v":[[-157.422,-197.582],[-153.004,-195.978],[-152.924,-202.836],[-153.405,-205.331],[-153.725,-207.16],[-156.638,-208.478]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0.766,-2.519],[-0.147,0.754],[0.301,1.896],[0.157,0.757],[0.064,0.56],[-0.174,-2.147]],"o":[[-0.766,2.519],[0.529,-2.709],[-0.144,-0.91],[-0.137,-0.662],[-0.44,-3.878],[0.348,4.28]],"v":[[-157.422,-197.582],[-153.004,-195.978],[-152.924,-202.836],[-153.405,-205.331],[-153.725,-207.16],[-156.638,-208.478]],"c":true}],"e":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-161.484,-197.019],[-156.629,-196.228],[-156.264,-202.193],[-156.652,-205.304],[-157.038,-207.41],[-161.201,-208.166]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-161.484,-197.019],[-156.629,-196.228],[-156.264,-202.193],[-156.652,-205.304],[-157.038,-207.41],[-161.201,-208.166]],"c":true}],"e":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-163.359,-197.019],[-158.504,-196.228],[-158.139,-202.193],[-158.527,-205.304],[-158.913,-207.41],[-163.076,-208.166]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-163.359,-197.019],[-158.504,-196.228],[-158.139,-202.193],[-158.527,-205.304],[-158.913,-207.41],[-163.076,-208.166]],"c":true}],"e":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-164.484,-197.644],[-159.629,-196.853],[-159.264,-202.818],[-159.652,-205.929],[-160.038,-208.035],[-164.201,-208.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-164.484,-197.644],[-159.629,-196.853],[-159.264,-202.818],[-159.652,-205.929],[-160.038,-208.035],[-164.201,-208.791]],"c":true}],"e":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-164.484,-197.644],[-159.629,-196.853],[-159.264,-202.818],[-159.652,-205.929],[-160.038,-208.035],[-164.201,-208.791]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0.766,-2.519],[-0.293,0.71],[0.2,2.27],[0.15,0.946],[0.117,0.552],[-0.487,-2.584]],"o":[[-0.766,2.519],[0.561,-1.361],[-0.096,-1.09],[-0.131,-0.827],[-1.025,-4.84],[0.795,4.22]],"v":[[-164.484,-197.644],[-159.629,-196.853],[-159.264,-202.818],[-159.652,-205.929],[-160.038,-208.035],[-164.201,-208.791]],"c":true}],"e":[{"i":[[2.422,-3.356],[-0.3,0.707],[0.189,1.81],[0.171,0.814],[0.146,0.643],[-0.487,-2.584]],"o":[[-1.541,2.135],[0.759,-1.788],[-0.091,-0.869],[-0.149,-0.712],[-1.237,-5.433],[0.795,4.22]],"v":[[-152.734,-197.644],[-146.067,-195.728],[-145.414,-201.211],[-145.829,-203.746],[-146.288,-205.785],[-150.388,-207.353]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[2.422,-3.356],[-0.3,0.707],[0.189,1.81],[0.171,0.814],[0.146,0.643],[-0.487,-2.584]],"o":[[-1.541,2.135],[0.759,-1.788],[-0.091,-0.869],[-0.149,-0.712],[-1.237,-5.433],[0.795,4.22]],"v":[[-152.734,-197.644],[-146.067,-195.728],[-145.414,-201.211],[-145.829,-203.746],[-146.288,-205.785],[-150.388,-207.353]],"c":true}],"e":[{"i":[[1.672,-2.606],[-0.3,0.707],[-0.057,1.859],[0.089,0.831],[0.146,0.643],[-0.044,-2.629]],"o":[[-1.422,2.216],[0.759,-1.788],[0.027,-0.892],[-0.078,-0.726],[-1.237,-5.433],[0.076,4.541]],"v":[[-139.297,-200.769],[-133.129,-198.54],[-131.971,-204.125],[-132.071,-206.722],[-132.413,-208.785],[-136.763,-210.041]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[1.672,-2.606],[-0.3,0.707],[-0.057,1.859],[0.089,0.831],[0.146,0.643],[-0.044,-2.629]],"o":[[-1.422,2.216],[0.759,-1.788],[0.027,-0.892],[-0.078,-0.726],[-1.237,-5.433],[0.076,4.541]],"v":[[-139.297,-200.769],[-133.129,-198.54],[-131.971,-204.125],[-132.071,-206.722],[-132.413,-208.785],[-136.763,-210.041]],"c":true}],"e":[{"i":[[3.504,-1.903],[-0.579,0.505],[-1.17,1.74],[-0.369,0.757],[-0.233,0.617],[1.602,-2.63]],"o":[[-2.314,1.257],[2.536,-2.214],[0.562,-0.835],[0.323,-0.662],[1.992,-5.273],[-2.595,4.26]],"v":[[-57.316,-155.534],[-54.256,-148.294],[-48.877,-154.179],[-47.5,-156.562],[-46.679,-158.477],[-49.218,-162.947]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[3.504,-1.903],[-0.579,0.505],[-1.17,1.74],[-0.369,0.757],[-0.233,0.617],[1.602,-2.63]],"o":[[-2.314,1.257],[2.536,-2.214],[0.562,-0.835],[0.323,-0.662],[1.992,-5.273],[-2.595,4.26]],"v":[[-57.316,-155.534],[-54.256,-148.294],[-48.877,-154.179],[-47.5,-156.562],[-46.679,-158.477],[-49.218,-162.947]],"c":true}],"e":[{"i":[[4.134,1.346],[-2.1,-0.293],[-1.552,0.311],[-0.689,0.28],[-0.562,0.345],[3.019,-0.61]],"o":[[-2.504,-0.815],[1.821,0.254],[0.745,-0.149],[0.602,-0.245],[3.513,-2.154],[-4.282,0.866]],"v":[[-22.071,-138.846],[-20.772,-131.67],[-15.722,-131.756],[-13.572,-132.4],[-11.826,-133.284],[-11.093,-138.303]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[4.134,1.346],[-2.1,-0.293],[-1.552,0.311],[-0.689,0.28],[-0.562,0.345],[3.019,-0.61]],"o":[[-2.504,-0.815],[1.821,0.254],[0.745,-0.149],[0.602,-0.245],[3.513,-2.154],[-4.282,0.866]],"v":[[-22.071,-138.846],[-20.772,-131.67],[-15.722,-131.756],[-13.572,-132.4],[-11.826,-133.284],[-11.093,-138.303]],"c":true}],"e":[{"i":[[-7.296,0.334],[2.096,0.317],[1.73,1.22],[-0.406,-1.196],[0.686,0.316],[-2.293,-2.056]],"o":[[2.631,-0.12],[-2.002,-0.303],[-2.738,-1.931],[0.338,0.994],[-2.97,-1.37],[3.17,2.843]],"v":[[-109.794,-65.564],[-111.367,-73.511],[-117.591,-76.109],[-119.297,-74.951],[-122.549,-75.219],[-123.171,-69.786]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-7.296,0.334],[2.096,0.317],[1.73,1.22],[-0.406,-1.196],[0.686,0.316],[-2.293,-2.056]],"o":[[2.631,-0.12],[-2.002,-0.303],[-2.738,-1.931],[0.338,0.994],[-2.97,-1.37],[3.17,2.843]],"v":[[-109.794,-65.564],[-111.367,-73.511],[-117.591,-76.109],[-119.297,-74.951],[-122.549,-75.219],[-123.171,-69.786]],"c":true}],"e":[{"i":[[-2.5,0.21],[-0.99,1.783],[1.384,1.602],[1.334,-0.243],[1.535,-1.213],[-2.052,-2.297]],"o":[[2.417,-0.203],[0.983,-1.77],[-2.364,-2.736],[-1.033,0.188],[-1.828,1.758],[0.974,1.09]],"v":[[-59.533,-83.573],[-55.437,-89.169],[-51.634,-92.324],[-58.821,-94.384],[-63.63,-92.114],[-65.124,-84.639]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-2.5,0.21],[-0.99,1.783],[1.384,1.602],[1.334,-0.243],[1.535,-1.213],[-2.052,-2.297]],"o":[[2.417,-0.203],[0.983,-1.77],[-2.364,-2.736],[-1.033,0.188],[-1.828,1.758],[0.974,1.09]],"v":[[-59.533,-83.573],[-55.437,-89.169],[-51.634,-92.324],[-58.821,-94.384],[-63.63,-92.114],[-65.124,-84.639]],"c":true}],"e":[{"i":[[-2.489,-0.314],[-0.686,1.92],[0.385,0.854],[1.334,0.252],[0.788,-2.017],[-1.518,-1.943]],"o":[[0.801,0.148],[0.069,-0.259],[-0.621,-1.374],[-1.032,-0.195],[-0.458,1.758],[0.9,1.152]],"v":[[-25.776,-125.1],[-23.113,-126.302],[-23.42,-128.714],[-27.181,-131.393],[-32.178,-130.052],[-27.568,-128.332]],"c":true}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"head_shadow","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[129.123,393.381,0],"e":[130.789,333.714,0],"to":[0.27777779102325,-9.94444465637207,0],"ti":[2.55555558204651,25.3888893127441,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[130.789,333.714,0],"e":[113.789,241.047,0],"to":[-2.55555558204651,-25.3888893127441,0],"ti":[6.16666650772095,22.2777786254883,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[113.789,241.047,0],"e":[93.789,200.047,0],"to":[-6.16666650772095,-22.2777786254883,0],"ti":[6.83333349227905,11.25,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[93.789,200.047,0],"e":[72.789,173.547,0],"to":[-6.83333349227905,-11.25,0],"ti":[6.19444465637207,5.36111116409302,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[72.789,173.547,0],"e":[56.623,167.881,0],"to":[-6.19444465637207,-5.36111116409302,0],"ti":[4.22222232818604,0.91666668653488,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[56.623,167.881,0],"e":[47.456,168.047,0],"to":[-4.22222232818604,-0.91666668653488,0],"ti":[4.02777767181396,-0.52777779102325,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[47.456,168.047,0],"e":[32.456,171.047,0],"to":[-4.02777767181396,0.52777779102325,0],"ti":[2.94444441795349,-0.77777779102325,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[32.456,171.047,0],"e":[29.789,172.714,0],"to":[-2.94444441795349,0.77777779102325,0],"ti":[0.88888889551163,-0.66666668653488,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[29.789,172.714,0],"e":[27.123,175.047,0],"to":[-0.88888889551163,0.66666668653488,0],"ti":[0.61111110448837,-0.55555558204651,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[27.123,175.047,0],"e":[26.123,176.047,0],"to":[-0.61111110448837,0.55555558204651,0],"ti":[0.5,-0.55555558204651,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[26.123,176.047,0],"e":[24.123,178.381,0],"to":[-0.5,0.55555558204651,0],"ti":[0.61111110448837,-0.61111110448837,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[24.123,178.381,0],"e":[22.456,179.714,0],"to":[-0.61111110448837,0.61111110448837,0],"ti":[0.27777779102325,-0.22222222387791,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[22.456,179.714,0],"e":[22.456,179.714,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[22.456,179.714,0],"e":[25.789,177.047,0],"to":[0.55555558204651,-0.44444444775581,0],"ti":[-3.38888883590698,3.88888883590698,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[25.789,177.047,0],"e":[42.789,156.381,0],"to":[3.38888883590698,-3.88888883590698,0],"ti":[-9,5.44444465637207,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[42.789,156.381,0],"e":[79.789,144.381,0],"to":[9,-5.44444465637207,0],"ti":[-16.8333339691162,2.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[79.789,144.381,0],"e":[143.789,141.381,0],"to":[16.8333339691162,-2.5,0],"ti":[-25.8333339691162,-4.77777767181396,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[143.789,141.381,0],"e":[234.789,173.047,0],"to":[25.8333339691162,4.77777767181396,0],"ti":[-15.1666669845581,-5.27777767181396,0]},{"t":19}]},"a":{"k":[-120.877,81.381,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":1,"s":[38,38,100],"e":[60,60,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":2,"s":[60,60,100],"e":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":9,"s":[95,95,100],"e":[95,95,100]},{"t":19}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[35.424,35.424]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-120.877,81.381],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"head","parent":21,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[129.123,393.381,0],"e":[130.789,333.714,0],"to":[0.27777779102325,-9.94444465637207,0],"ti":[2.55555558204651,25.3888893127441,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[130.789,333.714,0],"e":[113.789,241.047,0],"to":[-2.55555558204651,-25.3888893127441,0],"ti":[6.16666650772095,22.2777786254883,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[113.789,241.047,0],"e":[93.789,200.047,0],"to":[-6.16666650772095,-22.2777786254883,0],"ti":[6.83333349227905,11.25,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[93.789,200.047,0],"e":[72.789,173.547,0],"to":[-6.83333349227905,-11.25,0],"ti":[6.19444465637207,5.36111116409302,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[72.789,173.547,0],"e":[56.623,167.881,0],"to":[-6.19444465637207,-5.36111116409302,0],"ti":[4.22222232818604,0.91666668653488,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[56.623,167.881,0],"e":[47.456,168.047,0],"to":[-4.22222232818604,-0.91666668653488,0],"ti":[4.02777767181396,-0.52777779102325,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[47.456,168.047,0],"e":[32.456,171.047,0],"to":[-4.02777767181396,0.52777779102325,0],"ti":[2.94444441795349,-0.77777779102325,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[32.456,171.047,0],"e":[29.789,172.714,0],"to":[-2.94444441795349,0.77777779102325,0],"ti":[0.88888889551163,-0.66666668653488,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[29.789,172.714,0],"e":[27.123,175.047,0],"to":[-0.88888889551163,0.66666668653488,0],"ti":[0.61111110448837,-0.55555558204651,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[27.123,175.047,0],"e":[26.123,176.047,0],"to":[-0.61111110448837,0.55555558204651,0],"ti":[0.5,-0.55555558204651,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[26.123,176.047,0],"e":[24.123,178.381,0],"to":[-0.5,0.55555558204651,0],"ti":[0.61111110448837,-0.61111110448837,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[24.123,178.381,0],"e":[22.456,179.714,0],"to":[-0.61111110448837,0.61111110448837,0],"ti":[0.27777779102325,-0.22222222387791,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[22.456,179.714,0],"e":[22.456,179.714,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[22.456,179.714,0],"e":[25.789,177.047,0],"to":[0.55555558204651,-0.44444444775581,0],"ti":[-3.38888883590698,3.88888883590698,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[25.789,177.047,0],"e":[42.789,156.381,0],"to":[3.38888883590698,-3.88888883590698,0],"ti":[-9,5.44444465637207,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[42.789,156.381,0],"e":[79.789,144.381,0],"to":[9,-5.44444465637207,0],"ti":[-16.8333339691162,2.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[79.789,144.381,0],"e":[143.789,141.381,0],"to":[16.8333339691162,-2.5,0],"ti":[-25.8333339691162,-4.77777767181396,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[143.789,141.381,0],"e":[234.789,173.047,0],"to":[25.8333339691162,4.77777767181396,0],"ti":[-15.1666669845581,-5.27777767181396,0]},{"t":19}]},"a":{"k":[-120.877,81.381,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":1,"s":[38,38,100],"e":[60,60,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":2,"s":[60,60,100],"e":[95,95,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":9,"s":[95,95,100],"e":[95,95,100]},{"t":19}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[-1.471,-2.353]],"o":[[0,0],[1.381,2.21]],"v":[[-117.737,66.472],[-114.208,68.384]],"c":false}],"e":[{"i":[[0,0],[-0.84,-2.644]],"o":[[0,0],[0.789,2.484]],"v":[[-114.703,66.795],[-111.759,69.523]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[-0.84,-2.644]],"o":[[0,0],[0.789,2.484]],"v":[[-114.703,66.795],[-111.759,69.523]],"c":false}],"e":[{"i":[[0,0],[-0.795,-2.646]],"o":[[0,0],[0.75,2.496]],"v":[[-107.357,73.065],[-105.584,76.258]],"c":false}]},{"t":18}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[100],"e":[0]},{"t":19}],"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[-1.579,-2.368]],"o":[[0,0],[1.579,2.368]],"v":[[-123.024,71.331],[-116.971,74.489]],"c":false}],"e":[{"i":[[0,0],[-0.917,-2.695]],"o":[[0,0],[0.917,2.695]],"v":[[-118.435,71.693],[-113.398,76.301]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[-0.917,-2.695]],"o":[[0,0],[0.917,2.695]],"v":[[-118.435,71.693],[-113.398,76.301]],"c":false}],"e":[{"i":[[0,0],[0.321,-2.828]],"o":[[0,0],[-0.321,2.828]],"v":[[-111.711,74.771],[-109.122,81.088]],"c":false}]},{"t":18}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[100],"e":[0]},{"t":19}],"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[35.424,35.424]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-120.877,81.381],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":1,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":1,"nm":"ResizerTemp","parent":22,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":35,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":1,"nm":"White Solid 40","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":35,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":35,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/L.json b/example/shared/src/commonMain/composeResources/files/mobilo/L.json new file mode 100644 index 00000000..866b6500 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/L.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"triangle_light_blue","parent":18,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[0],"e":[-123]},{"t":17}]},"p":{"k":[34,308.937,0]},"a":{"k":[-15,-179.063,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":9,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":13,"s":[100,100,100],"e":[0,0,100]},{"t":17}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"k":3,"ix":3},"p":{"k":[0,0],"ix":4},"r":{"k":0,"ix":5},"or":{"k":16.279,"ix":7},"os":{"k":-10,"ix":9},"ix":1,"nm":"Polystar Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":7},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-15,-175],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1"}],"ip":9,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"triangle_white","parent":18,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[0],"e":[-123]},{"t":14}]},"p":{"k":[207.721,129.686,0]},"a":{"k":[5,-199.063,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[100,100,100],"e":[0,0,100]},{"t":14}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"k":3,"ix":3},"p":{"k":[0,0],"ix":4},"r":{"k":0,"ix":5},"or":{"k":16.279,"ix":7},"os":{"k":-10,"ix":9},"ix":1,"nm":"Polystar Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":9},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[5,-195],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1"}],"ip":6,"op":14,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"triangle_orange","parent":18,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[0],"e":[74]},{"t":15}]},"p":{"k":[153,490.937,0]},"a":{"k":[-15,-179.063,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[0,0,100],"e":[76.7,76.7,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":11,"s":[76.7,76.7,100],"e":[0,0,100]},{"t":15}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"k":3,"ix":3},"p":{"k":[0,0],"ix":4},"r":{"k":0,"ix":5},"or":{"k":16.279,"ix":7},"os":{"k":-10,"ix":9},"ix":1,"nm":"Polystar Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":4},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-15,-175],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1"}],"ip":7,"op":15,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"cell4","parent":18,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[-1.461,-14],[0.242,-20],[-2.402,-17],[-2.339,10.239],[-3.393,25.798],[-2.926,28.772],[9.085,0.226],[5.464,1]],"o":[[0,0],[1.08,10.351],[-0.266,21.987],[0.851,6.024],[2.039,-8.926],[3.952,-30.05],[3,-29.5],[-20.105,-0.5],[-5.464,-1]],"v":[[184.275,-100],[177.961,-51],[169.758,-8],[126.814,70],[161.906,37.411],[182.666,2.05],[210,-66.5],[201.605,-123.5],[193.725,-109.5]],"c":true}],"e":[{"i":[[0,0],[-1.461,-14],[0.242,-20],[-17.66,37],[-15.231,18.718],[-4.245,10.314],[-2.921,28.722],[9.085,0.226],[5.464,1]],"o":[[0,0],[1.08,10.351],[-0.266,21.987],[4.735,-9.921],[7.198,-8.846],[12.991,-31.566],[3,-29.5],[-20.105,-0.5],[-5.464,-1]],"v":[[205.401,-96],[199.087,-47],[148.045,15],[137.964,96],[181.896,68.282],[202.976,27.902],[249.906,-62.5],[223.905,-120.5],[214.852,-105.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[-1.461,-14],[0.242,-20],[-17.66,37],[-15.231,18.718],[-4.245,10.314],[-2.921,28.722],[9.085,0.226],[5.464,1]],"o":[[0,0],[1.08,10.351],[-0.266,21.987],[4.735,-9.921],[7.198,-8.846],[12.991,-31.566],[3,-29.5],[-20.105,-0.5],[-5.464,-1]],"v":[[205.401,-96],[199.087,-47],[148.045,15],[137.964,96],[181.896,68.282],[202.976,27.902],[249.906,-62.5],[223.905,-120.5],[214.852,-105.5]],"c":true}],"e":[{"i":[[14.088,-27],[11.128,-46.971],[0.242,-20],[-54.045,17],[1.827,16.795],[-4.245,10.314],[-9.638,56.262],[9.085,0.226],[0.974,-5.469]],"o":[[-14.088,27],[-3.08,13],[-0.266,21.987],[10.487,-3.299],[-1.593,-14.642],[12.991,-31.566],[8.308,-48.5],[-20.105,-0.5],[-8.281,46.5]],"v":[[191.317,-39],[114.581,-18],[176.8,-9],[186.673,103],[194.321,67.732],[194.76,26.902],[255.774,-65.5],[203.952,-119.5],[166.73,-104.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[14.088,-27],[11.128,-46.971],[0.242,-20],[-54.045,17],[1.827,16.795],[-4.245,10.314],[-9.638,56.262],[9.085,0.226],[0.974,-5.469]],"o":[[-14.088,27],[-3.08,13],[-0.266,21.987],[10.487,-3.299],[-1.593,-14.642],[12.991,-31.566],[8.308,-48.5],[-20.105,-0.5],[-8.281,46.5]],"v":[[191.317,-39],[114.581,-18],[176.8,-9],[186.673,103],[194.321,67.732],[194.76,26.902],[255.774,-65.5],[203.952,-119.5],[166.73,-104.5]],"c":true}],"e":[{"i":[[4.104,-26.5],[-1.461,-14],[0.242,-20],[-79.867,-15],[-4.01,46.184],[-9.556,42.817],[-20.864,71.917],[21.398,9.5],[16.811,-5.105]],"o":[[-5.497,35.491],[1.08,10.351],[-0.266,21.987],[48.916,9.187],[4.731,-54.487],[9.463,-42.402],[4.787,-16.5],[-18.381,-8.16],[-32.929,10]],"v":[[54.581,-65.5],[111.06,-35],[147.458,-9],[103.34,134],[190.103,83.487],[160.723,8.402],[247.558,-62.5],[208.647,-113.5],[133.867,-115]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[4.104,-26.5],[-1.461,-14],[0.242,-20],[-79.867,-15],[-4.01,46.184],[-9.556,42.817],[-20.864,71.917],[21.398,9.5],[16.811,-5.105]],"o":[[-5.497,35.491],[1.08,10.351],[-0.266,21.987],[48.916,9.187],[4.731,-54.487],[9.463,-42.402],[4.787,-16.5],[-18.381,-8.16],[-32.929,10]],"v":[[54.581,-65.5],[111.06,-35],[147.458,-9],[103.34,134],[190.103,83.487],[160.723,8.402],[247.558,-62.5],[208.647,-113.5],[133.867,-115]],"c":true}],"e":[{"i":[[0,0],[-10.184,-9.717],[1.602,-43],[-56.18,-7.329],[-1.574,21.443],[1.231,30.949],[-21.621,89],[21.155,10.029],[11.114,-18.017]],"o":[[0,0],[11.005,10.5],[-3.888,104.375],[49.827,6.5],[2.262,-30.814],[-2.861,-71.902],[6.182,-25.447],[-23.202,-11],[-19.431,31.5]],"v":[[32.281,-102],[59.417,-50.5],[92.294,-3],[61.674,98.5],[124.498,66.814],[102.038,-4.598],[240.516,-65.5],[208.647,-113.5],[83.985,-120.5]],"c":true}]},{"t":7}]},"nm":"Path 1"},{"ty":"tr","p":{"k":[27,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[85.201,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":3,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"cell3","parent":18,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[346.5,203,0]},"a":{"k":[96.5,-97,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6.756,0],[-14.83,-2.05],[0,-12.932],[10.048,1.715],[15.011,8.154],[0,23.481],[-4.929,0.352]],"o":[[7.793,0],[10.203,1.41],[0,15.773],[-11.506,-1.964],[-15.242,-8.279],[0,-20.095],[7.641,-0.545]],"v":[[-7.003,-14.3],[17.863,-31.217],[33.934,-7.058],[14.54,23.443],[-10.944,12.755],[-49.5,0.095],[-32.085,-24.058]],"c":true}],"e":[{"i":[[-5.8,0],[-10.863,3.877],[0,-7.083],[8.627,0.939],[12.909,4.402],[-0.934,-36.321],[-26.024,5.718]],"o":[[6.69,0],[8.282,-2.956],[0,8.639],[-9.878,-1.075],[-15.755,-5.373],[-18.368,-17.821],[6.414,-1.409]],"v":[[-64.877,-2.516],[-48.599,-9.877],[-35.425,0.355],[-48.962,13.061],[-65.5,7.373],[-82.5,65.821],[-91.033,-34.218]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-5.8,0],[-10.863,3.877],[0,-7.083],[8.627,0.939],[12.909,4.402],[-0.934,-36.321],[-26.024,5.718]],"o":[[6.69,0],[8.282,-2.956],[0,8.639],[-9.878,-1.075],[-15.755,-5.373],[-18.368,-17.821],[6.414,-1.409]],"v":[[-64.877,-2.516],[-48.599,-9.877],[-35.425,0.355],[-48.962,13.061],[-65.5,7.373],[-82.5,65.821],[-91.033,-34.218]],"c":true}],"e":[{"i":[[-2.88,0],[-5.884,-13.371],[-0.311,-16.5],[-3.308,-16.665],[-1.712,-44.664],[0,7.271],[-3.422,2.385]],"o":[[2.982,0],[3.557,8.084],[0.274,14.497],[8.539,43.022],[-14.165,-17.164],[0,-4.438],[2.184,-1.522]],"v":[[-112.075,-33.164],[-100.378,-23.084],[-91.84,-2],[-100.067,40.478],[-94.486,148.664],[-121.104,-1],[-115.448,-11.749]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-2.88,0],[-5.884,-13.371],[-0.311,-16.5],[-3.308,-16.665],[-1.712,-44.664],[0,7.271],[-3.422,2.385]],"o":[[2.982,0],[3.557,8.084],[0.274,14.497],[8.539,43.022],[-14.165,-17.164],[0,-4.438],[2.184,-1.522]],"v":[[-112.075,-33.164],[-100.378,-23.084],[-91.84,-2],[-100.067,40.478],[-94.486,148.664],[-121.104,-1],[-115.448,-11.749]],"c":true}],"e":[{"i":[[-2.88,0],[-4.381,-6.666],[0,-4.338],[-0.022,-6.978],[-1.774,-19.914],[0,7.271],[-3.422,2.385]],"o":[[2.982,0],[2.237,3.403],[0,4.927],[0.053,16.567],[-7.391,-0.197],[0,-4.439],[2.184,-1.522]],"v":[[-118.302,-30.664],[-109.718,-14.334],[-104.604,8.75],[-108.473,35.478],[-107.188,75.414],[-129.821,2],[-124.165,-8.749]],"c":true}]},{"t":11}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[133.5,-96],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[160.606,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":8,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"cell2","parent":18,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[250,300,0],"e":[170,261,0],"to":[-13.3333330154419,-6.5,0],"ti":[23.3333339691162,4,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[170,261,0],"e":[110,276,0],"to":[-23.3333339691162,-4,0],"ti":[10,-2.5,0]},{"t":10}]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[100,100,100],"e":[100,74,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":9,"s":[100,74,100],"e":[100,118,100]},{"t":10}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[23,18]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[108.5,-34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":8,"op":11,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"cell1","parent":18,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[1],"e":[-4]},{"t":10}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[386.5,304,0],"e":[232,287,0],"to":[-19.75,-18.5,0],"ti":[36.75,-18.5,0]},{"t":10}]},"a":{"k":[108.5,-34,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[200,100,100],"e":[234,74,100]},{"t":10}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6.351,0],[0,-7.116],[6.351,0],[0,7.116]],"o":[[6.351,0],[0,7.116],[-6.351,0],[0,-7.116]],"v":[[1,-3.884],[11.5,-3.884],[0,9],[-11.5,-3.884]],"c":true}],"e":[{"i":[[-7.021,-1.19],[-0.16,-8.875],[6.58,2.372],[0.416,4.953]],"o":[[6.262,1.061],[0.193,10.656],[-5.904,-2.128],[-0.802,-9.538]],"v":[[0.984,-2.299],[18.574,-9.764],[0.463,2.767],[-12.59,8.957]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-7.021,-1.19],[-0.16,-8.875],[6.58,2.372],[0.416,4.953]],"o":[[6.262,1.061],[0.193,10.656],[-5.904,-2.128],[-0.802,-9.538]],"v":[[0.984,-2.299],[18.574,-9.764],[0.463,2.767],[-12.59,8.957]],"c":true}],"e":[{"i":[[-0.302,-6.344],[-1.187,-19.148],[-1.717,-95.564],[0,4.971]],"o":[[2.388,50.194],[1.187,19.148],[0.971,54.042],[0,-4.971]],"v":[[-1.735,-21.602],[12.076,20.36],[-0.149,141.21],[-12.877,-15.206]],"c":true}]},{"t":10}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[108.5,-34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":8,"op":11,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"stroke_circle_orange","parent":16,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[100],"e":[0]},{"t":21}]},"r":{"k":0},"p":{"k":[155,56,0]},"a":{"k":[182,120,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":14,"s":[10,10,100],"e":[100,100,100]},{"t":21}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[30,30]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":7.4},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[182,120],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":14,"op":21,"st":-4,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"stroke_circle_light_blue","parent":16,"ks":{"o":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[100],"e":[0]},{"t":24}]},"r":{"k":0},"p":{"k":[221,10,0]},"a":{"k":[182,120,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":17,"s":[10,10,100],"e":[100,100,100]},{"t":24}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[30,30]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":7.4},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[182,120],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":17,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"stroke_semi_circle_orange","parent":16,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[52],"e":[7]},{"t":20}]},"p":{"k":[34,-55,0]},"a":{"k":[-38,119,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":3,"ty":"el","s":{"k":[328,328]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":7.4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-38,119],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[32],"e":[66]},{"t":20}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":9,"s":[32],"e":[66]},{"t":15}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":9,"op":20,"st":9,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"stroke_semi_circle_light_blue","parent":16,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[52],"e":[-19]},{"t":19}]},"p":{"k":[32,-55,0]},"a":{"k":[-38,119,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":3,"ty":"el","s":{"k":[400,400]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":7.4},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-38,119],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":12,"s":[32],"e":[66]},{"t":19}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":8,"s":[32],"e":[66]},{"t":14}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":8,"op":19,"st":8,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"stroke_semi_circle_white","parent":16,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[177],"e":[-14]},{"t":17}]},"p":{"k":[32,-55,0]},"a":{"k":[-38,119,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":3,"ty":"el","s":{"k":[430,430]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":12},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-38,119],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":10,"s":[32],"e":[66]},{"t":17}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":6,"s":[32],"e":[66]},{"t":12}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":6,"op":17,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"L_down_dark_blue","parent":16,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.164],"y":[0.248]},"n":["0p667_1_0p164_0p248"],"t":10,"s":[265],"e":[-15.441]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.4],"y":[0]},"n":["0p667_1_0p4_0"],"t":18,"s":[-15.441],"e":[8.796]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":23,"s":[8.796],"e":[0]},{"t":25}]},"p":{"k":[-1.457,-4,0]},"a":{"k":[-51.457,0,0]},"s":{"k":[{"i":{"x":[0.667,0.505,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.14,0.333],"y":[0.333,0.203,0.333]},"n":["0p667_0p667_0p333_0p333","0p505_1_0p14_0p203","0p667_0p667_0p333_0p333"],"t":10,"s":[100,0,100],"e":[100,180,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.458,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p458_0","0p667_0p667_0p333_0p333"],"t":15,"s":[100,180,100],"e":[100,100,100]},{"t":23}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-51.457,-41.995],[-51.457,0],[26.048,0],[71.507,0],[71.507,-41.995],[14.441,-41.995]],"c":true}],"e":[{"i":[[0,0],[0,0],[-15.605,0.991],[0,0],[0,0],[18.545,-1.393]],"o":[[0,0],[0,0],[15.178,-0.964],[0,0],[0,0],[-16.955,1.273]],"v":[[-30.278,-32.891],[-65.971,17.958],[19.277,5.406],[71.255,2.353],[71.426,-39.953],[17.638,-36.604]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[-15.605,0.991],[0,0],[0,0],[18.545,-1.393]],"o":[[0,0],[0,0],[15.178,-0.964],[0,0],[0,0],[-16.955,1.273]],"v":[[-30.278,-32.891],[-65.971,17.958],[19.277,5.406],[71.255,2.353],[71.426,-39.953],[17.638,-36.604]],"c":true}],"e":[{"i":[[0,0],[0,0],[-25.782,5.285],[0,0],[0,0],[35.943,-8.751]],"o":[[0,0],[0,0],[29.363,-6.019],[0,0],[0,0],[-35.943,8.751]],"v":[[-57.449,-0.855],[-16.235,6.922],[18.463,-11.162],[72.288,-6.158],[72.898,-32.862],[3.007,-33.261]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[-25.782,5.285],[0,0],[0,0],[35.943,-8.751]],"o":[[0,0],[0,0],[29.363,-6.019],[0,0],[0,0],[-35.943,8.751]],"v":[[-57.449,-0.855],[-16.235,6.922],[18.463,-11.162],[72.288,-6.158],[72.898,-32.862],[3.007,-33.261]],"c":true}],"e":[{"i":[[0,0],[0,0],[-29.127,4.055],[0,0],[0,0],[37.836,-4.265]],"o":[[0,0],[0,0],[23.338,-3.249],[0,0],[0,0],[-32.662,4.85]],"v":[[-73.079,-14.476],[-38.48,17.74],[8.819,3.635],[70.751,7.06],[71.265,-35.868],[13.389,-36.034]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[-29.127,4.055],[0,0],[0,0],[37.836,-4.265]],"o":[[0,0],[0,0],[23.338,-3.249],[0,0],[0,0],[-32.662,4.85]],"v":[[-73.079,-14.476],[-38.48,17.74],[8.819,3.635],[70.751,7.06],[71.265,-35.868],[13.389,-36.034]],"c":true}],"e":[{"i":[[0,0],[0,0],[-28.508,0.857],[0,0],[0,0],[37.053,0]],"o":[[0,0],[0,0],[32.048,0.086],[0,0],[0,0],[-37.053,0]],"v":[[-71.714,-22.674],[-50.646,5.392],[6.6,-6.665],[70.5,9.414],[74.791,-26.592],[7.963,-38.133]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[-28.508,0.857],[0,0],[0,0],[37.053,0]],"o":[[0,0],[0,0],[32.048,0.086],[0,0],[0,0],[-37.053,0]],"v":[[-71.714,-22.674],[-50.646,5.392],[6.6,-6.665],[70.5,9.414],[74.791,-26.592],[7.963,-38.133]],"c":true}],"e":[{"i":[[0,0],[0,0],[-27.889,-2.341],[0,0],[0,0],[41.857,1.586]],"o":[[0,0],[0,0],[40.758,3.421],[0,0],[0,0],[-38.281,-1.45]],"v":[[-61.426,-35.713],[-51.457,0],[10.03,-3.866],[70.248,11.767],[71.103,-31.783],[8.055,-41.733]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[-27.889,-2.341],[0,0],[0,0],[41.857,1.586]],"o":[[0,0],[0,0],[40.758,3.421],[0,0],[0,0],[-38.281,-1.45]],"v":[[-61.426,-35.713],[-51.457,0],[10.03,-3.866],[70.248,11.767],[71.103,-31.783],[8.055,-41.733]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-51.457,-41.995],[-51.457,0],[26.048,0],[71.507,0],[71.507,-41.995],[14.441,-41.995]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-51.457,-41.995],[-51.457,0],[26.048,0],[71.507,0],[71.507,-41.995],[14.441,-41.995]],"c":true}],"e":[{"i":[[0,0],[0,0],[-29.557,0],[0,0],[0,0],[22.142,0]],"o":[[0,0],[0,0],[29.557,0],[0,0],[0,0],[-30.576,0]],"v":[[-20.513,-42.964],[-51.457,0],[19.91,5.135],[72.004,2.386],[71.507,-41.995],[28.802,-40.095]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[-29.557,0],[0,0],[0,0],[22.142,0]],"o":[[0,0],[0,0],[29.557,0],[0,0],[0,0],[-30.576,0]],"v":[[-20.513,-42.964],[-51.457,0],[19.91,5.135],[72.004,2.386],[71.507,-41.995],[28.802,-40.095]],"c":true}],"e":[{"i":[[0,0],[0,0],[-42.314,-1.068],[0,0],[0,0],[26.578,-0.442]],"o":[[0,0],[0,0],[34.155,0.862],[0,0],[0,0],[-26.578,0.442]],"v":[[-24.381,-42.843],[-51.457,0],[21.644,9.826],[86.498,1.285],[71.507,-41.995],[25.424,-34.404]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[-42.314,-1.068],[0,0],[0,0],[26.578,-0.442]],"o":[[0,0],[0,0],[34.155,0.862],[0,0],[0,0],[-26.578,0.442]],"v":[[-24.381,-42.843],[-51.457,0],[21.644,9.826],[86.498,1.285],[71.507,-41.995],[25.424,-34.404]],"c":true}],"e":[{"i":[[0,0],[0,0],[-36.269,-0.916],[0,0],[0,0],[22.781,-0.379]],"o":[[0,0],[0,0],[29.275,0.739],[0,0],[0,0],[-22.781,0.379]],"v":[[-28.249,-42.721],[-51.457,0],[21.953,9.337],[84.357,1.102],[71.507,-41.995],[23.855,-35.488]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0],[-36.269,-0.916],[0,0],[0,0],[22.781,-0.379]],"o":[[0,0],[0,0],[29.275,0.739],[0,0],[0,0],[-22.781,0.379]],"v":[[-28.249,-42.721],[-51.457,0],[21.953,9.337],[84.357,1.102],[71.507,-41.995],[23.855,-35.488]],"c":true}],"e":[{"i":[[0,0],[0,0],[-32.329,0],[0,0],[0,0],[11.391,-0.189]],"o":[[0,0],[0,0],[32.329,0],[0,0],[0,0],[-11.391,0.189]],"v":[[-39.853,-42.358],[-51.457,0],[24.001,4.669],[77.932,0.551],[71.507,-41.995],[19.148,-38.742]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0],[-32.329,0],[0,0],[0,0],[11.391,-0.189]],"o":[[0,0],[0,0],[32.329,0],[0,0],[0,0],[-11.391,0.189]],"v":[[-39.853,-42.358],[-51.457,0],[24.001,4.669],[77.932,0.551],[71.507,-41.995],[19.148,-38.742]],"c":true}],"e":[{"i":[[0,0],[0,0],[-22.035,0],[0,0],[0,0],[3.797,-0.063]],"o":[[0,0],[0,0],[22.035,0],[0,0],[0,0],[-3.797,0.063]],"v":[[-47.589,-42.116],[-51.457,0],[25.461,2.803],[73.649,0.184],[71.507,-41.995],[16.01,-40.911]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0,0],[0,0],[-22.035,0],[0,0],[0,0],[3.797,-0.063]],"o":[[0,0],[0,0],[22.035,0],[0,0],[0,0],[-3.797,0.063]],"v":[[-47.589,-42.116],[-51.457,0],[25.461,2.803],[73.649,0.184],[71.507,-41.995],[16.01,-40.911]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-51.457,-41.995],[-51.457,0],[26.048,0],[71.507,0],[71.507,-41.995],[14.441,-41.995]],"c":true}]},{"t":25}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-54.455,-34.192],[-52.283,18.884],[-13.504,24.771],[13.121,7.776],[68.467,7.776],[68.467,-34.219]],"c":true}},"nm":"L"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[161,161],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"L"}],"ip":10,"op":37,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"L_side_dark_blue","parent":16,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.353],"y":[1]},"o":{"x":[0.125],"y":[0.254]},"n":["0p353_1_0p125_0p254"],"t":2,"s":[0],"e":[8.031]},{"i":{"x":[0.575],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p575_1_0p333_0"],"t":4,"s":[8.031],"e":[-8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.542],"y":[0]},"n":["0p667_1_0p542_0"],"t":10.4,"s":[-8],"e":[1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[1],"e":[0]},{"t":20}]},"p":{"k":[{"i":{"x":0.098,"y":1},"o":{"x":0.333,"y":0},"n":"0p098_1_0p333_0","t":2,"s":[202.108,-4,0],"e":[22.108,-4,0],"to":[92.2331924438477,0,0],"ti":[-125.636123657227,0,0]},{"t":12.400390625}]},"a":{"k":[-27.892,0,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0,0.167,0.167]},"n":["0p667_1_0p167_0","0p667_0p667_0p167_0p167","0p667_0p667_0p167_0p167"],"t":2,"s":[0,100,100],"e":[252,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0.333,0.333]},"n":["0p667_1_0p333_0","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":7,"s":[252,100,100],"e":[100,100,100]},{"t":12.400390625}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[3.47,26.064],[1.003,-13.99],[12.611,-68.579],[-2.57,-22.162],[0,0],[-8.785,40.076],[8.178,41.626]],"o":[[-3.47,-26.064],[-1.149,16.02],[-7.848,42.678],[1.56,13.45],[0,0],[11.02,-50.267],[-9.591,-48.816]],"v":[[-4.326,-226.593],[-55.334,-224.968],[-51.457,-123.528],[-54.816,-21.288],[-51.457,0],[-4.493,0],[-6.758,-113.63]],"c":true}],"e":[{"i":[[3.47,26.064],[1.558,-25.465],[18.933,-67.109],[-5.588,-16.574],[-3.526,-8.686],[-8.785,40.076],[8.178,41.626]],"o":[[-3.47,-26.064],[-1.745,28.523],[-11.663,41.341],[3.391,10.059],[5.532,13.626],[11.02,-50.267],[-9.591,-48.816]],"v":[[-4.326,-226.593],[-56.073,-214.867],[-59.337,-117.768],[-63.196,-37.443],[-51.645,-10.79],[-4.493,0],[-8.413,-116.217]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[3.47,26.064],[1.558,-25.465],[18.933,-67.109],[-5.588,-16.574],[-3.526,-8.686],[-8.785,40.076],[8.178,41.626]],"o":[[-3.47,-26.064],[-1.745,28.523],[-11.663,41.341],[3.391,10.059],[5.532,13.626],[11.02,-50.267],[-9.591,-48.816]],"v":[[-4.326,-226.593],[-56.073,-214.867],[-59.337,-117.768],[-63.196,-37.443],[-51.645,-10.79],[-4.493,0],[-8.413,-116.217]],"c":true}],"e":[{"i":[[-1.001,26.275],[1.188,-17.815],[14.718,-68.089],[-3.576,-20.3],[-1.175,-2.895],[-10.488,49.102],[8.178,41.626]],"o":[[0.969,-25.418],[-1.348,20.188],[-9.12,42.232],[2.17,12.32],[1.844,4.542],[10.749,-50.325],[-9.591,-48.816]],"v":[[-2.243,-201.316],[-55.58,-221.601],[-54.084,-121.608],[-57.609,-26.673],[-51.52,-3.597],[-12.112,-12.374],[-11.723,-121.391]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-1.001,26.275],[1.188,-17.815],[14.718,-68.089],[-3.576,-20.3],[-1.175,-2.895],[-10.488,49.102],[8.178,41.626]],"o":[[0.969,-25.418],[-1.348,20.188],[-9.12,42.232],[2.17,12.32],[1.844,4.542],[10.749,-50.325],[-9.591,-48.816]],"v":[[-2.243,-201.316],[-55.58,-221.601],[-54.084,-121.608],[-57.609,-26.673],[-51.52,-3.597],[-12.112,-12.374],[-11.723,-121.391]],"c":true}],"e":[{"i":[[3.47,26.064],[1.003,-13.99],[12.611,-68.579],[-2.57,-22.162],[0,0],[-8.785,40.076],[8.178,41.626]],"o":[[-3.47,-26.064],[-1.149,16.02],[-7.848,42.678],[1.56,13.45],[0,0],[11.02,-50.267],[-9.591,-48.816]],"v":[[-4.326,-226.593],[-55.334,-224.968],[-51.457,-123.528],[-54.816,-21.288],[-51.457,0],[-4.493,0],[-13.378,-123.978]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[3.47,26.064],[1.003,-13.99],[12.611,-68.579],[-2.57,-22.162],[0,0],[-8.785,40.076],[8.178,41.626]],"o":[[-3.47,-26.064],[-1.149,16.02],[-7.848,42.678],[1.56,13.45],[0,0],[11.02,-50.267],[-9.591,-48.816]],"v":[[-4.326,-226.593],[-55.334,-224.968],[-51.457,-123.528],[-54.816,-21.288],[-51.457,0],[-4.493,0],[-13.378,-123.978]],"c":true}],"e":[{"i":[[5.028,6.595],[3.896,-7.735],[0,-39.964],[2.727,-23.759],[-2.112,-11.718],[4.399,28.951],[-2.355,24.474]],"o":[[-5.028,-6.595],[-3.896,7.735],[0,24.87],[-1.655,14.419],[2.516,13.962],[-10.234,-67.36],[3.598,-37.386]],"v":[[-4.326,-226.593],[-51.457,-226.593],[-45.75,-120.171],[-53.872,-45.291],[-54.088,-5.652],[-5.819,-11.385],[-3.913,-129.252]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[5.028,6.595],[3.896,-7.735],[0,-39.964],[2.727,-23.759],[-2.112,-11.718],[4.399,28.951],[-2.355,24.474]],"o":[[-5.028,-6.595],[-3.896,7.735],[0,24.87],[-1.655,14.419],[2.516,13.962],[-10.234,-67.36],[3.598,-37.386]],"v":[[-4.326,-226.593],[-51.457,-226.593],[-45.75,-120.171],[-53.872,-45.291],[-54.088,-5.652],[-5.819,-11.385],[-3.913,-129.252]],"c":true}],"e":[{"i":[[0,0],[7.014,-6.662],[0,-39.18],[-3.89,-25.385],[-3.467,-3.467],[-4.994,11.748],[0,0]],"o":[[0,0],[-7.014,6.662],[0,20.609],[3.505,22.874],[7.314,7.314],[4.994,-11.748],[0,0]],"v":[[-4.326,-226.593],[-51.457,-226.593],[-69.542,-121.562],[-51.946,-47.65],[-51.457,0],[-4.054,2.118],[-4.397,-129.366]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[7.014,-6.662],[0,-39.18],[-3.89,-25.385],[-3.467,-3.467],[-4.994,11.748],[0,0]],"o":[[0,0],[-7.014,6.662],[0,20.609],[3.505,22.874],[7.314,7.314],[4.994,-11.748],[0,0]],"v":[[-4.326,-226.593],[-51.457,-226.593],[-69.542,-121.562],[-51.946,-47.65],[-51.457,0],[-4.054,2.118],[-4.397,-129.366]],"c":true}],"e":[{"i":[[2.125,5.911],[6.776,-5.466],[-3.424,-42.933],[-5.182,-39.435],[-3.12,-3.12],[-4.494,10.573],[0,0]],"o":[[-2.125,-5.911],[-21.113,17.033],[2.394,30.025],[2.713,20.649],[6.582,6.582],[4.494,-10.573],[0,0]],"v":[[-5.639,-223.791],[-51.426,-219.522],[-84.182,-129.635],[-42.662,-50.299],[-51.457,0],[-4.098,1.906],[-4.397,-129.366]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[2.125,5.911],[6.776,-5.466],[-3.424,-42.933],[-5.182,-39.435],[-3.12,-3.12],[-4.494,10.573],[0,0]],"o":[[-2.125,-5.911],[-21.113,17.033],[2.394,30.025],[2.713,20.649],[6.582,6.582],[4.494,-10.573],[0,0]],"v":[[-5.639,-223.791],[-51.426,-219.522],[-84.182,-129.635],[-42.662,-50.299],[-51.457,0],[-4.098,1.906],[-4.397,-129.366]],"c":true}],"e":[{"i":[[26.53,20.045],[6.023,-4.859],[-4.96,-45.859],[-5.991,-42.021],[-2.773,-2.773],[-3.995,9.399],[-3.195,56.736]],"o":[[-15.176,-11.466],[-18.767,15.14],[4.861,44.948],[2.613,18.327],[5.851,5.851],[3.995,-9.399],[3.195,-56.736]],"v":[[-0.623,-220.122],[-39.452,-221.929],[-65.47,-128.643],[-39.426,-51.632],[-42.183,0.579],[5.132,2.274],[18.199,-129.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[26.53,20.045],[6.023,-4.859],[-4.96,-45.859],[-5.991,-42.021],[-2.773,-2.773],[-3.995,9.399],[-3.195,56.736]],"o":[[-15.176,-11.466],[-18.767,15.14],[4.861,44.948],[2.613,18.327],[5.851,5.851],[3.995,-9.399],[3.195,-56.736]],"v":[[-0.623,-220.122],[-39.452,-221.929],[-65.47,-128.643],[-39.426,-51.632],[-42.183,0.579],[5.132,2.274],[18.199,-129.245]],"c":true}],"e":[{"i":[[15.572,10.171],[5.772,-4.657],[-4.753,-43.949],[-5.741,-40.27],[-2.658,-2.658],[-3.828,9.007],[-3.016,57.604]],"o":[[-7.924,-5.176],[-17.985,14.509],[4.659,43.076],[2.504,17.564],[5.607,5.607],[3.828,-9.007],[3.016,-57.604]],"v":[[-2.852,-220.986],[-40.886,-223.186],[-69.863,-128.791],[-52.524,-52.613],[-51.457,0],[1.887,0.317],[14.39,-129.779]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[15.572,10.171],[5.772,-4.657],[-4.753,-43.949],[-5.741,-40.27],[-2.658,-2.658],[-3.828,9.007],[-3.016,57.604]],"o":[[-7.924,-5.176],[-17.985,14.509],[4.659,43.076],[2.504,17.564],[5.607,5.607],[3.828,-9.007],[3.016,-57.604]],"v":[[-2.852,-220.986],[-40.886,-223.186],[-69.863,-128.791],[-52.524,-52.613],[-51.457,0],[1.887,0.317],[14.39,-129.779]],"c":true}],"e":[{"i":[[7.284,3.607],[4.474,-7.496],[-2.789,-33.477],[-2.634,-25.281],[-5.09,-3.455],[-1.697,27.839],[-3.798,62.729]],"o":[[-6.66,-3.298],[-12.842,19.783],[2.793,34.473],[0.818,18.247],[6.564,4.929],[1.549,-43.685],[2.798,-47.908]],"v":[[-2.597,-224.102],[-49.622,-221.884],[-60.66,-126.16],[-53.053,-50.066],[-50.442,0.984],[-0.194,-24.862],[14.685,-150.122]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[7.284,3.607],[4.474,-7.496],[-2.789,-33.477],[-2.634,-25.281],[-5.09,-3.455],[-1.697,27.839],[-3.798,62.729]],"o":[[-6.66,-3.298],[-12.842,19.783],[2.793,34.473],[0.818,18.247],[6.564,4.929],[1.549,-43.685],[2.798,-47.908]],"v":[[-2.597,-224.102],[-49.622,-221.884],[-60.66,-126.16],[-53.053,-50.066],[-50.442,0.984],[-0.194,-24.862],[14.685,-150.122]],"c":true}],"e":[{"i":[[14.089,8.109],[3.175,-10.335],[-0.825,-23.005],[0.472,-10.292],[-7.522,-4.251],[0.435,46.672],[-4.58,67.854]],"o":[[-15.773,-9.079],[-7.698,25.057],[0.927,25.87],[-0.868,18.931],[7.522,4.251],[-0.73,-78.364],[2.579,-38.212]],"v":[[5.738,-222.268],[-51.316,-217.594],[-51.457,-123.528],[-53.582,-47.519],[-49.426,1.969],[-2.275,-50.041],[14.98,-170.465]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[14.089,8.109],[3.175,-10.335],[-0.825,-23.005],[0.472,-10.292],[-7.522,-4.251],[0.435,46.672],[-4.58,67.854]],"o":[[-15.773,-9.079],[-7.698,25.057],[0.927,25.87],[-0.868,18.931],[7.522,4.251],[-0.73,-78.364],[2.579,-38.212]],"v":[[5.738,-222.268],[-51.316,-217.594],[-51.457,-123.528],[-53.582,-47.519],[-49.426,1.969],[-2.275,-50.041],[14.98,-170.465]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-4.326,-226.593],[-51.457,-226.593],[-51.457,-123.528],[-51.457,-39.551],[-51.457,0],[-4.493,0],[-4.397,-129.366]],"c":true}]},{"t":18}]},"nm":"L"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"L"}],"ip":2,"op":37,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"L_side_dark_orange","parent":16,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.353],"y":[1]},"o":{"x":[0.125],"y":[0.254]},"n":["0p353_1_0p125_0p254"],"t":0,"s":[0],"e":[8.031]},{"i":{"x":[0.575],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p575_1_0p333_0"],"t":2,"s":[8.031],"e":[-8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.542],"y":[0]},"n":["0p667_1_0p542_0"],"t":8.4,"s":[-8],"e":[1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[1],"e":[0]},{"t":18}]},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[202.108,-4,0],"e":[22.108,-4,0],"to":[92.2331924438477,0,0],"ti":[-125.636123657227,0,0]},{"t":10.400390625}]},"a":{"k":[-27.892,0,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0,0.167,0.167]},"n":["0p667_1_0p167_0","0p667_0p667_0p167_0p167","0p667_0p667_0p167_0p167"],"t":0,"s":[0,100,100],"e":[328.8,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,0.667,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0.333,0.333]},"n":["0p667_1_0p333_0","0p667_0p667_0p333_0p333","0p667_0p667_0p333_0p333"],"t":5,"s":[328.8,100,100],"e":[100,100,100]},{"t":10.400390625}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[3.177,19.767],[0,0],[0,0],[0,0],[-7.48,43.926],[0.289,48.674]],"o":[[-6.787,-42.231],[0,0],[0,0],[0,0],[3.979,-23.365],[-0.254,-42.831]],"v":[[-4.326,-226.593],[-51.457,-226.593],[-51.457,-132.718],[-51.457,0],[-4.493,0],[0.91,-122.711]],"c":true}],"e":[{"i":[[-0.583,11.813],[6.544,-45.247],[0.31,-41.416],[-3.136,-6.622],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.711,18.742],[-0.439,58.568],[5.354,11.305],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-51.457,-226.593],[-60.408,-124.844],[-51.457,0],[-4.493,0],[-7.13,-117.83]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[-0.583,11.813],[6.544,-45.247],[0.31,-41.416],[-3.136,-6.622],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.711,18.742],[-0.439,58.568],[5.354,11.305],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-51.457,-226.593],[-60.408,-124.844],[-51.457,0],[-4.493,0],[-7.13,-117.83]],"c":true}],"e":[{"i":[[-0.583,11.813],[1.793,-45.682],[0.31,-41.416],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[-0.439,58.568],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-49.232,-227.286],[-67.531,-124.936],[-51.457,0],[-4.493,0],[-1.011,-125.508]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-0.583,11.813],[1.793,-45.682],[0.31,-41.416],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[-0.439,58.568],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-49.232,-227.286],[-67.531,-124.936],[-51.457,0],[-4.493,0],[-1.011,-125.508]],"c":true}],"e":[{"i":[[-0.583,11.813],[1.793,-45.682],[0.31,-41.416],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[-0.439,58.568],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-43.604,-213.992],[-67.531,-124.936],[-43.612,1.735],[-4.493,0],[-1.011,-125.508]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[-0.583,11.813],[1.793,-45.682],[0.31,-41.416],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[-0.439,58.568],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-43.604,-213.992],[-67.531,-124.936],[-43.612,1.735],[-4.493,0],[-1.011,-125.508]],"c":true}],"e":[{"i":[[-0.583,11.813],[1.793,-45.682],[-0.132,-41.417],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[0.295,92.398],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-43.41,-199.609],[-73.34,-124.204],[-38.717,-1.253],[-4.493,0],[-1.011,-125.508]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-0.583,11.813],[1.793,-45.682],[-0.132,-41.417],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[0.295,92.398],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-4.299,-220.867],[-43.41,-199.609],[-73.34,-124.204],[-38.717,-1.253],[-4.493,0],[-1.011,-125.508]],"c":true}],"e":[{"i":[[-0.583,11.813],[1.793,-45.682],[-0.132,-41.417],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[0.295,92.398],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-0.011,-197.848],[-43.41,-199.609],[-56.23,-119.95],[-38.717,-1.253],[-3.214,-12.879],[-1.011,-125.508]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-0.583,11.813],[1.793,-45.682],[-0.132,-41.417],[-3.281,-62.017],[-3.154,30.786],[0.527,49.779]],"o":[[1.205,-24.41],[-2.277,58.023],[0.295,92.398],[0.661,12.491],[1.628,-15.887],[-0.494,-46.682]],"v":[[-0.011,-197.848],[-43.41,-199.609],[-56.23,-119.95],[-38.717,-1.253],[-3.214,-12.879],[-1.011,-125.508]],"c":true}],"e":[{"i":[[11.821,-0.386],[1.793,-45.682],[-0.132,-41.417],[-5.714,-61.84],[0.915,30.933],[-0.582,36.69]],"o":[[-33.274,1.087],[-2.277,58.023],[0.295,92.398],[1.635,17.693],[-2.481,-83.888],[1.239,-78.099]],"v":[[-40.306,-225.512],[-76.701,-180.722],[-56.23,-119.95],[-58.833,-15.584],[-19.309,-11.918],[11.195,-143.757]],"c":true}]},{"t":11}]},"nm":"L"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"L"}],"ip":0,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"L_down_light_blue","parent":16,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.164],"y":[0.248]},"n":["0p667_1_0p164_0p248"],"t":11,"s":[265],"e":[-15.441]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.4],"y":[0]},"n":["0p667_1_0p4_0"],"t":19,"s":[-15.441],"e":[8.796]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":24,"s":[8.796],"e":[0]},{"t":26}]},"p":{"k":[-1.457,-4,0]},"a":{"k":[-51.457,0,0]},"s":{"k":[{"i":{"x":[0.667,0.505,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.14,0.333],"y":[0.333,0.203,0.333]},"n":["0p667_0p667_0p333_0p333","0p505_1_0p14_0p203","0p667_0p667_0p333_0p333"],"t":11,"s":[100,0,100],"e":[100,180,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.458,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p458_0","0p667_0p667_0p333_0p333"],"t":16,"s":[100,180,100],"e":[100,100,100]},{"t":24}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-51.457,-41.995],[-51.457,0],[26.048,0],[71.507,0],[71.507,-18.863],[71.507,-41.995],[14.441,-41.995]],"c":true}],"e":[{"i":[[0,0],[0,0],[-41.015,7.09],[0,0],[1.24,13.664],[0,0],[27.171,-7.292]],"o":[[0,0],[0,0],[31.541,-5.452],[0,0],[-0.86,-9.477],[0,0],[-28.627,7.683]],"v":[[-23.744,-36.058],[-56.318,1.328],[12.921,14.397],[73.907,-14.61],[72.622,-38.639],[68.974,-62.345],[22.419,-35.837]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[-41.015,7.09],[0,0],[1.24,13.664],[0,0],[27.171,-7.292]],"o":[[0,0],[0,0],[31.541,-5.452],[0,0],[-0.86,-9.477],[0,0],[-28.627,7.683]],"v":[[-23.744,-36.058],[-56.318,1.328],[12.921,14.397],[73.907,-14.61],[72.622,-38.639],[68.974,-62.345],[22.419,-35.837]],"c":true}],"e":[{"i":[[0,0],[0,0],[-25.782,5.285],[0,0],[8.385,14.678],[0,0],[35.943,-8.751]],"o":[[0,0],[0,0],[29.363,-6.019],[0,0],[-8.718,-15.261],[0,0],[-35.943,8.751]],"v":[[-61.276,1.453],[-24.465,8.364],[15.813,-7.628],[80.317,-6.952],[62.858,-44.156],[41.047,-72.5],[-4.863,-63.188]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[-25.782,5.285],[0,0],[8.385,14.678],[0,0],[35.943,-8.751]],"o":[[0,0],[0,0],[29.363,-6.019],[0,0],[-8.718,-15.261],[0,0],[-35.943,8.751]],"v":[[-61.276,1.453],[-24.465,8.364],[15.813,-7.628],[80.317,-6.952],[62.858,-44.156],[41.047,-72.5],[-4.863,-63.188]],"c":true}],"e":[{"i":[[0,0],[0,0],[-44.861,-0.831],[0,0],[0,0],[0,0],[37.836,-4.265]],"o":[[0,0],[0,0],[47.99,0.889],[0,0],[0,0],[0,0],[-32.662,4.85]],"v":[[-73.079,-14.476],[-44.967,4.229],[27.959,-22.056],[89.877,-9.778],[76.196,-22.138],[50.824,-45.839],[10.031,-42.074]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[-44.861,-0.831],[0,0],[0,0],[0,0],[37.836,-4.265]],"o":[[0,0],[0,0],[47.99,0.889],[0,0],[0,0],[0,0],[-32.662,4.85]],"v":[[-73.079,-14.476],[-44.967,4.229],[27.959,-22.056],[89.877,-9.778],[76.196,-22.138],[50.824,-45.839],[10.031,-42.074]],"c":true}],"e":[{"i":[[0,0],[0,0],[-32.063,0.852],[0,0],[4.163,9.643],[0,0],[37.053,0]],"o":[[0,0],[0,0],[36.47,-0.969],[0,0],[-3.131,-7.252],[0,0],[-37.053,0]],"v":[[-71.714,-22.674],[-50.089,-0.613],[11.231,-14.118],[74.055,0.651],[68.636,-17.864],[59.165,-31.532],[7.963,-38.133]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[-32.063,0.852],[0,0],[4.163,9.643],[0,0],[37.053,0]],"o":[[0,0],[0,0],[36.47,-0.969],[0,0],[-3.131,-7.252],[0,0],[-37.053,0]],"v":[[-71.714,-22.674],[-50.089,-0.613],[11.231,-14.118],[74.055,0.651],[68.636,-17.864],[59.165,-31.532],[7.963,-38.133]],"c":true}],"e":[{"i":[[0,0],[0,0],[-28.255,3.777],[0,0],[4.338,5.486],[0,0],[41.857,1.586]],"o":[[0,0],[0,0],[34.579,-4.622],[0,0],[-4.149,-5.246],[0,0],[-38.281,-1.45]],"v":[[-61.426,-35.713],[-50.593,0.313],[12.382,-12.663],[69.506,-14.389],[63.246,-24.456],[52.363,-37.277],[8.055,-41.733]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[-28.255,3.777],[0,0],[4.338,5.486],[0,0],[41.857,1.586]],"o":[[0,0],[0,0],[34.579,-4.622],[0,0],[-4.149,-5.246],[0,0],[-38.281,-1.45]],"v":[[-61.426,-35.713],[-50.593,0.313],[12.382,-12.663],[69.506,-14.389],[63.246,-24.456],[52.363,-37.277],[8.055,-41.733]],"c":true}],"e":[{"i":[[0,0],[0,0],[-31.713,4.104],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[22.54,-2.917],[0,0],[0,0],[0,0],[0,0]],"v":[[-36.188,-41.182],[-51.457,0],[23.546,-3.418],[72.059,-14.242],[64.294,-23.664],[49.317,-42.156],[14.441,-41.995]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[-31.713,4.104],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[22.54,-2.917],[0,0],[0,0],[0,0],[0,0]],"v":[[-36.188,-41.182],[-51.457,0],[23.546,-3.418],[72.059,-14.242],[64.294,-23.664],[49.317,-42.156],[14.441,-41.995]],"c":true}],"e":[{"i":[[0,0],[0,0],[-29.557,0],[0,0],[0,0],[0,0],[22.142,0]],"o":[[0,0],[0,0],[29.557,0],[0,0],[0,0],[0,0],[-30.576,0]],"v":[[-18.648,-28.14],[-51.457,0],[21.52,-2.386],[66.17,-12.726],[71.781,-17.549],[54.64,-38.523],[24.588,-29.826]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[-29.557,0],[0,0],[0,0],[0,0],[22.142,0]],"o":[[0,0],[0,0],[29.557,0],[0,0],[0,0],[0,0],[-30.576,0]],"v":[[-18.648,-28.14],[-51.457,0],[21.52,-2.386],[66.17,-12.726],[71.781,-17.549],[54.64,-38.523],[24.588,-29.826]],"c":true}],"e":[{"i":[[0,0],[0,0],[-42.314,-1.068],[0,0],[0,0],[0,0],[24.679,1.827]],"o":[[0,0],[0,0],[34.155,0.862],[0,0],[0,0],[0,0],[-5.594,0.498]],"v":[[-9.46,-19.781],[-48.074,-1.194],[21.355,6.387],[80.573,2.365],[73.798,-34.513],[72.281,-43.153],[9.841,-31.433]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0],[-42.314,-1.068],[0,0],[0,0],[0,0],[24.679,1.827]],"o":[[0,0],[0,0],[34.155,0.862],[0,0],[0,0],[0,0],[-5.594,0.498]],"v":[[-9.46,-19.781],[-48.074,-1.194],[21.355,6.387],[80.573,2.365],[73.798,-34.513],[72.281,-43.153],[9.841,-31.433]],"c":true}],"e":[{"i":[[0,0],[0,0],[-36.269,-0.916],[0,0],[0,0],[0,0],[29.492,3.576]],"o":[[0,0],[0,0],[29.275,0.739],[0,0],[0,0],[0,0],[-4.795,0.426]],"v":[[-15.459,-22.954],[-48.558,-1.023],[22.025,5.474],[79.278,2.027],[76.578,-27.194],[75.278,-37.904],[3.383,-30.236]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[-36.269,-0.916],[0,0],[0,0],[0,0],[29.492,3.576]],"o":[[0,0],[0,0],[29.275,0.739],[0,0],[0,0],[0,0],[-4.795,0.426]],"v":[[-15.459,-22.954],[-48.558,-1.023],[22.025,5.474],[79.278,2.027],[76.578,-27.194],[75.278,-37.904],[3.383,-30.236]],"c":true}],"e":[{"i":[[0,0],[0,0],[-30.224,-0.763],[0,0],[0,0],[0,0],[32.203,3.763]],"o":[[0,0],[0,0],[24.396,0.616],[0,0],[0,0],[0,0],[-3.996,0.355]],"v":[[-21.459,-26.128],[-49.041,-0.853],[22.696,4.562],[77.982,1.689],[77.025,-21.771],[76.538,-31.566],[0.396,-29.209]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[-30.224,-0.763],[0,0],[0,0],[0,0],[32.203,3.763]],"o":[[0,0],[0,0],[24.396,0.616],[0,0],[0,0],[0,0],[-3.996,0.355]],"v":[[-21.459,-26.128],[-49.041,-0.853],[22.696,4.562],[77.982,1.689],[77.025,-21.771],[76.538,-31.566],[0.396,-29.209]],"c":true}],"e":[{"i":[[0,0],[0,0],[-24.179,-0.61],[0,0],[0,0],[0,0],[38.059,3.335]],"o":[[0,0],[0,0],[19.517,0.493],[0,0],[0,0],[0,0],[-3.197,0.284]],"v":[[-27.459,-29.301],[-49.524,-0.682],[23.366,3.65],[74.441,0.898],[75.457,-25.129],[76.034,-33.867],[-4.053,-30.942]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0],[-24.179,-0.61],[0,0],[0,0],[0,0],[38.059,3.335]],"o":[[0,0],[0,0],[19.517,0.493],[0,0],[0,0],[0,0],[-3.197,0.284]],"v":[[-27.459,-29.301],[-49.524,-0.682],[23.366,3.65],[74.441,0.898],[75.457,-25.129],[76.034,-33.867],[-4.053,-30.942]],"c":true}],"e":[{"i":[[0,0],[0,0],[-18.134,-0.458],[0,0],[0,0],[0,0],[28.544,2.501]],"o":[[0,0],[0,0],[14.638,0.37],[0,0],[0,0],[0,0],[-2.398,0.213]],"v":[[-33.458,-32.475],[-44.734,-7.358],[24.037,2.737],[73.708,0.674],[66.444,-18.855],[66.149,-28.693],[0.499,-29.82]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[0,0],[-18.134,-0.458],[0,0],[0,0],[0,0],[28.544,2.501]],"o":[[0,0],[0,0],[14.638,0.37],[0,0],[0,0],[0,0],[-2.398,0.213]],"v":[[-33.458,-32.475],[-44.734,-7.358],[24.037,2.737],[73.708,0.674],[66.444,-18.855],[66.149,-28.693],[0.499,-29.82]],"c":true}],"e":[{"i":[[0,0],[0,0],[-25.887,0.26],[0,0],[0,0],[0,0],[19.029,1.667]],"o":[[0,0],[0,0],[23.079,-0.232],[0,0],[0,0],[0,0],[-1.598,0.142]],"v":[[-39.458,-35.648],[-50.934,-0.245],[23.331,3.556],[74.885,0.533],[73.386,-9.426],[69.092,-35.457],[5.146,-33.879]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0,0],[0,0],[-25.887,0.26],[0,0],[0,0],[0,0],[19.029,1.667]],"o":[[0,0],[0,0],[23.079,-0.232],[0,0],[0,0],[0,0],[-1.598,0.142]],"v":[[-39.458,-35.648],[-50.934,-0.245],[23.331,3.556],[74.885,0.533],[73.386,-9.426],[69.092,-35.457],[5.146,-33.879]],"c":true}],"e":[{"i":[[0,0],[0,0],[-29.614,1.888],[0,0],[0,0],[0,0],[9.515,0.834]],"o":[[0,0],[0,0],[29.614,-1.888],[0,0],[0,0],[0,0],[-0.799,0.071]],"v":[[-45.458,-38.822],[-51.196,-0.123],[24.383,-2.21],[71.374,-0.596],[71.196,-10.036],[67.615,-41.027],[9.794,-37.937]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[{"i":[[0,0],[0,0],[-29.614,1.888],[0,0],[0,0],[0,0],[9.515,0.834]],"o":[[0,0],[0,0],[29.614,-1.888],[0,0],[0,0],[0,0],[-0.799,0.071]],"v":[[-45.458,-38.822],[-51.196,-0.123],[24.383,-2.21],[71.374,-0.596],[71.196,-10.036],[67.615,-41.027],[9.794,-37.937]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-51.457,-41.995],[-51.457,0],[26.048,0],[71.507,0],[71.507,-18.863],[71.507,-41.995],[14.441,-41.995]],"c":true}]},{"t":26}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-54.455,-34.192],[-52.283,18.884],[-13.504,24.771],[13.704,20.225],[68.467,7.776],[56.929,-57.361]],"c":true}},"nm":"L"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[161,161],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"L"}],"ip":11,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":3,"nm":"All rotation","parent":18,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[37],"e":[0]},{"t":9}]},"p":{"k":[200,404,0]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":0,"s":[50,50,100],"e":[100,100,100]},{"t":9}]}},"ao":0,"ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":1,"nm":"ResizerTemp","parent":19,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":1,"nm":"White Solid 41","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":37,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":37,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/M.json b/example/shared/src/commonMain/composeResources/files/mobilo/M.json new file mode 100644 index 00000000..8bab4a76 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/M.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"right hand 5","parent":2,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,1,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[1.718,5.749],[0.155,-9.961],[0,0],[0,0]],"o":[[-1.718,-5.749],[-0.155,9.961],[0,0],[0,0]],"v":[[-137.482,74.956],[-146.609,78.466],[-145.75,99],[-129.75,99]],"c":true}],"e":[{"i":[[0.375,2.594],[0,-9.962],[0,0],[0,0]],"o":[[-0.859,-5.938],[0,1.844],[0,0],[0,0]],"v":[[-135.875,95.906],[-145.625,96.656],[-145.75,99],[-135.5,99]],"c":true}]},{"t":17}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[1.265,5.865],[0.325,-9.957],[0,0],[0,0]],"o":[[-1.265,-5.865],[-0.235,7.212],[0,0],[0,0]],"v":[[-135.131,71.137],[-144.624,75.741],[-147,99],[-130.25,99]],"c":true}],"e":[{"i":[[0.25,3.625],[0,-9.962],[0,0],[0,0]],"o":[[-0.413,-5.986],[0,2.344],[0,0],[0,0]],"v":[[-133.125,92.781],[-143.375,95.281],[-143.875,99],[-133.625,99]],"c":true}]},{"t":17}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[17.5,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":18,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"right hand 4","parent":2,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.75,6],[-4.25,-4.5],[-3.5,-9],[7.75,1],[-3.25,-2.25],[-6,-7.25],[0,0],[-9.5,0],[3.5,8],[0,-6.75],[-0.25,-8.5]],"o":[[-7.75,-6],[4.25,4.5],[-3.5,-7],[-7.048,-0.909],[3.25,2.25],[6,7.25],[0,0],[0.5,-14.75],[-3.5,-8],[0,6.75],[-5.5,-9.75]],"v":[[-138.25,63.5],[-148.5,68],[-137.25,86.75],[-158,70],[-164.25,76.75],[-152.75,86.25],[-146.5,99.5],[-103.5,99.5],[-111.75,67.25],[-122.5,65.25],[-120.75,86.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"right hand 3","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[5.873,0.154],[4.875,-13.25],[-3.875,5.375],[0,0],[-6.614,-0.529],[-7.25,2],[-1.018,-3.618],[-3,4.75],[-5.5,2.875],[-5.25,0],[10.813,1.781]],"o":[[-19.125,-0.5],[-4.875,13.25],[3.875,-5.375],[0,0],[9.375,0.75],[-2.25,5.25],[1.125,4],[3,-4.75],[4.5,0],[-3.811,-11.259],[-4.793,-0.789]],"v":[[-137.5,80.375],[-166.375,96.5],[-159.875,108.375],[-151.875,102.25],[-151.625,116.75],[-133.5,104],[-133.125,112.75],[-123.25,112.75],[-112.25,99],[-99,99],[-121.456,81.601]],"c":true}],"e":[{"i":[[2.5,-6.375],[-0.25,-12.125],[-6.5,0.125],[0,0],[-4.5,0],[0,0],[-2.5,-0.375],[-2.312,1.75],[-1.375,2.375],[-5.25,0],[13.966,-4.108]],"o":[[-13,-6],[0.068,3.288],[5.064,-0.097],[0,0],[6.145,0],[0,0],[3.717,0.558],[1.204,-0.911],[4.5,0],[-3.997,-11.809],[-3.784,-5.983]],"v":[[-144.5,83.625],[-160.75,99.625],[-152,107.5],[-144.875,105.25],[-137.75,109.875],[-129.875,105.375],[-126.125,107.875],[-116.75,105.75],[-112.25,99],[-95.75,99],[-124.841,83.608]],"c":true}]},{"t":5}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":15,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"right hand 2","parent":2,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.75,6],[-4.25,-4.5],[-3.5,-9],[7.75,1],[-3.25,-2.25],[-6,-7.25],[0,0],[-9.5,0],[3.5,8],[0,-6.75],[-0.25,-8.5]],"o":[[-7.75,-6],[4.25,4.5],[-3.5,-7],[-7.048,-0.909],[3.25,2.25],[6,7.25],[0,0],[0.5,-14.75],[-3.5,-8],[0,6.75],[-5.5,-9.75]],"v":[[-138.25,63.5],[-148.5,68],[-137.25,86.75],[-158,70],[-164.25,76.75],[-152.75,86.25],[-146.5,99.5],[-103.5,99.5],[-111.75,67.25],[-122.5,65.25],[-120.75,86.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":4,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"right hand 1","parent":2,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,1,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,6],[3,-9.5],[0,0],[0,0]],"o":[[0,-6],[-3,9.5],[0,0],[0,0]],"v":[[-132.25,83.25],[-142,84],[-145.75,99],[-134.25,99]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,6],[1.3,-9.877],[0,0],[0,0]],"o":[[0,-6],[-1.25,9.5],[0,0],[0,0]],"v":[[-133.75,82.125],[-143.75,83.875],[-145.75,99],[-134.25,99]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[37.5,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,6],[2.416,-9.665],[0,0],[0,0]],"o":[[0,-6],[-1.75,7],[0,0],[0,0]],"v":[[-131.25,78.875],[-141.5,81.375],[-144.5,99],[-133,99]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[17.5,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":3,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"left hand 5","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,1,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[1.718,5.749],[0.155,-9.961],[0,0],[0,0]],"o":[[-1.718,-5.749],[-0.155,9.961],[0,0],[0,0]],"v":[[-137.482,74.956],[-146.609,78.466],[-145.75,99],[-129.75,99]],"c":true}],"e":[{"i":[[0.375,2.594],[0,-9.962],[0,0],[0,0]],"o":[[-0.859,-5.938],[0,1.844],[0,0],[0,0]],"v":[[-135.875,95.906],[-145.625,96.656],[-145.75,99],[-135.5,99]],"c":true}]},{"t":17}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0.79,5.948],[-0.012,-9.962],[0,0],[0,0]],"o":[[-0.79,-5.948],[0.011,9.582],[0,0],[0,0]],"v":[[-136.254,74.898],[-145.937,77.949],[-149.75,99],[-134.25,99]],"c":true}],"e":[{"i":[[0.125,2.969],[0.585,-9.945],[0,0],[0,0]],"o":[[-0.252,-5.995],[-0.125,2.125],[0,0],[0,0]],"v":[[-134.125,94.531],[-144.125,96.281],[-144.609,99],[-134.25,99]],"c":true}]},{"t":17}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[37.5,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[1.265,5.865],[0.325,-9.957],[0,0],[0,0]],"o":[[-1.265,-5.865],[-0.235,7.212],[0,0],[0,0]],"v":[[-135.131,71.137],[-144.624,75.741],[-147,99],[-130.25,99]],"c":true}],"e":[{"i":[[0.25,3.625],[0,-9.962],[0,0],[0,0]],"o":[[-0.413,-5.986],[0,2.344],[0,0],[0,0]],"v":[[-133.125,92.781],[-143.375,95.281],[-143.875,99],[-133.625,99]],"c":true}]},{"t":17}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[17.5,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":18,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"left hand 4","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.75,6],[-4.25,-4.5],[-3.5,-9],[7.75,1],[-3.25,-2.25],[-6,-7.25],[0,0],[-9.5,0],[3.5,8],[0,-6.75],[-0.25,-8.5]],"o":[[-7.75,-6],[4.25,4.5],[-3.5,-7],[-7.048,-0.909],[3.25,2.25],[6,7.25],[0,0],[0.5,-14.75],[-3.5,-8],[0,6.75],[-5.5,-9.75]],"v":[[-138.25,63.5],[-148.5,68],[-137.25,86.75],[-158,70],[-164.25,76.75],[-152.75,86.25],[-146.5,99.5],[-103.5,99.5],[-111.75,67.25],[-122.5,65.25],[-120.75,86.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"left hand 3","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[5.873,0.154],[4.875,-13.25],[-3.875,5.375],[0,0],[-6.614,-0.529],[-7.25,2],[-1.018,-3.618],[-3,4.75],[-5.5,2.875],[-5.25,0],[10.813,1.781]],"o":[[-19.125,-0.5],[-4.875,13.25],[3.875,-5.375],[0,0],[9.375,0.75],[-2.25,5.25],[1.125,4],[3,-4.75],[4.5,0],[-3.811,-11.259],[-4.793,-0.789]],"v":[[-137.5,80.375],[-166.375,96.5],[-159.875,108.375],[-151.875,102.25],[-151.625,116.75],[-133.5,104],[-133.125,112.75],[-123.25,112.75],[-112.25,99],[-99,99],[-121.456,81.601]],"c":true}],"e":[{"i":[[2.5,-6.375],[-0.25,-12.125],[-6.5,0.125],[0,0],[-4.5,0],[0,0],[-2.5,-0.375],[-2.312,1.75],[-1.375,2.375],[-5.25,0],[13.966,-4.108]],"o":[[-13,-6],[0.068,3.288],[5.064,-0.097],[0,0],[6.145,0],[0,0],[3.717,0.558],[1.204,-0.911],[4.5,0],[-3.997,-11.809],[-3.784,-5.983]],"v":[[-144.5,83.625],[-160.75,99.625],[-152,107.5],[-144.875,105.25],[-137.75,109.875],[-129.875,105.375],[-126.125,107.875],[-116.75,105.75],[-112.25,99],[-95.75,99],[-124.841,83.608]],"c":true}]},{"t":4}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"left hand 2","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.75,6],[-4.25,-4.5],[-3.5,-9],[7.75,1],[-3.25,-2.25],[-6,-7.25],[0,0],[-9.5,0],[3.5,8],[0,-6.75],[-0.25,-8.5]],"o":[[-7.75,-6],[4.25,4.5],[-3.5,-7],[-7.048,-0.909],[3.25,2.25],[6,7.25],[0,0],[0.5,-14.75],[-3.5,-8],[0,6.75],[-5.5,-9.75]],"v":[[-138.25,63.5],[-148.5,68],[-137.25,86.75],[-158,70],[-164.25,76.75],[-152.75,86.25],[-146.5,99.5],[-103.5,99.5],[-111.75,67.25],[-122.5,65.25],[-120.75,86.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":3,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"left hand 1","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,301,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,6],[3,-9.5],[0,0],[0,0]],"o":[[0,-6],[-3,9.5],[0,0],[0,0]],"v":[[-132.25,83.25],[-142,84],[-145.75,99],[-134.25,99]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,6],[1.3,-9.877],[0,0],[0,0]],"o":[[0,-6],[-1.25,9.5],[0,0],[0,0]],"v":[[-133.75,82.125],[-143.75,83.875],[-145.75,99],[-134.25,99]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[37.5,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,6],[2.416,-9.665],[0,0],[0,0]],"o":[[0,-6],[-1.75,7],[0,0],[0,0]],"v":[[-131.25,78.875],[-141.5,81.375],[-144.5,99],[-133,99]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[17.5,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":2,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Character Eyes Closed matte","parent":26,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[0.767,-211.441],[-72.231,-226.593],[-122.987,-226.593],[-122.987,0],[-75.856,0],[78.227,0],[125.056,0],[125.056,-226.593]],"c":true}},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.18,0.3,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":1,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Character Eyes Closed","parent":26,"tt":1,"ks":{"o":{"k":[{"t":0,"s":[100],"h":1},{"t":3,"s":[0],"h":1},{"t":14,"s":[100],"h":1}]},"r":{"k":0},"p":{"k":[244.25,387.25,0]},"a":{"k":[-5.75,87.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[37.5,94],[-2,89.5],[36,87.5]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[54,92],[20.5,88.5],[54,82.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[54,92],[20.5,88.5],[54,82.5]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[59,88.28],[25.5,84.78],[59,78.78]],"c":false}]},{"i":{"x":0.667,"y":0.782},"o":{"x":0.167,"y":0.167},"n":"0p667_0p782_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[59,88.28],[25.5,84.78],[59,78.78]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[59,120.75],[25.5,117.25],[59,111.25]],"c":false}]},{"t":17}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-71.5,88],[-40,88],[-76,78]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-65.5,93],[-29.5,90],[-62.5,81.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-65.5,93],[-29.5,90],[-62.5,81.5]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-63,88.03],[-27,85.03],[-60,76.53]],"c":false}]},{"i":{"x":0.667,"y":0.782},"o":{"x":0.167,"y":0.167},"n":"0p667_0p782_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-63,88.03],[-27,85.03],[-60,76.53]],"c":false}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-63,120.5],[-27,117.5],[-60,109]],"c":false}]},{"t":17}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Character Eyes matte","parent":26,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-122.987,-226.593],[-122.987,0],[125.056,0],[125.056,-226.593]],"c":true}},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.18,0.3,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":1,"op":25,"st":-36,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Character Eyes","parent":26,"tt":1,"ks":{"o":{"k":[{"t":3,"s":[100],"h":1},{"t":14,"s":[0],"h":1}]},"r":{"k":0},"p":{"k":[289,386,0]},"a":{"k":[0,6.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[6.599,-0.126],[-1.057,-4.198],[-6.599,0.126],[1.057,4.198]],"o":[[-6.599,0.126],[1.057,4.198],[6.599,-0.126],[-1.057,-4.198]],"v":[[-5.898,4.242],[-13.669,11.223],[3.081,16.613],[9.525,10.79]],"c":true}],"e":[{"i":[[6.586,-0.429],[-1.73,-9.046],[-6.586,0.429],[1.73,9.046]],"o":[[-6.586,0.429],[1.73,9.046],[6.586,-0.43],[-1.73,-9.046]],"v":[[-4.575,-5.623],[-10.067,9.641],[9.212,19.948],[12.751,8.153]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[6.586,-0.429],[-1.73,-9.046],[-6.586,0.429],[1.73,9.046]],"o":[[-6.586,0.429],[1.73,9.046],[6.586,-0.43],[-1.73,-9.046]],"v":[[-4.575,-5.623],[-10.067,9.641],[9.212,19.948],[12.751,8.153]],"c":true}],"e":[{"i":[[6.599,-0.404],[-1.057,-13.491],[-6.599,0.404],[1.057,13.491]],"o":[[-6.599,0.404],[1.057,13.491],[6.599,-0.404],[-1.057,-13.491]],"v":[[-3.037,-20.587],[-10.808,1.849],[5.942,19.174],[12.386,0.457]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":5,"s":[{"i":[[6.599,-0.404],[-1.057,-13.491],[-6.599,0.404],[1.057,13.491]],"o":[[-6.599,0.404],[1.057,13.491],[6.599,-0.404],[-1.057,-13.491]],"v":[[-3.037,-20.587],[-10.808,1.849],[5.942,19.174],[12.386,0.457]],"c":true}],"e":[{"i":[[6.615,-0.038],[-0.15,-10.987],[-6.615,0.038],[0.15,10.987]],"o":[[-6.615,0.038],[0.15,10.987],[6.615,-0.038],[-0.15,-10.987]],"v":[[0.876,-30.859],[-11.526,-12.993],[-0.786,3.526],[12.175,-13.107]],"c":true}]},{"i":{"x":0.667,"y":0.776},"o":{"x":0.902,"y":0},"n":"0p667_0p776_0p902_0","t":8,"s":[{"i":[[6.615,-0.038],[-0.15,-10.987],[-6.615,0.038],[0.15,10.987]],"o":[[-6.615,0.038],[0.15,10.987],[6.615,-0.038],[-0.15,-10.987]],"v":[[0.876,-30.859],[-11.526,-12.993],[-0.786,3.526],[12.175,-13.107]],"c":true}],"e":[{"i":[[6.625,0.165],[0.366,-11.185],[-6.625,-0.165],[-0.366,11.185]],"o":[[-6.625,-0.165],[-0.366,11.185],[6.625,0.165],[0.366,-11.185]],"v":[[0.667,-23.673],[-11.924,-5.768],[-0.526,12.734],[12.066,-5.17]],"c":true}]},{"i":{"x":0.543,"y":1},"o":{"x":1,"y":0.669},"n":"0p543_1_1_0p669","t":14,"s":[{"i":[[6.625,0.165],[0.366,-11.185],[-6.625,-0.165],[-0.366,11.185]],"o":[[-6.625,-0.165],[-0.366,11.185],[6.625,0.165],[0.366,-11.185]],"v":[[0.667,-23.673],[-11.924,-5.768],[-0.526,12.734],[12.066,-5.17]],"c":true}],"e":[{"i":[[6.627,0],[0,-11.189],[-6.627,0],[0,11.189]],"o":[[-6.627,0],[0,11.189],[6.627,0],[0,-11.189]],"v":[[0,74.794],[-12,93.005],[0,111.215],[12,93.005]],"c":true}]},{"t":20}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-83.5,8.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[96.127,110.209],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"left pupil"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[10.173,-0.193],[-1.638,-6.471],[-10.173,0.193],[1.638,6.471]],"o":[[-10.173,0.193],[1.638,6.471],[10.173,-0.193],[-1.638,-6.471]],"v":[[-6.55,-0.675],[-19.914,9.76],[4.163,18.895],[16.251,9.083]],"c":true}],"e":[{"i":[[10.154,-0.659],[-2.68,-13.946],[-10.154,0.659],[2.68,13.946]],"o":[[-10.154,0.659],[2.68,13.946],[10.154,-0.659],[-2.68,-13.946]],"v":[[-5.837,-13.184],[-16.335,9.271],[10.822,27.54],[19.442,6.95]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[10.154,-0.659],[-2.68,-13.946],[-10.154,0.659],[2.68,13.946]],"o":[[-10.154,0.659],[2.68,13.946],[10.154,-0.659],[-2.68,-13.946]],"v":[[-5.837,-13.184],[-16.335,9.271],[10.822,27.54],[19.442,6.95]],"c":true}],"e":[{"i":[[10.173,-0.62],[-1.638,-20.799],[-10.173,0.62],[1.638,20.799]],"o":[[-10.173,0.62],[1.638,20.799],[10.173,-0.62],[-1.638,-20.799]],"v":[[-3.8,-31.049],[-17.164,2.487],[6.913,31.848],[19.001,0.311]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":5,"s":[{"i":[[10.173,-0.62],[-1.638,-20.799],[-10.173,0.62],[1.638,20.799]],"o":[[-10.173,0.62],[1.638,20.799],[10.173,-0.62],[-1.638,-20.799]],"v":[[-3.8,-31.049],[-17.164,2.487],[6.913,31.848],[19.001,0.311]],"c":true}],"e":[{"i":[[10.199,-0.058],[-0.233,-16.938],[-10.199,0.058],[0.233,16.938]],"o":[[-10.199,0.058],[0.233,16.938],[10.199,-0.058],[-0.233,-16.938]],"v":[[0.716,-35.454],[-18.01,-8.084],[-0.586,18.435],[18.677,-8.272]],"c":true}]},{"i":{"x":0.667,"y":0.776},"o":{"x":0.902,"y":0},"n":"0p667_0p776_0p902_0","t":8,"s":[{"i":[[10.199,-0.058],[-0.233,-16.938],[-10.199,0.058],[0.233,16.938]],"o":[[-10.199,0.058],[0.233,16.938],[10.199,-0.058],[-0.233,-16.938]],"v":[[0.716,-35.454],[-18.01,-8.084],[-0.586,18.435],[18.677,-8.272]],"c":true}],"e":[{"i":[[10.213,0.253],[0.568,-17.243],[-10.213,-0.253],[-0.568,17.243]],"o":[[-10.213,-0.253],[-0.568,17.243],[10.213,0.253],[0.568,-17.243]],"v":[[0.934,-30.966],[-18.492,-3.062],[-0.934,25.76],[18.492,-2.144]],"c":true}]},{"i":{"x":0.543,"y":1},"o":{"x":1,"y":0.669},"n":"0p543_1_1_0p669","t":14,"s":[{"i":[[10.213,0.253],[0.568,-17.243],[-10.213,-0.253],[-0.568,17.243]],"o":[[-10.213,-0.253],[-0.568,17.243],[10.213,0.253],[0.568,-17.243]],"v":[[0.934,-30.966],[-18.492,-3.062],[-0.934,25.76],[18.492,-2.144]],"c":true}],"e":[{"i":[[10.217,0],[0,-17.25],[-10.217,0],[0,17.25]],"o":[[-10.217,0],[0,17.25],[10.217,0],[0,-17.25]],"v":[[0,60.559],[-18.5,88.934],[0,117.309],[18.5,88.934]],"c":true}]},{"t":20}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-82.5,10.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,115.254],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"left eye"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[6.583,-0.122],[-1.065,-4.188],[-6.583,0.122],[1.065,4.188]],"o":[[-6.583,0.122],[1.065,4.188],[6.583,-0.122],[-1.065,-4.188]],"v":[[-5.868,4.267],[-13.778,11.216],[3.047,16.574],[9.535,10.796]],"c":true}],"e":[{"i":[[6.571,-0.505],[-2.032,-9.025],[-6.571,0.505],[2.032,9.025]],"o":[[-6.571,0.505],[2.032,9.025],[6.571,-0.505],[-2.032,-9.025]],"v":[[-5.052,-5.551],[-10.29,9.792],[9.588,19.857],[12.731,8.025]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[6.571,-0.505],[-2.032,-9.025],[-6.571,0.505],[2.032,9.025]],"o":[[-6.571,0.505],[2.032,9.025],[6.571,-0.505],[-2.032,-9.025]],"v":[[-5.052,-5.551],[-10.29,9.792],[9.588,19.857],[12.731,8.025]],"c":true}],"e":[{"i":[[6.583,-0.391],[-1.065,-13.458],[-6.583,0.391],[1.065,13.458]],"o":[[-6.583,0.391],[1.065,13.458],[6.583,-0.391],[-1.065,-13.458]],"v":[[-5.087,-20.507],[-12.998,1.828],[3.828,19.049],[10.315,0.477]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":5,"s":[{"i":[[6.583,-0.391],[-1.065,-13.458],[-6.583,0.391],[1.065,13.458]],"o":[[-6.583,0.391],[1.065,13.458],[6.583,-0.391],[-1.065,-13.458]],"v":[[-5.087,-20.507],[-12.998,1.828],[3.828,19.049],[10.315,0.477]],"c":true}],"e":[{"i":[[6.599,0.128],[0.239,-10.959],[-6.599,-0.128],[-0.239,10.959]],"o":[[-6.599,-0.128],[-0.239,10.959],[6.599,0.128],[0.239,-10.959]],"v":[[0.836,-30.828],[-12.236,-13.315],[-2.126,3.434],[11.47,-12.831]],"c":true}]},{"i":{"x":0.667,"y":0.776},"o":{"x":0.902,"y":0},"n":"0p667_0p776_0p902_0","t":8,"s":[{"i":[[6.599,0.128],[0.239,-10.959],[-6.599,-0.128],[-0.239,10.959]],"o":[[-6.599,-0.128],[-0.239,10.959],[6.599,0.128],[0.239,-10.959]],"v":[[0.836,-30.828],[-12.236,-13.315],[-2.126,3.434],[11.47,-12.831]],"c":true}],"e":[{"i":[[6.608,0.442],[0.982,-11.156],[-6.608,-0.442],[-0.982,11.156]],"o":[[-6.608,-0.442],[-0.982,11.156],[6.608,0.442],[0.982,-11.156]],"v":[[1.771,-23.665],[-11.792,-6.309],[-1.425,12.649],[12.138,-4.707]],"c":true}]},{"i":{"x":0.543,"y":1},"o":{"x":1,"y":0.669},"n":"0p543_1_1_0p669","t":14,"s":[{"i":[[6.608,0.442],[0.982,-11.156],[-6.608,-0.442],[-0.982,11.156]],"o":[[-6.608,-0.442],[-0.982,11.156],[6.608,0.442],[0.982,-11.156]],"v":[[1.771,-23.665],[-11.792,-6.309],[-1.425,12.649],[12.138,-4.707]],"c":true}],"e":[{"i":[[6.627,0],[0,-11.189],[-6.627,0],[0,11.189]],"o":[[-6.627,0],[0,11.189],[6.627,0],[0,-11.189]],"v":[[0,74.794],[-12,93.005],[0,111.215],[12,93.005]],"c":true}]},{"t":20}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[3,8.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[96.127,110.209],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"right pupil"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[10.148,-0.186],[-1.65,-6.456],[-10.148,0.186],[1.65,6.456]],"o":[[-10.148,0.186],[1.65,6.456],[10.148,-0.186],[-1.65,-6.456]],"v":[[-6.53,-0.642],[-20.003,9.748],[4.137,18.847],[16.243,9.092]],"c":true}],"e":[{"i":[[10.13,-0.774],[-3.149,-13.913],[-10.13,0.774],[3.149,13.913]],"o":[[-10.13,0.774],[3.149,13.913],[10.13,-0.774],[-3.149,-13.913]],"v":[[-6.549,-13.108],[-16.489,9.48],[11.526,27.418],[19.452,6.734]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[10.13,-0.774],[-3.149,-13.913],[-10.13,0.774],[3.149,13.913]],"o":[[-10.13,0.774],[3.149,13.913],[10.13,-0.774],[-3.149,-13.913]],"v":[[-6.549,-13.108],[-16.489,9.48],[11.526,27.418],[19.452,6.734]],"c":true}],"e":[{"i":[[10.148,-0.599],[-1.65,-20.748],[-10.148,0.599],[1.65,20.748]],"o":[[-10.148,0.599],[1.65,20.748],[10.148,-0.599],[-1.65,-20.748]],"v":[[-5.78,-30.944],[-19.253,2.45],[4.887,31.693],[16.993,0.341]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":5,"s":[{"i":[[10.148,-0.599],[-1.65,-20.748],[-10.148,0.599],[1.65,20.748]],"o":[[-10.148,0.599],[1.65,20.748],[10.148,-0.599],[-1.65,-20.748]],"v":[[-5.78,-30.944],[-19.253,2.45],[4.887,31.693],[16.993,0.341]],"c":true}],"e":[{"i":[[10.173,0.196],[0.371,-16.896],[-10.173,-0.196],[-0.371,16.896]],"o":[[-10.173,-0.196],[-0.371,16.896],[10.173,0.196],[0.371,-16.896]],"v":[[0.997,-35.377],[-18.739,-8.544],[-2.321,18.342],[17.918,-7.813]],"c":true}]},{"i":{"x":0.667,"y":0.776},"o":{"x":0.902,"y":0},"n":"0p667_0p776_0p902_0","t":8,"s":[{"i":[[10.173,0.196],[0.371,-16.896],[-10.173,-0.196],[-0.371,16.896]],"o":[[-10.173,-0.196],[-0.371,16.896],[10.173,0.196],[0.371,-16.896]],"v":[[0.997,-35.377],[-18.739,-8.544],[-2.321,18.342],[17.918,-7.813]],"c":true}],"e":[{"i":[[10.187,0.679],[1.522,-17.199],[-10.187,-0.679],[-1.522,17.199]],"o":[[-10.187,-0.679],[-1.522,17.199],[10.187,0.679],[1.522,-17.199]],"v":[[2.503,-30.895],[-18.446,-3.832],[-2.503,25.689],[18.446,-1.374]],"c":true}]},{"i":{"x":0.543,"y":1},"o":{"x":1,"y":0.669},"n":"0p543_1_1_0p669","t":14,"s":[{"i":[[10.187,0.679],[1.522,-17.199],[-10.187,-0.679],[-1.522,17.199]],"o":[[-10.187,-0.679],[-1.522,17.199],[10.187,0.679],[1.522,-17.199]],"v":[[2.503,-30.895],[-18.446,-3.832],[-2.503,25.689],[18.446,-1.374]],"c":true}],"e":[{"i":[[10.217,0],[0,-17.25],[-10.217,0],[0,17.25]],"o":[[-10.217,0],[0,17.25],[10.217,0],[0,-17.25]],"v":[[0,60.559],[-18.5,88.934],[0,117.309],[18.5,88.934]],"c":true}]},{"t":20}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[4,10.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,115.254],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"right eye"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Character matte","parent":26,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-122.987,-226.593],[-122.987,0],[125.056,0],[125.056,-226.593]],"c":true}},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.18,0.3,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":1,"op":25,"st":-36,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Character","parent":26,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":1,"s":[{"i":[[25.856,0],[-18.268,5.453],[-26.616,-1.381],[-16.977,-18.899],[10.273,0]],"o":[[14.606,-7],[23.106,-6.897],[26.617,1.381],[-31.977,0],[-34.727,0]],"v":[[-80.106,0],[-34.356,-19.103],[50.133,-27.631],[115.227,-0.101],[49.227,0]],"c":true}],"e":[{"i":[[25.856,0],[-37.319,9.822],[-24.88,-8.878],[-7.977,-27.649],[-20.727,-19]],"o":[[0.481,-32],[23.356,-6.147],[26.992,9.632],[-38.477,-16.649],[-34.727,0]],"v":[[-77.981,0],[-16.356,-74.353],[65.508,-70.632],[121.477,-7.851],[79.727,0]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":2,"s":[{"i":[[25.856,0],[-37.319,9.822],[-24.88,-8.878],[-7.977,-27.649],[-20.727,-19]],"o":[[0.481,-32],[23.356,-6.147],[26.992,9.632],[-38.477,-16.649],[-34.727,0]],"v":[[-77.981,0],[-16.356,-74.353],[65.508,-70.632],[121.477,-7.851],[79.727,0]],"c":true}],"e":[{"i":[[25.856,0],[-96.644,-22.397],[-39.383,-14.869],[-53.227,-38.899],[-21.227,-23.5]],"o":[[-56.144,-54],[-60.144,13.103],[9.117,-41.369],[-55.727,1.601],[-34.727,0]],"v":[[-75.856,0],[6.644,-135.603],[-8.117,-48.631],[117.727,-64.601],[78.227,0]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":3,"s":[{"i":[[25.856,0],[-96.644,-22.397],[-39.383,-14.869],[-53.227,-38.899],[-21.227,-23.5]],"o":[[-56.144,-54],[-60.144,13.103],[9.117,-41.369],[-55.727,1.601],[-34.727,0]],"v":[[-75.856,0],[6.644,-135.603],[-8.117,-48.631],[117.727,-64.601],[78.227,0]],"c":true}],"e":[{"i":[[0,0],[24.356,51.603],[0,0],[3.273,64.101],[0,0]],"o":[[0,0],[59.856,36.603],[0,0],[43.273,42.601],[0,0]],"v":[[-75.856,0],[-104.356,-144.603],[-0.617,-43.631],[38.227,-144.101],[78.227,0]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0.541},"n":"0_1_0p333_0p541","t":4,"s":[{"i":[[0,0],[24.356,51.603],[0,0],[3.273,64.101],[0,0]],"o":[[0,0],[59.856,36.603],[0,0],[43.273,42.601],[0,0]],"v":[[-75.856,0],[-104.356,-144.603],[-0.617,-43.631],[38.227,-144.101],[78.227,0]],"c":true}],"e":[{"i":[[0,0],[-0.144,53.051],[0,0],[-41.227,47.749],[0,0]],"o":[[0,0],[36.856,45.551],[0,0],[-0.227,68.749],[0,0]],"v":[[-75.856,0],[-75.356,-149.551],[0.383,-59.066],[78.727,-149.249],[78.227,0]],"c":true}]},{"i":{"x":0.667,"y":0.771},"o":{"x":1,"y":0},"n":"0p667_0p771_1_0","t":8,"s":[{"i":[[0,0],[-0.144,53.051],[0,0],[-41.227,47.749],[0,0]],"o":[[0,0],[36.856,45.551],[0,0],[-0.227,68.749],[0,0]],"v":[[-75.856,0],[-75.356,-149.551],[0.383,-59.066],[78.727,-149.249],[78.227,0]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-75.856,0],[-75.856,-149.551],[0.883,-43.566],[78.227,-149.249],[78.227,0]],"c":true}]},{"i":{"x":0.585,"y":0.37},"o":{"x":0.662,"y":0.452},"n":"0p585_0p37_0p662_0p452","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-75.856,0],[-75.856,-149.551],[0.883,-43.566],[78.227,-149.249],[78.227,0]],"c":true}],"e":[{"i":[[23.356,0],[-0.644,36.551],[-17.215,-38.934],[-18.176,47.249],[-1.227,-44.5]],"o":[[0.856,-63],[22.907,55.551],[21.239,-39.934],[-0.227,63.749],[-23.727,0]],"v":[[-69.674,81],[-66.907,-87.551],[1.215,71.934],[69.176,-89.249],[71.909,81]],"c":true}]},{"i":{"x":0.627,"y":0.434},"o":{"x":0.34,"y":0.516},"n":"0p627_0p434_0p34_0p516","t":18,"s":[{"i":[[23.356,0],[-0.644,36.551],[-17.215,-38.934],[-18.176,47.249],[-1.227,-44.5]],"o":[[0.856,-63],[22.907,55.551],[21.239,-39.934],[-0.227,63.749],[-23.727,0]],"v":[[-69.674,81],[-66.907,-87.551],[1.215,71.934],[69.176,-89.249],[71.909,81]],"c":true}],"e":[{"i":[[23.356,0],[0,84.051],[-15.383,-24.934],[-23.455,108.749],[-1.227,-44.5]],"o":[[0.856,-63],[15.629,88.051],[18.117,-38.434],[0,120.249],[-23.727,0]],"v":[[-76.174,277],[-74.879,10.949],[0.065,246.434],[78.955,9.251],[78.909,277]],"c":true}]},{"t":21}]},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":1,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Particles","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.297,"y":0.753},"o":{"x":0.098,"y":0.196},"n":"0p297_0p753_0p098_0p196","t":16,"s":[250,310,0],"e":[250,280,0],"to":[0,-5,0],"ti":[0,5,0]},{"t":26}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5.947,-32],[3.457,-29.255],[5.372,-26],[7.543,-29.638]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.25,-50],[3.375,-44.625],[7.125,-38.25],[11.375,-45.375]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.25,-50],[3.375,-44.625],[7.125,-38.25],[11.375,-45.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.789,-52.625],[5.895,-48.336],[8.121,-43.25],[10.645,-48.935]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.789,-52.625],[5.895,-48.336],[8.121,-43.25],[10.645,-48.935]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.039,-57.5],[7.27,-53.211],[8.121,-49.625],[9.27,-53.06]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.039,-57.5],[7.27,-53.211],[8.121,-49.625],[9.27,-53.06]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.08,-58.438],[7.27,-55.715],[8.166,-53.438],[9.375,-55.618]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28.077,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.08,-58.438],[7.27,-55.715],[8.166,-53.438],[9.375,-55.618]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.34,-55.75],[8.401,-55.954],[8.334,-56.125],[8.243,-55.961]],"c":true}]},{"t":29.384765625}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 10"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.759,-41.25],[-11,-39.818],[-8.152,-38],[-5.5,-39.773]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4,-89.75],[-12.25,-74],[-5,-54],[1.75,-73.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4,-89.75],[-12.25,-74],[-5,-54],[1.75,-73.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4,-102.375],[-9.625,-87.875],[-5,-72],[0.625,-88.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4,-102.375],[-9.625,-87.875],[-5,-72],[0.625,-88.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.014,-104.283],[-7.875,-94.265],[-4.829,-83.811],[-1.125,-94.512]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.014,-104.283],[-7.875,-94.265],[-4.829,-83.811],[-1.125,-94.512]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.028,-111.5],[-6.904,-103.594],[-4.635,-95.344],[-1.875,-103.789]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.028,-111.5],[-6.904,-103.594],[-4.635,-95.344],[-1.875,-103.789]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.671,-112.588],[-6.33,-107.629],[-4.785,-102.539],[-3.208,-107.832]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28.077,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.671,-112.588],[-6.33,-107.629],[-4.785,-102.539],[-3.208,-107.832]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.584,-114.088],[-5.955,-111.022],[-4.679,-107.875],[-3.375,-111.147]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29.385,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.584,-114.088],[-5.955,-111.022],[-4.679,-107.875],[-3.375,-111.147]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.002,-114.981],[-6.103,-113.129],[-5.394,-111.075],[-4.328,-113.06]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30.692,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.002,-114.981],[-6.103,-113.129],[-5.394,-111.075],[-4.328,-113.06]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.475,-114.003],[-5.202,-114.668],[-5.514,-114.316],[-5.77,-113.666]],"c":true}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 9"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.923,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[29.25,-76.375],[24.75,-70.375],[28.75,-61.375],[31.25,-68.875]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.25,-89.75],[27.75,-83.75],[31.75,-74.75],[34.25,-82.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.25,-89.75],[27.75,-83.75],[31.75,-74.75],[34.25,-82.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.5,-95.375],[27.5,-90.875],[29.875,-84.875],[32.625,-90.125]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.5,-95.375],[27.5,-90.875],[29.875,-84.875],[32.625,-90.125]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.308,-102.5],[28.625,-99.363],[29.957,-95.18],[31.5,-98.84]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.308,-102.5],[28.625,-99.363],[29.957,-95.18],[31.5,-98.84]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.212,-108.242],[29.188,-106.397],[29.998,-103.938],[30.938,-106.09]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.212,-108.242],[29.188,-106.397],[29.998,-103.938],[30.938,-106.09]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[29.928,-111.171],[29.562,-110.512],[29.852,-109.634],[30.188,-110.402]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[29.928,-111.171],[29.562,-110.512],[29.852,-109.634],[30.188,-110.402]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.224,-111.758],[30.265,-111.824],[30.35,-111.881],[30.298,-111.807]],"c":true}]},{"t":28.0771484375}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.923,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.49,-56],[14.284,-51.403],[16.14,-46.75],[18.591,-51.488]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.04,-120.125],[4.5,-100.247],[12.525,-80.125],[23.125,-100.613]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.04,-120.125],[4.5,-100.247],[12.525,-80.125],[23.125,-100.613]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.576,-130.215],[4.625,-117.824],[10.026,-103.66],[17.25,-114.923]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.576,-130.215],[4.625,-117.824],[10.026,-103.66],[17.25,-114.923]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.076,-140.715],[5.125,-126.199],[9.401,-113.285],[15,-128.298]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.076,-140.715],[5.125,-126.199],[9.401,-113.285],[15,-128.298]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.076,-145.09],[7.375,-133.324],[10.026,-124.16],[12.875,-136.673]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.076,-145.09],[7.375,-133.324],[10.026,-124.16],[12.875,-136.673]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.389,-146.787],[8.473,-139.201],[10.485,-133.494],[11.834,-141.522]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.389,-146.787],[8.473,-139.201],[10.485,-133.494],[11.834,-141.522]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.414,-147.733],[9.307,-143.348],[10.47,-140.048],[11.25,-144.689]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28.077,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.414,-147.733],[9.307,-143.348],[10.47,-140.048],[11.25,-144.689]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.544,-150.375],[9.531,-147.792],[10.273,-145.747],[11.05,-148.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29.385,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.544,-150.375],[9.531,-147.792],[10.273,-145.747],[11.05,-148.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.521,-151.5],[9.87,-150.208],[10.157,-149.111],[10.693,-150.503]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30.692,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.521,-151.5],[9.87,-150.208],[10.157,-149.111],[10.693,-150.503]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.492,-152.24],[9.93,-151.913],[10.18,-152.053],[10.643,-152.323]],"c":true}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,15],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,134],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.923,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.673,-68],[-19,-60.533],[-15.683,-54],[-11.5,-59.911]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.25,-125.5],[-21.75,-107.5],[-16,-91.75],[-8.75,-106]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.25,-125.5],[-21.75,-107.5],[-16,-91.75],[-8.75,-106]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.25,-134.875],[-23.375,-120.375],[-17.25,-106.5],[-10.375,-118.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.25,-134.875],[-23.375,-120.375],[-17.25,-106.5],[-10.375,-118.875]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.43,-137.25],[-21.5,-126.183],[-17.142,-115.593],[-12.25,-125.038]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.43,-137.25],[-21.5,-126.183],[-17.142,-115.593],[-12.25,-125.038]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.623,-140.093],[-19.5,-132.252],[-17.026,-124.75],[-14.25,-131.441]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.623,-140.093],[-19.5,-132.252],[-17.026,-124.75],[-14.25,-131.441]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.683,-144.78],[-18.875,-138.473],[-16.99,-132.438],[-14.875,-137.82]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.683,-144.78],[-18.875,-138.473],[-16.99,-132.438],[-14.875,-137.82]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.265,-146.093],[-18.875,-141.35],[-17.491,-136.812],[-15.938,-140.86]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28.077,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.265,-146.093],[-18.875,-141.35],[-17.491,-136.812],[-15.938,-140.86]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.039,-146.562],[-18.375,-142.698],[-17.227,-139],[-15.938,-142.298]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29.385,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.039,-146.562],[-18.375,-142.698],[-17.227,-139],[-15.938,-142.298]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.126,-147.25],[-18.188,-145.43],[-17.275,-143.688],[-16.25,-145.241]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30.692,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.126,-147.25],[-18.188,-145.43],[-17.275,-143.688],[-16.25,-145.241]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.246,-145.258],[-17.103,-145.465],[-17.196,-145.68],[-17.332,-145.505]],"c":true}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.308,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[38.736,-92.75],[35.25,-89.261],[37.926,-84.5],[41.25,-88.46]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[39.75,-147.75],[29,-129.25],[37.25,-104],[47.5,-125]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.923,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[39.75,-147.75],[29,-129.25],[37.25,-104],[47.5,-125]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[38.75,-159.125],[31.5,-141.75],[37.625,-120.875],[45.625,-141.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[38.75,-159.125],[31.5,-141.75],[37.625,-120.875],[45.625,-141.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.75,-166],[32.875,-152],[37.25,-137.375],[42.125,-151.375]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.75,-166],[32.875,-152],[37.25,-137.375],[42.125,-151.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.669,-175.875],[33.584,-164.076],[37.25,-151.75],[41.334,-163.549]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.669,-175.875],[33.584,-164.076],[37.25,-151.75],[41.334,-163.549]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.526,-175.875],[33.584,-167.377],[36.224,-158.5],[39.166,-166.998]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.526,-175.875],[33.584,-167.377],[36.224,-158.5],[39.166,-166.998]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.497,-179.625],[34.126,-174.062],[36.254,-168.25],[38.625,-173.813]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.497,-179.625],[34.126,-174.062],[36.254,-168.25],[38.625,-173.813]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.45,-180.5],[35.001,-177.015],[36.301,-173.375],[37.75,-176.86]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28.077,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.45,-180.5],[35.001,-177.015],[36.301,-173.375],[37.75,-176.86]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.367,-181],[35.376,-178.616],[36.265,-176.125],[37.257,-178.509]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29.385,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.367,-181],[35.376,-178.616],[36.265,-176.125],[37.257,-178.509]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.534,-180.936],[35.938,-179.501],[36.473,-178.002],[37.07,-179.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30.692,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.534,-180.936],[35.938,-179.501],[36.473,-178.002],[37.07,-179.437]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[36.51,-180.469],[36.548,-180.56],[36.514,-180.656],[36.476,-180.565]],"c":true}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,119],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.308,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.622,-81.5],[-28,-87.01],[-25.019,-93],[-20.25,-87.969]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.75,-148.75],[-29,-137.25],[-25.25,-124.75],[-19.25,-135.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.923,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.75,-148.75],[-29,-137.25],[-25.25,-124.75],[-19.25,-135.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.736,-157.719],[-28.5,-147.227],[-25.179,-136.25],[-20.75,-147.455]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.736,-157.719],[-28.5,-147.227],[-25.179,-136.25],[-20.75,-147.455]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.343,-161.469],[-28.5,-154.276],[-25.714,-146.75],[-22,-154.432]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.343,-161.469],[-28.5,-154.276],[-25.714,-146.75],[-22,-154.432]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.814,-165.094],[-28,-160.222],[-26.071,-155.125],[-23.5,-160.328]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-25.814,-165.094],[-28,-160.222],[-26.071,-155.125],[-23.5,-160.328]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-26.425,-168.594],[-28.125,-164.333],[-26.625,-159.875],[-24.625,-164.425]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-26.425,-168.594],[-28.125,-164.333],[-26.625,-159.875],[-24.625,-164.425]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-27.286,-174.344],[-28.5,-171.305],[-27.429,-168.125],[-26,-171.371]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-27.286,-174.344],[-28.5,-171.305],[-27.429,-168.125],[-26,-171.371]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-27.558,-175.272],[-28.165,-173.211],[-27.629,-171.054],[-26.915,-173.255]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28.077,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-27.558,-175.272],[-28.165,-173.211],[-27.629,-171.054],[-26.915,-173.255]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-27.597,-174.826],[-27.879,-174.667],[-27.63,-174.5],[-27.298,-174.67]],"c":true}]},{"t":29.384765625}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,116],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.625,-111.875],[51.625,-108.375],[54.375,-102.875],[58.5,-107]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.156,-130.406],[51.625,-126.594],[55,-121.25],[58.5,-125.375]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.308,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.156,-130.406],[51.625,-126.594],[55,-121.25],[58.5,-125.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.126,-135.406],[52.751,-133.259],[55.021,-130.25],[57.376,-132.573]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.923,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.126,-135.406],[52.751,-133.259],[55.021,-130.25],[57.376,-132.573]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.109,-143.281],[53.376,-142.175],[55.032,-140.625],[56.75,-141.822]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.109,-143.281],[53.376,-142.175],[55.032,-140.625],[56.75,-141.822]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.089,-147.691],[54.126,-147.076],[55.046,-146.215],[56,-146.88]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.089,-147.691],[54.126,-147.076],[55.046,-146.215],[56,-146.88]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.068,-147.969],[54.876,-147.904],[55.06,-147.812],[55.25,-147.883]],"c":true}]},{"t":22.845703125}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-2.158,-49.561],[-4.375,-45.729],[-2.33,-42.126],[0,-45.603]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.581,-133.813],[-8.625,-118.995],[-1.206,-105.063],[7.25,-118.508]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.581,-133.813],[-8.625,-118.995],[-1.206,-105.063],[7.25,-118.508]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.316,-156.25],[-3.036,-139.242],[2.823,-123.25],[9.5,-138.682]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.308,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.316,-156.25],[-3.036,-139.242],[2.823,-123.25],[9.5,-138.682]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.796,-160.587],[-4.036,-149.159],[0.421,-138.413],[5.5,-148.783]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.796,-160.587],[-4.036,-149.159],[0.421,-138.413],[5.5,-148.783]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.529,-165.181],[-2.036,-156.748],[1.252,-148.819],[5,-156.471]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.529,-165.181],[-2.036,-156.748],[1.252,-148.819],[5,-156.471]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.782,-169.25],[-1.771,-161.906],[0.583,-155],[3.266,-161.664]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.846,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.782,-169.25],[-1.771,-161.906],[0.583,-155],[3.266,-161.664]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.786,-177.125],[-0.737,-169.652],[0.667,-162.625],[2.268,-169.406]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23.153,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.786,-177.125],[-0.737,-169.652],[0.667,-162.625],[2.268,-169.406]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.554,-182.125],[0.343,-176.907],[1.435,-172],[2.723,-176.735]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.554,-182.125],[0.343,-176.907],[1.435,-172],[2.723,-176.735]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.795,-183.024],[0.942,-180.1],[1.728,-177.351],[2.625,-180.004]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.77,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.795,-183.024],[0.942,-180.1],[1.728,-177.351],[2.625,-180.004]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.042,-183.789],[0.403,-181.599],[0.992,-179.539],[1.664,-181.527]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":28.385,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.042,-183.789],[0.403,-181.599],[0.992,-179.539],[1.664,-181.527]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.042,-183.539],[0.598,-181.973],[0.992,-180.5],[1.469,-181.921]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":29.692,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.042,-183.539],[0.598,-181.973],[0.992,-180.5],[1.469,-181.921]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.039,-184.477],[0.636,-183.49],[1.007,-182.562],[1.43,-183.458]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.039,-184.477],[0.636,-183.49],[1.007,-182.562],[1.43,-183.458]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.784,-183.539],[0.754,-183.519],[0.781,-183.5],[0.812,-183.518]],"c":true}]},{"t":32.3076171875}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[1,23],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,127],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.308,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-49.683,-110.75],[-53.768,-107.221],[-49.785,-103.465],[-46.518,-106.994]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-49,-145.25],[-59,-129.75],[-49.25,-113.25],[-41.25,-128.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.923,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-49,-145.25],[-59,-129.75],[-49.25,-113.25],[-41.25,-128.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50.57,-148.694],[-58.035,-137.123],[-50.757,-124.806],[-44.785,-136.377]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50.57,-148.694],[-58.035,-137.123],[-50.757,-124.806],[-44.785,-136.377]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-51.109,-152.5],[-55.937,-143.66],[-51.23,-134.25],[-47.367,-143.09]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.538,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-51.109,-152.5],[-55.937,-143.66],[-51.23,-134.25],[-47.367,-143.09]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50.082,-161.75],[-52.62,-155.978],[-50.153,-149.833],[-48.081,-155.605]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24.154,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50.082,-161.75],[-52.62,-155.978],[-50.153,-149.833],[-48.081,-155.605]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-49.943,-166.375],[-51.336,-162.137],[-49.989,-157.625],[-48.812,-161.863]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25.462,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-49.943,-166.375],[-51.336,-162.137],[-49.989,-157.625],[-48.812,-161.863]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50.051,-167.781],[-50.299,-167.024],[-50.059,-166.219],[-49.849,-166.976]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30.692,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50.051,-167.781],[-50.299,-167.024],[-50.059,-166.219],[-49.849,-166.976]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50.066,-166.969],[-50.148,-166.999],[-50.069,-167.031],[-50,-167.001]],"c":true}]},{"t":32}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":33,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Melting Rhombus","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,401.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-212.532],[39.263,-202.628],[30.555,-198.249],[21.674,-193.783],[14.766,-190.309],[12.485,-189.162],[9.251,-187.535],[0.883,-183.327],[-45.25,-219.417],[-48.683,-221.158],[-55.48,-211.907],[-59.461,-213.925],[-62.559,-215.496],[-65.027,-216.748],[-68.483,-220.614],[-72.231,-226.593],[-65.368,-227.903],[-50.363,-233.033],[-36.852,-239.002],[-26.744,-243.374],[-17.522,-251.573],[-12.03,-251.518],[1.992,-257.768],[18.112,-247.442],[23.3,-250.238],[38.238,-247.195],[51.673,-240.426],[64.764,-228.202]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-212.472],[39.263,-202.451],[30.555,-198.02],[21.674,-193.502],[14.766,-189.987],[12.485,-188.826],[9.251,-187.181],[0.883,-182.923],[-45.249,-219.22],[-48.682,-220.982],[-55.48,-211.839],[-59.461,-213.881],[-62.559,-215.47],[-65.027,-216.737],[-68.483,-220.613],[-72.231,-226.593],[-65.693,-224.88],[-49.407,-234.465],[-37.249,-236.529],[-23.506,-246.001],[-17.672,-239.832],[-12.453,-243.82],[2.286,-251.71],[18.34,-245.063],[23.242,-238.41],[38.109,-238.265],[53.822,-235.293],[64.883,-225.529]],"c":true}]},{"i":{"x":0,"y":0.848},"o":{"x":0.167,"y":0.167},"n":"0_0p848_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-212.472],[39.263,-202.451],[30.555,-198.02],[21.674,-193.502],[14.766,-189.987],[12.485,-188.826],[9.251,-187.181],[0.883,-182.923],[-45.249,-219.22],[-48.682,-220.982],[-55.48,-211.839],[-59.461,-213.881],[-62.559,-215.47],[-65.027,-216.737],[-68.483,-220.613],[-72.231,-226.593],[-65.693,-224.88],[-49.407,-234.465],[-37.249,-236.529],[-23.506,-246.001],[-17.672,-239.832],[-12.453,-243.82],[2.286,-251.71],[18.34,-245.063],[23.242,-238.41],[38.109,-238.265],[53.822,-235.293],[64.883,-225.529]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-212.46],[39.263,-202.417],[30.555,-197.976],[21.674,-193.447],[14.766,-189.924],[12.485,-188.761],[9.251,-187.112],[0.883,-182.845],[-45.249,-219.182],[-48.682,-220.947],[-55.48,-211.826],[-59.461,-213.873],[-62.559,-215.465],[-65.027,-216.735],[-68.483,-220.613],[-72.231,-226.593],[-65.695,-224.875],[-49.403,-233.803],[-37.244,-237.135],[-23.508,-245.328],[-17.668,-240.434],[-12.455,-243.782],[2.281,-251.001],[18.336,-244.964],[23.238,-238.921],[38.094,-237.605],[53.803,-234.618],[64.884,-226.144]],"c":true}]},{"i":{"x":0.873,"y":0.706},"o":{"x":1,"y":0.152},"n":"0p873_0p706_1_0p152","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-212.46],[39.263,-202.417],[30.555,-197.976],[21.674,-193.447],[14.766,-189.924],[12.485,-188.761],[9.251,-187.112],[0.883,-182.845],[-45.249,-219.182],[-48.682,-220.947],[-55.48,-211.826],[-59.461,-213.873],[-62.559,-215.465],[-65.027,-216.735],[-68.483,-220.613],[-72.231,-226.593],[-65.695,-224.875],[-49.403,-233.803],[-37.244,-237.135],[-23.508,-245.328],[-17.668,-240.434],[-12.455,-243.782],[2.281,-251.001],[18.336,-244.964],[23.238,-238.921],[38.094,-237.605],[53.803,-234.618],[64.884,-226.144]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-67.408,-220.469],[-44.752,-196.843],[-32.206,-218.343],[-25.006,-197.843],[-13.657,-218.093],[-14.061,-205.843],[-2.42,-168.093],[14.084,-208.343],[19.28,-188.093],[23.571,-203.093],[35.349,-185.343],[66.108,-216.843]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.385},"n":"0p833_1_0p167_0p385","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-67.408,-220.469],[-44.752,-196.843],[-32.206,-218.343],[-25.006,-197.843],[-13.657,-218.093],[-14.061,-205.843],[-2.42,-168.093],[14.084,-208.343],[19.28,-188.093],[23.571,-203.093],[35.349,-185.343],[66.108,-216.843]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.252,-193.093],[-40.956,-181.343],[-35.256,-197.593],[-15.907,-164.593],[-6.311,-182.093],[8.58,-144.343],[23.584,-175.343],[24.53,-169.343],[28.821,-161.093],[42.849,-178.593],[55.108,-194.593]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.252,-193.093],[-40.956,-181.343],[-35.256,-197.593],[-15.907,-164.593],[-6.311,-182.093],[8.58,-144.343],[23.584,-175.343],[24.53,-169.343],[28.821,-161.093],[42.849,-178.593],[55.108,-194.593]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.252,-191.843],[-37.456,-170.343],[-32.506,-181.593],[-19.907,-152.843],[-3.186,-127.093],[6.58,-141.843],[10.084,-135.843],[28.53,-164.593],[32.071,-158.593],[43.849,-176.093],[55.108,-194.593]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.252,-191.843],[-37.456,-170.343],[-32.506,-181.593],[-19.907,-152.843],[-3.186,-127.093],[6.58,-141.843],[10.084,-135.843],[28.53,-164.593],[32.071,-158.593],[43.849,-176.093],[55.108,-194.593]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.127,-191.843],[-34.706,-165.593],[-29.756,-170.843],[-17.907,-145.093],[-0.311,-118.218],[9.83,-134.593],[12.334,-129.343],[23.03,-144.843],[28.446,-160.593],[30.474,-154.343],[55.108,-194.593]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":21.801,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.127,-191.843],[-34.706,-165.593],[-29.756,-170.843],[-17.907,-145.093],[-0.311,-118.218],[9.83,-134.593],[12.334,-129.343],[23.03,-144.843],[28.446,-160.593],[30.474,-154.343],[55.108,-194.593]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-50.877,-191.468],[-28.706,-154.343],[-22.006,-149.843],[-6.157,-125.593],[-0.311,-117.343],[7.83,-127.593],[10.584,-125.093],[22.03,-140.093],[31.071,-155.593],[43.849,-176.093],[55.108,-194.593]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":22.6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-50.877,-191.468],[-28.706,-154.343],[-22.006,-149.843],[-6.157,-125.593],[-0.311,-117.343],[7.83,-127.593],[10.584,-125.093],[22.03,-140.093],[31.071,-155.593],[43.849,-176.093],[55.108,-194.593]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.252,-191.718],[-28.706,-154.343],[-22.506,-145.343],[-5.657,-120.093],[-0.311,-113.593],[6.08,-118.343],[10.834,-123.343],[22.03,-140.093],[31.071,-155.593],[43.849,-176.093],[55.108,-194.593]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":24,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.252,-191.718],[-28.706,-154.343],[-22.506,-145.343],[-5.657,-120.093],[-0.311,-113.593],[6.08,-118.343],[10.834,-123.343],[22.03,-140.093],[31.071,-155.593],[43.849,-176.093],[55.108,-194.593]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[58.957,-200.882],[39.263,-168.516],[30.555,-154.204],[21.674,-139.61],[14.766,-128.256],[12.485,-124.508],[9.251,-119.193],[0.883,-105.441],[-45.033,-181.527],[-48.467,-187.216],[-55.48,-198.837],[-59.461,-205.434],[-62.559,-210.567],[-65.027,-214.657],[-68.483,-220.384],[-72.231,-226.593],[-66.908,-217.469],[-51.252,-191.968],[-28.706,-154.343],[-22.006,-143.593],[-5.657,-115.843],[0.439,-106.093],[7.33,-117.093],[12.834,-124.843],[22.03,-140.093],[31.071,-155.593],[43.849,-176.093],[55.108,-194.593]],"c":true}]},{"t":26}]},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":16,"op":27,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"M Little Rays matte","parent":26,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[0.767,-211.441],[-72.231,-226.593],[-122.987,-226.593],[-122.987,0],[-75.856,0],[78.227,0],[125.056,0],[125.056,-226.593]],"c":true}},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":13,"op":25,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"M Little Rays","parent":26,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[61.5,-117],[59.295,-114.06],[57,-111],[104,-101.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[106.75,-100.25],[88.28,-103.04],[108,-94],[137.25,-85.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[106.75,-100.25],[88.28,-103.04],[108,-94],[137.25,-85.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[124.75,-92.5],[105.53,-97.29],[124.25,-88.5],[141.5,-84.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[124.75,-92.5],[105.53,-97.29],[124.25,-88.5],[141.5,-84.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[138,-86.75],[118.78,-91.54],[137.5,-82.75],[154.75,-78.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[138,-86.75],[118.78,-91.54],[137.5,-82.75],[154.75,-78.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[141.125,-84.5],[133.905,-86.165],[141,-83.875],[154.75,-78.5]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 9"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[43,-89.5],[38.58,-84.417],[33,-78],[92,-48.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[81.25,-57.5],[58.138,-70.446],[77.75,-53.5],[104.25,-39.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[81.25,-57.5],[58.138,-70.446],[77.75,-53.5],[104.25,-39.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[95,-46.5],[74.388,-57.196],[92.5,-43.25],[109.5,-34.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[95,-46.5],[74.388,-57.196],[92.5,-43.25],[109.5,-34.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[106.25,-38.25],[96.388,-42.946],[104.75,-37.25],[116.25,-31]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[106.25,-38.25],[96.388,-42.946],[104.75,-37.25],[116.25,-31]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[118.625,-29.375],[116.638,-30.071],[119.125,-29.125],[119.625,-28.875]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[41,-42.5],[74.5,-12.5],[115,8.5],[81.5,-22]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[70.5,-22.5],[107.5,4.75],[147.5,25.75],[109.75,-1.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[70.5,-22.5],[107.5,4.75],[147.5,25.75],[109.75,-1.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[94.75,-6.75],[121.5,13],[152.25,27.5],[122.5,9.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[94.75,-6.75],[121.5,13],[152.25,27.5],[122.5,9.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[111.75,5.75],[132.25,18],[152.25,27.5],[133.5,15.75]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[111.75,5.75],[132.25,18],[152.25,27.5],[133.5,15.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[123.5,13],[134.125,17.125],[146.125,22],[134.75,17]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.329,12.86],[-31.648,55.368],[-36.769,107.522],[-22.462,64.62]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-30.236,64.919],[-43.295,109.245],[-42.367,137.427],[-35.379,110.404]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-30.236,64.919],[-43.295,109.245],[-42.367,137.427],[-35.379,110.404]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-33.71,83.317],[-40.795,111.528],[-43.575,142.754],[-37.591,112.073]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-33.71,83.317],[-40.795,111.528],[-43.575,142.754],[-37.591,112.073]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-36.511,94.42],[-40.265,119.906],[-43.625,148.458],[-38.045,122.432]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-36.511,94.42],[-40.265,119.906],[-43.625,148.458],[-38.045,122.432]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-37.75,133.75],[-38.5,139.25],[-38.5,148],[-36,141.5]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-0.5,-34.5],[-20,-10.5],[-2,-23]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-21.5,-10.75],[-32.25,-2.75],[-17.75,-9.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-21.5,-10.75],[-32.25,-2.75],[-17.75,-9.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-34.5,-2.5],[-44.25,6.75],[-27.75,-5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-34.5,-2.5],[-44.25,6.75],[-27.75,-5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-53,11.25],[-62.75,20.5],[-46.25,8.75]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-53,11.25],[-62.75,20.5],[-46.25,8.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-90.75,40.5],[-90.75,41],[-89.75,39.75]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-57,27.5],[-72.5,39],[-97,66],[-69.5,49]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-90.25,60.75],[-98.25,65.25],[-107.75,75.75],[-96.75,68.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-90.25,60.75],[-98.25,65.25],[-107.75,75.75],[-96.75,68.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-99.75,67.25],[-105.75,71.25],[-111.75,77.5],[-104,73.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-99.75,67.25],[-105.75,71.25],[-111.75,77.5],[-104,73.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-108.375,73.375],[-112.875,76.625],[-117,80.75],[-111.375,77.375]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-108.375,73.375],[-112.875,76.625],[-117,80.75],[-111.375,77.375]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-117.625,82],[-118.75,82.375],[-119.625,83.25],[-118.375,82.375]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-52,-39.5],[-75.5,-28.5],[-99,-8],[-71.5,-19]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-72.25,-23.5],[-85.75,-18.25],[-102.75,-6.75],[-86.5,-13.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-72.25,-23.5],[-85.75,-18.25],[-102.75,-6.75],[-86.5,-13.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-92,-13.5],[-99.5,-9.75],[-111.5,-2.25],[-98.5,-6.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-92,-13.5],[-99.5,-9.75],[-111.5,-2.25],[-98.5,-6.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-97.125,-9.875],[-104.125,-7],[-113.625,-0.875],[-102.875,-5.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-97.125,-9.875],[-104.125,-7],[-113.625,-0.875],[-102.875,-5.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-109.5,-3.125],[-110.625,-2.75],[-113.625,-0.75],[-111.25,-2]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-54,-71.5],[-84,-69.5],[-105.5,-57.5],[-77,-61.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-76.5,-64.75],[-91.75,-64],[-105.5,-57.5],[-89.25,-59]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-76.5,-64.75],[-91.75,-64],[-105.5,-57.5],[-89.25,-59]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-96.25,-59],[-107,-57],[-115.75,-53.25],[-106.25,-54.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-96.25,-59],[-107,-57],[-115.75,-53.25],[-106.25,-54.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-103.125,-56.75],[-113.125,-54.875],[-126.25,-50.125],[-113.25,-53.125]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-103.125,-56.75],[-113.125,-54.875],[-126.25,-50.125],[-113.25,-53.125]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-116.375,-52.875],[-117.125,-52.75],[-126.25,-50.125],[-117.25,-52.75]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-63,-121],[-107.5,-101.5],[-53.5,-118.5],[-57.957,-119.673]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-96,-109],[-112.5,-101.75],[-98.25,-104.25],[-82.376,-111.945]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-96,-109],[-112.5,-101.75],[-98.25,-104.25],[-82.376,-111.945]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-110.25,-103.5],[-119.5,-100.25],[-108,-102],[-96.626,-106.445]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-110.25,-103.5],[-119.5,-100.25],[-108,-102],[-96.626,-106.445]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-112.75,-102.125],[-125.5,-98.375],[-111,-101.375],[-103.876,-104.07]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-112.75,-102.125],[-125.5,-98.375],[-111,-101.375],[-103.876,-104.07]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-120,-100.5],[-125.5,-98.375],[-120.25,-100.125],[-117.251,-101.445]],"c":true}]},{"t":24}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":25,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"Rhombus side matte","parent":22,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-100,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.5,-171.5],[-13.5,-125],[-22.5,67],[-7,85.5],[116,-124.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.5,-171.5],[-61.5,-125],[1.5,-24],[17,-5.5],[116,-124.5]],"c":true}]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"n":"0p667_0p667_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.5,-171.5],[-61.5,-125],[1.5,-24],[17,-5.5],[116,-124.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[3.591,-221],[-31.5,-125],[3.591,-32],[17,-18],[116,-124.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0.365},"n":"0p833_0p833_1_0p365","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[3.591,-221],[-31.5,-125],[3.591,-32],[17,-18],[116,-124.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.587,-202.04],[68.025,-125],[-1.619,-29.334],[17,9.599],[116,-124.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.587,-202.04],[68.025,-125],[-1.619,-29.334],[17,9.599],[116,-124.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.333,-192.608],[81.711,-125],[1.333,-30.105],[17,13.395],[116,-124.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.333,-192.608],[81.711,-125],[1.333,-30.105],[17,13.395],[116,-124.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[40,-254.5],[1.5,-203],[87.5,-125],[1.5,-3.5],[17,15],[116,-124.5]],"c":true}]},{"t":15}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.57,0,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"Rhombus side","parent":22,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7,-72],[1.151,-62.5],[-4.629,-72],[1.266,-81.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7,-97],[1.151,-77.5],[-4.629,-97],[1.266,-114.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7,-97],[1.151,-77.5],[-4.629,-97],[1.266,-114.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.556,-203.5],[1.151,-117.5],[-7.073,-203.5],[1.386,-242]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.556,-203.5],[1.151,-117.5],[-7.073,-203.5],[1.386,-242]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[1.034,-127.691],[-72.231,-226.593],[0.949,-269.843]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[1.034,-127.691],[-72.231,-226.593],[0.949,-269.843]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[82.102,-226.593],[1.017,-137.775],[-79.731,-226.593],[1,-314.718]],"c":true}]},{"i":{"x":0.843,"y":0.414},"o":{"x":1,"y":0},"n":"0p843_0p414_1_0","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[82.102,-226.593],[1.017,-137.775],[-79.731,-226.593],[1,-314.718]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[0.883,-105.441],[-72.231,-226.593],[1.25,-226.593]],"c":true}]},{"t":15}]},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":1,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"Rhombus","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.648,0.648,0.648],"y":[1,0.648,0.648]},"o":{"x":[0.305,0.305,0.305],"y":[0,0.305,0.305]},"n":["0p648_1_0p305_0","0p648_0p648_0p305_0p305","0p648_0p648_0p305_0p305"],"t":4,"s":[90,100,100],"e":[110,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,0.833,0.833]},"o":{"x":[0.398,0.398,0.398],"y":[0,0.398,0.398]},"n":["0p833_1_0p398_0","0p833_0p833_0p398_0p398","0p833_0p833_0p398_0p398"],"t":7,"s":[110,100,100],"e":[90,100,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7,-72],[1.151,-62.5],[-4.629,-72],[1.266,-81.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7,-97],[1.151,-77.5],[-4.629,-97],[1.266,-114.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7,-97],[1.151,-77.5],[-4.629,-97],[1.266,-114.75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.556,-203.5],[1.151,-117.5],[-7.073,-203.5],[1.386,-242]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.556,-203.5],[1.151,-117.5],[-7.073,-203.5],[1.386,-242]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[1.034,-127.691],[-72.231,-226.593],[0.949,-269.843]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[1.034,-127.691],[-72.231,-226.593],[0.949,-269.843]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[82.102,-226.593],[1.017,-137.775],[-79.731,-226.593],[1,-314.718]],"c":true}]},{"i":{"x":0.843,"y":0.414},"o":{"x":1,"y":0},"n":"0p843_0p414_1_0","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[82.102,-226.593],[1.017,-137.775],[-79.731,-226.593],[1,-314.718]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[0.883,-105.441],[-72.231,-226.593],[1.25,-226.593]],"c":true}]},{"t":15}]},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":4,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"M Rays matte","parent":26,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.099,"y":0.59},"n":"0p833_0p833_0p099_0p59","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[59.484,-201.012],[0.904,-106.522],[-57.155,-201.012],[-105.931,-201.012],[-105.931,-0.581],[-65.281,-0.581],[-65.266,-115.065],[0.809,-17.406],[67.626,-114.805],[67.611,-0.581],[108,-0.581],[108,-201.012]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[70.303,-219.318],[0.889,-105.749],[-67.943,-219.318],[-118.137,-219.318],[-118.137,-0.165],[-72.849,-0.165],[-72.849,-145.29],[0.889,-12.809],[75.208,-144.999],[75.208,-0.165],[120.206,-0.165],[120.206,-219.318]],"c":true}]},{"i":{"x":0.172,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p172_1_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[70.303,-219.318],[0.889,-105.749],[-67.943,-219.318],[-118.137,-219.318],[-118.137,-0.165],[-72.849,-0.165],[-72.849,-145.29],[0.889,-12.809],[75.208,-144.999],[75.208,-0.165],[120.206,-0.165],[120.206,-219.318]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[0.883,-105.441],[-72.231,-226.593],[-122.987,-226.593],[-122.987,0],[-75.856,0],[-75.856,-149.551],[0.883,-23.566],[78.227,-149.249],[78.227,0],[125.056,0],[125.056,-226.593]],"c":true}]},{"t":25}]},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.18,0.3,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":13,"op":25,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"M Rays","parent":26,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[204,-154],[72,-130.5],[138.5,-90],[143,-78.5],[16,-114],[127.847,-27.796],[159.5,-20],[145.5,-16],[74.336,-46.732],[34.5,-81],[18.844,-61.377],[75.017,-37.97],[138,14.5],[135.5,33],[-1.5,-63],[135.5,94.5],[128,137],[18,122],[5,-36],[-37.5,107],[-79,104],[-20,-0.5],[-118,104.5],[-128.5,96],[-42.059,-12.573],[-4.465,-33.968],[-20.5,-59],[-57.457,-14.831],[-125.5,13],[-125,2.5],[-38.5,-62],[-70.521,-61.148],[-99.5,-50],[-126,-50],[-89.407,-72.14],[-21.746,-79.428],[-43.5,-117],[-93.569,-85.237],[-130.5,-91.5],[-125.5,-99.5],[-68,-130],[-166,-147],[-192,177],[201,156]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[204,-154],[62.5,-137],[155,-99],[162.5,-65],[63.5,-90.5],[134.123,-36.586],[159.5,-20],[148.5,-11],[128.229,-18.277],[90,-32],[128.734,3.419],[134.498,8.675],[141,14.5],[137.5,36],[35.5,-32.5],[133.5,83],[128,137],[18,129],[0,24],[-30,129],[-99,126],[-78,75],[-144,120],[-136,71],[-132.279,77.921],[-125.022,70.853],[-57.5,-7.5],[-101.847,16.717],[-150,40],[-134,-3],[-62,-52],[-93.313,-47.468],[-138,-41],[-135,-58],[-132.574,-61.329],[-129.167,-65.208],[-107.5,-75],[-126.073,-78.263],[-136,-81],[-138,-106],[-74.5,-132.5],[-166,-147],[-192,177],[201,156]],"c":true}]},{"t":17}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":18,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"M","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.099,"y":0.59},"n":"0p833_0p833_0p099_0p59","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[59.484,-201.012],[0.904,-106.522],[-57.155,-201.012],[-105.931,-201.012],[-105.931,-0.581],[-65.281,-0.581],[-65.266,-115.065],[0.809,-17.406],[67.626,-114.805],[67.611,-0.581],[108,-0.581],[108,-201.012]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[70.303,-219.318],[0.889,-105.749],[-67.943,-219.318],[-118.137,-219.318],[-118.137,-0.165],[-72.849,-0.165],[-72.849,-145.29],[0.889,-12.809],[75.208,-144.999],[75.208,-0.165],[120.206,-0.165],[120.206,-219.318]],"c":true}]},{"i":{"x":0.172,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p172_1_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[70.303,-219.318],[0.889,-105.749],[-67.943,-219.318],[-118.137,-219.318],[-118.137,-0.165],[-72.849,-0.165],[-72.849,-145.29],[0.889,-12.809],[75.208,-144.999],[75.208,-0.165],[120.206,-0.165],[120.206,-219.318]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[74.602,-226.593],[0.883,-105.441],[-72.231,-226.593],[-122.987,-226.593],[-122.987,0],[-75.856,0],[-75.856,-149.551],[0.883,-23.566],[78.227,-149.249],[78.227,0],[125.056,0],[125.056,-226.593]],"c":true}]},{"t":25}]},"nm":"M"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"M"}],"ip":16,"op":43,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":1,"nm":"ResizerTemp","parent":27,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":43,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":1,"nm":"White Solid 42","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":43,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":43,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/N.json b/example/shared/src/commonMain/composeResources/files/mobilo/N.json new file mode 100644 index 00000000..1d5c8a91 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/N.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"N","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[55.078,-226.593],[55.078,-72.51],[-52.176,-226.593],[-100.818,-226.593],[-100.818,0],[-53.687,0],[-53.687,-154.688],[53.265,0],[101.907,0],[101.907,-226.593]],"c":true}},"nm":"N"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"N"}],"ip":23,"op":32,"st":-24,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Base_012","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-2,28.5],[0,0],[0,-14],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.184,6.998],[0.786,17.596]],"o":[[-25,0],[0,0],[0,14],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.5,-19],[-1.25,-28]],"v":[[102,-126.5],[55,-126.5],[57.25,-75],[55,27.75],[-52.75,-126.5],[-101,-126.5],[-101,100],[-54,100],[-54,-54],[53,100],[101,100],[103.25,26],[100.75,-71.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.941,1.928],[-0.872,-1.199]],"o":[[-1.173,-2.404],[1.071,1.473]],"v":[[169.74,-5.596],[167.622,-4.417]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":21,"op":23,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"White_11","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3,-0.5],[-5.5,1.5]],"o":[[-3,0.5],[5.5,-1.5]],"v":[[151.5,15],[151,21]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":20,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Accent_11","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.135,-0.558],[-0.007,-0.31],[-1.039,-0.041],[-0.175,2.011],[1.601,-1.509]],"o":[[-0.053,0.218],[0.037,1.626],[1.238,0.049],[0.231,-2.653],[-0.356,0.335]],"v":[[88.843,13.388],[88.777,14.191],[91.535,16.792],[94.245,13.91],[89.607,12.049]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":20,"op":21,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Base_011","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-3.5,27.5],[0,0],[0,-14],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.184,6.998],[0.786,17.596]],"o":[[-25,0],[0,0],[0,14],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.5,-19],[-1.25,-28]],"v":[[102,-124.5],[55,-124.5],[59.25,-73],[55,27.75],[-52.75,-126.5],[-101,-126.5],[-101,100],[-54,100],[-54,-54],[53,100],[101,100],[103.25,26],[98.75,-69.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.861,3.813],[-1.725,-2.372]],"o":[[-2.32,-4.754],[2.118,2.913]],"v":[[169.57,-4.746],[165.382,-2.413]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"}],"ip":20,"op":21,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"White_10","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.051,-1.843],[-0.655,3.29]],"o":[[-1.051,1.843],[0.655,-3.29]],"v":[[12.295,70.088],[19.752,72.713]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[8,-4],[-7.5,3.5],[-5.5,4.5]],"o":[[-8,4],[7.5,-3.5],[3.12,-2.553]],"v":[[145.5,18],[135.5,27.5],[148.5,22]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.531,-1.446],[-2.5,2]],"o":[[-3.5,2],[2.5,-2]],"v":[[109.5,89],[112,91.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Accent_10","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.124,-4.262],[-0.001,-0.432],[-2.597,-0.891],[-0.304,2.801]],"o":[[-0.08,0.303],[0.003,2.27],[2.884,0.99],[0.49,-4.517]],"v":[[86.891,15.437],[86.775,16.557],[88.597,25.016],[94.416,16.327]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.25,0.5],[-3.25,-1.5],[0,2.25]],"o":[[-2.25,-0.5],[2.093,0.966],[0,-2.25]],"v":[[24.25,55],[23.5,61],[30,59.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Base_10","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.731,3.246],[-3.002,-3.999]],"o":[[-4.642,-5.518],[3.002,3.999]],"v":[[169.07,-3.996],[161.632,0.087]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.387,-2.08],[-1,1.5]],"o":[[-1.5,2.25],[1.177,-1.765]],"v":[[-97,-220.5],[-92.75,-218.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3,5.5],[0,0],[-0.75,-11.5],[0,0],[2.5,-8.75],[-4,-25.75],[0,0],[4,3.75],[1.25,4],[2.463,3.233],[0,0],[6.25,-4.5],[-5.28,-20],[-0.109,-33.769],[0,0],[0,0],[0,0],[-2.5,-7.5],[-6,0],[-4,0],[0.5,4.25],[0,8.75],[-0.547,7.747],[4.1,18.635],[-1.25,6.25],[-1.132,6.227],[6,0.25],[-0.25,6.5]],"o":[[-13,0],[0,0],[0.859,13.175],[0,0],[-3.366,11.781],[3.876,24.951],[0,0],[-4,-3.75],[-0.577,-1.848],[-2.869,-3.766],[0,0],[-6.25,4.5],[4.394,16.646],[0.172,53.462],[0,0],[0,0],[0,0],[2.5,7.5],[11.5,0],[0.5,-2.75],[-0.5,-4.25],[0,-8.75],[1.5,-21.25],[-2.75,-12.5],[1.25,-6.25],[4,-22],[2.5,-3.75],[0.18,-4.667]],"v":[[102,-128.5],[55,-128.5],[54.25,-110.5],[61.5,-93.5],[54.5,-89.25],[56.5,-42],[54.5,24],[-32.5,-101.25],[-42.75,-110.75],[-46.736,-121.582],[-54,-126.5],[-100.25,-124],[-103.72,-93.5],[-100.923,-12.999],[-101,100],[-54,100],[-53.5,-52],[45.5,82.5],[55,100],[103,100],[101.5,92.5],[104,79.75],[99,57.25],[103.75,-18.5],[102.5,-39.75],[105.5,-65],[99,-96.75],[104.75,-111]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"White_09","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.463,-4.045],[-7.82,-1.962]],"o":[[-1.463,4.045],[7.82,1.962]],"v":[[15.303,70.796],[28.729,77.937]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3,-2.5],[-3,4]],"o":[[-4.155,3.462],[3,-4]],"v":[[106,89.5],[109.5,94.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[12.5,-6.5],[-5,1.5],[-2.5,4.5]],"o":[[-12.5,6.5],[5,-1.5],[2.5,-4.5]],"v":[[141,19.5],[123.5,36],[142.5,24.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Accent_09","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240.5,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.25,1.25],[-0.75,-5],[-2.25,2.25]],"o":[[-4.25,-1.25],[0.75,5],[2.25,-2.25]],"v":[[40.75,54.5],[33,60],[44.75,63.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.268,0.152],[0.081,-3.88],[-4.476,-0.467],[-0.949,6.688]],"o":[[-5.504,-0.133],[-0.126,6.019],[3.738,0.39],[0.835,-5.883]],"v":[[97.79,17.27],[90.339,26.044],[91.656,49.763],[104.014,27.472]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.255,-0.362],[0,0],[2.894,-2.894],[0,0],[0,0],[0.362,2.532],[3.979,-0.362],[4.702,-1.809],[1.809,-3.979]],"o":[[-3.255,0.362],[0,0],[-2.983,2.983],[0,0],[0,0],[-0.362,-2.532],[0.362,-4.34],[-4.702,1.809],[-0.723,-1.809]],"v":[[77.351,83.362],[78.798,93.489],[72.287,92.404],[75.543,99.638],[96.16,100],[100.138,94.213],[93.989,93.851],[90.011,85.894],[85.67,92.043]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Base_09","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3],[0,2.5]],"o":[[0,3],[0,-2.5]],"v":[[-94,-220],[-88,-220]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.5,-2.5],[-5.5,3.5]],"o":[[-4.5,2.5],[5.5,-3.5]],"v":[[-111,-135],[-103,-122]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.245,3.669],[2.219,-3.947],[-4.394,1.394]],"o":[[-2.245,-3.669],[-2.259,4.018],[4.394,-1.394]],"v":[[167.64,-4.541],[155.965,-1.35],[161.696,4.343]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.5,5],[4.272,-2.525],[-3.75,-4.5],[3.769,-5.14],[-1.917,-5.112],[0.263,-4.743],[0.25,-5.75],[0,0],[0,0],[0,0],[-5,-9.5],[0,-11],[0,0],[15.889,9.346],[1.5,9],[-3,8],[-1.5,14],[-1.5,14.5],[-7,17],[14,-3.5],[0.5,8],[0,0],[0,0],[0,-9.5],[-5.5,-10.5],[1.737,-9.552],[-6,-15],[0,0],[4.884,9.767],[11.5,14],[4.685,5.857],[1,3],[6.75,-2.75],[5.5,-1.25],[1.25,-3.5]],"o":[[-2.846,-4.065],[-5.5,3.25],[-6.25,-2.5],[-2.75,3.75],[2.25,6],[-0.25,4.5],[-0.25,5.75],[0,0],[0,0],[0,0],[5,9.5],[28,0],[0,0],[-4.25,-2.5],[-1.5,-9],[3,-8],[1.5,-14],[1.5,-14.5],[4.573,-11.106],[8,-8.5],[-0.5,-8],[0,0],[0,0],[0,9.5],[-6,-4],[-1,5.5],[3.974,9.935],[0,0],[-4,-20.5],[-5.166,-6.29],[-4,-5],[-1,-3],[-3.25,-1],[-5.5,1.25],[-4.75,-2.25]],"v":[[-79.75,-127.75],[-90.5,-130],[-88.25,-113.75],[-102.25,-117.75],[-101.5,-106],[-103.75,-95.75],[-101,-82.5],[-101,100],[-54,100],[-54,-49.5],[37.5,75.5],[41.5,100],[110,100],[97.25,81.5],[99,67.5],[92,51.5],[106.5,5],[101.5,-32],[112.5,-69],[101.5,-90.5],[108.5,-113],[102,-131.5],[55,-131.5],[48,-113],[55.5,-89.5],[42.5,-80],[52,-49.5],[56.5,23.5],[54.5,18],[22.5,-27],[-35.5,-105.25],[-39.5,-115.5],[-53.25,-121.25],[-65,-124.5],[-70.25,-120]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":16,"op":18,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"White_08","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.5,0],[0,0],[0,0]],"o":[[-4.5,0],[0,0],[0,0]],"v":[[104,92.5],[91,99],[105,99]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5.687,3.148],[-7.77,-3.691],[-11.855,-3.962],[-1.529,2.813],[0,0]],"o":[[-9.018,-4.992],[7.691,3.653],[5.942,1.986],[1.013,-1.864],[0,0]],"v":[[29.515,73.598],[29.093,79.768],[50.576,89.136],[68.577,96.078],[52.193,86.815]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-8.5,7.5],[10.5,-10],[5,-8.5],[-7,11.5],[-4.5,5.5]],"o":[[8.5,-7.5],[-10.5,10],[-5,8.5],[7,-11.5],[4.5,-5.5]],"v":[[132,30.5],[118.5,35],[97.5,64.5],[105,55.5],[122.5,41.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Accent_08","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-15],[6.5,-6.5],[-11.5,-35],[-2,-14],[0,0],[-14,0],[13,-2],[8,0]],"o":[[-8,-34],[-1.768,1.768],[-9,-10],[2,14],[0,0],[4,-6],[4.5,-7.5],[-19.026,0]],"v":[[74,67],[24.5,-1],[67,70],[29,64],[60,100],[110,100],[103,83],[91,29]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Base_08","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.543,2.851],[-1.184,-2.865]],"o":[[-1.543,-2.851],[0.93,2.249]],"v":[[159.703,38.049],[154.781,41.138]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.499,7.09],[-5.5,-7.5]],"o":[[-5.5,-6],[4.921,6.711]],"v":[[163.5,-4.5],[147,6.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.85,2.85],[-1.5,-3]],"o":[[-2.5,-2.5],[2.109,4.219]],"v":[[-165.5,-125.5],[-171,-121.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.029,4.63],[-0.721,-5.048]],"o":[[-1,-4.5],[0.5,3.5]],"v":[[-77.5,-223.5],[-85.5,-221]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.5,0.5],[-3,-17.5],[-4.25,-10.5],[-0.413,-18.063],[-0.013,-24.659],[0,0],[0,0],[0,0],[-12.142,-23.272],[0,0],[0,0],[-5.35,8.269],[6,-3],[3.5,1.5],[4.75,-5],[3.5,3.75],[2.75,-1],[0.25,9],[2.75,7.5],[-0.5,7],[6.75,1.25],[0,0],[-8.822,19.313],[15.5,4.75],[8.764,-39.589],[-1.907,-25.991],[0,6.5],[11.381,8.985],[6.75,13],[6.327,4.482],[4,7],[4.17,-2.69],[-3.75,-9],[2.863,7.445]],"o":[[-2.5,-0.5],[2.403,14.017],[1.035,2.557],[0.44,19.234],[0.025,47.275],[0,0],[0,0],[0,0],[6,11.5],[0,0],[0,0],[5.5,-8.5],[3.5,-9],[-3.5,-1.5],[2.75,-7.5],[-3.5,-3.75],[1.25,-4.5],[-0.25,-9],[-2.75,-7.5],[0.5,-7],[-6.219,-1.152],[0,0],[9.25,-20.25],[-11.565,-3.544],[-6.925,31.281],[-7.5,-11.25],[0,-3.354],[-14.25,-11.25],[-6.75,-13],[-6,-4.25],[-4,-7],[-7.75,5],[-9.5,-1.25],[-3.75,-9.75]],"v":[[-115.25,-158.75],[-118,-135.75],[-103.25,-95.5],[-99.638,-54.974],[-100.531,7],[-101,100],[-54,100],[-54,-53.5],[39,80.5],[41,100],[102,100],[119.5,92],[117,81],[119,63],[106.5,66.25],[109.5,37.5],[102.75,36],[106,20],[99.25,-3.5],[95.25,-29],[90.5,-47],[81.75,-36.75],[89.25,-69.25],[90,-116.25],[55.425,-61.531],[54.5,18.25],[43.5,-0.5],[32.5,-26],[-40.25,-107.25],[-54,-121.75],[-69.75,-131.75],[-86.75,-139.25],[-85.25,-119.5],[-106.5,-135.75]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":16,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"White_07","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4,-9.5],[-3.5,-15],[2.177,-4.295],[-4.236,-5.259],[-3.209,0],[1,18],[3.5,-6],[9,30.5],[-1,5.5]],"o":[[4,9.5],[0.503,2.155],[-3.573,-2.545],[2.352,2.919],[12,0],[-1,-18],[-3.5,6],[-9,-30.5],[1,-5.5]],"v":[[52,22],[76,78.5],[73.073,95.045],[64.736,96.759],[80.5,100],[101,84],[88,79.5],[76,69.5],[63.5,32.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":13,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Accent_07","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1,-2.25],[-7.25,-8.25],[-7.567,-16.568],[-1,-6.5],[-2.5,-14.5],[-3.5,-7.5],[0,0],[0.83,7.471],[12,-7.5],[25.75,-22],[10.508,15.658],[22.176,20.834]],"o":[[-1.045,2.352],[11.127,12.662],[6.579,14.406],[-14.5,-16],[2.5,14.5],[18.5,0],[0,0],[-0.5,-4.5],[6.5,-17],[-2,-11.25],[-11.348,-16.909],[-8.262,-7.762]],"v":[[-22,-45],[13.25,-11.75],[51.067,37.568],[60,78],[33.5,68],[62.75,100],[102,100],[126,79.25],[108.25,79],[78.5,63.75],[56.848,27.409],[16.824,-18.834]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":13,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Base_07","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.038,3.609],[-1.764,-2.672]],"o":[[-3.755,-4.461],[3.08,4.665]],"v":[[158.583,38.882],[150.568,44.174]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.5,7.5],[6,-9.5],[-6,-1.5],[-5.5,5.5]],"o":[[-4.5,-7.5],[-6,9.5],[6.38,1.595],[5.5,-5.5]],"v":[[154,-1.5],[129.5,14],[127.5,29.5],[140.5,17]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.5,-4.5],[-0.25,3.992]],"o":[[0.5,4.5],[0.5,-8]],"v":[[-169.5,-123.5],[-157.5,-122.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-5.5],[-0.5,2]],"o":[[0,5],[1.118,-4.472]],"v":[[-71,-225],[-57.5,-222]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,2.549],[5.821,-5.251],[0.5,-24],[-10.5,-27.5],[2,-40.5],[0,0],[0,0],[0,0],[-13.016,-18.319],[-1.5,-19],[0,-9],[0,0],[0,0],[-3,14],[2.5,-0.5],[1.5,3.5],[6.5,-5],[3,2],[4.5,-4.5],[2,10],[4,-4],[-2,-7.5],[1,10],[4,-0.5],[-0.5,-18.5],[-2.5,-5],[14,18.5],[35.5,50],[11,12],[6.094,10.941],[3.747,-1.606],[-2.828,-8.516],[-0.643,-1.607],[2.75,21],[-12.994,14.032]],"o":[[0,-3.5],[-11.033,9.954],[-0.677,32.497],[4,19],[-2,40.5],[0,0],[0,0],[0,0],[13.5,19],[-6.5,-1.5],[0,9.5],[0,0],[0,0],[3,-14],[3,-5.5],[-1.5,-3.5],[0,-6.5],[-3,-2],[1.5,-9.5],[-2,-10],[-4,4],[-4.5,-6],[-1,-10],[-4,0.5],[0.42,15.526],[-11.5,-10.5],[7.5,-21],[-6.195,-8.725],[-2.776,-3.029],[-5.491,-9.858],[-7,3],[5.087,15.316],[-6,-4.5],[-2.75,-21],[5.54,-5.983]],"v":[[-88,-216],[-103.821,-210.249],[-125,-164.5],[-97.5,-71.5],[-102,11.5],[-101,100],[-54,100],[-54,-54],[14,33],[41,81],[29.5,90.5],[38,100],[103,100],[131.5,80.5],[127,68],[130,51.5],[116.5,50],[114.5,33],[100,34.5],[98.5,9.5],[86.5,-7],[86.5,14],[68.5,-26],[63,-53.5],[54,-34.5],[62,11.5],[14.5,-32.5],[-49,-107],[-66,-134],[-92.063,-151.908],[-107,-168.5],[-106.492,-149.671],[-90,-114],[-114.75,-158],[-101.54,-206.017]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":13,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"White_06","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.086,0.905],[-8,-23.5],[-9,-7.5],[-7.15,-9.439],[5.198,4.243],[3.75,7],[8,10.5],[3.511,12.284]],"o":[[-3,-2.5],[5.549,16.301],[9,7.5],[4.426,5.842],[-7.981,-6.514],[-2.25,0.75],[-5.104,-6.7],[-1.992,-6.968]],"v":[[-125,-171],[-117.5,-136.5],[-93.5,-105],[-80.35,-87.061],[-76.019,-87.986],[-93.25,-108.5],[-107,-121.5],[-120.813,-150.768]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.85,-3.535],[-10.186,-8.173],[-3.271,-4.048],[-2.223,-0.202],[20.044,18.153],[15.518,11.082]],"o":[[2.723,5.202],[6.944,5.572],[10.277,12.719],[6.148,0.56],[-18.816,-17.041],[-18.239,-13.026]],"v":[[-50.723,-79.202],[-14.186,-53.673],[33.723,-15.219],[67.723,30.702],[34.316,-17.459],[-17.518,-58.082]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Accent_06","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4,0],[-1.118,-24.602],[-20.5,-18],[-42.694,-44.642],[-8.941,6.437],[28.28,30.145],[16.143,11.819],[1.031,16.836]],"o":[[-4.272,0],[1,22],[8.392,7.369],[31.751,33.2],[10.587,-7.623],[-38.501,-41.039],[-33.084,-24.222],[-1.5,-24.5]],"v":[[-116.5,-203.5],[-126.5,-166.5],[-88,-95],[18.49,7.445],[75.5,64],[45.676,-10.258],[-71,-100.5],[-121.5,-169]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":13,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"Base_06","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[19.589,-5.138],[9.5,-32],[-0.346,4.842],[0.75,0.5],[1.587,-22.445],[-39.029,-40.848],[5.5,-49],[0,0],[0,0],[1,26.5],[-0.5,4.5],[-30.5,-44.5],[-5.5,-21],[-10.25,-11],[0,0],[-7.157,17.176],[5.75,-4],[3,5],[-6.5,7],[3,2],[12,-39],[3,0],[1.5,-2.5],[1.5,3.5],[4.5,-2.5],[-6,-12],[2.5,5],[-0.5,6],[16.972,12.418],[7.5,11],[-1.16,14.31],[-10.5,6],[-13.251,-23.016],[5.15,-28.325],[-5.554,-2.777],[-2.301,8.308],[0.5,3.75],[-1,1.5],[14.25,21.75]],"o":[[-15.25,4],[-2,-9.5],[0.25,-3.5],[-0.75,-0.5],[-1.75,24.75],[-3.529,21.652],[-3.654,32.552],[0,0],[0,0],[-1,-26.5],[9,10],[8.485,12.38],[-7.75,-1.5],[16,0],[0,0],[5,-12],[4,-4.75],[2,-6.5],[6.5,-7],[-3,-2],[1.5,-10.5],[-3,0],[-1,-4.5],[-1.5,-3.5],[-4.5,2.5],[-10.5,-8],[4.5,-3],[0.5,-6],[-41,-30],[-12.345,-18.106],[0.75,-9.25],[13.599,-7.771],[14.25,24.75],[-2,11],[4.5,2.25],[4.5,-16.25],[1.5,1.25],[1,-1.5],[-14.25,-21.75]],"v":[[-85.75,-230],[-120.5,-187.5],[-123.25,-199.75],[-123.5,-206.25],[-129.25,-188.25],[-84.471,-75.652],[-103.5,12],[-101,100],[-55,100],[-53,24.5],[-52,-47.5],[14.5,24.5],[40.5,82.5],[39,100],[102,100],[126,84],[118.5,72],[120.5,53.5],[136.5,23.5],[141,11],[108.5,54],[106,37.5],[98.5,43],[87.5,21.5],[77,15.5],[80.5,38.5],[-21.5,-59],[-15.5,-67.5],[-36,-90],[-93,-149],[-107.25,-192.25],[-91,-218],[-42.25,-199],[-25,-127.75],[-33.5,-104],[-19.75,-120.75],[-19.5,-157.75],[-15,-158],[-29.75,-198.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4,-0.5],[-4,0]],"o":[[-4,0.5],[4,0]],"v":[[-131.5,-228.5],[-131.5,-222]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1,4.5],[3,-1.5],[-1.5,-4],[-5,2]],"o":[[-1,-4.5],[-3,1.5],[1.619,4.316],[5,-2]],"v":[[-148,-130],[-157,-129.5],[-163.5,-123.5],[-153,-122]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3,-5.5],[-3,3.5]],"o":[[-3,5.5],[3,-3.5]],"v":[[16,-84.5],[21.5,-79.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.575,5.918],[-3.5,-4]],"o":[[-5,-4.5],[2.794,3.193]],"v":[[152.5,42],[142.5,51]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5,-3.5],[-3,2]],"o":[[-5,3.5],[3,-2]],"v":[[-150,50.5],[-147,59]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"}],"ip":10,"op":13,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"White_05","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1,-2.75],[-5.912,-13.795],[-2,1],[2.75,7]],"o":[[-1,2.75],[3.75,8.75],[2,-1],[-2.461,-6.265]],"v":[[-18.75,-184.75],[-8.75,-167.75],[-3.5,-150.75],[-7.75,-168]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.25,-5],[0.25,-1],[-15.25,0],[-5.949,-3.966],[-1.031,1.031],[2.5,1.5],[7.512,0.447]],"o":[[-1.25,1.25],[4.5,-3.5],[9,0],[3.75,2.5],[0.75,-0.75],[-5.524,-3.315],[-11.994,-0.713]],"v":[[-97,-200.5],[-98.5,-196.75],[-69.5,-205.25],[-47.25,-199.25],[-42,-197],[-46.25,-200.25],[-69.506,-206.787]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[1.552,-13.448],[-2,2],[-2.5,12],[0,0]],"o":[[0,0],[-1.5,13],[2,-2],[1.583,-7.599],[0,0]],"v":[[-121.5,-190],[-130.5,-173.5],[-123,-154],[-127.5,-174.5],[-123,-184]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":10,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"Accent_05","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-2.225,4.598],[1.25,-15.5],[-1.5,12],[1.695,8.749]],"o":[[-12.5,8],[-1.688,20.934],[1.017,-4.881],[-1.711,-8.829]],"v":[[-118,-203.5],[-139.25,-171],[-117.75,-152.75],[-121.695,-170.749]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[33.75,-17],[0,0],[-18.007,0],[-3.171,-21.141],[2.5,9],[-3.131,2.907],[12,19]],"o":[[-10.5,9],[0,0],[28,0],[1.5,10],[5.5,4],[7,-6.5],[-11.503,-18.212]],"v":[[-86.25,-213.75],[-100.5,-191.25],[-71,-199],[-21,-152],[-18.5,-157],[-5,-130.5],[-11.5,-179]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":10,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"Base_05","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[53.084,6.331],[-11.5,-29.5],[-24,-17.5],[0.5,-49],[0,0],[0,0],[-6.279,31.394],[0,0],[-10,-30],[-6,4],[14,14.5],[-1.93,2.068],[5.5,12],[10.5,10],[11,8],[4.5,4.5],[-2.261,19.897]],"o":[[-54.5,-6.5],[11.5,29.5],[-22,19.5],[-0.405,39.7],[0,0],[0,0],[7,-35],[0,0],[10,30],[6,-4],[3.5,1.5],[7,-7.5],[5,-5],[-11.154,-10.623],[-11,-8],[9,-12.5],[2.5,-22]],"v":[[-71,-225],[-120.5,-141.5],[-71.5,-72.5],[-106.5,23.5],[-101.5,100],[-53.5,100],[-56,-6],[-46,-57],[24,18],[47,52],[33,8.5],[39.5,8.5],[22.5,-19.5],[15,-41],[-13,-65],[-33,-79.5],[-11,-133.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[12,21],[6,-37],[-36.276,-24.255],[0,0],[-11,21],[1.364,3.542],[-2.634,15.396]],"o":[[-18.303,-32.031],[-4.234,26.107],[12.936,8.65],[0,0],[-5,6],[-1.618,-4.203],[2.896,-16.929]],"v":[[-45,-193.5],[-101,-186],[-57.224,-121.745],[-46,-97],[-30,-125],[-39.882,-122.797],[-32.896,-141.071]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"mm","mm":3,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.744,-5.145],[-3.5,0],[0.5,4.5]],"o":[[-4,7.5],[3.5,0],[-0.5,-4.5]],"v":[[7.5,-83],[13.5,-72],[21,-81]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.5,-5.5],[-5,6]],"o":[[-3.61,4.412],[5,-6]],"v":[[-128.5,-232],[-121,-225.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.607,-2.202],[-3.25,1]],"o":[[-6.75,2.25],[3.25,-1]],"v":[[-145,50.5],[-141.75,63.75]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3,-2],[-3.25,1.375]],"o":[[-3,2],[3.25,-1.375]],"v":[[-145.25,-114.375],[-143.25,-109.375]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.5,3.5],[6.5,-5.5],[-2,-4],[-4,5]],"o":[[-2.5,-3.5],[-6.5,5.5],[2,4],[4,-5]],"v":[[-135,-141.5],[-146,-135],[-155,-125.5],[-140.5,-127.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"}],"ip":8,"op":10,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"White_04","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.577,0.115],[5.5,-11],[2,-1],[-5.252,8.813],[-1.707,4.256]],"o":[[2.859,-0.572],[-5,10],[-2.45,1.225],[2.34,-3.926],[-0.022,-10.959]],"v":[[4,-122],[-4,-97.5],[-16,-82.5],[-6.179,-97.607],[0.022,-111.041]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.905],[-8.447,-21.116],[0.5,-17.5],[12.5,30.5]],"o":[[0,4],[11,27.5],[-0.414,14.494],[-8.656,-21.12]],"v":[[-46.5,-201],[-15.5,-163],[-6,-118],[-12.5,-163.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"Accent_04","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[12.25,-7.5],[-2.25,-1],[-9.75,5.75],[0,0]],"o":[[0,0],[-9.528,5.833],[2.25,1],[9.75,-5.75],[0,0]],"v":[[-56.75,-68.75],[-80,-59.5],[-94.5,-41.75],[-79.25,-54],[-64.25,-59]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[21.916,20.487],[3.567,-11.148],[-15.5,-8.5],[-7.124,-17.536],[2.309,-11.446],[-1.194,-2.095],[-4.911,8.848],[6.756,-10.663],[-2.981,21.364]],"o":[[-23,-21.5],[-4,12.5],[22.354,12.259],[3.25,8],[-1.919,9.511],[1.578,2.769],[-1.911,14.348],[14.006,-9.163],[3,-21.5]],"v":[[-28.5,-194],[-84.5,-207],[-60,-178.5],[-21.25,-139.25],[-17.559,-112.054],[-25.306,-89.155],[-7.589,-111.848],[-22.506,-77.587],[4.5,-123]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":8,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"Base_04","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6,-6],[-3,-1.5],[-1,4.5]],"o":[[-4.757,4.757],[3,1.5],[1.173,-5.28]],"v":[[-142.5,54],[-141,65],[-134.5,58]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.5,-3.5],[-2.5,4.5]],"o":[[-3.5,3.5],[2.5,-4.5]],"v":[[-154.5,46.5],[-149,49.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.5,-4.5],[-1.046,3.661]],"o":[[-1.5,4.5],[1,-3.5]],"v":[[-130.5,-22.5],[-124,-20]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.5,-4],[-3,4.5]],"o":[[-2.5,4],[3,-4.5]],"v":[[-146,-124],[-140.5,-119]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5,-4],[-5,3.5]],"o":[[-5,4],[5,-3.5]],"v":[[4,-13],[9.5,-5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-5.5],[-6,1],[-0.225,4.494]],"o":[[0,0],[0,5.5],[6,-1],[0.5,-10]],"v":[[1,-82],[-5,-76],[8,-68],[17.5,-75]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-2,-5],[17,-15.5],[8.958,-25.593],[-4,-4],[-4.5,8.5],[-4.061,-7.16],[-4.5,4],[2,12.5],[-10,3],[6.266,5.073],[2.775,19.779],[-2.38,4.29],[-4,11.5],[-11,-25.5],[14.5,-41],[18.799,-46.998],[0,0],[0,0],[-5.244,14.301],[18.5,-11.5],[-6.996,11.194],[-8.469,21.715],[24,23]],"o":[[-14.5,-7],[-17,15.5],[-3.5,10],[4,4],[1.476,9.345],[4.195,7.397],[4.5,-4],[15,10],[15.145,-4.543],[-10.5,-8.5],[2.775,2.779],[3.153,-5.684],[4.789,-13.768],[11,25.5],[-11.274,31.877],[-18,45],[0,0],[0,0],[5.5,-15],[-1.5,-18.5],[15,-24],[19.5,-50],[-24,-23]],"v":[[-61.5,-223],[-107,-217.5],[-133.5,-157],[-140.5,-138],[-126.5,-146.5],[-118.326,-122.166],[-101.5,-109],[-107.5,-132],[-73,-115.5],[-77,-141.5],[-105.775,-178.779],[-96.12,-178.29],[-99,-201.5],[-52.5,-181],[-46.5,-91],[-89,-15],[-101,100],[-54,100],[-53.5,52],[-58.5,-4.5],[-49.5,-42],[-10.5,-99],[-38,-217.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":8,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":4,"nm":"White_03","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.151,-2.302],[-0.799,-10.659],[5.75,-13.5],[0.25,7]],"o":[[-0.75,1.5],[0.75,10],[8.75,-12],[-0.357,-10]],"v":[[-29.75,-140.75],[-22.25,-124],[-31,-101],[-20.75,-124.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.75,1.5],[6,-4],[-7.5,5],[0,0]],"o":[[-7.75,1.75],[-6,4],[13.532,-9.021],[0,0]],"v":[[-61.25,-65.5],[-89.5,-53.25],[-88.5,-52],[-63.5,-62.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.5,-2.5],[9,-10],[4.608,-3.716],[0,0],[-5.016,13.223]],"o":[[-3.5,2.5],[-4.752,5.279],[0.108,1.284],[0,0],[5.5,-14.5]],"v":[[-12,-117],[-22.5,-82.5],[-35.108,-71.784],[-36.5,-68.5],[-13,-91.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":5,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":4,"nm":"Accent_03","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.235,-0.068],[13,-14.5],[-2.387,-10.693],[-5.566,2.783],[-0.134,10.567],[-7,7.5],[0,0]],"o":[[-16.5,0.5],[-13.517,15.076],[1.891,8.473],[4.165,-2.083],[0.069,-5.471],[8.955,-9.595],[0,0]],"v":[[-59,-70.5],[-98,-55],[-106.113,-15.807],[-90,1.5],[-94.069,-25.029],[-89.5,-41],[-75,-49]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6,-22],[21.5,-81],[8.317,22.524]],"o":[[-4.212,15.444],[27,-9],[-12,-32.5]],"v":[[-54,-156.5],[-37.5,-65],[-8,-136]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":5,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":28,"ty":4,"nm":"Base_003","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.121,-1.345],[-1.75,-0.625],[-0.625,1.5],[1.375,0.562]],"o":[[-0.938,1.125],[1.75,0.625],[0.625,-1.5],[-1.399,-0.572]],"v":[[-24,-52.25],[-23,-48.25],[-18.375,-49.875],[-20,-53.625]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.875,-1.125],[-1.125,-0.625],[-1.375,1],[1.125,1.125]],"o":[[-1.593,0.956],[1.236,0.687],[1.375,-1],[-1.068,-1.068]],"v":[[-19.625,9.5],[-20.375,13.5],[-15.75,14],[-14.875,10.125]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[8,-6.5],[-3.5,-1.5],[-2.5,3.5]],"o":[[-8,6.5],[3.5,1.5],[2.5,-3.5]],"v":[[-4.5,-8],[-7.5,1.5],[2,-1.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4,2.5],[2.964,-4.149],[-5.758,-2.617],[-2,4]],"o":[[-4,-2.5],[-2.5,3.5],[5.5,2.5],[2,-4]],"v":[[-128.5,57],[-140,58.5],[-137,70],[-124,67.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.879,-2.639],[-4,3]],"o":[[-6,5.5],[4,-3]],"v":[[-151,46],[-146,50]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5,-5],[-5.075,3.904]],"o":[[-4.257,4.257],[6.5,-5]],"v":[[-126,-22],[-122,-16]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.5,-5],[-3.5,-1.5],[-5,2.5],[0,9.5]],"o":[[-8.481,6.524],[3.5,1.5],[5,-2.5],[0,-9.5]],"v":[[-9,-76],[-21,-57],[-6,-63.5],[5,-72.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[13.127,1.712],[-1,-8],[-5.5,-15],[1.14,-7.413],[-5.678,-40.457],[25.278,-29.348],[0,0],[0,0],[-4.099,21.615],[4,4.5],[5,-8],[-21.5,30.5],[-1,35],[9,15.5],[2.5,-3.5]],"o":[[-11.5,-1.5],[1,8],[-5.5,-6],[-2,13],[4,28.5],[-59,68.5],[0,0],[0,0],[5.5,-29],[-4,-4.5],[2.5,-21.5],[21.5,-30.5],[1.029,-36.017],[-9,-15.5],[-8,-7]],"v":[[-75.5,-229],[-92,-220],[-68,-197],[-81,-199.5],[-45,-138.5],[-65.5,-62.5],[-101,100],[-54,100],[-54,53],[-50.5,10],[-64,15],[-42,-60],[-8.5,-133],[-28,-199],[-44.5,-209]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":5,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":29,"ty":4,"nm":"White_02","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-7.442,11.163],[6,-6.5],[0,0],[0,0]],"o":[[5,-7.5],[-4.084,4.424],[0,0],[0,0]],"v":[[-13.5,-71.5],[-22.5,-64],[-32,-58.5],[-33.5,-55]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,1],[5,-9.5],[-5.5,2.5]],"o":[[-8.5,4],[14,-14],[1.75,-2.5]],"v":[[-70,-53.5],[-91.5,-35.5],[-71.5,-50]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.663,-3.976],[-4.163,-15.61],[-3,-0.5],[4,13.5]],"o":[[-1,6],[6,22.5],[3,0.5],[-4,-13.5]],"v":[[-82.5,-13],[-76,15],[-77,39],[-74,14]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":3,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":30,"ty":4,"nm":"Accent_02","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.5,-5.5],[3.5,-12],[0,0],[4,-5.5],[-10,23.5]],"o":[[-6.5,5.5],[-3.5,12],[0,0],[-4,5.5],[8.916,-20.952]],"v":[[-16,-106.5],[-18.5,-83],[-25.5,-68],[-37,-51],[0.5,-81.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-7,17.5],[8.5,-31.5],[3.5,-26.5],[-8,4.5],[1.648,22.529],[0.5,19]],"o":[[-3,-0.5],[-6.034,22.363],[-3.5,26.5],[8,-4.5],[-1.5,-20.5],[-0.504,-19.157]],"v":[[-65.5,-62.5],[-99,-37],[-84,28.5],[-83,60.5],[-73.5,15],[-80.5,-22]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":3,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":31,"ty":4,"nm":"Base_02","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5,-5.5],[-3.394,2.546]],"o":[[-5,5.5],[4,-3]],"v":[[-122,-18],[-112,-5]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[3.5,9],[4.743,-6.325],[4,-10.5],[-2.828,-1.414],[-5.5,4.5]],"o":[[-3.5,-9],[-3,4],[-4,10.5],[4,2],[5.5,-4.5]],"v":[[-11.5,-58.5],[-27,-51],[-37,-41.5],[-41.5,-23.5],[-29,-36]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.5,2.5],[4.826,-10.617],[-2.5,-2],[-8,8]],"o":[[-2.5,-2.5],[-5,11],[2.619,2.095],[9.513,-9.513]],"v":[[-13,5],[-28.5,17.5],[-32.5,37.5],[-18,22.5]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6,-0.5],[-6,0.5]],"o":[[-6.062,0.505],[4.512,-0.376]],"v":[[-141,47.5],[-140,59.5]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[-5.978,13.495],[4.774,1.297],[1.5,-24.5],[-28.417,40.783],[25.963,13.129],[10.687,-11.463],[8.788,-36.493],[6.218,-19.493],[0.638,-6.933],[6.911,-5.369],[-2.829,-8.064]],"o":[[0,0],[0,0],[8.321,-18.787],[-9.634,-2.617],[-6.5,-44.5],[21.578,-30.968],[6.963,-27.871],[-9.351,10.03],[-8.252,34.268],[-13.78,43.204],[-3.373,-4.549],[-7.519,5.842],[6.456,18.4]],"v":[[-101,100],[-54,100],[-50.321,55.787],[-51.366,25.617],[-68.5,68.5],[-31.578,-58.032],[-24.963,-149.129],[-41.355,-182.241],[-46.788,-110.507],[-80.327,-31.423],[-92.627,39.549],[-102.911,33.369],[-100,63.5]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.626,-7.573],[-11.143,-6.191],[-1.5,2],[4.5,8.5]],"o":[[-7,8],[4.5,2.5],[1.5,-2],[-5.039,-9.519]],"v":[[-132,59.5],[-124,80],[-107.5,87.5],[-114.5,69.5]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":2,"op":3,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":32,"ty":4,"nm":"White_01","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5,-3.5],[0,0],[-4.5,0]],"o":[[-3.776,2.644],[0,0],[-11,-7]],"v":[[-93,86.5],[-89,100.5],[-80.5,100]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":2,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":33,"ty":4,"nm":"Accent_01","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[9.833,-1.788],[1,-6.5],[6,0],[3.233,-11.659],[6.944,-6.019],[0,0],[0,0],[-1.802,17.05]],"o":[[-11,2],[-5.5,-19.5],[-7.592,0],[-2.036,7.341],[-7.274,6.305],[0,0],[0,0],[1.504,-14.232]],"v":[[-53,36.5],[-74,82.5],[-79.5,47],[-87.233,77.159],[-99.444,71.519],[-101,100],[-54,100],[-61.372,80.514]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":1,"op":2,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":34,"ty":4,"nm":"Base_01","parent":35,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[7.356,4.259],[12.5,-40],[2.5,-38],[2,7.5],[6.5,-4],[-13,-32],[5,-6],[-10.563,-6.036],[0,0],[0,0],[-4.919,2.46],[4.74,2.188],[4,-0.5],[-11.5,14],[8.961,3.734],[13.5,-26],[-18.971,36.268],[10,5],[12.365,-20.233],[0,0],[-12,24]],"o":[[-9.5,-5.5],[-14.542,46.535],[-2,-9.5],[-2.754,-10.328],[-7.534,4.636],[-7.5,-5],[-4.161,4.993],[7,4],[0,0],[0,0],[10,-5],[-6.5,-3],[3,-12.5],[9.204,-11.205],[-12,-5],[5,-26.5],[17,-32.5],[-7.071,-3.536],[-5.5,9],[0,0],[12,-24]],"v":[[-48,-95.5],[-80.5,-54],[-95.5,38.5],[-100,15],[-111.5,3],[-95,88],[-116.5,75],[-106.5,91],[-101.008,100.039],[-54,100],[-45.5,93],[-39,80.5],[-57,87.5],[-38,54.5],[-30.5,29.5],[-71,74.5],[-44.5,4],[-28.5,-50.5],[-52,-30.5],[-64.5,-13.5],[-53.5,-59.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":2,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":35,"ty":1,"nm":"ResizerTemp","parent":36,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":36,"ty":1,"nm":"White Solid 43","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":32,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/O.json b/example/shared/src/commonMain/composeResources/files/mobilo/O.json new file mode 100644 index 00000000..46c9d2e5 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/O.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Tail","parent":7,"ks":{"o":{"k":100},"r":{"k":-6.854},"p":{"k":[-40.122,187.803,0]},"a":{"k":[0,0,0]},"s":{"k":[211.245,169.588,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":0,"s":[{"i":[[0,0],[0,0],[-6.397,3.412]],"o":[[0,0],[0,0],[7.5,-4]],"v":[[50.75,-6.75],[51.5,6],[62.5,7]],"c":true}],"h":1},{"t":2,"s":[{"i":[[0,0],[0,0],[-5,5.25]],"o":[[0,0],[0,0],[5.687,-5.971]],"v":[[50.75,-6.75],[52.5,6.5],[63.5,2]],"c":true}],"h":1},{"t":4,"s":[{"i":[[0,0],[0,0],[3.09,4.523]],"o":[[0,0],[0,0],[-4.652,-6.809]],"v":[[52.5,-7.5],[56,4.75],[66.5,-6.25]],"c":true}],"h":1},{"t":6,"s":[{"i":[[0,0],[0,0],[-5,5.25]],"o":[[0,0],[0,0],[5.687,-5.971]],"v":[[50.75,-6.75],[52.5,6.5],[63.5,2]],"c":true}],"h":1},{"t":8,"s":[{"i":[[0,0],[0,0],[-6.397,3.412]],"o":[[0,0],[0,0],[7.5,-4]],"v":[[50.75,-6.75],[51.5,6],[62.5,7]],"c":true}],"h":1},{"t":10,"s":[{"i":[[0,0],[0,0],[-6.397,3.412]],"o":[[0,0],[0,0],[7.5,-4]],"v":[[50.75,-6.75],[51.5,6],[62.5,7]],"c":true}],"h":1},{"t":12,"s":[{"i":[[0,0],[0,0],[-5,5.25]],"o":[[0,0],[0,0],[5.687,-5.971]],"v":[[50.75,-6.75],[52.5,6.5],[63.5,2]],"c":true}],"h":1},{"t":14,"s":[{"i":[[0,0],[0,0],[3.09,4.523]],"o":[[0,0],[0,0],[-4.652,-6.809]],"v":[[52.5,-7.5],[56,4.75],[66.5,-6.25]],"c":true}],"h":1},{"t":17,"s":[{"i":[[0,0],[0,0],[-5,5.25]],"o":[[0,0],[0,0],[5.687,-5.971]],"v":[[50.75,-6.75],[52.5,6.5],[63.5,2]],"c":true}],"h":1},{"t":19,"s":[{"i":[[0,0],[0,0],[-6.397,3.412]],"o":[[0,0],[0,0],[7.5,-4]],"v":[[50.75,-6.75],[51.5,6],[62.5,7]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0,0],[0,0],[-5,5.25]],"o":[[0,0],[0,0],[5.687,-5.971]],"v":[[50.75,-6.75],[52.5,6.5],[63.5,2]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"t":0,"s":[-3.25,5.5],"h":1},{"t":2,"s":[0.75,3.5],"h":1},{"t":6,"s":[0,0],"h":1},{"t":8,"s":[-3.25,5.5],"h":1},{"t":10,"s":[-3.25,5.5],"h":1},{"t":12,"s":[0.75,3.5],"h":1},{"t":17,"s":[0,0],"h":1},{"t":19,"s":[-3.25,5.5],"h":1},{"t":21,"s":[0,0],"h":1}],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":[{"t":2,"s":[0],"h":1},{"t":6,"s":[0],"h":1},{"t":12,"s":[0],"h":1},{"t":17,"s":[0],"h":1},{"t":21,"s":[0],"h":1}],"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"L Right leg","parent":7,"ks":{"o":{"k":100},"r":{"k":[{"t":0,"s":[-9.644],"h":1},{"t":2,"s":[-91.658],"h":1},{"t":4,"s":[-151.311],"h":1},{"t":6,"s":[-91.658],"h":1},{"t":8,"s":[-9.644],"h":1},{"t":10,"s":[-9.644],"h":1},{"t":12,"s":[-142.927],"h":1},{"t":14,"s":[-169.987],"h":1},{"t":17,"s":[-150.342],"h":1},{"t":19,"s":[-143.328],"h":1},{"t":21,"s":[-134.162],"h":1},{"t":22,"s":[-95.99],"h":1}]},"p":{"k":[{"t":0,"s":[25.846,252.895,0],"h":1},{"t":2,"s":[42.971,210.27,0],"h":1},{"t":4,"s":[46.968,220.038,0],"h":1},{"t":6,"s":[42.971,210.27,0],"h":1},{"t":8,"s":[16.724,255.7,0],"h":1},{"t":10,"s":[27.884,246.672,0],"h":1},{"t":12,"s":[47.264,204.629,0],"h":1},{"t":14,"s":[45.674,225.859,0],"h":1},{"t":17,"s":[51.003,207.936,0],"h":1},{"t":19,"s":[53.019,221.639,0],"h":1},{"t":21,"s":[63.588,207.586,0],"h":1}]},"a":{"k":[124.456,68.832,0]},"s":{"k":[173.966,146.364,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[5.949,-4.003],[-3.217,-5.201],[-3.227,2.156],[4.8,5.046]],"o":[[0,0],[-2.924,1.967],[4.117,6.657],[13.028,-8.706],[-3.932,-4.134]],"v":[[134.072,51.361],[120.491,58.603],[100.037,84.255],[136.388,74.473],[143.255,54.386]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"R right leg","parent":7,"ks":{"o":{"k":100},"r":{"k":[{"t":0,"s":[-11.374],"h":1},{"t":2,"s":[-93.389],"h":1},{"t":4,"s":[-153.041],"h":1},{"t":6,"s":[-93.389],"h":1},{"t":8,"s":[-11.374],"h":1},{"t":10,"s":[-11.374],"h":1},{"t":12,"s":[-133.525],"h":1},{"t":14,"s":[-168.082],"h":1},{"t":17,"s":[-134.286],"h":1},{"t":19,"s":[-135.361],"h":1},{"t":21,"s":[-93.389],"h":1},{"t":22,"s":[-63.135],"h":1}]},"p":{"k":[{"t":0,"s":[11.046,242.717,0],"h":1},{"t":2,"s":[26.825,215.627,0],"h":1},{"t":4,"s":[50.727,205.921,0],"h":1},{"t":6,"s":[26.825,215.627,0],"h":1},{"t":8,"s":[11.046,242.717,0],"h":1},{"t":10,"s":[11.046,242.717,0],"h":1},{"t":12,"s":[34.74,212.113,0],"h":1},{"t":14,"s":[49.932,199.806,0],"h":1},{"t":17,"s":[40.527,217.109,0],"h":1},{"t":19,"s":[38.575,245.073,0],"h":1},{"t":21,"s":[31.002,229.592,0],"h":1}]},"a":{"k":[124.456,68.832,0]},"s":{"k":[172.824,147.331,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[5.949,-4.003],[-3.217,-5.201],[-3.227,2.156],[4.8,5.046]],"o":[[0,0],[-2.924,1.967],[4.117,6.657],[13.028,-8.706],[-3.932,-4.134]],"v":[[134.072,51.361],[120.491,58.603],[100.037,84.255],[136.388,74.473],[143.255,54.386]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"L Front leg","parent":7,"ks":{"o":{"k":100},"r":{"k":[{"t":0,"s":[1.826],"h":1},{"t":2,"s":[81.019],"h":1},{"t":4,"s":[34.029],"h":1},{"t":6,"s":[11.404],"h":1},{"t":8,"s":[1.826],"h":1},{"t":10,"s":[1.826],"h":1},{"t":12,"s":[110.613],"h":1},{"t":14,"s":[93.754],"h":1},{"t":17,"s":[-8.024],"h":1},{"t":19,"s":[1.826],"h":1},{"t":21,"s":[11.404],"h":1}]},"p":{"k":[{"t":0,"s":[-64.172,242.933,0],"h":1},{"t":2,"s":[-73.986,236.426,0],"h":1},{"t":4,"s":[-67.496,225.398,0],"h":1},{"t":6,"s":[-60.611,239.089,0],"h":1},{"t":8,"s":[-64.271,248.069,0],"h":1},{"t":10,"s":[-64.172,242.933,0],"h":1},{"t":12,"s":[-67.061,239.01,0],"h":1},{"t":14,"s":[-74.501,227.841,0],"h":1},{"t":17,"s":[-54.507,239.88,0],"h":1},{"t":19,"s":[-64.271,248.069,0],"h":1},{"t":21,"s":[-60.611,239.089,0],"h":1}]},"a":{"k":[160.519,57.01,0]},"s":{"k":[143.513,177.015,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[3.982,-8.932],[-15.673,-9.237],[-3.679,7.685],[6.49,10.307]],"o":[[0,0],[-1.539,3.453],[15.206,8.961],[2.239,-4.677],[-8.86,-14.071]],"v":[[149.396,37.163],[133.746,39.787],[146.035,62.546],[183.764,77.974],[163.256,53.025]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Eye","parent":7,"ks":{"o":{"k":100},"r":{"k":-6.854},"p":{"k":[{"t":0,"s":[-136.894,193.062,0],"h":1},{"t":2,"s":[-135.845,192.936,0],"h":1},{"t":4,"s":[-146.649,192.526,0],"h":1},{"t":6,"s":[-132.383,194.228,0],"h":1},{"t":8,"s":[-137.455,193.75,0],"h":1},{"t":10,"s":[-136.894,193.062,0],"h":1},{"t":12,"s":[-135.845,192.936,0],"h":1},{"t":14,"s":[-146.649,192.526,0],"h":1},{"t":17,"s":[-132.383,194.228,0],"h":1},{"t":19,"s":[-137.455,193.75,0],"h":1},{"t":21,"s":[-132.383,194.228,0],"h":1}]},"a":{"k":[-45.045,-10,0]},"s":{"k":[211.245,169.588,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.307,4.231],[0,0],[-4.457,0.077],[0,0]],"o":[[-0.59,0.462],[0,0],[0.312,0.077],[0,0]],"v":[[-46.979,-10.923],[-48.152,-9.846],[-42.661,-5.077],[-42.146,-6.923]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5,4.75]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-43.375,-12.375],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Hamster Ear","parent":7,"ks":{"o":{"k":100},"r":{"k":[{"t":0,"s":[61.362],"h":1},{"t":2,"s":[38.501],"h":1},{"t":4,"s":[8.576],"h":1},{"t":6,"s":[38.501],"h":1},{"t":8,"s":[38.501],"h":1},{"t":10,"s":[61.362],"h":1},{"t":12,"s":[38.501],"h":1},{"t":14,"s":[8.576],"h":1},{"t":17,"s":[38.501],"h":1},{"t":19,"s":[38.501],"h":1},{"t":21,"s":[38.501],"h":1}]},"p":{"k":[{"t":0,"s":[-94.357,178.949,0],"h":1},{"t":2,"s":[-94.416,172.978,0],"h":1},{"t":4,"s":[-106.585,171.024,0],"h":1},{"t":6,"s":[-94.416,172.978,0],"h":1},{"t":8,"s":[-96.672,172.395,0],"h":1},{"t":10,"s":[-94.357,178.949,0],"h":1},{"t":12,"s":[-94.416,172.978,0],"h":1},{"t":14,"s":[-106.585,171.024,0],"h":1},{"t":17,"s":[-94.416,172.978,0],"h":1},{"t":19,"s":[-96.672,172.395,0],"h":1},{"t":21,"s":[-94.416,172.978,0],"h":1}]},"a":{"k":[-151.921,13.054,0]},"s":{"k":[130.58,120.023,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[29,0],[0,0],[-8,1]],"o":[[-21.523,0],[0,0],[8,-1]],"v":[[-152,-5],[-164.5,24],[-149.5,30]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Hamster Ear Shadow","parent":5,"ks":{"o":{"k":100},"r":{"k":-0.963},"p":{"k":[-154.694,26.679,0]},"a":{"k":[-157,27.5,0]},"s":{"k":[104.275,93.069,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[29,0],[0,0],[-8,1]],"o":[[-21.523,0],[0,0],[8,-1]],"v":[[-152,-5],[-164.5,24],[-149.5,30]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Hamster body","parent":12,"ks":{"o":{"k":100},"r":{"k":[{"t":12,"s":[8.584],"h":1},{"t":14,"s":[-10.034],"h":1},{"t":17,"s":[-40.207],"h":1},{"t":21,"s":[-87.752],"h":1},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[-145.07],"e":[-167.01]},{"t":24}]},"p":{"k":[{"t":0,"s":[2,-90,0],"h":1},{"t":2,"s":[2.5,-85.5,0],"h":1},{"t":4,"s":[0.5,-83.5,0],"h":1},{"t":6,"s":[3.5,-85,0],"h":1},{"t":8,"s":[2,-90,0],"h":1},{"t":10,"s":[2,-90,0],"h":1},{"t":12,"s":[0.5,-77.5,0],"h":1},{"t":14,"s":[14.5,-77.5,0],"h":1},{"t":17,"s":[27.5,-82,0],"h":1},{"t":19,"s":[51.5,-115,0],"h":1},{"t":21,"s":[58,-157,0],"h":1},{"t":22,"s":[49,-204,0],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[17.5,-255,0],"e":[-27.392,-283.797,0],"to":[-0.07200571149588,0.31202477216721,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[-27.392,-283.797,0],"e":[-86.392,-302.797,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[-86.392,-302.797,0],"e":[-151.392,-318.797,0],"to":[0,0,0],"ti":[0,0,0]},{"t":26}]},"a":{"k":[{"t":0,"s":[-30.288,211.389,0],"h":1},{"t":4,"s":[-30.288,211.389,0],"h":1},{"t":8,"s":[-30.288,211.389,0],"h":1},{"t":10,"s":[-30.288,211.389,0],"h":1},{"t":14,"s":[-30.288,211.389,0],"h":1},{"t":21,"s":[-30.288,211.389,0],"h":1}]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[43.244,61.063,100],"e":[43.244,61.063,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":20,"s":[43.244,61.063,100],"e":[39.047,52.56,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":21,"s":[39.047,52.56,100],"e":[6.02,11.614,100]},{"t":26}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2578.08,-386.731]],"o":[[-2578.08,386.731]],"v":[[-289.431,-86.271]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":0,"s":[{"i":[[47.445,-1.185],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-20.782,-14.516],[-37.351,6.334],[4.898,34.805]],"o":[[-26.646,0.665],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[37.325,26.07],[48.373,-8.203],[-2.971,-21.114]],"v":[[-1.298,152.367],[-71.659,166.539],[-129.976,166.109],[-166.965,186.181],[-134.155,236.018],[-6.352,258.727],[69.26,193.139]],"c":true}],"h":1},{"t":2,"s":[{"i":[[54.31,-10.773],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-22.094,-12.429],[-37.351,6.334],[10.519,37.29]],"o":[[-26.145,5.186],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[42.252,23.77],[48.373,-8.203],[-9.936,-35.223]],"v":[[-11.785,153.627],[-66.574,165.073],[-126.098,163.935],[-166.649,187.851],[-128.179,233.592],[-6.985,255.387],[75.334,185.576]],"c":true}],"h":1},{"t":4,"s":[{"i":[[43.764,-15.484],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-22.094,-12.429],[-37.351,6.334],[9.237,37.628]],"o":[[-25.128,8.89],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[42.252,23.77],[48.373,-8.203],[-10.404,-42.383]],"v":[[-16.613,150.791],[-76.744,168.004],[-141.096,164.03],[-175.355,187.19],[-136.252,236.27],[-7.302,253.717],[84.555,177.636]],"c":true}],"h":1},{"t":6,"s":[{"i":[[43.764,-15.484],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-22.094,-12.429],[-37.351,6.334],[9.237,37.628]],"o":[[-25.128,8.89],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[42.252,23.77],[48.373,-8.203],[-10.404,-42.383]],"v":[[-19.343,147.703],[-66.574,165.073],[-126.098,163.935],[-166.649,187.851],[-128.179,233.592],[-6.985,255.387],[75.334,185.576]],"c":true}],"h":1},{"t":8,"s":[{"i":[[47.445,-1.185],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-20.782,-14.516],[-37.351,6.334],[4.898,34.805]],"o":[[-26.646,0.665],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[37.325,26.07],[48.373,-8.203],[-2.971,-21.114]],"v":[[-1.298,152.367],[-71.659,166.539],[-129.976,166.109],[-166.965,186.181],[-134.155,236.018],[-6.352,258.727],[69.26,193.139]],"c":true}],"h":1},{"t":10,"s":[{"i":[[47.445,-1.185],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-20.782,-14.516],[-37.351,6.334],[4.898,34.805]],"o":[[-26.646,0.665],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[37.325,26.07],[48.373,-8.203],[-2.971,-21.114]],"v":[[-1.298,152.367],[-71.659,166.539],[-129.976,166.109],[-166.965,186.181],[-134.155,236.018],[-6.352,258.727],[69.26,193.139]],"c":true}],"h":1},{"t":12,"s":[{"i":[[54.31,-10.773],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-22.094,-12.429],[-37.351,6.334],[10.519,37.29]],"o":[[-26.145,5.186],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[42.252,23.77],[48.373,-8.203],[-9.936,-35.223]],"v":[[-11.785,153.627],[-66.574,165.073],[-126.098,163.935],[-166.649,187.851],[-128.179,233.592],[-6.985,255.387],[75.334,185.576]],"c":true}],"h":1},{"t":14,"s":[{"i":[[43.764,-15.484],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-22.094,-12.429],[-37.351,6.334],[9.237,37.628]],"o":[[-25.128,8.89],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[42.252,23.77],[48.373,-8.203],[-10.404,-42.383]],"v":[[-16.613,150.791],[-76.744,168.004],[-141.096,164.03],[-175.355,187.19],[-136.252,236.27],[-7.302,253.717],[84.555,177.636]],"c":true}],"h":1},{"t":17,"s":[{"i":[[43.764,-15.484],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-22.094,-12.429],[-37.351,6.334],[9.237,37.628]],"o":[[-25.128,8.89],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[42.252,23.77],[48.373,-8.203],[-10.404,-42.383]],"v":[[-19.343,147.703],[-66.574,165.073],[-126.098,163.935],[-166.649,187.851],[-128.179,233.592],[-6.985,255.387],[75.334,185.576]],"c":true}],"h":1},{"t":19,"s":[{"i":[[47.445,-1.185],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-20.782,-14.516],[-37.351,6.334],[4.898,34.805]],"o":[[-26.646,0.665],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[37.325,26.07],[48.373,-8.203],[-2.971,-21.114]],"v":[[-1.298,152.367],[-71.659,166.539],[-129.976,166.109],[-166.965,186.181],[-134.155,236.018],[-6.352,258.727],[69.26,193.139]],"c":true}],"h":1},{"t":21,"s":[{"i":[[43.764,-15.484],[11.99,0.807],[28.309,-5.924],[1.39,-8.411],[-22.094,-12.429],[-37.351,6.334],[9.237,37.628]],"o":[[-25.128,8.89],[-16.683,-1.123],[-19.764,4.136],[-2.134,12.918],[42.252,23.77],[48.373,-8.203],[-10.404,-42.383]],"v":[[-19.343,147.703],[-66.574,165.073],[-126.098,163.935],[-166.649,187.851],[-128.179,233.592],[-6.985,255.387],[75.334,185.576]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"t":0,"s":[5.144,4.506],"h":1},{"t":4,"s":[5.144,4.506],"h":1},{"t":8,"s":[5.144,4.506],"h":1},{"t":10,"s":[5.144,4.506],"h":1},{"t":14,"s":[5.144,4.506],"h":1},{"t":19,"s":[5.144,4.506],"h":1}],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"R Front Leg","parent":7,"ks":{"o":{"k":100},"r":{"k":[{"t":0,"s":[1.826],"h":1},{"t":2,"s":[47.496],"h":1},{"t":4,"s":[89.735],"h":1},{"t":6,"s":[65.058],"h":1},{"t":8,"s":[3.302],"h":1},{"t":10,"s":[1.826],"h":1},{"t":12,"s":[76.182],"h":1},{"t":14,"s":[117.359],"h":1},{"t":17,"s":[-0.463],"h":1},{"t":19,"s":[3.302],"h":1},{"t":21,"s":[65.058],"h":1}]},"p":{"k":[{"t":0,"s":[-72.66,249.077,0],"h":1},{"t":2,"s":[-63.341,236.001,0],"h":1},{"t":4,"s":[-69.791,235.922,0],"h":1},{"t":6,"s":[-68.011,234,0],"h":1},{"t":8,"s":[-69.613,253.835,0],"h":1},{"t":10,"s":[-72.66,249.077,0],"h":1},{"t":12,"s":[-52.023,227.808,0],"h":1},{"t":14,"s":[-86.991,230.926,0],"h":1},{"t":17,"s":[-84.885,238.123,0],"h":1},{"t":19,"s":[-69.613,253.835,0],"h":1},{"t":21,"s":[-68.011,234,0],"h":1}]},"a":{"k":[160.519,57.01,0]},"s":{"k":[156.323,162.51,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[3.982,-8.932],[-15.673,-9.237],[-3.679,7.685],[6.49,10.307]],"o":[[0,0],[-1.539,3.453],[15.206,8.961],[2.239,-4.677],[-8.86,-14.071]],"v":[[149.396,37.163],[133.746,39.787],[146.035,62.546],[183.764,77.974],[163.256,53.025]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Wheel highlight","parent":12,"ks":{"o":{"k":100},"r":{"k":[{"t":-2.833,"s":[37.232],"h":1},{"t":0,"s":[-2.307],"h":1},{"t":2.834,"s":[34.084],"h":1},{"t":5.667,"s":[-2.307],"h":1},{"t":8.5,"s":[34.084],"h":1},{"t":11.334,"s":[-2.307],"h":1},{"t":14.167,"s":[34.084],"h":1},{"t":17.167,"s":[-62.962],"h":1},{"t":20.167,"s":[68.071],"h":1},{"t":23.1669921875,"s":[17.865],"h":1}]},"p":{"k":[{"t":-2.833,"s":[76,-60,0],"h":1},{"t":0,"s":[94,-115,0],"h":1},{"t":2.834,"s":[76,-60,0],"h":1},{"t":5.667,"s":[94,-115,0],"h":1},{"t":8.5,"s":[76,-60,0],"h":1},{"t":11.334,"s":[94,-115,0],"h":1},{"t":14.167,"s":[76,-60,0],"h":1},{"t":17.167,"s":[46,-196,0],"h":1},{"t":20.167,"s":[40,-27,0],"h":1},{"t":23.1669921875,"s":[83,-71,0],"h":1}]},"a":{"k":[86.628,-30.094,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":20,"s":[{"i":[[3.438,6.231],[0,0],[35,-59],[-12.657,25.314],[5.952,18.44]],"o":[[-5,2.5],[0,0],[9.5,4.5],[8.262,-16.525],[-2.111,-6.541]],"v":[[77.615,-78.687],[67.615,-73.687],[65.615,28.313],[83.615,13.813],[88.69,-52.75]],"c":true}],"h":1},{"t":22,"s":[{"i":[[3.406,6.174],[0,0],[24.904,-54.684],[-8.987,26.837],[2.756,7.378]],"o":[[-5,2.5],[0,0],[12.713,-0.302],[5.871,-17.533],[-2.384,-6.381]],"v":[[81.482,-64.194],[70.554,-59.568],[70.662,13.097],[89.975,-7.342],[88.575,-54.64]],"c":true}],"h":1},{"t":24,"s":[{"i":[[1.08,9.698],[0,0],[11.639,-33.004],[-1.654,-0.044],[0.081,7.875]],"o":[[-8.29,1.424],[0,0],[2.407,0.868],[2.74,-9.942],[-0.112,-10.92]],"v":[[89.954,-50.976],[80.801,-49.719],[74.929,-2.613],[84.513,-1.76],[91.385,-33.348]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Wheel highlight 2","parent":12,"ks":{"o":{"k":100},"r":{"k":[{"t":-2.833,"s":[-150.767],"h":1},{"t":0,"s":[-162.301],"h":1},{"t":2.834,"s":[-143.455],"h":1},{"t":5.667,"s":[-175.355],"h":1},{"t":8.5,"s":[-143.455],"h":1},{"t":11.334,"s":[-175.355],"h":1},{"t":14.167,"s":[-143.455],"h":1},{"t":17.167,"s":[-241.192],"h":1},{"t":20.167,"s":[-112.151],"h":1},{"t":23.1669921875,"s":[-152.9],"h":1}]},"p":{"k":[{"t":-2.833,"s":[-76,-164,0],"h":1},{"t":0,"s":[-79,-142,0],"h":1},{"t":2.834,"s":[-76,-164,0],"h":1},{"t":5.667,"s":[-89,-122,0],"h":1},{"t":8.5,"s":[-76,-164,0],"h":1},{"t":11.334,"s":[-89,-122,0],"h":1},{"t":14.167,"s":[-76,-164,0],"h":1},{"t":17.167,"s":[-46,-30,0],"h":1},{"t":20.167,"s":[-37,-196,0],"h":1},{"t":23.1669921875,"s":[-80,-164,0],"h":1}]},"a":{"k":[86.628,-30.094,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":17.167,"s":[{"i":[[16,29],[0,0],[-4.144,-15.386],[19.004,-32.035],[-12.657,25.314]],"o":[[-5,2.5],[0,0],[4.923,18.279],[9.5,4.5],[16,-32]],"v":[[78,-85],[68,-80],[79.037,-55.632],[66,22],[84,7.5]],"c":true}],"h":1},{"t":20.167,"s":[{"i":[[16,29],[0,0],[2.048,-14.956],[9.938,-16.753],[-10.944,26.1]],"o":[[-5,2.5],[0,0],[-1.574,11.493],[9.5,4.5],[9.594,-22.881]],"v":[[83.491,-71.968],[75.516,-63.984],[82.826,-32.047],[69.049,9.205],[87.426,-6.221]],"c":true}],"h":1},{"t":23.1669921875,"s":[{"i":[[5.776,19.004],[0,0],[2.048,-14.956],[9.938,-16.753],[-8.568,18.431]],"o":[[-5,2.5],[0,0],[-1.574,11.493],[9.5,4.5],[6.672,-14.353]],"v":[[85.549,-59.487],[76.071,-54.781],[81.365,-29.243],[72.402,-5.449],[88.373,-12.146]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":0,"op":27,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"O Outlines 2","parent":13,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[251,287,0],"e":[254,286,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[254,286,0],"e":[252.853,289.049,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[252.853,289.049,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[251,287,0],"e":[254,286,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[254,286,0],"e":[252.853,289.049,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[252.853,289.049,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[251,287,0],"e":[254,286,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[254,286,0],"e":[252.853,289.049,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[252.853,289.049,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[251,287,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[251,287,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[251,287,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"t":23}]},"a":{"k":[1,-113,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[-0.331,-0.331,100],"e":[100,100,100]},{"t":3}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[39.88,0],[0,39.578],[-39.578,0],[0,-39.578]],"o":[[-39.578,0],[0,-39.578],[39.88,0],[0,39.578]],"v":[[0.76,-43.204],[-69.333,-113.297],[0.76,-183.389],[71.155,-113.297]],"c":true}},"nm":"O"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"O"}],"ip":0,"op":38,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"O Outlines","parent":13,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[251,287,0],"e":[254,286,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[254,286,0],"e":[252.853,289.049,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[252.853,289.049,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[251,287,0],"e":[254,286,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[254,286,0],"e":[252.853,289.049,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[252.853,289.049,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[251,287,0],"e":[254,286,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[254,286,0],"e":[252.853,289.049,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[252.853,289.049,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[251,287,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[251,287,0],"e":[249.756,286.943,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[249.756,286.943,0],"e":[247.824,284.946,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[247.824,284.946,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[251,287,0],"e":[251,287,0],"to":[0,0,0],"ti":[0,0,0]},{"t":23}]},"a":{"k":[1,-113,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[-0.331,-0.331,100],"e":[100,100,100]},{"t":3}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-64.352,0],[0,64.352],[64.352,0],[0,-64.352]],"o":[[64.352,0],[0,-64.352],[-64.352,0],[0,64.352]],"v":[[0.76,3.021],[117.078,-113.297],[0.76,-229.614],[-115.558,-113.297]],"c":true}},"nm":"O"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[39.88,0],[0,39.578],[-39.578,0],[0,-39.578]],"o":[[-39.578,0],[0,-39.578],[39.88,0],[0,39.578]],"v":[[0.76,-43.204],[-69.333,-113.297],[0.76,-183.389],[71.155,-113.297]],"c":true}},"nm":"O"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"O"}],"ip":0,"op":38,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":1,"nm":"ResizerTemp","parent":14,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":38,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":1,"nm":"White Solid 45","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":38,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":38,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/P.json b/example/shared/src/commonMain/composeResources/files/mobilo/P.json new file mode 100644 index 00000000..0a58a8e5 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/P.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"blue 6","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.25,-9.25],[0,0],[-17.976,0.36],[-3.259,6.008],[3.924,8.465],[9.103,0]],"o":[[0,0],[-0.25,9.25],[0,0],[10.945,-0.219],[4,-7.375],[-4.264,-9.199],[-14.75,0]],"v":[[-23.375,-85],[-23.25,-56.25],[-23.625,-32],[19.601,-32.235],[42,-45],[43.331,-69.279],[19.375,-84.875]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":25,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"blue 5","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-7.509],[0.063,-14.5],[0.125,-7.5],[0,0],[-8.696,0],[-11.25,0.063],[0.738,34.014],[-0.435,8.258],[-14.138,2.939],[-10.005,18.497],[0.143,22.252],[9.348,12.328],[31.493,0],[0,0],[0.001,-12.751],[0.379,-8.633]],"o":[[0,16.125],[-0.097,22.612],[-0.204,12.259],[0,0],[7.75,0],[0,-12.062],[-0.239,-11.03],[11.44,0.008],[10.344,-2.151],[2.494,-4.611],[-0.092,-14.266],[-13.068,-17.234],[-29.964,0],[0,0],[-0.001,13.288],[-0.538,12.257]],"v":[[-70.75,-25.75],[-70.438,24.5],[-70.5,69.875],[-70.75,99.938],[-56,100],[-23.625,100],[-23.55,47.222],[-23.502,7.43],[39.388,5.311],[81.755,-24.497],[91.357,-62.002],[75.381,-102.599],[13.757,-126.658],[-70.56,-126.363],[-70.374,-95.326],[-70.504,-57.742]],"c":true}},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":25,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"folds","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":20,"s":[{"i":[[0.375,-0.125],[4.25,-4.5],[10.983,-10.647],[0,0],[-9.674,8.541],[-2.605,1.34],[0,0]],"o":[[-0.375,0.125],[-2.545,2.694],[-7.36,7.135],[0,0],[9.674,-8.541],[4.375,-2.25],[0,0]],"v":[[-21.125,12],[-32.125,19.25],[-57.848,48.649],[-75.125,61],[-55.924,50.541],[-29.25,19.875],[-21.625,13.875]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0.375,-0.125],[4.25,-4.5],[0.67,-1.131],[0,0],[-1.022,1.035],[-2.91,1.497],[0,0]],"o":[[-0.375,0.125],[-2.879,3.048],[-0.319,0.539],[0,0],[2.03,-2.057],[4.375,-2.25],[0,0]],"v":[[-21.625,9.75],[-32.625,16.5],[-37.676,22.925],[-38.125,23.75],[-36.459,22],[-28,15.125],[-21.625,13.875]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":18,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":22,"s":[100],"h":1},{"t":24,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":20,"s":[{"i":[[0,0],[4.5,-4.875],[0,0],[0,0],[-6.875,5.25]],"o":[[0,0],[-4.5,4.875],[0,0],[0,0],[6.875,-5.25]],"v":[[-52.75,-110.5],[-63.75,-103.875],[-70,-94.875],[-70.5,-88.5],[-59.625,-106.375]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0,0],[-2.322,0.786],[0,0],[0,0],[3.198,-0.843]],"o":[[0,0],[2.716,-0.919],[0,0],[0,0],[-1.675,0.442]],"v":[[-36.875,-28.791],[-32.366,-32.154],[-25.354,-33.914],[-25.052,-32.306],[-31.136,-30.82]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":18,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":22,"s":[100],"h":1},{"t":24,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":20,"s":[{"i":[[0,0],[-2.5,-8.5],[0,0],[7.875,7.625]],"o":[[0,0],[2.5,8.5],[0,0],[-7.13,-6.904]],"v":[[-36.5,-101.25],[-21.75,-87.375],[-17.75,-86.625],[-23,-94.25]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0,0],[-0.638,-3.147],[0,0],[-0.509,0.202]],"o":[[0,0],[0.862,-0.147],[0,0],[-6.009,-6.673]],"v":[[-26.851,-92.311],[-21.862,-85.853],[-19.542,-86.02],[-19.366,-85.952]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":18,"s":[0],"h":1},{"t":20,"s":[100],"h":1},{"t":22,"s":[100],"h":1},{"t":24,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.966,2.682],[5,-7.5],[0,0],[-14.267,-0.278],[-6.938,-9.943],[-1.824,-9.067],[-0.078,3.435],[-1.321,3.706]],"o":[[-3.609,-1.39],[-5,7.5],[0,0],[8.97,0.175],[8.159,11.694],[1.666,-4.06],[0.061,-2.703],[-5,-7.5]],"v":[[-41.25,-112.5],[-61,-105.75],[-69.25,-86],[-47.25,-112],[-24.992,-96.977],[-16.503,-78.47],[-14.76,-85.714],[-13.51,-89.485]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":16,"s":[0],"h":1},{"t":18,"s":[100],"h":1},{"t":20,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":-0.113,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.5,0],[-5.375,-3.5],[2.375,1.375]],"o":[[0.5,0],[-3.375,-4.375],[-2.363,-1.368]],"v":[[14.5,-125.75],[30.875,-117.75],[21.5,-125.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":14,"s":[0],"h":1},{"t":16,"s":[100],"h":1},{"t":18,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":16,"s":[{"i":[[0,0],[-3.375,-10.625],[0,0],[0.119,6.888]],"o":[[0,0],[3.375,10.625],[0,0],[-0.375,-21.625]],"v":[[36,-113.875],[47,-93.625],[50.75,-70.25],[51.75,-79.5]],"c":true}],"h":1},{"t":18,"s":[{"i":[[0,0],[-3.722,-10.509],[0,0],[0.485,6.872]],"o":[[0,0],[4.25,12],[0,0],[-1.375,-19.5]],"v":[[35.875,-108.125],[46.625,-87.375],[50.375,-62.625],[52,-73.625]],"c":true}],"h":1},{"t":20,"s":[{"i":[[0,0],[-2,-11.75],[0,0],[0.485,6.872]],"o":[[0,0],[1.871,10.99],[0,0],[-1.375,-19.5]],"v":[[39.625,-97.875],[46.875,-76.875],[49,-62.625],[49.75,-70.75]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0,0],[0.271,-10.613],[0,0],[-0.146,3.085]],"o":[[0,0],[-0.285,11.145],[0,0],[0.677,-14.335]],"v":[[43.42,-83.061],[47.053,-62.87],[47.963,-56.358],[48.481,-60.313]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":14,"s":[0],"h":1},{"t":16,"s":[100],"h":1},{"t":22,"s":[100],"h":1},{"t":24,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"blue 4","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":8,"s":[{"i":[[5.7,0.438],[11.5,-5.75],[-1.579,-18.949],[-6.75,-5.25],[0,0],[-8.25,18.75],[-11.5,3.5],[7.5,10.434],[1.602,0.836],[0.212,0.091],[0.035,0.015],[0,0],[0,0],[0,0],[0,0],[0,0],[0.001,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.022,0.009],[0.457,0.108]],"o":[[-9.75,-0.75],[-11.5,5.75],[1,12],[6.75,5.25],[0,0],[8.25,-18.75],[11.5,-3.5],[-1.627,-2.263],[-0.209,-0.109],[-0.035,-0.015],[-0.014,-0.006],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.015,-0.006],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.442,-0.172],[-3.481,-0.823]],"v":[[-23.5,-20.75],[-64.75,-19.75],[-91.5,14.25],[-70.75,44.25],[-55,56],[-53.5,26.25],[-22,-2.25],[-3.25,-15],[-8.026,-19.482],[-8.657,-19.783],[-8.763,-19.828],[-8.807,-19.846],[-8.812,-19.848],[-8.815,-19.849],[-8.817,-19.85],[-8.82,-19.852],[-8.826,-19.854],[-8.881,-19.877],[-8.884,-19.878],[-8.885,-19.878],[-8.892,-19.881],[-8.914,-19.889],[-8.98,-19.915],[-10.327,-20.332]],"c":true}],"h":1},{"t":10,"s":[{"i":[[17.5,-2.25],[16.75,-4.25],[-1.579,-18.949],[-13.75,-8.185],[0,0],[-22.5,-2.5],[-11.5,3.5],[-11.39,5.95],[-6.568,19.992],[15.524,21.231],[9.626,4.767],[0.584,-2.97],[-0.021,-0.485],[-0.033,-0.198],[-0.025,-0.099],[-0.04,-0.108],[-0.076,-0.118],[-1.049,-2.912],[-0.155,-0.478],[-0.078,-0.253],[-0.166,-0.63],[-0.209,-1.163],[0.145,-1.117],[4.246,-2.679]],"o":[[-12.887,1.657],[-12.462,3.162],[1,12],[10.5,6.25],[0,0],[25,-2],[11.5,-3.5],[5.053,-2.64],[1.294,-3.939],[-1.485,-2.031],[-6.072,-3.006],[-0.106,0.538],[0.01,0.22],[0.018,0.108],[0.031,0.123],[0.057,0.153],[1.907,2.987],[0.176,0.487],[0.083,0.256],[0.202,0.656],[0.346,1.316],[0.642,3.567],[-2.187,16.859],[-18.863,11.902]],"v":[[-11.75,-28.5],[-70.5,-19.75],[-96.75,10.5],[-78,33.25],[-66.75,41.25],[-51.25,24],[0.75,19.75],[57,-2.75],[106.568,-47.492],[99.226,-93.231],[83.124,-111.267],[73.824,-108.107],[73.701,-106.554],[73.766,-105.925],[73.831,-105.614],[73.938,-105.267],[74.137,-104.859],[78.515,-95.894],[79.011,-94.446],[79.253,-93.682],[79.803,-91.751],[80.629,-88.018],[81.187,-80.609],[56.875,-46.356]],"c":true}],"h":1},{"t":12,"s":[{"i":[[23.75,-2.5],[19.75,-3.75],[3.5,-19],[-1.5,-11],[-2.5,-0.5],[-24,7.5],[-11.978,1.01],[-11.39,5.95],[-8.051,24.083],[5.274,17.481],[9.626,4.767],[2.271,-0.234],[0.024,-0.209],[-0.081,-0.132],[-0.073,-0.083],[-0.137,-0.121],[-0.291,-0.208],[-1.587,-3.372],[-0.217,-0.574],[-0.103,-0.31],[-0.186,-0.816],[-0.098,-1.703],[0.697,-4.018],[10.625,-11.394]],"o":[[-12.921,1.36],[-12.632,2.398],[-2.181,11.842],[0.762,5.589],[2.5,0.5],[16.25,-6.25],[20.75,-1.75],[5.053,-2.639],[4.182,-12.508],[-0.727,-2.409],[-6.072,-3.006],[-0.411,0.042],[-0.011,0.095],[0.044,0.072],[0.09,0.103],[0.193,0.171],[3.782,2.699],[0.266,0.564],[0.116,0.308],[0.268,0.805],[0.388,1.703],[0.301,5.222],[-2.187,12.609],[-15.211,16.313]],"v":[[-11.75,-28.5],[-65,-19.5],[-86.5,4],[-84.5,33.5],[-77.5,45],[-51.25,24],[-10,16.5],[49.5,0],[92.068,-41.492],[94.976,-90.731],[80.124,-113.517],[64.216,-118.457],[63.543,-118.085],[63.647,-117.744],[63.823,-117.511],[64.163,-117.176],[64.887,-116.609],[72.744,-107.365],[73.467,-105.657],[73.796,-104.729],[74.474,-102.296],[75.181,-97.171],[73.937,-82.859],[53.125,-48.356]],"c":true}],"h":1},{"t":14,"s":[{"i":[[23.75,-2.5],[14.25,-5.25],[0,-11.5],[-1.5,-11],[-2.5,-0.5],[-16.75,8],[-17.75,1.25],[-11.691,5.333],[-8.051,24.083],[3.696,17.881],[9.448,5.11],[4.894,0.427],[0.336,-0.138],[0.02,-0.11],[-0.031,-0.074],[-0.105,-0.114],[-0.291,-0.208],[-2.149,-4.349],[-0.319,-0.752],[-0.16,-0.409],[-0.342,-1.087],[-0.425,-2.27],[0.697,-4.018],[10.277,-11.709]],"o":[[-12.921,1.36],[-12.065,4.445],[0,12.042],[0.762,5.589],[2.5,0.5],[16.25,-6.25],[20.772,-1.463],[14.25,-6.5],[4.182,-12.508],[-2.226,-10.769],[-9.278,-5.018],[-0.886,-0.077],[-0.152,0.063],[-0.011,0.06],[0.038,0.092],[0.149,0.161],[3.782,2.699],[0.36,0.728],[0.171,0.403],[0.415,1.061],[0.715,2.27],[1.303,6.961],[-2.187,12.609],[-10.625,12.105]],"v":[[-7.5,-31],[-61.25,-14.75],[-76.5,5.75],[-75.25,32.5],[-72,49.25],[-51.25,24],[-8.25,12],[49.75,-0.25],[92.068,-41.492],[90.976,-89.731],[71.374,-114.517],[44.863,-123.516],[42.999,-123.43],[42.737,-123.172],[42.766,-122.97],[42.981,-122.662],[43.637,-122.109],[52.451,-111.203],[53.469,-108.981],[53.966,-107.762],[55.102,-104.535],[56.801,-97.686],[57.437,-80.109],[42.375,-44.106]],"c":true}],"h":1},{"t":16,"s":[{"i":[[23.75,-2.5],[14.25,-5.25],[0,-11.5],[-0.25,-12.75],[-2.5,-0.5],[-11.25,7.75],[-17.74,2.816],[-11.691,5.333],[-8.051,24.083],[3.696,17.881],[9.483,5.047],[7.562,-0.79],[0.589,-0.29],[0.089,-0.152],[-0.007,-0.087],[-0.096,-0.112],[-0.317,-0.164],[23.626,2.288],[6.76,-8.256],[-2.928,-2.178],[-9.311,-2.256],[-22.631,-4.789],[-14.187,0.859],[3.02,-5.641]],"o":[[-12.921,1.36],[-12.065,4.445],[0,12.042],[0.111,5.639],[1.25,0.25],[13,-7.5],[15.75,-2.5],[14.25,-6.5],[4.182,-12.508],[-2.226,-10.769],[-19.858,-10.568],[-1.37,0.143],[-0.267,0.132],[-0.048,0.083],[0.009,0.107],[0.135,0.159],[-12.887,-2.641],[-19.764,-1.914],[-1.517,1.852],[2.903,-5.567],[16.404,3.975],[9.2,1.947],[0.753,12.775],[-4.875,9.106]],"v":[[-7.5,-31],[-58.5,-17.5],[-73,4.25],[-74.5,32.5],[-70.25,52.5],[-45.75,27.25],[-0.5,8.25],[54.75,0.5],[91.068,-38.242],[90.226,-86.231],[68.624,-115.017],[22.62,-126.773],[19.654,-126.106],[19.117,-125.679],[19.054,-125.424],[19.21,-125.094],[19.887,-124.609],[-35.986,-130.586],[-66.51,-118.744],[-65.906,-105.877],[-47.939,-119.244],[-7.369,-91.961],[50.937,-80.359],[44.125,-47.856]],"c":true}],"h":1},{"t":18,"s":[{"i":[[23.879,-0.356],[21.25,-9],[0,-11.5],[-0.25,-12.75],[-2.5,-0.5],[-10.75,10.75],[-23.885,1.61],[-11.691,5.333],[-8.051,24.083],[3.696,17.881],[9.483,5.047],[24.436,-1.104],[10.291,-23.15],[3.728,-18.599],[-8.609,-9.373],[-4.278,9.476],[-0.474,-0.001],[-7.618,-0.983],[-1.21,-0.191],[-0.63,-0.11],[-1.516,-0.336],[-2.678,-0.921],[-4.559,-4.836],[5.125,-5.394]],"o":[[-16.75,0.25],[-11.839,5.014],[0,12.042],[0.111,5.639],[1.25,0.25],[12.5,-10.5],[22.25,-1.5],[14.25,-6.5],[4.182,-12.508],[-2.226,-10.769],[-15.887,-8.455],[-6.239,0.282],[-6.248,14.055],[-0.978,4.88],[11.106,12.09],[8.301,-18.391],[10.198,0.031],[1.275,0.165],[0.649,0.102],[1.636,0.285],[3.165,0.701],[8.211,2.822],[0.753,12.775],[-11.094,11.678]],"v":[[-7.5,-31],[-54,-21.75],[-73,4.25],[-72.25,31.75],[-71.25,59.25],[-44.25,29.25],[-2.5,9.25],[53.75,2.25],[92.318,-35.992],[90.226,-86.231],[68.624,-115.017],[-9.436,-129.396],[-68.252,-114.555],[-71.728,-72.401],[-66.043,-33.961],[-27.801,-35.109],[-14.113,-89.609],[12.507,-88.081],[16.234,-87.548],[18.153,-87.23],[22.879,-86.298],[31.631,-83.864],[50.437,-72.359],[44.125,-47.856]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":[{"t":6,"s":[0],"h":1},{"t":8,"s":[100],"h":1},{"t":18,"s":[100],"h":1},{"t":20,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"}],"ip":2,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"blue 3","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":12,"s":[{"i":[[16.029,-0.267],[3.75,-4],[-0.56,-0.884],[-0.35,-0.228],[-5.448,0.272],[-10,-15],[-21.25,-0.283],[7.25,3.25],[4.044,8.858]],"o":[[-15,0.25],[-1.296,1.382],[0.178,0.281],[1.738,1.131],[14.981,-0.749],[10,15],[18.75,0.25],[-7.25,-3.25],[-5.25,-11.5]],"v":[[-13.25,-133.5],[-50,-121.25],[-51.046,-117.841],[-50.252,-117.078],[-39.25,-115.75],[-6,-106.5],[32,-76.75],[38.75,-89.5],[24.75,-115.5]],"c":true}],"h":1},{"t":14,"s":[{"i":[[20,2.5],[13.556,-11.686],[-4.508,-1.295],[-0.263,1.788],[-4.54,0.227],[-6.5,-7.25],[-21.191,1.599],[-5.75,5.25],[4.044,8.858]],"o":[[-14.886,-1.861],[-7.25,6.25],[0.243,-2.065],[2.317,-15.766],[14.981,-0.749],[12.034,13.423],[13.25,-1],[-9.5,0.25],[-5.25,-11.5]],"v":[[-14.75,-131.25],[-60.75,-122.5],[-66.028,-96.902],[-63.442,-100.734],[-45.25,-121.25],[-14.75,-106],[35,-79.5],[51,-88.75],[30,-107.5]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":[{"t":10,"s":[0],"h":1},{"t":12,"s":[100],"h":1},{"t":14,"s":[100],"h":1},{"t":16,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"}],"ip":2,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"blue 2","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-21.5,-3.245],[-5.533,11.758],[9.419,11.421],[0.331,11.259],[7.062,0.03],[0.367,-13.862]],"o":[[11.282,1.703],[6.134,-13.035],[-6.084,-7.378],[-0.331,-11.259],[-8.421,-0.036],[-0.919,34.68]],"v":[[-48.282,-30.203],[-21.384,-46.215],[-30.419,-61.921],[-37.906,-84.422],[-46.829,-108.714],[-72.117,-74.638]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":[{"t":14,"s":[0],"h":1},{"t":16,"s":[100],"h":1},{"t":18,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"}],"ip":2,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"blue 7","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":20,"s":[{"i":[[10,0],[0.75,-9.5],[-5.221,1.14],[-15.031,2.111],[-5.898,7.04],[0.843,6.623],[9.297,2.841]],"o":[[-0.75,7.25],[-0.728,9.225],[12.997,-2.838],[10.123,-1.421],[3.44,-4.106],[-1.057,-8.299],[-27,-8.25]],"v":[[-19,-85.75],[-20.5,-54],[-25.75,-31.75],[19.682,-35.255],[44.75,-46.75],[48.859,-64.174],[33.75,-83.5]],"c":true}],"h":1},{"t":22,"s":[{"i":[[5,0],[0.5,-9.375],[-2.611,0.57],[-16.504,1.235],[-4.578,6.524],[2.384,7.544],[9.2,1.42]],"o":[[-0.375,3.625],[-0.489,9.237],[6.498,-1.419],[10.534,-0.82],[3.72,-5.74],[-2.661,-8.749],[-20.875,-4.125]],"v":[[-21.188,-85.375],[-21.875,-55.125],[-24.688,-31.875],[19.642,-33.745],[43.375,-45.875],[46.095,-66.726],[26.562,-84.188]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":2,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"blue 1","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0.625,0.063],[10,-4.75],[16.25,-11.5],[-5.852,11.705],[-20.581,7.952],[-11.75,11],[0.943,4.26],[2.122,1.545],[0.31,0.183],[0.252,0.124],[0.104,0.048],[0.128,0.053],[0.198,0.071],[0.229,0.067],[0.079,0.021],[0.131,0.031]],"o":[[-7.5,-0.75],[-17.775,8.443],[-18.354,12.989],[5,-10],[22,-8.5],[4.835,-4.526],[-0.565,-2.553],[-0.286,-0.208],[-0.238,-0.14],[-0.102,-0.05],[-0.125,-0.057],[-0.191,-0.079],[-0.221,-0.079],[-0.078,-0.023],[-0.129,-0.035],[-0.579,-0.138]],"v":[[-139,123.5],[-169.25,127.5],[-215,154.5],[-225,186.25],[-186.25,164],[-134.25,146],[-128.864,132.027],[-132.991,125.71],[-133.886,125.123],[-134.621,124.725],[-134.93,124.579],[-135.31,124.412],[-135.894,124.187],[-136.569,123.968],[-136.803,123.902],[-137.193,123.803]],"c":true}],"h":1},{"t":4,"s":[{"i":[[0.624,0.076],[17.5,-9],[17,-14],[-13,-1.5],[-23.5,8.5],[-28,20.5],[-1.787,6.594],[1.685,2.11],[0.266,0.246],[0.225,0.166],[0.094,0.063],[0.118,0.07],[0.186,0.092],[0.22,0.087],[0.076,0.027],[0.127,0.04]],"o":[[-20.5,-2.5],[-17.5,9],[-17,14],[13,1.5],[23.5,-8.5],[13.594,-9.953],[1.071,-3.952],[-0.227,-0.284],[-0.204,-0.189],[-0.091,-0.067],[-0.114,-0.076],[-0.176,-0.105],[-0.208,-0.103],[-0.074,-0.029],[-0.124,-0.045],[-0.563,-0.177]],"v":[[-73,89.5],[-147,120.5],[-197,143.5],[-219,171],[-177,157.5],[-88,127],[-66.222,101.626],[-67.421,92.414],[-68.161,91.618],[-68.805,91.086],[-69.083,90.891],[-69.431,90.672],[-69.974,90.377],[-70.616,90.093],[-70.841,90.007],[-71.218,89.88]],"c":true}],"h":1},{"t":6,"s":[{"i":[[1.492,-1.571],[20.5,-12.25],[26,-14],[-13,-1.5],[-24.413,5.34],[-31.75,27],[18.42,18.877],[16.815,1.758],[0.335,-2.562],[0.423,-1.576],[0.194,-0.582],[0.264,-0.629],[0.449,-0.803],[0.556,-0.769],[0.193,-0.249],[0.327,-0.383]],"o":[[-23.5,24.75],[-16.892,10.094],[-19.39,10.441],[13,1.5],[40,-8.75],[11.843,-10.071],[-9.012,-9.236],[0.011,3.378],[-0.257,1.966],[-0.171,0.636],[-0.234,0.701],[-0.393,0.936],[-0.502,0.897],[-0.188,0.26],[-0.316,0.408],[-1.442,1.689]],"v":[[-44.5,57.25],[-118.5,101.75],[-180,133.25],[-205,163.5],[-163.25,149.5],[-9.25,101.75],[-1.988,41.236],[-32.815,27.492],[-33.318,36.36],[-34.345,41.653],[-34.893,43.479],[-35.64,45.472],[-36.907,48.074],[-38.498,50.563],[-39.07,51.326],[-40.035,52.51]],"c":true}],"h":1},{"t":8,"s":[{"i":[[1.733,-1.3],[20.5,-12.25],[26.292,-13.445],[-9.25,1.25],[-35.25,3.5],[-30.75,23.5],[0.025,26.374],[10.065,2.008],[0.75,-2.659],[0.9,-1.679],[0.404,-0.625],[0.535,-0.682],[0.867,-0.873],[1.004,-0.826],[0.339,-0.264],[0.547,-0.397]],"o":[[-12,9],[-16.892,10.094],[-22,11.25],[12.007,-1.623],[40.746,-4.046],[12.352,-9.44],[-0.012,-13.236],[0.011,3.378],[-0.576,2.041],[-0.364,0.678],[-0.487,0.753],[-0.796,1.015],[-0.969,0.976],[-0.339,0.279],[-0.556,0.433],[-2.415,1.753]],"v":[[-44.5,52.5],[-109,92.25],[-169.75,124],[-187.25,148.5],[-133,139.25],[-18.5,96.75],[-8.988,45.736],[-23.815,21.742],[-24.982,30.769],[-27.224,36.335],[-28.378,38.289],[-29.914,40.44],[-32.42,43.267],[-35.393,45.962],[-36.412,46.778],[-38.069,48.023]],"c":true}],"h":1},{"t":10,"s":[{"i":[[1.733,-1.3],[22,-17.25],[25.839,-14.294],[-8.961,-2.292],[-4.775,-0.126],[-31.068,23.079],[2.42,26.263],[10.065,2.008],[0.005,-2.343],[0.447,-1.622],[0.24,-0.626],[0.362,-0.712],[0.663,-0.963],[0.837,-0.954],[0.289,-0.309],[0.482,-0.467]],"o":[[-12,9],[-15.486,12.142],[-11.75,6.5],[10.75,2.75],[37.75,1],[8.75,-6.5],[-1.012,-10.986],[0.976,2.633],[-0.004,1.798],[-0.181,0.655],[-0.289,0.754],[-0.538,1.059],[-0.74,1.076],[-0.283,0.323],[-0.474,0.506],[-2.129,2.064]],"v":[[-41.75,57.25],[-101.25,88.5],[-146.25,113.75],[-165.25,129.25],[-139.25,126.5],[-25.25,97],[-8.988,51.236],[-28.315,26.992],[-26.923,34.457],[-27.63,39.588],[-28.262,41.511],[-29.241,43.71],[-31.053,46.744],[-33.434,49.79],[-34.292,50.737],[-35.729,52.197]],"c":true}],"h":1},{"t":12,"s":[{"i":[[2.731,-1.332],[14.5,-16.5],[19.189,-10.587],[-9.5,-5.25],[-4.764,0.336],[-26.133,13.271],[2.42,26.263],[10.065,2.008],[0.077,-1.944],[0.554,-1.17],[0.292,-0.429],[0.439,-0.46],[0.813,-0.584],[1.052,-0.563],[0.368,-0.183],[0.628,-0.286]],"o":[[-13.482,6.576],[-12.99,14.782],[-14.5,8],[9.712,5.367],[17.75,-1.25],[32,-16.25],[-1.012,-10.986],[0.976,2.633],[-0.059,1.492],[-0.224,0.473],[-0.352,0.517],[-0.654,0.685],[-0.908,0.652],[-0.356,0.19],[-0.603,0.3],[-2.77,1.261]],"v":[[-39.75,53.75],[-83,78.5],[-117.25,109],[-139.25,123.75],[-107.5,124.75],[-56.5,104.25],[-9.738,53.736],[-21.565,31.242],[-20.276,38.066],[-21.221,42.042],[-21.996,43.393],[-23.186,44.856],[-25.396,46.753],[-28.352,48.566],[-29.438,49.125],[-31.287,50.002]],"c":true}],"h":1},{"t":14,"s":[{"i":[[2.065,-1.199],[14.5,-16.5],[8.5,-6],[-9.092,-5.929],[-8.25,2.75],[-10.884,2.419],[2.42,26.263],[3.815,1.258],[0.602,-1.314],[0.651,-0.88],[0.29,-0.337],[0.384,-0.383],[0.637,-0.525],[0.775,-0.542],[0.268,-0.179],[0.451,-0.285]],"o":[[-12.972,7.532],[-12.99,14.782],[-13.529,9.55],[5.75,3.75],[8.475,-2.825],[33.75,-7.5],[-1.012,-10.986],[-0.208,1.58],[-0.462,1.009],[-0.263,0.356],[-0.349,0.407],[-0.572,0.57],[-0.712,0.586],[-0.262,0.183],[-0.439,0.294],[-1.993,1.258]],"v":[[-39,44.75],[-80.5,73.25],[-101,99.5],[-113.75,116.5],[-91.25,112.5],[-55,99.75],[-14.488,53.986],[-21.815,26.992],[-23.05,31.32],[-24.729,34.148],[-25.559,35.187],[-26.66,36.37],[-28.476,38.01],[-30.711,39.699],[-31.506,40.243],[-32.842,41.111]],"c":true}],"h":1},{"t":16,"s":[{"i":[[1.932,-1.665],[10.42,-11.313],[4.5,-4],[-5.5,-4.5],[-8.25,2.75],[-11.113,0.901],[-1.512,32.264],[3.815,1.258],[0.561,-1.556],[0.602,-1.202],[0.267,-0.484],[0.354,-0.578],[0.587,-0.841],[0.715,-0.902],[0.247,-0.3],[0.418,-0.475]],"o":[[-11.361,9.794],[-8.75,9.5],[-12.378,11.002],[5.313,4.347],[8.475,-2.825],[27.75,-2.25],[0.517,-11.02],[-0.208,1.492],[-0.431,1.194],[-0.243,0.486],[-0.322,0.583],[-0.527,0.86],[-0.656,0.939],[-0.242,0.305],[-0.405,0.491],[-1.843,2.099]],"v":[[-38,41.25],[-75.25,68],[-92.25,90],[-101.25,109.5],[-76.25,104.5],[-44.5,99.25],[-16.738,50.986],[-22.065,16.492],[-23.236,21.079],[-24.792,24.679],[-25.559,26.134],[-26.574,27.877],[-28.247,30.431],[-30.307,33.196],[-31.041,34.104],[-32.276,35.555]],"c":true}],"h":1},{"t":18,"s":[{"i":[[1.799,-1.998],[18.75,-9.5],[4.75,-5.75],[-6.879,-1.783],[-8.25,2.75],[-11.113,0.901],[-1.512,32.264],[3.815,1.258],[0.584,-1.271],[0.624,-0.887],[0.276,-0.348],[0.364,-0.408],[0.598,-0.595],[0.718,-0.668],[0.247,-0.228],[0.413,-0.38]],"o":[[-10.035,11.149],[-11.521,5.837],[-10.547,12.768],[6.75,1.75],[8.475,-2.825],[27.75,-2.25],[0.517,-11.02],[-0.208,1.492],[-0.448,0.975],[-0.252,0.358],[-0.333,0.419],[-0.542,0.608],[-0.668,0.665],[-0.243,0.226],[-0.405,0.373],[-1.823,1.679]],"v":[[-39,34.75],[-71.25,61.75],[-88.75,82],[-91.5,104.5],[-68.5,104.25],[-42.5,98.5],[-16.238,51.736],[-23.065,14.492],[-24.274,18.617],[-25.892,21.401],[-26.685,22.46],[-27.732,23.701],[-29.444,25.503],[-31.528,27.496],[-32.263,28.176],[-33.491,29.305]],"c":true}],"h":1},{"t":20,"s":[{"i":[[-13.5,0.5],[5.164,-28.166],[1.666,-7.27],[3.5,-15.5],[-25,8.75],[-11.137,0.539],[0.738,34.014],[4.814,6.508],[-17.388,2.439],[-13.255,23.747],[0.143,22.252],[12.832,8.644],[20.119,0.783],[13.636,-4.603],[0.999,-12.712],[0.215,-2.075]],"o":[[-25.5,8.75],[-2.75,15],[-0.25,14.5],[-1.012,4.483],[7.315,-2.56],[15.5,-0.75],[-0.239,-11.03],[17.314,-10.492],[6.333,-0.888],[2.555,-4.577],[-0.092,-14.266],[-45.131,-30.401],[-29.941,-1.165],[-11.815,3.988],[-1.072,13.643],[-1.996,19.246]],"v":[[-52.5,-25.25],[-71.5,16.75],[-72.25,60],[-84,99.5],[-60.75,102.25],[-32.75,99],[-18.238,46.986],[-22.564,13.492],[31.888,6.061],[84.255,-21.747],[93.607,-61.002],[76.631,-107.849],[5.132,-128.283],[-61.685,-125.988],[-70.249,-96.038],[-68.504,-55.746]],"c":true}],"h":1},{"t":22,"s":[{"i":[[-6.75,-3.505],[2.613,-21.333],[0.895,-7.385],[5.375,-15.219],[-12.375,2.625],[-11.193,0.301],[0.738,34.014],[2.19,7.383],[-15.763,2.689],[-11.63,21.122],[0.143,22.252],[11.09,10.486],[25.806,0.391],[6.818,-2.302],[0.5,-12.731],[0.297,-5.354]],"o":[[-8.375,12.5],[-1.424,18.806],[-2.477,7.879],[-0.765,2.167],[7.532,-1.28],[7.75,-6.406],[-0.239,-11.03],[14.377,-5.242],[8.338,-1.52],[2.524,-4.594],[-0.092,-14.266],[-29.099,-23.817],[-29.952,-0.583],[-5.908,1.994],[-0.537,13.466],[-1.267,15.751]],"v":[[-63.625,-25.5],[-70.969,20.625],[-71.375,64.937],[-76.125,99.469],[-58.375,101.125],[-28.187,99.5],[-20.894,47.104],[-23.033,10.461],[35.638,5.686],[83.005,-23.122],[92.482,-61.502],[76.006,-105.224],[9.444,-127.47],[-66.122,-126.176],[-70.311,-95.682],[-69.504,-56.744]],"c":true}],"h":1},{"t":24,"s":[{"i":[[0,-7.509],[0.063,-14.5],[0.125,-7.5],[0,0],[-8.696,0],[-11.25,0.063],[0.738,34.014],[-0.435,8.258],[-14.138,2.939],[-10.005,18.497],[0.143,22.252],[9.348,12.328],[31.493,0],[0,0],[0.001,-12.751],[0.379,-8.633]],"o":[[0,16.125],[-0.097,22.612],[-0.204,12.259],[0,0],[7.75,0],[0,-12.062],[-0.239,-11.03],[11.44,0.008],[10.344,-2.151],[2.494,-4.611],[-0.092,-14.266],[-13.068,-17.234],[-29.964,0],[0,0],[-0.001,13.288],[-0.538,12.257]],"v":[[-70.75,-25.75],[-70.438,24.5],[-70.5,69.875],[-70.75,99.938],[-56,100],[-23.625,100],[-23.55,47.222],[-23.502,7.43],[39.388,5.311],[81.755,-24.497],[91.357,-62.002],[75.381,-102.599],[13.757,-126.658],[-70.56,-126.363],[-70.374,-95.326],[-70.504,-57.742]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":2,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"orange ","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":1,"s":[{"i":[[1.204,-1.29],[0.037,-1.817],[-2.503,-3.652],[-5.736,-0.479],[-4.923,0.026],[-4.078,0.315],[0.186,2.404],[9.609,1.307],[4.095,1.898],[4.396,2.235],[6.686,2.813],[0.784,0.21],[0.631,0.095],[0.414,0.029],[0.218,0.006],[1.34,-0.396],[0.313,-0.122],[0.025,-0.01],[0.03,-0.012],[0.034,-0.014],[0.097,-0.044]],"o":[[-1.265,1.356],[-0.051,2.55],[2.505,3.655],[8.798,0.735],[6.658,-0.036],[8.414,-0.649],[-0.122,-1.583],[-5.036,-0.685],[-6.27,-2.905],[-4.396,-2.235],[-0.708,-0.298],[-0.601,-0.161],[-0.405,-0.061],[-0.217,-0.015],[-1.344,-0.034],[-0.318,0.094],[-0.025,0.01],[-0.03,0.012],[-0.034,0.014],[-0.097,0.041],[-1.383,0.623]],"v":[[-11.885,132.02],[-13.852,136.758],[-10.213,146.004],[6.736,153.979],[29.684,154.998],[50.586,153.899],[65.886,149.161],[45.641,147.193],[31.655,143.352],[16.332,136.952],[3.564,129.437],[1.319,128.667],[-0.532,128.28],[-1.761,128.145],[-2.414,128.114],[-6.468,128.628],[-7.415,128.951],[-7.49,128.981],[-7.579,129.017],[-7.68,129.059],[-7.971,129.185]],"c":true}],"h":1},{"t":2,"s":[{"i":[[3.827,-0.848],[1.747,-3.897],[-1.347,-5.587],[-8.988,-11.091],[-9.046,-6.145],[-8.653,-2.77],[-2.684,4.636],[5.289,3.678],[7.596,9.499],[5.238,9.621],[3.152,10.884],[0.708,1.561],[0.689,1.1],[0.506,0.653],[0.283,0.325],[2.462,1.125],[0.626,0.204],[0.05,0.016],[0.06,0.018],[0.069,0.02],[0.203,0.051]],"o":[[-4.021,0.891],[-2.452,5.469],[2.306,9.568],[12.347,15.236],[12.235,8.31],[10.225,3.274],[1.767,-3.051],[-9.27,-6.446],[-9.587,-11.988],[-5.238,-9.621],[-0.474,-1.638],[-0.543,-1.196],[-0.443,-0.707],[-0.265,-0.342],[-1.742,-2],[-0.583,-0.266],[-0.05,-0.016],[-0.06,-0.019],[-0.069,-0.021],[-0.199,-0.058],[-2.908,-0.733]],"v":[[-67.409,42.621],[-75.99,50.414],[-77.449,68.693],[-57.767,99.668],[-23.985,131.69],[3.653,145.02],[28.211,145.756],[13.02,139.446],[-8.413,117.738],[-28.615,89.978],[-42.224,59.7],[-43.993,54.877],[-45.839,51.422],[-47.261,49.38],[-48.083,48.38],[-54.372,43.597],[-56.186,42.89],[-56.337,42.842],[-56.516,42.786],[-56.724,42.725],[-57.327,42.561]],"c":true}],"h":1},{"t":4,"s":[{"i":[[4.851,1.584],[4.383,-2.69],[2.19,-7.153],[-2.73,-18.381],[-7.25,-12.25],[-6.25,-12.5],[-6.078,3.419],[1.911,8.165],[4.25,15.25],[-0.5,14.25],[-4,11.25],[-0.311,1.898],[-0.007,1.482],[0.104,0.948],[0.086,0.493],[1.949,2.687],[0.554,0.603],[0.045,0.048],[0.054,0.057],[0.063,0.064],[0.19,0.181]],"o":[[-5.097,-1.664],[-6.152,3.776],[-3.75,12.25],[3.75,25.25],[7.25,12.25],[6.25,12.5],[4,-2.25],[-2.75,-11.75],[-4.25,-15.25],[0.5,-14.25],[0.627,-1.764],[0.238,-1.454],[0.005,-0.952],[-0.054,-0.497],[-0.533,-3.039],[-0.462,-0.637],[-0.044,-0.048],[-0.053,-0.057],[-0.062,-0.065],[-0.181,-0.185],[-2.721,-2.59]],"v":[[-51.25,-38.75],[-65.74,-36.662],[-79,-18.75],[-76.75,25.25],[-59.25,84],[-39,117.25],[-20,134.5],[-26.25,119],[-33.25,76],[-41,35.5],[-35.25,-6.5],[-33.821,-12.017],[-33.444,-16.431],[-33.59,-19.284],[-33.801,-20.77],[-37.436,-29.457],[-38.958,-31.318],[-39.092,-31.462],[-39.253,-31.632],[-39.44,-31.826],[-39.996,-32.375]],"c":true}],"h":1},{"t":6,"s":[{"i":[[5.076,0.523],[0.808,-4.343],[3.65,-8.175],[0.5,-22.75],[-5.519,-13.492],[-2.842,-17.523],[-6.078,3.419],[1.911,8.165],[0.494,15.823],[-4.058,13.669],[-1.99,11.773],[-0.076,3.085],[0.203,2.408],[0.247,1.525],[0.162,0.787],[2.4,3.795],[0.655,0.804],[0.053,0.064],[0.064,0.074],[0.074,0.084],[0.22,0.231]],"o":[[-10.089,-1.04],[-1.133,6.096],[-5.222,11.698],[-0.561,25.521],[6.75,16.5],[1.5,9.25],[4,-2.25],[-2.75,-11.75],[-0.5,-16],[4.75,-16],[0.47,-2.783],[0.058,-2.363],[-0.13,-1.546],[-0.129,-0.799],[-1.001,-4.848],[-0.569,-0.899],[-0.052,-0.064],[-0.063,-0.075],[-0.073,-0.085],[-0.212,-0.241],[-3.156,-3.306]],"v":[[-39,-100],[-53.149,-94.145],[-54.25,-70.25],[-66.75,-26.75],[-56.75,34.25],[-46.75,69],[-30.75,93.25],[-34.5,72.5],[-33.5,29.25],[-31,-7.75],[-18.25,-53.75],[-17.416,-62.615],[-17.626,-69.801],[-18.189,-74.416],[-18.627,-76.796],[-23.67,-90.015],[-25.504,-92.574],[-25.662,-92.766],[-25.852,-92.991],[-26.072,-93.245],[-26.72,-93.954]],"c":true}],"h":1},{"t":8,"s":[{"i":[[15.75,-3.75],[4.252,-5.866],[-2.815,-10.1],[1,-23.25],[-2,-14.25],[-2.842,-17.523],[-6.078,3.419],[1.911,8.165],[0.494,15.823],[-4.058,13.669],[-1.99,11.773],[0.291,5.673],[1.422,4.94],[1.632,3.073],[1.089,1.526],[-10.784,0.49],[-12.253,-1.258],[-2.018,0.314],[0.463,2.626],[1.266,0.924],[5.049,6.062]],"o":[[-13.383,3.186],[-7.11,9.809],[3.439,12.341],[-1.097,25.503],[2.478,17.654],[1.5,9.25],[4,-2.25],[-2.75,-11.75],[-0.5,-16],[4.75,-16],[0.45,-2.66],[-0.223,-4.346],[-0.913,-3.173],[-0.855,-1.61],[-3.176,-4.452],[16.502,-0.75],[0.848,0.087],[2.391,-0.371],[-0.262,-1.485],[-3.631,-2.651],[-9.459,-11.357]],"v":[[-41,-122],[-62.502,-109.634],[-62.75,-78.25],[-55.25,-32.5],[-53.75,32.25],[-47.5,68.25],[-30.75,93.25],[-34.5,72.5],[-36.5,24.75],[-31,-7.75],[-16.75,-47.75],[-16.144,-60.815],[-18.446,-74.999],[-22.22,-84.435],[-25.129,-89.149],[-18.752,-104],[13.503,-94.492],[18.535,-94.555],[22.647,-98.593],[20.249,-102.08],[4.692,-112.175]],"c":true}],"h":1},{"t":10,"s":[{"i":[[15.831,-3.392],[4.252,-5.866],[2,-12.25],[-3.75,-23],[-2,-14.25],[-2.842,-17.523],[-6.078,3.419],[1.911,8.165],[-1.75,17.5],[-4.058,13.669],[-3.258,11.487],[1.479,5.872],[0.193,4.095],[-1.12,2.481],[-1.068,1.261],[-10.736,-1.121],[-8.479,3.122],[-3.716,3.073],[-0.574,2.604],[6.014,-2.798],[11.813,4.129]],"o":[[-10.5,2.25],[-7.11,9.809],[-2.064,12.644],[4.108,25.194],[2.478,17.654],[1.5,9.25],[4,-2.25],[-2.75,-11.75],[1.593,-15.928],[4.75,-16],[1.888,-6.658],[-1.133,-4.498],[-0.124,-2.63],[0.587,-1.3],[5.379,-6.351],[16.752,1.75],[7.78,-2.865],[4.402,-3.641],[1.853,-8.407],[-12.031,5.596],[-9.694,-3.389]],"v":[[-40.25,-116.75],[-62.252,-104.134],[-72,-78],[-63.25,-34.25],[-53.75,32.25],[-47.5,68.25],[-30.75,93.25],[-36.5,67],[-36.5,24.75],[-29.25,-7.5],[-22.5,-39.75],[-23.293,-58.518],[-25.914,-71.395],[-24.587,-79.058],[-22.129,-82.899],[-0.502,-86.75],[33.503,-86.992],[50.441,-96.115],[57.397,-105.843],[47.531,-114.096],[6.442,-112.425]],"c":true}],"h":1},{"t":12,"s":[{"i":[[15.831,-3.392],[9.002,-8.866],[0.75,-14.75],[-1.25,-13],[-0.479,-14.382],[-4.25,-12.5],[-6.078,3.419],[0.284,8.38],[-1.75,17.5],[-2.53,14.033],[-1.563,11.837],[0.233,4.779],[-0.879,3.581],[-1.471,2.328],[-1.096,1.237],[-9.999,2],[-8.871,-1.717],[-5.327,0.828],[11.225,12.445],[13.969,3.596],[16.308,1.425]],"o":[[-10.5,2.25],[-8.631,8.501],[-0.995,19.577],[3.144,32.694],[0.5,15],[3.016,8.872],[4,-2.25],[-0.5,-14.75],[1.593,-15.928],[2.75,-15.25],[0.696,-5.267],[-0.179,-3.661],[0.564,-2.3],[0.771,-1.219],[5.629,-6.351],[16.516,-3.303],[24.497,4.742],[9.898,-1.538],[-13.897,-15.407],[-10.963,-2.822],[-10.231,-0.894]],"v":[[-32,-116.75],[-60.502,-101.384],[-70,-67.5],[-64.5,-30.25],[-54.75,32],[-47.75,67.5],[-37,85.25],[-32.75,62.25],[-32.75,25.5],[-29.25,-7.5],[-24.25,-43.75],[-24.329,-58.719],[-23.627,-69.536],[-20.666,-76.466],[-17.879,-80.149],[4.999,-90.25],[40.003,-91.742],[77.426,-65.979],[83.897,-97.593],[46.031,-115.096],[12.692,-118.425]],"c":true}],"h":1},{"t":14,"s":[{"i":[[15.831,-3.392],[9.002,-8.866],[0.75,-14.75],[-1.25,-13],[-0.479,-14.382],[-4.25,-12.5],[-6.078,3.419],[0.284,8.38],[-1.75,17.5],[-2.53,14.032],[-1.563,11.837],[4.984,8.923],[-3.486,9.078],[0.471,5.462],[-5.371,0.649],[-9.998,2],[-9.035,-0.112],[-5.744,-0.362],[1.563,2.161],[22.219,11.346],[11.808,0.925]],"o":[[-10.5,2.25],[-8.631,8.501],[-0.995,19.577],[3.144,32.694],[0.5,15],[3.016,8.872],[4,-2.25],[-0.5,-14.75],[1.593,-15.928],[2.75,-15.25],[0.711,-5.381],[-4.468,-7.999],[2.027,-5.278],[-0.301,-3.492],[8.425,-1.017],[16.516,-3.303],[19.497,0.242],[6.805,0.429],[-14.397,-19.907],[-10.082,-5.148],[-10.238,-0.802]],"v":[[-31.25,-115.75],[-61.002,-103.384],[-70.5,-74.75],[-59,-31.75],[-52.75,30.5],[-49,68.25],[-37,85.25],[-36.5,60.75],[-32.25,28],[-30.25,-6.75],[-26.5,-41.75],[-45.532,-42.001],[-34.736,-62.922],[-31.721,-78.462],[-16.129,-82.899],[5.498,-88.5],[43.003,-89.242],[79.804,-65.508],[81.397,-93.593],[45.281,-117.596],[9.192,-120.925]],"c":true}],"h":1},{"t":16,"s":[{"i":[[15.831,-3.392],[6.426,-10.878],[-4.75,-14.25],[-0.159,-13.059],[-0.479,-14.382],[-4.25,-12.5],[-6.078,3.419],[0.284,8.38],[-1.75,17.5],[-2.53,14.032],[1.816,11.801],[2.109,6.245],[0.638,3.912],[-0.507,1.711],[-0.601,0.604],[-9.999,2],[-8.573,-2.853],[-6.256,0.604],[-0.574,2.604],[22.219,11.346],[11.558,2.925]],"o":[[-10.5,2.25],[-5.248,8.884],[6.199,18.596],[0.25,20.5],[0.5,15],[3.016,8.872],[4,-2.25],[-0.5,-14.75],[1.593,-15.928],[2.75,-15.25],[-0.795,-5.168],[-1.616,-4.784],[-0.41,-2.512],[0.266,-0.896],[13.124,-13.185],[16.516,-3.303],[6.178,2.056],[7.411,-0.715],[1.853,-8.407],[-10.082,-5.148],[-9.956,-2.519]],"v":[[-41.25,-123],[-64.252,-107.884],[-70.75,-69.5],[-59.75,-29.25],[-57,21.25],[-49,68.25],[-37,85.25],[-32.25,60],[-29,26.25],[-25.5,-9.5],[-28.5,-44.5],[-33.701,-62.344],[-37.461,-75.714],[-37.415,-82.135],[-36.129,-84.399],[4.999,-90.25],[40.753,-84.992],[60.537,-83.114],[74.397,-88.593],[42.781,-107.096],[12.692,-118.425]],"c":true}],"h":1},{"t":18,"s":[{"i":[[15.831,-3.392],[6.426,-10.878],[-4.75,-14.25],[-0.159,-13.059],[-0.479,-14.382],[-4.25,-12.5],[-6.078,3.419],[0.284,8.38],[-1.75,17.5],[-0.25,14.257],[1.816,11.801],[2.109,6.245],[0.638,3.912],[-0.507,1.711],[-0.601,0.604],[-10.172,-0.706],[-8.573,-2.853],[-6.256,0.604],[-0.574,2.604],[22.219,11.346],[11.558,2.925]],"o":[[-10.5,2.25],[-5.248,8.884],[6.199,18.596],[0.25,20.5],[0.5,15],[3.016,8.872],[4,-2.25],[-0.5,-14.75],[1.593,-15.928],[0.25,-14.25],[-0.795,-5.168],[-1.616,-4.784],[-0.41,-2.512],[0.266,-0.896],[13.124,-13.185],[18.002,1.25],[6.178,2.056],[7.411,-0.715],[1.853,-8.407],[-10.082,-5.148],[-9.956,-2.519]],"v":[[-38.25,-119],[-57.752,-107.884],[-63.75,-68.5],[-62.25,-30.5],[-61,21.75],[-53,71.5],[-37,85.25],[-32.25,60],[-29,26.25],[-28,-9],[-28.5,-44.5],[-33.701,-62.344],[-37.461,-75.714],[-37.415,-82.135],[-36.129,-84.399],[-1.002,-95.25],[40.753,-84.992],[60.537,-83.114],[74.397,-88.593],[42.781,-107.096],[12.692,-118.425]],"c":true}],"h":1},{"t":20,"s":[{"i":[[15.831,-3.392],[6.426,-10.878],[-4.75,-14.25],[-1.904,-12.92],[-0.479,-14.382],[-4.25,-12.5],[-6.078,3.419],[0.284,8.38],[-1.75,17.5],[-0.25,14.257],[1.816,11.801],[2.109,6.245],[0.638,3.912],[-0.507,1.711],[-0.601,0.604],[-10.172,-0.706],[-8.573,-2.853],[-6.256,0.604],[-0.574,2.604],[22.219,11.346],[11.558,2.925]],"o":[[-10.5,2.25],[-5.248,8.884],[6.199,18.596],[3.5,23.75],[0.5,15],[3.016,8.872],[4,-2.25],[-0.5,-14.75],[1.593,-15.928],[0.25,-14.25],[-0.795,-5.168],[-1.616,-4.784],[-0.41,-2.512],[0.266,-0.896],[13.124,-13.185],[18.002,1.25],[6.178,2.056],[7.411,-0.715],[1.853,-8.407],[-10.082,-5.148],[-9.956,-2.519]],"v":[[-38.25,-119],[-57.752,-107.884],[-63.75,-68.5],[-63.75,-32],[-61,21.75],[-53,71.5],[-37,85.25],[-32.25,60],[-29,26.25],[-28,-9],[-28.5,-44.5],[-33.701,-62.344],[-37.461,-75.714],[-37.415,-82.135],[-36.129,-84.399],[-1.002,-95.25],[40.753,-84.992],[60.537,-83.114],[74.397,-88.593],[42.781,-107.096],[12.692,-118.425]],"c":true}],"h":1},{"t":22,"s":[{"i":[[15.831,-3.392],[6.426,-10.878],[-4.75,-14.25],[-1.904,-12.92],[-0.479,-14.382],[-4.25,-12.5],[-6.078,3.419],[0.284,8.38],[-1.75,17.5],[-0.25,14.257],[1.816,11.801],[2.109,6.245],[0.638,3.912],[-0.507,1.711],[-0.601,0.604],[-10.172,-0.706],[-8.573,-2.853],[-6.256,0.604],[-0.574,2.604],[22.219,11.346],[11.558,2.925]],"o":[[-10.5,2.25],[-5.248,8.884],[6.199,18.596],[3.5,23.75],[0.5,15],[3.017,8.872],[4,-2.25],[-0.5,-14.75],[1.593,-15.928],[0.25,-14.25],[-0.795,-5.168],[-1.616,-4.784],[-0.41,-2.512],[0.266,-0.896],[13.124,-13.185],[18.002,1.25],[6.178,2.056],[7.411,-0.715],[1.853,-8.407],[-10.082,-5.148],[-9.956,-2.519]],"v":[[299.75,-119],[280.248,-107.884],[274.25,-68.5],[274.25,-32],[277,21.75],[285,71.5],[301,85.25],[305.75,60],[309,26.25],[310,-9],[309.5,-44.5],[304.299,-62.344],[300.539,-75.714],[300.585,-82.135],[301.871,-84.399],[336.998,-95.25],[378.753,-84.992],[398.537,-83.114],[412.397,-88.593],[380.781,-107.096],[350.692,-118.425]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"light blue","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":14,"s":[{"i":[[0,0],[2.5,-11],[-6,-3.25],[-1.5,-8.25],[9.25,-8.5],[-10.75,3],[-6.25,9.25],[4.75,4.75],[13,7.5]],"o":[[0,0],[-2.5,11],[6,3.25],[1.5,8.25],[-9.25,8.5],[10.75,-3],[6.25,-9.25],[-8.705,-8.705],[-13,-7.5]],"v":[[-52.25,-119],[-62.75,-104],[-53,-88],[-32.125,-78.25],[-43.25,-52.25],[-35.25,-39.875],[-5.75,-65.25],[-2,-95.5],[-29.5,-121]],"c":true}],"h":1},{"t":16,"s":[{"i":[[0,0],[2.5,-11],[-6,-3.25],[-1.5,-8.25],[2.75,-7],[-10.75,3],[-1.107,10.516],[2.75,15.5],[13,7.5]],"o":[[0,0],[-2.5,11],[6,3.25],[1.5,8.25],[-4.593,11.692],[10.75,-3],[1,-9.5],[-2.151,-12.122],[-13,-7.5]],"v":[[-56.75,-126.25],[-67.5,-114.25],[-57,-95.75],[-43.25,-75.75],[-43.25,-52.25],[-36.75,-31.5],[-17.75,-59.5],[-14.5,-94.25],[-35.25,-124]],"c":true}],"h":1},{"t":18,"s":[{"i":[[0,0],[2.5,-11],[-6,-3.25],[-1.5,-8.25],[-3.731,-4.087],[-0.403,2.822],[-0.697,5.575],[2.75,15.5],[13,7.5]],"o":[[0,0],[-2.5,11],[6,3.25],[1.5,8.25],[5.25,5.75],[1,-7],[0.75,-6],[-2.151,-12.122],[-13,-7.5]],"v":[[-56.75,-126.25],[-67.5,-114.25],[-57,-95.75],[-35.25,-88.25],[-26.75,-71.75],[-18.25,-70.25],[-15,-83.75],[-13.5,-107],[-35.25,-124]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":12,"s":[0],"h":1},{"t":14,"s":[100],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":12,"s":[{"i":[[14.5,-7],[0,0],[-9.5,-8.5],[-9,10.5],[0,0],[4.5,5]],"o":[[-19.858,9.587],[0,0],[9.5,8.5],[9,-10.5],[0,0],[-4.5,-5]],"v":[[46.5,-114.5],[21,-105.5],[29.5,-83],[53,-91],[81,-95],[74.5,-113]],"c":true}],"h":1},{"t":14,"s":[{"i":[[14.823,-6.288],[0,0],[-9.5,-8.5],[-9,10.5],[0,0],[4.5,5]],"o":[[-16.5,7],[0,0],[9.5,8.5],[9,-10.5],[0,0],[-4.5,-5]],"v":[[33,-122],[5.5,-111.5],[24,-87.5],[52.5,-90],[69,-91],[59.5,-115]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":[{"t":10,"s":[0],"h":1},{"t":12,"s":[100],"h":1},{"t":14,"s":[100],"h":1},{"t":16,"s":[0],"h":1}]},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":8,"s":[{"i":[[18.5,11],[-13,-11.5],[-3.5,-10],[3,10]],"o":[[-15.243,-9.063],[13,11.5],[3.5,10],[-6,-20]],"v":[[-55,10.5],[-73.5,42],[-42.5,69.5],[-11.5,33]],"c":true}],"h":1},{"t":10,"s":[{"i":[[18.5,11],[-13,-11.5],[-3.5,-15],[5.406,8.932]],"o":[[-15.243,-9.063],[13,11.5],[2.407,10.318],[-11.5,-19]],"v":[[-54.5,15.5],[-67.5,39.5],[-42.5,69.5],[-12.5,42.5]],"c":true}],"h":1},{"t":12,"s":[{"i":[[12.5,19.5],[-13,-11.5],[-4.5,-22.5],[5.406,8.932]],"o":[[-9.571,-14.93],[13,11.5],[2.078,10.389],[-11.5,-19]],"v":[[-42.5,9],[-78,42.5],[-48.5,68.5],[-12.5,42.5]],"c":true}],"h":1},{"t":14,"s":[{"i":[[12.5,19.5],[-7,-25],[-4.5,-22.5],[3.156,9.952]],"o":[[-9.571,-14.93],[2.779,9.926],[2.078,10.389],[-6.5,-20.5]],"v":[[-42.5,9],[-72.5,44.5],[-48.5,68.5],[-16,39]],"c":true}],"h":1},{"t":16,"s":[{"i":[[12.5,19.5],[-7,-25],[-4.5,-22.5],[0.348,10.435]],"o":[[-9.571,-14.93],[2.779,9.926],[2.078,10.389],[-0.5,-15]],"v":[[-32.5,-1],[-72.5,48.5],[-48,69.5],[-18,37.5]],"c":true}],"h":1},{"t":18,"s":[{"i":[[12.5,19.5],[0,-25.962],[-5,-8],[0.348,10.435]],"o":[[-9.571,-14.93],[0,14.5],[5.615,8.984],[-0.5,-15]],"v":[[-32.5,-1],[-72.5,44.5],[-65.5,82],[-18,37.5]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":1,"nm":"ResizerTemp","parent":12,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":1,"nm":"White Solid 46","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":33,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":33,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/Q.json b/example/shared/src/commonMain/composeResources/files/mobilo/Q.json new file mode 100644 index 00000000..9edfbbda --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/Q.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[15,-1],[-5,-24],[17,2],[16,-34],[7,-25],[-34,-24],[-18,-6],[-30,17],[-14,21],[-10,40],[33,2],[6,23]],"o":[[-15,1],[5,24],[-17,-2],[-16,34],[-7,25],[34,24],[18,6],[30,-17],[14,-21],[10,-40],[-33,-2],[-6,-23]],"v":[[2,-132],[-14,-99],[-51,-57],[-108,-64],[-67,6],[-77,86],[-3,53],[51,94],[55,13],[117,-4],[54,-56],[28,-103]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":4},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[100],"e":[0]},{"t":24}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":2,"s":[100],"e":[0]},{"t":25}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Blue Flap 3","parent":8,"ks":{"o":{"k":100},"r":{"k":-133},"p":{"k":[9.508,-8.866,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[-3.113,-16.726],[-10.402,4.633]],"o":[[0,0],[0,0],[20.635,-7.419],[-3.86,-26.839]],"v":[[77,31.5],[56,66],[72.778,117.809],[116.259,104.476]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.642,-28.715],[-7.366,3.813]],"o":[[0,0],[0,0],[12.743,-0.969],[-0.945,-67.15]],"v":[[77,31.5],[56,66],[74.467,136.741],[119.073,133.356]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[-0.642,-28.715],[-7.366,3.813]],"o":[[0,0],[0,0],[12.743,-0.969],[-0.945,-67.15]],"v":[[77,31.5],[56,66],[74.467,136.741],[119.073,133.356]],"c":true}],"e":[{"i":[[0,0],[0,0],[-0.642,-28.715],[-7.366,3.813]],"o":[[0,0],[0,0],[12.743,-0.969],[-0.945,-67.15]],"v":[[77,31.5],[56,66],[84.425,145.231],[118.783,137.377]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[-0.642,-28.715],[-7.366,3.813]],"o":[[0,0],[0,0],[12.743,-0.969],[-0.945,-67.15]],"v":[[77,31.5],[56,66],[84.425,145.231],[118.783,137.377]],"c":true}],"e":[{"i":[[0,0],[0,0],[-31.518,-9.117],[-6.287,10.97]],"o":[[0,0],[0,0],[11.586,-14.814],[-25.545,-8.989]],"v":[[77,31.5],[56,66],[123.85,117.806],[148.133,80.439]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0],[-31.518,-9.117],[-6.287,10.97]],"o":[[0,0],[0,0],[11.586,-14.814],[-25.545,-8.989]],"v":[[77,31.5],[56,66],[123.85,117.806],[148.133,80.439]],"c":true}],"e":[{"i":[[0,0],[0,0],[-32.809,0.284],[-2.885,12.311]],"o":[[0,0],[0,0],[6.862,-17.51],[-27.049,-1.303]],"v":[[77,31.5],[56,66],[145.081,107.873],[157.654,65.119]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[0,0],[-32.809,0.284],[-2.885,12.311]],"o":[[0,0],[0,0],[6.862,-17.51],[-27.049,-1.303]],"v":[[77,31.5],[56,66],[145.081,107.873],[157.654,65.119]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[77,31.5],[56,66],[104.128,125.346],[141.827,97.731]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[77,31.5],[56,66],[104.128,125.346],[141.827,97.731]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[77,31.5],[56,66],[93.797,128.885],[134.906,109.104]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[77,31.5],[56,66],[93.797,128.885],[134.906,109.104]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[77,31.5],[56,66],[108.5,122.5],[141.5,91]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Blue Flap","parent":8,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-75.5,0]},"a":{"k":[0,-88.5,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_0p667_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":0,"s":[100,0.5,100],"e":[100,121,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":3,"s":[100,121,100],"e":[100,100,100]},{"t":5}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24,-187.5],[-22.5,-188.5],[-21.5,-88.5],[18.5,-88.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Navy Ring","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[133.08,304.8,0]},"a":{"k":[-122,4,0]},"s":{"k":[96,96,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[191,191]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":46},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[0],"e":[100]},{"t":16}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1"},{"ty":"tr","p":{"k":[0.542,-14.583],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[102.211,102.211],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Orange Ring","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[133.08,304.8,0]},"a":{"k":[-122,4,0]},"s":{"k":[96,96,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[191,191]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":45},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[0],"e":[100]},{"t":11}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1"},{"ty":"tr","p":{"k":[0.542,-14.583],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[102.211,102.211],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":0,"op":23,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Blue Ring","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[133.08,304.8,0]},"a":{"k":[-122,4,0]},"s":{"k":[96,96,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[191,191]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":43},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[0],"e":[100]},{"t":11}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1"},{"ty":"tr","p":{"k":[0.542,-14.583],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[102.211,102.211],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":1,"op":25,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"White Ring","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[249.08,287,0]},"a":{"k":[-1.167,-14.542,0]},"s":{"k":[82.911,82.911,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[191,191]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":46},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0.333]},"n":["0p833_0p833_0p333_0p333"],"t":0,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":11,"s":[0],"e":[100]},{"t":22}],"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[0],"e":[100]},{"t":11}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1"},{"ty":"tr","p":{"k":[0.542,-14.583],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[102.211,102.211],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"White flap","parent":8,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-75.5,0]},"a":{"k":[0,-88.5,0]},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_0p667_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":0,"s":[100,0.5,100],"e":[100,121,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.667,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0.333,0,0.333]},"n":["0p667_0p667_0p333_0p333","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":3,"s":[100,121,100],"e":[100,100,100]},{"t":5}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[24,-187.5],[-22.5,-188.5],[-21.5,-88.5],[18.5,-88.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":13,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":3,"nm":"Null 2","parent":11,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[0],"e":[503]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":15,"s":[503],"e":[476]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":18,"s":[476],"e":[497]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":21,"s":[497],"e":[493]},{"t":24}]},"p":{"k":[250,287,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Q Outlines 2","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":1,"ty":"sh","ks":{"k":{"i":[[39.88,0],[0,39.578],[-39.578,0],[0,-39.578]],"o":[[-39.578,0],[0,-39.578],[39.88,0],[0,39.578]],"v":[[0.76,-43.204],[-69.333,-113.297],[0.76,-183.389],[71.155,-113.297]],"c":true}},"nm":"Q"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Q"}],"ip":25,"op":32,"st":25,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Q Outlines","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,23.566],[64.352,0],[0,-64.352],[-64.352,0],[-19.336,14.2],[0,0]],"o":[[0,0],[12.085,-18.43],[0,-64.352],[-64.352,0],[0,64.352],[25.681,0],[0,0],[0,0]],"v":[[141.248,-8.459],[98.044,-49.246],[117.078,-113.297],[0.76,-229.614],[-115.558,-113.297],[0.76,3.021],[69.342,-19.336],[109.525,23.264]],"c":true}},"nm":"Q"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Q"}],"ip":25,"op":32,"st":25,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":1,"nm":"ResizerTemp","parent":12,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":1,"nm":"White Solid 47","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":32,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":32,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/R.json b/example/shared/src/commonMain/composeResources/files/mobilo/R.json new file mode 100644 index 00000000..92ab5ab1 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/R.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 16","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[59,4.5],[131.5,25]],"c":false}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-24.5,-132.5],[-30.5,-166.5]],"c":false}},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-40,-132.5],[-76,-178]],"c":false}},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-32.5,112],[-46.5,154.5]],"c":false}},"nm":"Path 4"},{"ind":4,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.5,17.5],[-6,42]],"c":false}},"nm":"Path 5"},{"ty":"tm","s":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.16],"y":[0]},"n":["0_1_0p16_0"],"t":23,"s":[0],"e":[100]},{"t":32}],"ix":1},"e":{"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.16],"y":[0]},"n":["0_1_0p16_0"],"t":21,"s":[0],"e":[100]},{"t":31}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":6,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.89,0.65,0.65,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":26,"s":[4],"e":[0]},{"t":32}]},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":771,"st":21,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"0 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[269.27,239.066,0]},"a":{"k":[269.27,239.066,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.333,0.4],[0.833,1.333],[0.5,0.6],[1.867,1.4],[3.033,1.5],[0,0],[5.567,-0.933],[0.4,-0.7],[1.9,-0.933],[0,0],[0.267,-0.567],[-0.067,-0.6],[-1.033,0.1],[-1.867,0],[-4.4,-3.033],[-1.467,-2.433],[-0.233,-2.3],[-1.767,0.067],[-1.4,-0.167],[-2.2,-0.567],[-0.833,-0.033],[-0.733,0.367],[-0.3,0.433],[0.167,1.833]],"o":[[-0.433,-0.567],[-0.8,-1.3],[-0.733,-0.9],[-4.267,-3.4],[0,0],[-5.333,-1.933],[-1.367,0.167],[-2.733,0.567],[0,0],[-0.7,0.433],[-0.333,0.5],[0.733,-0.133],[2.7,-0.333],[6.167,-0.133],[2.333,1.633],[1.2,2.1],[1.633,-0.5],[1.367,0],[4.267,0.3],[0.633,0.533],[0.867,0.1],[0.533,-0.233],[-0.133,-1.867],[-0.667,-0.7]],"v":[[27.083,5.792],[25.183,2.942],[23.233,0.092],[19.333,-3.358],[8.383,-10.708],[5.233,-12.058],[-11.117,-13.558],[-13.767,-12.258],[-20.717,-10.008],[-27.117,-6.508],[-28.567,-5.008],[-28.967,-3.358],[-26.317,-3.708],[-19.467,-4.208],[-3.617,0.142],[2.083,6.242],[4.233,12.842],[9.333,11.992],[13.483,12.242],[23.183,13.542],[25.383,14.392],[27.783,13.992],[29.033,12.992],[28.583,7.442]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[310.867,322.708],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.3,2.767],[0.3,0.667],[0.033,0.033],[-0.167,1.067],[0.033,0.1],[0.133,0.133],[0.033,0.067],[0.433,0.3],[1.2,0.2],[0,0],[2,0.667],[0.967,0.333],[4.233,0.367],[7.3,0.2],[0.2,-0.033],[0.3,-0.533],[-0.1,-0.133],[-0.367,-0.2],[0.033,0],[0.133,-0.167],[0.2,-0.4],[0.167,-0.2],[0,0],[0.067,-0.233],[0,0],[0,0],[-0.133,-0.367],[-0.2,-0.067],[0,0],[0.033,-0.167],[0.2,-2.133],[0.633,-3.467],[0,0],[0.133,-0.867],[0,0],[-4.367,1.933],[-3.167,2.2],[-3.533,3.133],[-0.033,0.033],[-0.233,0.467]],"o":[[0.567,-1.167],[-0.033,-0.067],[0.367,-1.033],[0.033,-0.367],[0,-0.133],[-0.067,-0.067],[-0.167,-0.4],[-0.533,-0.367],[0,0],[-4.233,-0.7],[-1.9,-0.7],[-2.567,-0.8],[-4.2,-0.4],[-0.267,0],[-0.367,0.433],[0.033,0.1],[0.167,0.2],[0.033,0.067],[-0.333,0.267],[-0.133,0.167],[-0.2,0.433],[0,0],[-0.233,0.267],[0,0],[0,0],[-0.167,0.367],[0.133,0.267],[0,0],[0,0.133],[-0.1,1.067],[-0.3,2.467],[0,0],[-0.233,1.2],[0,0],[2.567,-1.3],[6.067,-2.667],[1.967,-1.367],[0.067,-0.033],[0.233,-0.5],[0.7,-1.4]],"v":[[28.483,-5.05],[28.883,-7.8],[28.783,-7.95],[29.583,-11.1],[29.583,-11.8],[29.383,-12.2],[29.233,-12.4],[28.333,-13.45],[25.733,-14.3],[19.433,-15.4],[10.083,-17.45],[5.783,-19],[-4.417,-20.75],[-21.667,-21.65],[-22.367,-21.6],[-23.367,-20.15],[-23.167,-19.8],[-22.367,-19.2],[-22.367,-19.1],[-23.067,-18.45],[-23.567,-17.6],[-24.117,-16.65],[-24.767,-16.05],[-25.217,-15.3],[-25.217,-14.7],[-25.467,-14.25],[-25.517,-13.15],[-25.017,-12.65],[-26.117,-10.55],[-26.167,-10.1],[-26.617,-5.3],[-28.017,3.6],[-29.067,9.8],[-29.617,12.9],[-7.867,21.65],[2.533,16.8],[16.383,9.5],[24.633,2.75],[24.783,2.65],[25.483,1.2]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[300.867,162.65],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-7.9,-0.767],[-3.933,-0.7],[-0.567,-0.067],[-1.4,0.133],[-1.633,0.467],[-2.2,0.733],[-1,0.633],[-0.367,1.333],[0.433,1.533],[2.933,2.267],[0.801,0.459],[0.247,0.449],[0,0],[0,0],[0.133,0.433],[0.3,0.3],[1.067,0.233],[3.029,0.557],[13.336,-1.176],[0,0],[2.213,-0.135],[0,0],[-0.025,-0.017],[-0.154,-0.109],[-0.542,-0.073]],"o":[[6.667,0.633],[2.667,0.467],[1.8,0.233],[1.3,-0.1],[0.6,-0.2],[1.9,-0.633],[1.5,-0.967],[0.3,-1.067],[-0.933,-3.233],[-0.732,-0.575],[-0.453,-0.451],[0,0],[0,0],[0.167,-0.333],[-0.133,-0.333],[-0.4,-0.3],[-2.505,-0.509],[-8.797,0.957],[0,0],[-3.054,0.265],[0,0],[0.041,0.017],[0.179,0.124],[0.525,0.093],[2.7,0.367]],"v":[[-2,10.608],[13.9,12.608],[18.75,13.409],[23.55,13.559],[27.95,12.708],[32.15,11.309],[36.5,9.409],[39.3,5.958],[39.1,2.059],[33.3,-6.191],[31,-7.741],[29.95,-9.091],[29.9,-9.142],[29.95,-9.191],[30,-10.341],[29.35,-11.292],[27.15,-12.091],[18.85,-13.691],[-14.35,-10.491],[-31.7,-8.941],[-39.6,-8.341],[-20.1,8.259],[-20,8.309],[-19.5,8.659],[-17.9,8.909]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[347.1,266.992],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.003,0.12],[0.3,0.2],[0.333,-0.067],[0.233,-0.233],[0.2,-0.733],[0,0],[0.733,-2.267],[0.167,-0.667],[-0.233,-0.7],[-0.214,-0.214],[0.017,-0.023],[0,-0.3],[-0.267,-0.4],[-1.167,-1.033],[0,0],[-1.067,-1.033],[-0.333,-0.167],[-0.867,0.4],[-0.2,0.8],[0.172,0.46],[0.083,0.974],[-0.467,2.867],[-0.2,1.633],[0,5.167],[0,0],[0.033,0.76],[0,0.598],[0.367,1.008],[0.007,0.054],[0.513,0.349],[0,0],[0.3,1.2],[0,0],[0.533,0.2],[0.084,0.013]],"o":[[-0.067,-0.8],[-0.233,-0.167],[-0.267,0.067],[-0.267,0.333],[0,0],[-1.467,5.233],[-1.4,4.267],[-0.333,1.367],[0.119,0.319],[-0.017,0.043],[-0.233,0.233],[0.033,0.267],[0.367,0.467],[0,0],[3.967,3.433],[1.233,1.067],[1.033,0.567],[0.733,-0.367],[0.105,-0.507],[0.083,-0.593],[-0.133,-1.967],[0.567,-3.2],[0.267,-2.2],[0,0],[0,-0.907],[0.233,-0.402],[-0.033,-0.392],[0.007,-0.046],[-0.154,-1.051],[0,0],[-0.333,-0.867],[0,0],[-0.133,-0.933],[-0.083,-0.021],[0.003,-0.113]],"v":[[4.066,-31.542],[3.516,-33.042],[2.666,-33.192],[1.916,-32.742],[1.216,-31.141],[-5.684,-6.042],[-8.984,5.208],[-11.334,12.609],[-11.484,15.708],[-10.984,16.508],[-11.034,16.609],[-11.384,17.408],[-10.934,18.408],[-8.634,20.658],[-4.584,24.058],[2.966,30.758],[5.316,32.609],[8.166,32.859],[9.566,31.109],[9.466,29.658],[9.466,27.308],[9.966,20.058],[11.116,12.808],[11.516,1.758],[11.416,-7.842],[11.366,-10.342],[11.716,-11.842],[11.116,-13.942],[11.116,-14.092],[10.116,-16.192],[7.216,-22.842],[6.266,-25.942],[5.316,-29.442],[4.316,-31.141],[4.066,-31.192]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[163.583,220.292],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":1,"op":2,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"1 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[265.425,245.481,0]},"a":{"k":[265.425,245.481,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.233,0.3],[0.833,-0.133],[0.3,-0.767],[0,-1.5],[0.233,-0.833],[0,0],[0.167,-0.467],[1.3,-1.4],[2.533,-1.633],[1.033,-0.267],[1.833,-0.1],[0.867,-0.3],[0.1,-0.1],[0.567,-0.467],[-0.2,-0.767],[-1,-0.467],[0,0],[-0.633,-0.467],[-1.033,-1.333],[0,0],[-0.467,-0.633],[-0.133,-0.333],[0.067,-0.9],[0.133,-1.1],[-0.133,-1.9],[0.1,-0.233],[-0.233,-0.667],[-1.5,-0.167],[-1.4,0.533],[-3.833,5.567],[-1.567,2.867],[-0.267,1.133],[0.1,1.733],[1.367,3.6],[0.733,1.667],[1.233,1.4],[2.467,0.8],[0.5,-0.067],[0.2,-0.1]],"o":[[-0.6,-0.6],[-0.867,0.167],[-0.1,0.3],[0,0.8],[0,0],[-0.2,1.033],[-0.567,1.733],[-1.167,1.267],[-1.767,1.233],[-0.833,0.233],[-1.833,0.033],[-0.2,0.033],[-0.633,0.133],[-0.767,0.7],[0.133,0.633],[0,0],[0.633,0.333],[0.467,0.4],[0,0],[0.567,0.933],[0.633,0.867],[0.233,0.6],[-0.067,0.5],[-0.133,0.967],[-0.133,0.2],[-0.367,0.733],[0.4,1.133],[0.933,0.067],[8.567,-2.967],[0.633,-0.933],[1.3,-2.6],[0.333,-1.3],[-0.067,-3.967],[-0.2,-0.567],[-1.4,-3.3],[-1.633,-2],[-0.7,-0.233],[-0.2,0.033],[-0.133,-0.467]],"v":[[6.325,-27.867],[4.175,-28.567],[2.425,-27.167],[2.275,-24.467],[1.925,-22.017],[1.425,-19.667],[0.875,-17.417],[-1.925,-12.717],[-7.475,-8.367],[-11.675,-6.117],[-15.675,-5.617],[-19.725,-5.117],[-20.175,-4.917],[-21.975,-4.017],[-22.825,-1.817],[-21.125,-0.167],[-17.875,1.733],[-15.975,2.933],[-13.725,5.533],[-10.125,10.833],[-8.575,13.183],[-7.425,14.983],[-7.175,17.233],[-7.475,19.633],[-7.475,23.933],[-7.825,24.583],[-8.025,26.683],[-5.175,28.633],[-1.675,27.933],[16.925,15.133],[20.225,9.433],[22.575,3.833],[22.925,-0.717],[20.775,-12.067],[19.375,-15.417],[15.425,-22.467],[9.275,-26.667],[7.475,-26.917],[6.875,-26.717]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[325.575,336.417],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.967,0],[1,-0.033],[2.8,-0.433],[1.633,-0.233],[9.8,-0.433],[1.5,-0.233],[0.407,-0.204],[0.116,0.019],[0.333,-0.633],[0,-0.7],[-0.2,-1.733],[0,0],[-0.067,-0.433],[-0.367,-1.633],[0.1,-1.033],[0.033,-0.433],[-0.133,-0.233],[-0.507,-0.181],[-0.041,-0.153],[-1.567,-0.2],[-2.267,-0.067],[-0.033,0],[-3.4,-0.3],[-2.033,0.133],[-0.467,0.433],[-0.029,0.062],[-0.535,0.267],[-2.933,2.167],[-5,3.4],[-2.167,1],[-0.3,0.333],[-0.091,0.427],[0.092,0.528],[0.261,0.13],[0,0],[0.167,0.6],[0,0],[0.4,2],[0,0],[0.089,0.77],[0.351,0.764],[0.295,0.741],[0.053,-0.013],[0.09,-0.009]],"o":[[-3.833,-0.033],[-2.067,0.1],[-3.233,0.533],[-6.367,0.9],[-3.967,0.133],[-0.659,0.096],[-0.084,-0.047],[-0.667,-0.067],[-0.267,0.433],[-0.067,0.9],[0,0],[0.267,2.167],[0.167,0.833],[0.3,1.467],[0,0.233],[0,0.433],[0.226,0.452],[-0.007,0.147],[0.267,0.833],[1.5,0.2],[3.7,0.133],[1.7,0.1],[3.033,0.2],[1.1,-0.067],[0.037,-0.038],[0.465,-0.067],[1.4,-0.7],[5.733,-4.267],[3.5,-2.367],[1.2,-0.6],[0.275,-0.307],[-0.075,-0.472],[-0.173,-0.203],[0,0],[-0.133,-1.133],[0,0],[-0.167,-0.567],[0,0],[-0.145,-0.697],[-0.315,-0.836],[-0.738,-1.525],[-0.047,0.021],[-0.077,0.024],[-1.833,0.2]],"v":[[22.034,-24.392],[14.784,-24.392],[7.484,-23.591],[0.184,-22.441],[-24.066,-20.441],[-32.266,-19.892],[-33.866,-19.441],[-34.166,-19.542],[-35.666,-18.691],[-36.066,-16.991],[-35.866,-13.042],[-33.866,7.059],[-33.366,10.958],[-32.566,14.659],[-32.266,18.409],[-32.316,19.409],[-32.116,20.409],[-31.016,21.358],[-30.966,21.809],[-28.216,23.358],[-22.566,23.759],[-16.966,23.958],[-9.316,24.559],[-1.716,24.659],[0.634,23.909],[0.734,23.759],[2.234,23.259],[8.734,18.958],[24.834,7.458],[33.334,2.409],[35.584,1.009],[36.134,-0.091],[35.884,-1.591],[35.234,-2.091],[35.184,-3.191],[34.734,-5.792],[34.334,-7.241],[33.484,-11.091],[32.534,-16.792],[32.184,-18.991],[31.184,-21.392],[29.634,-24.792],[29.484,-24.741],[29.234,-24.691]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[314.066,150.691],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.433,0.433],[2.967,0.467],[3.767,0.2],[1.767,0.067],[2.133,0.433],[0.233,0],[0.433,-0.167],[0,0],[0.133,0.1],[0.7,-0.133],[7.767,-3.2],[3.567,-1.033],[0.1,-0.067],[0.1,-0.067],[0.2,-0.8],[0,0],[0,0],[0,0],[0,-0.433],[-1.533,-2.667],[-0.967,-1],[-1.5,-1.233],[-0.867,-1.033],[-3.567,-0.633],[-0.467,-0.067],[-3.167,-0.167],[-3.6,-0.133],[-10.633,-1.9],[-0.3,0.067],[-0.033,0.033],[0,0],[-1.067,0.633],[-10.9,5.033],[-1.367,0.667],[-0.833,0.533],[0.033,0.433],[0.067,0.1],[-0.067,0.267],[0.167,1.533],[0.267,0.867],[1.033,1.5],[1.533,1.867],[1.567,0.867]],"o":[[-5.3,-1.1],[-4.567,-0.767],[-3.533,-0.1],[-3.1,-0.133],[-0.9,-0.167],[-0.633,-0.067],[0,0],[-0.1,-0.167],[-0.3,-0.2],[-4.733,1.067],[-8.867,3.633],[-0.133,0.033],[-0.133,0.033],[-0.367,0.233],[0,0],[0,0],[0,0],[-0.167,0.367],[0.033,1.6],[1.333,2.333],[0.667,0.667],[0.3,0.267],[3.167,3.533],[0.3,0.167],[2.167,0.367],[1.767,0.067],[6.3,0.367],[0.967,0.133],[0.067,0],[0,0],[0.5,0],[10.067,-6.267],[0.7,-0.333],[1.167,-0.567],[0.733,-0.6],[-0.033,-0.167],[0.1,-0.3],[0.233,-1.033],[-0.133,-1.433],[-0.367,-0.967],[-2.967,-4.267],[-1.733,-2.233],[-1.233,-0.667]],"v":[[33.467,-22.467],[21.066,-24.817],[8.566,-26.267],[0.617,-26.517],[-7.233,-27.367],[-8.934,-27.617],[-10.533,-27.467],[-10.633,-27.367],[-10.983,-27.767],[-12.483,-27.867],[-31.233,-21.467],[-49.883,-14.467],[-50.233,-14.317],[-50.583,-14.167],[-51.434,-12.617],[-53.434,-3.517],[-53.483,-2.267],[-53.283,-0.667],[-53.533,0.533],[-51.184,6.933],[-47.733,11.933],[-44.483,14.783],[-42.733,16.733],[-32.633,22.983],[-31.483,23.333],[-23.483,24.133],[-15.434,24.433],[9.967,27.833],[11.867,27.933],[12.017,27.883],[12.217,27.883],[14.566,26.933],[46.017,9.983],[49.117,8.483],[52.117,6.833],[53.167,5.283],[53.017,4.883],[53.267,4.033],[53.367,0.183],[52.767,-3.267],[50.667,-6.967],[43.917,-16.167],[38.967,-20.817]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[351.633,264.567],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[5.567,-11.167],[0,0],[1.133,-1.433],[0.033,-0.067],[0.133,-0.5],[-0.233,-0.6],[-0.011,-0.047],[-0.069,-0.397],[-0.733,-1.033],[-0.9,-1.1],[-0.7,-1.233],[-0.4,-0.567],[-1.4,-1.633],[-2.333,-3.333],[0,0],[-0.533,-0.333],[-0.967,0.5],[-0.086,0.072],[-0.186,-0.045],[0,0],[-2.733,-0.767],[-2.567,-1.067],[-0.677,-0.102],[-0.373,-0.018],[-0.379,0.252],[-0.179,1.137],[0,0],[-0.133,1.433],[0.033,3.933],[-0.025,1.679],[0,0],[0.067,0.467],[0.1,0.433],[0.4,1.233],[0,0],[0.4,1],[0,0],[0,0],[0.367,1.733],[0.7,5.333],[0.733,2.567],[0.433,0.167],[0.366,-0.455],[0.111,-0.381],[0.1,-0.333],[0.2,-0.233],[0.033,-0.133],[0,0],[0.433,-0.5],[0,0],[0.105,-0.318],[4.4,-9.433]],"o":[[0,0],[-1.667,3.333],[-0.7,0.933],[-0.4,0.6],[-0.167,0.633],[0.022,0.053],[-0.069,0.303],[0.133,0.9],[0.433,0.6],[0.433,0.6],[0.7,1.233],[0.433,0.633],[1.1,1.3],[0,0],[0.767,1.033],[1.033,0.633],[0.114,-0.061],[0.181,0.055],[0,0],[0.467,0.1],[5.1,1.5],[1.09,0.498],[0.294,0.215],[0.455,0.019],[0.188,-0.93],[0,0],[0.4,-2.6],[0.233,-2.367],[-0.059,-4.221],[0,0],[-0.233,-0.9],[-0.067,-0.867],[-0.1,-0.533],[0,0],[-0.967,-2.633],[0,0],[0,0],[-0.7,-2.433],[-0.367,-1.767],[-0.567,-4.467],[-0.2,-0.733],[-0.434,-0.155],[-0.289,0.119],[0,0.033],[-0.033,0.1],[-0.133,0.2],[0,0],[-0.067,0.333],[0,0],[-0.161,0.249],[-2.9,7.8],[-2.633,5.633]],"v":[[-16.108,-5.332],[-23.058,8.568],[-27.258,15.718],[-28.358,17.218],[-29.158,18.868],[-29.058,20.718],[-29.008,20.868],[-29.008,21.918],[-27.708,24.818],[-25.708,27.368],[-24.008,30.118],[-22.358,32.818],[-19.608,36.218],[-14.458,43.168],[-7.408,53.218],[-5.458,55.268],[-2.458,55.468],[-2.158,55.268],[-1.608,55.418],[2.342,56.218],[7.142,57.518],[18.642,61.368],[21.292,62.268],[22.292,62.618],[23.542,62.268],[24.092,59.168],[28.192,31.968],[28.992,25.918],[29.292,16.468],[29.242,7.618],[28.542,4.718],[28.092,2.668],[27.842,0.718],[27.092,-1.932],[25.992,-4.932],[23.942,-10.382],[23.042,-12.282],[17.242,-33.682],[15.642,-39.932],[14.042,-50.582],[12.092,-61.132],[11.142,-62.482],[9.942,-62.032],[9.342,-61.282],[9.192,-60.732],[8.842,-60.232],[8.592,-59.732],[8.542,-59.132],[7.792,-57.882],[7.542,-57.232],[7.142,-56.382],[-3.808,-30.532]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[155.008,263.082],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":2,"op":3,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"2 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[258.352,256.786,0]},"a":{"k":[258.352,256.786,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.333,-0.467],[-0.1,-0.367],[0.267,-1.3],[0,0],[0.433,-1.167],[1.067,-1.1],[1.067,-0.633],[4,-0.667],[3.9,0.867],[0.533,0.067],[0.067,0.067],[0.633,0.233],[0.467,-0.367],[0.1,-0.533],[-0.467,-1.3],[-0.133,-1.4],[0.633,-3.1],[0.033,-0.233],[0.4,-0.867],[0,0],[0.533,-1.1],[2.367,-3.967],[0.633,-0.733],[0.033,-0.7],[-0.1,-0.233],[-1.033,-0.4],[-1.433,-0.1],[-10.5,3.6],[-2.933,1.633],[-2.333,2.833],[-1.667,3.033],[-0.367,1.433],[0,2.833],[0,0],[0.333,1.667],[2.233,4.367],[0.467,0.333],[2.8,1.733]],"o":[[0.7,0.9],[0.167,0.667],[0,0],[-0.5,2.2],[-0.733,1.767],[-0.633,0.567],[-3.3,2],[-3.9,0.667],[-0.867,-0.167],[-0.033,-0.067],[-0.367,-0.967],[-0.467,-0.133],[-0.467,0.333],[-0.133,0.767],[1.333,3.5],[0.167,1.867],[-0.367,1.633],[-0.3,1.033],[0,0],[-0.833,2.133],[-0.333,0.6],[-1.6,2.667],[-1.233,1.467],[0,0.267],[0.133,0.867],[0.6,0.333],[7.267,0.233],[4.633,-1.533],[3.933,-2.167],[1.267,-1.5],[1.567,-2.833],[0.333,-1.367],[0,0],[0,-3.367],[-0.433,-2.433],[-0.367,-0.3],[-2.733,-1.967],[0.1,0.367]],"v":[[16.675,-34.866],[17.875,-32.966],[17.725,-30.016],[17.075,-27.366],[15.675,-22.316],[12.975,-18.016],[10.425,-16.216],[-0.525,-12.216],[-12.225,-12.516],[-14.325,-12.866],[-14.475,-13.066],[-15.975,-14.866],[-17.375,-14.516],[-18.225,-13.216],[-17.725,-10.116],[-15.525,-2.766],[-16.225,4.684],[-16.825,7.484],[-17.875,10.334],[-18.725,12.534],[-20.775,17.384],[-24.825,24.234],[-28.175,29.333],[-30.075,32.583],[-29.925,33.333],[-28.175,35.234],[-25.125,35.884],[1.525,30.833],[12.875,26.084],[22.275,18.584],[26.675,11.784],[29.575,5.384],[30.075,-0.916],[30.075,-11.866],[29.575,-19.416],[25.575,-29.616],[24.325,-30.566],[16.025,-36.116]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[334.025,351.766],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.967,0],[1,-0.033],[2.8,-0.433],[1.633,-0.233],[9.8,-0.433],[1.5,-0.233],[0.407,-0.204],[0.116,0.019],[0.333,-0.633],[0,-0.7],[-0.2,-1.733],[0,0],[-0.067,-0.433],[-0.367,-1.633],[0.1,-1.033],[0.033,-0.433],[-0.133,-0.233],[-0.507,-0.181],[-0.041,-0.153],[-1.567,-0.2],[-2.267,-0.067],[-0.033,0],[-3.4,-0.3],[-2.033,0.133],[-0.467,0.433],[-0.029,0.062],[-0.535,0.267],[-2.933,2.167],[-5,3.4],[-2.167,1],[-0.3,0.333],[-0.091,0.427],[0.092,0.528],[0.261,0.13],[0,0],[0.167,0.6],[0,0],[0.4,2],[0,0],[0.089,0.77],[0.351,0.764],[0.295,0.741],[0.053,-0.013],[0.09,-0.009]],"o":[[-3.833,-0.033],[-2.067,0.1],[-3.233,0.533],[-6.367,0.9],[-3.967,0.133],[-0.659,0.096],[-0.084,-0.047],[-0.667,-0.067],[-0.267,0.433],[-0.067,0.9],[0,0],[0.267,2.167],[0.167,0.833],[0.3,1.467],[0,0.233],[0,0.433],[0.226,0.452],[-0.007,0.147],[0.267,0.833],[1.5,0.2],[3.7,0.133],[1.7,0.1],[3.033,0.2],[1.1,-0.067],[0.037,-0.038],[0.465,-0.067],[1.4,-0.7],[5.733,-4.267],[3.5,-2.367],[1.2,-0.6],[0.275,-0.307],[-0.075,-0.472],[-0.173,-0.203],[0,0],[-0.133,-1.133],[0,0],[-0.167,-0.567],[0,0],[-0.145,-0.697],[-0.315,-0.836],[-0.738,-1.525],[-0.047,0.021],[-0.077,0.024],[-1.833,0.2]],"v":[[22.034,-24.392],[14.784,-24.392],[7.484,-23.591],[0.184,-22.441],[-24.066,-20.441],[-32.266,-19.892],[-33.866,-19.441],[-34.166,-19.542],[-35.666,-18.691],[-36.066,-16.991],[-35.866,-13.042],[-33.866,7.059],[-33.366,10.958],[-32.566,14.659],[-32.266,18.409],[-32.316,19.409],[-32.116,20.409],[-31.016,21.358],[-30.966,21.809],[-28.216,23.358],[-22.566,23.759],[-16.966,23.958],[-9.316,24.559],[-1.716,24.659],[0.634,23.909],[0.734,23.759],[2.234,23.259],[8.734,18.958],[24.834,7.458],[33.334,2.409],[35.584,1.009],[36.134,-0.091],[35.884,-1.591],[35.234,-2.091],[35.184,-3.191],[34.734,-5.792],[34.334,-7.241],[33.484,-11.091],[32.534,-16.792],[32.184,-18.991],[31.184,-21.392],[29.634,-24.792],[29.484,-24.741],[29.234,-24.691]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[314.066,150.691],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.433,0.433],[2.967,0.467],[3.767,0.2],[1.767,0.067],[2.133,0.433],[0.233,0],[0.433,-0.167],[0,0],[0.133,0.1],[0.7,-0.133],[7.767,-3.2],[3.567,-1.033],[0.1,-0.067],[0.1,-0.067],[0.2,-0.8],[0,0],[0,0],[0,0],[0,-0.433],[-1.533,-2.667],[-0.967,-1],[-1.5,-1.233],[-0.867,-1.033],[-3.567,-0.633],[-0.467,-0.067],[-3.167,-0.167],[-3.6,-0.133],[-10.633,-1.9],[-0.3,0.067],[-0.033,0.033],[0,0],[-1.067,0.633],[-10.9,5.033],[-1.367,0.667],[-0.833,0.533],[0.033,0.433],[0.067,0.1],[-0.067,0.267],[0.167,1.533],[0.267,0.867],[1.033,1.5],[1.533,1.867],[1.567,0.867]],"o":[[-5.3,-1.1],[-4.567,-0.767],[-3.533,-0.1],[-3.1,-0.133],[-0.9,-0.167],[-0.633,-0.067],[0,0],[-0.1,-0.167],[-0.3,-0.2],[-4.733,1.067],[-8.867,3.633],[-0.133,0.033],[-0.133,0.033],[-0.367,0.233],[0,0],[0,0],[0,0],[-0.167,0.367],[0.033,1.6],[1.333,2.333],[0.667,0.667],[0.3,0.267],[3.167,3.533],[0.3,0.167],[2.167,0.367],[1.767,0.067],[6.3,0.367],[0.967,0.133],[0.067,0],[0,0],[0.5,0],[10.067,-6.267],[0.7,-0.333],[1.167,-0.567],[0.733,-0.6],[-0.033,-0.167],[0.1,-0.3],[0.233,-1.033],[-0.133,-1.433],[-0.367,-0.967],[-2.967,-4.267],[-1.733,-2.233],[-1.233,-0.667]],"v":[[33.467,-22.467],[21.066,-24.817],[8.566,-26.267],[0.617,-26.517],[-7.233,-27.367],[-8.934,-27.617],[-10.533,-27.467],[-10.633,-27.367],[-10.983,-27.767],[-12.483,-27.867],[-31.233,-21.467],[-49.883,-14.467],[-50.233,-14.317],[-50.583,-14.167],[-51.434,-12.617],[-53.434,-3.517],[-53.483,-2.267],[-53.283,-0.667],[-53.533,0.533],[-51.184,6.933],[-47.733,11.933],[-44.483,14.783],[-42.733,16.733],[-32.633,22.983],[-31.483,23.333],[-23.483,24.133],[-15.434,24.433],[9.967,27.833],[11.867,27.933],[12.017,27.883],[12.217,27.883],[14.566,26.933],[46.017,9.983],[49.117,8.483],[52.117,6.833],[53.167,5.283],[53.017,4.883],[53.267,4.033],[53.367,0.183],[52.767,-3.267],[50.667,-6.967],[43.917,-16.167],[38.967,-20.817]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[351.633,264.567],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.2,-2.667],[3.033,-5.7],[5,-7.667],[5.3,-6.367],[0.033,-0.833],[0,0],[0.823,-3.871],[0.033,-0.133],[0.411,-0.845],[-0.503,-1.697],[-0.333,-0.733],[-0.065,-0.173],[-0.442,-0.935],[-0.103,-0.183],[-0.531,-2.199],[-0.012,-0.035],[-0.467,-1],[-1,-1.833],[-0.347,-0.319],[-0.078,-0.312],[-0.8,-0.433],[-8.767,-2.733],[-10,-2.967],[-0.7,0.067],[-0.115,0.051],[-1.003,4.13],[0,0],[-0.267,2.1],[0,0],[-0.9,3.867],[-0.267,1.8],[-0.7,0.633],[0,0],[-0.203,1.541],[-0.133,1.133],[-1.067,4.067],[-0.233,1.067],[0.067,0.533],[0.733,0.3],[0.267,-0.033],[3.867,8.7],[1.567,4.9],[1.833,6.9],[1.267,3.167],[0.633,0.033],[0.233,-0.267],[0.067,-0.133],[-0.267,0.733],[0.4,0.267],[0.633,-0.8],[1,-2]],"o":[[-1.933,4.267],[-6.067,11.567],[-4.4,6.767],[-0.933,1.167],[0,0],[-0.977,2.762],[-0.467,1.633],[-0.189,0.621],[1.297,3.136],[0.767,2.8],[0.069,0.161],[0.625,1.065],[0.097,0.184],[0.603,1.235],[0.055,0.099],[0.433,1.167],[1.867,4.233],[0.42,0.781],[-0.111,0.255],[0.1,0.367],[5.767,2.9],[4.967,1.567],[1.267,0.4],[0.119,-0.016],[0.531,-1.703],[0,0],[0.8,-3.3],[0,0],[0.1,-0.933],[0.5,-2.033],[0.333,-2],[0,0],[0.264,-1.126],[0.233,-2.267],[0.367,-2.633],[1.5,-5.6],[0.2,-1.067],[-0.167,-0.933],[-0.267,-0.1],[-1.533,-4.233],[-3.8,-8.6],[-0.467,-1.533],[-1.367,-5.167],[-0.433,-1.067],[-0.3,0],[-0.133,0.133],[0.233,-0.733],[0.3,-0.867],[-0.5,-0.333],[-1.067,1.367],[-0.467,0.933]],"v":[[4.867,-61.992],[-2.584,-47.042],[-19.184,-18.192],[-33.734,1.508],[-35.184,4.508],[-35.684,4.858],[-38.383,14.808],[-39.133,17.458],[-40.034,19.658],[-37.334,26.908],[-35.684,32.208],[-35.484,32.708],[-33.883,35.708],[-33.584,36.258],[-31.883,41.408],[-31.784,41.608],[-30.434,44.858],[-26.133,53.958],[-24.984,55.608],[-25.034,56.458],[-23.684,57.658],[-1.883,66.108],[20.566,72.908],[23.516,73.408],[23.867,73.308],[26.166,64.558],[27.516,58.858],[29.117,50.758],[29.566,46.858],[31.066,39.658],[32.216,33.908],[33.766,29.958],[33.766,29.908],[34.466,25.908],[35.016,20.808],[37.166,10.758],[39.766,0.758],[39.966,-1.642],[38.617,-3.492],[37.816,-3.592],[29.716,-22.992],[21.666,-43.242],[18.216,-55.892],[14.266,-68.392],[12.666,-70.042],[11.867,-69.642],[11.566,-69.242],[12.316,-71.442],[12.166,-73.142],[10.466,-72.442],[7.367,-67.392]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[151.633,283.292],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":3,"op":4,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"3 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[257.85,258.261,0]},"a":{"k":[257.85,258.261,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.533,-1.467],[0.733,-1.1],[1.6,-1.433],[6.867,-1.867],[1.167,-0.433],[2.033,-0.933],[1.033,-0.267],[1.933,-0.167],[0.933,-0.233],[0.567,-0.8],[0.1,-0.267],[0.467,-0.167],[0.267,-0.733],[-2.633,-1.733],[-6.467,-2.033],[-7.233,-1.3],[-5.267,0.2],[-10.7,6.933],[-7.667,10.4],[-0.133,1.4],[-0.5,0.467],[-0.2,0.567],[0.3,0.5],[1.4,0.067],[1.4,-0.467],[2.1,-0.233],[3.7,0.167],[0,0],[2.833,0.367],[3.667,1.2],[0.5,0.033],[0.233,0.3],[0.467,-0.033]],"o":[[-0.333,1.233],[-0.933,1.4],[-5.1,4.767],[-2.367,0.567],[-0.6,0.233],[-1.567,0.7],[-0.933,0.3],[-1.9,0.2],[-1.533,0.467],[-0.233,0.267],[-0.533,0.067],[-0.833,0.433],[-0.533,1.733],[4.7,3.1],[4.867,1.6],[8.367,1.6],[11.6,-0.4],[9.3,-6.033],[1.4,-1.867],[1.1,-0.433],[0.467,-0.467],[0.233,-0.7],[-0.367,-1],[-0.7,-0.067],[-5.3,1.733],[-1.4,0.133],[0,0],[-5.767,-0.4],[-4.767,-0.6],[-0.6,-0.267],[-0.1,-0.367],[-0.367,-0.4],[-0.7,0.1]],"v":[[-9.55,-22.859],[-11.15,-19.359],[-14.95,-15.109],[-32.9,-5.159],[-38.2,-3.659],[-42.15,-1.909],[-46.05,-0.458],[-50.35,0.242],[-54.6,0.891],[-57.75,2.792],[-58.25,3.591],[-59.75,3.941],[-61.4,5.691],[-58.25,10.891],[-41.5,18.591],[-23.35,22.941],[-2.9,25.042],[30.55,14.042],[56,-10.609],[58.3,-15.508],[60.7,-16.859],[61.7,-18.409],[61.6,-20.208],[58.95,-21.809],[55.8,-21.208],[44.7,-18.258],[37.05,-18.309],[21.25,-19.359],[8.35,-20.508],[-4.3,-23.208],[-5.95,-23.659],[-6.45,-24.659],[-7.7,-25.208]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[336.4,371.409],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.533,1.933],[0.533,0.867],[0.067,0.1],[0.067,0.3],[0.967,-0.067],[0,0],[1.833,-0.267],[2.4,-0.467],[0,0],[1.667,-0.333],[3.233,-0.833],[0.7,-0.167],[0.733,-0.333],[1.433,-0.5],[-0.633,-3.933],[-0.567,-3.9],[0,0],[-0.333,-0.467],[-0.733,0.2],[-0.233,0.4],[-0.3,-0.167],[-0.5,-0.067],[-4.967,0.267],[0,0],[-0.433,0.3],[-0.133,0.2],[-0.867,0.567],[-3.467,2.433],[0,0],[-1.5,1.167],[-0.133,0.067],[-0.367,0.033],[-0.267,0.333],[-0.067,0.433],[0.333,1],[0,0],[0.433,0.833],[0,0]],"o":[[-0.467,-1.733],[-0.067,-0.1],[0.2,-0.233],[-0.167,-0.5],[0,0],[-3.667,0.333],[-1.2,0.167],[0,0],[-3.067,0.2],[-0.7,0.133],[-0.767,0.2],[-0.5,0.333],[-1.267,0.6],[1.033,3.967],[0.033,0.167],[0,0],[0.133,1],[0.567,0.8],[0.433,-0.1],[0,0.267],[0.2,0.133],[2.8,0.333],[0,0],[1.167,-0.2],[0.2,-0.167],[0.633,-0.233],[2.967,-1.967],[0,0],[3.133,-2.267],[0.1,-0.1],[0.267,0.2],[0.4,-0.033],[0.267,-0.3],[0.067,-0.567],[0,0],[-0.6,-1.8],[0,0],[-0.367,-0.733]],"v":[[29.441,-22.325],[27.941,-26.225],[27.741,-26.525],[27.941,-27.325],[26.241,-27.975],[13.841,-26.925],[5.591,-26.025],[0.191,-25.075],[-17.259,-21.725],[-24.359,-20.925],[-30.259,-19.475],[-32.459,-18.925],[-34.309,-17.925],[-38.359,-16.275],[-35.859,-4.425],[-34.959,1.675],[-31.209,24.375],[-30.509,26.575],[-28.559,27.475],[-27.559,26.725],[-27.109,27.375],[-26.059,27.675],[-14.409,27.775],[3.741,26.575],[6.141,25.825],[6.641,25.275],[8.891,24.075],[18.541,17.475],[28.541,10.275],[35.491,5.125],[35.841,4.875],[36.791,5.125],[37.791,4.575],[38.291,3.475],[37.891,1.125],[33.291,-12.625],[31.741,-16.575],[30.791,-18.325]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[315.909,148.025],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.9,3.367],[-0.381,0.486],[3.253,6.276],[0.411,0.503],[0.533,0.633],[0.353,0.518],[0.074,-0.046],[0.017,0.005],[5.533,0.733],[15.133,1.6],[1.969,0.125],[0.277,-0.117],[0,0],[0,0],[0.267,-3.267],[0.133,-0.633],[0.107,-0.559],[0,0],[-0.144,0.223],[-0.032,0.068],[-0.004,-0.033],[-0.533,-0.3],[-2.8,-0.2],[-12.567,-2.133],[-0.433,0.1],[-0.219,0.681],[-0.413,0.145],[-2.033,1.467],[-2.267,1.8],[-2.133,1.167],[-3.733,1.9]],"o":[[0.752,-0.514],[-4.314,-5.724],[-0.822,-1.097],[-1.1,-1.233],[-0.48,-0.549],[-0.093,0.054],[-0.017,0.005],[-3.367,-1.1],[-7.533,-1.067],[-3.331,-0.342],[-0.256,0.117],[0,0],[0,0],[-0.767,3.833],[-0.233,2.267],[-0.193,1.007],[0,0],[0.189,-0.144],[0.035,-0.065],[-0.004,0.034],[0.1,0.467],[1.167,0.733],[13.367,1.033],[1.1,0.133],[0.847,-0.152],[0.353,-0.055],[1.7,-0.667],[1.167,-0.867],[2.3,-1.767],[0.933,-0.533],[5.133,-2.667]],"v":[[52.05,3.825],[53.75,2.325],[42.4,-15.675],[40.55,-18.075],[38.1,-20.875],[36.85,-22.475],[36.6,-22.325],[36.55,-22.325],[23.2,-25.075],[-10.8,-29.075],[-18.75,-29.775],[-19.55,-29.425],[-49.7,-16.875],[-51.2,-9.825],[-52.75,0.825],[-53.3,5.175],[-53.75,7.525],[-38.85,22.975],[-38.35,22.425],[-38.25,22.225],[-38.25,22.325],[-37.3,23.475],[-31.35,24.875],[7.55,29.625],[9.85,29.675],[11.45,28.425],[12.6,28.125],[18.2,24.925],[23.35,20.925],[30,16.525],[37,12.875]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[355.85,264.725],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.067,-0.167],[0.133,-0.167],[8,-14.767],[1.233,-1.933],[3.067,-4.2],[2.967,-5.367],[1.033,-2.167],[0.8,-2.967],[0.033,-0.133],[0.133,-0.233],[-0.133,-0.433],[0,0],[-0.233,-0.133],[-0.2,-0.067],[-0.033,-0.133],[-0.367,-0.767],[-1.633,-4.4],[0,0],[-0.367,-0.733],[-1.067,-1.7],[-0.5,-0.233],[-0.267,-0.033],[0,0],[-1.033,-0.667],[-4.933,-2.267],[-5.933,-2.267],[0,0],[-1.133,-0.067],[-0.067,-0.033],[-0.667,0.567],[-0.1,0.9],[-0.033,0.533],[-0.533,1.6],[-1.4,6.933],[0,0],[-0.433,2.033],[-0.933,6.2],[-0.767,3.1],[-0.3,1.333],[-0.167,1],[-0.033,0.067],[0.033,0.367],[-0.033,0.567],[0.6,0.333],[0,0],[0.133,0.267],[0.7,-0.2],[0.133,-0.1],[0,0],[0.1,0.2],[0.7,1.733],[0,0],[2.6,8.667],[2.767,5.133],[0.2,0.867],[0.6,1.567],[0.2,0.6],[0.333,1.1],[0.933,1.067],[0.7,-0.1],[0.333,-0.433]],"o":[[-0.133,0.133],[-9,14.467],[-2.2,4],[-1.433,2.2],[-2,3],[-2.233,4],[-1.7,3.5],[-0.033,0.133],[-0.067,0.133],[-0.133,0.3],[0,0],[0.133,0.2],[0.2,0.133],[0,0.1],[0.1,0.333],[1.233,2.2],[0,0],[0.6,1.533],[0.467,0.867],[0.667,1.167],[0.233,0.133],[0,0],[-0.067,0.6],[4.3,2.6],[4.633,2.1],[0,0],[2.133,0.8],[0.067,0.033],[0.933,0.467],[0.533,-0.4],[0.067,-1.1],[0.067,-0.833],[1.8,-5.367],[0,0],[1.567,-5.633],[0.533,-2.467],[0.833,-5.567],[0.733,-2.7],[0.267,-1.133],[0,-0.033],[0.1,-0.267],[0.067,-0.667],[0.067,-1.233],[0,0],[-0.1,-0.3],[-0.433,-0.967],[-0.133,0.033],[0,0],[-0.133,-0.2],[-0.733,-1.733],[0,0],[-1.167,-3.7],[-2.467,-8.333],[-0.2,-1.433],[-0.233,-1.033],[-0.733,-1.933],[-0.6,-2.233],[-0.6,-1.933],[-0.667,-0.833],[-0.467,0.033],[-0.1,0.167]],"v":[[10.583,-76.833],[10.183,-76.383],[-15.317,-32.533],[-20.467,-23.633],[-27.217,-14.033],[-34.667,-1.483],[-39.567,7.767],[-43.317,17.467],[-43.417,17.867],[-43.717,18.417],[-43.717,19.517],[-43.617,19.967],[-43.067,20.467],[-42.467,20.767],[-42.417,21.117],[-41.717,22.767],[-37.417,32.667],[-32.517,45.517],[-31.067,48.917],[-28.767,52.767],[-27.017,54.867],[-26.267,55.117],[-26.267,55.167],[-24.817,57.066],[-10.967,64.367],[4.883,70.917],[19.033,76.267],[23.933,77.566],[24.133,77.667],[26.533,77.517],[27.483,75.566],[27.633,73.117],[28.533,69.466],[33.333,51.017],[33.683,49.767],[36.683,38.267],[38.883,25.267],[41.283,12.267],[42.833,6.217],[43.483,3.017],[43.533,2.867],[43.633,1.917],[43.783,0.067],[42.983,-2.283],[42.933,-2.333],[42.583,-3.183],[40.883,-4.333],[40.483,-4.133],[38.683,-7.233],[38.333,-7.833],[36.183,-13.033],[34.533,-17.533],[28.883,-36.083],[21.033,-56.283],[20.433,-59.733],[19.183,-63.633],[17.783,-67.433],[16.383,-72.433],[14.083,-76.933],[12.033,-78.033],[10.833,-77.333]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[149.917,290.333],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":4,"op":5,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"4 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[257.85,269.789,0]},"a":{"k":[257.85,269.789,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.8,1.433],[1.2,2.9],[0.233,1.8],[0.133,0.233],[0.333,0.167],[0.467,0.233],[0.733,-0.1],[1.933,-0.967],[1.533,-0.3],[0.9,-0.167],[1.533,-0.6],[0.867,-0.333],[7.633,-0.533],[8.633,0.333],[1.233,-0.433],[0,-0.8],[-1.233,-0.4],[0,-0.033],[0,0],[0.2,0],[0.1,-0.667],[-0.933,-1.9],[-10.333,-8.133],[-12.467,-2.833],[-9.067,-0.533],[-3.1,0.133],[-3.333,0.9],[-0.767,0.733],[-0.167,0.733],[0.333,0.633],[0.433,0.233],[0.2,0.467],[0.4,0.4],[-0.033,0.2],[0.333,0.767],[1.433,1.533],[3.533,4.3],[4,5.667]],"o":[[-0.767,-1.367],[-1.4,-3.367],[-0.233,-1.4],[-0.233,-0.533],[-0.233,-0.333],[-0.667,-0.333],[-0.633,0.1],[-1,0.433],[-1.733,0.4],[-1.067,0.3],[-1.7,0.7],[-5.833,2.2],[-5.233,0.433],[-2.567,-0.1],[-1.2,0.433],[-0.067,0.833],[-0.067,0.067],[0,0],[-0.267,-0.133],[-0.5,0.067],[-0.233,1.133],[5.933,11.467],[10.433,8.167],[5.933,1.4],[4.433,0.167],[4.1,-0.167],[1.933,-0.567],[0.567,-0.567],[0.2,-0.867],[-0.267,-0.467],[0,-0.333],[-0.067,-0.2],[0.067,-0.2],[0.1,-0.767],[-0.367,-0.933],[-5.533,-5.6],[-2.733,-3.333],[-1.4,-1.867]],"v":[[22.817,-15.992],[19.867,-22.392],[17.417,-30.142],[16.867,-32.592],[16.017,-33.642],[14.967,-34.492],[12.867,-34.842],[9.017,-33.242],[5.217,-32.142],[1.267,-31.292],[-2.633,-29.941],[-6.483,-28.392],[-26.683,-24.292],[-47.483,-24.142],[-53.183,-23.642],[-54.983,-21.792],[-53.233,-19.941],[-53.333,-19.792],[-53.333,-19.492],[-54.033,-19.691],[-54.933,-18.592],[-53.883,-14.042],[-29.483,15.358],[4.867,31.858],[27.367,34.758],[38.667,34.809],[49.817,33.208],[53.867,31.258],[54.967,29.309],[54.767,27.059],[53.717,26.008],[53.417,24.809],[52.717,23.908],[52.867,23.309],[52.517,21.008],[49.817,17.309],[36.217,2.458],[26.117,-11.042]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[325.433,384.642],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.533,1.933],[0.533,0.867],[0.067,0.1],[0.067,0.3],[0.967,-0.067],[0,0],[1.833,-0.267],[2.4,-0.467],[0,0],[1.667,-0.333],[3.233,-0.833],[0.7,-0.167],[0.733,-0.333],[1.433,-0.5],[-0.633,-3.933],[-0.567,-3.9],[0,0],[-0.333,-0.467],[-0.733,0.2],[-0.233,0.4],[-0.3,-0.167],[-0.5,-0.067],[-4.967,0.267],[0,0],[-0.433,0.3],[-0.133,0.2],[-0.867,0.567],[-3.467,2.433],[0,0],[-1.5,1.167],[-0.133,0.067],[-0.367,0.033],[-0.267,0.333],[-0.067,0.433],[0.333,1],[0,0],[0.433,0.833],[0,0]],"o":[[-0.467,-1.733],[-0.067,-0.1],[0.2,-0.233],[-0.167,-0.5],[0,0],[-3.667,0.333],[-1.2,0.167],[0,0],[-3.067,0.2],[-0.7,0.133],[-0.767,0.2],[-0.5,0.333],[-1.267,0.6],[1.033,3.967],[0.033,0.167],[0,0],[0.133,1],[0.567,0.8],[0.433,-0.1],[0,0.267],[0.2,0.133],[2.8,0.333],[0,0],[1.167,-0.2],[0.2,-0.167],[0.633,-0.233],[2.967,-1.967],[0,0],[3.133,-2.267],[0.1,-0.1],[0.267,0.2],[0.4,-0.033],[0.267,-0.3],[0.067,-0.567],[0,0],[-0.6,-1.8],[0,0],[-0.367,-0.733]],"v":[[29.441,-22.325],[27.941,-26.225],[27.741,-26.525],[27.941,-27.325],[26.241,-27.975],[13.841,-26.925],[5.591,-26.025],[0.191,-25.075],[-17.259,-21.725],[-24.359,-20.925],[-30.259,-19.475],[-32.459,-18.925],[-34.309,-17.925],[-38.359,-16.275],[-35.859,-4.425],[-34.959,1.675],[-31.209,24.375],[-30.509,26.575],[-28.559,27.475],[-27.559,26.725],[-27.109,27.375],[-26.059,27.675],[-14.409,27.775],[3.741,26.575],[6.141,25.825],[6.641,25.275],[8.891,24.075],[18.541,17.475],[28.541,10.275],[35.491,5.125],[35.841,4.875],[36.791,5.125],[37.791,4.575],[38.291,3.475],[37.891,1.125],[33.291,-12.625],[31.741,-16.575],[30.791,-18.325]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[315.909,148.025],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.9,3.367],[-0.381,0.486],[3.253,6.276],[0.411,0.503],[0.533,0.633],[0.353,0.518],[0.074,-0.046],[0.017,0.005],[5.533,0.733],[15.133,1.6],[1.969,0.125],[0.277,-0.117],[0,0],[0,0],[0.267,-3.267],[0.133,-0.633],[0.107,-0.559],[0,0],[-0.144,0.223],[-0.032,0.068],[-0.004,-0.033],[-0.533,-0.3],[-2.8,-0.2],[-12.567,-2.133],[-0.433,0.1],[-0.219,0.681],[-0.413,0.145],[-2.033,1.467],[-2.267,1.8],[-2.133,1.167],[-3.733,1.9]],"o":[[0.752,-0.514],[-4.314,-5.724],[-0.822,-1.097],[-1.1,-1.233],[-0.48,-0.549],[-0.093,0.054],[-0.017,0.005],[-3.367,-1.1],[-7.533,-1.067],[-3.331,-0.342],[-0.256,0.117],[0,0],[0,0],[-0.767,3.833],[-0.233,2.267],[-0.193,1.007],[0,0],[0.189,-0.144],[0.035,-0.065],[-0.004,0.034],[0.1,0.467],[1.167,0.733],[13.367,1.033],[1.1,0.133],[0.847,-0.152],[0.353,-0.055],[1.7,-0.667],[1.167,-0.867],[2.3,-1.767],[0.933,-0.533],[5.133,-2.667]],"v":[[52.05,3.825],[53.75,2.325],[42.4,-15.675],[40.55,-18.075],[38.1,-20.875],[36.85,-22.475],[36.6,-22.325],[36.55,-22.325],[23.2,-25.075],[-10.8,-29.075],[-18.75,-29.775],[-19.55,-29.425],[-49.7,-16.875],[-51.2,-9.825],[-52.75,0.825],[-53.3,5.175],[-53.75,7.525],[-38.85,22.975],[-38.35,22.425],[-38.25,22.225],[-38.25,22.325],[-37.3,23.475],[-31.35,24.875],[7.55,29.625],[9.85,29.675],[11.45,28.425],[12.6,28.125],[18.2,24.925],[23.35,20.925],[30,16.525],[37,12.875]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[355.85,264.725],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.067,-0.167],[0.133,-0.167],[8,-14.767],[1.233,-1.933],[3.067,-4.2],[2.967,-5.367],[1.033,-2.167],[0.8,-2.967],[0.033,-0.133],[0.133,-0.233],[-0.133,-0.433],[0,0],[-0.233,-0.133],[-0.2,-0.067],[-0.033,-0.133],[-0.367,-0.767],[-1.633,-4.4],[0,0],[-0.367,-0.733],[-1.067,-1.7],[-0.5,-0.233],[-0.267,-0.033],[0,0],[-1.033,-0.667],[-4.933,-2.267],[-5.933,-2.267],[0,0],[-1.133,-0.067],[-0.067,-0.033],[-0.667,0.567],[-0.1,0.9],[-0.033,0.533],[-0.533,1.6],[-1.4,6.933],[0,0],[-0.433,2.033],[-0.933,6.2],[-0.767,3.1],[-0.3,1.333],[-0.167,1],[-0.033,0.067],[0.033,0.367],[-0.033,0.567],[0.6,0.333],[0,0],[0.133,0.267],[0.7,-0.2],[0.133,-0.1],[0,0],[0.1,0.2],[0.7,1.733],[0,0],[2.6,8.667],[2.767,5.133],[0.2,0.867],[0.6,1.567],[0.2,0.6],[0.333,1.1],[0.933,1.067],[0.7,-0.1],[0.333,-0.433]],"o":[[-0.133,0.133],[-9,14.467],[-2.2,4],[-1.433,2.2],[-2,3],[-2.233,4],[-1.7,3.5],[-0.033,0.133],[-0.067,0.133],[-0.133,0.3],[0,0],[0.133,0.2],[0.2,0.133],[0,0.1],[0.1,0.333],[1.233,2.2],[0,0],[0.6,1.533],[0.467,0.867],[0.667,1.167],[0.233,0.133],[0,0],[-0.067,0.6],[4.3,2.6],[4.633,2.1],[0,0],[2.133,0.8],[0.067,0.033],[0.933,0.467],[0.533,-0.4],[0.067,-1.1],[0.067,-0.833],[1.8,-5.367],[0,0],[1.567,-5.633],[0.533,-2.467],[0.833,-5.567],[0.733,-2.7],[0.267,-1.133],[0,-0.033],[0.1,-0.267],[0.067,-0.667],[0.067,-1.233],[0,0],[-0.1,-0.3],[-0.433,-0.967],[-0.133,0.033],[0,0],[-0.133,-0.2],[-0.733,-1.733],[0,0],[-1.167,-3.7],[-2.467,-8.333],[-0.2,-1.433],[-0.233,-1.033],[-0.733,-1.933],[-0.6,-2.233],[-0.6,-1.933],[-0.667,-0.833],[-0.467,0.033],[-0.1,0.167]],"v":[[10.583,-76.833],[10.183,-76.383],[-15.317,-32.533],[-20.467,-23.633],[-27.217,-14.033],[-34.667,-1.483],[-39.567,7.767],[-43.317,17.467],[-43.417,17.867],[-43.717,18.417],[-43.717,19.517],[-43.617,19.967],[-43.067,20.467],[-42.467,20.767],[-42.417,21.117],[-41.717,22.767],[-37.417,32.667],[-32.517,45.517],[-31.067,48.917],[-28.767,52.767],[-27.017,54.867],[-26.267,55.117],[-26.267,55.167],[-24.817,57.066],[-10.967,64.367],[4.883,70.917],[19.033,76.267],[23.933,77.566],[24.133,77.667],[26.533,77.517],[27.483,75.566],[27.633,73.117],[28.533,69.466],[33.333,51.017],[33.683,49.767],[36.683,38.267],[38.883,25.267],[41.283,12.267],[42.833,6.217],[43.483,3.017],[43.533,2.867],[43.633,1.917],[43.783,0.067],[42.983,-2.283],[42.933,-2.333],[42.583,-3.183],[40.883,-4.333],[40.483,-4.133],[38.683,-7.233],[38.333,-7.833],[36.183,-13.033],[34.533,-17.533],[28.883,-36.083],[21.033,-56.283],[20.433,-59.733],[19.183,-63.633],[17.783,-67.433],[16.383,-72.433],[14.083,-76.933],[12.033,-78.033],[10.833,-77.333]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[149.917,290.333],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":5,"op":6,"st":5.16666666666667,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"5 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[255.55,265.52,0]},"a":{"k":[255.55,265.52,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.8,1.433],[1.2,2.9],[0.233,1.8],[0.133,0.233],[0.333,0.167],[0.467,0.233],[0.733,-0.1],[1.933,-0.967],[1.533,-0.3],[0.9,-0.167],[1.533,-0.6],[0.867,-0.333],[7.633,-0.533],[8.633,0.333],[1.233,-0.433],[0,-0.8],[-1.233,-0.4],[0,-0.033],[0,0],[0.2,0],[0.1,-0.667],[-0.933,-1.9],[-10.333,-8.133],[-12.467,-2.833],[-9.067,-0.533],[-3.1,0.133],[-3.333,0.9],[-0.767,0.733],[-0.167,0.733],[0.333,0.633],[0.433,0.233],[0.2,0.467],[0.4,0.4],[-0.033,0.2],[0.333,0.767],[1.433,1.533],[3.533,4.3],[4,5.667]],"o":[[-0.767,-1.367],[-1.4,-3.367],[-0.233,-1.4],[-0.233,-0.533],[-0.233,-0.333],[-0.667,-0.333],[-0.633,0.1],[-1,0.433],[-1.733,0.4],[-1.067,0.3],[-1.7,0.7],[-5.833,2.2],[-5.233,0.433],[-2.567,-0.1],[-1.2,0.433],[-0.067,0.833],[-0.067,0.067],[0,0],[-0.267,-0.133],[-0.5,0.067],[-0.233,1.133],[5.933,11.467],[10.433,8.167],[5.933,1.4],[4.433,0.167],[4.1,-0.167],[1.933,-0.567],[0.567,-0.567],[0.2,-0.867],[-0.267,-0.467],[0,-0.333],[-0.067,-0.2],[0.067,-0.2],[0.1,-0.767],[-0.367,-0.933],[-5.533,-5.6],[-2.733,-3.333],[-1.4,-1.867]],"v":[[22.817,-15.992],[19.867,-22.392],[17.417,-30.142],[16.867,-32.592],[16.017,-33.642],[14.967,-34.492],[12.867,-34.842],[9.017,-33.242],[5.217,-32.142],[1.267,-31.292],[-2.633,-29.941],[-6.483,-28.392],[-26.683,-24.292],[-47.483,-24.142],[-53.183,-23.642],[-54.983,-21.792],[-53.233,-19.941],[-53.333,-19.792],[-53.333,-19.492],[-54.033,-19.691],[-54.933,-18.592],[-53.883,-14.042],[-29.483,15.358],[4.867,31.858],[27.367,34.758],[38.667,34.809],[49.817,33.208],[53.867,31.258],[54.967,29.309],[54.767,27.059],[53.717,26.008],[53.417,24.809],[52.717,23.908],[52.867,23.309],[52.517,21.008],[49.817,17.309],[36.217,2.458],[26.117,-11.042]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[325.433,384.642],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.033,0.033],[0.167,0.3],[0.767,0.2],[12.233,0.733],[6.033,1.367],[0.3,0.067],[0.267,-0.4],[0,0],[0.267,-0.2],[0.3,-0.867],[1.5,-2.367],[0,0],[0.4,-0.467],[0.333,-0.433],[0.233,-0.6],[0.167,0.1],[0.133,-0.3],[-0.067,-0.4],[-0.4,-1.233],[0,0],[-1.9,-7.567],[0,0],[-0.333,-0.267],[-0.1,-0.067],[-0.4,-0.033],[-0.267,0.267],[-0.467,-0.1],[-6,-0.633],[-4.3,-0.233],[-2.367,-0.133],[-0.333,0.2],[-0.267,0.133],[-4.5,5.933],[-0.333,0.833],[-0.167,1.167],[-0.067,0.667],[-0.3,1.5],[-0.067,0.5],[1.6,5.833],[-0.033,0.1],[0.067,0.267],[0.367,0.333]],"o":[[0.167,-0.367],[-0.167,-0.333],[-5.7,-1.233],[-11.633,-0.733],[-0.533,-0.4],[-0.533,-0.133],[0,0],[-0.367,-0.067],[-0.333,0.267],[-0.833,2.567],[0,0],[-1.333,1.9],[-0.7,0.867],[-0.533,0.7],[-0.133,-0.3],[-0.3,-0.033],[-0.1,0.167],[0.233,1.567],[0,0],[2.867,7.333],[0,0],[-0.233,0.267],[0.067,0.067],[0.267,0.533],[0.4,0.067],[2.467,0.667],[6.4,1.567],[3.1,0.333],[1.3,0.1],[0.733,0.033],[0.2,-0.067],[6.7,-3.467],[0.967,-1.3],[0.3,-0.8],[0.133,-1.333],[0.1,-0.933],[0.4,-1.933],[1,-6.067],[0.067,-0.1],[0.1,-0.267],[-0.067,-0.3],[0.033,-0.067]],"v":[[35.458,-21.225],[35.458,-22.225],[34.058,-23.025],[7.158,-25.975],[-19.342,-29.125],[-20.592,-29.825],[-21.792,-29.425],[-21.842,-29.425],[-22.792,-29.225],[-23.742,-27.525],[-27.242,-20.125],[-31.192,-14.375],[-33.792,-10.825],[-35.342,-8.875],[-36.492,-6.925],[-36.942,-7.525],[-37.592,-7.125],[-37.642,-6.275],[-36.692,-2.075],[-35.742,0.325],[-28.592,22.675],[-28.642,22.725],[-28.492,23.525],[-28.242,23.725],[-27.242,24.575],[-26.242,24.275],[-21.842,25.425],[-3.242,28.725],[7.858,29.575],[13.358,29.925],[14.958,29.675],[15.658,29.375],[32.458,15.275],[34.408,12.075],[35.108,9.125],[35.408,6.125],[36.008,2.475],[36.708,-1.175],[35.808,-19.025],[35.958,-19.325],[36.008,-20.125],[35.358,-21.075]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[310.091,141.375],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.9,3.367],[-0.381,0.486],[3.253,6.276],[0.411,0.503],[0.533,0.633],[0.353,0.518],[0.074,-0.046],[0.017,0.005],[5.533,0.733],[15.133,1.6],[1.969,0.125],[0.277,-0.117],[0,0],[0,0],[0.267,-3.267],[0.133,-0.633],[0.107,-0.559],[0,0],[-0.144,0.223],[-0.032,0.068],[-0.004,-0.033],[-0.533,-0.3],[-2.8,-0.2],[-12.567,-2.133],[-0.433,0.1],[-0.219,0.681],[-0.413,0.145],[-2.033,1.467],[-2.267,1.8],[-2.133,1.167],[-3.733,1.9]],"o":[[0.752,-0.514],[-4.314,-5.724],[-0.822,-1.097],[-1.1,-1.233],[-0.48,-0.549],[-0.093,0.054],[-0.017,0.005],[-3.367,-1.1],[-7.533,-1.067],[-3.331,-0.342],[-0.256,0.117],[0,0],[0,0],[-0.767,3.833],[-0.233,2.267],[-0.193,1.007],[0,0],[0.189,-0.144],[0.035,-0.065],[-0.004,0.034],[0.1,0.467],[1.167,0.733],[13.367,1.033],[1.1,0.133],[0.847,-0.152],[0.353,-0.055],[1.7,-0.667],[1.167,-0.867],[2.3,-1.767],[0.933,-0.533],[5.133,-2.667]],"v":[[52.05,3.825],[53.75,2.325],[42.4,-15.675],[40.55,-18.075],[38.1,-20.875],[36.85,-22.475],[36.6,-22.325],[36.55,-22.325],[23.2,-25.075],[-10.8,-29.075],[-18.75,-29.775],[-19.55,-29.425],[-49.7,-16.875],[-51.2,-9.825],[-52.75,0.825],[-53.3,5.175],[-53.75,7.525],[-38.85,22.975],[-38.35,22.425],[-38.25,22.225],[-38.25,22.325],[-37.3,23.475],[-31.35,24.875],[7.55,29.625],[9.85,29.675],[11.45,28.425],[12.6,28.125],[18.2,24.925],[23.35,20.925],[30,16.525],[37,12.875]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[355.85,264.725],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.6,-5.133],[1.467,-3.133],[0.8,-1.533],[4.067,-6.467],[0,0],[0.067,-0.467],[0.033,-0.067],[0.1,-0.333],[0,0],[0,0],[0,0],[-0.4,-0.167],[-1.033,-2.867],[-0.4,-1.633],[0,0],[-0.467,-0.433],[-0.467,-0.033],[0.033,-0.1],[-0.567,-0.567],[-2.533,-0.833],[-6.333,-2.933],[-2.8,-1.333],[-1.733,-0.667],[-4.867,-1.5],[-2.367,-1.033],[-0.667,0.633],[0,0.567],[0.267,0.4],[0,0],[-0.867,2.3],[-1.233,4.8],[-1.2,5.667],[-0.4,2.433],[-0.1,3],[-0.133,1.6],[-0.567,2.767],[-0.9,3.733],[-0.167,1.367],[0.1,1.1],[-0.033,0.2],[0.7,1.533],[5.2,12.633],[1.6,5.367],[0.567,1.567],[1.633,3.5],[0.2,0.233],[-0.033,0.133],[0.533,0.3],[0.967,-1.433]],"o":[[-0.767,1.567],[-1.467,3.167],[-1.767,3.367],[0,0],[-0.433,0.633],[-0.067,0.033],[-0.3,0.267],[0,0],[0,0],[0,0],[0.333,0.333],[0.4,1.4],[1.033,2.867],[0,0],[0.2,1.1],[0.3,0.3],[-0.067,0.1],[-0.1,0.5],[1.1,1.067],[9.033,3.167],[1.4,0.633],[2.5,1.167],[1.767,0.667],[4.2,1.3],[1.767,0.733],[0.333,-0.333],[0,-0.467],[0,0],[0.767,-1.3],[1.4,-3.8],[0.833,-3.133],[0.9,-4.067],[0.6,-3.6],[0,-3.167],[0.133,-2.2],[0.267,-1.167],[0.567,-2.267],[0.133,-1.233],[0.033,-0.167],[0.067,-0.733],[-6.067,-12.533],[-3.367,-8.067],[-1.467,-5.267],[-0.567,-1.5],[-0.2,-0.367],[0.033,-0.167],[0.167,-0.733],[-0.867,-0.467],[-6.333,9.667]],"v":[[-1.733,-60.058],[-5.083,-53.008],[-8.483,-45.958],[-17.233,-31.208],[-45.633,13.842],[-46.383,15.492],[-46.533,15.642],[-47.133,16.542],[-47.184,19.242],[-47.133,19.792],[-46.733,20.342],[-45.633,21.092],[-43.483,27.492],[-41.333,34.242],[-36.983,54.242],[-35.983,56.542],[-34.833,57.042],[-34.983,57.342],[-34.283,58.942],[-28.833,61.792],[-5.783,70.942],[0.517,73.892],[6.867,76.642],[16.816,79.892],[26.667,83.392],[30.316,83.542],[30.816,82.192],[30.417,80.892],[30.417,80.842],[32.867,75.442],[36.816,62.542],[39.867,49.342],[41.816,39.592],[42.867,29.692],[43.066,22.542],[44.117,15.092],[45.867,7.742],[46.967,2.292],[47.017,-1.208],[47.117,-1.758],[46.167,-5.158],[29.267,-42.908],[21.816,-63.058],[18.767,-73.308],[15.467,-80.808],[14.867,-81.708],[14.967,-82.158],[14.417,-83.708],[11.667,-82.258]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[148.683,297.958],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":6,"op":7,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"6 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[244.582,279.007,0]},"a":{"k":[244.582,279.007,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.667,0.3],[1.7,-0.267],[14.267,0.067],[8.167,0.1],[1.5,-0.1],[0.667,-0.4],[-0.133,-0.933],[-0.267,-0.333],[-0.533,-1.6],[-2.633,-5.067],[-6.967,-10.9],[-4.033,-5.6],[-5.267,-5.7],[0,0],[-0.7,-1.033],[-3.767,-2.3],[-1.2,0.467],[-0.533,2.367],[-0.4,3.267],[-0.2,0.967],[-1.233,4.633],[-0.967,4.433],[0,0],[0.1,3.833],[0.1,0.5],[-0.033,0.2],[0.367,0.667]],"o":[[-0.933,-0.367],[-10.2,1.233],[-16.3,-0.3],[-3.033,0],[-1.167,0.067],[-1.033,0.6],[0.067,0.4],[-0.4,0.8],[1.367,4.1],[2.8,5.3],[6.9,10.8],[5.467,7.633],[0,0],[0.133,0.933],[2.833,4.533],[1.733,1.067],[1.167,-0.533],[1.5,-6.7],[0.333,-3.267],[0.1,-0.567],[0.2,-0.667],[0,0],[1.5,-7.4],[-0.033,-0.567],[0.1,-0.133],[0.2,-0.6],[-0.433,-0.533]],"v":[[43.142,-52.85],[39.191,-53],[2.491,-51.25],[-34.208,-51.85],[-41.009,-51.7],[-43.759,-51],[-45.108,-48.7],[-44.608,-47.6],[-44.409,-44],[-38.409,-30.25],[-23.759,-5.95],[-7.358,18.65],[8.741,38.65],[8.741,38.7],[9.991,41.65],[19.892,51.9],[24.292,52.8],[26.841,48.45],[29.691,33.5],[30.491,27.15],[32.491,19.35],[34.241,11.7],[42.941,-30.75],[45.042,-47.6],[44.841,-49.2],[45.042,-49.7],[44.792,-51.6]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[316.008,401.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.333,-0.067],[0.067,-0.033],[1.7,0.267],[1.367,0.233],[3.3,0.867],[2.533,0.567],[0.233,-0.033],[0.733,0.267],[0.467,0.067],[0.2,0.033],[0.067,-0.033],[-0.133,-0.467],[0.333,-0.333],[0.067,-0.2],[-0.1,-0.233],[0.4,-0.8],[0,0],[0.267,-0.3],[1,-0.967],[2.033,-2.733],[1.333,-1.067],[-0.1,-0.3],[0.067,0],[0.2,-0.333],[0,-0.333],[0,-1.267],[-0.067,-0.4],[-0.4,-1.367],[-0.167,-1.033],[0,0],[-0.267,-0.3],[-0.067,-0.033],[-0.4,-0.267],[-5.367,-2.8],[-6.5,-1.833],[-0.967,0.1],[-0.3,0.2],[-0.067,0.233],[-0.9,1.167],[-1.033,1.533],[-0.267,0.367],[-0.833,1.1],[-0.4,0.7],[-0.6,2.333],[-0.4,2.833],[0.2,2.1],[0.333,1.367],[-0.067,0.2],[0.033,0.2],[0.233,0.4],[0,0],[0.333,0.733],[0,0],[0.433,0.367],[1.267,0.433]],"o":[[-0.1,0.033],[-3.6,-0.967],[-2.733,-0.333],[-1.233,-0.2],[-3.767,-1.1],[-0.2,0.067],[-0.4,0.033],[-0.867,-0.267],[-0.3,-0.067],[-0.1,0],[-0.567,0.2],[-0.233,0.167],[-0.467,0.467],[-0.1,0.367],[-0.567,1.1],[0,0],[-0.8,1.133],[-0.167,0.233],[-0.833,0.867],[-1.7,2.333],[-0.567,0.433],[-0.033,-0.067],[-0.3,-0.1],[-0.133,0.233],[-0.1,1.3],[0,0.8],[0.1,0.7],[0.033,0.1],[0,0],[0.1,0.567],[0.033,0.067],[0,0.267],[7.433,4.867],[7.2,3.767],[1.8,0.467],[0.4,-0.067],[0.233,-0.167],[0.633,-0.367],[1.1,-1.4],[3.067,-4.533],[0.4,-0.533],[0.733,-0.967],[0.967,-1.667],[0.333,-1.467],[0.6,-4.133],[-0.1,-1.167],[0.067,-0.133],[0.133,-0.4],[0,-0.167],[0,0],[-0.267,-0.733],[0,0],[-0.467,-1],[-0.433,-0.4],[-0.733,-0.2]],"v":[[23.6,-25.525],[23.35,-25.425],[15.4,-27.275],[9.25,-28.125],[2.45,-29.725],[-7,-32.225],[-7.65,-32.075],[-9.35,-32.425],[-11.35,-32.925],[-12.1,-33.075],[-12.35,-33.025],[-13,-32.025],[-13.85,-31.275],[-14.65,-30.275],[-14.65,-29.375],[-16.1,-26.525],[-19.5,-21.575],[-21.1,-19.425],[-22.85,-17.625],[-27.15,-12.225],[-31.7,-7.125],[-32.4,-6.025],[-32.55,-6.125],[-33.3,-5.775],[-33.5,-4.925],[-33.65,-1.075],[-33.55,0.725],[-32.8,3.825],[-32.5,5.525],[-31.35,10.275],[-30.8,11.575],[-30.65,11.725],[-30.05,12.525],[-10.85,24.025],[9.7,32.425],[13.85,32.975],[14.9,32.575],[15.35,31.975],[17.65,29.675],[20.85,25.275],[25.85,17.925],[27.7,15.475],[29.4,12.975],[31.75,6.975],[32.85,0.525],[33.45,-8.825],[32.8,-12.625],[33,-13.125],[33.15,-14.025],[32.8,-14.875],[31.35,-16.875],[30.45,-19.075],[29.1,-22.025],[27.75,-24.075],[25.2,-25.325]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[310.95,136.775],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0.193,-0.203],[0,0]],"o":[[0,0],[-0.207,0.231],[0,0],[0,0]],"v":[[-50.175,-30.917],[-50.075,-30.917],[-50.675,-30.267],[-50.525,-30.517]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0.633,0.367],[2.367,0.967],[2.8,1.533],[1.4,0.6],[2.533,0.9],[1.1,0.567],[0.467,0.233],[0.7,0.167],[0.333,-0.133],[0.212,0.106],[0.767,0],[0,0],[2.417,0.376],[0.967,0.033],[0,0],[0.175,0.027],[0,0],[0.467,0.533],[0.133,0.267],[0.167,0.167],[0.533,0.467],[0.308,0.181],[0.018,0.055],[0.133,0.1],[0.491,0.017],[0.033,0.025],[0.667,0.067],[0.333,-0.033],[0,0],[0,0],[3.833,-0.833],[0,0],[0.048,-0.229],[0.05,-0.031],[0.141,-0.144],[0,0],[0.239,-1.225],[0,0],[-1.726,-0.26],[0,0],[-0.373,0.079],[-0.275,-0.149],[-0.367,-0.267],[-0.633,-0.467],[-1.1,-0.467],[-0.242,-0.159],[-1.719,-1.055],[-0.388,-0.405],[-0.202,-0.169],[-0.333,-1.762],[-0.1,-1.3],[0.067,-1.967],[-0.164,-3.707],[0,0],[0,-0.2],[0,0],[-0.1,-0.2],[-0.4,-0.033],[-0.085,0.021],[-0.845,-0.333],[-0.845,-0.315],[-0.299,-0.199],[-4.1,-2.1],[-1.333,-0.333],[-0.161,-0.008],[-0.819,-0.221],[-4.033,-0.533],[-1.867,-0.4],[-2,-0.467],[-1.233,-0.133],[-0.367,0.1],[-0.033,0.6],[0.012,0.111],[-0.019,0.017],[-2.567,1.833],[-1.167,0.967],[-3.4,3.533],[0,0],[-0.329,0.288],[-0.067,0.333],[0.133,0.267],[0.267,0.2],[1.533,1.4],[0.433,0.3],[0.218,0.155],[0.042,0.319],[0.333,0.333],[0.467,0.233],[0.267,0.133],[1.233,1.033]],"o":[[-0.3,-0.167],[-1.633,-0.633],[-3,-1.667],[-0.533,-0.233],[-1.867,-0.7],[-0.967,-0.5],[-0.833,-0.4],[-0.5,-0.133],[-0.121,-0.194],[-0.333,-0.167],[0,0],[-3.55,-0.291],[-2.633,-0.433],[0,0],[-0.192,-0.007],[0,0],[-0.7,-1.267],[-0.4,-0.433],[-0.2,-0.4],[-0.067,-0.067],[-0.392,-0.285],[-0.015,-0.045],[-0.233,-0.633],[-0.209,-0.183],[-0.034,-0.008],[-0.167,-0.133],[-0.733,-0.067],[0,0],[0,0],[-1.267,0.4],[0,0],[-0.285,0.171],[-0.083,0.036],[-0.126,0.089],[0,0],[-0.095,0.609],[0,0],[0.841,0.14],[0,0],[0.427,-0.055],[0.225,0.151],[0.833,0.433],[0.333,0.233],[0.5,0.3],[0.191,0.107],[1.181,0.911],[0.279,0.261],[0.231,0.231],[0.133,1.371],[0.633,3.5],[0.1,1.6],[-0.031,3.326],[0,0],[-0.1,0.2],[0,0],[0,0.367],[0.167,0.367],[0.115,0.021],[-0.012,0.467],[0.855,0.319],[0.135,0.201],[1.933,1.433],[2.133,1.133],[0.106,0.025],[-0.053,0.446],[2.133,0.5],[4.3,0.533],[1.033,0.233],[1.8,0.433],[0.8,0.067],[0.7,-0.233],[0.012,-0.122],[0.015,-0.017],[1.3,-1.1],[2.7,-1.967],[1.867,-1.567],[0,0],[0.404,0.021],[0.233,-0.2],[0.1,-0.333],[-0.133,-0.3],[-0.7,-0.767],[-0.733,-0.667],[-0.282,-0.179],[0.142,-0.215],[-0.033,-0.467],[-0.267,-0.267],[-0.567,-0.267],[-0.767,-0.4],[-1.333,-1.133]],"v":[[37.825,-10.967],[33.825,-12.667],[27.175,-15.917],[20.575,-19.317],[15.975,-21.017],[11.525,-22.917],[9.375,-24.017],[7.075,-24.867],[5.825,-24.867],[5.325,-25.317],[3.675,-25.567],[-12.875,-25.317],[-21.825,-26.317],[-27.225,-27.017],[-29.775,-27.017],[-30.325,-27.067],[-30.925,-27.817],[-32.675,-30.517],[-33.475,-31.567],[-34.025,-32.417],[-34.925,-33.217],[-35.975,-33.917],[-36.025,-34.067],[-36.575,-35.167],[-37.625,-35.467],[-37.725,-35.517],[-38.975,-35.817],[-40.575,-35.867],[-41.075,-35.817],[-42.075,-35.517],[-49.725,-33.667],[-50.625,-33.367],[-51.125,-32.767],[-51.325,-32.667],[-51.725,-32.317],[-52.625,-25.717],[-53.125,-22.967],[-53.075,-22.967],[-49.225,-22.367],[-48.425,-22.517],[-47.225,-22.717],[-46.475,-22.267],[-44.675,-21.217],[-43.225,-20.167],[-40.825,-19.017],[-40.175,-18.617],[-35.825,-15.667],[-34.825,-14.667],[-34.175,-14.067],[-33.475,-9.367],[-32.375,-2.167],[-32.325,3.183],[-32.125,13.733],[-32.225,13.833],[-32.375,14.433],[-32.325,18.233],[-32.175,19.083],[-31.325,19.683],[-31.025,19.683],[-29.775,20.883],[-27.225,21.833],[-26.575,22.433],[-17.525,27.733],[-12.325,29.933],[-11.925,29.983],[-10.775,30.983],[-1.525,32.533],[7.725,33.933],[12.275,34.983],[16.825,35.833],[18.575,35.783],[19.675,34.533],[19.675,34.183],[19.725,34.133],[25.525,29.733],[31.325,25.333],[39.225,17.683],[51.475,4.833],[52.575,4.433],[53.025,3.633],[52.975,2.733],[52.375,1.983],[49.025,-1.267],[47.275,-2.717],[46.525,-3.217],[46.675,-4.017],[46.125,-5.217],[45.025,-5.967],[43.775,-6.567],[40.775,-8.717]],"c":true}},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[334.575,253.467],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.6,-5.133],[1.467,-3.133],[0.8,-1.533],[4.067,-6.467],[0,0],[0.067,-0.467],[0.033,-0.067],[0.1,-0.333],[0,0],[0,0],[0,0],[-0.4,-0.167],[-1.033,-2.867],[-0.4,-1.633],[0,0],[-0.467,-0.433],[-0.467,-0.033],[0.033,-0.1],[-0.567,-0.567],[-2.533,-0.833],[-6.333,-2.933],[-2.8,-1.333],[-1.733,-0.667],[-4.867,-1.5],[-2.367,-1.033],[-0.667,0.633],[0,0.567],[0.267,0.4],[0,0],[-0.867,2.3],[-1.233,4.8],[-1.2,5.667],[-0.4,2.433],[-0.1,3],[-0.133,1.6],[-0.567,2.767],[-0.9,3.733],[-0.167,1.367],[0.1,1.1],[-0.033,0.2],[0.7,1.533],[5.2,12.633],[1.6,5.367],[0.567,1.567],[1.633,3.5],[0.2,0.233],[-0.033,0.133],[0.533,0.3],[0.967,-1.433]],"o":[[-0.767,1.567],[-1.467,3.167],[-1.767,3.367],[0,0],[-0.433,0.633],[-0.067,0.033],[-0.3,0.267],[0,0],[0,0],[0,0],[0.333,0.333],[0.4,1.4],[1.033,2.867],[0,0],[0.2,1.1],[0.3,0.3],[-0.067,0.1],[-0.1,0.5],[1.1,1.067],[9.033,3.167],[1.4,0.633],[2.5,1.167],[1.767,0.667],[4.2,1.3],[1.767,0.733],[0.333,-0.333],[0,-0.467],[0,0],[0.767,-1.3],[1.4,-3.8],[0.833,-3.133],[0.9,-4.067],[0.6,-3.6],[0,-3.167],[0.133,-2.2],[0.267,-1.167],[0.567,-2.267],[0.133,-1.233],[0.033,-0.167],[0.067,-0.733],[-6.067,-12.533],[-3.367,-8.067],[-1.467,-5.267],[-0.567,-1.5],[-0.2,-0.367],[0.033,-0.167],[0.167,-0.733],[-0.867,-0.467],[-6.333,9.667]],"v":[[-1.733,-60.058],[-5.083,-53.008],[-8.483,-45.958],[-17.233,-31.208],[-45.633,13.842],[-46.383,15.492],[-46.533,15.642],[-47.133,16.542],[-47.184,19.242],[-47.133,19.792],[-46.733,20.342],[-45.633,21.092],[-43.483,27.492],[-41.333,34.242],[-36.983,54.242],[-35.983,56.542],[-34.833,57.042],[-34.983,57.342],[-34.283,58.942],[-28.833,61.792],[-5.783,70.942],[0.517,73.892],[6.867,76.642],[16.816,79.892],[26.667,83.392],[30.316,83.542],[30.816,82.192],[30.417,80.892],[30.417,80.842],[32.867,75.442],[36.816,62.542],[39.867,49.342],[41.816,39.592],[42.867,29.692],[43.066,22.542],[44.117,15.092],[45.867,7.742],[46.967,2.292],[47.017,-1.208],[47.117,-1.758],[46.167,-5.158],[29.267,-42.908],[21.816,-63.058],[18.767,-73.308],[15.467,-80.808],[14.867,-81.708],[14.967,-82.158],[14.417,-83.708],[11.667,-82.258]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[148.683,297.958],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":7,"op":8,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"7 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[242.376,275.88,0]},"a":{"k":[242.376,275.88,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.667,0.3],[1.7,-0.267],[14.267,0.067],[8.167,0.1],[1.5,-0.1],[0.667,-0.4],[-0.133,-0.933],[-0.267,-0.333],[-0.533,-1.6],[-2.633,-5.067],[-6.967,-10.9],[-4.033,-5.6],[-5.267,-5.7],[0,0],[-0.7,-1.033],[-3.767,-2.3],[-1.2,0.467],[-0.533,2.367],[-0.4,3.267],[-0.2,0.967],[-1.233,4.633],[-0.967,4.433],[0,0],[0.1,3.833],[0.1,0.5],[-0.033,0.2],[0.367,0.667]],"o":[[-0.933,-0.367],[-10.2,1.233],[-16.3,-0.3],[-3.033,0],[-1.167,0.067],[-1.033,0.6],[0.067,0.4],[-0.4,0.8],[1.367,4.1],[2.8,5.3],[6.9,10.8],[5.467,7.633],[0,0],[0.133,0.933],[2.833,4.533],[1.733,1.067],[1.167,-0.533],[1.5,-6.7],[0.333,-3.267],[0.1,-0.567],[0.2,-0.667],[0,0],[1.5,-7.4],[-0.033,-0.567],[0.1,-0.133],[0.2,-0.6],[-0.433,-0.533]],"v":[[43.142,-52.85],[39.191,-53],[2.491,-51.25],[-34.208,-51.85],[-41.009,-51.7],[-43.759,-51],[-45.108,-48.7],[-44.608,-47.6],[-44.409,-44],[-38.409,-30.25],[-23.759,-5.95],[-7.358,18.65],[8.741,38.65],[8.741,38.7],[9.991,41.65],[19.892,51.9],[24.292,52.8],[26.841,48.45],[29.691,33.5],[30.491,27.15],[32.491,19.35],[34.241,11.7],[42.941,-30.75],[45.042,-47.6],[44.841,-49.2],[45.042,-49.7],[44.792,-51.6]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[316.008,401.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.667,0.333],[3.467,1.467],[0,0],[1.609,0.777],[0.1,0.322],[0.833,0.233],[0.733,-0.3],[1.2,-1.633],[0,0],[1.1,-1.133],[0.233,-0.467],[-0.088,-0.653],[0.115,-0.077],[0.1,-0.633],[-1.8,-1.233],[0,0],[-9.567,-6.3],[-0.467,-0.167],[-0.633,0.133],[-0.967,1.9],[0,0],[-1,2.167],[-0.833,2.967],[1.467,7.3],[1.667,1.667],[0.585,0.018],[0.169,0.236]],"o":[[-1.667,-0.867],[0,0],[-2.625,-1.089],[0.033,-0.311],[-0.233,-0.7],[-0.767,-0.233],[-0.933,0.433],[0,0],[-1.6,2.1],[-1.033,1.1],[-0.421,0.747],[-0.119,0.057],[-0.6,0.367],[-0.2,1.133],[0,0],[7,4.867],[0.8,0.5],[0.7,0.3],[1.133,-0.233],[0,0],[2.167,-4],[1.633,-3.467],[2.033,-7.2],[-0.7,-3.633],[-0.649,-0.649],[-0.031,-0.264],[-0.2,-0.3]],"v":[[22.742,-24.35],[15.042,-27.85],[9.142,-30.35],[2.792,-33.15],[2.691,-34.1],[1.091,-35.5],[-1.159,-35.4],[-4.358,-32.3],[-23.159,-6.8],[-27.208,-1.95],[-29.108,0.4],[-29.608,2.5],[-29.958,2.7],[-31.008,4.2],[-28.608,7.75],[-14.409,17.6],[10.441,34.35],[12.341,35.35],[14.341,35.6],[17.492,32.4],[20.441,26.95],[25.191,17.7],[28.892,8.05],[29.742,-13.7],[26.191,-21.65],[24.341,-22.65],[24.042,-23.4]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[310.508,133.1],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0.193,-0.203],[0,0]],"o":[[0,0],[-0.207,0.231],[0,0],[0,0]],"v":[[-50.175,-30.917],[-50.075,-30.917],[-50.675,-30.267],[-50.525,-30.517]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0.633,0.367],[2.367,0.967],[2.8,1.533],[1.4,0.6],[2.533,0.9],[1.1,0.567],[0.467,0.233],[0.7,0.167],[0.333,-0.133],[0.212,0.106],[0.767,0],[0,0],[2.417,0.376],[0.967,0.033],[0,0],[0.175,0.027],[0,0],[0.467,0.533],[0.133,0.267],[0.167,0.167],[0.533,0.467],[0.308,0.181],[0.018,0.055],[0.133,0.1],[0.491,0.017],[0.033,0.025],[0.667,0.067],[0.333,-0.033],[0,0],[0,0],[3.833,-0.833],[0,0],[0.048,-0.229],[0.05,-0.031],[0.141,-0.144],[0,0],[0.239,-1.225],[0,0],[-1.726,-0.26],[0,0],[-0.373,0.079],[-0.275,-0.149],[-0.367,-0.267],[-0.633,-0.467],[-1.1,-0.467],[-0.242,-0.159],[-1.719,-1.055],[-0.388,-0.405],[-0.202,-0.169],[-0.333,-1.762],[-0.1,-1.3],[0.067,-1.967],[-0.164,-3.707],[0,0],[0,-0.2],[0,0],[-0.1,-0.2],[-0.4,-0.033],[-0.085,0.021],[-0.845,-0.333],[-0.845,-0.315],[-0.299,-0.199],[-4.1,-2.1],[-1.333,-0.333],[-0.161,-0.008],[-0.819,-0.221],[-4.033,-0.533],[-1.867,-0.4],[-2,-0.467],[-1.233,-0.133],[-0.367,0.1],[-0.033,0.6],[0.012,0.111],[-0.019,0.017],[-2.567,1.833],[-1.167,0.967],[-3.4,3.533],[0,0],[-0.329,0.288],[-0.067,0.333],[0.133,0.267],[0.267,0.2],[1.533,1.4],[0.433,0.3],[0.218,0.155],[0.042,0.319],[0.333,0.333],[0.467,0.233],[0.267,0.133],[1.233,1.033]],"o":[[-0.3,-0.167],[-1.633,-0.633],[-3,-1.667],[-0.533,-0.233],[-1.867,-0.7],[-0.967,-0.5],[-0.833,-0.4],[-0.5,-0.133],[-0.121,-0.194],[-0.333,-0.167],[0,0],[-3.55,-0.291],[-2.633,-0.433],[0,0],[-0.192,-0.007],[0,0],[-0.7,-1.267],[-0.4,-0.433],[-0.2,-0.4],[-0.067,-0.067],[-0.392,-0.285],[-0.015,-0.045],[-0.233,-0.633],[-0.209,-0.183],[-0.034,-0.008],[-0.167,-0.133],[-0.733,-0.067],[0,0],[0,0],[-1.267,0.4],[0,0],[-0.285,0.171],[-0.083,0.036],[-0.126,0.089],[0,0],[-0.095,0.609],[0,0],[0.841,0.14],[0,0],[0.427,-0.055],[0.225,0.151],[0.833,0.433],[0.333,0.233],[0.5,0.3],[0.191,0.107],[1.181,0.911],[0.279,0.261],[0.231,0.231],[0.133,1.371],[0.633,3.5],[0.1,1.6],[-0.031,3.326],[0,0],[-0.1,0.2],[0,0],[0,0.367],[0.167,0.367],[0.115,0.021],[-0.012,0.467],[0.855,0.319],[0.135,0.201],[1.933,1.433],[2.133,1.133],[0.106,0.025],[-0.053,0.446],[2.133,0.5],[4.3,0.533],[1.033,0.233],[1.8,0.433],[0.8,0.067],[0.7,-0.233],[0.012,-0.122],[0.015,-0.017],[1.3,-1.1],[2.7,-1.967],[1.867,-1.567],[0,0],[0.404,0.021],[0.233,-0.2],[0.1,-0.333],[-0.133,-0.3],[-0.7,-0.767],[-0.733,-0.667],[-0.282,-0.179],[0.142,-0.215],[-0.033,-0.467],[-0.267,-0.267],[-0.567,-0.267],[-0.767,-0.4],[-1.333,-1.133]],"v":[[37.825,-10.967],[33.825,-12.667],[27.175,-15.917],[20.575,-19.317],[15.975,-21.017],[11.525,-22.917],[9.375,-24.017],[7.075,-24.867],[5.825,-24.867],[5.325,-25.317],[3.675,-25.567],[-12.875,-25.317],[-21.825,-26.317],[-27.225,-27.017],[-29.775,-27.017],[-30.325,-27.067],[-30.925,-27.817],[-32.675,-30.517],[-33.475,-31.567],[-34.025,-32.417],[-34.925,-33.217],[-35.975,-33.917],[-36.025,-34.067],[-36.575,-35.167],[-37.625,-35.467],[-37.725,-35.517],[-38.975,-35.817],[-40.575,-35.867],[-41.075,-35.817],[-42.075,-35.517],[-49.725,-33.667],[-50.625,-33.367],[-51.125,-32.767],[-51.325,-32.667],[-51.725,-32.317],[-52.625,-25.717],[-53.125,-22.967],[-53.075,-22.967],[-49.225,-22.367],[-48.425,-22.517],[-47.225,-22.717],[-46.475,-22.267],[-44.675,-21.217],[-43.225,-20.167],[-40.825,-19.017],[-40.175,-18.617],[-35.825,-15.667],[-34.825,-14.667],[-34.175,-14.067],[-33.475,-9.367],[-32.375,-2.167],[-32.325,3.183],[-32.125,13.733],[-32.225,13.833],[-32.375,14.433],[-32.325,18.233],[-32.175,19.083],[-31.325,19.683],[-31.025,19.683],[-29.775,20.883],[-27.225,21.833],[-26.575,22.433],[-17.525,27.733],[-12.325,29.933],[-11.925,29.983],[-10.775,30.983],[-1.525,32.533],[7.725,33.933],[12.275,34.983],[16.825,35.833],[18.575,35.783],[19.675,34.533],[19.675,34.183],[19.725,34.133],[25.525,29.733],[31.325,25.333],[39.225,17.683],[51.475,4.833],[52.575,4.433],[53.025,3.633],[52.975,2.733],[52.375,1.983],[49.025,-1.267],[47.275,-2.717],[46.525,-3.217],[46.675,-4.017],[46.125,-5.217],[45.025,-5.967],[43.775,-6.567],[40.775,-8.717]],"c":true}},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[334.575,253.467],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.367,0.1],[0.533,-1.033],[7.333,-17.2],[1.133,-2.067],[2.167,-3.367],[9.567,-12.267],[0.067,-0.967],[-0.467,-0.567],[-0.233,-0.133],[-0.7,-2.167],[0,0],[-1.033,-2.233],[-0.533,-2.7],[-0.167,-0.367],[-0.467,-0.3],[-0.467,0],[-0.4,-0.2],[-4,-1.433],[-4.6,-1.567],[0,0],[-5.7,-2.433],[-0.733,0],[-0.233,-0.167],[-0.567,0.2],[-0.433,1.5],[-0.9,2.533],[-0.5,1.467],[-1.567,12.2],[0,0],[-0.133,3.067],[0.033,0.267],[-0.067,0.533],[0.4,0.933],[0.6,2.9],[1.4,3.967],[1.967,4.967],[6.433,18.767],[0.6,0.467],[0.433,0.033],[0,0]],"o":[[-0.633,-0.2],[-8.733,17.233],[-2,4.667],[-0.667,1.2],[-9.167,13.667],[-1.133,1.4],[-0.067,0.7],[0.2,0.233],[0.7,1.733],[0,0],[0.2,0.5],[1.467,3.233],[0.167,0.867],[0.233,0.667],[0.367,0.267],[0.333,0.2],[2.733,1.3],[2.267,0.833],[0,0],[9.7,3.633],[1.167,0.467],[0.167,0.2],[0.533,0.4],[0.7,-0.233],[0.5,-1.833],[1.033,-2.867],[3.933,-11.433],[0,0],[0.667,-6.3],[0,-0.367],[0.433,-0.367],[0.067,-0.467],[-0.333,-0.8],[-0.667,-3.2],[-0.733,-2.033],[-8.067,-20.533],[-0.467,-1.333],[-0.333,-0.267],[0,0],[-0.033,-0.533]],"v":[[15.275,-89.05],[13.525,-87.8],[-10.575,-36.15],[-15.275,-26.05],[-19.525,-19.2],[-47.625,19.7],[-49.425,23.25],[-48.825,25.15],[-48.175,25.7],[-46.075,31.55],[-40.425,48],[-38.575,52.1],[-35.575,61],[-35.075,62.85],[-34.025,64.3],[-32.775,64.7],[-31.675,65.3],[-21.575,69.4],[-11.275,73],[2.925,78.4],[26.025,87.5],[28.875,88.2],[29.475,88.75],[31.125,89.05],[32.825,86.45],[34.925,79.9],[37.225,73.4],[45.475,37.95],[47.525,19.35],[48.725,5.3],[48.675,4.35],[49.425,3],[48.925,0.9],[47.525,-4.65],[44.425,-15.4],[40.375,-25.9],[18.625,-84.85],[17.025,-87.55],[15.875,-88],[15.875,-88.1]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[146.525,303.6],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":8,"op":9,"st":8,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"8 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[237.856,272.499,0]},"a":{"k":[237.856,272.499,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.933,0.6],[1.067,0.1],[0,0],[22.9,0.767],[0.7,-0.333],[0,-0.067],[0.2,-0.133],[0,-1.3],[-0.8,-2],[-1.267,-2.8],[-2.733,-14.067],[-2.233,-6.133],[-0.167,-0.5],[-0.433,-2.933],[-0.2,-1.067],[-0.7,-1.433],[-1.6,-3.833],[0,0],[-0.7,0.6],[0,0],[-17.867,31.867],[0.067,1.467],[0.033,0.267],[-0.067,0.167]],"o":[[-0.667,-0.333],[0,0],[-19.6,-2.133],[-1.333,-0.1],[-0.033,0],[-0.267,0.033],[-0.6,0.433],[0.033,1.6],[0.233,0.6],[3.367,7.3],[3.1,15.567],[1.633,4.533],[0.4,1.5],[0.167,1.4],[0.7,0.967],[0.933,1.833],[0,0],[0.833,-0.733],[0,0],[24.667,-27.5],[1.4,-2.533],[0,-0.3],[0.033,-0.2],[0.133,-0.9]],"v":[[48.534,-46.425],[45.934,-47.075],[18.584,-50.375],[-45.166,-54.725],[-48.216,-54.375],[-48.266,-54.275],[-48.966,-54.025],[-49.866,-51.425],[-48.616,-46.025],[-46.366,-40.925],[-37.216,-8.875],[-29.216,23.675],[-26.516,31.225],[-25.266,37.875],[-24.716,41.575],[-22.616,45.175],[-18.816,53.675],[-18.316,54.825],[-16.016,52.825],[-16.166,52.275],[47.634,-36.775],[49.634,-42.775],[49.584,-43.625],[49.734,-44.175]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[328.866,392.725],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.667,0.333],[3.467,1.467],[0,0],[1.609,0.777],[0.1,0.322],[0.833,0.233],[0.733,-0.3],[1.2,-1.633],[0,0],[1.1,-1.133],[0.233,-0.467],[-0.088,-0.653],[0.115,-0.077],[0.1,-0.633],[-1.8,-1.233],[0,0],[-9.567,-6.3],[-0.467,-0.167],[-0.633,0.133],[-0.967,1.9],[0,0],[-1,2.167],[-0.833,2.967],[1.467,7.3],[1.667,1.667],[0.585,0.018],[0.169,0.236]],"o":[[-1.667,-0.867],[0,0],[-2.625,-1.089],[0.033,-0.311],[-0.233,-0.7],[-0.767,-0.233],[-0.933,0.433],[0,0],[-1.6,2.1],[-1.033,1.1],[-0.421,0.747],[-0.119,0.057],[-0.6,0.367],[-0.2,1.133],[0,0],[7,4.867],[0.8,0.5],[0.7,0.3],[1.133,-0.233],[0,0],[2.167,-4],[1.633,-3.467],[2.033,-7.2],[-0.7,-3.633],[-0.649,-0.649],[-0.031,-0.264],[-0.2,-0.3]],"v":[[22.742,-24.35],[15.042,-27.85],[9.142,-30.35],[2.792,-33.15],[2.691,-34.1],[1.091,-35.5],[-1.159,-35.4],[-4.358,-32.3],[-23.159,-6.8],[-27.208,-1.95],[-29.108,0.4],[-29.608,2.5],[-29.958,2.7],[-31.008,4.2],[-28.608,7.75],[-14.409,17.6],[10.441,34.35],[12.341,35.35],[14.341,35.6],[17.492,32.4],[20.441,26.95],[25.191,17.7],[28.892,8.05],[29.742,-13.7],[26.191,-21.65],[24.341,-22.65],[24.042,-23.4]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[310.508,133.1],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.933,0.333],[1.7,0.2],[6.5,0.933],[0,0],[0.135,0.012],[0.323,0.529],[0.433,0.533],[0.8,0.767],[0.2,0.267],[0.6,1.133],[0,0],[1.233,1.4],[0.029,0.05],[0.041,0.089],[1.067,-0.233],[3.767,-1.667],[0.167,-0.067],[1.633,-0.5],[0,0],[0.206,-0.083],[0.204,-0.205],[0,0],[0,0],[0.733,-2.867],[0,0],[0.033,-0.1],[0.133,-0.267],[-0.033,-0.2],[-0.374,-0.125],[-0.015,-0.011],[-2.233,-0.333],[-7.667,-1.733],[-0.967,-0.333],[-0.255,-0.017],[-0.041,-0.143],[0,0],[-0.3,-1.6],[-0.367,-1.1],[-0.5,-2.467],[-0.467,-1.1],[-0.233,-0.2],[-0.5,0.2],[-0.139,0.262],[0,0],[-5.967,-1.633],[-2.967,-1.033],[-0.4,0.167],[-0.205,0.676],[-0.513,0.443],[-3.133,3.367],[-2.333,2.7],[-1.267,1.333],[-2.767,2.6],[-0.103,0.235],[0.032,0.351],[0.533,0.467],[0,0],[0.733,0.867],[0.467,0.567],[1.033,1.033],[0,0],[0.8,0.633],[0.489,0.23],[0,0],[0.7,0.333],[0.9,0.067],[2.7,0.6]],"o":[[-3.367,-0.333],[-1.933,-0.2],[0,0],[-0.131,-0.021],[-0.044,-0.238],[-0.767,-1.1],[-1.033,-1.333],[-0.733,-0.667],[-0.233,-0.3],[0,0],[-1.733,-2.733],[-0.038,-0.05],[-0.025,-0.078],[-0.233,-0.533],[-3.933,0.8],[-1.6,0.7],[-0.3,0.1],[0,0],[-0.261,0.083],[-0.229,-0.071],[0,0],[0,0],[-0.867,2.133],[0,0],[-0.1,0.633],[-0.033,0.167],[-0.1,0.233],[0.093,0.309],[0.019,0.023],[0.867,0.633],[8.333,1.4],[2,0.467],[0.312,0.117],[0.025,0.157],[0,0],[0.167,0.8],[0.133,0.567],[0.133,0.5],[0.367,1.8],[0.367,0.667],[0.5,0.433],[0.261,-0.105],[0,0],[2.7,0.933],[5.667,1.567],[0.933,0.3],[0.462,-0.191],[0.421,-0.123],[3.767,-3.2],[0.967,-1.067],[2.067,-2.433],[1.333,-1.367],[0.264,-0.265],[0.332,-0.215],[-0.033,-0.333],[0,0],[-1.8,-1.467],[-0.933,-1.2],[-0.667,-0.833],[0,0],[-1.033,-1.1],[-0.611,-0.47],[0,0],[0.1,-0.633],[-0.3,-0.167],[-1.033,-0.067],[-2.067,-0.433]],"v":[[19.576,-17.592],[11.975,-18.392],[-0.674,-20.092],[-12.875,-21.892],[-13.275,-21.942],[-13.825,-23.092],[-15.625,-25.542],[-18.375,-28.692],[-19.775,-30.092],[-21.025,-32.242],[-21.975,-33.842],[-26.424,-40.042],[-26.525,-40.192],[-26.625,-40.442],[-28.575,-40.892],[-40.125,-37.192],[-42.775,-36.042],[-45.674,-35.142],[-53.475,-32.792],[-54.174,-32.542],[-54.825,-32.342],[-55.125,-31.892],[-57.025,-27.142],[-59.424,-19.642],[-59.674,-18.492],[-59.875,-17.392],[-60.125,-16.742],[-60.225,-16.092],[-59.525,-15.442],[-59.475,-15.392],[-54.825,-13.942],[-30.825,-9.242],[-26.375,-8.042],[-25.525,-7.842],[-25.424,-7.392],[-19.825,11.258],[-19.125,14.858],[-18.375,17.358],[-17.424,21.808],[-16.174,26.158],[-15.275,27.458],[-13.775,27.808],[-13.174,27.258],[2.425,33.008],[15.425,36.858],[28.375,40.758],[30.375,40.958],[31.375,39.658],[32.775,38.808],[43.125,28.958],[48.076,23.308],[53.076,17.658],[59.225,11.708],[59.775,10.958],[60.225,10.108],[59.375,8.908],[52.576,3.408],[48.775,-0.092],[46.675,-2.742],[44.125,-5.542],[39.775,-9.942],[37.025,-12.542],[35.375,-13.592],[35.375,-13.642],[34.475,-15.092],[32.675,-15.442],[27.076,-16.442]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[316.724,244.792],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.367,0.1],[0.533,-1.033],[7.333,-17.2],[1.133,-2.067],[2.167,-3.367],[9.567,-12.267],[0.067,-0.967],[-0.467,-0.567],[-0.233,-0.133],[-0.7,-2.167],[0,0],[-1.033,-2.233],[-0.533,-2.7],[-0.167,-0.367],[-0.467,-0.3],[-0.467,0],[-0.4,-0.2],[-4,-1.433],[-4.6,-1.567],[0,0],[-5.7,-2.433],[-0.733,0],[-0.233,-0.167],[-0.567,0.2],[-0.433,1.5],[-0.9,2.533],[-0.5,1.467],[-1.567,12.2],[0,0],[-0.133,3.067],[0.033,0.267],[-0.067,0.533],[0.4,0.933],[0.6,2.9],[1.4,3.967],[1.967,4.967],[6.433,18.767],[0.6,0.467],[0.433,0.033],[0,0]],"o":[[-0.633,-0.2],[-8.733,17.233],[-2,4.667],[-0.667,1.2],[-9.167,13.667],[-1.133,1.4],[-0.067,0.7],[0.2,0.233],[0.7,1.733],[0,0],[0.2,0.5],[1.467,3.233],[0.167,0.867],[0.233,0.667],[0.367,0.267],[0.333,0.2],[2.733,1.3],[2.267,0.833],[0,0],[9.7,3.633],[1.167,0.467],[0.167,0.2],[0.533,0.4],[0.7,-0.233],[0.5,-1.833],[1.033,-2.867],[3.933,-11.433],[0,0],[0.667,-6.3],[0,-0.367],[0.433,-0.367],[0.067,-0.467],[-0.333,-0.8],[-0.667,-3.2],[-0.733,-2.033],[-8.067,-20.533],[-0.467,-1.333],[-0.333,-0.267],[0,0],[-0.033,-0.533]],"v":[[15.275,-89.05],[13.525,-87.8],[-10.575,-36.15],[-15.275,-26.05],[-19.525,-19.2],[-47.625,19.7],[-49.425,23.25],[-48.825,25.15],[-48.175,25.7],[-46.075,31.55],[-40.425,48],[-38.575,52.1],[-35.575,61],[-35.075,62.85],[-34.025,64.3],[-32.775,64.7],[-31.675,65.3],[-21.575,69.4],[-11.275,73],[2.925,78.4],[26.025,87.5],[28.875,88.2],[29.475,88.75],[31.125,89.05],[32.825,86.45],[34.925,79.9],[37.225,73.4],[45.475,37.95],[47.525,19.35],[48.725,5.3],[48.675,4.35],[49.425,3],[48.925,0.9],[47.525,-4.65],[44.425,-15.4],[40.375,-25.9],[18.625,-84.85],[17.025,-87.55],[15.875,-88],[15.875,-88.1]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[146.525,303.6],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":9,"op":10,"st":9,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"9 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[252.682,272.693,0]},"a":{"k":[252.682,272.693,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.933,0.6],[1.067,0.1],[0,0],[22.9,0.767],[0.7,-0.333],[0,-0.067],[0.2,-0.133],[0,-1.3],[-0.8,-2],[-1.267,-2.8],[-2.733,-14.067],[-2.233,-6.133],[-0.167,-0.5],[-0.433,-2.933],[-0.2,-1.067],[-0.7,-1.433],[-1.6,-3.833],[0,0],[-0.7,0.6],[0,0],[-17.867,31.867],[0.067,1.467],[0.033,0.267],[-0.067,0.167]],"o":[[-0.667,-0.333],[0,0],[-19.6,-2.133],[-1.333,-0.1],[-0.033,0],[-0.267,0.033],[-0.6,0.433],[0.033,1.6],[0.233,0.6],[3.367,7.3],[3.1,15.567],[1.633,4.533],[0.4,1.5],[0.167,1.4],[0.7,0.967],[0.933,1.833],[0,0],[0.833,-0.733],[0,0],[24.667,-27.5],[1.4,-2.533],[0,-0.3],[0.033,-0.2],[0.133,-0.9]],"v":[[48.534,-46.425],[45.934,-47.075],[18.584,-50.375],[-45.166,-54.725],[-48.216,-54.375],[-48.266,-54.275],[-48.966,-54.025],[-49.866,-51.425],[-48.616,-46.025],[-46.366,-40.925],[-37.216,-8.875],[-29.216,23.675],[-26.516,31.225],[-25.266,37.875],[-24.716,41.575],[-22.616,45.175],[-18.816,53.675],[-18.316,54.825],[-16.016,52.825],[-16.166,52.275],[47.634,-36.775],[49.634,-42.775],[49.584,-43.625],[49.734,-44.175]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[328.866,392.725],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.033,1.267],[2.167,1.333],[5.4,1.567],[7.167,1.533],[1.3,0.567],[0.167,0.033],[0.3,0.1],[0.533,-0.733],[2.533,-3.767],[0,0],[1.567,-2.8],[1.333,-4.133],[0.033,-0.6],[-0.2,-0.367],[-0.133,-0.133],[-0.233,-0.267],[-6.3,-2.933],[-4,-1.633],[-1.967,-0.967],[-3.4,-1.833],[0,0],[-1.367,-1.4],[-0.367,-0.167],[-0.233,-0.033],[-0.333,-0.067],[-0.367,0.2],[-0.533,0.933],[-2.367,6.5],[-0.633,3.167],[0.333,3.433],[1.233,3]],"o":[[-1.2,-1.433],[-3.767,-2.333],[-2.633,-0.767],[-2.667,-0.6],[-0.2,-0.1],[-0.033,-0.3],[-0.467,-0.2],[-0.967,1.367],[0,0],[-3.7,5.533],[-2.733,4.767],[-0.333,1.067],[-0.067,0.4],[0.1,0.2],[0.1,0.267],[3.167,3.767],[1.367,0.633],[3.4,1.367],[1.767,0.833],[0,0],[2.3,1.233],[0.867,0.867],[0.2,0.067],[0.167,0.2],[0.433,0.067],[0.467,-0.267],[3.167,-5.733],[1.5,-4.033],[0.833,-3.967],[-0.3,-3.1],[-0.867,-2]],"v":[[29.192,-20.084],[24.142,-24.234],[10.392,-30.084],[-4.308,-33.533],[-10.258,-35.283],[-10.808,-35.484],[-11.308,-36.084],[-12.808,-35.283],[-18.058,-27.584],[-20.058,-24.584],[-27.958,-12.084],[-34.058,1.266],[-34.608,3.766],[-34.408,4.916],[-34.058,5.416],[-33.558,6.217],[-19.358,16.266],[-11.308,19.666],[-3.258,23.166],[4.492,27.166],[10.642,30.166],[16.142,34.117],[17.992,35.666],[18.642,35.817],[19.392,36.217],[20.592,36.016],[22.092,34.217],[30.392,15.867],[33.592,5.067],[34.342,-6.033],[32.042,-15.183]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[311.758,133.984],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.933,0.333],[1.7,0.2],[6.5,0.933],[0,0],[0.135,0.012],[0.323,0.529],[0.433,0.533],[0.8,0.767],[0.2,0.267],[0.6,1.133],[0,0],[1.233,1.4],[0.029,0.05],[0.041,0.089],[1.067,-0.233],[3.767,-1.667],[0.167,-0.067],[1.633,-0.5],[0,0],[0.206,-0.083],[0.204,-0.205],[0,0],[0,0],[0.733,-2.867],[0,0],[0.033,-0.1],[0.133,-0.267],[-0.033,-0.2],[-0.374,-0.125],[-0.015,-0.011],[-2.233,-0.333],[-7.667,-1.733],[-0.967,-0.333],[-0.255,-0.017],[-0.041,-0.143],[0,0],[-0.3,-1.6],[-0.367,-1.1],[-0.5,-2.467],[-0.467,-1.1],[-0.233,-0.2],[-0.5,0.2],[-0.139,0.262],[0,0],[-5.967,-1.633],[-2.967,-1.033],[-0.4,0.167],[-0.205,0.676],[-0.513,0.443],[-3.133,3.367],[-2.333,2.7],[-1.267,1.333],[-2.767,2.6],[-0.103,0.235],[0.032,0.351],[0.533,0.467],[0,0],[0.733,0.867],[0.467,0.567],[1.033,1.033],[0,0],[0.8,0.633],[0.489,0.23],[0,0],[0.7,0.333],[0.9,0.067],[2.7,0.6]],"o":[[-3.367,-0.333],[-1.933,-0.2],[0,0],[-0.131,-0.021],[-0.044,-0.238],[-0.767,-1.1],[-1.033,-1.333],[-0.733,-0.667],[-0.233,-0.3],[0,0],[-1.733,-2.733],[-0.038,-0.05],[-0.025,-0.078],[-0.233,-0.533],[-3.933,0.8],[-1.6,0.7],[-0.3,0.1],[0,0],[-0.261,0.083],[-0.229,-0.071],[0,0],[0,0],[-0.867,2.133],[0,0],[-0.1,0.633],[-0.033,0.167],[-0.1,0.233],[0.093,0.309],[0.019,0.023],[0.867,0.633],[8.333,1.4],[2,0.467],[0.312,0.117],[0.025,0.157],[0,0],[0.167,0.8],[0.133,0.567],[0.133,0.5],[0.367,1.8],[0.367,0.667],[0.5,0.433],[0.261,-0.105],[0,0],[2.7,0.933],[5.667,1.567],[0.933,0.3],[0.462,-0.191],[0.421,-0.123],[3.767,-3.2],[0.967,-1.067],[2.067,-2.433],[1.333,-1.367],[0.264,-0.265],[0.332,-0.215],[-0.033,-0.333],[0,0],[-1.8,-1.467],[-0.933,-1.2],[-0.667,-0.833],[0,0],[-1.033,-1.1],[-0.611,-0.47],[0,0],[0.1,-0.633],[-0.3,-0.167],[-1.033,-0.067],[-2.067,-0.433]],"v":[[19.576,-17.592],[11.975,-18.392],[-0.674,-20.092],[-12.875,-21.892],[-13.275,-21.942],[-13.825,-23.092],[-15.625,-25.542],[-18.375,-28.692],[-19.775,-30.092],[-21.025,-32.242],[-21.975,-33.842],[-26.424,-40.042],[-26.525,-40.192],[-26.625,-40.442],[-28.575,-40.892],[-40.125,-37.192],[-42.775,-36.042],[-45.674,-35.142],[-53.475,-32.792],[-54.174,-32.542],[-54.825,-32.342],[-55.125,-31.892],[-57.025,-27.142],[-59.424,-19.642],[-59.674,-18.492],[-59.875,-17.392],[-60.125,-16.742],[-60.225,-16.092],[-59.525,-15.442],[-59.475,-15.392],[-54.825,-13.942],[-30.825,-9.242],[-26.375,-8.042],[-25.525,-7.842],[-25.424,-7.392],[-19.825,11.258],[-19.125,14.858],[-18.375,17.358],[-17.424,21.808],[-16.174,26.158],[-15.275,27.458],[-13.775,27.808],[-13.174,27.258],[2.425,33.008],[15.425,36.858],[28.375,40.758],[30.375,40.958],[31.375,39.658],[32.775,38.808],[43.125,28.958],[48.076,23.308],[53.076,17.658],[59.225,11.708],[59.775,10.958],[60.225,10.108],[59.375,8.908],[52.576,3.408],[48.775,-0.092],[46.675,-2.742],[44.125,-5.542],[39.775,-9.942],[37.025,-12.542],[35.375,-13.592],[35.375,-13.642],[34.475,-15.092],[32.675,-15.442],[27.076,-16.442]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[316.724,244.792],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.233,-0.3],[0.035,-0.033],[0.5,-0.267],[0.2,-0.467],[0,-0.567],[-0.067,-0.667],[0.267,-2.033],[0.3,-2.233],[-0.033,-2.433],[0,-0.533],[1.667,-6.833],[2.6,-8],[0,0],[0.967,-2.4],[1.867,-2.733],[0.192,-0.468],[0.27,-0.243],[-0.067,-1.433],[-0.033,-5.7],[0.033,-4.033],[-0.267,-2.533],[-0.333,-2.133],[0,0],[-0.207,-0.453],[-0.454,-0.636],[-2.733,-1.833],[0,0],[-1.767,-1.4],[-2.567,-2.733],[-0.867,-0.333],[-0.733,0.2],[-0.166,0.103],[-0.571,0],[-0.767,0],[0,0],[-0.671,0.052],[-0.615,-0.154],[-1.767,0.2],[-7.433,1.567],[-0.05,0.021],[-0.403,-0.316],[-0.933,0.1],[-0.4,0.433],[-0.2,0.433],[-0.167,0.167],[-0.2,0.3],[-0.233,0.6],[-0.533,0.733],[0,0],[-0.033,0.1],[-0.133,0.3],[-0.1,0.267],[-0.067,0.5],[0,0.567],[0.3,0.3],[0.127,0.082],[-0.012,0.037],[0.033,0.333],[0.2,0.533],[0.4,1.4],[0.1,0.6],[0.133,0.233],[0.1,0.233],[0.1,0.3],[0.433,0.567],[0,0],[0.3,0.133],[0.129,0.015],[0.011,0.031],[1.8,2.167],[0.3,0.4],[0.767,1.633],[0.933,2.3],[0,0],[0.433,2.133],[0.249,0.428],[1.123,3.478],[2.333,6.5],[4.667,16.433],[3.433,7.533],[0.4,0.3],[0.433,0]],"o":[[-0.031,0.033],[-0.4,-0.233],[-0.467,0.233],[-0.133,0.4],[0,0.333],[0.133,1.333],[-0.133,1.133],[-0.133,1.533],[0.067,3.467],[-0.033,5.6],[-1,4.1],[0,0],[-1.467,4.567],[-1.567,3.767],[-0.441,0.632],[-0.397,0.023],[-0.5,0.433],[0.467,5.7],[0,2.033],[0,3.5],[0.267,2.167],[0,0],[0.126,0.98],[0.046,0.497],[1.1,1.367],[0,0],[3.033,2.033],[2.567,2],[1.333,1.4],[0.7,0.267],[0.201,-0.064],[0.395,0.1],[0.367,0],[0,0],[0.596,0.019],[0.419,0.346],[0.867,0.233],[7.433,-0.833],[0.05,-0.012],[0.163,0.417],[0.667,0.567],[0.733,-0.067],[0.2,-0.2],[0.233,-0.467],[0.567,-0.5],[0.167,-0.2],[0.267,-0.467],[0,0],[0.733,-0.8],[0.167,-0.7],[0.333,-0.467],[0.167,-0.367],[0.067,-0.267],[-0.067,-0.4],[-0.106,-0.118],[0.021,-0.03],[0.167,-0.467],[-0.033,-0.267],[-0.267,-0.667],[-0.2,-0.6],[-0.067,-0.6],[-0.3,-0.4],[-0.167,-0.533],[-0.067,-0.233],[0,0],[-0.2,-0.333],[-0.104,-0.052],[0.011,-0.035],[-0.6,-1.7],[-2.633,-3.2],[-0.767,-1.167],[-0.3,-0.667],[0,0],[-1.833,-4.833],[-0.151,-0.705],[-1.411,-5.822],[-0.333,-1.033],[-1.467,-4.2],[-3.6,-12.733],[-0.5,-0.967],[-0.3,-0.233],[-0.433,0]],"v":[[-19.492,-92.625],[-19.592,-92.525],[-20.942,-92.475],[-21.942,-91.425],[-22.142,-89.975],[-22.042,-88.475],[-22.242,-83.425],[-22.892,-78.375],[-23.042,-72.425],[-22.942,-66.425],[-25.492,-47.775],[-30.892,-29.625],[-35.842,-14.575],[-39.492,-4.125],[-44.642,5.625],[-45.592,7.275],[-46.592,7.675],[-47.242,10.475],[-46.492,27.575],[-46.542,36.675],[-46.142,45.725],[-45.242,52.175],[-44.192,59.025],[-43.692,61.175],[-42.942,62.875],[-37.192,67.675],[-23.542,76.975],[-16.342,82.125],[-8.642,89.225],[-5.342,91.825],[-3.192,91.925],[-2.642,91.675],[-1.192,91.825],[0.508,91.825],[4.308,92.125],[6.208,92.075],[7.758,92.825],[11.708,92.875],[34.008,89.275],[34.158,89.225],[35.008,90.325],[37.408,91.025],[39.108,90.275],[39.708,89.325],[40.308,88.375],[41.458,87.175],[42.058,85.975],[43.258,84.175],[44.608,82.525],[45.758,81.175],[46.208,79.675],[46.858,78.575],[47.208,77.275],[47.309,76.025],[46.758,74.975],[46.408,74.675],[46.458,74.575],[46.658,73.375],[46.309,72.175],[45.309,69.075],[44.858,67.275],[44.559,66.025],[43.958,65.075],[43.558,63.825],[42.808,62.625],[41.158,60.575],[40.408,59.875],[40.058,59.775],[40.058,59.675],[36.458,53.875],[32.058,48.475],[29.758,44.275],[27.908,39.825],[15.508,7.925],[12.108,-2.525],[11.508,-4.225],[7.708,-18.175],[3.708,-29.475],[-5.492,-60.425],[-16.042,-90.825],[-17.392,-92.725],[-18.492,-93.075]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[173.992,293.125],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":10,"op":11,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"10 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[259.138,276.731,0]},"a":{"k":[259.138,276.731,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.067,0],[0,0.867],[2.4,0.433],[0,0],[11.433,-0.067],[0.333,-1.033],[-0.767,-0.6],[-0.233,-5.833],[-0.367,-5.167],[0,0],[-0.8,-4.467],[-1.233,-3.967],[-1.2,-0.2],[-0.567,0.4],[-0.167,0.667],[-0.033,0.233],[-0.1,0.1],[0,0],[0.533,0.733]],"o":[[0.7,-0.4],[-0.033,-1.333],[0,0],[-13.333,-2.2],[-2.033,0.067],[-0.2,0.867],[-0.433,5.133],[0.1,2.567],[0,0],[0.5,7.767],[0.667,3.733],[0.633,2.067],[0.6,0.033],[0.533,-0.467],[0.067,-0.2],[0.1,-0.133],[0,0],[1.167,-1.5],[0,-0.067]],"v":[[48.425,-42.658],[49.475,-44.558],[45.825,-47.208],[-8.575,-57.308],[-45.725,-60.508],[-49.275,-58.858],[-48.425,-56.658],[-48.725,-40.208],[-48.025,-28.608],[-43.725,27.242],[-41.775,45.592],[-38.925,57.142],[-36.175,60.542],[-34.425,59.992],[-33.375,58.292],[-33.225,57.642],[-32.925,57.292],[47.575,-39.208],[48.525,-42.558]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[337.375,391.458],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.4,1.9],[7.9,1.9],[2.733,0.133],[3.1,-0.267],[0.5,-0.033],[4.233,0.233],[2.4,0.133],[0.267,-0.1],[0.1,-0.233],[0,0],[0.061,-0.061],[0.667,-1.933],[0.7,-2.233],[0.667,-1.433],[0.267,-0.767],[0.3,-1.3],[0.333,-1.467],[1.033,-2.533],[0.667,-1.6],[0.133,-1.067],[-0.333,-0.233],[-0.042,-0.028],[-0.343,-0.272],[-1.767,-0.9],[-1.967,-0.633],[-3.467,-0.567],[-4.367,-0.2],[-4.967,-0.167],[-5.223,-2.748],[-0.275,-0.15],[-0.8,-0.267],[-0.533,-0.367],[-0.4,0.033],[-0.733,0.733],[-1.2,1.5],[-0.9,2.067],[0.567,5.233],[2.033,4.933]],"o":[[-3.6,-4.767],[-2.767,-0.733],[-2.033,-0.1],[-4.633,0.367],[-2.933,0.133],[-4.8,-0.3],[-0.6,0],[-0.2,0.1],[0,0],[-0.039,0.072],[-0.933,1.067],[-0.4,1.1],[-0.267,0.733],[-0.7,1.4],[-0.3,0.833],[-0.167,0.733],[-0.667,2.867],[-0.3,0.8],[-0.567,1.433],[-0.067,0.733],[0.058,0.039],[0.157,0.228],[2.8,2.167],[1.333,0.667],[4.2,1.467],[3,0.533],[2.5,0.133],[8.844,0.485],[0.158,0.183],[0.367,0.2],[0.3,0.167],[0.467,0.3],[0.533,0],[2.167,-2.167],[1.733,-2.133],[1.833,-4.067],[-0.433,-4.2],[-1.267,-3.233]],"v":[[34.9,-18.442],[17.65,-28.442],[9.4,-29.742],[1.7,-29.492],[-6,-28.891],[-16.75,-29.041],[-27.55,-29.692],[-28.85,-29.541],[-29.3,-29.041],[-29.35,-29.041],[-29.5,-28.842],[-31.9,-24.342],[-33.55,-19.342],[-34.95,-16.092],[-36.4,-12.842],[-37.3,-9.641],[-38.05,-6.342],[-40.6,1.758],[-42.05,5.359],[-43.1,9.109],[-42.7,10.558],[-42.55,10.658],[-41.8,11.408],[-34.95,16.008],[-30,17.959],[-18.5,21.008],[-7.45,22.109],[3.75,22.558],[24.85,27.408],[25.5,27.908],[27.25,28.609],[28.5,29.408],[29.8,29.808],[31.7,28.709],[36.75,23.209],[40.7,16.908],[42.6,2.959],[38.9,-10.742]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[314.5,131.242],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.267,0.6],[3.367,0.633],[0,0],[0.533,0.367],[0.467,0.733],[3.888,4.478],[0.113,0.272],[0.333,0.2],[0.337,0.036],[0.261,0.295],[0.016,0.015],[0.72,-0.137],[0.004,-0.043],[0.498,-0.167],[2.967,-0.867],[1.7,-0.5],[2.033,-0.933],[0.267,-0.567],[-0.165,-0.488],[0.101,-0.224],[0.167,-0.3],[0.533,-0.967],[0,0],[0,0],[0,0],[0.4,-0.533],[0.9,-1.533],[0.067,-0.333],[-0.251,-0.377],[0.103,-0.127],[-0.067,-0.433],[-1.733,-0.133],[-8.1,-0.333],[-4.033,-0.733],[-0.433,-0.4],[-0.3,-1],[-0.8,-2.9],[-0.6,-1.333],[-0.633,-1.233],[-0.2,-0.8],[-0.167,-1.367],[-0.2,-0.667],[-0.633,-1.3],[-0.167,-0.7],[-0.133,-1],[-0.333,-0.5],[-1.033,-0.4],[-1.3,-0.2],[-8.067,-2.567],[-3.8,-0.8],[-0.9,0.367],[-1.167,1.733],[-3,3.1],[-1.267,1.733],[-1.3,1.933],[-1.167,0.833],[-0.267,0.3],[0.1,0.6],[0.433,0.4],[0.667,0.433],[2.6,2.667],[1.467,1.533],[2.033,1.8]],"o":[[-1.3,-0.633],[0,0],[-1.3,-0.2],[-0.533,-0.333],[-3.912,-5.089],[0.047,-0.261],[-0.133,-0.367],[-0.296,-0.197],[-0.239,-0.305],[-0.017,-0.019],[-0.713,0.13],[0.004,0.057],[-0.269,0.067],[-3.067,1.133],[-3.433,0.9],[-3,0.833],[-1,0.467],[-0.199,0.445],[-0.099,0.176],[-0.567,1.267],[-0.267,0.5],[0,0],[0,0],[0,0],[-0.067,0.167],[-0.433,0.567],[-0.367,0.667],[-0.118,0.59],[-0.097,0.107],[-0.3,0.4],[0.2,1.033],[2.933,0.333],[6.933,0.267],[1.1,0.2],[0.533,0.433],[0.3,0.867],[0.633,2.367],[0.3,0.633],[0.533,1.1],[0.167,0.633],[0.167,1.3],[0.167,0.6],[0.567,1.2],[0.1,0.467],[0.133,0.833],[0.5,0.733],[0.7,0.233],[4.7,0.733],[8.933,2.833],[1.9,0.333],[0.933,-0.367],[1.267,-1.767],[3.033,-3.167],[0.7,-0.9],[1.2,-1.6],[0.833,-0.6],[0.567,-0.567],[-0.033,-0.467],[-0.233,-0.233],[-1.6,-1],[-2.933,-3.167],[-2.6,-2.7],[-1.967,-1.7]],"v":[[34.484,-13.492],[27.484,-15.391],[-5.216,-20.992],[-7.966,-21.841],[-9.466,-23.441],[-21.167,-37.791],[-21.266,-38.591],[-21.966,-39.441],[-22.917,-39.791],[-23.667,-40.691],[-23.716,-40.742],[-25.866,-40.341],[-25.866,-40.191],[-27.016,-39.841],[-36.066,-36.841],[-43.766,-34.742],[-51.316,-32.091],[-53.216,-30.541],[-53.266,-29.141],[-53.566,-28.541],[-54.667,-26.191],[-55.866,-23.992],[-56.366,-22.992],[-56.966,-22.091],[-57.466,-21.091],[-58.166,-20.041],[-60.166,-16.891],[-60.816,-15.391],[-60.616,-13.941],[-60.916,-13.591],[-61.266,-12.341],[-58.366,-10.591],[-41.816,-9.591],[-25.366,-8.091],[-23.066,-7.191],[-21.816,-5.041],[-20.167,0.609],[-18.316,6.159],[-16.917,8.959],[-15.816,11.809],[-15.316,14.809],[-14.766,17.758],[-13.566,20.609],[-12.466,23.459],[-12.116,25.659],[-11.417,27.659],[-9.116,29.359],[-6.116,30.008],[13.034,34.959],[32.134,40.409],[36.333,40.359],[39.484,37.209],[45.884,29.909],[52.333,22.559],[55.333,18.309],[58.884,14.659],[60.534,13.309],[61.234,11.559],[60.534,10.258],[59.184,9.258],[52.884,3.758],[46.284,-3.291],[39.333,-10.041]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[312.366,242.692],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.464,0.273],[2.476,-1.862],[4.75,-3.422],[-0.033,-0.017],[0.012,-0.135],[0,0],[-0.198,-0.422],[-0.085,-0.358],[0,0],[-1.433,-8.733],[-0.033,-11.767],[0.333,-6.167],[0.4,-6.933],[-0.267,-0.567],[-0.055,-0.114],[-1.121,-1.175],[-7.867,-5.767],[-1.3,-0.867],[-6.667,-2.767],[-0.633,0.133],[-0.205,0.167],[-0.506,-0.043],[-2.2,0.667],[-2.767,1.133],[-1.633,0.567],[-2.4,0.733],[0,0],[-0.307,0.135],[-0.175,-0.025],[-0.567,0.2],[-0.967,0.4],[-0.633,0.167],[0,0],[-0.3,0.267],[-0.113,0.285],[0.557,2.063],[1.493,4.857],[0.942,1.25],[1.232,1.176],[0.933,0.8],[2.8,2.233],[1.333,1.167],[4.7,4.5],[0,0],[0.55,0.679],[0.339,0.307],[1.633,1.8],[1.815,2.197],[0.171,0.109],[0.333,2.733],[0,0],[1.767,8.633],[0.167,2.033],[0.098,1.964],[0.366,2.344],[0.029,0.033],[0.867,1.167],[2.667,5.1],[1.967,2.133]],"o":[[-1.991,1.738],[-2.45,1.845],[0.067,0.05],[0.012,0.131],[0,0],[-0.065,0.578],[0.015,0.342],[0,0],[3.767,17.267],[2.367,14.5],[0,4.233],[-0.2,3.433],[-0.067,1.2],[0.045,0.119],[-0.155,0.825],[4.8,4.867],[2.533,1.867],[5.933,4],[1.133,0.467],[0.295,-0.066],[0.394,0.124],[1.767,0.1],[1.033,-0.333],[2.1,-0.9],[1.9,-0.7],[0,0],[0.393,-0.131],[0.158,0.041],[0.633,0.067],[0.267,-0.067],[0.8,-0.4],[0,0],[0.667,-0.2],[0.221,-0.181],[-0.943,-3.804],[-1.241,-4.743],[-0.691,-0.95],[-1.235,-1.157],[-4.267,-4.033],[-1.433,-1.233],[-2.933,-2.333],[-2.467,-2.1],[0,0],[-0.817,-0.787],[-0.361,-0.327],[-1.167,-1.1],[-3.119,-3.436],[-0.163,-0.058],[-1.233,-0.867],[0,0],[-1.1,-8.267],[-1,-4.9],[-0.135,-1.169],[-0.667,-2.689],[-0.005,-0.034],[-1.9,-2.2],[-1.167,-1.633],[-2.267,-4.333],[-0.503,-0.527]],"v":[[-39.143,-98.517],[-45.843,-93.116],[-56.643,-85.216],[-56.493,-85.116],[-56.493,-84.716],[-56.743,-83.966],[-56.543,-82.466],[-56.393,-81.417],[-48.993,-47.866],[-41.193,-8.866],[-37.593,30.534],[-38.093,46.133],[-38.993,61.684],[-38.693,64.333],[-38.543,64.684],[-37.093,67.684],[-18.093,83.633],[-12.343,87.733],[6.557,97.883],[9.207,98.383],[9.957,98.033],[11.307,98.283],[17.257,97.434],[22.957,95.233],[28.557,93.033],[35.007,90.883],[42.757,88.434],[43.807,88.033],[44.307,88.133],[46.107,87.934],[47.957,87.233],[50.107,86.383],[54.857,85.133],[56.307,84.434],[56.807,83.733],[54.557,74.934],[50.457,60.533],[48.007,57.233],[44.307,53.733],[36.507,46.483],[30.158,41.284],[23.757,36.034],[13.007,26.134],[7.057,20.434],[5.007,18.233],[3.957,17.284],[-0.243,12.934],[-7.643,4.483],[-8.143,4.234],[-10.493,-1.167],[-13.443,-24.366],[-17.743,-49.716],[-19.493,-60.116],[-19.843,-64.816],[-21.393,-72.366],[-21.443,-72.466],[-25.593,-77.517],[-31.343,-87.616],[-37.693,-97.316]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[188.193,286.566],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":11,"op":12,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"11 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[251.725,276.37,0]},"a":{"k":[251.725,276.37,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.067,0],[0,0.867],[2.4,0.433],[0,0],[11.433,-0.067],[0.333,-1.033],[-0.767,-0.6],[-0.233,-5.833],[-0.367,-5.167],[0,0],[-0.8,-4.467],[-1.233,-3.967],[-1.2,-0.2],[-0.567,0.4],[-0.167,0.667],[-0.033,0.233],[-0.1,0.1],[0,0],[0.533,0.733]],"o":[[0.7,-0.4],[-0.033,-1.333],[0,0],[-13.333,-2.2],[-2.033,0.067],[-0.2,0.867],[-0.433,5.133],[0.1,2.567],[0,0],[0.5,7.767],[0.667,3.733],[0.633,2.067],[0.6,0.033],[0.533,-0.467],[0.067,-0.2],[0.1,-0.133],[0,0],[1.167,-1.5],[0,-0.067]],"v":[[48.425,-42.658],[49.475,-44.558],[45.825,-47.208],[-8.575,-57.308],[-45.725,-60.508],[-49.275,-58.858],[-48.425,-56.658],[-48.725,-40.208],[-48.025,-28.608],[-43.725,27.242],[-41.775,45.592],[-38.925,57.142],[-36.175,60.542],[-34.425,59.992],[-33.375,58.292],[-33.225,57.642],[-32.925,57.292],[47.575,-39.208],[48.525,-42.558]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[337.375,391.458],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.3,0.6],[1.433,2.267],[0,0],[1.967,1.967],[4.633,2.933],[0,0],[2.233,0.533],[3.3,0.233],[9.6,-1.333],[4.833,0.3],[5.333,2.1],[0.333,-0.233],[-0.267,-0.567],[0,0],[0,-0.033],[-0.067,-2.5],[-0.233,-4],[0,-4.433],[-0.567,-6.267],[-0.267,-1.267],[-0.867,0],[-0.133,0.033],[0,0],[-2.2,-0.767],[-8.733,0.4],[-2,0.4],[-2.233,0.733],[-2.533,0.9],[-5.133,1.533],[0,0],[-3.933,0.567],[-4.8,0.2],[-1.967,-0.3],[-0.467,0.1],[1.867,4.733]],"o":[[-0.5,-1.033],[0,0],[-2.733,-4.367],[-1.867,-1.867],[0,0],[-2.133,-0.8],[-2.733,-0.633],[-4.8,-0.267],[-9.6,1.333],[-5.733,-0.367],[-0.7,-0.267],[-0.433,0.267],[0,0],[-0.033,0],[-0.4,1.867],[0,0.367],[0.133,2.233],[0,12.567],[0.267,2.667],[0.3,1.467],[0.133,0],[0,0],[1.233,1.067],[6.7,2.367],[2.8,-0.1],[1.667,-0.333],[1.267,-0.433],[2.5,-0.9],[0,0],[6.833,-2.133],[2.367,-0.367],[3.333,-0.167],[0.433,0.3],[-1.133,-3.333],[-1.033,-2.467]],"v":[[48.309,0.916],[45.408,-4.033],[39.858,-12.734],[32.809,-22.234],[23.059,-29.433],[23.008,-29.433],[16.458,-31.433],[7.408,-32.734],[-14.191,-31.133],[-35.842,-29.584],[-52.441,-33.283],[-53.992,-33.334],[-54.242,-32.084],[-54.191,-32.033],[-54.242,-31.984],[-54.742,-25.433],[-54.392,-18.883],[-54.191,-8.883],[-53.342,19.367],[-52.542,25.266],[-50.792,27.467],[-50.392,27.416],[-50.342,27.467],[-45.191,30.217],[-22.042,33.166],[-14.842,32.416],[-8.992,30.817],[-3.292,28.817],[8.158,25.166],[18.608,22.016],[34.758,17.967],[45.508,17.117],[53.458,17.317],[54.809,17.617],[50.309,5.516]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[322.091,134.234],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.267,0.6],[3.367,0.633],[0,0],[0.533,0.367],[0.467,0.733],[3.888,4.478],[0.113,0.272],[0.333,0.2],[0.337,0.036],[0.261,0.295],[0.016,0.015],[0.72,-0.137],[0.004,-0.043],[0.498,-0.167],[2.967,-0.867],[1.7,-0.5],[2.033,-0.933],[0.267,-0.567],[-0.165,-0.488],[0.101,-0.224],[0.167,-0.3],[0.533,-0.967],[0,0],[0,0],[0,0],[0.4,-0.533],[0.9,-1.533],[0.067,-0.333],[-0.251,-0.377],[0.103,-0.127],[-0.067,-0.433],[-1.733,-0.133],[-8.1,-0.333],[-4.033,-0.733],[-0.433,-0.4],[-0.3,-1],[-0.8,-2.9],[-0.6,-1.333],[-0.633,-1.233],[-0.2,-0.8],[-0.167,-1.367],[-0.2,-0.667],[-0.633,-1.3],[-0.167,-0.7],[-0.133,-1],[-0.333,-0.5],[-1.033,-0.4],[-1.3,-0.2],[-8.067,-2.567],[-3.8,-0.8],[-0.9,0.367],[-1.167,1.733],[-3,3.1],[-1.267,1.733],[-1.3,1.933],[-1.167,0.833],[-0.267,0.3],[0.1,0.6],[0.433,0.4],[0.667,0.433],[2.6,2.667],[1.467,1.533],[2.033,1.8]],"o":[[-1.3,-0.633],[0,0],[-1.3,-0.2],[-0.533,-0.333],[-3.912,-5.089],[0.047,-0.261],[-0.133,-0.367],[-0.296,-0.197],[-0.239,-0.305],[-0.017,-0.019],[-0.713,0.13],[0.004,0.057],[-0.269,0.067],[-3.067,1.133],[-3.433,0.9],[-3,0.833],[-1,0.467],[-0.199,0.445],[-0.099,0.176],[-0.567,1.267],[-0.267,0.5],[0,0],[0,0],[0,0],[-0.067,0.167],[-0.433,0.567],[-0.367,0.667],[-0.118,0.59],[-0.097,0.107],[-0.3,0.4],[0.2,1.033],[2.933,0.333],[6.933,0.267],[1.1,0.2],[0.533,0.433],[0.3,0.867],[0.633,2.367],[0.3,0.633],[0.533,1.1],[0.167,0.633],[0.167,1.3],[0.167,0.6],[0.567,1.2],[0.1,0.467],[0.133,0.833],[0.5,0.733],[0.7,0.233],[4.7,0.733],[8.933,2.833],[1.9,0.333],[0.933,-0.367],[1.267,-1.767],[3.033,-3.167],[0.7,-0.9],[1.2,-1.6],[0.833,-0.6],[0.567,-0.567],[-0.033,-0.467],[-0.233,-0.233],[-1.6,-1],[-2.933,-3.167],[-2.6,-2.7],[-1.967,-1.7]],"v":[[34.484,-13.492],[27.484,-15.391],[-5.216,-20.992],[-7.966,-21.841],[-9.466,-23.441],[-21.167,-37.791],[-21.266,-38.591],[-21.966,-39.441],[-22.917,-39.791],[-23.667,-40.691],[-23.716,-40.742],[-25.866,-40.341],[-25.866,-40.191],[-27.016,-39.841],[-36.066,-36.841],[-43.766,-34.742],[-51.316,-32.091],[-53.216,-30.541],[-53.266,-29.141],[-53.566,-28.541],[-54.667,-26.191],[-55.866,-23.992],[-56.366,-22.992],[-56.966,-22.091],[-57.466,-21.091],[-58.166,-20.041],[-60.166,-16.891],[-60.816,-15.391],[-60.616,-13.941],[-60.916,-13.591],[-61.266,-12.341],[-58.366,-10.591],[-41.816,-9.591],[-25.366,-8.091],[-23.066,-7.191],[-21.816,-5.041],[-20.167,0.609],[-18.316,6.159],[-16.917,8.959],[-15.816,11.809],[-15.316,14.809],[-14.766,17.758],[-13.566,20.609],[-12.466,23.459],[-12.116,25.659],[-11.417,27.659],[-9.116,29.359],[-6.116,30.008],[13.034,34.959],[32.134,40.409],[36.333,40.359],[39.484,37.209],[45.884,29.909],[52.333,22.559],[55.333,18.309],[58.884,14.659],[60.534,13.309],[61.234,11.559],[60.534,10.258],[59.184,9.258],[52.884,3.758],[46.284,-3.291],[39.333,-10.041]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[312.366,242.692],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.533,-0.233],[-0.3,-0.1],[-2.2,-6.167],[-2.567,-7.867],[-7.467,-17.467],[-13.333,-30.333],[-0.8,-2.433],[-0.667,-2.667],[-0.367,-1.233],[-1.567,-2.4],[-3.467,-3.2],[-8.567,-6.8],[-0.033,-0.167],[-1.2,-0.267],[-2.8,0.867],[-2.167,0.7],[-0.933,0.2],[-3.067,0.333],[-4.1,0.767],[0,0],[-0.5,0.267],[-0.1,-0.067],[-0.467,0.133],[-0.2,1.7],[0,0],[0,1.267],[-0.167,0],[-0.3,0.3],[0.3,0.867],[0.667,0.8],[4.4,3.4],[0,0],[6.933,4.767],[1.4,0.567],[0.4,0.4],[1.967,2],[1.033,0.9],[0.967,0.833],[0.9,1],[0.033,0.1],[0,0],[0.533,2.333],[0.667,1.8],[2.233,3.967],[0,0.033],[0.167,0.4],[0.733,1.067],[0.467,0.833],[0,0],[0.167,0.6],[0.267,0.167],[0.133,-0.033],[0,0],[0.067,0.133],[0.133,0.233],[0.4,-0.267],[1.567,-0.533],[3.267,-0.8],[0.333,-0.1],[2.967,-1.3]],"o":[[0.233,0.2],[2.2,4.5],[1.367,3.9],[4.533,13.5],[0.067,0.133],[1.667,3.767],[0.433,1.4],[0.7,2.833],[1.133,3.5],[1.433,2.2],[7.233,6.8],[-0.033,0.133],[0.033,0.733],[1.9,0.4],[0.1,-0.033],[1.367,-0.467],[0.567,-0.133],[1.267,-0.133],[0,0],[1.1,-0.233],[0.067,0.033],[0.5,0.3],[0.867,-0.3],[0,0],[0.233,-2.267],[0.167,0.033],[0.533,-0.033],[0.567,-0.567],[-0.167,-0.5],[-1.867,-2.067],[0,0],[-12.2,-9.433],[-2,-1.4],[-0.5,-0.433],[-0.567,-0.567],[-1.533,-1.6],[-1.967,-1.633],[-1.433,-1.2],[-0.033,-0.1],[0,0],[-1.8,-6.633],[-1.1,-4.8],[-0.8,-2.133],[-0.033,0],[-0.233,-0.833],[-0.233,-0.633],[-0.9,-1.633],[0,0],[-0.267,-0.667],[-0.133,-0.467],[-0.133,-0.1],[0,0],[-0.533,-0.7],[-0.2,-0.433],[-0.3,0.267],[-0.767,0.5],[-6.333,2.2],[-4.2,1.033],[-1.6,0.5],[-0.6,0.267]],"v":[[-70.425,-87.725],[-69.625,-87.275],[-63.025,-71.275],[-57.125,-53.625],[-39.125,-7.175],[-19.025,38.525],[-15.325,47.825],[-13.675,53.925],[-12.075,60.025],[-8.025,68.875],[-0.675,76.975],[23.025,97.375],[23.025,97.825],[24.875,99.325],[31.925,98.625],[35.325,97.525],[38.775,96.525],[44.225,95.825],[52.275,94.475],[59.425,93.075],[61.825,92.325],[62.075,92.475],[63.525,92.725],[65.125,89.725],[67.625,67.775],[67.975,62.475],[68.475,62.525],[69.725,62.025],[70.125,59.875],[68.875,57.925],[59.475,49.725],[49.625,42.125],[20.925,20.825],[15.825,17.875],[14.475,16.625],[10.675,12.775],[6.825,9.025],[2.425,5.325],[-1.075,2.025],[-1.175,1.725],[-14.625,-47.525],[-18.125,-60.975],[-20.775,-70.875],[-25.325,-80.025],[-25.375,-80.075],[-25.975,-81.925],[-27.425,-84.475],[-29.475,-88.175],[-32.525,-93.525],[-33.175,-95.425],[-33.775,-96.375],[-34.175,-96.475],[-34.725,-97.475],[-35.625,-98.725],[-36.125,-99.725],[-37.175,-98.925],[-40.675,-97.375],[-55.075,-92.875],[-61.875,-91.175],[-68.725,-88.475]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[187.025,284.475],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":12,"op":13,"st":12.4583333333333,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"12 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[246.029,281.206,0]},"a":{"k":[246.029,281.206,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.333,0.433],[3.933,0.4],[7.633,0.467],[2.233,0.267],[2.267,0.333],[4.533,0.1],[3.233,0.3],[0,0],[0.5,-0.533],[-0.033,-0.5],[-0.2,-0.333],[0,-0.1],[-0.733,-2],[-0.867,-2.233],[0,-3.067],[0.167,-3.533],[-0.733,-6.333],[0,0],[-0.5,-3.567],[-1.033,-4.733],[-1.067,-0.2],[0,0],[-0.067,-0.2],[-0.233,-0.2],[-0.433,-0.1],[-0.4,0.2],[-0.133,0.433],[-0.033,0.233],[-0.233,0.033],[-0.5,0.133],[-3.7,4.633],[-0.267,0.5],[-4.633,4.2],[-0.5,0.4],[-10.7,14.033],[-0.433,0.5],[0,0],[-1.4,2.633],[0.567,0.567],[0.433,-0.1],[0,0]],"o":[[-1.9,-0.6],[-15.267,-1.6],[-6.133,-0.367],[-4.567,-0.7],[-4.467,-0.667],[-2.167,-0.267],[0,0],[-1.267,-0.133],[-0.3,0.3],[0,0.4],[-0.033,0.1],[-0.1,1.433],[0.433,1.1],[0.667,2.133],[0.033,1.767],[-0.033,3.267],[0,0],[0.833,7.233],[0.833,6.033],[0.467,2.033],[0,0],[-0.033,0.4],[0.1,0.2],[0.233,0.233],[0.433,0.067],[0.4,-0.233],[0.033,-0.067],[0.2,0],[0.533,-0.067],[3.467,-4.3],[0.633,-1.367],[2.4,-4.467],[0.533,-0.467],[6.133,-7.967],[0.533,-0.7],[0,0],[3.2,-5.067],[0.7,-1.3],[-0.333,-0.333],[0,0],[-0.033,-0.8]],"v":[[47.933,-53.867],[39.183,-55.367],[4.833,-58.467],[-7.717,-59.417],[-17.967,-60.967],[-31.467,-62.117],[-39.567,-62.967],[-48.617,-63.767],[-51.267,-63.167],[-51.667,-61.967],[-51.367,-60.867],[-51.417,-60.567],[-50.467,-55.417],[-48.517,-50.417],[-47.517,-42.617],[-47.717,-34.667],[-46.667,-20.267],[-41.267,25.533],[-39.267,41.733],[-36.467,57.883],[-34.167,61.233],[-34.167,61.833],[-34.117,62.733],[-33.617,63.333],[-32.617,63.833],[-31.367,63.633],[-30.567,62.633],[-30.467,62.183],[-29.817,62.133],[-28.267,61.833],[-17.517,48.433],[-16.167,45.633],[-5.617,32.633],[-4.067,31.333],[21.183,-1.667],[22.633,-3.467],[44.033,-37.217],[50.933,-48.767],[51.133,-51.567],[49.983,-51.917],[49.983,-52.017]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[337.767,397.817],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.3,0.6],[1.433,2.267],[0,0],[1.967,1.967],[4.633,2.933],[0,0],[2.233,0.533],[3.3,0.233],[9.6,-1.333],[4.833,0.3],[5.333,2.1],[0.333,-0.233],[-0.267,-0.567],[0,0],[0,-0.033],[-0.067,-2.5],[-0.233,-4],[0,-4.433],[-0.567,-6.267],[-0.267,-1.267],[-0.867,0],[-0.133,0.033],[0,0],[-2.2,-0.767],[-8.733,0.4],[-2,0.4],[-2.233,0.733],[-2.533,0.9],[-5.133,1.533],[0,0],[-3.933,0.567],[-4.8,0.2],[-1.967,-0.3],[-0.467,0.1],[1.867,4.733]],"o":[[-0.5,-1.033],[0,0],[-2.733,-4.367],[-1.867,-1.867],[0,0],[-2.133,-0.8],[-2.733,-0.633],[-4.8,-0.267],[-9.6,1.333],[-5.733,-0.367],[-0.7,-0.267],[-0.433,0.267],[0,0],[-0.033,0],[-0.4,1.867],[0,0.367],[0.133,2.233],[0,12.567],[0.267,2.667],[0.3,1.467],[0.133,0],[0,0],[1.233,1.067],[6.7,2.367],[2.8,-0.1],[1.667,-0.333],[1.267,-0.433],[2.5,-0.9],[0,0],[6.833,-2.133],[2.367,-0.367],[3.333,-0.167],[0.433,0.3],[-1.133,-3.333],[-1.033,-2.467]],"v":[[48.309,0.916],[45.408,-4.033],[39.858,-12.734],[32.809,-22.234],[23.059,-29.433],[23.008,-29.433],[16.458,-31.433],[7.408,-32.734],[-14.191,-31.133],[-35.842,-29.584],[-52.441,-33.283],[-53.992,-33.334],[-54.242,-32.084],[-54.191,-32.033],[-54.242,-31.984],[-54.742,-25.433],[-54.392,-18.883],[-54.191,-8.883],[-53.342,19.367],[-52.542,25.266],[-50.792,27.467],[-50.392,27.416],[-50.342,27.467],[-45.191,30.217],[-22.042,33.166],[-14.842,32.416],[-8.992,30.817],[-3.292,28.817],[8.158,25.166],[18.608,22.016],[34.758,17.967],[45.508,17.117],[53.458,17.317],[54.809,17.617],[50.309,5.516]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[322.091,134.234],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.267,0.6],[3.367,0.633],[0,0],[0.533,0.367],[0.467,0.733],[3.888,4.478],[0.113,0.272],[0.333,0.2],[0.337,0.036],[0.261,0.295],[0.016,0.015],[0.72,-0.137],[0.004,-0.043],[0.498,-0.167],[2.967,-0.867],[1.7,-0.5],[2.033,-0.933],[0.267,-0.567],[-0.165,-0.488],[0.101,-0.224],[0.167,-0.3],[0.533,-0.967],[0,0],[0,0],[0,0],[0.4,-0.533],[0.9,-1.533],[0.067,-0.333],[-0.251,-0.377],[0.103,-0.127],[-0.067,-0.433],[-1.733,-0.133],[-8.1,-0.333],[-4.033,-0.733],[-0.433,-0.4],[-0.3,-1],[-0.8,-2.9],[-0.6,-1.333],[-0.633,-1.233],[-0.2,-0.8],[-0.167,-1.367],[-0.2,-0.667],[-0.633,-1.3],[-0.167,-0.7],[-0.133,-1],[-0.333,-0.5],[-1.033,-0.4],[-1.3,-0.2],[-8.067,-2.567],[-3.8,-0.8],[-0.9,0.367],[-1.167,1.733],[-3,3.1],[-1.267,1.733],[-1.3,1.933],[-1.167,0.833],[-0.267,0.3],[0.1,0.6],[0.433,0.4],[0.667,0.433],[2.6,2.667],[1.467,1.533],[2.033,1.8]],"o":[[-1.3,-0.633],[0,0],[-1.3,-0.2],[-0.533,-0.333],[-3.912,-5.089],[0.047,-0.261],[-0.133,-0.367],[-0.296,-0.197],[-0.239,-0.305],[-0.017,-0.019],[-0.713,0.13],[0.004,0.057],[-0.269,0.067],[-3.067,1.133],[-3.433,0.9],[-3,0.833],[-1,0.467],[-0.199,0.445],[-0.099,0.176],[-0.567,1.267],[-0.267,0.5],[0,0],[0,0],[0,0],[-0.067,0.167],[-0.433,0.567],[-0.367,0.667],[-0.118,0.59],[-0.097,0.107],[-0.3,0.4],[0.2,1.033],[2.933,0.333],[6.933,0.267],[1.1,0.2],[0.533,0.433],[0.3,0.867],[0.633,2.367],[0.3,0.633],[0.533,1.1],[0.167,0.633],[0.167,1.3],[0.167,0.6],[0.567,1.2],[0.1,0.467],[0.133,0.833],[0.5,0.733],[0.7,0.233],[4.7,0.733],[8.933,2.833],[1.9,0.333],[0.933,-0.367],[1.267,-1.767],[3.033,-3.167],[0.7,-0.9],[1.2,-1.6],[0.833,-0.6],[0.567,-0.567],[-0.033,-0.467],[-0.233,-0.233],[-1.6,-1],[-2.933,-3.167],[-2.6,-2.7],[-1.967,-1.7]],"v":[[34.484,-13.492],[27.484,-15.391],[-5.216,-20.992],[-7.966,-21.841],[-9.466,-23.441],[-21.167,-37.791],[-21.266,-38.591],[-21.966,-39.441],[-22.917,-39.791],[-23.667,-40.691],[-23.716,-40.742],[-25.866,-40.341],[-25.866,-40.191],[-27.016,-39.841],[-36.066,-36.841],[-43.766,-34.742],[-51.316,-32.091],[-53.216,-30.541],[-53.266,-29.141],[-53.566,-28.541],[-54.667,-26.191],[-55.866,-23.992],[-56.366,-22.992],[-56.966,-22.091],[-57.466,-21.091],[-58.166,-20.041],[-60.166,-16.891],[-60.816,-15.391],[-60.616,-13.941],[-60.916,-13.591],[-61.266,-12.341],[-58.366,-10.591],[-41.816,-9.591],[-25.366,-8.091],[-23.066,-7.191],[-21.816,-5.041],[-20.167,0.609],[-18.316,6.159],[-16.917,8.959],[-15.816,11.809],[-15.316,14.809],[-14.766,17.758],[-13.566,20.609],[-12.466,23.459],[-12.116,25.659],[-11.417,27.659],[-9.116,29.359],[-6.116,30.008],[13.034,34.959],[32.134,40.409],[36.333,40.359],[39.484,37.209],[45.884,29.909],[52.333,22.559],[55.333,18.309],[58.884,14.659],[60.534,13.309],[61.234,11.559],[60.534,10.258],[59.184,9.258],[52.884,3.758],[46.284,-3.291],[39.333,-10.041]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[312.366,242.692],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.233,-0.333],[-0.367,-0.167],[-0.681,0.017],[-0.133,-0.242],[0,0],[-3.7,-5.833],[-0.6,-1],[-3.1,-6.2],[-1.633,-2.833],[-2.8,-4],[-3.567,-4.867],[0,0],[-0.575,0.155],[-0.495,-0.275],[-0.667,-0.067],[-1.2,0.067],[-1.333,0.267],[-4.333,0.467],[-4.933,0.467],[-0.5,0.2],[-0.233,0.7],[0.067,0.312],[-0.582,2.755],[-0.2,1.867],[0.067,3.8],[-0.4,1.767],[-0.592,1.641],[-0.125,-0.084],[-0.088,0.262],[-0.2,0.5],[0.381,0.406],[0,0],[0,0],[0,0],[0.825,0.668],[4.567,3.3],[13.1,12.367],[0.933,0.767],[1.627,1.027],[0.058,0.211],[0,0],[3.467,9.667],[1.3,2.733],[0.359,0.425],[1.133,0],[2,-0.5],[2.4,-0.8],[7.633,-2.367],[0,0],[0.167,-0.733]],"o":[[0.2,0.333],[0.353,0.151],[0.1,0.258],[0,0],[4.867,8.867],[2.467,3.733],[2,3.233],[3.367,6.633],[1.933,3.333],[1.567,2.2],[0,0],[0.691,0.921],[0.105,0.391],[0.4,0.2],[1.9,0.233],[1.133,-0.1],[3.067,-0.533],[2.467,-0.233],[1.1,-0.133],[0.9,-0.367],[0.133,-0.321],[1.151,-1.245],[0.4,-1.767],[0.067,-0.967],[-0.067,-2.933],[0.208,-0.892],[0.175,0.116],[0.079,-0.338],[0.467,-0.967],[-0.353,-0.294],[0,0],[0,0],[0,0],[-0.909,-0.799],[-1.8,-1.433],[-14.9,-10.7],[-2.633,-2.5],[-1.807,-1.573],[-0.042,-0.189],[0,0],[-5.367,-17.9],[-1.567,-4.433],[-0.275,-0.675],[-0.133,-0.667],[-1.633,0],[-1.133,0.267],[-4.467,1.5],[0,0],[-1.233,0.333],[-0.067,0.367]],"v":[[-77.766,-84.159],[-76.917,-83.409],[-75.367,-83.208],[-75.016,-82.458],[-27.516,2.492],[-14.667,24.542],[-10.066,31.642],[-2.417,45.792],[5.083,59.991],[12.184,70.991],[19.883,81.591],[32.034,98.042],[33.934,99.191],[34.833,100.191],[36.434,100.591],[41.084,100.841],[44.784,100.292],[55.883,98.792],[66.984,97.741],[69.383,97.241],[71.084,95.641],[71.184,94.691],[73.784,88.691],[74.684,83.241],[74.684,76.091],[75.184,69.042],[76.383,65.241],[76.833,65.542],[77.083,64.641],[78.083,62.441],[76.983,61.392],[72.734,56.741],[71.734,55.441],[71.434,54.841],[68.834,52.642],[59.284,45.542],[17.284,10.941],[11.934,6.042],[6.784,2.142],[6.633,1.542],[-7.816,-46.159],[-21.066,-87.508],[-25.367,-98.258],[-26.316,-99.909],[-28.217,-100.909],[-33.667,-100.159],[-38.967,-98.559],[-57.117,-92.758],[-75.917,-86.809],[-78.016,-85.208]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[180.816,281.359],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":13,"op":14,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"13 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[246.029,280.975,0]},"a":{"k":[246.029,280.975,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.333,0.433],[3.933,0.4],[7.633,0.467],[2.233,0.267],[2.267,0.333],[4.533,0.1],[3.233,0.3],[0,0],[0.5,-0.533],[-0.033,-0.5],[-0.2,-0.333],[0,-0.1],[-0.733,-2],[-0.867,-2.233],[0,-3.067],[0.167,-3.533],[-0.733,-6.333],[0,0],[-0.5,-3.567],[-1.033,-4.733],[-1.067,-0.2],[0,0],[-0.067,-0.2],[-0.233,-0.2],[-0.433,-0.1],[-0.4,0.2],[-0.133,0.433],[-0.033,0.233],[-0.233,0.033],[-0.5,0.133],[-3.7,4.633],[-0.267,0.5],[-4.633,4.2],[-0.5,0.4],[-10.7,14.033],[-0.433,0.5],[0,0],[-1.4,2.633],[0.567,0.567],[0.433,-0.1],[0,0]],"o":[[-1.9,-0.6],[-15.267,-1.6],[-6.133,-0.367],[-4.567,-0.7],[-4.467,-0.667],[-2.167,-0.267],[0,0],[-1.267,-0.133],[-0.3,0.3],[0,0.4],[-0.033,0.1],[-0.1,1.433],[0.433,1.1],[0.667,2.133],[0.033,1.767],[-0.033,3.267],[0,0],[0.833,7.233],[0.833,6.033],[0.467,2.033],[0,0],[-0.033,0.4],[0.1,0.2],[0.233,0.233],[0.433,0.067],[0.4,-0.233],[0.033,-0.067],[0.2,0],[0.533,-0.067],[3.467,-4.3],[0.633,-1.367],[2.4,-4.467],[0.533,-0.467],[6.133,-7.967],[0.533,-0.7],[0,0],[3.2,-5.067],[0.7,-1.3],[-0.333,-0.333],[0,0],[-0.033,-0.8]],"v":[[47.933,-53.867],[39.183,-55.367],[4.833,-58.467],[-7.717,-59.417],[-17.967,-60.967],[-31.467,-62.117],[-39.567,-62.967],[-48.617,-63.767],[-51.267,-63.167],[-51.667,-61.967],[-51.367,-60.867],[-51.417,-60.567],[-50.467,-55.417],[-48.517,-50.417],[-47.517,-42.617],[-47.717,-34.667],[-46.667,-20.267],[-41.267,25.533],[-39.267,41.733],[-36.467,57.883],[-34.167,61.233],[-34.167,61.833],[-34.117,62.733],[-33.617,63.333],[-32.617,63.833],[-31.367,63.633],[-30.567,62.633],[-30.467,62.183],[-29.817,62.133],[-28.267,61.833],[-17.517,48.433],[-16.167,45.633],[-5.617,32.633],[-4.067,31.333],[21.183,-1.667],[22.633,-3.467],[44.033,-37.217],[50.933,-48.767],[51.133,-51.567],[49.983,-51.917],[49.983,-52.017]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[337.767,397.817],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.1,3.7],[2.7,4.4],[0.933,1.133],[1.367,1.3],[0,0],[0.6,0.4],[1.967,0.733],[1.8,0.567],[2.333,0.3],[3.1,-0.067],[5.433,-0.267],[1.5,-0.167],[0,0],[5.433,-0.7],[0,0],[0.967,0],[0.367,-0.067],[0.113,-0.069],[0,0],[-0.067,-0.667],[-0.367,-1.467],[-0.067,-0.433],[-0.067,-1.867],[-0.1,-0.867],[-0.467,-2.367],[-1.233,-10.5],[-1.667,-4.6],[-0.833,-0.6],[-1.149,-0.217],[-0.825,-0.109],[-12.1,2.367],[-4.017,0.651],[-2.113,0.5],[-5.633,1.567],[-0.6,0.133],[-8.5,0.433],[-0.333,0.133],[0.033,0.567],[0.1,0.171],[0,0.414],[0.4,0.933]],"o":[[-1.233,-2.167],[-1.033,-1.733],[-0.733,-0.933],[0,0],[-1,-1],[-1.033,-0.733],[-3.167,-1.267],[-2.833,-0.9],[-1.933,-0.2],[-4.367,0.1],[-3,0.133],[0,0],[-0.9,0.133],[0,0],[-2.933,0.3],[-1.733,0],[-0.187,0.031],[0,0],[-0.433,0],[0.033,0.967],[0.467,1.967],[0.167,1.033],[0.1,2.033],[0.033,0.3],[0.4,2.067],[0.867,7.667],[0.567,1.667],[0.618,0.449],[0.542,-0.143],[7.033,0.667],[5.217,-1.016],[1.954,-0.433],[8.1,-1.933],[4.367,-1.233],[7.233,-1.767],[0.767,-0.067],[0.633,-0.333],[0,-0.195],[0.133,-0.286],[0,-0.533],[-1.333,-3.133]],"v":[[53.659,1.025],[47.758,-8.825],[44.809,-13.125],[41.659,-16.475],[32.559,-25.325],[30.159,-27.425],[25.659,-29.625],[18.208,-32.375],[10.458,-34.175],[2.909,-34.375],[-11.792,-33.825],[-18.542,-33.375],[-24.341,-32.525],[-33.841,-31.275],[-49.292,-29.475],[-55.142,-29.025],[-58.292,-28.925],[-58.742,-28.775],[-58.792,-28.775],[-59.341,-27.775],[-58.742,-24.125],[-57.941,-20.525],[-57.591,-16.175],[-57.292,-11.825],[-56.542,-7.825],[-54.091,11.025],[-50.292,29.425],[-48.191,32.825],[-45.542,33.825],[-43.492,33.775],[-14.792,31.225],[-0.941,28.725],[5.159,27.325],[25.758,22.075],[33.208,20.025],[56.809,16.725],[58.458,16.425],[59.358,15.075],[59.208,14.525],[59.409,13.475],[58.809,11.275]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[-1.109,0.159],[0.936,-0.234],[0.383,-0.073]],"o":[[-0.631,-0.067],[-0.384,0.094],[1.225,-0.175]],"v":[[3.059,28.125],[0.708,28.375],[-0.441,28.625]],"c":true}},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[319.491,134.675],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.267,0.6],[3.367,0.633],[0,0],[0.533,0.367],[0.467,0.733],[3.888,4.478],[0.113,0.272],[0.333,0.2],[0.337,0.036],[0.261,0.295],[0.016,0.015],[0.72,-0.137],[0.004,-0.043],[0.498,-0.167],[2.967,-0.867],[1.7,-0.5],[2.033,-0.933],[0.267,-0.567],[-0.165,-0.488],[0.101,-0.224],[0.167,-0.3],[0.533,-0.967],[0,0],[0,0],[0,0],[0.4,-0.533],[0.9,-1.533],[0.067,-0.333],[-0.251,-0.377],[0.103,-0.127],[-0.067,-0.433],[-1.733,-0.133],[-8.1,-0.333],[-4.033,-0.733],[-0.433,-0.4],[-0.3,-1],[-0.8,-2.9],[-0.6,-1.333],[-0.633,-1.233],[-0.2,-0.8],[-0.167,-1.367],[-0.2,-0.667],[-0.633,-1.3],[-0.167,-0.7],[-0.133,-1],[-0.333,-0.5],[-1.033,-0.4],[-1.3,-0.2],[-8.067,-2.567],[-3.8,-0.8],[-0.9,0.367],[-1.167,1.733],[-3,3.1],[-1.267,1.733],[-1.3,1.933],[-1.167,0.833],[-0.267,0.3],[0.1,0.6],[0.433,0.4],[0.667,0.433],[2.6,2.667],[1.467,1.533],[2.033,1.8]],"o":[[-1.3,-0.633],[0,0],[-1.3,-0.2],[-0.533,-0.333],[-3.912,-5.089],[0.047,-0.261],[-0.133,-0.367],[-0.296,-0.197],[-0.239,-0.305],[-0.017,-0.019],[-0.713,0.13],[0.004,0.057],[-0.269,0.067],[-3.067,1.133],[-3.433,0.9],[-3,0.833],[-1,0.467],[-0.199,0.445],[-0.099,0.176],[-0.567,1.267],[-0.267,0.5],[0,0],[0,0],[0,0],[-0.067,0.167],[-0.433,0.567],[-0.367,0.667],[-0.118,0.59],[-0.097,0.107],[-0.3,0.4],[0.2,1.033],[2.933,0.333],[6.933,0.267],[1.1,0.2],[0.533,0.433],[0.3,0.867],[0.633,2.367],[0.3,0.633],[0.533,1.1],[0.167,0.633],[0.167,1.3],[0.167,0.6],[0.567,1.2],[0.1,0.467],[0.133,0.833],[0.5,0.733],[0.7,0.233],[4.7,0.733],[8.933,2.833],[1.9,0.333],[0.933,-0.367],[1.267,-1.767],[3.033,-3.167],[0.7,-0.9],[1.2,-1.6],[0.833,-0.6],[0.567,-0.567],[-0.033,-0.467],[-0.233,-0.233],[-1.6,-1],[-2.933,-3.167],[-2.6,-2.7],[-1.967,-1.7]],"v":[[34.484,-13.492],[27.484,-15.391],[-5.216,-20.992],[-7.966,-21.841],[-9.466,-23.441],[-21.167,-37.791],[-21.266,-38.591],[-21.966,-39.441],[-22.917,-39.791],[-23.667,-40.691],[-23.716,-40.742],[-25.866,-40.341],[-25.866,-40.191],[-27.016,-39.841],[-36.066,-36.841],[-43.766,-34.742],[-51.316,-32.091],[-53.216,-30.541],[-53.266,-29.141],[-53.566,-28.541],[-54.667,-26.191],[-55.866,-23.992],[-56.366,-22.992],[-56.966,-22.091],[-57.466,-21.091],[-58.166,-20.041],[-60.166,-16.891],[-60.816,-15.391],[-60.616,-13.941],[-60.916,-13.591],[-61.266,-12.341],[-58.366,-10.591],[-41.816,-9.591],[-25.366,-8.091],[-23.066,-7.191],[-21.816,-5.041],[-20.167,0.609],[-18.316,6.159],[-16.917,8.959],[-15.816,11.809],[-15.316,14.809],[-14.766,17.758],[-13.566,20.609],[-12.466,23.459],[-12.116,25.659],[-11.417,27.659],[-9.116,29.359],[-6.116,30.008],[13.034,34.959],[32.134,40.409],[36.333,40.359],[39.484,37.209],[45.884,29.909],[52.333,22.559],[55.333,18.309],[58.884,14.659],[60.534,13.309],[61.234,11.559],[60.534,10.258],[59.184,9.258],[52.884,3.758],[46.284,-3.291],[39.333,-10.041]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[312.366,242.692],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.233,-0.333],[-0.367,-0.167],[-0.681,0.017],[-0.133,-0.242],[0,0],[-3.7,-5.833],[-0.6,-1],[-3.1,-6.2],[-1.633,-2.833],[-2.8,-4],[-3.567,-4.867],[0,0],[-0.575,0.155],[-0.495,-0.275],[-0.667,-0.067],[-1.2,0.067],[-1.333,0.267],[-4.333,0.467],[-4.933,0.467],[-0.5,0.2],[-0.233,0.7],[0.067,0.312],[-0.582,2.755],[-0.2,1.867],[0.067,3.8],[-0.4,1.767],[-0.592,1.641],[-0.125,-0.084],[-0.088,0.262],[-0.2,0.5],[0.381,0.406],[0,0],[0,0],[0,0],[0.825,0.668],[4.567,3.3],[13.1,12.367],[0.933,0.767],[1.627,1.027],[0.058,0.211],[0,0],[3.467,9.667],[1.3,2.733],[0.359,0.425],[1.133,0],[2,-0.5],[2.4,-0.8],[7.633,-2.367],[0,0],[0.167,-0.733]],"o":[[0.2,0.333],[0.353,0.151],[0.1,0.258],[0,0],[4.867,8.867],[2.467,3.733],[2,3.233],[3.367,6.633],[1.933,3.333],[1.567,2.2],[0,0],[0.691,0.921],[0.105,0.391],[0.4,0.2],[1.9,0.233],[1.133,-0.1],[3.067,-0.533],[2.467,-0.233],[1.1,-0.133],[0.9,-0.367],[0.133,-0.321],[1.151,-1.245],[0.4,-1.767],[0.067,-0.967],[-0.067,-2.933],[0.208,-0.892],[0.175,0.116],[0.079,-0.338],[0.467,-0.967],[-0.353,-0.294],[0,0],[0,0],[0,0],[-0.909,-0.799],[-1.8,-1.433],[-14.9,-10.7],[-2.633,-2.5],[-1.807,-1.573],[-0.042,-0.189],[0,0],[-5.367,-17.9],[-1.567,-4.433],[-0.275,-0.675],[-0.133,-0.667],[-1.633,0],[-1.133,0.267],[-4.467,1.5],[0,0],[-1.233,0.333],[-0.067,0.367]],"v":[[-77.766,-84.159],[-76.917,-83.409],[-75.367,-83.208],[-75.016,-82.458],[-27.516,2.492],[-14.667,24.542],[-10.066,31.642],[-2.417,45.792],[5.083,59.991],[12.184,70.991],[19.883,81.591],[32.034,98.042],[33.934,99.191],[34.833,100.191],[36.434,100.591],[41.084,100.841],[44.784,100.292],[55.883,98.792],[66.984,97.741],[69.383,97.241],[71.084,95.641],[71.184,94.691],[73.784,88.691],[74.684,83.241],[74.684,76.091],[75.184,69.042],[76.383,65.241],[76.833,65.542],[77.083,64.641],[78.083,62.441],[76.983,61.392],[72.734,56.741],[71.734,55.441],[71.434,54.841],[68.834,52.642],[59.284,45.542],[17.284,10.941],[11.934,6.042],[6.784,2.142],[6.633,1.542],[-7.816,-46.159],[-21.066,-87.508],[-25.367,-98.258],[-26.316,-99.909],[-28.217,-100.909],[-33.667,-100.159],[-38.967,-98.559],[-57.117,-92.758],[-75.917,-86.809],[-78.016,-85.208]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[180.816,281.359],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":14,"op":15,"st":14,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"14 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[249.752,296.877,0]},"a":{"k":[249.752,296.877,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.7,0.8],[2.733,0.2],[2.433,-0.367],[0.333,-0.067],[0.133,0.033],[1.8,-0.333],[17.467,-3.667],[8.9,-1.2],[0.733,-0.233],[0.7,-0.767],[-0.3,-1.667],[-0.633,-0.667],[0.233,-0.933],[0,0],[0.267,-2.467],[0,0],[0.1,-2.5],[0,0],[-0.267,-0.567],[-1.1,-0.333],[-0.1,-0.033],[-1.167,-1.433],[-11.167,-14.933],[-1.1,-2.3],[-0.067,-0.133],[-0.633,-0.533],[-0.867,-0.167],[-0.8,0.267],[-0.567,0.7],[0,0],[-1.233,1.233],[-3.233,3.6],[0,0],[-1.567,2.167],[-1.933,3.4],[-1.133,1.567],[-2.6,3],[0,0],[-0.433,0.967],[0.733,1.067],[0.267,0.233],[0.067,2.533],[0.367,3.667],[0,0],[0.3,1.533],[0.233,1.533],[0.067,1.733],[0.1,0.6]],"o":[[-1.133,-1.3],[-2.267,-0.2],[-0.367,0.067],[-0.133,-0.033],[-0.967,-0.233],[-6.167,1.067],[-14.8,3.1],[-1.533,0.2],[-1.233,0.367],[-1.033,1.133],[0.167,1.1],[-0.3,0.533],[0,0],[-0.7,2.7],[0,0],[-0.033,0.5],[0,0],[0,1.267],[0.4,0.967],[0.1,0.033],[0.467,1.033],[9.967,12.6],[3,4.067],[0.733,1.6],[0.533,0.967],[0.667,0.567],[0.9,0.2],[0.833,-0.3],[0,0],[1.033,-0.467],[2.167,-2.167],[0,0],[2.867,-3.133],[1.167,-1.6],[1.967,-3.4],[1.1,-1.533],[0,0],[1.167,-1.3],[0.6,-1.6],[-0.2,-0.3],[0.2,-2.133],[-0.067,-2.067],[0,0],[-0.433,-4.367],[-0.667,-3.067],[-0.233,-1.7],[-0.033,-1.9],[-0.2,-1.4]],"v":[[46.7,-60.025],[40.9,-62.275],[33.85,-62.025],[32.8,-61.825],[32.4,-61.925],[28.25,-61.775],[-7.2,-54.675],[-42.75,-48.225],[-46.15,-47.575],[-49.05,-45.875],[-50.15,-41.675],[-48.95,-39.025],[-49.75,-36.825],[-51.4,-30.825],[-52.85,-23.075],[-53.45,-17.075],[-53.65,-12.575],[-53.75,-3.025],[-53.35,-0.275],[-51.1,1.675],[-50.8,1.775],[-48.35,5.475],[-16.65,46.775],[-10.5,56.325],[-9.3,58.925],[-7.55,61.175],[-5.25,62.275],[-2.7,62.175],[-0.6,60.675],[-0.55,60.625],[2.85,58.075],[10.95,49.425],[17.65,41.975],[24.3,34.025],[28.95,26.525],[33.6,19.075],[39.15,12.275],[50.75,-0.975],[53.15,-4.375],[52.95,-8.375],[52.25,-9.175],[52.45,-16.175],[51.8,-24.775],[51.15,-32.075],[50.05,-40.925],[48.7,-47.825],[48.25,-52.975],[48.05,-56.725]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[345.45,431.075],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.1,3.7],[2.7,4.4],[0.933,1.133],[1.367,1.3],[0,0],[0.6,0.4],[1.967,0.733],[1.8,0.567],[2.333,0.3],[3.1,-0.067],[5.433,-0.267],[1.5,-0.167],[0,0],[5.433,-0.7],[0,0],[0.967,0],[0.367,-0.067],[0.113,-0.069],[0,0],[-0.067,-0.667],[-0.367,-1.467],[-0.067,-0.433],[-0.067,-1.867],[-0.1,-0.867],[-0.467,-2.367],[-1.233,-10.5],[-1.667,-4.6],[-0.833,-0.6],[-1.149,-0.217],[-0.825,-0.109],[-12.1,2.367],[-4.017,0.651],[-2.113,0.5],[-5.633,1.567],[-0.6,0.133],[-8.5,0.433],[-0.333,0.133],[0.033,0.567],[0.1,0.171],[0,0.414],[0.4,0.933]],"o":[[-1.233,-2.167],[-1.033,-1.733],[-0.733,-0.933],[0,0],[-1,-1],[-1.033,-0.733],[-3.167,-1.267],[-2.833,-0.9],[-1.933,-0.2],[-4.367,0.1],[-3,0.133],[0,0],[-0.9,0.133],[0,0],[-2.933,0.3],[-1.733,0],[-0.187,0.031],[0,0],[-0.433,0],[0.033,0.967],[0.467,1.967],[0.167,1.033],[0.1,2.033],[0.033,0.3],[0.4,2.067],[0.867,7.667],[0.567,1.667],[0.618,0.449],[0.542,-0.143],[7.033,0.667],[5.217,-1.016],[1.954,-0.433],[8.1,-1.933],[4.367,-1.233],[7.233,-1.767],[0.767,-0.067],[0.633,-0.333],[0,-0.195],[0.133,-0.286],[0,-0.533],[-1.333,-3.133]],"v":[[53.659,1.025],[47.758,-8.825],[44.809,-13.125],[41.659,-16.475],[32.559,-25.325],[30.159,-27.425],[25.659,-29.625],[18.208,-32.375],[10.458,-34.175],[2.909,-34.375],[-11.792,-33.825],[-18.542,-33.375],[-24.341,-32.525],[-33.841,-31.275],[-49.292,-29.475],[-55.142,-29.025],[-58.292,-28.925],[-58.742,-28.775],[-58.792,-28.775],[-59.341,-27.775],[-58.742,-24.125],[-57.941,-20.525],[-57.591,-16.175],[-57.292,-11.825],[-56.542,-7.825],[-54.091,11.025],[-50.292,29.425],[-48.191,32.825],[-45.542,33.825],[-43.492,33.775],[-14.792,31.225],[-0.941,28.725],[5.159,27.325],[25.758,22.075],[33.208,20.025],[56.809,16.725],[58.458,16.425],[59.358,15.075],[59.208,14.525],[59.409,13.475],[58.809,11.275]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[-1.109,0.159],[0.936,-0.234],[0.383,-0.073]],"o":[[-0.631,-0.067],[-0.384,0.094],[1.225,-0.175]],"v":[[3.059,28.125],[0.708,28.375],[-0.441,28.625]],"c":true}},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[319.491,134.675],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.7,0.733],[3.233,0.4],[0,0],[0.987,0.818],[2,2.033],[1.1,0.933],[1.067,0.9],[0.933,1.433],[0.233,0.167],[0.222,0.059],[0.123,0.037],[0.8,-0.267],[2.2,-0.767],[0.967,-0.433],[0,0],[2.767,-1.067],[0.671,-0.279],[0.255,-0.071],[0.367,-0.533],[0.067,-0.333],[0.267,-0.9],[1.267,-2.767],[0,0],[0.467,-1.033],[0.033,-0.667],[-0.466,-0.384],[-0.06,-0.225],[-1,0],[0,0],[-5.167,-0.433],[-0.158,0.012],[-0.316,-0.857],[0,0],[-1.567,-3.467],[-0.633,-0.2],[-0.392,0.19],[-0.452,-0.209],[-2.6,-0.667],[0,0],[-2.367,-0.767],[-2,-0.7],[-1.197,-0.197],[-0.232,-0.087],[-0.533,0.3],[-0.165,0.199],[-0.134,0.181],[-0.097,0.161],[0,0],[-1.133,1.867],[0,0],[-0.081,0.223],[-0.177,0.257],[0.1,0.6],[0.833,0.967],[1.333,1.767],[0,0],[0.8,0.7],[0.222,0.157],[0.009,0.017],[0.867,0.7],[0.8,0.867],[0.433,0.367]],"o":[[-1.667,-0.433],[0,0],[-0.179,-0.682],[-1.067,-0.9],[-2,-2],[-2.2,-1.7],[-1.9,-1.567],[-0.633,-0.867],[-0.211,-0.141],[-0.111,-0.063],[-0.433,-0.1],[-2.033,0.633],[-1.233,0.4],[0,0],[-1.733,0.867],[-3.862,1.487],[-0.211,-0.038],[-0.433,0.133],[-0.267,0.367],[-0.033,0.067],[-0.767,3.2],[0,0],[-0.2,0.533],[-0.367,0.933],[-0.066,0.883],[-0.06,0.209],[0.167,0.5],[0,0],[10.333,-0.133],[0.209,0.012],[0.151,0.509],[0,0],[3.333,8.567],[0.5,1.133],[0.408,0.157],[0.315,0.191],[1.233,0.533],[0,0],[4.8,1.267],[1.033,0.333],[1.569,0.503],[0.135,0.179],[0.467,0.267],[0.202,-0.101],[0.166,-0.119],[0.103,-0.139],[0,0],[2.467,-3.533],[0,0],[0.152,-0.244],[0.256,-0.143],[0.367,-0.5],[-0.1,-0.467],[-0.2,-0.233],[0,0],[-0.567,-0.7],[-0.245,-0.176],[0.009,-0.016],[-0.2,-0.433],[-0.467,-0.367],[-0.867,-0.867],[-1.7,-1.4]],"v":[[32.308,-15.959],[24.958,-17.209],[-0.542,-20.308],[-2.292,-22.558],[-6.892,-26.959],[-11.542,-31.359],[-16.442,-35.258],[-20.692,-39.758],[-21.992,-41.308],[-22.642,-41.609],[-22.992,-41.758],[-24.842,-41.508],[-31.192,-39.408],[-34.492,-38.158],[-36.842,-37.008],[-43.592,-34.109],[-50.392,-31.459],[-51.092,-31.408],[-52.292,-30.408],[-52.792,-29.359],[-53.242,-27.908],[-56.292,-18.959],[-57.792,-15.158],[-58.792,-12.808],[-59.392,-10.408],[-58.792,-8.508],[-58.792,-7.859],[-57.042,-7.109],[-46.192,-7.258],[-22.942,-6.808],[-22.392,-6.808],[-21.692,-4.758],[-16.692,8.291],[-9.342,26.342],[-7.642,28.342],[-6.442,28.291],[-5.292,28.891],[0.458,30.692],[18.758,35.541],[29.508,38.592],[34.058,40.141],[38.208,41.192],[38.758,41.592],[40.258,41.541],[40.808,41.092],[41.258,40.641],[41.558,40.192],[48.708,30.041],[54.108,21.942],[57.958,15.141],[58.308,14.442],[58.958,13.842],[59.358,12.192],[57.958,10.041],[55.658,7.041],[47.108,-4.709],[45.058,-6.808],[44.358,-7.308],[44.358,-7.359],[42.758,-9.058],[40.858,-10.908],[38.908,-12.758]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[307.792,241.109],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.067,-0.2],[-0.333,-0.3],[0,0],[-0.267,-0.067],[-0.091,-0.025],[-0.294,-0.555],[-2.7,-5.733],[-3.9,-8.667],[-2.133,-4.3],[-5.067,-8.633],[-6.333,-10.2],[0,0],[-9.133,-11.9],[-4.1,-6.4],[-0.7,-0.267],[-0.567,0.233],[-0.084,0.078],[-2.38,0.321],[-1.5,0.333],[-1.7,0.433],[-4.567,-0.1],[-3.4,-0.167],[-2.067,0.533],[-0.433,0.4],[0.2,0.7],[1.1,0.133],[0.177,-0.009],[-0.273,1],[-0.033,0.1],[-0.167,1.067],[0,0],[-0.145,0.067],[-0.167,0.633],[0.233,0.567],[1.233,0.867],[18.5,15.067],[0,0],[0.705,-0.399],[2.091,7.399],[0,0],[1.5,6.7],[0.4,1.8],[0.7,2.233],[3,4.767],[0.413,-0.124],[0.306,-0.112],[1.733,-0.667],[0.867,-0.233],[0.867,-0.233],[2.133,-0.667],[0,0],[1.767,-0.633],[1.8,-0.6],[1.961,-0.359],[0.753,-0.157],[0.167,-0.1],[0,0],[0,0],[0.067,-0.633]],"o":[[0,0.433],[0.1,0.233],[0,0],[0.2,0.133],[0.109,0.042],[6.339,11.979],[3.9,7.467],[1.467,3.1],[3.333,7.433],[3.567,7.167],[3.033,5.167],[0,0],[3.9,5.967],[8.8,11.533],[0.833,1.3],[0.533,0.2],[0.116,-0.055],[1.853,0.721],[1.067,-0.133],[0.833,-0.2],[3.933,-0.833],[1.7,0.067],[2.933,0.033],[0.9,-0.233],[0.667,-0.6],[-0.2,-0.8],[-0.123,-0.009],[0.36,-1.933],[0.367,-1.233],[0.233,-0.833],[0,0],[0.155,-0.033],[0.533,-0.233],[0.167,-0.633],[-0.4,-0.867],[-18.667,-14.4],[0,0],[-1.228,-0.965],[-0.976,-3.734],[0,0],[-3.8,-13.2],[-0.733,-3.567],[-0.7,-3.067],[-1.733,-5.367],[-0.421,-0.691],[-0.194,-0.079],[-0.967,0.233],[-1.833,0.667],[-1.8,0.433],[-1.1,0.267],[0,0],[-2.967,0.933],[-3.567,1.4],[-2.372,0.841],[-0.547,-0.391],[-0.2,0],[0,0],[0,0],[-0.2,0.367],[0,0]],"v":[[-81.758,-85.148],[-81.659,-84.198],[-81.008,-83.398],[-80.359,-82.698],[-79.659,-82.398],[-79.359,-82.298],[-69.409,-63.498],[-59.508,-43.698],[-51.459,-26.048],[-43.258,-8.448],[-30.309,15.252],[-16.258,38.302],[-10.508,47.402],[9.042,74.202],[28.391,101.102],[30.691,103.452],[32.341,103.401],[32.641,103.202],[38.992,103.802],[42.842,103.102],[46.641,102.151],[59.391,101.052],[67.042,101.401],[74.541,100.651],[76.541,99.702],[77.242,97.751],[75.291,96.352],[74.842,96.352],[75.791,91.952],[76.391,89.952],[76.992,87.102],[80.092,68.001],[80.541,67.852],[81.592,66.552],[81.492,64.751],[79.041,62.152],[23.292,17.952],[5.691,3.552],[2.792,2.702],[-1.809,-13.998],[-9.909,-42.098],[-17.859,-71.948],[-19.559,-79.998],[-21.659,-87.948],[-28.758,-103.148],[-30.008,-103.998],[-30.758,-103.948],[-34.809,-102.598],[-38.859,-101.248],[-42.859,-100.248],[-47.709,-98.848],[-56.159,-96.148],[-63.258,-93.798],[-71.309,-90.798],[-77.809,-88.998],[-79.758,-89.348],[-80.309,-89.198],[-80.809,-88.848],[-81.359,-88.198],[-81.758,-86.698]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[182.258,280.648],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":15,"op":16,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"15 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[260.525,307.662,0]},"a":{"k":[260.525,307.662,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.2,0.6],[0.233,0.567],[0.6,0.267],[0.6,-0.033],[1.567,-0.633],[5.6,-1.8],[2.067,-0.767],[0,0],[0.367,-0.333],[0.333,-0.6],[0.067,-0.9],[0.033,-3.6],[0,0],[0.567,-1.8],[0.033,-0.133],[-0.033,-1.267],[0.3,-1.5],[0.033,-0.133],[0.1,-0.2],[-1.4,-1.467],[-2.2,-1.567],[-2.533,-1.733],[-6.567,-7.333],[-7.3,-8.333],[-5.633,-5.2],[0,0],[0,0],[-1.3,-0.8],[-0.5,-0.333],[-0.033,0.033],[-0.133,0.9],[0,0.233],[-3.2,4.533],[0,0],[-5.3,7.7],[-1.033,1.8],[-0.767,2.533],[0.1,0.4],[-0.233,0.067],[-0.5,0.667],[0,0.767],[0.4,0.767],[0,0],[0.833,2.1],[0.733,2.367],[0.333,1.167],[0.533,1.367],[1.167,2.467],[0,0],[-0.1,0.1]],"o":[[0.167,-0.633],[-0.233,-0.5],[-0.533,-0.267],[-0.7,0.033],[-3.267,1.433],[-6.9,2.233],[0,0],[-0.7,0.3],[-0.533,0.033],[-0.267,0.467],[-0.267,2.567],[0,0],[0,3.5],[-0.533,1.733],[-0.1,0.633],[-0.033,0.767],[0,0.1],[-0.167,0.133],[-0.5,1.1],[1.3,1.333],[1.233,0.9],[5.5,3.9],[3.7,4.1],[3.567,3.767],[0,0],[0,0],[0.933,0.433],[0.367,0.2],[0.067,-0.033],[0.7,-0.433],[0.033,-0.233],[1.933,-3.133],[0,0],[14.2,-20.467],[2.2,-3.2],[1.667,-2.9],[0.167,-0.7],[0.233,-0.033],[0.767,-0.233],[0.533,-0.667],[-0.033,-0.667],[0,0],[-0.533,-0.833],[-1.967,-4.967],[-0.667,-2.367],[-0.6,-2.133],[-0.367,-0.933],[0,0],[0.133,-0.1],[0.467,-0.433]],"v":[[41.575,-67.758],[41.475,-69.558],[40.225,-70.708],[38.525,-71.058],[35.125,-70.058],[21.825,-65.208],[8.375,-60.708],[-55.075,-34.508],[-56.675,-33.558],[-57.975,-32.608],[-58.475,-30.558],[-58.925,-21.308],[-58.925,-12.058],[-59.775,-4.108],[-60.625,-1.309],[-60.725,1.542],[-61.225,4.941],[-61.275,5.292],[-61.675,5.792],[-60.325,9.642],[-55.075,13.992],[-49.425,17.941],[-31.325,34.792],[-14.825,53.441],[-1.025,66.891],[-0.525,67.141],[2.325,68.442],[5.675,70.292],[6.975,71.091],[7.125,70.992],[8.375,68.992],[8.425,68.292],[16.125,56.792],[20.925,49.892],[50.175,7.642],[55.025,0.142],[58.675,-8.008],[58.775,-9.659],[59.475,-9.808],[61.375,-11.159],[62.175,-13.308],[61.525,-15.458],[60.225,-17.508],[58.175,-21.909],[54.125,-32.909],[52.625,-38.208],[50.925,-43.458],[48.625,-48.558],[40.225,-65.909],[40.575,-66.208]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[358.375,443.958],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.1,3.7],[2.7,4.4],[0.933,1.133],[1.367,1.3],[0,0],[0.6,0.4],[1.967,0.733],[1.8,0.567],[2.333,0.3],[3.1,-0.067],[5.433,-0.267],[1.5,-0.167],[0,0],[5.433,-0.7],[0,0],[0.967,0],[0.367,-0.067],[0.113,-0.069],[0,0],[-0.067,-0.667],[-0.367,-1.467],[-0.067,-0.433],[-0.067,-1.867],[-0.1,-0.867],[-0.467,-2.367],[-1.233,-10.5],[-1.667,-4.6],[-0.833,-0.6],[-1.149,-0.217],[-0.825,-0.109],[-12.1,2.367],[-4.017,0.651],[-2.113,0.5],[-5.633,1.567],[-0.6,0.133],[-8.5,0.433],[-0.333,0.133],[0.033,0.567],[0.1,0.171],[0,0.414],[0.4,0.933]],"o":[[-1.233,-2.167],[-1.033,-1.733],[-0.733,-0.933],[0,0],[-1,-1],[-1.033,-0.733],[-3.167,-1.267],[-2.833,-0.9],[-1.933,-0.2],[-4.367,0.1],[-3,0.133],[0,0],[-0.9,0.133],[0,0],[-2.933,0.3],[-1.733,0],[-0.187,0.031],[0,0],[-0.433,0],[0.033,0.967],[0.467,1.967],[0.167,1.033],[0.1,2.033],[0.033,0.3],[0.4,2.067],[0.867,7.667],[0.567,1.667],[0.618,0.449],[0.542,-0.143],[7.033,0.667],[5.217,-1.016],[1.954,-0.433],[8.1,-1.933],[4.367,-1.233],[7.233,-1.767],[0.767,-0.067],[0.633,-0.333],[0,-0.195],[0.133,-0.286],[0,-0.533],[-1.333,-3.133]],"v":[[53.659,1.025],[47.758,-8.825],[44.809,-13.125],[41.659,-16.475],[32.559,-25.325],[30.159,-27.425],[25.659,-29.625],[18.208,-32.375],[10.458,-34.175],[2.909,-34.375],[-11.792,-33.825],[-18.542,-33.375],[-24.341,-32.525],[-33.841,-31.275],[-49.292,-29.475],[-55.142,-29.025],[-58.292,-28.925],[-58.742,-28.775],[-58.792,-28.775],[-59.341,-27.775],[-58.742,-24.125],[-57.941,-20.525],[-57.591,-16.175],[-57.292,-11.825],[-56.542,-7.825],[-54.091,11.025],[-50.292,29.425],[-48.191,32.825],[-45.542,33.825],[-43.492,33.775],[-14.792,31.225],[-0.941,28.725],[5.159,27.325],[25.758,22.075],[33.208,20.025],[56.809,16.725],[58.458,16.425],[59.358,15.075],[59.208,14.525],[59.409,13.475],[58.809,11.275]],"c":true}},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[-1.109,0.159],[0.936,-0.234],[0.383,-0.073]],"o":[[-0.631,-0.067],[-0.384,0.094],[1.225,-0.175]],"v":[[3.059,28.125],[0.708,28.375],[-0.441,28.625]],"c":true}},"nm":"Path 2"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[319.491,134.675],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.7,0.733],[3.233,0.4],[0,0],[0.987,0.818],[2,2.033],[1.1,0.933],[1.067,0.9],[0.933,1.433],[0.233,0.167],[0.222,0.059],[0.123,0.037],[0.8,-0.267],[2.2,-0.767],[0.967,-0.433],[0,0],[2.767,-1.067],[0.671,-0.279],[0.255,-0.071],[0.367,-0.533],[0.067,-0.333],[0.267,-0.9],[1.267,-2.767],[0,0],[0.467,-1.033],[0.033,-0.667],[-0.466,-0.384],[-0.06,-0.225],[-1,0],[0,0],[-5.167,-0.433],[-0.158,0.012],[-0.316,-0.857],[0,0],[-1.567,-3.467],[-0.633,-0.2],[-0.392,0.19],[-0.452,-0.209],[-2.6,-0.667],[0,0],[-2.367,-0.767],[-2,-0.7],[-1.197,-0.197],[-0.232,-0.087],[-0.533,0.3],[-0.165,0.199],[-0.134,0.181],[-0.097,0.161],[0,0],[-1.133,1.867],[0,0],[-0.081,0.223],[-0.177,0.257],[0.1,0.6],[0.833,0.967],[1.333,1.767],[0,0],[0.8,0.7],[0.222,0.157],[0.009,0.017],[0.867,0.7],[0.8,0.867],[0.433,0.367]],"o":[[-1.667,-0.433],[0,0],[-0.179,-0.682],[-1.067,-0.9],[-2,-2],[-2.2,-1.7],[-1.9,-1.567],[-0.633,-0.867],[-0.211,-0.141],[-0.111,-0.063],[-0.433,-0.1],[-2.033,0.633],[-1.233,0.4],[0,0],[-1.733,0.867],[-3.862,1.487],[-0.211,-0.038],[-0.433,0.133],[-0.267,0.367],[-0.033,0.067],[-0.767,3.2],[0,0],[-0.2,0.533],[-0.367,0.933],[-0.066,0.883],[-0.06,0.209],[0.167,0.5],[0,0],[10.333,-0.133],[0.209,0.012],[0.151,0.509],[0,0],[3.333,8.567],[0.5,1.133],[0.408,0.157],[0.315,0.191],[1.233,0.533],[0,0],[4.8,1.267],[1.033,0.333],[1.569,0.503],[0.135,0.179],[0.467,0.267],[0.202,-0.101],[0.166,-0.119],[0.103,-0.139],[0,0],[2.467,-3.533],[0,0],[0.152,-0.244],[0.256,-0.143],[0.367,-0.5],[-0.1,-0.467],[-0.2,-0.233],[0,0],[-0.567,-0.7],[-0.245,-0.176],[0.009,-0.016],[-0.2,-0.433],[-0.467,-0.367],[-0.867,-0.867],[-1.7,-1.4]],"v":[[32.308,-15.959],[24.958,-17.209],[-0.542,-20.308],[-2.292,-22.558],[-6.892,-26.959],[-11.542,-31.359],[-16.442,-35.258],[-20.692,-39.758],[-21.992,-41.308],[-22.642,-41.609],[-22.992,-41.758],[-24.842,-41.508],[-31.192,-39.408],[-34.492,-38.158],[-36.842,-37.008],[-43.592,-34.109],[-50.392,-31.459],[-51.092,-31.408],[-52.292,-30.408],[-52.792,-29.359],[-53.242,-27.908],[-56.292,-18.959],[-57.792,-15.158],[-58.792,-12.808],[-59.392,-10.408],[-58.792,-8.508],[-58.792,-7.859],[-57.042,-7.109],[-46.192,-7.258],[-22.942,-6.808],[-22.392,-6.808],[-21.692,-4.758],[-16.692,8.291],[-9.342,26.342],[-7.642,28.342],[-6.442,28.291],[-5.292,28.891],[0.458,30.692],[18.758,35.541],[29.508,38.592],[34.058,40.141],[38.208,41.192],[38.758,41.592],[40.258,41.541],[40.808,41.092],[41.258,40.641],[41.558,40.192],[48.708,30.041],[54.108,21.942],[57.958,15.141],[58.308,14.442],[58.958,13.842],[59.358,12.192],[57.958,10.041],[55.658,7.041],[47.108,-4.709],[45.058,-6.808],[44.358,-7.308],[44.358,-7.359],[42.758,-9.058],[40.858,-10.908],[38.908,-12.758]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[307.792,241.109],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.067,-0.2],[-0.333,-0.3],[0,0],[-0.267,-0.067],[-0.091,-0.025],[-0.294,-0.555],[-2.7,-5.733],[-3.9,-8.667],[-2.133,-4.3],[-5.067,-8.633],[-6.333,-10.2],[0,0],[-9.133,-11.9],[-4.1,-6.4],[-0.7,-0.267],[-0.567,0.233],[-0.084,0.078],[-2.38,0.321],[-1.5,0.333],[-1.7,0.433],[-4.567,-0.1],[-3.4,-0.167],[-2.067,0.533],[-0.433,0.4],[0.2,0.7],[1.1,0.133],[0.177,-0.009],[-0.273,1],[-0.033,0.1],[-0.167,1.067],[0,0],[-0.145,0.067],[-0.167,0.633],[0.233,0.567],[1.233,0.867],[18.5,15.067],[0,0],[0.705,-0.399],[2.091,7.399],[0,0],[1.5,6.7],[0.4,1.8],[0.7,2.233],[3,4.767],[0.413,-0.124],[0.306,-0.112],[1.733,-0.667],[0.867,-0.233],[0.867,-0.233],[2.133,-0.667],[0,0],[1.767,-0.633],[1.8,-0.6],[1.961,-0.359],[0.753,-0.157],[0.167,-0.1],[0,0],[0,0],[0.067,-0.633]],"o":[[0,0.433],[0.1,0.233],[0,0],[0.2,0.133],[0.109,0.042],[6.339,11.979],[3.9,7.467],[1.467,3.1],[3.333,7.433],[3.567,7.167],[3.033,5.167],[0,0],[3.9,5.967],[8.8,11.533],[0.833,1.3],[0.533,0.2],[0.116,-0.055],[1.853,0.721],[1.067,-0.133],[0.833,-0.2],[3.933,-0.833],[1.7,0.067],[2.933,0.033],[0.9,-0.233],[0.667,-0.6],[-0.2,-0.8],[-0.123,-0.009],[0.36,-1.933],[0.367,-1.233],[0.233,-0.833],[0,0],[0.155,-0.033],[0.533,-0.233],[0.167,-0.633],[-0.4,-0.867],[-18.667,-14.4],[0,0],[-1.228,-0.965],[-0.976,-3.734],[0,0],[-3.8,-13.2],[-0.733,-3.567],[-0.7,-3.067],[-1.733,-5.367],[-0.421,-0.691],[-0.194,-0.079],[-0.967,0.233],[-1.833,0.667],[-1.8,0.433],[-1.1,0.267],[0,0],[-2.967,0.933],[-3.567,1.4],[-2.372,0.841],[-0.547,-0.391],[-0.2,0],[0,0],[0,0],[-0.2,0.367],[0,0]],"v":[[-81.758,-85.148],[-81.659,-84.198],[-81.008,-83.398],[-80.359,-82.698],[-79.659,-82.398],[-79.359,-82.298],[-69.409,-63.498],[-59.508,-43.698],[-51.459,-26.048],[-43.258,-8.448],[-30.309,15.252],[-16.258,38.302],[-10.508,47.402],[9.042,74.202],[28.391,101.102],[30.691,103.452],[32.341,103.401],[32.641,103.202],[38.992,103.802],[42.842,103.102],[46.641,102.151],[59.391,101.052],[67.042,101.401],[74.541,100.651],[76.541,99.702],[77.242,97.751],[75.291,96.352],[74.842,96.352],[75.791,91.952],[76.391,89.952],[76.992,87.102],[80.092,68.001],[80.541,67.852],[81.592,66.552],[81.492,64.751],[79.041,62.152],[23.292,17.952],[5.691,3.552],[2.792,2.702],[-1.809,-13.998],[-9.909,-42.098],[-17.859,-71.948],[-19.559,-79.998],[-21.659,-87.948],[-28.758,-103.148],[-30.008,-103.998],[-30.758,-103.948],[-34.809,-102.598],[-38.859,-101.248],[-42.859,-100.248],[-47.709,-98.848],[-56.159,-96.148],[-63.258,-93.798],[-71.309,-90.798],[-77.809,-88.998],[-79.758,-89.348],[-80.309,-89.198],[-80.809,-88.848],[-81.359,-88.198],[-81.758,-86.698]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[182.258,280.648],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":16,"op":17,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"16 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[260.525,307.502,0]},"a":{"k":[260.525,307.502,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.2,0.6],[0.233,0.567],[0.6,0.267],[0.6,-0.033],[1.567,-0.633],[5.6,-1.8],[2.067,-0.767],[0,0],[0.367,-0.333],[0.333,-0.6],[0.067,-0.9],[0.033,-3.6],[0,0],[0.567,-1.8],[0.033,-0.133],[-0.033,-1.267],[0.3,-1.5],[0.033,-0.133],[0.1,-0.2],[-1.4,-1.467],[-2.2,-1.567],[-2.533,-1.733],[-6.567,-7.333],[-7.3,-8.333],[-5.633,-5.2],[0,0],[0,0],[-1.3,-0.8],[-0.5,-0.333],[-0.033,0.033],[-0.133,0.9],[0,0.233],[-3.2,4.533],[0,0],[-5.3,7.7],[-1.033,1.8],[-0.767,2.533],[0.1,0.4],[-0.233,0.067],[-0.5,0.667],[0,0.767],[0.4,0.767],[0,0],[0.833,2.1],[0.733,2.367],[0.333,1.167],[0.533,1.367],[1.167,2.467],[0,0],[-0.1,0.1]],"o":[[0.167,-0.633],[-0.233,-0.5],[-0.533,-0.267],[-0.7,0.033],[-3.267,1.433],[-6.9,2.233],[0,0],[-0.7,0.3],[-0.533,0.033],[-0.267,0.467],[-0.267,2.567],[0,0],[0,3.5],[-0.533,1.733],[-0.1,0.633],[-0.033,0.767],[0,0.1],[-0.167,0.133],[-0.5,1.1],[1.3,1.333],[1.233,0.9],[5.5,3.9],[3.7,4.1],[3.567,3.767],[0,0],[0,0],[0.933,0.433],[0.367,0.2],[0.067,-0.033],[0.7,-0.433],[0.033,-0.233],[1.933,-3.133],[0,0],[14.2,-20.467],[2.2,-3.2],[1.667,-2.9],[0.167,-0.7],[0.233,-0.033],[0.767,-0.233],[0.533,-0.667],[-0.033,-0.667],[0,0],[-0.533,-0.833],[-1.967,-4.967],[-0.667,-2.367],[-0.6,-2.133],[-0.367,-0.933],[0,0],[0.133,-0.1],[0.467,-0.433]],"v":[[41.575,-67.758],[41.475,-69.558],[40.225,-70.708],[38.525,-71.058],[35.125,-70.058],[21.825,-65.208],[8.375,-60.708],[-55.075,-34.508],[-56.675,-33.558],[-57.975,-32.608],[-58.475,-30.558],[-58.925,-21.308],[-58.925,-12.058],[-59.775,-4.108],[-60.625,-1.309],[-60.725,1.542],[-61.225,4.941],[-61.275,5.292],[-61.675,5.792],[-60.325,9.642],[-55.075,13.992],[-49.425,17.941],[-31.325,34.792],[-14.825,53.441],[-1.025,66.891],[-0.525,67.141],[2.325,68.442],[5.675,70.292],[6.975,71.091],[7.125,70.992],[8.375,68.992],[8.425,68.292],[16.125,56.792],[20.925,49.892],[50.175,7.642],[55.025,0.142],[58.675,-8.008],[58.775,-9.659],[59.475,-9.808],[61.375,-11.159],[62.175,-13.308],[61.525,-15.458],[60.225,-17.508],[58.175,-21.909],[54.125,-32.909],[52.625,-38.208],[50.925,-43.458],[48.625,-48.558],[40.225,-65.909],[40.575,-66.208]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[358.375,443.958],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.233,0.533],[1.933,0.5],[7.2,-0.3],[9.567,-1.633],[10.967,-2.367],[0.267,-0.133],[0.467,-0.233],[0.033,-1.033],[-0.667,-3.933],[0,0],[-1.133,-3.933],[-0.833,-5.067],[-0.2,-0.367],[-0.367,-0.2],[0,0],[-4.467,0.9],[-11.333,2.9],[-2,0.4],[10.767,7.133],[5.233,2.367]],"o":[[-2.4,-1],[-4.467,-1.1],[-7.9,0.367],[-6.333,1.067],[-0.4,0.1],[-0.467,-0.467],[-0.633,0.267],[-0.2,2.2],[0,0],[0.167,0.8],[1.333,4.6],[0.2,1.1],[0.267,0.467],[0,0],[8.967,-1.367],[5.667,-1.167],[2.133,-0.5],[-6.133,-17.467],[-2.7,-1.8],[-2.933,-1.367]],"v":[[18.125,-30.975],[11.625,-33.225],[-5.875,-34.425],[-32.075,-31.425],[-58.025,-26.275],[-59.025,-25.925],[-60.425,-26.275],[-61.425,-24.325],[-60.725,-15.125],[-56.775,9.925],[-54.825,17.025],[-51.575,31.525],[-50.975,33.725],[-50.025,34.725],[9.775,25.875],[29.925,22.475],[55.425,16.375],[61.625,15.025],[36.275,-21.875],[24.375,-28.125]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[318.725,134.475],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.233,0.033],[0.167,0.067],[0,0],[3.267,0.967],[1.3,0.267],[0.367,0.033],[0,0],[5.333,4.5],[0,0],[2.6,1.6],[0.3,0.033],[0.567,-0.1],[0.567,-0.5],[3.867,-2.433],[0.267,-0.167],[1.833,-1.333],[0,0],[0.033,-0.1],[0.133,-0.133],[0.067,-0.467],[0,-0.533],[0.3,-1.1],[0,-2.467],[0.167,-1.7],[0.133,-0.667],[0,0],[0.3,-2.1],[-0.067,-0.333],[-0.633,-0.2],[-0.467,0.467],[-0.1,0.367],[-1.167,0.033],[-9.967,0.167],[-1.767,-0.2],[-0.267,0],[0,0],[-0.567,-0.633],[-4.067,-5.133],[0,0],[-0.4,-0.1],[-0.167,-0.067],[-0.8,-0.267],[0,0],[-1.067,-0.333],[0,0],[-0.167,0],[-0.733,0.4],[0,0],[-4.333,2.7],[-1.933,0.867],[-0.2,0.4],[0.2,0.433],[0.167,0.133],[0.2,0.2],[0.067,0.167],[0,0],[0,1.4],[0.167,1.1],[0.1,0.633],[0.133,3.6],[0,0],[0.133,0.967],[0,0],[0.067,0.567],[0.033,0.2],[-0.033,0.333],[0.267,0.7],[0,0],[0,0],[0.967,1.3],[0.2,0.133],[0.6,0.233],[0,0]],"o":[[-0.133,-0.033],[0,0],[-2.033,-1],[-2.9,-0.833],[-0.433,-0.1],[0,0],[-4.367,-4.4],[0,0],[-5.233,-4.2],[-0.467,-0.233],[-0.267,-0.267],[-0.367,0.1],[-2.3,1.933],[-6.133,3.9],[-0.733,0.467],[0,0],[-0.167,0.133],[-0.233,0.033],[-0.267,0.233],[-0.033,0.233],[-0.067,0.567],[-0.233,1.033],[-0.033,1.767],[-0.133,1.4],[0,0],[-0.333,1.533],[-0.067,0.967],[0.167,0.733],[0.567,0.233],[0.167,-0.167],[0.733,0.067],[9.867,-0.333],[3.533,-0.067],[0.3,0.033],[0,0],[0.5,0.267],[2.233,2.367],[0,0],[0.367,0.067],[0.067,0.1],[0.5,0.267],[0,0],[0.533,0.133],[0,0],[0.233,0.033],[0.333,0.2],[0,0],[0.233,-0.133],[2.733,-1.7],[0.867,-0.433],[0.2,-0.367],[-0.1,-0.233],[-0.033,-0.267],[0,-0.167],[0,0],[-0.133,-0.367],[-0.033,-0.767],[-0.233,-1.233],[-0.233,-1.367],[0,0],[0,-1.267],[0,0],[-0.133,-1.133],[-0.033,-0.233],[0.033,-0.267],[0.067,-0.7],[0,0],[0,0],[-0.1,-0.8],[-0.333,-0.4],[-0.167,-0.133],[0,0],[-0.333,-0.133]],"v":[[39.759,-12.125],[39.309,-12.275],[37.358,-13.175],[29.409,-16.125],[23.108,-17.775],[21.909,-17.975],[21.708,-18.175],[7.159,-31.525],[0.259,-37.125],[-11.491,-45.825],[-12.642,-46.225],[-13.892,-46.475],[-15.292,-45.575],[-24.542,-39.025],[-34.141,-32.925],[-37.991,-30.225],[-48.891,-22.525],[-49.191,-22.175],[-49.741,-21.925],[-50.241,-20.875],[-50.291,-19.725],[-50.841,-17.225],[-51.191,-11.975],[-51.491,-6.775],[-51.891,-3.675],[-52.441,-1.275],[-53.391,4.175],[-53.391,6.125],[-52.191,7.525],[-50.641,7.175],[-50.241,6.375],[-47.391,6.425],[-17.642,5.675],[-9.691,5.875],[-8.841,5.925],[2.909,24.425],[4.509,25.775],[13.958,37.025],[19.009,43.475],[20.159,43.725],[20.509,43.975],[22.458,44.775],[24.159,45.175],[26.559,45.875],[29.059,46.325],[29.659,46.375],[31.259,46.075],[37.809,42.425],[44.659,38.175],[51.659,34.325],[53.259,33.075],[53.259,31.875],[52.858,31.325],[52.509,30.625],[52.409,30.125],[51.759,28.675],[51.559,26.025],[51.259,23.225],[50.759,20.425],[50.208,12.975],[50.009,8.225],[49.809,4.875],[49.208,1.975],[48.909,-0.575],[48.809,-1.225],[48.909,-2.125],[48.608,-4.225],[48.309,-5.025],[48.159,-5.775],[46.559,-8.925],[45.759,-9.725],[44.608,-10.275],[40.608,-11.875]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[285.441,231.575],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.067,-0.2],[-0.333,-0.3],[0,0],[-0.267,-0.067],[-0.091,-0.025],[-0.294,-0.555],[-2.7,-5.733],[-3.9,-8.667],[-2.133,-4.3],[-5.067,-8.633],[-6.333,-10.2],[0,0],[-9.133,-11.9],[-4.1,-6.4],[-0.7,-0.267],[-0.567,0.233],[-0.084,0.078],[-2.38,0.321],[-1.5,0.333],[-1.7,0.433],[-4.567,-0.1],[-3.4,-0.167],[-2.067,0.533],[-0.433,0.4],[0.2,0.7],[1.1,0.133],[0.177,-0.009],[-0.273,1],[-0.033,0.1],[-0.167,1.067],[0,0],[-0.145,0.067],[-0.167,0.633],[0.233,0.567],[1.233,0.867],[18.5,15.067],[0,0],[0.705,-0.399],[2.091,7.399],[0,0],[1.5,6.7],[0.4,1.8],[0.7,2.233],[3,4.767],[0.413,-0.124],[0.306,-0.112],[1.733,-0.667],[0.867,-0.233],[0.867,-0.233],[2.133,-0.667],[0,0],[1.767,-0.633],[1.8,-0.6],[1.961,-0.359],[0.753,-0.157],[0.167,-0.1],[0,0],[0,0],[0.067,-0.633]],"o":[[0,0.433],[0.1,0.233],[0,0],[0.2,0.133],[0.109,0.042],[6.339,11.979],[3.9,7.467],[1.467,3.1],[3.333,7.433],[3.567,7.167],[3.033,5.167],[0,0],[3.9,5.967],[8.8,11.533],[0.833,1.3],[0.533,0.2],[0.116,-0.055],[1.853,0.721],[1.067,-0.133],[0.833,-0.2],[3.933,-0.833],[1.7,0.067],[2.933,0.033],[0.9,-0.233],[0.667,-0.6],[-0.2,-0.8],[-0.123,-0.009],[0.36,-1.933],[0.367,-1.233],[0.233,-0.833],[0,0],[0.155,-0.033],[0.533,-0.233],[0.167,-0.633],[-0.4,-0.867],[-18.667,-14.4],[0,0],[-1.228,-0.965],[-0.976,-3.734],[0,0],[-3.8,-13.2],[-0.733,-3.567],[-0.7,-3.067],[-1.733,-5.367],[-0.421,-0.691],[-0.194,-0.079],[-0.967,0.233],[-1.833,0.667],[-1.8,0.433],[-1.1,0.267],[0,0],[-2.967,0.933],[-3.567,1.4],[-2.372,0.841],[-0.547,-0.391],[-0.2,0],[0,0],[0,0],[-0.2,0.367],[0,0]],"v":[[-81.758,-85.148],[-81.659,-84.198],[-81.008,-83.398],[-80.359,-82.698],[-79.659,-82.398],[-79.359,-82.298],[-69.409,-63.498],[-59.508,-43.698],[-51.459,-26.048],[-43.258,-8.448],[-30.309,15.252],[-16.258,38.302],[-10.508,47.402],[9.042,74.202],[28.391,101.102],[30.691,103.452],[32.341,103.401],[32.641,103.202],[38.992,103.802],[42.842,103.102],[46.641,102.151],[59.391,101.052],[67.042,101.401],[74.541,100.651],[76.541,99.702],[77.242,97.751],[75.291,96.352],[74.842,96.352],[75.791,91.952],[76.391,89.952],[76.992,87.102],[80.092,68.001],[80.541,67.852],[81.592,66.552],[81.492,64.751],[79.041,62.152],[23.292,17.952],[5.691,3.552],[2.792,2.702],[-1.809,-13.998],[-9.909,-42.098],[-17.859,-71.948],[-19.559,-79.998],[-21.659,-87.948],[-28.758,-103.148],[-30.008,-103.998],[-30.758,-103.948],[-34.809,-102.598],[-38.859,-101.248],[-42.859,-100.248],[-47.709,-98.848],[-56.159,-96.148],[-63.258,-93.798],[-71.309,-90.798],[-77.809,-88.998],[-79.758,-89.348],[-80.309,-89.198],[-80.809,-88.848],[-81.359,-88.198],[-81.758,-86.698]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[182.258,280.648],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":17,"op":18,"st":17,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"17 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[265.307,312.178,0]},"a":{"k":[265.307,312.178,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.267,0.4],[2,-0.733],[0,0],[4.033,-1.967],[1.333,-0.667],[1.667,-0.7],[2.933,-1],[1.433,-0.633],[4,-1.967],[1.9,-0.5],[0.467,-0.3],[-0.2,-0.967],[-0.1,-0.167],[-0.033,-0.2],[0.2,-1.133],[0,0],[0.033,-0.467],[0.033,-2.167],[0.267,-1.467],[0.033,-1.033],[0,0],[0.067,-0.467],[0.3,-1.267],[-0.233,-0.5],[0.033,-0.4],[-0.267,-0.5],[-1.167,-0.8],[-5.167,-5.433],[-5.767,-6.467],[-14.233,-10.533],[-0.367,-0.2],[-0.033,-0.133],[-0.5,-0.233],[-1.567,1.967],[-2.033,3.033],[-1.933,3.4],[0,0],[-0.133,0.333],[-0.267,0.1],[-0.267,0.533],[0.067,0.567],[0.7,1.333],[2.533,5.3],[1.667,3.967],[2,6.533],[0.3,0.633],[0.233,0.333],[-0.033,0.233]],"o":[[-0.667,-0.933],[0,0],[-7.5,2.8],[-2.633,1.333],[-2.367,1.167],[-1.067,0.433],[-2.533,0.9],[-0.467,0.2],[-2.7,1.333],[-1.4,0.367],[-1.067,0.7],[0.033,0.167],[-0.033,0.167],[0,0.6],[0,0],[-0.233,2.5],[-0.067,1.1],[-0.067,0.733],[-0.3,1.533],[0,0],[0.033,0.7],[-0.1,0.633],[-0.067,0.7],[-0.233,0.267],[-0.067,0.533],[0.333,0.633],[4.433,3.233],[2.967,3.133],[11.6,12.5],[0.433,0.333],[0.033,0.1],[0.2,0.6],[1.233,0.667],[3.867,-4.533],[1.3,-1.867],[0,0],[0.233,-0.367],[0.267,0],[0.467,-0.2],[0.267,-0.467],[-0.067,-0.667],[-1.2,-2.2],[-4.133,-8.667],[-2.767,-6.7],[-0.4,-1.333],[-0.167,-0.4],[0.1,-0.2],[0.1,-0.533]],"v":[[40.45,-74.317],[36.45,-74.617],[-1.75,-60.167],[-19.05,-53.017],[-25,-50.017],[-31.05,-47.217],[-37.05,-45.067],[-43,-42.767],[-49.7,-39.517],[-56.6,-36.767],[-59.4,-35.767],[-60.7,-33.267],[-60.5,-32.767],[-60.5,-32.217],[-60.8,-29.617],[-62.45,-19.067],[-62.85,-14.617],[-63,-9.717],[-63.5,-6.417],[-64,-2.567],[-63.95,-0.767],[-64,0.983],[-64.6,3.833],[-64.35,5.633],[-64.75,6.633],[-64.45,8.183],[-62.2,10.333],[-47.8,23.333],[-34.7,37.733],[4.05,72.283],[5.25,73.083],[5.35,73.433],[6.4,74.683],[10.6,72.733],[19.45,61.383],[24.3,53.483],[62,-11.317],[62.55,-12.367],[63.35,-12.517],[64.45,-13.617],[64.75,-15.167],[63.6,-18.167],[58,-29.417],[49.3,-48.367],[42.15,-68.217],[41.1,-71.167],[40.5,-72.267],[40.7,-72.917]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[361.8,449.467],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.233,0.533],[1.933,0.5],[7.2,-0.3],[9.567,-1.633],[10.967,-2.367],[0.267,-0.133],[0.467,-0.233],[0.033,-1.033],[-0.667,-3.933],[0,0],[-1.133,-3.933],[-0.833,-5.067],[-0.2,-0.367],[-0.367,-0.2],[0,0],[-4.467,0.9],[-11.333,2.9],[-2,0.4],[10.767,7.133],[5.233,2.367]],"o":[[-2.4,-1],[-4.467,-1.1],[-7.9,0.367],[-6.333,1.067],[-0.4,0.1],[-0.467,-0.467],[-0.633,0.267],[-0.2,2.2],[0,0],[0.167,0.8],[1.333,4.6],[0.2,1.1],[0.267,0.467],[0,0],[8.967,-1.367],[5.667,-1.167],[2.133,-0.5],[-6.133,-17.467],[-2.7,-1.8],[-2.933,-1.367]],"v":[[18.125,-30.975],[11.625,-33.225],[-5.875,-34.425],[-32.075,-31.425],[-58.025,-26.275],[-59.025,-25.925],[-60.425,-26.275],[-61.425,-24.325],[-60.725,-15.125],[-56.775,9.925],[-54.825,17.025],[-51.575,31.525],[-50.975,33.725],[-50.025,34.725],[9.775,25.875],[29.925,22.475],[55.425,16.375],[61.625,15.025],[36.275,-21.875],[24.375,-28.125]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[318.725,134.475],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.5,1.567],[0.567,1.333],[0.038,0.067],[0.347,0.821],[1.5,0.8],[2.5,1.6],[8.8,6.833],[0,0],[1.6,0.933],[0.667,0.1],[0.431,-0.287],[0.028,0.076],[0.367,0.233],[0.433,0],[0.933,-0.433],[3.067,-1.8],[0.801,-0.484],[0.451,-0.355],[4.933,-3.267],[0,0],[0.248,-0.887],[0.151,-0.948],[0.2,-0.767],[0.467,-1.033],[0,0],[0.887,-3.649],[0,0],[-0.103,-0.003],[-0.007,-0.017],[-0.333,-0.267],[-0.333,0],[-0.167,0.333],[0,0],[0,0],[-2.1,0.1],[-2.8,0.367],[-4.567,0.833],[-0.203,0.062],[-0.191,-0.315],[-0.5,-0.733],[-7.667,-8.367],[-1.257,-0.403],[-1.741,0.904],[-0.017,0.239],[-0.557,0.391],[-0.467,0.267],[-3.5,1.5],[-1.237,0.581],[-1.592,0.961],[-0.167,0.4],[0.2,0.833],[0.337,3.189]],"o":[[-1.1,-4.7],[-0.667,-2.067],[-0.029,-0.066],[0.381,-0.846],[-0.433,-0.867],[-3,-1.733],[-5.333,-3.4],[0,0],[-2.433,-1.933],[-0.867,-0.533],[-0.669,-0.087],[-0.005,-0.057],[-0.133,-0.367],[-0.4,-0.2],[-0.633,0],[-1.633,0.767],[-0.299,0.183],[-0.849,0.745],[-2.067,1.633],[0,0],[-0.219,0.88],[-0.149,0.719],[-0.267,1.767],[-0.233,1],[0,0],[-0.813,3.218],[0,0],[0.13,0.031],[0.027,0.017],[0.067,0.233],[0.3,0.2],[0.4,0],[0,0],[0,0],[4.233,-0.133],[3.533,-0.2],[3.033,-0.367],[0.231,-0.038],[0.142,0.285],[4.8,7.333],[6.4,9.4],[1.51,1.663],[1.659,-0.763],[0.083,-0.228],[0.476,-0.275],[1.767,-1.2],[1.067,-0.633],[1.029,-0.452],[1.408,-0.839],[0.767,-0.5],[0.133,-0.367],[-0.829,-3.345],[0,0]],"v":[[49.609,4.575],[47.208,-4.825],[45.359,-9.925],[45.259,-10.125],[45.309,-12.625],[42.409,-15.125],[34.159,-20.125],[12.958,-35.475],[5.208,-41.425],[-0.841,-45.725],[-3.141,-46.675],[-4.792,-46.375],[-4.841,-46.575],[-5.591,-47.475],[-6.841,-47.775],[-9.191,-47.125],[-16.241,-43.275],[-17.891,-42.275],[-19.841,-40.625],[-30.341,-33.275],[-47.441,-22.175],[-48.141,-19.525],[-48.591,-17.025],[-49.291,-13.225],[-50.341,-10.175],[-50.891,-9.125],[-53.441,1.175],[-55.341,8.725],[-54.991,8.775],[-54.941,8.825],[-54.341,9.575],[-53.391,9.875],[-52.541,9.375],[-52.241,8.675],[-35.841,8.175],[-26.341,7.825],[-16.841,6.975],[-5.441,5.175],[-4.792,5.025],[-4.292,5.925],[3.659,18.025],[24.759,44.675],[28.909,47.775],[34.009,45.275],[34.159,44.575],[35.708,43.575],[39.059,41.375],[45.909,38.175],[49.309,36.625],[53.809,33.925],[55.208,32.575],[55.109,30.775],[53.359,20.975]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[278.541,231.875],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.1,-0.5],[-0.767,-1.133],[-1.433,-3.433],[-2.2,-5.833],[-5.067,-8.567],[-1.133,-1.9],[-0.6,-1.233],[-0.867,-2.5],[-0.933,-2.867],[-6.333,-11.267],[-8.333,-13],[0,0],[-0.733,-0.4],[-0.567,0.1],[-0.059,0.017],[-0.281,-0.022],[-2.033,0.2],[-2.3,0.267],[-2.9,0.033],[-1.467,0.133],[-3.3,0.533],[-1.7,0.033],[0,0],[-0.467,0.133],[-0.419,0.448],[-0.098,0.005],[-0.567,1.867],[0.1,9.9],[0.967,1.9],[2.433,2.133],[3.633,2.6],[6.033,4.233],[0,0],[12.841,11.761],[0.205,0.679],[0,0],[8.033,25.167],[0.533,0.167],[0.333,-0.233],[0,0],[0.031,0.011],[0.733,-0.133],[1,-0.433],[0.333,-0.1],[2.5,-0.267],[0.933,-0.2],[1.367,-0.433],[0.633,-0.133],[1.533,-0.333],[7.633,-2.8],[0.199,-0.077],[0.441,-0.179],[0.2,-0.5]],"o":[[0.133,0.6],[1.567,2.333],[0.1,0.267],[3.6,9.4],[0.567,0.967],[0.967,1.733],[0.833,1.733],[0.5,1.433],[3.367,9.767],[3.833,6.8],[0,0],[0.767,1.233],[0.533,0.267],[0.074,-0.017],[0.252,0.045],[1.433,0.133],[1.167,-0.133],[1.367,-0.1],[2.833,0],[1.167,-0.1],[2.8,-0.467],[0,0],[0.6,-0.033],[0.781,-0.185],[0.102,0.005],[1.1,-0.067],[3.167,-9.3],[-0.067,-3.667],[-0.867,-1.7],[-2.567,-2.2],[-0.367,-0.3],[0,0],[-13.693,-10.039],[0.005,-0.488],[0,0],[-6.833,-25],[-0.333,-1],[-0.333,-0.1],[0,0],[-0.035,0.011],[-0.433,-0.167],[-0.667,0.133],[-1.3,0.533],[-1.433,0.5],[-3.1,0.333],[-0.833,0.167],[-1.6,0.5],[-3.067,0.633],[-4.067,0.8],[-0.235,0.089],[-0.459,-0.146],[-0.4,0.2],[-0.167,0.467]],"v":[[-78.8,-89.017],[-77.45,-86.417],[-72.95,-77.767],[-69.5,-68.616],[-56.5,-41.667],[-53.95,-37.366],[-51.6,-32.917],[-49.05,-26.566],[-46.9,-20.116],[-32.35,11.434],[-14.1,41.133],[24.75,101.633],[27,104.083],[28.65,104.333],[28.85,104.284],[29.65,104.383],[34.85,104.284],[40.05,103.683],[46.45,103.483],[52.9,103.284],[59.6,102.333],[66.35,101.583],[68,101.583],[69.6,101.333],[71.4,100.383],[71.7,100.383],[74.2,97.483],[78.8,68.683],[77.25,60.333],[72.3,54.583],[63,47.383],[53.4,40.583],[46.5,35.583],[6.7,2.884],[6.4,1.134],[-1.3,-27.417],[-23.6,-102.667],[-24.9,-104.417],[-25.9,-104.216],[-25.95,-104.216],[-26.05,-104.216],[-27.8,-104.267],[-30.3,-103.417],[-32.75,-102.466],[-38.65,-101.316],[-44.7,-100.517],[-48,-99.616],[-51.35,-98.667],[-58.25,-97.216],[-75.8,-91.816],[-76.45,-91.566],[-77.8,-91.517],[-78.7,-90.466]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[182.9,281.917],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":18,"op":19,"st":18,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"18 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[265.307,312.882,0]},"a":{"k":[265.307,312.882,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.267,0.4],[2,-0.733],[0,0],[4.033,-1.967],[1.333,-0.667],[1.667,-0.7],[2.933,-1],[1.433,-0.633],[4,-1.967],[1.9,-0.5],[0.467,-0.3],[-0.2,-0.967],[-0.1,-0.167],[-0.033,-0.2],[0.2,-1.133],[0,0],[0.033,-0.467],[0.033,-2.167],[0.267,-1.467],[0.033,-1.033],[0,0],[0.067,-0.467],[0.3,-1.267],[-0.233,-0.5],[0.033,-0.4],[-0.267,-0.5],[-1.167,-0.8],[-5.167,-5.433],[-5.767,-6.467],[-14.233,-10.533],[-0.367,-0.2],[-0.033,-0.133],[-0.5,-0.233],[-1.567,1.967],[-2.033,3.033],[-1.933,3.4],[0,0],[-0.133,0.333],[-0.267,0.1],[-0.267,0.533],[0.067,0.567],[0.7,1.333],[2.533,5.3],[1.667,3.967],[2,6.533],[0.3,0.633],[0.233,0.333],[-0.033,0.233]],"o":[[-0.667,-0.933],[0,0],[-7.5,2.8],[-2.633,1.333],[-2.367,1.167],[-1.067,0.433],[-2.533,0.9],[-0.467,0.2],[-2.7,1.333],[-1.4,0.367],[-1.067,0.7],[0.033,0.167],[-0.033,0.167],[0,0.6],[0,0],[-0.233,2.5],[-0.067,1.1],[-0.067,0.733],[-0.3,1.533],[0,0],[0.033,0.7],[-0.1,0.633],[-0.067,0.7],[-0.233,0.267],[-0.067,0.533],[0.333,0.633],[4.433,3.233],[2.967,3.133],[11.6,12.5],[0.433,0.333],[0.033,0.1],[0.2,0.6],[1.233,0.667],[3.867,-4.533],[1.3,-1.867],[0,0],[0.233,-0.367],[0.267,0],[0.467,-0.2],[0.267,-0.467],[-0.067,-0.667],[-1.2,-2.2],[-4.133,-8.667],[-2.767,-6.7],[-0.4,-1.333],[-0.167,-0.4],[0.1,-0.2],[0.1,-0.533]],"v":[[40.45,-74.317],[36.45,-74.617],[-1.75,-60.167],[-19.05,-53.017],[-25,-50.017],[-31.05,-47.217],[-37.05,-45.067],[-43,-42.767],[-49.7,-39.517],[-56.6,-36.767],[-59.4,-35.767],[-60.7,-33.267],[-60.5,-32.767],[-60.5,-32.217],[-60.8,-29.617],[-62.45,-19.067],[-62.85,-14.617],[-63,-9.717],[-63.5,-6.417],[-64,-2.567],[-63.95,-0.767],[-64,0.983],[-64.6,3.833],[-64.35,5.633],[-64.75,6.633],[-64.45,8.183],[-62.2,10.333],[-47.8,23.333],[-34.7,37.733],[4.05,72.283],[5.25,73.083],[5.35,73.433],[6.4,74.683],[10.6,72.733],[19.45,61.383],[24.3,53.483],[62,-11.317],[62.55,-12.367],[63.35,-12.517],[64.45,-13.617],[64.75,-15.167],[63.6,-18.167],[58,-29.417],[49.3,-48.367],[42.15,-68.217],[41.1,-71.167],[40.5,-72.267],[40.7,-72.917]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[361.8,449.467],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.067,3.367],[0,0],[0.7,0.767],[1.2,1],[1.667,1.133],[0.5,0.433],[0.667,0.5],[3.3,1.167],[0,0],[0.506,0.11],[0,0],[0.967,0.167],[7.4,-0.933],[5.5,-0.833],[5.433,-1.033],[6.281,-1.569],[0.083,0.096],[0.267,0],[0,0],[0.067,-0.433],[-0.067,-0.267],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.119],[0.085,-0.171],[-0.033,-0.3],[-0.6,-3.5],[-0.133,-1.633],[-0.1,-2.833],[-0.6,-4.6],[-0.6,-2.667],[-0.833,-2.967],[-0.267,-1.5],[0,0],[-0.198,-0.165],[-0.576,0],[-0.533,0.267],[-6.6,2],[-32.3,5.133],[-0.235,0.117],[0,0],[-0.5,0.067],[-0.133,0.567],[0.133,0.533],[1.533,3.233]],"o":[[0,0],[-1.267,-1.967],[-0.5,-0.533],[-2.033,-1.7],[-2.333,-1.6],[-1.2,-1.2],[-1.367,-1.1],[0,0],[-0.194,-0.19],[0,0],[-2.2,-0.533],[-4.733,-0.833],[-2.967,0.367],[-9.3,1.433],[-7.719,1.397],[-0.051,-0.104],[-0.267,-0.267],[0,0],[-0.467,0],[-0.033,0.167],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.247],[-0.115,0.062],[-0.133,0.233],[0.1,2],[0.633,3.833],[0.133,1.4],[0.1,2.333],[0.567,4.533],[0.2,0.867],[0.633,2.333],[0,0],[0.102,0.435],[0.157,0.4],[0.333,-0.033],[3.067,-1.533],[31.8,-9.367],[0.331,-0.049],[0,0],[0.3,0.567],[0.5,-0.067],[0.1,-0.433],[-0.6,-2.9],[-1.1,-2.333]],"v":[[54.867,-7.809],[50.167,-15.408],[47.216,-19.508],[44.667,-21.809],[39.117,-26.059],[34.867,-29.109],[32.066,-31.658],[25.066,-35.059],[21.716,-36.258],[20.667,-36.709],[17.767,-37.408],[13.017,-38.459],[-5.184,-38.309],[-17.883,-36.508],[-39.983,-32.809],[-60.983,-28.359],[-61.183,-28.658],[-61.983,-29.059],[-62.133,-29.008],[-62.933,-28.359],[-62.883,-27.709],[-62.683,-27.109],[-62.483,-26.809],[-62.383,-26.209],[-62.333,-24.109],[-62.233,-23.609],[-62.233,-23.158],[-62.183,-22.609],[-62.483,-22.258],[-62.633,-21.459],[-61.583,-13.209],[-60.433,-5.008],[-60.083,1.342],[-59.034,11.742],[-57.284,22.541],[-55.733,28.291],[-54.383,34.041],[-53.633,37.791],[-53.184,38.691],[-52.083,39.291],[-50.784,38.842],[-36.284,33.541],[59.867,11.791],[60.716,11.541],[60.716,11.592],[61.917,12.342],[62.867,11.391],[62.816,9.941],[59.617,0.742]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[315.383,140.409],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.5,1.567],[0.567,1.333],[0.038,0.067],[0.347,0.821],[1.5,0.8],[2.5,1.6],[8.8,6.833],[0,0],[1.6,0.933],[0.667,0.1],[0.431,-0.287],[0.028,0.076],[0.367,0.233],[0.433,0],[0.933,-0.433],[3.067,-1.8],[0.801,-0.484],[0.451,-0.355],[4.933,-3.267],[0,0],[0.248,-0.887],[0.151,-0.948],[0.2,-0.767],[0.467,-1.033],[0,0],[0.887,-3.649],[0,0],[-0.103,-0.003],[-0.007,-0.017],[-0.333,-0.267],[-0.333,0],[-0.167,0.333],[0,0],[0,0],[-2.1,0.1],[-2.8,0.367],[-4.567,0.833],[-0.203,0.062],[-0.191,-0.315],[-0.5,-0.733],[-7.667,-8.367],[-1.257,-0.403],[-1.741,0.904],[-0.017,0.239],[-0.557,0.391],[-0.467,0.267],[-3.5,1.5],[-1.237,0.581],[-1.592,0.961],[-0.167,0.4],[0.2,0.833],[0.337,3.189]],"o":[[-1.1,-4.7],[-0.667,-2.067],[-0.029,-0.066],[0.381,-0.846],[-0.433,-0.867],[-3,-1.733],[-5.333,-3.4],[0,0],[-2.433,-1.933],[-0.867,-0.533],[-0.669,-0.087],[-0.005,-0.057],[-0.133,-0.367],[-0.4,-0.2],[-0.633,0],[-1.633,0.767],[-0.299,0.183],[-0.849,0.745],[-2.067,1.633],[0,0],[-0.219,0.88],[-0.149,0.719],[-0.267,1.767],[-0.233,1],[0,0],[-0.813,3.218],[0,0],[0.13,0.031],[0.027,0.017],[0.067,0.233],[0.3,0.2],[0.4,0],[0,0],[0,0],[4.233,-0.133],[3.533,-0.2],[3.033,-0.367],[0.231,-0.038],[0.142,0.285],[4.8,7.333],[6.4,9.4],[1.51,1.663],[1.659,-0.763],[0.083,-0.228],[0.476,-0.275],[1.767,-1.2],[1.067,-0.633],[1.029,-0.452],[1.408,-0.839],[0.767,-0.5],[0.133,-0.367],[-0.829,-3.345],[0,0]],"v":[[49.609,4.575],[47.208,-4.825],[45.359,-9.925],[45.259,-10.125],[45.309,-12.625],[42.409,-15.125],[34.159,-20.125],[12.958,-35.475],[5.208,-41.425],[-0.841,-45.725],[-3.141,-46.675],[-4.792,-46.375],[-4.841,-46.575],[-5.591,-47.475],[-6.841,-47.775],[-9.191,-47.125],[-16.241,-43.275],[-17.891,-42.275],[-19.841,-40.625],[-30.341,-33.275],[-47.441,-22.175],[-48.141,-19.525],[-48.591,-17.025],[-49.291,-13.225],[-50.341,-10.175],[-50.891,-9.125],[-53.441,1.175],[-55.341,8.725],[-54.991,8.775],[-54.941,8.825],[-54.341,9.575],[-53.391,9.875],[-52.541,9.375],[-52.241,8.675],[-35.841,8.175],[-26.341,7.825],[-16.841,6.975],[-5.441,5.175],[-4.792,5.025],[-4.292,5.925],[3.659,18.025],[24.759,44.675],[28.909,47.775],[34.009,45.275],[34.159,44.575],[35.708,43.575],[39.059,41.375],[45.909,38.175],[49.309,36.625],[53.809,33.925],[55.208,32.575],[55.109,30.775],[53.359,20.975]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[278.541,231.875],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.1,-0.5],[-0.767,-1.133],[-1.433,-3.433],[-2.2,-5.833],[-5.067,-8.567],[-1.133,-1.9],[-0.6,-1.233],[-0.867,-2.5],[-0.933,-2.867],[-6.333,-11.267],[-8.333,-13],[0,0],[-0.733,-0.4],[-0.567,0.1],[-0.059,0.017],[-0.281,-0.022],[-2.033,0.2],[-2.3,0.267],[-2.9,0.033],[-1.467,0.133],[-3.3,0.533],[-1.7,0.033],[0,0],[-0.467,0.133],[-0.419,0.448],[-0.098,0.005],[-0.567,1.867],[0.1,9.9],[0.967,1.9],[2.433,2.133],[3.633,2.6],[6.033,4.233],[0,0],[12.841,11.761],[0.205,0.679],[0,0],[8.033,25.167],[0.533,0.167],[0.333,-0.233],[0,0],[0.031,0.011],[0.733,-0.133],[1,-0.433],[0.333,-0.1],[2.5,-0.267],[0.933,-0.2],[1.367,-0.433],[0.633,-0.133],[1.533,-0.333],[7.633,-2.8],[0.199,-0.077],[0.441,-0.179],[0.2,-0.5]],"o":[[0.133,0.6],[1.567,2.333],[0.1,0.267],[3.6,9.4],[0.567,0.967],[0.967,1.733],[0.833,1.733],[0.5,1.433],[3.367,9.767],[3.833,6.8],[0,0],[0.767,1.233],[0.533,0.267],[0.074,-0.017],[0.252,0.045],[1.433,0.133],[1.167,-0.133],[1.367,-0.1],[2.833,0],[1.167,-0.1],[2.8,-0.467],[0,0],[0.6,-0.033],[0.781,-0.185],[0.102,0.005],[1.1,-0.067],[3.167,-9.3],[-0.067,-3.667],[-0.867,-1.7],[-2.567,-2.2],[-0.367,-0.3],[0,0],[-13.693,-10.039],[0.005,-0.488],[0,0],[-6.833,-25],[-0.333,-1],[-0.333,-0.1],[0,0],[-0.035,0.011],[-0.433,-0.167],[-0.667,0.133],[-1.3,0.533],[-1.433,0.5],[-3.1,0.333],[-0.833,0.167],[-1.6,0.5],[-3.067,0.633],[-4.067,0.8],[-0.235,0.089],[-0.459,-0.146],[-0.4,0.2],[-0.167,0.467]],"v":[[-78.8,-89.017],[-77.45,-86.417],[-72.95,-77.767],[-69.5,-68.616],[-56.5,-41.667],[-53.95,-37.366],[-51.6,-32.917],[-49.05,-26.566],[-46.9,-20.116],[-32.35,11.434],[-14.1,41.133],[24.75,101.633],[27,104.083],[28.65,104.333],[28.85,104.284],[29.65,104.383],[34.85,104.284],[40.05,103.683],[46.45,103.483],[52.9,103.284],[59.6,102.333],[66.35,101.583],[68,101.583],[69.6,101.333],[71.4,100.383],[71.7,100.383],[74.2,97.483],[78.8,68.683],[77.25,60.333],[72.3,54.583],[63,47.383],[53.4,40.583],[46.5,35.583],[6.7,2.884],[6.4,1.134],[-1.3,-27.417],[-23.6,-102.667],[-24.9,-104.417],[-25.9,-104.216],[-25.95,-104.216],[-26.05,-104.216],[-27.8,-104.267],[-30.3,-103.417],[-32.75,-102.466],[-38.65,-101.316],[-44.7,-100.517],[-48,-99.616],[-51.35,-98.667],[-58.25,-97.216],[-75.8,-91.816],[-76.45,-91.566],[-77.8,-91.517],[-78.7,-90.466]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[182.9,281.917],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":19,"op":20,"st":19,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"19 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[252.585,295.634,0]},"a":{"k":[252.585,295.634,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[8.533,6.5],[3.667,3.267],[3.8,5.233],[3.3,4.867],[1.8,1.967],[0.467,0.533],[0.5,0.7],[0.967,1.8],[0.667,0.733],[1.233,0.1],[0.5,-0.867],[0.6,-0.367],[4,-1.033],[2.667,-0.433],[0,0],[0.333,-0.3],[0,0],[0.4,-0.433],[-0.133,-1.033],[-0.433,-1.167],[-1.3,-8.2],[-0.8,-3.1],[-0.7,-2.667],[-0.433,-3.667],[-0.433,-9.7],[-0.4,-0.933],[-0.633,-0.533],[-0.167,-0.067],[-0.867,-0.667],[0,0],[-4.553,-4.079],[-2.933,-3.2],[-4.167,-5.367],[0,0],[-0.633,-0.4],[-0.177,-0.097],[-0.921,-0.217],[-0.519,0.203],[-0.375,-0.079],[-0.733,0.333],[-0.533,0.6],[-0.7,1.8],[-4.1,6.533],[-1.933,2.8],[-0.633,0.967],[-2.533,4.2],[-0.433,0.867],[-0.233,1.267],[0,0],[-0.482,0.418],[-0.033,0.9],[0.133,0.567],[0,0.033],[0.133,0.567],[0.6,1.2],[0.433,2.833],[0.133,0.6],[0,0],[1,2.567],[0.467,1],[0.6,0.367],[0.431,0.109],[0.25,0.161]],"o":[[-7.5,-5.667],[-5.967,-5.233],[-0.533,-0.733],[-2.333,-3.433],[-0.967,-1],[-0.8,-0.9],[-0.267,-0.433],[-0.767,-1.4],[-0.933,-0.967],[-1.2,-0.167],[-0.5,0.233],[-3.8,2.1],[-1.833,0.5],[0,0],[-0.9,0.167],[0,0],[-0.667,0.033],[-0.467,0.533],[0.1,0.667],[1.8,4.8],[1.567,10.067],[0.333,1.333],[0.4,1.833],[1.1,10.2],[0.167,2.3],[0.367,0.833],[0.1,0.1],[0.4,0.5],[0,0],[2.681,2.588],[6,5.4],[2.6,2.833],[0,0],[1.133,1.4],[0.19,0.137],[0.979,1.283],[0.548,0.137],[0.325,0.221],[0.733,0.133],[0.7,-0.3],[0.733,-0.867],[4.733,-11.7],[1.1,-1.767],[2.467,-3.567],[1.333,-2.033],[1,-1.667],[0.667,-1.433],[0,0],[0.551,-0.149],[0.767,-0.7],[0.033,-0.367],[-0.2,-0.9],[-0.067,-1.167],[-0.1,-0.433],[-0.8,-1.667],[-0.633,-4.033],[0,0],[-0.667,-2.233],[-0.3,-0.8],[-0.667,-1.167],[-0.435,-0.291],[-0.217,-0.139],[-4.167,-2.633]],"v":[[31.55,-29.733],[14.8,-43.133],[0.15,-58.833],[-5.6,-67.233],[-11.8,-75.333],[-13.95,-77.633],[-15.9,-80.033],[-17.75,-83.383],[-19.9,-86.583],[-23.15,-88.183],[-25.7,-87.133],[-27.35,-86.233],[-39.05,-81.533],[-45.8,-80.133],[-59.4,-77.633],[-61.25,-76.933],[-61.4,-76.783],[-63,-76.083],[-63.5,-73.733],[-62.7,-70.983],[-58.05,-51.483],[-54.5,-31.733],[-52.95,-25.733],[-51.7,-17.483],[-49.4,12.367],[-48.55,17.217],[-47.05,19.267],[-46.65,19.517],[-44.75,21.267],[-34.45,29.067],[-23.6,39.067],[-10.2,51.967],[-0.05,64.267],[14.2,82.567],[16.85,85.267],[17.4,85.617],[20.25,87.867],[21.85,87.767],[22.9,88.217],[25.1,87.917],[26.95,86.567],[29.1,82.567],[42.35,55.217],[46.9,48.367],[51.55,41.567],[57.35,32.217],[59.5,28.417],[60.85,24.367],[60.85,24.317],[62.4,23.467],[63.6,21.067],[63.45,19.667],[63.15,18.267],[62.85,15.667],[61.8,13.217],[59.95,6.467],[58.8,-0.483],[58.15,-2.783],[55.65,-9.983],[54.5,-12.683],[52.6,-14.983],[51.3,-15.583],[50.6,-16.033]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[327.8,401.633],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.067,3.367],[0,0],[0.7,0.767],[1.2,1],[1.667,1.133],[0.5,0.433],[0.667,0.5],[3.3,1.167],[0,0],[0.506,0.11],[0,0],[0.967,0.167],[7.4,-0.933],[5.5,-0.833],[5.433,-1.033],[6.281,-1.569],[0.083,0.096],[0.267,0],[0,0],[0.067,-0.433],[-0.067,-0.267],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.119],[0.085,-0.171],[-0.033,-0.3],[-0.6,-3.5],[-0.133,-1.633],[-0.1,-2.833],[-0.6,-4.6],[-0.6,-2.667],[-0.833,-2.967],[-0.267,-1.5],[0,0],[-0.198,-0.165],[-0.576,0],[-0.533,0.267],[-6.6,2],[-32.3,5.133],[-0.235,0.117],[0,0],[-0.5,0.067],[-0.133,0.567],[0.133,0.533],[1.533,3.233]],"o":[[0,0],[-1.267,-1.967],[-0.5,-0.533],[-2.033,-1.7],[-2.333,-1.6],[-1.2,-1.2],[-1.367,-1.1],[0,0],[-0.194,-0.19],[0,0],[-2.2,-0.533],[-4.733,-0.833],[-2.967,0.367],[-9.3,1.433],[-7.719,1.397],[-0.051,-0.104],[-0.267,-0.267],[0,0],[-0.467,0],[-0.033,0.167],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.247],[-0.115,0.062],[-0.133,0.233],[0.1,2],[0.633,3.833],[0.133,1.4],[0.1,2.333],[0.567,4.533],[0.2,0.867],[0.633,2.333],[0,0],[0.102,0.435],[0.157,0.4],[0.333,-0.033],[3.067,-1.533],[31.8,-9.367],[0.331,-0.049],[0,0],[0.3,0.567],[0.5,-0.067],[0.1,-0.433],[-0.6,-2.9],[-1.1,-2.333]],"v":[[54.867,-7.809],[50.167,-15.408],[47.216,-19.508],[44.667,-21.809],[39.117,-26.059],[34.867,-29.109],[32.066,-31.658],[25.066,-35.059],[21.716,-36.258],[20.667,-36.709],[17.767,-37.408],[13.017,-38.459],[-5.184,-38.309],[-17.883,-36.508],[-39.983,-32.809],[-60.983,-28.359],[-61.183,-28.658],[-61.983,-29.059],[-62.133,-29.008],[-62.933,-28.359],[-62.883,-27.709],[-62.683,-27.109],[-62.483,-26.809],[-62.383,-26.209],[-62.333,-24.109],[-62.233,-23.609],[-62.233,-23.158],[-62.183,-22.609],[-62.483,-22.258],[-62.633,-21.459],[-61.583,-13.209],[-60.433,-5.008],[-60.083,1.342],[-59.034,11.742],[-57.284,22.541],[-55.733,28.291],[-54.383,34.041],[-53.633,37.791],[-53.184,38.691],[-52.083,39.291],[-50.784,38.842],[-36.284,33.541],[59.867,11.791],[60.716,11.541],[60.716,11.592],[61.917,12.342],[62.867,11.391],[62.816,9.941],[59.617,0.742]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[315.383,140.409],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.233,1.633],[0.133,0.367],[0.467,0.367],[0.033,-0.033],[0.1,0.133],[2.233,1.267],[3.433,1.6],[2.267,1.2],[0,0],[3.167,1.867],[0,0],[3.067,1.367],[0,0],[0.2,0.1],[0.267,-0.1],[0.1,-0.067],[0.1,-0.067],[2.367,-1],[5.867,-3.033],[1.233,-0.4],[0.1,-0.3],[-0.2,-0.267],[-0.3,-0.067],[1.733,-4.967],[0.367,-1.3],[-0.033,-5.633],[0.033,-0.267],[-0.233,-0.3],[-0.067,-0.033],[-0.633,-0.033],[-0.267,0.5],[-0.5,-0.067],[-15.8,-1.1],[0,0],[-0.1,-0.033],[-0.5,-0.467],[0,0],[-0.833,-0.633],[-1.8,-1.167],[-2.567,-1.6],[-8.533,-4.8],[-0.5,-0.233],[-0.467,-0.233],[-0.933,0.267],[-1.033,0.367],[-1.933,1.567],[-1.333,1.333],[-0.333,0.467],[-0.133,0.133],[-0.233,0.533],[-0.133,0.3],[-0.133,0.467],[-0.333,0.933],[-0.1,0.3],[0.2,1.2],[0.2,1.1],[0.5,4.667],[0.533,2.3],[1,3.267]],"o":[[-0.133,-1],[-0.2,-0.733],[0,0.033],[-0.067,-0.167],[-1.1,-1.6],[-0.7,-0.4],[-1.167,-0.533],[0,0],[-4.233,-2.2],[0,0],[-1.2,-0.633],[0,0],[0.1,-0.267],[-0.067,-0.033],[-0.133,0.067],[-0.133,0.067],[-1.567,0.767],[-12.133,5.267],[-2.6,1.333],[-0.633,0.2],[-0.1,0.267],[0.167,0.233],[-1.2,2.667],[-1.367,4.233],[-1.367,5.3],[-0.3,0.033],[0,0.133],[0.067,0.067],[0.133,1.033],[0.5,0.067],[0.4,0.1],[8.4,1.3],[0,0],[0.1,0],[0.067,0.333],[0,0],[1.6,1.4],[1.267,0.967],[4,2.6],[4.167,2.6],[0.667,0.367],[0.2,0.433],[0.533,0.233],[1.067,-0.233],[1.933,-1.367],[0.867,-0.967],[0.733,-0.867],[0.1,-0.167],[0.233,-0.433],[0.167,-0.3],[0.1,-0.333],[0.833,-1.833],[0.133,-0.367],[-0.067,-1],[-0.467,-2.133],[-0.333,-1.833],[-0.433,-4.167],[-0.2,-0.833],[-0.767,-2.533]],"v":[[47.7,-13.675],[47.3,-15.725],[46.3,-17.375],[46.25,-17.275],[46,-17.725],[41,-22.025],[34.8,-25.025],[29.65,-27.625],[22.55,-31.375],[11.45,-37.475],[5.6,-40.925],[-0.8,-43.925],[-5.35,-45.925],[-5.5,-46.475],[-6,-46.375],[-6.35,-46.175],[-6.7,-45.975],[-12.6,-43.325],[-39.6,-30.875],[-45.35,-28.275],[-46.45,-27.525],[-46.3,-26.725],[-45.6,-26.275],[-50,-14.825],[-52.6,-6.525],[-54.6,9.875],[-55.1,10.325],[-54.75,10.975],[-54.55,11.125],[-53.4,12.725],[-52.25,12.075],[-50.9,12.325],[-14.6,15.925],[-9.6,16.275],[-9.3,16.325],[-8.45,17.525],[-4.8,20.725],[-1.15,23.775],[3.45,26.975],[13.3,33.275],[32.35,44.375],[34.1,45.275],[35.1,46.275],[37.3,46.225],[40.45,45.325],[46.25,40.925],[49.55,37.475],[51.15,35.475],[51.5,35.025],[52.2,33.575],[52.65,32.675],[53,31.475],[54.75,27.325],[55.1,26.325],[54.7,23.025],[53.7,18.175],[52.45,8.425],[51,-1.275],[49.2,-7.425]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[277.15,238.225],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.533,-0.267],[5.833,-0.5],[5.967,-1.267],[2.6,-0.633],[0,0],[0.152,0.035],[3.167,-1.267],[0.433,-1],[-0.6,-1.233],[-1.067,-1.5],[-1.133,-3.033],[-1.167,-3.567],[-3.2,-6.3],[-1.2,-2.833],[-1.033,-2.7],[-0.767,-1.6],[-1.733,-3],[0,0],[-2.228,-5.683],[-0.727,-1.603],[-0.121,-0.883],[-0.116,-0.299],[-0.179,-0.972],[-0.533,-2.067],[-1.4,-3.333],[-1.167,-2.4],[-0.467,-1.033],[-2.067,-10.533],[-0.865,-4.358],[0,-0.069],[0,-1.033],[-0.1,-0.474],[0.067,-0.087],[0,-0.7],[-0.367,-0.567],[-1.533,-0.133],[-0.254,0.009],[-0.014,-0.153],[-0.181,0.048],[-0.615,0.193],[-0.657,-0.131],[-0.267,0.033],[-0.6,0.333],[-0.514,0.149],[-1.833,0.442],[-0.063,0.017],[-1.995,0.359],[0,0],[-1.9,0.167],[-0.884,0.178],[-0.058,0.01],[-0.061,0.022],[0,0],[-2.273,0.412],[0,0],[0,0],[-0.071,0.421],[0.067,0.433],[0.036,0.202],[-0.049,0.362],[0,0],[-0.102,0.305],[0,0],[-0.012,0.089],[-0.009,0.033],[-0.291,1.213],[-0.161,0.666],[-0.367,2.633],[-1.167,3.633],[-0.267,1.867],[-0.1,0.3],[-0.132,0.36],[0,0],[0.4,1],[1.6,1.467],[2.4,2.267],[3.6,1.933],[0.357,-0.027],[1.949,4.642],[1.881,3.179],[-0.028,0.478],[-0.003,2.362],[0,0],[0,0.867],[0.467,1.867],[2.244,5.71],[0,0],[-0.074,0.939],[-0.067,4.867],[0,0],[-0.019,2.153],[0.552,4.91],[0.3,0.233],[0.045,0.017],[0.014,0.083],[0.6,0.433],[0.567,-0.3],[0.032,-0.018],[0,0],[2.7,-0.5]],"o":[[-3.367,0.6],[-10.4,1],[-3.033,0.667],[0,0],[-0.115,-0.032],[-1.767,-0.333],[-1.967,0.767],[-0.4,0.9],[0.233,0.5],[1.4,1.9],[0.667,1.767],[1.4,3.833],[3.633,7.2],[0.567,1.367],[0.967,2.433],[1,2.067],[0,0],[5.872,12.783],[3.406,8.697],[0.179,0.917],[0.051,0.434],[0.055,0.861],[0.167,0.833],[1.967,7.167],[0.6,1.433],[1.333,2.8],[2.833,6.467],[1.601,8.209],[-0.133,0.665],[-0.1,0.5],[0,0.959],[-0.066,0.079],[-0.433,0.533],[-0.033,0.733],[0.7,0.967],[0.146,0.009],[0.019,0.147],[0.186,-0.052],[0.652,-0.173],[0.343,0.435],[0.367,0.1],[0.367,-0.067],[0.319,-0.151],[1.001,0.275],[0.07,-0.017],[3.639,-0.007],[0,0],[1,-0.2],[1.883,-0.189],[0.075,0.01],[0.072,-0.011],[0,0],[1.793,-0.255],[0,0],[0,0],[0.396,-0.379],[0.033,-0.233],[-0.064,-0.298],[0.084,-0.371],[0,0],[0.065,-0.261],[0,0],[0.021,-0.078],[0.024,-0.034],[0.442,-1.154],[0.405,-1.067],[0.1,-0.433],[0.3,-1.9],[1.2,-3.667],[0.3,-1.867],[0.101,-0.407],[0,0],[0.267,-2.167],[-0.367,-0.967],[-4.733,-4.667],[-4.233,-4.033],[-0.509,-0.294],[-1.251,-2.658],[-2.453,-5.854],[0.105,-1.322],[0.063,-1.338],[0,0],[0.333,-1.733],[0,-0.933],[-1.456,-6.023],[0,0],[0.159,-1.327],[0.2,-2.433],[0,0],[0.048,-3.847],[0.685,-6.623],[-0.067,-0.667],[-0.021,-0.016],[0.014,-0.084],[-0.133,-0.667],[-0.633,-0.467],[-0.035,0.015],[0,0],[-1.9,0.067],[-3.033,0.633]],"v":[[6.867,-110.842],[-6.934,-109.191],[-31.484,-105.792],[-39.934,-103.842],[-54.034,-100.441],[-54.434,-100.542],[-61.833,-99.142],[-65.434,-96.492],[-65.133,-93.292],[-63.184,-90.292],[-59.383,-82.892],[-56.633,-74.892],[-49.734,-59.691],[-42.484,-44.642],[-40.084,-38.542],[-37.484,-32.492],[-33.383,-24.892],[-33.034,-24.242],[-20.883,3.458],[-14.684,18.908],[-14.234,21.608],[-13.984,22.708],[-13.633,25.458],[-12.584,29.808],[-7.534,45.558],[-4.883,51.308],[-2.184,57.058],[5.166,82.558],[8.867,101.408],[8.666,102.508],[8.516,104.808],[8.666,106.958],[8.466,107.208],[7.816,109.058],[8.316,111.008],[11.666,112.658],[12.266,112.658],[12.316,113.108],[12.867,112.958],[14.766,112.408],[16.266,113.258],[17.216,113.358],[18.666,112.758],[19.916,112.308],[24.166,112.058],[24.367,112.008],[32.816,111.458],[37.766,110.308],[42.117,109.758],[46.266,109.208],[46.466,109.208],[46.666,109.158],[47.016,109.108],[53.117,108.108],[55.666,107.608],[56.016,105.708],[56.716,104.508],[56.666,103.508],[56.516,102.758],[56.716,101.658],[56.617,101.708],[56.867,100.858],[56.916,100.808],[56.966,100.558],[57.016,100.458],[58.117,96.908],[58.966,94.308],[59.666,89.708],[61.867,81.408],[64.066,73.108],[64.666,69.858],[65.016,68.708],[65.566,64.408],[65.367,59.658],[62.416,56.008],[51.716,45.608],[39.966,36.658],[38.666,36.258],[33.867,25.308],[27.367,11.758],[27.566,9.059],[27.666,3.508],[29.266,-4.492],[29.766,-8.392],[29.066,-12.592],[23.516,-30.191],[22.766,-32.941],[23.117,-36.342],[23.516,-47.292],[24.117,-83.242],[24.216,-92.242],[24.416,-109.542],[23.867,-110.892],[23.766,-110.941],[23.766,-111.191],[22.666,-112.842],[20.867,-113.092],[20.766,-113.042],[20.617,-113.042],[13.716,-112.191]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[179.434,285.992],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":20,"op":21,"st":20,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"20 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[260.75,267.475,0]},"a":{"k":[260.75,267.475,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.567,0.533],[3.967,5.333],[3.3,5.033],[0,0],[1.033,1.933],[0.967,1.733],[2.107,2.526],[0.244,0.457],[0.989,-0.058],[0.089,0.094],[0.667,0.2],[0.4,-0.167],[0.133,-0.4],[-0.365,-0.807],[2.025,-0.095],[1.867,0],[4.933,0.6],[1.1,-0.033],[0.667,-0.5],[0.155,-0.292],[0.15,-0.277],[-0.267,-0.8],[-0.633,-0.633],[-0.967,-0.833],[-1.7,-2.467],[-2.567,-4.133],[-2.433,-3.7],[-1.1,-1.933],[-1.733,-4.033],[-1.967,-5.033],[-0.767,-2.233],[-0.6,-3.067],[-0.333,-3.5],[-0.3,-4.033],[-0.467,-0.733],[-0.089,-0.109],[0,-0.414],[-0.7,-0.467],[-0.867,-0.2],[-2.1,-0.333],[-1.067,-0.267],[-1.933,-0.7],[-0.633,-0.367],[-0.7,-0.467],[-0.4,-0.2],[-1.033,-0.367],[-1.433,-1.133],[-0.967,-0.267],[-0.867,0.933],[-0.084,0.141],[-0.118,0.055],[-1.4,0.867],[-0.7,0.367],[-0.767,0.4],[-2.567,1.8],[0,0],[-2.6,1],[-0.367,0.233],[-0.317,0.686],[-0.374,0.145],[-0.2,0.567],[1.633,1.367]],"o":[[-6.467,-6],[-1.4,-1.867],[0,0],[-2.033,-3.1],[-1.8,-3.533],[-1.627,-2.841],[0.177,-0.509],[-0.411,-0.758],[-0.077,-0.073],[-0.733,-0.8],[-0.467,-0.1],[-0.433,0.167],[-0.131,0.426],[-1.341,0.271],[-6.467,0.233],[-5.267,0.067],[-2.2,-0.333],[-1.167,0],[-0.278,0.208],[-0.183,0.189],[-0.4,0.767],[0.233,0.667],[0.233,0.267],[1.667,1.5],[0.2,0.333],[0.767,1.267],[2.033,3.067],[1.7,3],[0.967,2.2],[1.7,4.4],[1.233,3.7],[0.5,2.5],[0.2,2.033],[0.133,1.567],[0.078,0.125],[-0.267,0.353],[0,0.7],[0.467,0.333],[0.833,0.2],[1.867,0.3],[1.133,0.3],[1.4,0.533],[0.233,0.133],[0.567,0.4],[0.467,0.2],[0.667,0.3],[1.233,1],[1.533,0.367],[0.116,-0.125],[0.115,-0.045],[0.8,-0.4],[1.467,-0.933],[1.6,-0.767],[1.167,-0.567],[0,0],[4.433,-2.967],[1.533,-0.567],[0.783,-0.481],[0.393,0.011],[0.6,-0.233],[0.4,-1.133],[-11.033,-9.7]],"v":[[38.409,13.716],[22.758,-3.284],[15.708,-13.634],[4.809,-30.633],[0.208,-38.184],[-3.941,-46.083],[-9.542,-54.133],[-9.642,-55.583],[-11.742,-56.633],[-11.992,-56.883],[-14.091,-58.383],[-15.392,-58.284],[-16.242,-57.434],[-15.892,-55.583],[-20.941,-55.034],[-33.441,-54.684],[-48.742,-55.483],[-53.691,-55.934],[-56.441,-55.184],[-57.091,-54.434],[-57.591,-53.733],[-57.791,-51.383],[-56.492,-49.434],[-54.691,-47.784],[-49.642,-41.833],[-45.492,-35.133],[-40.691,-27.684],[-35.992,-20.184],[-30.841,-9.634],[-26.441,1.216],[-22.742,11.167],[-19.992,21.316],[-18.742,30.316],[-17.992,39.417],[-17.091,42.866],[-16.841,43.216],[-17.242,44.366],[-16.191,46.116],[-14.191,46.917],[-9.792,47.716],[-5.392,48.566],[-0.792,50.066],[2.258,51.417],[3.659,52.316],[5.108,53.216],[7.358,54.066],[10.508,56.216],[13.809,58.116],[17.409,57.267],[17.708,56.866],[18.059,56.716],[21.358,54.816],[24.608,52.866],[28.159,51.116],[33.758,47.566],[40.258,43.116],[50.809,37.167],[53.659,35.966],[55.309,34.216],[56.458,34.017],[57.659,32.816],[55.809,29.066]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[308.091,359.684],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[11.767,4.133],[5.733,0.9],[1.367,0.2],[2.133,-0.033],[7.9,-2.3],[10.433,-4.267],[12,-5.4],[0.3,-0.2],[0.5,-0.367],[0.033,-1.033],[-0.419,-2.735],[-0.112,-2.911],[-0.433,-4.667],[-0.533,-9.067],[0,-1.967],[0.9,-3.667],[-0.167,-0.833],[-0.5,-0.433],[-0.075,-0.105],[-0.7,0.1],[-0.6,0.4],[-2.3,1.8],[-4.9,2.7],[-12.169,6.045],[0,0],[-4.867,2.133],[-12.4,6.033],[-2.2,0.933]],"o":[[-2.933,-1.067],[-3.2,-0.567],[-2.6,-0.333],[-4.867,0.133],[-8.633,2.567],[-6.933,2.833],[-0.433,0.2],[-0.5,-0.333],[-0.7,0.433],[-0.185,1.799],[-0.212,2.355],[0.067,1.5],[0.367,4.5],[0.167,2.433],[-0.067,4.1],[-0.4,1.6],[0.133,0.667],[0.059,0.128],[0.333,0.467],[0.567,-0.1],[1.2,-0.867],[2.367,-1.767],[11.898,-6.555],[0,0],[9.8,-3.833],[6.2,-2.733],[2.333,-1.1],[-6.733,-15.8]],"v":[[39.617,-44.409],[26.617,-47.359],[19.767,-48.508],[12.667,-48.959],[-6.483,-45.309],[-35.083,-35.059],[-63.483,-22.709],[-64.583,-22.109],[-66.083,-22.059],[-67.183,-19.859],[-66.833,-13.059],[-66.983,-5.159],[-66.233,4.091],[-64.883,24.441],[-64.633,31.041],[-66.083,42.691],[-66.433,46.341],[-65.483,47.992],[-65.283,48.341],[-63.733,48.891],[-61.983,48.141],[-56.733,44.141],[-45.833,37.441],[-9.733,18.541],[10.667,10.641],[32.667,1.691],[60.567,-11.459],[67.367,-14.508]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[298.533,165.959],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.233,1.633],[0.133,0.367],[0.467,0.367],[0.033,-0.033],[0.1,0.133],[2.233,1.267],[3.433,1.6],[2.267,1.2],[0,0],[3.167,1.867],[0,0],[3.067,1.367],[0,0],[0.2,0.1],[0.267,-0.1],[0.1,-0.067],[0.1,-0.067],[2.367,-1],[5.867,-3.033],[1.233,-0.4],[0.1,-0.3],[-0.2,-0.267],[-0.3,-0.067],[1.733,-4.967],[0.367,-1.3],[-0.033,-5.633],[0.033,-0.267],[-0.233,-0.3],[-0.067,-0.033],[-0.633,-0.033],[-0.267,0.5],[-0.5,-0.067],[-15.8,-1.1],[0,0],[-0.1,-0.033],[-0.5,-0.467],[0,0],[-0.833,-0.633],[-1.8,-1.167],[-2.567,-1.6],[-8.533,-4.8],[-0.5,-0.233],[-0.467,-0.233],[-0.933,0.267],[-1.033,0.367],[-1.933,1.567],[-1.333,1.333],[-0.333,0.467],[-0.133,0.133],[-0.233,0.533],[-0.133,0.3],[-0.133,0.467],[-0.333,0.933],[-0.1,0.3],[0.2,1.2],[0.2,1.1],[0.5,4.667],[0.533,2.3],[1,3.267]],"o":[[-0.133,-1],[-0.2,-0.733],[0,0.033],[-0.067,-0.167],[-1.1,-1.6],[-0.7,-0.4],[-1.167,-0.533],[0,0],[-4.233,-2.2],[0,0],[-1.2,-0.633],[0,0],[0.1,-0.267],[-0.067,-0.033],[-0.133,0.067],[-0.133,0.067],[-1.567,0.767],[-12.133,5.267],[-2.6,1.333],[-0.633,0.2],[-0.1,0.267],[0.167,0.233],[-1.2,2.667],[-1.367,4.233],[-1.367,5.3],[-0.3,0.033],[0,0.133],[0.067,0.067],[0.133,1.033],[0.5,0.067],[0.4,0.1],[8.4,1.3],[0,0],[0.1,0],[0.067,0.333],[0,0],[1.6,1.4],[1.267,0.967],[4,2.6],[4.167,2.6],[0.667,0.367],[0.2,0.433],[0.533,0.233],[1.067,-0.233],[1.933,-1.367],[0.867,-0.967],[0.733,-0.867],[0.1,-0.167],[0.233,-0.433],[0.167,-0.3],[0.1,-0.333],[0.833,-1.833],[0.133,-0.367],[-0.067,-1],[-0.467,-2.133],[-0.333,-1.833],[-0.433,-4.167],[-0.2,-0.833],[-0.767,-2.533]],"v":[[47.7,-13.675],[47.3,-15.725],[46.3,-17.375],[46.25,-17.275],[46,-17.725],[41,-22.025],[34.8,-25.025],[29.65,-27.625],[22.55,-31.375],[11.45,-37.475],[5.6,-40.925],[-0.8,-43.925],[-5.35,-45.925],[-5.5,-46.475],[-6,-46.375],[-6.35,-46.175],[-6.7,-45.975],[-12.6,-43.325],[-39.6,-30.875],[-45.35,-28.275],[-46.45,-27.525],[-46.3,-26.725],[-45.6,-26.275],[-50,-14.825],[-52.6,-6.525],[-54.6,9.875],[-55.1,10.325],[-54.75,10.975],[-54.55,11.125],[-53.4,12.725],[-52.25,12.075],[-50.9,12.325],[-14.6,15.925],[-9.6,16.275],[-9.3,16.325],[-8.45,17.525],[-4.8,20.725],[-1.15,23.775],[3.45,26.975],[13.3,33.275],[32.35,44.375],[34.1,45.275],[35.1,46.275],[37.3,46.225],[40.45,45.325],[46.25,40.925],[49.55,37.475],[51.15,35.475],[51.5,35.025],[52.2,33.575],[52.65,32.675],[53,31.475],[54.75,27.325],[55.1,26.325],[54.7,23.025],[53.7,18.175],[52.45,8.425],[51,-1.275],[49.2,-7.425]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[277.15,238.225],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0.067],[0,0],[0,0],[12.2,-3.067],[0.067,-3.367],[0,0],[-0.067,-0.267],[0,0],[0.267,-0.067],[-0.033,-0.4],[-1.633,-9],[-0.133,-1.033],[-2.067,-11.467],[-1.733,-18.167],[0,0],[-0.067,-2.267],[-0.033,-4.467],[-0.167,-2.2],[-0.4,-2.967],[-3.333,-20.6],[-0.333,-0.433],[-2,0],[0,0],[-0.333,0.4],[-0.033,0.067],[-0.833,1.3],[-0.533,1.867],[-0.133,3.6],[4,18.567],[0.067,0.2],[0.067,0.467],[0,0],[1.567,3.933],[0.167,0.5],[0.1,0.633],[-0.067,1.933],[-0.6,3.233],[-0.367,2.367],[0,2.6],[0.733,0.233],[0.133,0],[0.133,0.367],[0.033,0.2],[0.067,0.433],[0.467,0.9],[0.567,1.867],[0.767,2.833],[0,0],[0.9,2.033],[-0.033,0.167],[0,0],[-2.167,7.733],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.067],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1]],"o":[[0,0],[0,0],[-12.733,-0.933],[0.033,1.467],[0,0],[0.033,0.267],[0,0],[-0.333,-0.1],[0.067,0.333],[0.967,8.4],[0.133,1],[0.333,2.533],[3.2,17.433],[0,0],[0.267,2.733],[0.033,1.367],[0,3.6],[0.2,2.9],[2.6,21.667],[0.2,1.1],[0.667,0.833],[0,0],[0.967,0],[0.067,-0.067],[0.633,-0.467],[2,-3.4],[0.533,-1.767],[0.5,-18.767],[-0.067,-0.267],[-0.033,-0.333],[0,0],[-1.167,-5],[-0.4,-0.967],[-0.333,-0.833],[-0.2,-0.967],[0.267,-7.333],[1.067,-4.667],[0.4,-2.533],[-0.067,-1.433],[-0.133,-0.033],[-0.033,-0.267],[-0.2,-0.533],[-0.067,-0.9],[-0.133,-0.6],[-0.633,-1.367],[-0.167,-0.533],[0,0],[-0.567,-1.667],[0.033,-0.167],[0,0],[1,-4.267],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.033]],"v":[[27.425,-110.458],[27.375,-110.458],[0.375,-113.408],[-37.025,-110.208],[-37.075,-102.958],[-37.075,-100.358],[-36.925,-99.558],[-35.475,-91.158],[-36.375,-91.208],[-36.225,-90.108],[-32.325,-64.008],[-31.925,-60.958],[-28.325,-39.958],[-20.925,13.442],[-21.175,13.442],[-20.675,20.941],[-20.575,29.691],[-20.325,38.392],[-19.425,47.191],[-10.525,110.591],[-9.725,112.892],[-5.725,114.142],[27.475,114.341],[29.425,113.742],[29.575,113.542],[31.775,110.892],[35.575,102.992],[36.575,94.941],[31.325,38.941],[31.125,38.242],[30.975,37.042],[30.025,32.492],[25.925,19.092],[25.075,16.892],[24.425,14.692],[24.225,10.342],[25.525,-5.508],[27.675,-16.058],[28.275,-23.758],[27.075,-26.258],[26.675,-26.308],[26.425,-27.258],[26.075,-28.358],[25.875,-30.358],[24.975,-32.608],[23.175,-37.458],[21.775,-42.508],[20.875,-45.458],[18.675,-51.008],[18.775,-51.508],[22.675,-68.658],[27.425,-86.658],[27.425,-86.958],[27.425,-87.258],[27.425,-87.558],[27.425,-87.858],[27.425,-88.158],[27.425,-88.458],[27.425,-88.758],[27.425,-89.058],[27.425,-89.358],[27.425,-89.658],[27.425,-89.958],[27.425,-90.258],[27.425,-90.558],[27.425,-90.858],[27.425,-91.158],[27.425,-91.458],[27.425,-91.758],[27.425,-92.058],[27.425,-92.358],[27.425,-92.658],[27.425,-92.958],[27.425,-93.258],[27.425,-93.558],[27.425,-93.858],[27.425,-94.158],[27.425,-94.458],[27.425,-94.758],[27.425,-95.058],[27.425,-95.358],[27.425,-95.658],[27.425,-95.958],[27.425,-96.258],[27.425,-96.558],[27.425,-96.858],[27.425,-97.158],[27.425,-97.458],[27.425,-97.758],[27.425,-98.058],[27.425,-98.358],[27.425,-98.658],[27.425,-98.958],[27.425,-99.258],[27.425,-99.558],[27.425,-99.808],[27.425,-100.108],[27.425,-100.408],[27.425,-100.708],[27.425,-101.008],[27.425,-101.308],[27.425,-101.608],[27.425,-101.908],[27.425,-102.208],[27.425,-102.508],[27.425,-102.808],[27.425,-103.108],[27.425,-103.408],[27.425,-103.708],[27.425,-104.008],[27.425,-104.308],[27.425,-104.608],[27.425,-104.908],[27.425,-105.208],[27.425,-105.508],[27.425,-105.808],[27.425,-106.108],[27.425,-106.408],[27.425,-106.708],[27.425,-107.008],[27.425,-107.308],[27.425,-107.608],[27.425,-107.908],[27.425,-108.208],[27.425,-108.508],[27.425,-108.808],[27.425,-109.108],[27.425,-109.408],[27.425,-109.708],[27.425,-110.008],[27.425,-110.308]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[192.675,286.159],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":21,"op":22,"st":21,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"21 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[258.801,287.08,0]},"a":{"k":[258.801,287.08,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-2.1,-0.233],[-2.467,-1.1],[-0.5,-0.033],[-0.4,0.267],[-0.633,-0.2],[-1,1.133],[0.467,1.333],[0.367,0.533],[0.2,0.333],[0.767,1.567],[0.433,0.933],[4.733,7.233],[1.567,2.767],[4.567,9.9],[2.233,4.133],[0,0.033],[-0.033,0.1],[0.133,0.133],[0,0],[0.633,0.867],[0.033,0.133],[0,0],[0.067,0.1],[0,0],[0,0],[0,0],[0,0],[0.3,0.067],[0.1,-0.033],[0.1,-0.033],[0,0],[13.2,-1.8],[3.967,0.1],[0.667,-0.3],[0.333,-0.433],[-0.067,-0.467],[-0.2,-0.233],[-0.533,-0.667],[-2.333,-2.3],[-1.033,-1.3],[-2.033,-3.3],[-5.8,-17.667],[-0.733,-1.633],[-0.4,-0.367],[0,-0.1],[-0.033,-0.133],[-0.167,-0.3],[0,0],[-0.167,-0.367],[-0.033,-0.2],[0,0],[-0.133,-0.533],[-0.167,-0.133],[0,0],[-0.133,0],[0,0],[-0.967,0],[-1.133,0.2],[-1.067,0.4],[-0.367,0.1],[-4.933,-0.067]],"o":[[3.4,0.367],[1,0.5],[0.667,0.033],[0.567,0.3],[2.067,0.633],[0.833,-0.9],[-0.133,-0.467],[-0.433,-0.6],[-0.7,-1.033],[-0.867,-1.867],[-2.2,-4.833],[-5.867,-9],[-2.233,-3.933],[-2.8,-6.067],[0.033,0],[0.067,-0.1],[-0.133,-0.233],[0,0],[-0.167,-0.167],[-0.233,-0.4],[0,0],[-0.067,-0.1],[0,0],[0,0],[0,0],[0,0],[-0.1,-0.1],[-0.1,0],[-0.067,0],[0,0],[-6.367,0.8],[-3.6,-0.1],[-1.3,-0.067],[-0.5,0.233],[-0.333,0.467],[0.067,0.267],[0,0.433],[0.833,0.933],[2.033,2],[1.6,1.9],[9.467,15.333],[1.2,3.733],[0.333,0.7],[-0.033,0.067],[-0.033,0.333],[0,0.167],[0,0],[0.067,0.2],[0.133,0.367],[0,0],[0,0.267],[0.233,0.467],[0,0],[0.133,0.033],[0,0],[0.467,0.333],[1.767,0.133],[0.7,-0.1],[1.433,-0.5],[2.6,-0.8],[4.233,0.033]],"v":[[29.275,43.783],[38.075,45.983],[40.325,46.783],[41.925,46.433],[43.725,47.183],[48.325,46.433],[48.875,43.083],[48.125,41.583],[47.175,40.183],[44.975,36.283],[43.025,32.083],[32.625,13.983],[21.475,-3.667],[11.275,-24.417],[3.725,-39.717],[3.775,-39.767],[3.925,-40.066],[3.525,-40.617],[2.775,-41.417],[1.575,-42.967],[1.175,-43.767],[1.075,-44.367],[0.875,-44.667],[0.725,-44.667],[0.675,-45.017],[0.025,-47.117],[-0.275,-47.566],[-0.875,-47.816],[-1.175,-47.767],[-1.425,-47.717],[-3.975,-47.417],[-33.325,-43.517],[-44.675,-43.816],[-47.625,-43.467],[-48.875,-42.467],[-49.275,-41.066],[-48.875,-40.316],[-48.075,-38.667],[-43.325,-33.816],[-38.725,-28.867],[-33.275,-21.066],[-10.375,28.433],[-7.475,36.483],[-6.375,38.083],[-6.425,38.333],[-6.425,39.033],[-6.175,39.733],[-6.075,40.583],[-5.725,41.433],[-5.475,42.283],[-5.375,43.233],[-5.175,44.433],[-4.575,45.333],[-3.825,45.633],[-3.425,45.683],[-3.375,45.733],[-1.225,46.233],[3.125,46.133],[5.775,45.383],[8.475,44.483],[19.775,43.383]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[296.425,348.567],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.067,2.5],[4.433,7.5],[6.867,5.167],[8.2,3.433],[9.333,2.667],[6.433,1.033],[6.927,-0.544],[0.023,0.025],[0.123,-0.009],[0.589,0.189],[0,0],[0.069,-0.161],[0.518,0],[1,-0.667],[0.2,-3.4],[-0.2,-2.6],[-0.2,-2.933],[0.067,-4.933],[0,0],[-0.399,0.162],[-2.567,0],[-3.433,-0.267],[-4.767,-0.933],[-7.567,-6.4],[-1.3,-2.633],[-0.27,-0.861],[-12.591,0.642],[-0.933,0.867]],"o":[[-0.067,-7.833],[-4.1,-6.9],[-5.933,-4.467],[-6.167,-2.567],[-9.367,-2.633],[-8.206,-1.311],[-0.01,-0.008],[-0.144,0.025],[-0.811,0.055],[0,0],[-0.064,0.106],[-0.415,-0.067],[-1.433,-0.067],[-1.633,1.1],[-0.067,1.8],[0.1,1.433],[0.133,2.433],[0,0],[0.335,-0.238],[1.033,-0.467],[7.567,0.233],[6.133,0.433],[12.3,2.467],[3,2.467],[0.363,0.739],[14.775,1.909],[2.267,-0.067],[1.1,-1.033]],"v":[[62.3,30.326],[55.55,7.326],[39.1,-10.774],[17.9,-22.624],[-5.35,-30.474],[-29.05,-35.974],[-51.75,-37.124],[-51.8,-37.174],[-52.2,-37.124],[-54.3,-37.324],[-54.3,-37.274],[-54.5,-36.874],[-55.9,-36.974],[-59.55,-36.074],[-62.3,-29.324],[-62.1,-22.724],[-61.65,-16.174],[-61.55,-5.124],[-61.65,10.276],[-60.55,9.676],[-55.15,8.976],[-38.65,9.726],[-22.3,11.776],[7.5,25.076],[13.95,32.726],[14.9,35.126],[55.95,37.026],[60.75,35.626]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[275.35,211.824],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.047,0.006],[0,0],[9.967,-0.4],[0.312,-0.133],[0.172,-0.902],[0.533,-1.5],[0.067,-0.4],[0.2,-0.333],[1.3,-0.733],[0.351,-0.185],[0.036,-0.033],[0.933,-0.667],[0,0],[0.767,-0.3],[0.257,-0.252],[10.534,1.466],[5.8,1.567],[0.333,-0.1],[0.125,-0.123],[0.145,-0.111],[0.367,-1.067],[0.2,-5.067],[0,-2.933],[0.867,-6.233],[-0.1,-0.4],[-0.533,-0.2],[-0.407,0.115],[-3.012,-0.251],[-17.467,-0.933],[-0.4,0.2],[-0.053,0.055],[-0.277,-0.028],[-0.169,0.003],[-2.372,0.424],[-1.505,0.406],[-2.133,0.333],[0,0],[-0.715,0.117],[-4.445,1.331],[-3.989,5.513],[-0.467,1],[-0.567,1.5],[0,0],[-0.3,1],[0.333,4.133],[0.917,4.317],[0.045,0.367],[0.708,0.224],[0.087,0.031],[0.147,-0.039]],"o":[[0,0],[-10.4,-0.567],[-0.488,0],[-0.128,0.731],[-0.533,2.6],[-0.567,1.5],[-0.233,1.467],[-0.333,0.567],[-0.349,0.181],[-0.031,0.033],[-0.433,0.4],[0,0],[-1.267,0.9],[-0.609,0.248],[-3.133,-0.434],[-9.033,-1.267],[-0.667,-0.2],[-0.175,0.043],[-0.122,0.055],[-0.5,0.5],[-1.8,4.6],[-0.033,0.6],[0,5.967],[-0.133,0.8],[0.133,0.767],[0.359,0.148],[1.321,0.449],[10.7,0.833],[0.7,0.067],[0.08,-0.045],[0.223,0.039],[0.164,0.003],[2.161,-0.376],[1.062,-0.261],[1.033,-0.233],[0,0],[0.785,-0.117],[5.855,-1.235],[6.644,-5.354],[1.1,-1.533],[0.333,-0.6],[0,0],[0.633,-1.567],[0.9,-3.167],[-0.217,-2.383],[0.312,-0.233],[-0.025,-0.543],[-0.08,-0.069],[-0.186,-0.072],[-0.053,0.006]],"v":[[55.509,-34.608],[50.059,-35.008],[19.509,-35.258],[18.309,-35.058],[17.858,-32.608],[16.259,-26.458],[15.309,-23.608],[14.659,-20.908],[12.208,-18.958],[11.159,-18.408],[11.059,-18.308],[9.009,-16.708],[-3.892,-7.658],[-6.941,-5.858],[-8.241,-5.108],[-28.741,-7.958],[-50.991,-12.208],[-52.491,-12.358],[-52.941,-12.108],[-53.341,-11.858],[-54.641,-9.508],[-57.641,4.992],[-57.691,10.292],[-58.991,28.592],[-59.041,30.392],[-58.041,31.842],[-56.891,31.892],[-50.391,32.942],[-8.142,35.592],[-6.491,35.392],[-6.292,35.242],[-5.542,35.342],[-5.042,35.342],[1.759,34.142],[5.608,33.142],[10.358,32.292],[14.659,31.642],[16.909,31.292],[32.358,27.442],[48.309,11.142],[50.659,7.342],[52.009,4.192],[56.559,-7.508],[57.958,-11.358],[58.809,-22.308],[57.108,-32.358],[57.509,-33.258],[56.409,-34.408],[56.159,-34.558],[55.659,-34.608]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[277.391,266.508],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.267,0],[0.233,0],[0.1,0.033],[0.2,0.033],[0,0],[0.3,-0.033],[0.167,-0.1],[0.033,-0.067],[0.167,0],[0,0],[0.533,-0.2],[0.333,-0.3],[0.033,-0.1],[0.1,-0.067],[0.1,-0.367],[0,-1.133],[0,0],[0,0],[-0.533,-12.4],[0,0],[0,-0.067],[-0.2,-6.033],[0,-1.233],[0.067,-1.333],[-0.067,-0.367],[0,0],[0,0],[0,0],[0,-0.067],[0,0],[-0.1,-0.7],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[-0.033,-0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0.033,-0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.067],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[-0.033,-0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0,0],[0,0],[-0.033,-0.1],[0,-0.067],[-0.233,-0.233],[-0.1,-0.1],[-0.1,-0.1],[-0.167,-0.1],[-0.233,-0.067],[-0.2,-0.033],[-0.2,0.033],[-0.2,0.067],[-0.033,0.033],[-1.933,-0.033],[-0.667,-0.1],[-1.167,-0.033],[-3.2,-0.267],[-1.6,0],[-2.833,0.133],[-1.433,-0.033],[-0.467,0.133],[-0.267,0.233],[-0.5,0.2],[0,0],[0,0],[-0.267,0.5],[-0.133,1.733],[1.1,9.567],[0.2,0.7],[0.233,0.6],[0,0],[0,0],[0.2,1.667],[-0.067,2.967],[-0.2,3.767],[-0.333,2.1],[-0.967,4.233],[0,0],[0.167,0.033],[1.6,0.033],[2.8,0.033],[0,0],[0.8,0.033]],"o":[[-0.233,0],[-0.1,-0.033],[-0.2,-0.033],[0,0],[-0.3,0.033],[-0.167,0.1],[-0.067,0.067],[-0.167,-0.033],[0,0],[-0.233,-0.033],[-0.6,0.233],[-0.1,0.1],[-0.1,0.033],[-0.3,0.2],[0.067,0.9],[0,0],[0,0],[-0.3,9.9],[0,0],[0.033,0.067],[0.7,3.167],[0.1,3.3],[0,1.5],[0.033,0.267],[0,0],[0,0],[0,0],[0,0.033],[0,0],[0.067,0.833],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0.033,0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[-0.033,0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.067],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0.033,0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[0,0],[0,0],[0.033,0.067],[0,0.067],[0.033,0.267],[0.1,0.1],[0.1,0.1],[0.167,0.1],[0.233,0.067],[0.2,0.033],[0.2,-0.033],[0.2,-0.067],[0.033,0],[1.633,0.133],[0.5,0.233],[0.533,0.1],[1.167,0.033],[2.733,0.2],[1.3,0.033],[2.7,-0.133],[0.933,0],[0.433,-0.133],[0.6,0.067],[0,0],[0,0],[0.3,-0.333],[0.367,-0.767],[0.667,-9.833],[-0.133,-1.467],[-0.067,-0.233],[0,0],[0,0],[-0.867,-4.3],[-0.233,-2.333],[0.033,-1.567],[0.267,-4.2],[0.133,-0.767],[0,0],[-0.167,-0.067],[-1.6,-0.033],[-2.8,-0.033],[0,0],[-0.8,-0.033],[-6.233,0]],"v":[[-17.908,-113.242],[-18.609,-113.242],[-18.908,-113.341],[-19.508,-113.441],[-19.508,-113.341],[-20.408,-113.242],[-20.908,-112.941],[-21.059,-112.742],[-21.559,-112.792],[-21.559,-112.691],[-22.708,-112.441],[-24.109,-111.642],[-24.309,-111.341],[-24.609,-111.191],[-25.208,-110.341],[-25.109,-107.292],[-25.059,-102.142],[-24.158,-96.091],[-23.809,-62.642],[-23.809,-62.341],[-23.758,-62.142],[-22.408,-48.341],[-22.258,-41.542],[-22.359,-37.292],[-22.208,-36.341],[-22.008,-28.941],[-22.158,-27.542],[-22.158,-27.492],[-22.158,-27.341],[-21.958,-23.691],[-21.708,-21.392],[-21.708,-21.242],[-21.708,-20.941],[-21.708,-20.642],[-21.708,-20.341],[-21.708,-20.042],[-21.708,-19.742],[-21.708,-19.441],[-21.708,-19.142],[-21.708,-18.841],[-21.708,-18.591],[-21.708,-18.292],[-21.708,-17.992],[-21.708,-17.691],[-21.708,-17.392],[-21.708,-17.091],[-21.708,-16.792],[-21.708,-16.492],[-21.708,-16.191],[-21.708,-15.892],[-21.708,-15.591],[-21.708,-15.292],[-21.708,-14.992],[-21.708,-14.691],[-21.708,-14.392],[-21.708,-14.091],[-21.708,-13.792],[-21.708,-13.492],[-21.708,-13.191],[-21.708,-12.892],[-21.708,-12.591],[-21.708,-12.292],[-21.708,-11.992],[-21.708,-11.691],[-21.708,-11.392],[-21.708,-11.091],[-21.708,-10.792],[-21.708,-10.492],[-21.708,-10.191],[-21.708,-9.892],[-21.708,-9.591],[-21.708,-9.292],[-21.708,-8.992],[-21.708,-8.691],[-21.708,-8.392],[-21.708,-8.091],[-21.708,-7.792],[-21.708,-7.492],[-21.708,-7.191],[-21.708,-6.892],[-21.708,-6.591],[-21.708,-6.292],[-21.708,-5.992],[-21.708,-5.691],[-21.708,-5.392],[-21.708,-5.091],[-21.708,-4.792],[-21.708,-4.492],[-21.708,-4.191],[-21.708,-3.892],[-21.708,-3.591],[-21.708,-3.292],[-21.708,-2.992],[-21.708,-2.691],[-21.708,-2.392],[-21.708,-2.091],[-21.708,-1.792],[-21.708,-1.492],[-21.708,-1.191],[-21.708,-0.892],[-21.708,-0.591],[-21.708,-0.292],[-21.708,0.008],[-21.708,0.309],[-21.708,0.608],[-21.708,0.909],[-21.708,1.208],[-21.708,1.508],[-21.708,1.809],[-21.708,2.109],[-21.708,2.409],[-21.708,2.708],[-21.708,3.008],[-21.708,3.309],[-21.708,3.608],[-21.708,3.909],[-21.708,4.208],[-21.708,4.508],[-21.708,4.809],[-21.708,5.108],[-21.708,5.409],[-21.708,5.709],[-21.708,6.008],[-21.708,6.309],[-21.708,6.608],[-21.708,6.909],[-21.708,7.208],[-21.708,7.508],[-21.708,7.809],[-21.708,8.108],[-21.708,8.409],[-21.708,8.708],[-21.708,9.008],[-21.708,9.309],[-21.708,9.608],[-21.708,9.909],[-21.708,10.208],[-21.708,10.508],[-21.708,10.809],[-21.708,11.109],[-21.708,11.409],[-21.708,11.708],[-21.708,12.008],[-21.708,12.309],[-21.708,12.608],[-21.708,12.909],[-21.708,13.208],[-21.708,13.508],[-21.708,13.809],[-21.708,14.108],[-21.708,14.409],[-21.708,14.708],[-21.708,15.008],[-21.708,15.309],[-21.708,15.608],[-21.708,15.908],[-21.708,16.208],[-21.708,16.508],[-21.708,16.809],[-21.708,17.108],[-21.708,17.408],[-21.708,17.708],[-21.708,18.008],[-21.708,18.309],[-21.708,18.608],[-21.708,18.908],[-21.708,19.208],[-21.708,19.508],[-21.708,19.809],[-21.708,20.108],[-21.708,20.408],[-21.708,20.708],[-21.708,21.008],[-21.708,21.309],[-21.708,21.608],[-21.708,21.908],[-21.708,22.158],[-21.708,22.458],[-21.708,22.758],[-21.708,23.059],[-21.708,23.358],[-21.708,23.658],[-21.708,23.958],[-21.708,24.258],[-21.708,24.559],[-21.708,24.858],[-21.708,25.158],[-21.708,25.458],[-21.708,25.758],[-21.708,26.059],[-21.708,26.358],[-21.708,26.658],[-21.708,26.958],[-21.708,27.258],[-21.708,27.559],[-21.708,27.858],[-21.708,28.158],[-21.708,28.458],[-21.708,28.758],[-21.708,29.059],[-21.708,29.358],[-21.708,29.658],[-21.708,29.958],[-21.708,30.258],[-21.708,30.559],[-21.708,30.858],[-21.708,31.158],[-21.708,31.458],[-21.708,31.758],[-21.708,32.059],[-21.708,32.358],[-21.708,32.658],[-21.708,32.958],[-21.708,33.258],[-21.708,33.559],[-21.708,33.858],[-21.708,34.158],[-21.708,34.458],[-21.609,34.758],[-21.609,35.059],[-21.609,35.358],[-21.609,35.658],[-21.609,35.958],[-21.609,36.258],[-21.609,36.559],[-21.609,36.858],[-21.609,37.158],[-21.609,37.458],[-21.609,37.758],[-21.609,38.059],[-21.609,38.358],[-21.609,38.658],[-21.609,38.958],[-21.609,39.258],[-21.609,39.559],[-21.609,39.858],[-21.609,40.158],[-21.609,40.458],[-21.609,40.758],[-21.609,41.059],[-21.609,41.358],[-21.609,41.658],[-21.609,41.958],[-21.609,42.258],[-21.508,42.559],[-21.508,42.858],[-21.508,43.158],[-21.508,43.458],[-21.508,43.758],[-21.508,44.059],[-21.508,44.358],[-21.508,44.658],[-21.508,44.958],[-21.508,45.258],[-21.508,45.559],[-21.508,45.858],[-21.508,46.158],[-21.508,46.458],[-21.508,46.758],[-21.508,47.059],[-21.508,47.358],[-21.508,47.658],[-21.508,47.958],[-21.508,48.258],[-21.508,48.559],[-21.508,48.858],[-21.508,49.158],[-21.408,49.458],[-21.508,49.758],[-21.508,50.059],[-21.508,50.358],[-21.508,50.658],[-21.508,50.958],[-21.508,51.258],[-21.508,51.559],[-21.408,51.858],[-21.408,52.158],[-21.408,52.458],[-21.408,52.758],[-21.408,53.059],[-21.408,53.358],[-21.408,53.658],[-21.408,53.958],[-21.408,54.258],[-21.408,54.559],[-21.408,54.858],[-21.408,55.158],[-21.408,55.458],[-21.408,55.758],[-21.408,56.059],[-21.408,56.358],[-21.408,56.658],[-21.408,56.958],[-21.408,57.258],[-21.408,57.559],[-21.408,57.858],[-21.408,58.158],[-21.408,58.458],[-21.408,58.758],[-21.408,59.059],[-21.408,59.358],[-21.408,59.658],[-21.408,59.958],[-21.408,60.258],[-21.408,60.559],[-21.408,60.858],[-21.408,61.158],[-21.408,61.458],[-21.408,61.758],[-21.408,62.059],[-21.408,62.358],[-21.408,62.658],[-21.408,62.958],[-21.408,63.208],[-21.408,63.508],[-21.408,63.809],[-21.408,64.108],[-21.408,64.408],[-21.408,64.708],[-21.408,65.008],[-21.408,65.309],[-21.408,65.608],[-21.408,65.908],[-21.408,66.208],[-21.408,66.508],[-21.408,66.809],[-21.408,67.108],[-21.408,67.408],[-21.408,67.708],[-21.408,68.008],[-21.408,68.309],[-21.408,68.608],[-21.408,68.908],[-21.408,69.208],[-21.408,69.508],[-21.408,69.809],[-21.408,70.108],[-21.408,70.408],[-21.408,70.708],[-21.408,71.008],[-21.408,71.309],[-21.408,71.608],[-21.408,71.908],[-21.408,72.208],[-21.408,72.508],[-21.408,72.809],[-21.408,73.108],[-21.408,73.408],[-21.408,73.708],[-21.408,74.008],[-21.408,74.309],[-21.408,74.608],[-21.408,74.908],[-21.408,75.208],[-21.408,75.508],[-21.408,75.809],[-21.408,76.108],[-21.408,76.408],[-21.408,76.708],[-21.408,77.008],[-21.408,77.309],[-21.408,77.608],[-21.408,77.908],[-21.408,78.208],[-21.408,78.508],[-21.408,78.809],[-21.408,79.108],[-21.408,79.408],[-21.408,79.708],[-21.408,80.008],[-21.408,80.309],[-21.408,80.608],[-21.408,80.908],[-21.408,81.208],[-21.408,81.508],[-21.408,81.809],[-21.408,82.108],[-21.408,82.408],[-21.408,82.708],[-21.408,83.008],[-21.408,83.309],[-21.408,83.608],[-21.408,83.908],[-21.408,84.208],[-21.408,84.508],[-21.408,84.809],[-21.408,85.108],[-21.408,85.408],[-21.408,85.708],[-21.408,86.008],[-21.408,86.309],[-21.408,86.608],[-21.408,86.908],[-21.408,87.208],[-21.408,87.508],[-21.408,87.809],[-21.408,88.108],[-21.408,88.408],[-21.408,88.708],[-21.408,89.008],[-21.408,89.309],[-21.408,89.608],[-21.408,89.908],[-21.408,90.208],[-21.408,90.508],[-21.408,90.809],[-21.408,91.108],[-21.408,91.408],[-21.408,91.708],[-21.408,92.008],[-21.408,92.309],[-21.408,92.608],[-21.408,92.908],[-21.408,93.208],[-21.408,93.508],[-21.408,93.809],[-21.408,94.108],[-21.408,94.408],[-21.408,94.708],[-21.408,95.008],[-21.408,95.309],[-21.408,95.608],[-21.408,95.908],[-21.408,96.208],[-21.408,96.508],[-21.408,96.809],[-21.408,97.108],[-21.408,97.408],[-21.408,97.708],[-21.408,98.008],[-21.408,98.309],[-21.408,98.608],[-21.408,98.908],[-21.408,99.208],[-21.408,99.508],[-21.408,99.809],[-21.408,100.108],[-21.408,100.408],[-21.408,100.708],[-21.408,101.008],[-21.408,101.309],[-21.408,101.608],[-21.408,101.908],[-21.408,102.208],[-21.408,102.508],[-21.408,102.809],[-21.408,103.108],[-21.408,103.408],[-21.408,103.708],[-21.408,103.958],[-21.408,104.258],[-21.408,104.559],[-21.408,104.858],[-21.408,105.158],[-21.309,105.458],[-21.309,105.758],[-21.309,106.059],[-21.309,106.358],[-21.309,106.658],[-21.309,106.958],[-21.309,107.258],[-21.309,107.559],[-21.309,107.858],[-21.309,108.158],[-21.309,108.458],[-21.309,108.758],[-21.208,109.059],[-21.208,109.358],[-21.208,109.658],[-21.109,109.908],[-21.109,110.108],[-20.708,110.858],[-20.408,111.158],[-20.109,111.458],[-19.609,111.758],[-18.908,111.958],[-18.309,112.059],[-17.708,111.958],[-17.109,111.758],[-17.008,111.708],[-11.658,111.958],[-9.908,112.458],[-7.359,112.658],[-0.809,113.108],[5.691,113.408],[11.891,113.258],[18.092,113.108],[20.191,112.908],[21.242,112.358],[22.891,112.158],[22.941,112.158],[22.941,110.608],[23.792,109.358],[24.542,105.608],[23.891,76.508],[23.391,73.258],[22.941,72.008],[22.941,-41.941],[21.891,-46.941],[20.292,-55.892],[20.042,-63.841],[20.391,-71.841],[21.292,-81.292],[22.941,-88.792],[22.941,-112.691],[22.441,-112.841],[17.641,-112.941],[9.242,-113.042],[3.242,-113.142],[0.842,-113.242]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[197.258,287.092],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":22,"op":23,"st":22,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"22 Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[260.943,287.113,0]},"a":{"k":[260.943,287.113,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.267,2.2],[3,4.633],[1.133,2.4],[1.167,2.767],[0.7,1.2],[0.7,1.133],[1.267,2.467],[0,0],[0.9,1.133],[0.267,0.367],[0.243,0.439],[-0.007,0.161],[0.3,0.3],[0.149,0.101],[0.5,0.2],[0.367,0.067],[1.233,-0.733],[3.8,-0.467],[0,0],[2.3,0],[0.167,-0.2],[0.336,0.037],[3.3,0.533],[0,0],[0.433,-0.067],[0.167,-0.667],[-0.167,-0.433],[-0.016,-0.045],[0.086,-0.015],[0,0],[-0.176,-0.632],[-0.433,-0.633],[0,-0.433],[-2.411,-4.853],[-0.767,-1.2],[-1.767,-2.367],[-1.733,-3.2],[-1.033,-2.067],[-1.067,-2.9],[-0.767,-2.233],[-1.333,-2.933],[0,0],[-0.933,-1.733],[-1.5,-2],[-0.097,-0.083],[-0.049,-0.171],[-0.6,-0.067],[-1.367,0.133],[-1.567,0.233],[-4.233,-0.2],[-4.9,-0.5],[-4.467,-0.8],[-0.167,0.2],[0.367,0.3],[0.061,0.035],[0.965,2.027],[1.333,2.233],[0.3,0.5],[2.133,4.5]],"o":[[-0.733,-1.233],[-2.333,-3.6],[-0.267,-0.533],[-0.867,-2],[-1.467,-2.233],[-0.5,-0.833],[0,0],[-1.633,-3.233],[-0.6,-0.733],[-0.391,-0.495],[0.059,-0.139],[0.033,-0.367],[-0.118,-0.133],[-0.1,-0.267],[-0.733,-0.433],[-0.6,-0.1],[-1.767,0.933],[0,0],[-2.6,0.267],[-0.533,0],[-0.331,-0.029],[-1.433,-0.167],[0,0],[-0.867,-0.133],[-0.8,0.133],[-0.1,0.333],[0.017,0.055],[-0.114,0.019],[0,0],[0.191,0.435],[0.167,0.367],[0.167,0.5],[2.955,4.38],[2.167,4.4],[0.767,1.233],[1,1.5],[2.233,4.067],[1.733,3.433],[0.433,1.1],[0.6,1.5],[0,0],[1.533,3.367],[1.467,2.8],[0.103,0.117],[-0.083,0.129],[0.033,0.333],[1,0.1],[0.8,-0.067],[3.4,-0.4],[2.733,0.133],[9.067,0.933],[0.6,0.067],[0.233,-0.367],[-0.039,-0.031],[-0.369,-1.773],[-0.7,-1.467],[-2.1,-3.533],[-1.033,-1.9],[-2,-4.167]],"v":[[30.884,12.041],[25.284,3.241],[20.083,-5.759],[17.934,-10.708],[15.583,-15.508],[12.333,-20.559],[9.684,-25.508],[4.034,-36.909],[0.233,-43.458],[-1.066,-45.108],[-2.017,-46.508],[-1.917,-46.958],[-2.316,-47.958],[-2.716,-48.309],[-3.616,-49.008],[-5.267,-49.758],[-8.017,-48.809],[-16.366,-46.708],[-24.316,-45.659],[-31.667,-45.258],[-32.716,-44.958],[-33.716,-45.059],[-40.816,-46.108],[-46.016,-47.008],[-47.966,-47.108],[-49.416,-45.909],[-49.316,-44.758],[-49.266,-44.608],[-49.566,-44.559],[-49.766,-44.559],[-49.216,-42.958],[-48.316,-41.458],[-48.066,-40.059],[-40.017,-26.208],[-35.616,-17.809],[-31.816,-12.409],[-27.716,-5.358],[-22.816,3.841],[-18.616,13.341],[-16.816,18.341],[-13.917,24.991],[-11.267,30.841],[-7.566,38.491],[-3.116,45.691],[-2.816,45.991],[-2.866,46.441],[-1.917,47.041],[1.634,46.991],[5.184,46.541],[16.634,46.241],[28.083,47.191],[48.384,49.791],[49.534,49.591],[49.333,48.591],[49.184,48.491],[47.184,42.791],[44.134,37.241],[40.534,31.191],[35.784,21.591]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[300.166,350.759],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.3,0.167],[-0.067,0.067],[0.033,0.367],[0,0],[0,0.2],[3.8,5.833],[2.267,2.8],[1.5,1.533],[2.167,1.4],[0.567,0.333],[1,0.733],[5.967,2.033],[2.433,0.533],[0.867,0.133],[0.833,0.2],[2.2,0.233],[2.133,0],[0.933,0.1],[3.6,0.3],[8.667,-0.433],[0.133,-0.033],[0.4,-0.1],[0,0],[0.367,-0.2],[0.233,-0.133],[0,0],[0,0],[0,0],[0,-0.267],[-0.033,-0.2],[0.367,-0.1],[0.733,-0.833],[0.267,-1.033],[0,-2.233],[0,-3],[-0.167,-1.367],[-0.667,-3.533],[0,-2.133],[0,0],[0.2,-0.3],[0,0],[-3.233,-0.467],[0,0],[-1.767,-0.1],[-2.067,-0.033],[-2.467,-0.333],[-4.633,-2.3],[-3.767,-3.467],[-0.467,-0.867],[0,-0.867],[-0.233,-0.5],[-1.033,0]],"o":[[0.733,-0.033],[0.1,-0.067],[0,-0.3],[0,0],[-0.033,-0.233],[-1.333,-8.767],[-0.967,-1.5],[-2.3,-2.8],[-2.233,-2.267],[-0.567,-0.367],[-0.967,-0.767],[-4.633,-3.267],[-2.7,-0.933],[-0.733,-0.167],[-1.167,-0.367],[-2.667,-0.7],[-1.067,-0.1],[-0.933,-0.167],[-1.933,-0.2],[-13.067,-0.967],[-0.167,0],[-0.467,-0.067],[0,0],[-0.267,-0.1],[-0.4,0.2],[0,0],[0,0],[0,0],[-0.067,0.133],[0,0.267],[-0.367,0.033],[-1,0.333],[-0.7,0.8],[-0.2,0.7],[0,0.467],[-0.033,2.067],[0.167,1.8],[0.167,1.533],[0,0],[-0.067,0.767],[0,0],[3.167,0.1],[0,0],[2,0.033],[3.733,-0.067],[3.4,0],[4.8,0.633],[4.4,2.2],[1.4,1.4],[0.5,0.9],[0.267,0.5],[0.667,0.1],[0,0]],"v":[[60.667,31.991],[62.216,31.691],[62.466,31.491],[62.417,30.491],[62.266,27.142],[62.216,26.491],[54.516,4.591],[49.667,-1.858],[43.966,-8.358],[37.366,-13.858],[35.667,-14.909],[32.716,-17.159],[16.816,-25.108],[9.116,-27.309],[6.716,-27.759],[3.716,-28.608],[-3.583,-30.009],[-8.384,-30.159],[-11.184,-30.559],[-19.484,-31.309],[-52.083,-32.108],[-52.533,-32.059],[-53.833,-32.009],[-53.883,-31.909],[-54.833,-31.759],[-55.783,-31.259],[-56.283,-31.009],[-56.734,-30.559],[-56.934,-30.108],[-57.033,-29.509],[-56.984,-28.809],[-58.083,-28.608],[-60.684,-26.858],[-62.133,-24.108],[-62.434,-19.708],[-62.434,-14.509],[-62.234,-9.358],[-60.984,-1.358],[-60.734,4.142],[-60.734,8.491],[-61.133,10.091],[-61.133,10.142],[-51.533,10.991],[-36.984,11.292],[-31.333,11.491],[-22.633,11.441],[-13.833,11.941],[0.316,16.341],[12.566,24.841],[15.366,28.241],[16.116,30.892],[16.866,32.392],[19.417,32.542]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[275.083,206.009],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.3,-0.3],[0.035,-0.035],[0,0],[5.633,-0.567],[0.793,-0.099],[0,0],[0.433,0.067],[0,0],[0.208,-0.131],[0.167,0.067],[0,0],[0.067,-0.067],[0,0],[0.067,-0.167],[0,0],[0,0],[0.015,-0.027],[0.067,-0.833],[0.8,-3.267],[0,0],[0.6,-1.233],[1.067,-0.867],[1.233,-0.633],[0.4,-0.267],[0,0],[1.233,-0.5],[0.7,-0.267],[0.169,-0.068],[0.261,-0.028],[8.2,0.567],[4.633,0.3],[0.9,0.367],[0.2,0],[0.236,-0.181],[0,0],[0,0],[0.267,-0.067],[-0.1,-0.333],[-0.567,-0.233],[-0.033,-0.167],[0,0],[0.053,0.096],[0.267,0.1],[0.233,-0.133],[0,-0.733],[-0.633,-8.2],[-0.033,-4.167],[-0.133,-0.167],[-0.623,0.035],[-0.244,-0.092],[-0.136,0.006],[-0.273,-0.065],[0,0],[-2.567,-0.133],[0,0],[-0.249,0.103],[-2.011,0.057],[-2.967,0.2],[-2.6,0.267],[-3.867,0.767],[-1.467,0.533],[-3.033,1.633],[-0.1,0.133],[-0.036,0.142],[-2.403,1.721],[-2.8,2.367],[-0.767,0.767],[-1.067,1.267],[-1.367,2.233],[-1.933,5.767],[-0.467,2.633],[0.339,2.563],[0,0],[0,0.143],[0.05,0.113],[0.051,0.746],[0,0],[0.067,0.267],[0,0],[0,0],[0.011,-0.093],[0,0],[0,0.033],[0,0],[0.1,-0.1],[0,0],[0,0],[0,0],[0.334,0.073],[0,0],[0.233,0]],"o":[[-0.032,0.031],[0,0],[-11.367,0],[-0.773,0.068],[0,0],[-0.2,-0.267],[0,0],[-0.225,-0.065],[0,-0.033],[0,0],[-0.1,-0.067],[0,0],[-0.033,0.1],[0,0],[0,0],[-0.018,0.039],[-0.167,0.267],[-0.067,1.667],[0,0],[-0.233,0.867],[-0.9,1.667],[-0.667,0.567],[-1.6,0.8],[0,0],[-0.8,0.467],[-1.4,0.567],[-0.231,0.065],[-0.205,0.005],[-5.7,0.233],[-9.267,-0.767],[-2.3,-0.133],[-0.633,-0.233],[-0.397,-0.047],[0,0],[0,0],[-0.333,-0.1],[-0.4,0.2],[0.067,0.2],[0.267,0.067],[0,0],[-0.047,-0.137],[-0.167,-0.233],[-0.267,-0.067],[-0.3,0.2],[0.1,3.033],[0.533,7.067],[0,0.433],[0.177,0.235],[0.156,0.241],[0.164,0.073],[0.16,0.102],[0,0],[1.633,0.267],[0,0],[0.451,0.036],[1.656,0.157],[1.2,-0.067],[6.3,-0.533],[4.967,-0.567],[2.467,-0.5],[1.367,-0.467],[0.633,-0.4],[0.097,-0.125],[2.23,-0.813],[1.433,-1.033],[1.067,-0.9],[0.567,-0.567],[3.433,-4.067],[1.733,-2.867],[1.467,-4.3],[0.572,-3.07],[0,0],[0.067,-0.123],[0.017,-0.121],[0.051,-0.754],[0,0],[0.033,-0.2],[0,0],[0,0],[-0.022,0.141],[0,0],[-0.067,0.067],[0,0],[-0.133,-0.033],[0,0],[0,0],[0,0],[-0.066,-0.194],[0,0],[-0.4,-0.267],[-0.333,0]],"v":[[56.006,-34.629],[55.906,-34.529],[45.056,-34.529],[19.556,-33.678],[17.206,-33.428],[17.006,-34.029],[16.056,-34.529],[16.056,-34.478],[15.406,-34.379],[15.156,-34.529],[15.206,-34.428],[14.956,-34.428],[14.756,-34.228],[14.605,-33.828],[14.355,-32.529],[14.355,-31.629],[14.306,-31.529],[13.956,-29.879],[12.656,-22.478],[12.056,-20.428],[10.806,-17.279],[7.855,-13.478],[5.006,-11.678],[2.006,-10.078],[-0.544,-8.328],[-3.594,-6.879],[-6.744,-5.629],[-7.344,-5.428],[-8.044,-5.379],[-28.894,-5.879],[-49.744,-7.478],[-54.544,-8.228],[-55.794,-8.578],[-56.744,-8.379],[-56.844,-8.379],[-57.744,-8.728],[-58.644,-8.779],[-59.094,-7.978],[-58.144,-7.328],[-57.694,-6.978],[-57.994,-3.978],[-58.144,-4.328],[-58.794,-4.828],[-59.544,-4.728],[-59.994,-3.328],[-58.894,13.522],[-58.044,30.371],[-57.844,31.272],[-56.644,31.572],[-56.044,32.072],[-55.594,32.172],[-54.944,32.422],[-51.194,33.272],[-44.894,33.871],[-27.994,34.971],[-26.944,34.871],[-21.444,35.022],[-15.194,34.621],[-1.844,33.422],[11.406,31.422],[17.306,29.871],[23.906,26.721],[25.006,25.922],[25.206,25.522],[32.156,21.721],[38.506,16.621],[41.256,14.121],[43.706,11.371],[50.906,1.922],[56.406,-11.029],[59.306,-21.428],[59.656,-29.879],[59.855,-31.078],[59.956,-31.478],[59.906,-31.828],[59.906,-34.078],[59.855,-34.178],[59.806,-34.879],[59.706,-35.029],[59.556,-34.879],[59.506,-34.529],[59.406,-34.728],[59.306,-34.678],[59.206,-34.728],[58.855,-34.629],[58.806,-34.478],[58.806,-34.328],[58.756,-34.078],[58.156,-34.478],[57.906,-34.678],[56.956,-35.078]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[277.644,271.928],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[6.267,0],[0.233,0],[0.1,0.033],[0.2,0.033],[0,0],[0.3,-0.033],[0.167,-0.1],[0.033,-0.067],[0.167,0],[0,0],[0.533,-0.2],[0.333,-0.3],[0.033,-0.1],[0.1,-0.067],[0.1,-0.367],[0,-1.133],[0,0],[0,0],[-0.533,-12.4],[0,0],[0,-0.067],[-0.2,-6.033],[0,-1.233],[0.067,-1.333],[-0.067,-0.367],[0,0],[0,0],[0,0],[0,-0.067],[0,0],[-0.1,-0.7],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[-0.033,-0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0.033,-0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.067],[0,-0.1],[0,-0.1],[0,-0.1],[0,-0.1],[-0.033,-0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.033,-0.1],[0,0],[0,0],[-0.033,-0.1],[0,-0.067],[-0.233,-0.233],[-0.1,-0.1],[-0.1,-0.1],[-0.167,-0.1],[-0.233,-0.067],[-0.2,-0.033],[-0.2,0.033],[-0.2,0.067],[-0.033,0.033],[-1.933,-0.033],[-0.667,-0.1],[-1.167,-0.033],[-3.2,-0.267],[-1.6,0],[-2.833,0.133],[-1.433,-0.033],[-0.467,0.133],[-0.267,0.233],[-0.5,0.2],[0,0],[0,0],[-0.267,0.5],[-0.133,1.733],[1.1,9.567],[0.2,0.7],[0.233,0.6],[0,0],[0,0],[0.2,1.667],[-0.067,2.967],[-0.2,3.767],[-0.333,2.1],[-0.967,4.233],[0,0],[0.167,0.033],[1.6,0.033],[2.8,0.033],[0,0],[0.8,0.033]],"o":[[-0.233,0],[-0.1,-0.033],[-0.2,-0.033],[0,0],[-0.3,0.033],[-0.167,0.1],[-0.067,0.067],[-0.167,-0.033],[0,0],[-0.233,-0.033],[-0.6,0.233],[-0.1,0.1],[-0.1,0.033],[-0.3,0.2],[0.067,0.9],[0,0],[0,0],[-0.3,9.9],[0,0],[0.033,0.067],[0.7,3.167],[0.1,3.3],[0,1.5],[0.033,0.267],[0,0],[0,0],[0,0],[0,0.033],[0,0],[0.067,0.833],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0.033,0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[-0.033,0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.067],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0,0.1],[0.033,0.1],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.033,0.1],[0,0],[0,0],[0.033,0.067],[0,0.067],[0.033,0.267],[0.1,0.1],[0.1,0.1],[0.167,0.1],[0.233,0.067],[0.2,0.033],[0.2,-0.033],[0.2,-0.067],[0.033,0],[1.633,0.133],[0.5,0.233],[0.533,0.1],[1.167,0.033],[2.733,0.2],[1.3,0.033],[2.7,-0.133],[0.933,0],[0.433,-0.133],[0.6,0.067],[0,0],[0,0],[0.3,-0.333],[0.367,-0.767],[0.667,-9.833],[-0.133,-1.467],[-0.067,-0.233],[0,0],[0,0],[-0.867,-4.3],[-0.233,-2.333],[0.033,-1.567],[0.267,-4.2],[0.133,-0.767],[0,0],[-0.167,-0.067],[-1.6,-0.033],[-2.8,-0.033],[0,0],[-0.8,-0.033],[-6.233,0]],"v":[[-17.908,-113.242],[-18.609,-113.242],[-18.908,-113.341],[-19.508,-113.441],[-19.508,-113.341],[-20.408,-113.242],[-20.908,-112.941],[-21.059,-112.742],[-21.559,-112.792],[-21.559,-112.691],[-22.708,-112.441],[-24.109,-111.642],[-24.309,-111.341],[-24.609,-111.191],[-25.208,-110.341],[-25.109,-107.292],[-25.059,-102.142],[-24.158,-96.091],[-23.809,-62.642],[-23.809,-62.341],[-23.758,-62.142],[-22.408,-48.341],[-22.258,-41.542],[-22.359,-37.292],[-22.208,-36.341],[-22.008,-28.941],[-22.158,-27.542],[-22.158,-27.492],[-22.158,-27.341],[-21.958,-23.691],[-21.708,-21.392],[-21.708,-21.242],[-21.708,-20.941],[-21.708,-20.642],[-21.708,-20.341],[-21.708,-20.042],[-21.708,-19.742],[-21.708,-19.441],[-21.708,-19.142],[-21.708,-18.841],[-21.708,-18.591],[-21.708,-18.292],[-21.708,-17.992],[-21.708,-17.691],[-21.708,-17.392],[-21.708,-17.091],[-21.708,-16.792],[-21.708,-16.492],[-21.708,-16.191],[-21.708,-15.892],[-21.708,-15.591],[-21.708,-15.292],[-21.708,-14.992],[-21.708,-14.691],[-21.708,-14.392],[-21.708,-14.091],[-21.708,-13.792],[-21.708,-13.492],[-21.708,-13.191],[-21.708,-12.892],[-21.708,-12.591],[-21.708,-12.292],[-21.708,-11.992],[-21.708,-11.691],[-21.708,-11.392],[-21.708,-11.091],[-21.708,-10.792],[-21.708,-10.492],[-21.708,-10.191],[-21.708,-9.892],[-21.708,-9.591],[-21.708,-9.292],[-21.708,-8.992],[-21.708,-8.691],[-21.708,-8.392],[-21.708,-8.091],[-21.708,-7.792],[-21.708,-7.492],[-21.708,-7.191],[-21.708,-6.892],[-21.708,-6.591],[-21.708,-6.292],[-21.708,-5.992],[-21.708,-5.691],[-21.708,-5.392],[-21.708,-5.091],[-21.708,-4.792],[-21.708,-4.492],[-21.708,-4.191],[-21.708,-3.892],[-21.708,-3.591],[-21.708,-3.292],[-21.708,-2.992],[-21.708,-2.691],[-21.708,-2.392],[-21.708,-2.091],[-21.708,-1.792],[-21.708,-1.492],[-21.708,-1.191],[-21.708,-0.892],[-21.708,-0.591],[-21.708,-0.292],[-21.708,0.008],[-21.708,0.309],[-21.708,0.608],[-21.708,0.909],[-21.708,1.208],[-21.708,1.508],[-21.708,1.809],[-21.708,2.109],[-21.708,2.409],[-21.708,2.708],[-21.708,3.008],[-21.708,3.309],[-21.708,3.608],[-21.708,3.909],[-21.708,4.208],[-21.708,4.508],[-21.708,4.809],[-21.708,5.108],[-21.708,5.409],[-21.708,5.709],[-21.708,6.008],[-21.708,6.309],[-21.708,6.608],[-21.708,6.909],[-21.708,7.208],[-21.708,7.508],[-21.708,7.809],[-21.708,8.108],[-21.708,8.409],[-21.708,8.708],[-21.708,9.008],[-21.708,9.309],[-21.708,9.608],[-21.708,9.909],[-21.708,10.208],[-21.708,10.508],[-21.708,10.809],[-21.708,11.109],[-21.708,11.409],[-21.708,11.708],[-21.708,12.008],[-21.708,12.309],[-21.708,12.608],[-21.708,12.909],[-21.708,13.208],[-21.708,13.508],[-21.708,13.809],[-21.708,14.108],[-21.708,14.409],[-21.708,14.708],[-21.708,15.008],[-21.708,15.309],[-21.708,15.608],[-21.708,15.908],[-21.708,16.208],[-21.708,16.508],[-21.708,16.809],[-21.708,17.108],[-21.708,17.408],[-21.708,17.708],[-21.708,18.008],[-21.708,18.309],[-21.708,18.608],[-21.708,18.908],[-21.708,19.208],[-21.708,19.508],[-21.708,19.809],[-21.708,20.108],[-21.708,20.408],[-21.708,20.708],[-21.708,21.008],[-21.708,21.309],[-21.708,21.608],[-21.708,21.908],[-21.708,22.158],[-21.708,22.458],[-21.708,22.758],[-21.708,23.059],[-21.708,23.358],[-21.708,23.658],[-21.708,23.958],[-21.708,24.258],[-21.708,24.559],[-21.708,24.858],[-21.708,25.158],[-21.708,25.458],[-21.708,25.758],[-21.708,26.059],[-21.708,26.358],[-21.708,26.658],[-21.708,26.958],[-21.708,27.258],[-21.708,27.559],[-21.708,27.858],[-21.708,28.158],[-21.708,28.458],[-21.708,28.758],[-21.708,29.059],[-21.708,29.358],[-21.708,29.658],[-21.708,29.958],[-21.708,30.258],[-21.708,30.559],[-21.708,30.858],[-21.708,31.158],[-21.708,31.458],[-21.708,31.758],[-21.708,32.059],[-21.708,32.358],[-21.708,32.658],[-21.708,32.958],[-21.708,33.258],[-21.708,33.559],[-21.708,33.858],[-21.708,34.158],[-21.708,34.458],[-21.609,34.758],[-21.609,35.059],[-21.609,35.358],[-21.609,35.658],[-21.609,35.958],[-21.609,36.258],[-21.609,36.559],[-21.609,36.858],[-21.609,37.158],[-21.609,37.458],[-21.609,37.758],[-21.609,38.059],[-21.609,38.358],[-21.609,38.658],[-21.609,38.958],[-21.609,39.258],[-21.609,39.559],[-21.609,39.858],[-21.609,40.158],[-21.609,40.458],[-21.609,40.758],[-21.609,41.059],[-21.609,41.358],[-21.609,41.658],[-21.609,41.958],[-21.609,42.258],[-21.508,42.559],[-21.508,42.858],[-21.508,43.158],[-21.508,43.458],[-21.508,43.758],[-21.508,44.059],[-21.508,44.358],[-21.508,44.658],[-21.508,44.958],[-21.508,45.258],[-21.508,45.559],[-21.508,45.858],[-21.508,46.158],[-21.508,46.458],[-21.508,46.758],[-21.508,47.059],[-21.508,47.358],[-21.508,47.658],[-21.508,47.958],[-21.508,48.258],[-21.508,48.559],[-21.508,48.858],[-21.508,49.158],[-21.408,49.458],[-21.508,49.758],[-21.508,50.059],[-21.508,50.358],[-21.508,50.658],[-21.508,50.958],[-21.508,51.258],[-21.508,51.559],[-21.408,51.858],[-21.408,52.158],[-21.408,52.458],[-21.408,52.758],[-21.408,53.059],[-21.408,53.358],[-21.408,53.658],[-21.408,53.958],[-21.408,54.258],[-21.408,54.559],[-21.408,54.858],[-21.408,55.158],[-21.408,55.458],[-21.408,55.758],[-21.408,56.059],[-21.408,56.358],[-21.408,56.658],[-21.408,56.958],[-21.408,57.258],[-21.408,57.559],[-21.408,57.858],[-21.408,58.158],[-21.408,58.458],[-21.408,58.758],[-21.408,59.059],[-21.408,59.358],[-21.408,59.658],[-21.408,59.958],[-21.408,60.258],[-21.408,60.559],[-21.408,60.858],[-21.408,61.158],[-21.408,61.458],[-21.408,61.758],[-21.408,62.059],[-21.408,62.358],[-21.408,62.658],[-21.408,62.958],[-21.408,63.208],[-21.408,63.508],[-21.408,63.809],[-21.408,64.108],[-21.408,64.408],[-21.408,64.708],[-21.408,65.008],[-21.408,65.309],[-21.408,65.608],[-21.408,65.908],[-21.408,66.208],[-21.408,66.508],[-21.408,66.809],[-21.408,67.108],[-21.408,67.408],[-21.408,67.708],[-21.408,68.008],[-21.408,68.309],[-21.408,68.608],[-21.408,68.908],[-21.408,69.208],[-21.408,69.508],[-21.408,69.809],[-21.408,70.108],[-21.408,70.408],[-21.408,70.708],[-21.408,71.008],[-21.408,71.309],[-21.408,71.608],[-21.408,71.908],[-21.408,72.208],[-21.408,72.508],[-21.408,72.809],[-21.408,73.108],[-21.408,73.408],[-21.408,73.708],[-21.408,74.008],[-21.408,74.309],[-21.408,74.608],[-21.408,74.908],[-21.408,75.208],[-21.408,75.508],[-21.408,75.809],[-21.408,76.108],[-21.408,76.408],[-21.408,76.708],[-21.408,77.008],[-21.408,77.309],[-21.408,77.608],[-21.408,77.908],[-21.408,78.208],[-21.408,78.508],[-21.408,78.809],[-21.408,79.108],[-21.408,79.408],[-21.408,79.708],[-21.408,80.008],[-21.408,80.309],[-21.408,80.608],[-21.408,80.908],[-21.408,81.208],[-21.408,81.508],[-21.408,81.809],[-21.408,82.108],[-21.408,82.408],[-21.408,82.708],[-21.408,83.008],[-21.408,83.309],[-21.408,83.608],[-21.408,83.908],[-21.408,84.208],[-21.408,84.508],[-21.408,84.809],[-21.408,85.108],[-21.408,85.408],[-21.408,85.708],[-21.408,86.008],[-21.408,86.309],[-21.408,86.608],[-21.408,86.908],[-21.408,87.208],[-21.408,87.508],[-21.408,87.809],[-21.408,88.108],[-21.408,88.408],[-21.408,88.708],[-21.408,89.008],[-21.408,89.309],[-21.408,89.608],[-21.408,89.908],[-21.408,90.208],[-21.408,90.508],[-21.408,90.809],[-21.408,91.108],[-21.408,91.408],[-21.408,91.708],[-21.408,92.008],[-21.408,92.309],[-21.408,92.608],[-21.408,92.908],[-21.408,93.208],[-21.408,93.508],[-21.408,93.809],[-21.408,94.108],[-21.408,94.408],[-21.408,94.708],[-21.408,95.008],[-21.408,95.309],[-21.408,95.608],[-21.408,95.908],[-21.408,96.208],[-21.408,96.508],[-21.408,96.809],[-21.408,97.108],[-21.408,97.408],[-21.408,97.708],[-21.408,98.008],[-21.408,98.309],[-21.408,98.608],[-21.408,98.908],[-21.408,99.208],[-21.408,99.508],[-21.408,99.809],[-21.408,100.108],[-21.408,100.408],[-21.408,100.708],[-21.408,101.008],[-21.408,101.309],[-21.408,101.608],[-21.408,101.908],[-21.408,102.208],[-21.408,102.508],[-21.408,102.809],[-21.408,103.108],[-21.408,103.408],[-21.408,103.708],[-21.408,103.958],[-21.408,104.258],[-21.408,104.559],[-21.408,104.858],[-21.408,105.158],[-21.309,105.458],[-21.309,105.758],[-21.309,106.059],[-21.309,106.358],[-21.309,106.658],[-21.309,106.958],[-21.309,107.258],[-21.309,107.559],[-21.309,107.858],[-21.309,108.158],[-21.309,108.458],[-21.309,108.758],[-21.208,109.059],[-21.208,109.358],[-21.208,109.658],[-21.109,109.908],[-21.109,110.108],[-20.708,110.858],[-20.408,111.158],[-20.109,111.458],[-19.609,111.758],[-18.908,111.958],[-18.309,112.059],[-17.708,111.958],[-17.109,111.758],[-17.008,111.708],[-11.658,111.958],[-9.908,112.458],[-7.359,112.658],[-0.809,113.108],[5.691,113.408],[11.891,113.258],[18.092,113.108],[20.191,112.908],[21.242,112.358],[22.891,112.158],[22.941,112.158],[22.941,110.608],[23.792,109.358],[24.542,105.608],[23.891,76.508],[23.391,73.258],[22.941,72.008],[22.941,-41.941],[21.891,-46.941],[20.292,-55.892],[20.042,-63.841],[20.391,-71.841],[21.292,-81.292],[22.941,-88.792],[22.941,-112.691],[22.441,-112.841],[17.641,-112.941],[9.242,-113.042],[3.242,-113.142],[0.842,-113.242]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[197.258,287.092],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4"}],"ip":23,"op":24,"st":23,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"R Outlines 2","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[16.617,0],[0,0],[0,0],[0,0],[0,-15.408]],"o":[[0,0],[0,0],[0,0],[16.617,0],[0,15.408]],"v":[[12.609,-132.33],[-27.876,-132.33],[-27.876,-184.598],[12.609,-184.598],[41.311,-158.615]],"c":true}},"nm":"R"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"R"}],"ip":24,"op":95,"st":24,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"R Outlines","parent":26,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,27.795],[37.766,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[23.566,-9.064],[0,-37.463],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[46.447,-99.097],[86.932,-158.917],[19.558,-226.593],[-75.007,-226.593],[-75.007,0],[-27.876,0],[-27.876,-93.054],[-0.684,-93.054],[47.958,0],[99.923,0]],"c":true}},"nm":"R"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"R"}],"ip":24,"op":95,"st":24,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":1,"nm":"ResizerTemp","parent":27,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":34,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":1,"nm":"White Solid 48","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":34,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":34,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/S.json b/example/shared/src/commonMain/composeResources/files/mobilo/S.json new file mode 100644 index 00000000..8069d8af --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/S.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"S Outlines","parent":16,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-0.015,-0.015,0]},"a":{"k":[-0.14,-118.547,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":0,"s":[{"i":[[-38.37,0],[0,41.693],[0,41.089],[-13.596,0],[-11.179,-12.689],[0,0],[27.493,0],[0,-44.11],[0,-42.297],[18.732,0],[7.855,18.43],[0,0]],"o":[[41.693,0],[0,-82.782],[0,-14.804],[13.293,0],[0,0],[-16.013,-19.034],[-35.651,0],[0,76.437],[0,14.502],[-21.451,0],[0,0],[13.898,28.4]],"v":[[3.486,3.021],[80.225,-63.446],[-24.914,-167.075],[-0.14,-188.525],[37.324,-168.887],[68.443,-197.891],[-0.14,-229.614],[-70.837,-164.053],[34.605,-63.748],[3.788,-40.485],[-42.437,-70.697],[-80.505,-46.829]],"c":true}],"e":[{"i":[[-38.37,0],[0,41.693],[0,41.089],[-13.596,0],[-11.179,-12.689],[0,0],[27.493,0],[0,-44.11],[0,-42.297],[18.732,0],[5.736,18.721],[0,0]],"o":[[41.693,0],[0,-82.782],[0,-14.804],[13.293,0],[0,0],[-16.013,-19.034],[-35.651,0],[0,76.437],[0,14.502],[-21.451,0],[0,0],[8.77,30.377]],"v":[[4.445,2.22],[80.974,-63.485],[-23.626,-166.391],[0.07,-184.531],[40.553,-155.037],[71.961,-183.305],[-0.574,-228.34],[-68.668,-165.669],[35.84,-64.063],[6.916,-42.902],[-42.382,-76.977],[-83.022,-60.364]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[-38.37,0],[0,41.693],[0,41.089],[-13.596,0],[-11.179,-12.689],[0,0],[27.493,0],[0,-44.11],[0,-42.297],[18.732,0],[5.736,18.721],[0,0]],"o":[[41.693,0],[0,-82.782],[0,-14.804],[13.293,0],[0,0],[-16.013,-19.034],[-35.651,0],[0,76.437],[0,14.502],[-21.451,0],[0,0],[8.77,30.377]],"v":[[4.445,2.22],[80.974,-63.485],[-23.626,-166.391],[0.07,-184.531],[40.553,-155.037],[71.961,-183.305],[-0.574,-228.34],[-68.668,-165.669],[35.84,-64.063],[6.916,-42.902],[-42.382,-76.977],[-83.022,-60.364]],"c":true}],"e":[{"i":[[-38.37,0],[0,41.693],[0,41.089],[-13.596,0],[-11.179,-12.689],[0,0],[27.493,0],[0,-44.11],[0,-42.297],[18.732,0],[7.855,18.43],[0,0]],"o":[[41.693,0],[0,-82.782],[0,-14.804],[13.293,0],[0,0],[-16.013,-19.034],[-35.651,0],[0,76.437],[0,14.502],[-21.451,0],[0,0],[13.898,28.4]],"v":[[3.486,3.021],[80.225,-63.446],[-24.914,-167.075],[-0.14,-188.525],[36.083,-169.409],[65.982,-200.185],[-0.14,-229.614],[-70.837,-164.053],[34.605,-63.748],[3.788,-40.485],[-40.235,-67.908],[-79.035,-45.053]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":23,"s":[{"i":[[-38.37,0],[0,41.693],[0,41.089],[-13.596,0],[-11.179,-12.689],[0,0],[27.493,0],[0,-44.11],[0,-42.297],[18.732,0],[7.855,18.43],[0,0]],"o":[[41.693,0],[0,-82.782],[0,-14.804],[13.293,0],[0,0],[-16.013,-19.034],[-35.651,0],[0,76.437],[0,14.502],[-21.451,0],[0,0],[13.898,28.4]],"v":[[3.486,3.021],[80.225,-63.446],[-24.914,-167.075],[-0.14,-188.525],[36.083,-169.409],[65.982,-200.185],[-0.14,-229.614],[-70.837,-164.053],[34.605,-63.748],[3.788,-40.485],[-40.235,-67.908],[-79.035,-45.053]],"c":true}],"e":[{"i":[[-38.37,0],[0,41.693],[0,41.089],[-13.596,0],[-11.179,-12.689],[0,0],[27.493,0],[0,-44.11],[0,-42.297],[18.732,0],[7.855,18.43],[0,0]],"o":[[41.693,0],[0,-82.782],[0,-14.804],[13.293,0],[0,0],[-16.013,-19.034],[-35.651,0],[0,76.437],[0,14.502],[-21.451,0],[0,0],[13.898,28.4]],"v":[[3.486,3.021],[80.225,-63.446],[-24.914,-167.075],[-0.14,-188.525],[37.324,-168.887],[68.443,-197.891],[-0.14,-229.614],[-70.837,-164.053],[34.605,-63.748],[3.788,-40.485],[-42.437,-70.697],[-80.505,-46.829]],"c":true}]},{"t":25}]},"nm":"S"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"S"}],"ip":18,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"S Start","parent":17,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,280,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[44,0],"e":[44,44]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":3,"s":[44,44],"e":[44,55]},{"t":6}]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":0,"op":6,"st":-10,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":3,"nm":"S Half 1 Position","parent":16,"ks":{"o":{"k":0},"r":{"k":180},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[2.868,0.533,0],"e":[2.745,0.434,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[2.745,0.434,0],"e":[0.27,1.349,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[0.27,1.349,0],"e":[-0.674,1.77,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[-0.674,1.77,0],"e":[5.017,2.831,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[5.017,2.831,0],"e":[2.272,3.682,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[2.272,3.682,0],"e":[8.681,3.135,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[8.681,3.135,0],"e":[6.073,3.007,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[6.073,3.007,0],"e":[0.473,2.975,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[0.473,2.975,0],"e":[0,3.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[0,3.5,0],"e":[0,3.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":1,"nm":"Medium Gray-Royal Blue Solid 2","parent":2,"td":1,"ks":{"o":{"k":100},"r":{"k":-50.4},"p":{"k":[20.589,-2.274,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.548,213.516],[336.805,88.815],[509.326,416.135],[262.263,309.846],[198.954,266.992]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.548,213.516],[336.805,88.815],[509.326,416.135],[259.326,305.009],[183.593,291.306]],"c":true}]},{"t":17}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#416eb0","ip":6,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"S Half 1","parent":2,"tt":1,"ks":{"o":{"k":100},"r":{"k":-69},"p":{"k":[17.35,6.501,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":0,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-13.144,38.707],[-10.555,31.766],[-16.109,48.597]],"o":[[-48.755,63.436],[31.77,-0.948],[14.063,-41.41],[14.357,-43.209],[31.244,-94.254]],"v":[[-78.079,-55.425],[-47.532,57.637],[0.264,-17.385],[33.263,-118.602],[75.014,-241.424]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[62.417,-86.985],[127.519,-189.919]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[62.417,-86.985],[127.519,-189.919]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[66.006,-72.265],[141.011,-169.751]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[66.006,-72.265],[141.011,-169.751]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[69.376,-57.995],[154.504,-149.582]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[69.376,-57.995],[154.504,-149.582]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[167.996,-129.414]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[167.996,-129.414]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.983,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[177.949,-107.754]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.983,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[177.949,-107.754]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.129,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[185.674,-86.278]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.129,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[185.674,-86.278]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[186.799,-62.683]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":12,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[186.799,-62.683]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[186.309,-43.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":13,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[186.309,-43.065]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[171.633,-21.674]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[171.633,-21.674]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-19.175,-32.366]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[64.163,-55.885],[139.726,-0.265]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-19.175,-32.366]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[64.163,-55.885],[139.726,-0.265]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.089,21.355],[-43.828,2.289],[2.522,-42.41]],"o":[[-48.755,63.436],[31.77,-0.948],[10.807,-35.811],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.594,-6.627],[60.245,-67.029],[105.525,18.412]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.089,21.355],[-43.828,2.289],[2.522,-42.41]],"o":[[-48.755,63.436],[31.77,-0.948],[10.807,-35.811],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.594,-6.627],[60.245,-67.029],[105.525,18.412]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-4.64,34.278],[-29.264,-0.902],[27.265,-54.028]],"o":[[-48.755,63.436],[31.77,-0.948],[-1.337,-65.69],[33.671,2.352],[-16.852,66.444]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.001,-7.715],[51.792,-83.071],[78.094,20.372]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":17,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-4.64,34.278],[-29.264,-0.902],[27.265,-54.028]],"o":[[-48.755,63.436],[31.77,-0.948],[-1.337,-65.69],[33.671,2.352],[-16.852,66.444]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.001,-7.715],[51.792,-83.071],[78.094,20.372]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-35.73,0.479],[43.214,-42.137]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.935,-0.616],[-71.095,69.322]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.944,-2.493],[42.192,-93.986],[66.863,24.003]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-35.73,0.479],[43.214,-42.137]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.935,-0.616],[-71.095,69.322]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.944,-2.493],[42.192,-93.986],[66.863,24.003]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-0.449,40.875],[-39.993,2.038],[37.355,-43.128]],"o":[[-48.755,63.436],[31.77,-0.948],[0.642,-58.448],[45.879,-2.338],[-65.01,75.058]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.897,-2.638],[40.415,-94.559],[76.21,15.125]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-0.449,40.875],[-39.993,2.038],[37.355,-43.128]],"o":[[-48.755,63.436],[31.77,-0.948],[0.642,-58.448],[45.879,-2.338],[-65.01,75.058]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.897,-2.638],[40.415,-94.559],[76.21,15.125]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-0.449,40.875],[-39.993,2.038],[37.355,-43.128]],"o":[[-48.755,63.436],[31.77,-0.948],[0.642,-58.448],[45.879,-2.338],[-65.01,75.058]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.604,-2.747],[41.025,-92.919],[74.271,18.515]],"c":false}]},{"t":25}]},"nm":"Path 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[0.835]},"o":{"x":[0.333],"y":[0]},"n":["0p667_0p835_0p333_0"],"t":0,"s":[50],"e":[55.073]},{"i":{"x":[0.667],"y":[-1.227]},"o":{"x":[0.333],"y":[2.227]},"n":["0p667_-1p227_0p333_2p227"],"t":1,"s":[55.073],"e":[56.573]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0.25]},"n":["0p667_1_0p333_0p25"],"t":5,"s":[56.573],"e":[100]},{"t":18}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":43},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":1,"nm":"Medium Gray-Royal Blue Solid 2","parent":2,"td":1,"ks":{"o":{"k":100},"r":{"k":-50.4},"p":{"k":[20.589,-2.274,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.549,213.516],[-8.291,213.727],[164.23,541.048],[267.359,303.802],[203.111,254.296]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.548,213.516],[6.827,343.576],[275.689,530.99],[268.39,303.776],[192.657,290.073]],"c":true}]},{"t":17}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#416eb0","ip":6,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"S Half 2","parent":16,"tt":1,"ks":{"o":{"k":100},"r":{"k":-69},"p":{"k":[17.35,6.501,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":0,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-13.144,38.707],[-10.555,31.766],[-16.109,48.597]],"o":[[-48.755,63.436],[31.77,-0.948],[14.063,-41.41],[14.357,-43.209],[31.244,-94.254]],"v":[[-78.079,-55.425],[-47.532,57.637],[0.264,-17.385],[33.263,-118.602],[75.014,-241.424]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[62.417,-86.985],[127.519,-189.919]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[62.417,-86.985],[127.519,-189.919]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[66.006,-72.265],[141.011,-169.751]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[66.006,-72.265],[141.011,-169.751]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[69.376,-57.995],[154.504,-149.582]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[69.376,-57.995],[154.504,-149.582]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[167.996,-129.414]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[167.996,-129.414]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.983,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[177.949,-107.754]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.983,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[177.949,-107.754]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.129,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[185.674,-86.278]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.129,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[185.674,-86.278]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[186.799,-62.683]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":12,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[186.799,-62.683]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[186.309,-43.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":13,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[186.309,-43.065]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[171.633,-21.674]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[171.633,-21.674]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-14.855,-21.353]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[65.145,-49.966],[139.726,-0.265]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-14.855,-21.353]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[65.145,-49.966],[139.726,-0.265]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-14.974,25.319],[-34.761,-0.676],[0.212,-31.999]],"o":[[-48.755,63.436],[31.77,-0.948],[10.782,-35.831],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.492,-8.678],[58.69,-65.586],[108.233,10.247]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-14.974,25.319],[-34.761,-0.676],[0.212,-31.999]],"o":[[-48.755,63.436],[31.77,-0.948],[10.782,-35.831],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.492,-8.678],[58.69,-65.586],[108.233,10.247]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.357,33.067],[-32.163,-1.018],[18.882,-47.646]],"o":[[-48.755,63.436],[31.77,-0.948],[-0.623,-55.054],[33.671,2.352],[-16.852,66.444]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.009,-7.043],[48.978,-75.477],[78.055,14.987]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":17,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.357,33.067],[-32.163,-1.018],[18.882,-47.646]],"o":[[-48.755,63.436],[31.77,-0.948],[-0.623,-55.054],[33.671,2.352],[-16.852,66.444]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.009,-7.043],[48.978,-75.477],[78.055,14.987]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.197,-2.274],[20.4,-39.774]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[40.224,2.841],[-45.317,88.353]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.919,-3.052],[49.064,-78.565],[66.993,16.341]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.197,-2.274],[20.4,-39.774]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[40.224,2.841],[-45.317,88.353]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.919,-3.052],[49.064,-78.565],[66.993,16.341]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.234,0.724],[13.367,-36.444]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[44.758,-1.109],[-33.684,93.197]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.313,-2.322],[43.863,-82.38],[81.942,4.044]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":22,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.234,0.724],[13.367,-36.444]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[44.758,-1.109],[-33.684,93.197]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.313,-2.322],[43.863,-82.38],[81.942,4.044]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[16.5,-33.767]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-43.595,89.216]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[79.285,8.556]],"c":false}]},{"t":25}]},"nm":"Path 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[0.809]},"o":{"x":[0.333],"y":[0]},"n":["0p667_0p809_0p333_0"],"t":0,"s":[50],"e":[54.381]},{"i":{"x":[0.667],"y":[-1.092]},"o":{"x":[0.333],"y":[2.092]},"n":["0p667_-1p092_0p333_2p092"],"t":1,"s":[54.381],"e":[55.981]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0.247]},"n":["0p667_1_0p333_0p247"],"t":5,"s":[55.981],"e":[100]},{"t":18}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":43},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":1,"nm":"Medium Gray-Royal Blue Solid 2","parent":2,"td":1,"ks":{"o":{"k":100},"r":{"k":-50.4},"p":{"k":[20.589,-2.274,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.549,213.516],[-8.291,213.727],[164.23,541.048],[267.359,303.802],[203.111,254.296]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.549,213.516],[-8.291,213.727],[164.23,541.048],[257.128,321.693],[211.558,245.538]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.549,213.516],[-8.291,213.727],[164.23,541.048],[257.128,321.693],[211.558,245.538]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.548,213.516],[45.318,288.083],[217.839,615.403],[276.718,310.734],[192.657,290.073]],"c":true}]},{"t":17}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#416eb0","ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Sleeve","parent":16,"tt":1,"ks":{"o":{"k":100},"r":{"k":-69},"p":{"k":[17.35,6.501,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":0,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-13.144,38.707],[-10.555,31.766],[-16.109,48.597]],"o":[[-48.755,63.436],[31.77,-0.948],[14.063,-41.41],[14.357,-43.209],[31.244,-94.254]],"v":[[-78.079,-55.425],[-47.532,57.637],[0.264,-17.385],[33.263,-118.602],[75.014,-241.424]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-18.052,32.212],[-14.007,28.771],[-20.242,50.724]],"o":[[-48.755,63.436],[31.77,-0.948],[17.212,-34.356],[16.285,-35.629],[42.903,-81.301]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.044,-17.582],[22.249,-65.945],[86.755,-200.764]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-18.052,32.212],[-14.007,28.771],[-20.242,50.724]],"o":[[-48.755,63.436],[31.77,-0.948],[17.212,-34.356],[16.285,-35.629],[42.903,-81.301]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.044,-17.582],[22.249,-65.945],[86.755,-200.764]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-20.371,29.143],[-15.638,27.355],[-22.196,51.729]],"o":[[-48.755,63.436],[31.77,-0.948],[18.7,-31.021],[17.197,-32.046],[48.414,-75.178]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.19,-17.675],[32.119,-72.427],[107.38,-212.916]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-20.371,29.143],[-15.638,27.355],[-22.196,51.729]],"o":[[-48.755,63.436],[31.77,-0.948],[18.7,-31.021],[17.197,-32.046],[48.414,-75.178]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.19,-17.675],[32.119,-72.427],[107.38,-212.916]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-22.831,25.888],[-17.368,25.855],[-24.267,52.795]],"o":[[-48.755,63.436],[31.77,-0.948],[20.278,-27.486],[18.163,-28.247],[54.257,-68.687]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.344,-17.774],[33.167,-62.907],[119.831,-209.409]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-22.831,25.888],[-17.368,25.855],[-24.267,52.795]],"o":[[-48.755,63.436],[31.77,-0.948],[20.278,-27.486],[18.163,-28.247],[54.257,-68.687]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.344,-17.774],[33.167,-62.907],[119.831,-209.409]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[50.413,-73.563],[126.066,-191.293]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[50.413,-73.563],[126.066,-191.293]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[46.23,-58.224],[124.489,-176.552]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[46.23,-58.224],[124.489,-176.552]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[46.646,-45.01],[141.12,-155.509]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[46.646,-45.01],[141.12,-155.509]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[145.792,-143.314]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[145.792,-143.314]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.983,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[164.915,-118.354]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.983,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[164.915,-118.354]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.128,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[178.267,-90.417]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.128,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[178.267,-90.417]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[180.476,-65.557]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":12,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[180.476,-65.557]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[181.179,-45.767]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":13,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[181.179,-45.767]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[167.809,-25.441]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[167.809,-25.441]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-14.855,-21.353]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[65.145,-49.966],[139.773,-4.765]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-14.855,-21.353]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[65.145,-49.966],[139.773,-4.765]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-14.974,25.319],[-34.761,-0.676],[0.212,-31.999]],"o":[[-48.755,63.436],[31.77,-0.948],[10.782,-35.831],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.492,-8.678],[58.69,-65.586],[109.927,6.294]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-14.974,25.319],[-34.761,-0.676],[0.212,-31.999]],"o":[[-48.755,63.436],[31.77,-0.948],[10.782,-35.831],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.492,-8.678],[58.69,-65.586],[109.927,6.294]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.357,33.067],[-32.163,-1.018],[18.882,-47.646]],"o":[[-48.755,63.436],[31.77,-0.948],[-0.623,-55.054],[33.671,2.352],[-16.852,66.444]],"v":[[-88.083,-45.182],[-47.532,57.637],[-0.009,-7.043],[48.978,-75.477],[82.081,12.915]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":17,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.357,33.067],[-32.163,-1.018],[18.882,-47.646]],"o":[[-48.755,63.436],[31.77,-0.948],[-0.623,-55.054],[33.671,2.352],[-16.852,66.444]],"v":[[-88.083,-45.182],[-47.532,57.637],[-0.009,-7.043],[48.978,-75.477],[82.081,12.915]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.197,-2.274],[20.4,-39.774]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[40.224,2.841],[-45.317,88.353]],"v":[[-88.528,-42.016],[-47.532,57.637],[-0.919,-3.052],[49.064,-78.565],[72.144,13.774]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":18,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.197,-2.274],[20.4,-39.774]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[40.224,2.841],[-45.317,88.353]],"v":[[-88.528,-42.016],[-47.532,57.637],[-0.919,-3.052],[49.064,-78.565],[72.144,13.774]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.204,-1.73],[22.911,-37.624]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[41.047,2.124],[-43.206,89.232]],"v":[[-88.023,-40.472],[-47.532,57.637],[-0.991,-2.919],[48.12,-79.258],[72.28,14.439]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.204,-1.73],[22.911,-37.624]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[41.047,2.124],[-43.206,89.232]],"v":[[-88.023,-40.472],[-47.532,57.637],[-0.991,-2.919],[48.12,-79.258],[72.28,14.439]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.216,-0.775],[25.971,-33.848]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[42.491,0.866],[-39.5,90.775]],"v":[[-87.137,-37.763],[-47.532,57.637],[-1.116,-2.687],[46.463,-80.473],[73.652,10.85]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.216,-0.775],[25.971,-33.848]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[42.491,0.866],[-39.5,90.775]],"v":[[-87.137,-37.763],[-47.532,57.637],[-1.116,-2.687],[46.463,-80.473],[73.652,10.85]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.227,0.18],[18.43,-35.503]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[43.935,-0.392],[-35.795,92.318]],"v":[[-84.958,-44.422],[-47.532,57.637],[-1.241,-2.454],[44.807,-81.688],[77.192,8.098]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.227,0.18],[18.43,-35.503]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[43.935,-0.392],[-35.795,92.318]],"v":[[-84.958,-44.422],[-47.532,57.637],[-1.241,-2.454],[44.807,-81.688],[77.192,8.098]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.234,0.724],[16.27,-36.178]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[44.758,-1.109],[-33.684,93.197]],"v":[[-93.365,-39.106],[-47.532,57.637],[-1.313,-2.322],[43.863,-82.38],[80.535,4.564]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":22,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.234,0.724],[16.27,-36.178]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[44.758,-1.109],[-33.684,93.197]],"v":[[-93.365,-39.106],[-47.532,57.637],[-1.313,-2.322],[43.863,-82.38],[80.535,4.564]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.237,0.918],[14.814,-33.525]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[39.578,2.006],[-36.253,92.165]],"v":[[-86.619,-43.804],[-47.532,57.637],[-1.388,-2.432],[43.526,-82.627],[85.368,-0.902]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.237,0.918],[14.814,-33.525]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[39.578,2.006],[-36.253,92.165]],"v":[[-86.619,-43.804],[-47.532,57.637],[-1.388,-2.432],[43.526,-82.627],[85.368,-0.902]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.241,1.272],[15.171,-34.19]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.586,-1.831],[-40.931,90.286]],"v":[[-86.326,-45.002],[-47.532,57.637],[-1.526,-2.632],[42.912,-83.077],[85.719,-9.595]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":24,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.241,1.272],[15.171,-34.19]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.586,-1.831],[-40.931,90.286]],"v":[[-86.326,-45.002],[-47.532,57.637],[-1.526,-2.632],[42.912,-83.077],[85.719,-9.595]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[16.5,-33.767]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-43.595,89.216]],"v":[[-87.207,-40.139],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[79.952,4.016]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":25,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[16.5,-33.767]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-43.595,89.216]],"v":[[-87.207,-40.139],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[79.952,4.016]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[24.943,-36.221]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-56.318,81.782]],"v":[[-89.574,-43.515],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[80.132,4.483]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":26,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[24.943,-36.221]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-56.318,81.782]],"v":[[-89.574,-43.515],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[80.132,4.483]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[22.952,-38.269]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-51.062,84.942]],"v":[[-84.043,-47.245],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[80.275,4.16]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":27,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[22.952,-38.269]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-51.062,84.942]],"v":[[-84.043,-47.245],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[80.275,4.16]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.27,0.688],[20.961,-40.316]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[34.923,-0.744],[-45.805,88.101]],"v":[[-84.623,-38.988],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[79.719,4.105]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":28,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.27,0.688],[20.961,-40.316]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[34.923,-0.744],[-45.805,88.101]],"v":[[-84.623,-38.988],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[79.719,4.105]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.198,2.258],[20.961,-40.316]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[30.113,-2.112],[-45.805,88.101]],"v":[[-84.623,-38.988],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[82.487,-1.242]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":29,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.198,2.258],[20.961,-40.316]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[30.113,-2.112],[-45.805,88.101]],"v":[[-84.623,-38.988],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[82.487,-1.242]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[20.961,-40.316]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-45.805,88.101]],"v":[[-84.623,-38.988],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[85.938,-8.993]],"c":false}]},{"t":30}]},"nm":"Path 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[0.809]},"o":{"x":[0.333],"y":[0]},"n":["0p667_0p809_0p333_0"],"t":0,"s":[50],"e":[54.381]},{"i":{"x":[0.667],"y":[-1.092]},"o":{"x":[0.333],"y":[2.092]},"n":["0p667_-1p092_0p333_2p092"],"t":1,"s":[54.381],"e":[55.981]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0.247]},"n":["0p667_1_0p333_0p247"],"t":5,"s":[55.981],"e":[100]},{"t":18}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":30},"lc":3,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":1,"nm":"Medium Gray-Royal Blue Solid 2","parent":2,"td":1,"ks":{"o":{"k":100},"r":{"k":-50.4},"p":{"k":[20.589,-2.274,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.549,213.516],[-8.291,213.727],[164.23,541.048],[267.359,303.802],[203.111,254.296]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.549,213.516],[-8.291,213.727],[164.23,541.048],[257.128,321.693],[211.558,245.538]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.549,213.516],[-8.291,213.727],[164.23,541.048],[257.128,321.693],[211.558,245.538]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.548,213.516],[45.318,288.083],[217.839,615.403],[276.718,310.734],[192.657,290.073]],"c":true}]},{"t":17}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#416eb0","ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Arm","parent":16,"tt":1,"ks":{"o":{"k":100},"r":{"k":-69},"p":{"k":[17.35,6.501,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":0,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-13.144,38.707],[-10.555,31.766],[-16.109,48.597]],"o":[[-48.755,63.436],[31.77,-0.948],[14.063,-41.41],[14.357,-43.209],[31.244,-94.254]],"v":[[-78.079,-55.425],[-47.532,57.637],[0.264,-17.385],[33.263,-118.602],[75.014,-241.424]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-22.831,25.888],[-17.368,25.855],[-24.267,52.795]],"o":[[-48.755,63.436],[31.77,-0.948],[20.278,-27.486],[18.163,-28.247],[54.257,-68.687]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.344,-17.774],[57.999,-93.642],[144.664,-240.143]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-22.831,25.888],[-17.368,25.855],[-24.267,52.795]],"o":[[-48.755,63.436],[31.77,-0.948],[20.278,-27.486],[18.163,-28.247],[54.257,-68.687]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.344,-17.774],[57.999,-93.642],[144.664,-240.143]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[64.538,-87.044],[140.19,-204.774]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-25.391,22.5],[-19.169,24.293],[-26.423,53.905]],"o":[[-48.755,63.436],[31.77,-0.948],[21.921,-23.805],[19.169,-24.293],[60.34,-61.93]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.504,-17.877],[64.538,-87.044],[140.19,-204.774]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[67.981,-78.458],[146.24,-196.786]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-28.036,19],[-21.372,20.816],[-31.166,51.686]],"o":[[-48.755,63.436],[31.77,-0.948],[23.912,-19.215],[21.865,-20.878],[66.623,-54.949]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.67,-17.983],[67.981,-78.458],[146.24,-196.786]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[70.468,-62.611],[164.942,-173.11]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-30.68,15.501],[-23.576,17.34],[-35.908,49.466]],"o":[[-48.755,63.436],[31.77,-0.948],[25.902,-14.625],[24.562,-17.463],[72.907,-47.969]],"v":[[-78.079,-55.425],[-47.532,57.637],[-0.836,-18.089],[70.468,-62.611],[164.942,-173.11]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[172.591,-155.315]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-33.325,12.001],[-25.779,13.863],[-40.65,47.247]],"o":[[-48.755,63.436],[31.77,-0.948],[27.893,-10.035],[27.258,-14.048],[79.19,-40.988]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.002,-18.196],[71.735,-45.003],[172.591,-155.315]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.982,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[183.962,-130.005]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-35.969,8.501],[-27.982,10.387],[-44.889,39.683]],"o":[[-48.755,63.436],[31.77,-0.948],[29.191,-6.456],[29.954,-10.633],[85.474,-34.008]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.168,-18.302],[72.787,-36.619],[183.962,-130.005]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.129,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[200.206,-102.864]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-38.614,5.001],[-30.186,6.91],[-49.129,32.119]],"o":[[-48.755,63.436],[31.77,-0.948],[30.49,-2.877],[32.651,-7.218],[91.757,-27.027]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.334,-18.408],[73.244,-29.181],[200.206,-102.864]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[205.57,-75.974]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":12,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.022,3.137],[-31.359,5.059],[-39.276,16.342]],"o":[[-48.755,63.436],[31.77,-0.948],[31.341,-2.075],[34.087,-5.4],[95.103,-23.31]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.422,-18.465],[73.789,-25.635],[205.57,-75.974]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[204.569,-51.598]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":13,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-40.825,2.076],[-32.028,4.004],[-33.662,7.354]],"o":[[-48.755,63.436],[31.77,-0.948],[31.825,-1.618],[34.905,-4.364],[97.01,-21.192]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.472,-18.497],[74.099,-23.615],[204.569,-51.598]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[191.128,-23.098]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-32.208,9.824],[-32.062,2.748],[-32.911,-10.4]],"o":[[-48.755,63.436],[31.77,-0.948],[23.275,-8.874],[32.309,-2.288],[68.544,0.717]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.499,-15.347],[71.936,-32.429],[191.128,-23.098]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-14.855,-21.353]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[65.145,-49.966],[154.616,10.39]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-23.591,17.571],[-32.096,1.493],[-14.855,-21.353]],"o":[[-48.755,63.436],[31.77,-0.948],[18.917,-15.79],[29.713,-0.213],[40.079,22.626]],"v":[[-78.079,-55.425],[-47.532,57.637],[-2.363,-16.111],[65.145,-49.966],[154.616,10.39]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-14.974,25.319],[-34.761,-0.676],[0.212,-31.999]],"o":[[-48.755,63.436],[31.77,-0.948],[10.782,-35.831],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.492,-8.678],[58.69,-65.586],[112.615,30.274]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-14.974,25.319],[-34.761,-0.676],[0.212,-31.999]],"o":[[-48.755,63.436],[31.77,-0.948],[10.782,-35.831],[37.463,5.632],[11.613,44.535]],"v":[[-78.079,-55.425],[-47.532,57.637],[-1.492,-8.678],[58.69,-65.586],[112.615,30.274]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.357,33.067],[-32.163,-1.018],[18.882,-47.646]],"o":[[-48.755,63.436],[31.77,-0.948],[-0.623,-55.054],[33.671,2.352],[-16.852,66.444]],"v":[[-88.083,-45.182],[-47.532,57.637],[-0.009,-7.043],[48.978,-75.477],[74.889,33.324]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":17,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[-6.357,33.067],[-32.163,-1.018],[18.882,-47.646]],"o":[[-48.755,63.436],[31.77,-0.948],[-0.623,-55.054],[33.671,2.352],[-16.852,66.444]],"v":[[-88.083,-45.182],[-47.532,57.637],[-0.009,-7.043],[48.978,-75.477],[74.889,33.324]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.197,-2.274],[20.4,-39.774]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[40.224,2.841],[-45.317,88.353]],"v":[[-88.528,-42.016],[-47.532,57.637],[-0.919,-3.052],[49.064,-78.565],[61.953,33.91]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":18,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.197,-2.274],[20.4,-39.774]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[40.224,2.841],[-45.317,88.353]],"v":[[-88.528,-42.016],[-47.532,57.637],[-0.919,-3.052],[49.064,-78.565],[61.953,33.91]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.216,-0.775],[27.318,-33.851]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[42.491,0.866],[-39.5,90.775]],"v":[[-87.137,-37.763],[-47.532,57.637],[-1.116,-2.687],[46.463,-80.473],[61.989,26.058]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.216,-0.775],[27.318,-33.851]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[42.491,0.866],[-39.5,90.775]],"v":[[-87.137,-37.763],[-47.532,57.637],[-1.116,-2.687],[46.463,-80.473],[61.989,26.058]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.227,0.18],[18.43,-35.503]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[43.935,-0.392],[-35.795,92.318]],"v":[[-84.958,-44.422],[-47.532,57.637],[-1.241,-2.454],[44.807,-81.688],[69.881,19.744]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":21,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.227,0.18],[18.43,-35.503]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[43.935,-0.392],[-35.795,92.318]],"v":[[-84.958,-44.422],[-47.532,57.637],[-1.241,-2.454],[44.807,-81.688],[69.881,19.744]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.234,0.724],[13.367,-36.444]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[44.758,-1.109],[-33.684,93.197]],"v":[[-93.365,-39.106],[-47.532,57.637],[-1.313,-2.322],[43.863,-82.38],[73.577,16.736]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":22,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.234,0.724],[13.367,-36.444]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[44.758,-1.109],[-33.684,93.197]],"v":[[-93.365,-39.106],[-47.532,57.637],[-1.313,-2.322],[43.863,-82.38],[73.577,16.736]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.237,0.918],[14.814,-33.525]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.051,-1.365],[-36.253,92.165]],"v":[[-86.619,-43.804],[-47.532,57.637],[-1.388,-2.432],[43.526,-82.627],[77.429,18.217]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.237,0.918],[14.814,-33.525]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.051,-1.365],[-36.253,92.165]],"v":[[-86.619,-43.804],[-47.532,57.637],[-1.388,-2.432],[43.526,-82.627],[77.429,18.217]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.241,1.272],[15.888,-33.679]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.586,-1.831],[-40.931,90.286]],"v":[[-86.326,-45.002],[-47.532,57.637],[-1.526,-2.632],[42.912,-83.077],[75.08,16.832]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":24,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.241,1.272],[15.888,-33.679]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.586,-1.831],[-40.931,90.286]],"v":[[-86.326,-45.002],[-47.532,57.637],[-1.526,-2.632],[42.912,-83.077],[75.08,16.832]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[16.5,-33.767]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-43.595,89.216]],"v":[[-87.207,-40.139],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[73.609,16.091]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"n":"0p833_1_0p333_0","t":25,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[16.5,-33.767]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-43.595,89.216]],"v":[[-87.207,-40.139],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[73.609,16.091]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[24.943,-36.221]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-56.318,81.782]],"v":[[-89.574,-43.515],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[72.119,16.395]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"n":"0p833_0p833_0p167_0","t":26,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[24.943,-36.221]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-56.318,81.782]],"v":[[-89.574,-43.515],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[72.119,16.395]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[22.952,-38.269]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-51.062,84.942]],"v":[[-84.043,-47.245],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[72.477,17.329]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":27,"s":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[22.952,-38.269]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-51.062,84.942]],"v":[[-84.043,-47.245],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[72.477,17.329]],"c":false}],"e":[{"i":[[46.121,-60.008],[-24.32,0.726],[2.26,40.815],[-32.244,1.473],[20.961,-40.316]],"o":[[-48.755,63.436],[31.77,-0.948],[-3.247,-58.639],[45.891,-2.097],[-45.805,88.101]],"v":[[-84.623,-38.988],[-47.532,57.637],[-1.604,-2.747],[42.562,-83.333],[72.835,18.263]],"c":false}]},{"t":28}]},"nm":"Path 1"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":[{"i":{"x":[0.667],"y":[0.809]},"o":{"x":[0.333],"y":[0]},"n":["0p667_0p809_0p333_0"],"t":0,"s":[50],"e":[54.381]},{"i":{"x":[0.667],"y":[-1.092]},"o":{"x":[0.333],"y":[2.092]},"n":["0p667_-1p092_0p333_2p092"],"t":1,"s":[54.381],"e":[55.981]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0.247]},"n":["0p667_1_0p333_0p247"],"t":5,"s":[55.981],"e":[100]},{"t":18}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":24},"lc":3,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":3,"nm":"FootNull","parent":17,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[-90],"e":[-87.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[-87.8],"e":[-87.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[-87.5],"e":[-78.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[-78.6],"e":[-62.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[-62.9],"e":[-46.2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[-46.2],"e":[-29.2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":10,"s":[-29.2],"e":[-8.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[-8.4],"e":[16.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[16.3],"e":[44.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[44.8],"e":[83.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[83.4],"e":[142.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[142.6],"e":[193]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[193],"e":[226]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[226],"e":[250.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[250.8],"e":[248.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[248.8],"e":[246.1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[246.1],"e":[242.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":21,"s":[242.4],"e":[238.7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[238.7],"e":[295.267]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[295.267],"e":[306.4]},{"t":25}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[228.125,273,0],"e":[228.125,265.125,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[228.125,265.125,0],"e":[228.125,258,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[228.125,258,0],"e":[228.125,256.125,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[228.125,256.125,0],"e":[228.125,254.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[228.125,254.25,0],"e":[228.125,248.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[228.125,248.25,0],"e":[238.375,233.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[238.375,233.5,0],"e":[261.25,219.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[261.25,219.75,0],"e":[295.75,216.875,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[295.75,216.875,0],"e":[330.875,232.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[330.875,232.375,0],"e":[360.875,268.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[360.875,268.25,0],"e":[370.375,317.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[370.375,317.625,0],"e":[358.25,372.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[358.25,372.25,0],"e":[327.75,410.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[327.75,410.375,0],"e":[265,431,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[265,431,0],"e":[204.25,401.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[204.25,401.5,0],"e":[178.375,360.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[178.375,360.25,0],"e":[164.75,335.125,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[164.75,335.125,0],"e":[165.75,338.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[165.75,338.375,0],"e":[167.875,343.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[167.875,343.625,0],"e":[170,349.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[170,349.5,0],"e":[173.25,358.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[173.25,358.5,0],"e":[163.917,359.882,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[163.917,359.882,0],"e":[176.334,378.626,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[176.334,378.626,0],"e":[190,398.125,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":3,"nm":"HandNull","parent":17,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[-270],"e":[-269.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[-269.9],"e":[-270]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[-270],"e":[-269.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[-269.9],"e":[-269.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[-269.8],"e":[-257.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[-257.9],"e":[-242.1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[-242.1],"e":[-225.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[-225.9],"e":[-207.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":10,"s":[-207.9],"e":[-188.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":11,"s":[-188.3],"e":[-163]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[-163],"e":[-134.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[-134.6],"e":[-96.4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":14,"s":[-96.4],"e":[-42.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[-42.3],"e":[8.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":16,"s":[8.3],"e":[41.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":17,"s":[41.6],"e":[50.9]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[50.9],"e":[50.1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":19,"s":[50.1],"e":[48.2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[48.2],"e":[45.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":21,"s":[45.3],"e":[44.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":22,"s":[44.6],"e":[43.3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[43.3],"e":[45.1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":24,"s":[45.1],"e":[46.8]},{"t":25}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[270.875,280.75,0],"e":[272,287.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[272,287.375,0],"e":[272,295,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[272,295,0],"e":[272,302.125,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[272,302.125,0],"e":[272,303.875,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[272,303.875,0],"e":[272,305,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[272,305,0],"e":[271,310.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[271,310.375,0],"e":[262.062,326.125,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[262.062,326.125,0],"e":[240,340.438,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[240,340.438,0],"e":[206.188,343.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[206.188,343.625,0],"e":[171.25,329.562,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[171.25,329.562,0],"e":[141.75,294.875,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[141.75,294.875,0],"e":[131.75,246.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[131.75,246.75,0],"e":[143.125,192.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[143.125,192.75,0],"e":[177.875,152.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[177.875,152.25,0],"e":[237.75,137.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[237.75,137.5,0],"e":[295.25,159.125,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[295.25,159.125,0],"e":[321.438,202.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[321.438,202.75,0],"e":[325.25,220.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[325.25,220.75,0],"e":[323.875,218.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[323.875,218.625,0],"e":[321.5,212.875,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[321.5,212.875,0],"e":[318.25,206.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[318.25,206.375,0],"e":[316.125,201,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[316.125,201,0],"e":[314.5,198.875,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[314.5,198.875,0],"e":[316.5,200.875,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[316.5,200.875,0],"e":[318.375,202.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Hand","parent":12,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":6,"s":[92.5],"e":[57.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0.333]},"n":["0p833_0p833_0p333_0p333"],"t":8,"s":[57.5],"e":[57.5]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_1_0p167_0p167"],"t":18,"s":[57.5],"e":[109.3]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":20,"s":[109.3],"e":[88.8]},{"t":23}]},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":1,"s":[-49.086,22.028,0],"e":[16.619,21.966,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":5,"s":[16.619,21.966,0],"e":[21.014,21.528,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":8,"s":[21.014,21.528,0],"e":[16.619,21.966,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":22,"s":[16.619,21.966,0],"e":[-55.711,22.372,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[-1.077,24.664,0]},"s":{"k":[80,80,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":2,"s":[{"i":[[0.916,5.582],[-0.007,6.497]],"o":[[-1.375,-8.375],[0.007,-6.731]],"v":[[-18.375,0.375],[-17.876,-22.4]],"c":false}],"e":[{"i":[[0.916,5.582],[4.63,7.763]],"o":[[-1.375,-8.375],[-3.448,-5.781]],"v":[[-18.375,0.375],[-26.713,-20.596]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":6,"s":[{"i":[[0.916,5.582],[4.63,7.763]],"o":[[-1.375,-8.375],[-3.448,-5.781]],"v":[[-18.375,0.375],[-26.713,-20.596]],"c":false}],"e":[{"i":[[0.916,5.582],[-1.023,6.899]],"o":[[-1.375,-8.375],[0.987,-6.659]],"v":[[-18.375,0.375],[-22.067,-24.193]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":9,"s":[{"i":[[0.916,5.582],[-1.023,6.899]],"o":[[-1.375,-8.375],[0.987,-6.659]],"v":[[-18.375,0.375],[-22.067,-24.193]],"c":false}],"e":[{"i":[[0.916,5.582],[-1.023,6.899]],"o":[[-1.375,-8.375],[0.987,-6.659]],"v":[[-18.375,0.375],[-22.067,-24.193]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":19,"s":[{"i":[[0.916,5.582],[-1.023,6.899]],"o":[[-1.375,-8.375],[0.987,-6.659]],"v":[[-18.375,0.375],[-22.067,-24.193]],"c":false}],"e":[{"i":[[0.916,5.582],[3,7.625]],"o":[[-1.375,-8.375],[-2.465,-6.264]],"v":[[-18.375,0.375],[-24.5,-21.125]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":22,"s":[{"i":[[0.916,5.582],[3,7.625]],"o":[[-1.375,-8.375],[-2.465,-6.264]],"v":[[-18.375,0.375],[-24.5,-21.125]],"c":false}],"e":[{"i":[[0.916,5.582],[-0.007,6.497]],"o":[[-1.375,-8.375],[0.007,-6.731]],"v":[[-18.375,0.375],[-17.876,-22.4]],"c":false}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":12.5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":2,"s":[{"i":[[0.208,5.653],[-0.834,7.548]],"o":[[-0.354,-9.588],[0.74,-6.691]],"v":[[-7.375,-9.625],[-6.621,-33.005]],"c":false}],"e":[{"i":[[0.916,5.582],[2.825,9.71]],"o":[[-1.375,-8.375],[-1.88,-6.463]],"v":[[-7.375,-9.625],[-13.123,-34.54]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":6,"s":[{"i":[[0.916,5.582],[2.825,9.71]],"o":[[-1.375,-8.375],[-1.88,-6.463]],"v":[[-7.375,-9.625],[-13.123,-34.54]],"c":false}],"e":[{"i":[[0.916,5.582],[-1.611,7.514]],"o":[[-1.375,-8.375],[1.411,-6.582]],"v":[[-7.375,-9.625],[-6.312,-35.508]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":9,"s":[{"i":[[0.916,5.582],[-1.611,7.514]],"o":[[-1.375,-8.375],[1.411,-6.582]],"v":[[-7.375,-9.625],[-6.312,-35.508]],"c":false}],"e":[{"i":[[0.916,5.582],[-1.611,7.514]],"o":[[-1.375,-8.375],[1.411,-6.582]],"v":[[-7.375,-9.625],[-6.312,-35.508]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":19,"s":[{"i":[[0.916,5.582],[-1.611,7.514]],"o":[[-1.375,-8.375],[1.411,-6.582]],"v":[[-7.375,-9.625],[-6.312,-35.508]],"c":false}],"e":[{"i":[[0.916,5.582],[1.75,9.375]],"o":[[-1.375,-8.375],[-1.235,-6.617]],"v":[[-7.375,-9.625],[-11.25,-34.458]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":22,"s":[{"i":[[0.916,5.582],[1.75,9.375]],"o":[[-1.375,-8.375],[-1.235,-6.617]],"v":[[-7.375,-9.625],[-11.25,-34.458]],"c":false}],"e":[{"i":[[0.208,5.653],[-0.834,7.548]],"o":[[-0.354,-9.588],[0.74,-6.691]],"v":[[-7.375,-9.625],[-6.621,-33.005]],"c":false}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":12.5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":2,"s":[{"i":[[-0.676,5.616],[-0.471,9.931]],"o":[[1.356,-11.255],[0.319,-6.724]],"v":[[2.875,-9.625],[5.327,-37.978]],"c":false}],"e":[{"i":[[-0.818,5.597],[-1.75,10.625]],"o":[[1.625,-11.125],[1.094,-6.642]],"v":[[2.875,-9.625],[7.485,-37.258]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":6,"s":[{"i":[[-0.818,5.597],[-1.75,10.625]],"o":[[1.625,-11.125],[1.094,-6.642]],"v":[[2.875,-9.625],[7.485,-37.258]],"c":false}],"e":[{"i":[[-0.818,5.597],[-4.699,6.193]],"o":[[1.625,-11.125],[4.069,-5.363]],"v":[[2.875,-9.625],[11.793,-36.668]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":9,"s":[{"i":[[-0.818,5.597],[-4.699,6.193]],"o":[[1.625,-11.125],[4.069,-5.363]],"v":[[2.875,-9.625],[11.793,-36.668]],"c":false}],"e":[{"i":[[-0.818,5.597],[-4.699,6.193]],"o":[[1.625,-11.125],[4.069,-5.363]],"v":[[2.875,-9.625],[11.793,-36.668]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":19,"s":[{"i":[[-0.818,5.597],[-4.699,6.193]],"o":[[1.625,-11.125],[4.069,-5.363]],"v":[[2.875,-9.625],[11.793,-36.668]],"c":false}],"e":[{"i":[[-0.818,5.597],[-1.75,10.625]],"o":[[1.625,-11.125],[1.094,-6.642]],"v":[[2.875,-9.625],[6.25,-37.625]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":22,"s":[{"i":[[-0.818,5.597],[-1.75,10.625]],"o":[[1.625,-11.125],[1.094,-6.642]],"v":[[2.875,-9.625],[6.25,-37.625]],"c":false}],"e":[{"i":[[-0.676,5.616],[-0.471,9.931]],"o":[[1.356,-11.255],[0.319,-6.724]],"v":[[2.875,-9.625],[5.327,-37.978]],"c":false}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":12.5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":2,"s":[{"i":[[-1.009,5.566],[-0.253,8.059]],"o":[[2.002,-11.047],[0.211,-6.728]],"v":[[12.625,-4.375],[15.845,-31.258]],"c":false}],"e":[{"i":[[-1.753,5.379],[-3.312,6.486]],"o":[[3.625,-11.125],[3.061,-5.995]],"v":[[12.625,-4.375],[24.858,-29.926]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":6,"s":[{"i":[[-1.753,5.379],[-3.312,6.486]],"o":[[3.625,-11.125],[3.061,-5.995]],"v":[[12.625,-4.375],[24.858,-29.926]],"c":false}],"e":[{"i":[[-1.753,5.379],[-8.159,4.511]],"o":[[3.625,-11.125],[5.891,-3.257]],"v":[[12.625,-4.375],[28.863,-25.658]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":9,"s":[{"i":[[-1.753,5.379],[-8.159,4.511]],"o":[[3.625,-11.125],[5.891,-3.257]],"v":[[12.625,-4.375],[28.863,-25.658]],"c":false}],"e":[{"i":[[-1.753,5.379],[-8.159,4.511]],"o":[[3.625,-11.125],[5.891,-3.257]],"v":[[12.625,-4.375],[28.863,-25.658]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":19,"s":[{"i":[[-1.753,5.379],[-8.159,4.511]],"o":[[3.625,-11.125],[5.891,-3.257]],"v":[[12.625,-4.375],[28.863,-25.658]],"c":false}],"e":[{"i":[[-1.753,5.379],[-3.5,9.375]],"o":[[3.625,-11.125],[2.354,-6.306]],"v":[[12.625,-4.375],[21.75,-30.375]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":22,"s":[{"i":[[-1.753,5.379],[-3.5,9.375]],"o":[[3.625,-11.125],[2.354,-6.306]],"v":[[12.625,-4.375],[21.75,-30.375]],"c":false}],"e":[{"i":[[-1.009,5.566],[-0.253,8.059]],"o":[[2.002,-11.047],[0.211,-6.728]],"v":[[12.625,-4.375],[15.845,-31.258]],"c":false}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":12.5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":2,"s":[{"i":[[-1.138,5.541],[0.866,4.868]],"o":[[1.715,-8.348],[-1.179,-6.627]],"v":[[18.625,5.375],[18.43,-12.578]],"c":false}],"e":[{"i":[[-2.657,4.994],[-3.5,0.875]],"o":[[3.125,-5.875],[6.53,-1.633]],"v":[[18.625,5.375],[34.174,-0.63]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":6,"s":[{"i":[[-2.657,4.994],[-3.5,0.875]],"o":[[3.125,-5.875],[6.53,-1.633]],"v":[[18.625,5.375],[34.174,-0.63]],"c":false}],"e":[{"i":[[-2.657,4.994],[-5.543,-1.777]],"o":[[3.125,-5.875],[6.41,2.054]],"v":[[18.625,5.375],[33.485,-0.678]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":9,"s":[{"i":[[-2.657,4.994],[-5.543,-1.777]],"o":[[3.125,-5.875],[6.41,2.054]],"v":[[18.625,5.375],[33.485,-0.678]],"c":false}],"e":[{"i":[[-2.657,4.994],[-5.543,-1.777]],"o":[[3.125,-5.875],[6.41,2.054]],"v":[[18.625,5.375],[33.485,-0.678]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"n":"0p667_1_0p167_0","t":19,"s":[{"i":[[-2.657,4.994],[-5.543,-1.777]],"o":[[3.125,-5.875],[6.41,2.054]],"v":[[18.625,5.375],[33.485,-0.678]],"c":false}],"e":[{"i":[[-2.657,4.994],[-3.5,0.875]],"o":[[3.125,-5.875],[6.53,-1.633]],"v":[[18.625,5.375],[31.5,-3.875]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":22,"s":[{"i":[[-2.657,4.994],[-3.5,0.875]],"o":[[3.125,-5.875],[6.53,-1.633]],"v":[[18.625,5.375],[31.5,-3.875]],"c":false}],"e":[{"i":[[-1.138,5.541],[0.866,4.868]],"o":[[1.715,-8.348],[-1.179,-6.627]],"v":[[18.625,5.375],[18.43,-12.578]],"c":false}]},{"t":25}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":12.5},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[50,50]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Shoe","parent":11,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.185],"y":[0.185]},"n":["0p833_0p833_0p185_0p185"],"t":1,"s":[350.1],"e":[350.1]},{"i":{"x":[0.575],"y":[0.154]},"o":{"x":[0.185],"y":[0]},"n":["0p575_0p154_0p185_0"],"t":2,"s":[350.1],"e":[331.62]},{"i":{"x":[0.703],"y":[1]},"o":{"x":[0.341],"y":[0.257]},"n":["0p703_1_0p341_0p257"],"t":4,"s":[331.62],"e":[282.9]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":6,"s":[282.9],"e":[253.486]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":9,"s":[253.486],"e":[250.2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[250.2],"e":[291.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"n":["0p833_0p833_0p333_0"],"t":20,"s":[291.6],"e":[304.262]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":22,"s":[304.262],"e":[278.8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p667_1_0p167_0"],"t":27,"s":[278.8],"e":[282.9]},{"t":30}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[-58.434,14.26,0],"e":[-46.134,13.06,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[-46.134,13.06,0],"e":[-29.953,12.11,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[-29.953,12.11,0],"e":[-10.778,12.16,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[-10.778,12.16,0],"e":[3.894,17.21,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[3.894,17.21,0],"e":[12.566,22.26,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[12.566,22.26,0],"e":[12.566,22.26,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[-81.625,145.258,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[2.438,-0.094],[18.125,6.562],[0,0],[0,0],[0,0],[0.125,2.75],[-28.875,0.141]],"o":[[-1.812,0.016],[-3.625,-0.062],[0,0],[0,0],[0,0],[13.875,5],[2.75,0]],"v":[[42,-0.406],[-12.125,-6.312],[-33.812,-6.312],[-33.812,3],[-12.875,3],[-12.875,-3],[41.875,2.938]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-64.375,169.25],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-49.375,150.25],[-50.75,153.875]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-53.75,148.25],[-55.375,152]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.437,-1.972],[-4.357,1.829]],"o":[[-0.704,3.175],[7.423,-3.117]],"v":[[-66.757,143.065],[-60.694,150.987]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":3},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[9.29,1.227],[11.384,7.629],[3.25,7.375],[0,0],[-5.745,-0.037],[-3.125,0.016]],"o":[[-13.25,-1.75],[1.009,9.754],[-5,8.25],[0,0],[30.63,6.713],[7.125,-2.234]],"v":[[35.5,5.125],[-7.634,-9.879],[-30.125,-4.25],[-33.75,14.375],[-13.63,14.412],[37.5,19.984]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-63,150.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Sock","parent":11,"ks":{"o":{"k":100},"r":{"k":121.3},"p":{"k":[7.884,95.787,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-4.741,-10.62],[-8.5,-10.5]],"o":[[6.25,14],[8.5,10.5]],"v":[[-71.802,35.423],[-46,63.5]],"c":false}],"e":[{"i":[[-4.741,-10.62],[-8.5,-10.5]],"o":[[6.25,14],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-4.741,-10.62],[-8.5,-10.5]],"o":[[6.25,14],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}],"e":[{"i":[[-5.571,-10.057],[-7.689,-10.78]],"o":[[9.042,16.528],[7.767,10.952]],"v":[[-71.35,23.936],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-5.571,-10.057],[-7.689,-10.78]],"o":[[9.042,16.528],[7.767,10.952]],"v":[[-71.35,23.936],[-46,63.5]],"c":false}],"e":[{"i":[[-5.987,-9.776],[-7.283,-10.919]],"o":[[11.843,16.458],[7.401,11.178]],"v":[[-71.525,24.154],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-5.987,-9.776],[-7.283,-10.919]],"o":[[11.843,16.458],[7.401,11.178]],"v":[[-71.525,24.154],[-46,63.5]],"c":false}],"e":[{"i":[[-6.402,-9.495],[-6.878,-11.059]],"o":[[12.471,15.313],[7.034,11.404]],"v":[[-71.7,24.372],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-6.402,-9.495],[-6.878,-11.059]],"o":[[12.471,15.313],[7.034,11.404]],"v":[[-71.7,24.372],[-46,63.5]],"c":false}],"e":[{"i":[[-6.817,-9.213],[-6.472,-11.199]],"o":[[12.754,13.049],[6.668,11.63]],"v":[[-71.874,24.59],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-6.817,-9.213],[-6.472,-11.199]],"o":[[12.754,13.049],[6.668,11.63]],"v":[[-71.874,24.59],[-46,63.5]],"c":false}],"e":[{"i":[[-7.232,-8.932],[-6.067,-11.339]],"o":[[12.377,12.821],[6.301,11.856]],"v":[[-72.049,24.808],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-7.232,-8.932],[-6.067,-11.339]],"o":[[12.377,12.821],[6.301,11.856]],"v":[[-72.049,24.808],[-46,63.5]],"c":false}],"e":[{"i":[[-7.648,-8.651],[-5.661,-11.479]],"o":[[11.225,12.698],[5.935,12.082]],"v":[[-72.224,25.026],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-7.648,-8.651],[-5.661,-11.479]],"o":[[11.225,12.698],[5.935,12.082]],"v":[[-72.224,25.026],[-46,63.5]],"c":false}],"e":[{"i":[[-7.571,-8.784],[-5.256,-11.619]],"o":[[10.215,11.851],[5.568,12.308]],"v":[[-72.399,25.244],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-7.571,-8.784],[-5.256,-11.619]],"o":[[10.215,11.851],[5.568,12.308]],"v":[[-72.399,25.244],[-46,63.5]],"c":false}],"e":[{"i":[[-6.712,-9.482],[-8.5,-10.5]],"o":[[9.651,13.633],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-6.712,-9.482],[-8.5,-10.5]],"o":[[9.651,13.633],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}],"e":[{"i":[[-6.214,-9.828],[-8.5,-10.5]],"o":[[8.689,13.742],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-6.214,-9.828],[-8.5,-10.5]],"o":[[8.689,13.742],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}],"e":[{"i":[[-5.461,-10.268],[-8.5,-10.5]],"o":[[7.232,13.599],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-5.461,-10.268],[-8.5,-10.5]],"o":[[7.232,13.599],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}],"e":[{"i":[[-4.741,-10.62],[-8.5,-10.5]],"o":[[6.25,14],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[-4.741,-10.62],[-8.5,-10.5]],"o":[[6.25,14],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}],"e":[{"i":[[-4.188,-10.85],[-8.5,-10.5]],"o":[[5.5,14.25],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-4.188,-10.85],[-8.5,-10.5]],"o":[[5.5,14.25],[8.5,10.5]],"v":[[-71,23.5],[-46,63.5]],"c":false}],"e":[{"i":[[-10.631,-4.715],[-20.345,-3.918]],"o":[[20.511,9.097],[13.266,2.554]],"v":[[-76.944,26.698],[-32.347,45.082]],"c":false}]},{"t":23}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":20},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":3,"nm":"Rotation Null","parent":17,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[-129.6],"e":[-130.533]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":1,"s":[-130.533],"e":[-133.367]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[-133.367],"e":[-137.2]},{"i":{"x":[0.649],"y":[0.642]},"o":{"x":[0.302],"y":[0]},"n":["0p649_0p642_0p302_0"],"t":3,"s":[-137.2],"e":[-142.503]},{"i":{"x":[0.688],"y":[0.683]},"o":{"x":[0.342],"y":[0.309]},"n":["0p688_0p683_0p342_0p309"],"t":4,"s":[-142.503],"e":[-148.487]},{"i":{"x":[0.797],"y":[0.804]},"o":{"x":[0.431],"y":[0.442]},"n":["0p797_0p804_0p431_0p442"],"t":5,"s":[-148.487],"e":[-154.4]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":6,"s":[-154.4],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p667_1_0p167_0p167"],"t":18,"s":[3],"e":[-1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p667_1_0p167_0"],"t":23,"s":[-1],"e":[0]},{"t":25}]},"p":{"k":[249.875,281.469,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":1,"nm":"ResizerTemp","parent":18,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":37,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":1,"nm":"White Solid 49","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":37,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":37,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/T.json b/example/shared/src/commonMain/composeResources/files/mobilo/T.json new file mode 100644 index 00000000..e753a7e5 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/T.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Null 3","parent":22,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":2,"s":[77.8,77.8,100],"e":[110.9,110.9,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":3,"s":[110.9,110.9,100],"e":[100,100,100]},{"t":5}]}},"ao":0,"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":1,"nm":"Turquoise Solid 1","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[54,-55,0]},"a":{"k":[304,358,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[100,100,100],"e":[110.9,110.9,100]},{"t":15}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0.83,8.468],[-0.188,-1.923],[-1.225,-8.691],[0.267,1.891]],"o":[[-1.188,-8.425],[-0.187,-1.904],[0.856,8.735],[0.268,1.904],[0,0]],"v":[[301.063,338.408],[298.043,313.068],[295.043,313.068],[298.17,339.205],[301.063,338.408]],"c":true}],"e":[{"i":[[0,0],[0.83,8.468],[-0.188,-1.923],[-1.225,-8.691],[0.267,1.891]],"o":[[-1.188,-8.425],[-0.187,-1.904],[0.856,8.735],[0.268,1.904],[0,0]],"v":[[301.063,338.408],[296.043,299.568],[293.043,299.568],[298.17,339.205],[301.063,338.408]],"c":true}]},{"t":14}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#25cc8c","ip":10,"op":15,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":1,"nm":"Turquoise Solid 1","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[54,-55,0]},"a":{"k":[304,358,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[100,100,100],"e":[110.9,110.9,100]},{"t":15}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-1.729,4.057],[0.755,-1.772],[1.413,-4.454],[-0.583,1.837]],"o":[[1.333,-4.204],[0.749,-1.756],[-1.832,4.298],[-0.585,1.845],[0,0]],"v":[[314.996,338.834],[319.574,326.437],[316.983,324.923],[312.103,338.037],[314.996,338.834]],"c":true}],"e":[{"i":[[0,0],[-1.729,4.057],[0.755,-1.772],[1.413,-4.454],[-0.583,1.837]],"o":[[1.333,-4.204],[0.749,-1.756],[-1.832,4.298],[-0.585,1.845],[0,0]],"v":[[314.996,338.834],[323.574,313.437],[320.983,311.923],[312.103,338.037],[314.996,338.834]],"c":true}]},{"t":14}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"sw":500,"sh":600,"sc":"#25cc8c","ip":10,"op":15,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":1,"nm":"Turquoise Solid 1","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[54,-55,0]},"a":{"k":[304,358,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[100,100,100],"e":[110.9,110.9,100]},{"t":15}]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-1.128,0.866],[0.445,0.762],[0.647,-0.496],[1.054,-1.66],[-1.033,1.627]],"o":[[0.76,-1.196],[0.642,-0.492],[-0.369,-0.632],[-1.556,1.194],[-1.038,1.635],[0,0]],"v":[[324.322,343.228],[327.162,340.073],[327.7,338.021],[325.648,337.483],[321.731,341.714],[324.322,343.228]],"c":true}],"e":[{"i":[[0,0],[-1.128,0.866],[0.445,0.762],[0.647,-0.496],[1.054,-1.66],[-1.033,1.627]],"o":[[0.76,-1.196],[0.642,-0.492],[-0.369,-0.632],[-1.556,1.194],[-1.038,1.635],[0,0]],"v":[[324.322,343.228],[331.662,333.073],[331.2,330.021],[329.148,330.983],[321.731,341.714],[324.322,343.228]],"c":true}]},{"t":14}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 3"}],"sw":500,"sh":600,"sc":"#25cc8c","ip":10,"op":15,"st":-2,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":1,"nm":"White Solid 6","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-1.454,-2.729],[-3.886,1.591],[-0.431,1.503],[0.871,1.309],[3.206,-0.946]],"o":[[1.643,3.082],[1.447,-0.593],[0.433,-1.511],[-1.851,-2.783],[-4.121,1.216]],"v":[[179.637,302.159],[189.222,306.147],[192.415,302.929],[191.455,298.462],[182.741,295.027]],"c":true}],"e":[{"i":[[-0.697,-1.308],[-1.863,0.763],[-0.207,0.721],[0.417,0.628],[1.537,-0.453]],"o":[[0.788,1.478],[0.694,-0.284],[0.208,-0.724],[-0.887,-1.334],[-1.976,0.583]],"v":[[197.197,310.508],[201.792,312.42],[203.323,310.878],[202.862,308.736],[198.685,307.09]],"c":true}]},{"t":10}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 1"}],"sw":500,"sh":600,"sc":"#ffffff","ip":8,"op":10,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":1,"nm":"White Solid 6","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-4.593,-1.022],[-1.755,1.806],[2.618,2.423],[6.077,0.799],[2.363,-0.842]],"o":[[2.459,0.547],[2.486,-2.558],[-4.499,-4.163],[-2.487,-0.327],[-15.378,5.479]],"v":[[227.404,298.046],[234.553,297.05],[232.453,287.711],[215.815,280.598],[208.373,281.005]],"c":true}],"e":[{"i":[[-4.593,-1.022],[-1.755,1.806],[2.618,2.423],[6.077,0.799],[2.363,-0.842]],"o":[[2.459,0.547],[2.486,-2.558],[-4.499,-4.163],[-2.487,-0.327],[-15.378,5.479]],"v":[[240.404,302.046],[247.553,301.05],[245.453,291.711],[223.315,283.098],[215.873,283.505]],"c":true}]},{"t":10}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 2"}],"sw":500,"sh":600,"sc":"#ffffff","ip":8,"op":10,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":1,"nm":"White Solid 6","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[2.396,-2.493],[0.271,-0.73],[-1.888,3.144],[0.644,1.124]],"o":[[-0.465,0.484],[-2.099,5.658],[0.667,-1.11],[-1.845,-3.221]],"v":[[181.182,256.932],[180.061,258.751],[190.18,262.069],[189.932,258.373]],"c":true}],"e":[{"i":[[0.812,-0.845],[0.092,-0.248],[-0.64,1.066],[0.218,0.381]],"o":[[-0.158,0.164],[-0.712,1.918],[0.226,-0.376],[-0.625,-1.092]],"v":[[195.812,265.345],[195.432,265.961],[198.862,267.086],[198.778,265.834]],"c":true}]},{"t":10}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 3"}],"sw":500,"sh":600,"sc":"#ffffff","ip":8,"op":10,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":1,"nm":"White Solid 6","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[250,300,0]},"s":{"k":[100,100,100]}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"f","pt":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-1.667,0.479],[-1.159,-0.275],[-4.38,-1.746],[-0.176,-3.375],[2.036,1.97]],"o":[[1.806,-0.519],[4.548,1.081],[3.139,1.251],[-0.039,0.423],[-2.156,-2.087]],"v":[[210.764,231.781],[216.548,231.7],[230.24,235.248],[236.887,242.147],[210.449,235.406]],"c":true}],"e":[{"i":[[-1.097,0.315],[-0.763,-0.181],[-2.883,-1.149],[-0.116,-2.221],[1.34,1.297]],"o":[[1.189,-0.342],[2.993,0.711],[2.066,0.824],[-0.026,0.278],[-1.419,-1.374]],"v":[[220.306,237.036],[224.113,236.983],[239.625,242.818],[244,247.359],[220.099,239.422]],"c":true}]},{"t":10}]},"o":{"k":100},"x":{"k":0},"nm":"Mask 4"}],"sw":500,"sh":600,"sc":"#ffffff","ip":8,"op":10,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 4","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[-90.5,-136.662,0],"e":[-90.5,-141.662,0],"to":[0,-0.83333331346512,0],"ti":[0,0.83333331346512,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[-90.5,-141.662,0],"e":[-90.5,-141.662,0],"to":[0,0,0],"ti":[0,0,0]},{"t":40}]},"a":{"k":[-78.5,-9.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-3.314,0],[-1.75,-3.838],[3.314,0],[1.655,2.871]],"o":[[3.314,0],[1.375,3.015],[-3.314,0],[-2.5,-4.338]],"v":[[1.5,-1.5],[9,6.25],[8,19.5],[-0.5,10]],"c":true}],"e":[{"i":[[-4.28,0],[0,-4.28],[4.28,0],[0,4.28]],"o":[[4.28,0],[0,4.28],[-4.28,0],[0,-4.28]],"v":[[0,-7.75],[7.75,0],[0,7.75],[-7.75,0]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-4.28,0],[0,-4.28],[4.28,0],[0,4.28]],"o":[[4.28,0],[0,4.28],[-4.28,0],[0,-4.28]],"v":[[0,-7.75],[7.75,0],[0,7.75],[-7.75,0]],"c":true}],"e":[{"i":[[-3.314,0],[0,-3.314],[3.314,0],[0,3.314]],"o":[[3.314,0],[0,3.314],[-3.314,0],[0,-3.314]],"v":[[-0.188,-6],[5.812,0],[-0.188,6],[-6.188,0]],"c":true}]},{"t":8}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-77,8],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,9.5],[0,-14],[0,0],[-1.5,4]],"o":[[0,-9.5],[0,14],[0,0],[1.5,-4]],"v":[[-83,-26.5],[-84.75,-10.25],[-80,4],[-75,0.5]],"c":true}],"e":[{"i":[[0,9.5],[0,-14],[0,0],[-1.5,4]],"o":[[0,-9.5],[0,14],[0,0],[1.5,-4]],"v":[[-74.5,-51.5],[-90.75,-48],[-81.5,-1.5],[-75,-5.75]],"c":true}]},{"t":6}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 3","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":9,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[59.847,88.792],[60.347,81.667]],"c":false}],"h":1},{"t":13,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[64.875,82.625],[65.375,75.5]],"c":false}],"h":1},{"t":15,"s":[{"i":[[1.265,3.857],[0,0]],"o":[[-1.708,-5.208],[0,0]],"v":[[43.708,83.208],[44.208,73.583]],"c":false}],"h":1},{"t":17,"s":[{"i":[[5.042,0.292],[0,0]],"o":[[-5.042,-0.292],[0,0]],"v":[[56.708,80.625],[49.042,78.5]],"c":false}],"h":1},{"t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[52.031,79.508],[52.91,64.971]],"c":false}],"h":1},{"t":19,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[51.865,53.008],[52.743,44.471]],"c":false}],"h":1},{"t":21,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[52.24,56.095],[53.118,49.924]],"c":false}],"h":1},{"t":22,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[51.668,-27.742],[52.716,-61.529]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":9,"s":[{"i":[[0,0],[-0.625,2.875]],"o":[[0,0],[0.625,-2.875]],"v":[[60.75,85.75],[62.25,74.75]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,0],[-0.625,2.875]],"o":[[0,0],[0.625,-2.875]],"v":[[61.5,83.75],[62.25,76.125]],"c":false}],"h":1},{"t":13,"s":[{"i":[[0,0],[-0.625,2.875]],"o":[[0,0],[0.625,-2.875]],"v":[[58.625,83.75],[59.375,76.125]],"c":false}],"h":1},{"t":15,"s":[{"i":[[0.458,5.5],[-1.708,3.042]],"o":[[-0.458,-5.5],[1.441,-2.565]],"v":[[37.292,82.833],[38.708,70.125]],"c":false}],"h":1},{"t":17,"s":[{"i":[[0,0],[0.458,3.042]],"o":[[0,0],[-0.438,-2.909]],"v":[[44.292,77.75],[39.542,76.125]],"c":false}],"h":1},{"t":18,"s":[{"i":[[0,0],[-1.56,2.495]],"o":[[0,0],[1.56,-2.495]],"v":[[44.936,77.788],[46.287,64.515]],"c":false}],"h":1},{"t":19,"s":[{"i":[[0,0],[-1.56,2.495]],"o":[[0,0],[1.56,-2.495]],"v":[[44.769,51.288],[45.953,45.515]],"c":false}],"h":1},{"t":21,"s":[{"i":[[0,0],[-1.56,1.803]],"o":[[0,0],[1.56,-1.803]],"v":[[45.144,54.851],[46.328,50.678]],"c":false}],"h":1},{"t":22,"s":[{"i":[[0,0],[-1.56,2.495]],"o":[[0,0],[1.56,-2.495]],"v":[[44.534,-10.962],[45.318,-65.485]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":9,"s":[{"i":[[0.585,-0.026],[-0.212,-0.539],[-0.764,0.155],[0,0]],"o":[[-0.585,0.026],[0.212,0.539],[0.764,-0.155],[0,0]],"v":[[64.182,91.25],[63.321,93.51],[64.443,95.406],[64.993,92.783]],"c":true}],"h":1},{"t":13,"s":[{"i":[[0.585,-0.026],[-0.212,-0.539],[-0.764,0.155],[0,0]],"o":[[-0.585,0.026],[0.212,0.539],[0.764,-0.155],[0,0]],"v":[[61.932,88],[61.071,90.26],[63.068,91.906],[62.743,89.533]],"c":true}],"h":1},{"t":15,"s":[{"i":[[0.585,-0.026],[-0.212,-0.539],[-0.764,0.155],[0,0]],"o":[[-0.585,0.026],[0.212,0.539],[0.764,-0.155],[0,0]],"v":[[44.076,89.164],[42.188,91.092],[49.664,90.243],[46.428,89.367]],"c":true}],"h":1},{"t":17,"s":[{"i":[[0.26,-0.012],[-0.094,-0.24],[-0.34,0.069],[0,0]],"o":[[-0.26,0.012],[0.094,0.24],[0.34,-0.069],[0,0]],"v":[[48.167,83.52],[47.326,84.378],[50.653,84],[49.213,83.61]],"c":true}],"h":1},{"t":19,"s":[{"i":[[0.26,-0.012],[-0.094,-0.24],[-0.34,0.069],[0,0]],"o":[[-0.26,0.012],[0.094,0.24],[0.34,-0.069],[0,0]],"v":[[47.995,57.07],[48.525,58.76],[50.482,57.55],[49.042,57.16]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0.26,-0.008],[-0.094,-0.173],[-0.34,0.05],[0,0]],"o":[[-0.26,0.008],[0.094,0.173],[0.34,-0.05],[0,0]],"v":[[48.381,58.997],[48.91,60.219],[50.867,59.344],[49.427,59.063]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0.26,-0.012],[-0.094,-0.24],[-0.34,0.069],[0,0]],"o":[[-0.26,0.012],[0.094,0.24],[0.34,-0.069],[0,0]],"v":[[51.309,-12.52],[51.839,-10.831],[53.795,-12.04],[52.356,-12.43]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[97.348,100.189],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":9,"op":23,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 2","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-2.547,-0.106],[0,0]],"o":[[0,0],[2.547,0.106],[0,0]],"v":[[59.375,80.5],[61.453,87.394],[65.125,80.125]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":9,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"CHAR Body LEFT 2","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0,0],[0,0],[-0.422,10.398],[0,0],[7.926,2.015],[0,0],[0.922,-11.031]],"o":[[0,0],[0,0],[0.422,-10.398],[0,0],[-7.267,-1.847],[0,0],[-0.922,11.031]],"v":[[23.085,112.267],[67.741,112.216],[66.745,93.463],[70.839,74.075],[53.407,67.985],[28.502,65.05],[24.089,88.636]],"c":true}],"h":1},{"t":9,"s":[{"i":[[0,0],[0,0],[-0.422,10.398],[0,0],[8.093,-1.485],[0,0],[3.078,-13.636]],"o":[[0,0],[0,0],[0.422,-10.398],[0,0],[-7.375,1.353],[0,0],[-2.437,10.798]],"v":[[23.085,112.267],[67.741,112.216],[64.411,85.963],[73.339,51.908],[55.741,53.152],[35.835,58.883],[30.422,83.803]],"c":true}],"h":1},{"t":11,"s":[{"i":[[0,0],[0,0],[-0.422,10.398],[0,0],[7.759,-2.485],[0,0],[3.078,-13.636]],"o":[[0,0],[0,0],[0.422,-10.398],[0,0],[-7.141,2.287],[0,0],[-2.437,10.798]],"v":[[23.085,112.267],[67.741,112.216],[66.078,84.963],[70.839,56.575],[56.407,57.485],[35.335,62.217],[28.089,84.303]],"c":true}],"h":1},{"t":14,"s":[{"i":[[0,0],[0,0],[-0.422,10.398],[0,0],[8.593,-0.319],[0,0],[0.922,-11.031]],"o":[[0,0],[0,0],[0.422,-10.398],[0,0],[-7.493,0.278],[0,0],[-0.922,11.031]],"v":[[23.085,112.267],[67.741,112.216],[66.745,93.463],[71.672,65.075],[53.074,62.985],[28.502,65.05],[24.089,88.636]],"c":true}],"h":1},{"t":15,"s":[{"i":[[0,0],[0,0],[-0.422,10.398],[0,0],[10.426,-0.652],[0,0],[0.922,-11.031]],"o":[[0,0],[0,0],[0.422,-10.398],[0,0],[-7.483,0.468],[0,0],[-0.922,11.031]],"v":[[23.085,112.267],[67.741,112.216],[57.245,90.629],[59.672,72.408],[43.407,64.652],[27.335,61.217],[23.089,83.969]],"c":true}],"h":1},{"t":16,"s":[{"i":[[0,0],[0,0],[-0.422,10.398],[0,0],[11.426,3.848],[0,0],[0.922,-11.031]],"o":[[0,0],[0,0],[0.422,-10.398],[0,0],[-7.106,-2.393],[0,0],[-0.922,11.031]],"v":[[23.085,112.267],[67.741,112.216],[57.245,90.629],[57.672,74.908],[42.407,65.902],[31.835,60.217],[25.589,82.469]],"c":true}],"h":1},{"t":18,"s":[{"i":[[0,0],[0,0],[-1.402,10.312],[0,0],[7.926,2.015],[0,0],[2.578,-12.136]],"o":[[0,0],[0,0],[1.422,-10.463],[0,0],[-7.267,-1.847],[0,0],[-2.242,10.556]],"v":[[22.585,92.267],[66.241,99.883],[68.245,80.463],[72.005,62.408],[54.907,56.152],[31.335,49.05],[26.256,72.136]],"c":true}],"h":1},{"t":19,"s":[{"i":[[0,0],[0,0],[-1.402,10.312],[0,0],[7.593,2.348],[0,0],[2.578,-12.136]],"o":[[0,0],[0,0],[1.422,-10.463],[0,0],[-7.163,-2.215],[0,0],[-2.242,10.556]],"v":[[25.418,79.434],[69.408,87.716],[71.078,70.463],[74.505,50.242],[56.574,43.985],[33.835,37.55],[30.422,53.969]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0,0],[0,0],[-1.402,10.312],[0,0],[7.593,2.348],[0,0],[2.578,-12.136]],"o":[[0,0],[0,0],[1.422,-10.463],[0,0],[-7.163,-2.215],[0,0],[-2.242,10.556]],"v":[[25.326,82.684],[69.316,90.966],[73.361,72.838],[73.913,55.617],[55.982,49.36],[33.243,42.925],[28.205,59.094]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.957,30.608],[79.375,30.8],[79.541,-26.758],[79.345,-110.567],[51.519,-110.828],[22.972,-110.32],[22.941,14.075]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.957,30.608],[79.375,30.8],[79.541,-26.758],[79.293,-80.4],[51.503,-80.662],[22.955,-80.737],[22.941,14.075]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0.667,-0.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":2,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"legs LEFT 2","parent":11,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0,0],[-7.474,0.247],[-0.933,0.35],[0,0]],"o":[[0,0],[6.535,-0.216],[2,-0.75],[0,0]],"v":[[69.208,110.875],[84.368,110.486],[136.875,109.583],[139.125,106.583]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,0],[-7.467,0.397],[-0.926,0.369],[0,0]],"o":[[0,0],[6.529,-0.347],[1.984,-0.79],[0,0]],"v":[[69.208,110.875],[92.912,110.102],[133.557,108.14],[134.246,101.096]],"c":false}],"h":1},{"t":13,"s":[{"i":[[0,0],[-7.474,0.247],[-0.933,0.35],[0,0]],"o":[[0,0],[6.535,-0.216],[2,-0.75],[0,0]],"v":[[69.208,110.875],[104.534,98.486],[129.875,109.667],[132.125,106.667]],"c":false}],"h":1},{"t":15,"s":[{"i":[[0,0],[-1.966,0.153],[-0.933,0.35],[0,0]],"o":[[0,0],[8.632,5.014],[2,-0.75],[0,0]],"v":[[55.042,110.833],[87.201,100.986],[112.042,113.5],[114.292,110.5]],"c":false}],"h":1},{"t":18,"s":[{"i":[[0,0],[-1.132,-1.347],[-0.933,0.35],[0,0]],"o":[[0,0],[1.132,1.347],[2,-0.75],[0,0]],"v":[[50.708,96.167],[57.201,110.486],[76.875,111.167],[81.292,113.5]],"c":false}],"h":1},{"t":19,"s":[{"i":[[0,0],[-1.132,-1.347],[-0.986,-0.146],[0,0]],"o":[[0,0],[1.132,1.347],[0.292,0.667],[0,0]],"v":[[51.542,85.167],[66.368,98.819],[83.042,114.833],[83.458,117.167]],"c":false}],"h":1},{"t":21,"s":[{"i":[[0,0],[-1.132,-1.347],[-0.986,-0.146],[0,0]],"o":[[0,0],[1.132,1.347],[0.292,0.667],[0,0]],"v":[[52.792,88.917],[64.118,101.319],[83.042,114.833],[83.458,117.167]],"c":false}],"h":1},{"t":22,"s":[{"i":[[0,0],[0.034,-10.847],[-0.958,-4.5],[0,0]],"o":[[0,0],[-0.034,10.847],[0.958,4.5],[0,0]],"v":[[59.708,-39],[59.868,-7.347],[62.042,47.5],[65.292,62.5]],"c":false}],"h":1},{"t":23,"s":[{"i":[[0,0],[0.034,-10.847],[-0.958,-4.5],[0,0]],"o":[[0,0],[-0.034,10.847],[0.958,4.5],[0,0]],"v":[[51.667,-114.583],[58.652,-135.681],[62.167,-96.333],[60,-89]],"c":false}],"h":1},{"t":24,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[56.667,-109.333],[59.235,-114.597],[60.667,-118],[59.167,-121]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[-1.767,0],[-4.219,4.167],[-0.356,0],[0,0]],"o":[[0.937,0],[4.614,13.333],[0.757,0],[0,0]],"v":[[66.934,110.833],[84.219,90.5],[110.571,108.333],[114.333,109.667]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-1.767,0],[-4.219,4.167],[-0.356,0],[0,0]],"o":[[0.937,0],[4.614,13.333],[0.757,0],[0,0]],"v":[[66.934,110.833],[95.053,86.333],[111.904,109.667],[116.167,99.833]],"c":false}],"h":1},{"t":13,"s":[{"i":[[-1.767,0],[-4.219,4.167],[-0.356,0],[0,0]],"o":[[0.937,0],[4.614,13.333],[0.757,0],[0,0]],"v":[[66.934,110.833],[84.219,90.5],[110.238,110.333],[115.333,110.167]],"c":false}],"h":1},{"t":15,"s":[{"i":[[-1.767,0],[-4.219,4.167],[-0.356,0],[0,0]],"o":[[0.937,0],[4.614,13.333],[0.757,0],[0,0]],"v":[[39.601,111],[66.219,89.667],[76.071,110.667],[80.667,110.167]],"c":false}],"h":1},{"t":17,"s":[{"i":[[-1.767,0],[1.614,-0.833],[-0.356,0],[0,0]],"o":[[0.937,0],[-2.494,1.288],[0.757,0],[0,0]],"v":[[43.101,93.833],[36.386,85.167],[37.571,111],[31.833,113.667]],"c":false}],"h":1},{"t":19,"s":[{"i":[[-1.767,0],[1.447,-4.5],[-0.356,0],[0,0]],"o":[[0.937,0],[-0.859,2.672],[0.757,0],[0,0]],"v":[[40.101,84.5],[36.553,96],[34.571,111.333],[30.833,113.667]],"c":false}],"h":1},{"t":21,"s":[{"i":[[-1.767,0],[1.447,-4.5],[-0.356,0],[0,0]],"o":[[0.937,0],[-0.859,2.672],[0.757,0],[0,0]],"v":[[39.601,87.25],[32.553,97],[34.571,111.333],[30.833,113.667]],"c":false}],"h":1},{"t":22,"s":[{"i":[[-1.767,0],[0.281,-13.333],[-0.262,-6.5],[0,0]],"o":[[0.937,0],[-0.059,2.806],[0.262,6.5],[0,0]],"v":[[43.434,-37.167],[44.719,2.667],[43.238,64.333],[47,84.5]],"c":false}],"h":1},{"t":23,"s":[{"i":[[0,0],[-3.208,-12.945],[-0.262,-6.5],[0,0]],"o":[[0,0],[1.239,5],[0.262,6.5],[0,0]],"v":[[38.642,-114.333],[43.928,-128.333],[46.529,-94.75],[49.292,-88.167]],"c":false}],"h":1},{"t":24,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[43.642,-109.083],[45.261,-114.083],[49.696,-123.083],[47.792,-128.833]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":25,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"DEPTH R","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-13,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.226,-8.271],[27.832,-1.557],[33.439,5.158],[73.024,11.271],[80.709,-23.409],[79.06,-26.812],[73.561,-38.158],[43.368,-37.446]],"c":true}],"h":1},{"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[24.476,-20.771],[27.082,-17.682],[29.689,-14.592],[73.274,-7.479],[78.959,-43.159],[78.232,-44.889],[75.811,-50.658],[69.118,-14.113]],"c":true}],"h":1},{"t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[24.476,-20.771],[27.707,-16.057],[30.939,-11.342],[74.524,-4.229],[80.459,-38.909],[79.386,-41.62],[75.811,-50.658],[69.118,-14.113]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.226,-17.021],[28.207,-13.619],[31.189,-10.217],[74.524,-3.354],[80.084,-34.034],[79.011,-36.745],[75.436,-45.783],[69.118,-14.113]],"c":true}],"h":1},{"t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[23.225,-59],[52.091,-59],[80.963,-59],[81.176,-89.123],[64.901,-89.123],[55.334,-89.123],[23.438,-89.123],[23.438,-82.347]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.05,-171.255],[51.665,-171.316],[81.287,-171.377],[81.494,-213.419],[65.219,-213.419],[55.306,-213.391],[22.256,-213.297],[22.256,-197.354]],"c":true}],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.5,"y":0},"n":"0p833_0p833_0p5_0","t":24,"s":[{"i":[[0,0],[-10.834,0.351],[0,0],[0,0],[0,0],[11.333,-0.215],[0,0],[0,0]],"o":[[0,0],[10.834,-0.351],[0,0],[0,0],[0,0],[-11.333,0.215],[0,0],[0,0]],"v":[[22.05,-166.255],[51.333,-164.649],[81.287,-166.377],[81.494,-208.419],[65.219,-208.419],[51.5,-207.715],[22.256,-208.297],[22.256,-192.354]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.05,-171.255],[51.665,-171.316],[81.287,-171.377],[81.494,-213.419],[65.219,-213.419],[55.306,-213.391],[22.256,-213.297],[22.256,-197.354]],"c":true}]},{"t":25}]},"nm":"T"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"T"}],"ip":18,"op":25,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"face left","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[2.625,0.361],[-0.154,-1.119],[-1.25,-0.174],[-0.154,1.599]],"o":[[-1.939,-0.267],[0.154,1.119],[1.601,0.222],[0.146,-1.517]],"v":[[-72.75,59.665],[-74.596,59.869],[-73.375,61.694],[-70.337,60.569]],"c":true}],"h":1},{"t":4,"s":[{"i":[[2.625,0.695],[-0.154,-2.154],[-1.25,-0.334],[-0.154,3.077]],"o":[[-1.939,-0.513],[0.154,2.154],[1.601,0.428],[0.146,-2.919]],"v":[[-72.75,58.93],[-74.596,59.325],[-73.375,62.834],[-70.337,60.671]],"c":true}],"h":1},{"t":6,"s":[{"i":[[2.625,0.695],[-0.154,-2.154],[-1.25,-0.334],[-0.154,3.077]],"o":[[-1.939,-0.513],[0.154,2.154],[1.601,0.428],[0.146,-2.919]],"v":[[-71.75,48.93],[-73.596,49.325],[-72.375,52.834],[-69.337,50.671]],"c":true}],"h":1},{"t":7,"s":[{"i":[[2,-0.154],[-0.154,-2.154],[-1.818,0.727],[-0.154,3.077]],"o":[[-2,0.154],[0.154,2.154],[1.538,-0.615],[0.146,-2.919]],"v":[[-70.75,47.305],[-72.596,50.075],[-71,54.959],[-69.212,49.921]],"c":true}],"h":1},{"t":8,"s":[{"i":[[2,-0.154],[-0.154,-2.154],[-1.818,0.727],[-0.154,3.077]],"o":[[-2,0.154],[0.154,2.154],[1.538,-0.615],[0.146,-2.919]],"v":[[-71,47.055],[-72.846,49.825],[-71.5,58.959],[-69.462,49.671]],"c":true}],"h":1},{"t":9,"s":[{"i":[[0.162,-0.729],[-1.984,-0.839],[0.388,0.905],[2.778,1.323]],"o":[[-0.162,0.729],[1.984,0.839],[-0.328,-0.766],[-2.636,-1.256]],"v":[[-27.574,57.624],[-25.331,59.383],[-21.97,60.169],[-25.433,58.33]],"c":true}],"h":1},{"t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.125,72.055],[-39.221,59.45],[-13.875,73.334],[-18.962,69.171]],"c":true}],"h":1},{"t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.933,71.386],[-16.038,71.429],[-15.3,72.637],[-14.034,71.585]],"c":true}],"h":1},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-14.933,71.386],[-16.038,71.429],[-16.3,78.887],[-14.034,71.585]],"c":true}],"h":1},{"t":14,"s":[{"i":[[0.138,0.734],[2.155,-0.008],[-0.712,-0.68],[-3.075,-0.125]],"o":[[-0.138,-0.734],[-2.155,0.008],[0.603,0.576],[2.918,0.118]],"v":[[-55.013,74.267],[-57.767,73.531],[-61.165,74.13],[-57.258,74.459]],"c":true}],"h":1},{"t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-59.25,62.18],[-59.846,62.7],[-59,63.834],[-57.837,62.671]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0,0],[-1.182,5.194]],"o":[[0,0],[0.388,-1.706]],"v":[[-61.417,47.746],[-67.818,47.806]],"c":false}],"h":1},{"t":4,"s":[{"i":[[0,0],[-0.118,1.746]],"o":[[0,0],[0.118,-1.746]],"v":[[-68.292,55.121],[-65.068,40.806]],"c":false}],"h":1},{"t":6,"s":[{"i":[[0,0],[0,1.75]],"o":[[0,0],[0,-1.75]],"v":[[-67,42.25],[-64.75,27.75]],"c":false}],"h":1},{"t":7,"s":[{"i":[[0,0],[0,1.75]],"o":[[0,0],[0,-1.75]],"v":[[-67,42],[-64.75,27.5]],"c":false}],"h":1},{"t":8,"s":[{"i":[[0,0],[0.25,2.75]],"o":[[0,0],[-0.158,-1.743]],"v":[[-66.75,41.75],[-65,27.25]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,0],[0,1.75]],"o":[[0,0],[0,-1.75]],"v":[[-7.625,57.5],[-56.875,32.5]],"c":false}],"h":1},{"t":10,"s":[{"i":[[0,0],[0,1.75]],"o":[[0,0],[0,-1.75]],"v":[[-6.875,63.25],[-26.125,46.625]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,0],[-0.16,1.743]],"o":[[0,0],[0.16,-1.743]],"v":[[-10.667,65.949],[-7.001,56.119]],"c":false}],"h":1},{"t":14,"s":[{"i":[[0,0],[-0.688,-1.609]],"o":[[0,0],[0.688,1.609]],"v":[[-73.307,82.223],[-18.194,85.849]],"c":false}],"h":1},{"t":15,"s":[{"i":[[0,0],[0,1.75]],"o":[[0,0],[0,-1.75]],"v":[[-56.5,59],[-55.625,55.875]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0,0],[-5.431,3.65]],"o":[[0,0],[-0.685,2.71]],"v":[[-79.961,46.718],[-72.319,48.1]],"c":false}],"h":1},{"t":4,"s":[{"i":[[0,0],[0.685,-2.71]],"o":[[0,0],[-0.685,2.71]],"v":[[-74.211,53.718],[-71.819,40.6]],"c":false}],"h":1},{"t":6,"s":[{"i":[[0,0],[0.5,-2.75]],"o":[[0,0],[-0.5,2.75]],"v":[[-73,41.25],[-71.5,28]],"c":false}],"h":1},{"t":7,"s":[{"i":[[0,0],[0.5,-2.75]],"o":[[0,0],[-0.5,2.75]],"v":[[-73,41],[-71.5,27.75]],"c":false}],"h":1},{"t":8,"s":[{"i":[[0.25,7],[-0.436,-2.761]],"o":[[-0.25,-7],[0.75,4.75]],"v":[[-73.25,40.75],[-71.75,27.5]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,0],[1.625,2.625]],"o":[[0,0],[-1.471,-2.377]],"v":[[-15.625,73.875],[-40.625,62.125]],"c":false}],"h":1},{"t":10,"s":[{"i":[[0,0],[0.5,-2.75]],"o":[[0,0],[-0.5,2.75]],"v":[[-16.375,63.375],[-36.25,45.75]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,0],[0.75,-2.693]],"o":[[0,0],[-0.75,2.693]],"v":[[-16.133,65.32],[-16.551,54.863]],"c":false}],"h":1},{"t":14,"s":[{"i":[[0,0],[-2.526,-1.775]],"o":[[0,0],[2.287,1.607]],"v":[[-72.388,64.022],[-44.782,64.998]],"c":false}],"h":1},{"t":15,"s":[{"i":[[0,0],[0.875,-0.375]],"o":[[0,0],[-2.122,1.819]],"v":[[-61.75,58.375],[-64.125,56]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"CHAR Body LEFT","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-88.961,79.682],[-42.934,84.907],[-40.448,63.004],[-37.872,40.318],[-54.539,38.426],[-83.899,35.093],[-86.145,54.877]],"c":true}],"h":1},{"t":4,"s":[{"i":[[0,0],[0,0],[-2.704,10.299],[0,0],[0,0],[0,0],[7.058,-10.21]],"o":[[0,0],[0,0],[3.355,-12.777],[0,0],[0,0],[0,0],[-7.174,10.378]],"v":[[-87.461,78.432],[-44.184,85.407],[-48.771,63.027],[-44.122,35.568],[-57.349,32.137],[-80.649,26.093],[-84.993,48.372]],"c":true}],"h":1},{"t":6,"s":[{"i":[[0,0],[0,0],[-1.386,10.558],[0,0],[0,0],[0,0],[2.826,-13.622]],"o":[[0,0],[0,0],[2.105,-16.027],[0,0],[0,0],[0,0],[-2.563,12.353]],"v":[[-86.461,74.682],[-43.184,81.657],[-43.771,52.027],[-38.622,23.818],[-54.112,21.655],[-81.399,17.843],[-83.743,42.372]],"c":true}],"h":1},{"t":8,"s":[{"i":[[0,0],[0,0],[-1.386,10.558],[0,0],[0,0],[0,0],[2.826,-13.622]],"o":[[0,0],[0,0],[2.105,-16.027],[0,0],[0,0],[0,0],[-2.563,12.353]],"v":[[-86.461,74.682],[-43.184,81.657],[-40.771,52.527],[-40.622,27.068],[-54.862,23.405],[-82.899,21.843],[-87.993,42.372]],"c":true}],"h":1},{"t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[14.344,6.557],[0,0],[2.911,-9.115]],"o":[[0,0],[0,0],[0,0],[0,0],[-14.344,-6.557],[0,0],[-2.911,9.115]],"v":[[-74.248,63.12],[-14.098,86.447],[-9.496,68.152],[-2.836,46.38],[-27.323,31.557],[-67.485,13.553],[-72.005,39.885]],"c":true}],"h":1},{"t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-51.44,71.971],[-30.6025,80.659],[-9.765,89.347],[-3.591,71.183],[4.107,52.279],[-38.068,30.653],[-44.999,51.318]],"c":true}],"h":1},{"t":14,"s":[{"i":[[0,0],[0,0],[0,0],[-0.934,7.736],[0,0],[0,0],[-0.823,-7.184]],"o":[[0,0],[0,0],[0,0],[0.934,-7.736],[0,0],[0,0],[0.823,7.184]],"v":[[-77.426,90.711],[-54.426,89.673],[-31.426,88.635],[-20.35,67.236],[-27.394,58.325],[-76.348,60.494],[-83.177,76.556]],"c":true}],"h":1},{"t":15,"s":[{"i":[[0,0],[0,0],[0,0],[-0.934,7.736],[0,0],[0,0],[0.718,-7.195]],"o":[[0,0],[0,0],[0,0],[0.934,-7.736],[0,0],[0,0],[-0.718,7.195]],"v":[[-88.077,83.608],[-63.1265,87.1215],[-38.176,90.635],[-29.85,71.486],[-37.394,59.325],[-80.62,54.305],[-90.698,68.555]],"c":true}],"h":1},{"t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-80.497,8.274],[-25.073,8.75],[-24.873,-21.158],[-24.667,-52.136],[-44.736,-52.309],[-80.091,-52.612],[-80.271,-25.597]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":2},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0.667,-0.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":2,"op":19,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"legs LEFT","parent":15,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0,0],[-0.247,-7.474],[-0.35,-0.933],[0,0]],"o":[[0,0],[0.216,6.535],[0.75,2],[0,0]],"v":[[-59.625,82.125],[-59.236,97.284],[-58.375,111.125],[-55.375,113.375]],"c":false}],"h":1},{"t":4,"s":[{"i":[[0,0],[-0.253,-7.576],[0,0],[0,0]],"o":[[0,0],[0.215,6.418],[0,0],[0,0]],"v":[[-59.625,82.125],[-58.392,97.782],[-58.542,112.125],[-55.542,112.375]],"c":false}],"h":1},{"t":6,"s":[{"i":[[0,0],[-0.253,-7.576],[0,0],[0,0]],"o":[[0,0],[0.215,6.418],[0,0],[0,0]],"v":[[-59.458,76.958],[-59.225,96.282],[-58.542,112.125],[-55.542,112.375]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,0],[-0.775,-3.615],[0,0],[0,0]],"o":[[0,0],[0.215,6.418],[0,0],[0,0]],"v":[[-30.458,77.625],[-17.225,80.615],[-51.066,107.829],[-48.684,109.671]],"c":false}],"h":1},{"t":10,"s":[{"i":[[0,0],[-0.775,-3.615],[0,0],[0,0]],"o":[[0,0],[0.215,6.418],[0,0],[0,0]],"v":[[-22.125,83.625],[2.442,97.282],[-1.732,112.162],[0.649,114.004]],"c":false}],"h":1},{"t":14,"s":[{"i":[[0,0],[-12.775,-8.282],[0,0],[0,0]],"o":[[0,0],[9.225,9.051],[0,0],[0,0]],"v":[[-42.458,86.958],[-20.225,98.615],[0.268,109.162],[2.649,111.004]],"c":false}],"h":1},{"t":15,"s":[{"i":[[0,0],[-0.058,-0.885],[0,0],[0,0]],"o":[[0,0],[0.058,0.885],[0,0],[0,0]],"v":[[-57.958,89.458],[-45.392,102.115],[-55.208,112.167],[-52.208,112.417]],"c":false}],"h":1},{"t":17,"s":[{"i":[[0,0],[-0.058,-0.885],[0,0],[0,0]],"o":[[0,0],[0.058,0.885],[0,0],[0,0]],"v":[[-48.958,-9.875],[-48.392,27.449],[-49.208,45.167],[-47.542,50.083]],"c":false}],"h":1},{"t":19,"s":[{"i":[[0,0],[-3.6,-2.218],[0,0],[0,0]],"o":[[0,0],[3.6,2.218],[0,0],[0,0]],"v":[[-49.5,-114.708],[-44.6,-122.218],[-46.083,-99.833],[-45.083,-93.417]],"c":false}],"h":1},{"t":20,"s":[{"i":[[0,0],[-0.973,4.115],[0,0],[0,0]],"o":[[0,0],[0.933,-3.949],[0,0],[0,0]],"v":[[-48.5,-102.208],[-47.433,-104.885],[-46.417,-108.333],[-46.917,-112.083]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":2,"s":[{"i":[[0,-1.75],[0,-7.713],[0,-0.352],[0,0]],"o":[[0,0.928],[0,6.833],[0,0.75],[0,0]],"v":[[-66.5,81.75],[-66.5,98.7],[-66.5,112.25],[-69,113.5]],"c":false}],"h":1},{"t":4,"s":[{"i":[[0,-1.75],[0,-7.485],[0,-0.366],[0,0]],"o":[[0,0.897],[0,7.12],[0,0.75],[0,0]],"v":[[-66.5,81.75],[-68.5,98.09],[-66,112.25],[-69,112.667]],"c":false}],"h":1},{"t":6,"s":[{"i":[[0,-1.75],[0,-7.485],[0,-0.366],[0,0]],"o":[[0,0.897],[0,7.12],[0,0.75],[0,0]],"v":[[-67.333,76.75],[-66.5,96.59],[-66,112.25],[-69,112.667]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,-1.75],[4.167,-7.744],[0,-0.366],[0,0]],"o":[[0,0.897],[-4.167,7.744],[0,0.75],[0,0]],"v":[[-39.833,72.583],[-52.333,91.59],[-63.333,109.417],[-69,112.667]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,-1.75],[4.333,-4.256],[0,-0.366],[0,0]],"o":[[0,0.897],[-6.273,6.162],[0,0.75],[0,0]],"v":[[-31.5,79.917],[-42.333,93.923],[-60,105.417],[-64,110]],"c":false}],"h":1},{"t":14,"s":[{"i":[[0,-1.75],[4.167,-7.744],[0,-0.366],[0,0]],"o":[[0,0.897],[-4.167,7.744],[0,0.75],[0,0]],"v":[[-61.833,89.25],[-46.333,96.256],[-63.333,109.417],[-70.333,112]],"c":false}],"h":1},{"t":15,"s":[{"i":[[0,-1.75],[0.5,-2.244],[0,-0.366],[0,0]],"o":[[0,0.897],[-0.5,2.244],[0,0.75],[0,0]],"v":[[-67.167,87.75],[-84.833,94.423],[-73.667,110.917],[-76.667,111.333]],"c":false}],"h":1},{"t":17,"s":[{"i":[[0,-1.75],[0.5,-2.244],[0,-0.366],[0,0]],"o":[[0,0.897],[-0.5,2.244],[0,0.75],[0,0]],"v":[[-56.5,-10.583],[-60.167,40.09],[-57.333,75.25],[-60,84.667]],"c":false}],"h":1},{"t":19,"s":[{"i":[[0,-1.75],[-3.042,-4.577],[0,-0.366],[0,0]],"o":[[0,0.897],[3.042,4.577],[0,0.75],[0,0]],"v":[[-61.042,-115.583],[-57.542,-125.91],[-54.542,-108.083],[-56.208,-96.333]],"c":false}],"h":1},{"t":20,"s":[{"i":[[0,-1.75],[0,0],[0,-0.366],[0,0]],"o":[[0,0.897],[0,0],[0,0.75],[0,0]],"v":[[-60.042,-103.083],[-58.708,-109.077],[-56.375,-119.417],[-58.542,-124.333]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":4},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":21,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"DEPTH L","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-13,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-89.722,-19.664],[-75.25,-8.22],[-30.403,-3.34],[-28.748,-28.87],[-27.375,-50.035],[-36.667,-61.68]],"c":true}],"h":1},{"t":4,"s":[{"i":[[0,0],[0,0],[0,0],[-6.588,11.261],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[5.688,-9.723],[0,0],[0,0]],"v":[[-87.722,-21.664],[-78,-13.72],[-36.153,-5.84],[-36.412,-34.761],[-33.875,-53.285],[-42.667,-65.68]],"c":true}],"h":1},{"t":6,"s":[{"i":[[0,0],[0,0],[0,0],[-1.639,9.503],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.748,-10.13],[0,0],[0,0]],"v":[[-87.222,-26.164],[-81,-20.47],[-36.903,-12.84],[-35.998,-41.87],[-28.625,-65.785],[-37.917,-77.43]],"c":true}],"h":1},{"t":8,"s":[{"i":[[0,0],[0,0],[0,0],[-0.519,9.629],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0.748,-13.88],[0,0],[0,0]],"v":[[-87.222,-26.164],[-81,-20.47],[-36.903,-12.84],[-33.248,-41.62],[-31.875,-63.785],[-40.417,-75.68]],"c":true}],"h":1},{"t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-64.722,-87.164],[-69.25,-86.72],[-88.653,-29.34],[-18.748,-9.62],[-12.625,-11.535],[-48.417,-43.93]],"c":true}],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-37.222,-69.914],[-41.75,-69.47],[-63.153,-25.84],[-18.998,-10.62],[-12.625,-11.535],[-48.667,-30.68]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-37.222,-69.914],[-48.25,-64.97],[-63.153,-25.84],[-25.998,-8.12],[-12.625,-11.535],[-48.667,-30.68]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-37.222,-69.914],[-48.25,-64.97],[-63.153,-25.84],[-25.998,-8.12],[-12.625,-11.535],[-48.667,-30.68]],"c":true}],"e":[{"i":[[-1.543,-0.911],[-1.387,0.745],[0,0],[0,0],[0,0],[-0.221,-0.843]],"o":[[2.125,1.255],[1.387,-0.745],[0,0],[0,0],[0,0],[0.585,2.232]],"v":[[-50.625,-8.005],[18.363,-12.505],[1.863,-41.5],[-39.158,-43.137],[-73.375,-14.25],[-63.032,-10.845]],"c":true}]},{"t":14,"s":[{"i":[[-1.543,-0.911],[-1.387,0.745],[0,0],[0,0],[0,0],[-0.221,-0.843]],"o":[[2.125,1.255],[1.387,-0.745],[0,0],[0,0],[0,0],[0.585,2.232]],"v":[[-50.625,-8.005],[18.363,-12.505],[1.863,-41.5],[-39.158,-43.137],[-73.375,-14.25],[-63.032,-10.845]],"c":true}],"h":1},{"t":15,"s":[{"i":[[-1.543,-0.911],[-1.387,0.745],[0,0],[0,0],[0,0],[-0.221,-0.843]],"o":[[2.125,1.255],[1.387,-0.745],[0,0],[0,0],[0,0],[0.585,2.232]],"v":[[-85.125,-8.505],[-40.637,-3.005],[-32.137,-17],[-63.158,-17.137],[-88.875,-17.25],[-88.532,-15.845]],"c":true}],"h":1},{"t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-80.512,-59.63],[-22.775,-59.63],[-22.887,-120.125],[-54.454,-120.125],[-80.625,-120.125],[-80.625,-112.391]],"c":true}],"h":1},{"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-80.587,-161.13],[-21.1,-161.255],[-21.025,-214],[-54.342,-213.875],[-80.512,-213.875],[-80.512,-206.141]],"c":true}],"h":1},{"t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-80.587,-148.63],[-21.1,-148.755],[-21.025,-201.5],[-54.342,-201.375],[-80.512,-201.375],[-80.512,-193.641]],"c":true}],"h":1},{"t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-80.587,-161.13],[-21.1,-161.255],[-21.025,-214],[-54.342,-213.875],[-80.512,-213.875],[-80.512,-206.141]],"c":true}],"h":1},{"t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-80.408,-171.213],[-20.92,-171.338],[-21.05,-213.047],[-54.367,-212.922],[-80.537,-212.922],[-80.512,-206.141]],"c":true}],"h":1}]},"nm":"T 2"},{"ty":"tr","p":{"k":[-55.562,-42.877],"ix":2},"a":{"k":[-55.562,-42.877],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"tr","p":{"k":[-55.562,-42.877],"ix":2},"a":{"k":[-55.562,-42.877],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"T"}],"ip":3,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"T main body 2","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.333,102.312],[22.333,113.5],[-22.333,113.5],[-22.333,102.312]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.667,62.312],[22.333,113.5],[-22.333,113.5],[-22,62.312]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.667,62.312],[22.333,113.5],[-22.333,113.5],[-22,62.312]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.591,-23.742],[22.333,113.5],[-22.333,113.5],[-22.076,-23.742]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p1_1_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.591,-23.742],[22.333,113.5],[-22.333,113.5],[-22.076,-23.742]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.333,-112.688],[22.333,113.5],[-22.333,113.5],[-22.333,-112.688]],"c":true}]},{"t":16}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0.667,-0.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":2,"op":25,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"T main body 4","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p1_1_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.333,102.312],[22.333,113.5],[-22.333,113.5],[-22.333,102.312]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.333,-112.688],[22.333,113.5],[-22.333,113.5],[-22.333,-112.688]],"c":true}]},{"t":17}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0.667,-0.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":4,"op":25,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"T main body 3","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,-113,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p1_1_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.333,102.312],[22.333,113.5],[-22.333,113.5],[-22.333,102.312]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[22.333,-112.688],[22.333,113.5],[-22.333,113.5],[-22.333,-112.688]],"c":true}]},{"t":15}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0.667,-0.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":2,"op":25,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"T Outlines","parent":22,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[81.56,-226.593],[-80.681,-226.593],[-80.681,-184.598],[-22.975,-184.598],[-22.975,0],[23.854,0],[23.854,-184.598],[81.56,-184.598]],"c":true}},"nm":"T"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"T"}],"ip":25,"op":30,"st":25,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":1,"nm":"ResizerTemp","parent":23,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":30,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":1,"nm":"White Solid 50","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":30,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":30,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/U.json b/example/shared/src/commonMain/composeResources/files/mobilo/U.json new file mode 100644 index 00000000..be3057e4 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/U.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Drift","parent":23,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"U Front","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":12,"s":[0,154.432,0],"e":[0,100,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":23.6,"s":[0,100,0],"e":[0,100,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[-27.391,0],[0,42.668],[0,0],[0,0],[0,0],[10.734,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[24.359,0],[0,0],[0,0],[0,0],[0,25.064],[-14.766,0],[0,0],[0,0],[0,0],[0,43.872]],"v":[[-8.359,5.334],[36.246,-76.608],[36.243,-217.702],[18.239,-221.52],[18.299,-84.938],[-1.234,-38.976],[-21.709,-81.563],[-21.459,-231.749],[-45.913,-238.562],[-46.12,-73.437]],"c":true}],"e":[{"i":[[-37.641,0],[0,42.668],[0,0],[0,0],[0,0],[14.984,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[38.615,0],[0,0],[0,0],[0,0],[0,25.064],[-21.266,0],[0,0],[0,0],[0,0],[0,48.38]],"v":[[-10.109,4.49],[55.433,-76.608],[55.43,-218.014],[28.677,-222.02],[28.736,-84.938],[-1.234,-38.976],[-31.272,-81.563],[-31.022,-231.359],[-67.538,-237.484],[-67.62,-73.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-37.641,0],[0,42.668],[0,0],[0,0],[0,0],[14.984,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[38.615,0],[0,0],[0,0],[0,0],[0,25.064],[-21.266,0],[0,0],[0,0],[0,0],[0,48.38]],"v":[[-10.109,4.49],[55.433,-76.608],[55.43,-218.014],[28.677,-222.02],[28.736,-84.938],[-1.234,-38.976],[-31.272,-81.563],[-31.022,-231.359],[-67.538,-237.484],[-67.62,-73.437]],"c":true}],"e":[{"i":[[-44.641,0],[0,41.498],[0,0],[0,0],[0,0],[21.734,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[51.609,0],[0,0],[0,0],[0,0],[0,25.064],[-24.874,0],[0,0],[0,0],[0,0],[0,38.577]],"v":[[-11.859,3.646],[67.496,-76.608],[67.493,-218.139],[35.489,-222.458],[35.549,-84.938],[-1.234,-38.976],[-38.459,-81.563],[-38.209,-230.343],[-80.163,-236.343],[-80.23,-69.187]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-44.641,0],[0,41.498],[0,0],[0,0],[0,0],[21.734,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[51.609,0],[0,0],[0,0],[0,0],[0,25.064],[-24.874,0],[0,0],[0,0],[0,0],[0,38.577]],"v":[[-11.859,3.646],[67.496,-76.608],[67.493,-218.139],[35.489,-222.458],[35.549,-84.938],[-1.234,-38.976],[-38.459,-81.563],[-38.209,-230.343],[-80.163,-236.343],[-80.23,-69.187]],"c":true}],"e":[{"i":[[-50.141,0],[0,41.967],[0,0],[0,0],[0,0],[24.547,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[52.24,0],[0,0],[0,0],[0,0],[0,25.511],[-24.32,0],[0,0],[0,0],[0,0],[0,41.71]],"v":[[-8.109,3.209],[76.995,-76.006],[76.991,-219.616],[39.051,-222.999],[39.14,-84.62],[-1.922,-38.978],[-41.397,-81.558],[-41.022,-229.968],[-87.351,-233.906],[-87.341,-71.624]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-50.141,0],[0,41.967],[0,0],[0,0],[0,0],[24.547,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[52.24,0],[0,0],[0,0],[0,0],[0,25.511],[-24.32,0],[0,0],[0,0],[0,0],[0,41.71]],"v":[[-8.109,3.209],[76.995,-76.006],[76.991,-219.616],[39.051,-222.999],[39.14,-84.62],[-1.922,-38.978],[-41.397,-81.558],[-41.022,-229.968],[-87.351,-233.906],[-87.341,-71.624]],"c":true}],"e":[{"i":[[-55.641,0],[0,42.435],[0,0],[0,0],[0,0],[27.359,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[52.872,0],[0,0],[0,0],[0,0],[0,25.958],[-23.766,0],[0,0],[0,0],[0,0],[0,44.843]],"v":[[-4.359,2.771],[82.494,-75.405],[82.489,-221.186],[41.613,-223.697],[41.732,-84.303],[-2.609,-38.979],[-44.334,-81.553],[-43.834,-229.843],[-90.913,-232.843],[-90.827,-74.062]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[-55.641,0],[0,42.435],[0,0],[0,0],[0,0],[27.359,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[52.872,0],[0,0],[0,0],[0,0],[0,25.958],[-23.766,0],[0,0],[0,0],[0,0],[0,44.843]],"v":[[-4.359,2.771],[82.494,-75.405],[82.489,-221.186],[41.613,-223.697],[41.732,-84.303],[-2.609,-38.979],[-44.334,-81.553],[-43.834,-229.843],[-90.913,-232.843],[-90.827,-74.062]],"c":true}],"e":[{"i":[[-54.949,0],[0,42.552],[0,0],[0,0],[0,0],[27.091,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[54.865,0],[0,0],[0,0],[0,0],[0,25.511],[-24.32,0],[0,0],[0,0],[0,0],[0,44.357]],"v":[[-3.109,2.834],[89.745,-74.756],[89.741,-223.928],[44.114,-225.421],[44.203,-83.62],[-1.797,-38.978],[-44.897,-81.558],[-44.522,-228.531],[-93.413,-230.046],[-93.473,-73.749]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-54.949,0],[0,42.552],[0,0],[0,0],[0,0],[27.091,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[54.865,0],[0,0],[0,0],[0,0],[0,25.511],[-24.32,0],[0,0],[0,0],[0,0],[0,44.357]],"v":[[-3.109,2.834],[89.745,-74.756],[89.741,-223.928],[44.114,-225.421],[44.203,-83.62],[-1.797,-38.978],[-44.897,-81.558],[-44.522,-228.531],[-93.413,-230.046],[-93.473,-73.749]],"c":true}],"e":[{"i":[[-54.256,0],[0,42.668],[0,0],[0,0],[0,0],[26.822,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[56.859,0],[0,0],[0,0],[0,0],[0,25.064],[-24.874,0],[0,0],[0,0],[0,0],[0,43.872]],"v":[[-1.859,2.896],[91.496,-74.108],[91.493,-224.546],[44.739,-225.02],[44.799,-82.938],[-0.984,-38.976],[-45.459,-81.563],[-45.209,-228.093],[-93.913,-228.374],[-93.87,-73.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-54.256,0],[0,42.668],[0,0],[0,0],[0,0],[26.822,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[56.859,0],[0,0],[0,0],[0,0],[0,25.064],[-24.874,0],[0,0],[0,0],[0,0],[0,43.872]],"v":[[-1.859,2.896],[91.496,-74.108],[91.493,-224.546],[44.739,-225.02],[44.799,-82.938],[-0.984,-38.976],[-45.459,-81.563],[-45.209,-228.093],[-93.913,-228.374],[-93.87,-73.437]],"c":true}],"e":[{"i":[[-52.872,0],[0,42.902],[0,0],[0,0],[0,0],[26.285,0],[0,24.17],[0,0],[0,0],[0,0]],"o":[[52.872,0],[0,0],[0,0],[0,0],[0,24.17],[-25.983,0],[0,0],[0,0],[0,0],[0,42.902]],"v":[[0.641,3.021],[93.997,-72.812],[93.997,-226.593],[46.866,-226.593],[46.866,-81.573],[0.641,-38.974],[-45.584,-81.573],[-45.584,-226.593],[-92.413,-226.593],[-92.413,-72.812]],"c":true}]},{"t":25}]},"nm":"U"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"U"}],"ip":13,"op":25,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"U back extrude 02","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0.988,-154.364,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,-25],[9.5,-4.5],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,25],[-9.5,4.5],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[-6.25,-67],[-6,72],[-29,116],[1.75,128],[24.25,88.5],[21.75,-61.5],[18.25,-67]],"c":true}],"e":[{"i":[[0,0],[0,-25],[9.5,-4.5],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,25],[-9.5,4.5],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[4.717,-67.505],[4.75,71.25],[-18.25,115.25],[12.5,127.25],[35,87.75],[32.5,-62.25],[29.217,-67.505]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,-25],[9.5,-4.5],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,25],[-9.5,4.5],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[4.717,-67.505],[4.75,71.25],[-18.25,115.25],[12.5,127.25],[35,87.75],[32.5,-62.25],[29.217,-67.505]],"c":true}],"e":[{"i":[[0,0],[0,-25],[18.625,-2.609],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,25.479],[-9.698,3.471],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[13.483,-67.825],[13.625,70.775],[-18.375,115.075],[21.375,126.775],[43.875,87.275],[37.975,-62.525],[34.133,-67.925]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,-25],[18.625,-2.609],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,25.479],[-9.698,3.471],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[13.483,-67.825],[13.625,70.775],[-18.375,115.075],[21.375,126.775],[43.875,87.275],[37.975,-62.525],[34.133,-67.925]],"c":true}],"e":[{"i":[[0,0],[0,-25],[27.75,-0.719],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,25.959],[-9.897,2.443],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[22.25,-68.488],[22.5,70.3],[-18.5,114.9],[30.25,126.3],[52.75,86.8],[43.45,-62.8],[39.05,-68.688]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,-25],[27.75,-0.719],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,25.959],[-9.897,2.443],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[22.25,-68.488],[22.5,70.3],[-18.5,114.9],[30.25,126.3],[52.75,86.8],[43.45,-62.8],[39.05,-68.688]],"c":true}],"e":[{"i":[[0,0],[0,-25],[34.25,0.487],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,26.438],[-10.095,1.414],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[28,-69.253],[28.25,69.617],[-20.083,114.517],[36,125.617],[58.5,86.117],[45.8,-63.283],[40.95,-69.316]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,-25],[34.25,0.487],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,26.438],[-10.095,1.414],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[28,-69.253],[28.25,69.617],[-20.083,114.517],[36,125.617],[58.5,86.117],[45.8,-63.283],[40.95,-69.316]],"c":true}],"e":[{"i":[[0,0],[0,-25],[40.75,1.692],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,26.918],[-10.294,0.385],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[33.75,-69.337],[34,68.933],[-21.667,114.133],[41.75,124.933],[64.25,85.433],[48.15,-63.767],[42.85,-69.619]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,-25],[40.75,1.692],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,26.918],[-10.294,0.385],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[33.75,-69.337],[34,68.933],[-21.667,114.133],[41.75,124.933],[64.25,85.433],[48.15,-63.767],[42.85,-69.619]],"c":true}],"e":[{"i":[[0,0],[0,-25],[47.25,2.897],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,27.397],[-10.492,-0.643],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[39.5,-70.268],[39.75,68.25],[-23.25,113.75],[47.5,124.25],[70,84.75],[50.5,-64.25],[43.625,-70.781]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,-25],[47.25,2.897],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0,27.397],[-10.492,-0.643],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[39.5,-70.268],[39.75,68.25],[-23.25,113.75],[47.5,124.25],[70,84.75],[50.5,-64.25],[43.625,-70.781]],"c":true}],"e":[{"i":[[0,0],[-0.326,-24.996],[46,6.818],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0.375,28.068],[-10.357,-1.548],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[42.625,-70.696],[42.875,67.812],[-21,113.688],[39.75,129.938],[73.125,84.312],[53.625,-64.688],[46.106,-70.827]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[-0.326,-24.996],[46,6.818],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0.375,28.068],[-10.357,-1.548],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[42.625,-70.696],[42.875,67.812],[-21,113.688],[39.75,129.938],[73.125,84.312],[53.625,-64.688],[46.106,-70.827]],"c":true}],"e":[{"i":[[0,0],[-0.489,-24.994],[45.375,8.778],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0.562,28.403],[-10.289,-2.001],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[44.188,-70.911],[44.437,67.594],[-19.875,113.656],[35.875,132.781],[74.688,84.094],[55.187,-64.906],[46.014,-71.072]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[-0.489,-24.994],[45.375,8.778],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0.562,28.403],[-10.289,-2.001],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[44.188,-70.911],[44.437,67.594],[-19.875,113.656],[35.875,132.781],[74.688,84.094],[55.187,-64.906],[46.014,-71.072]],"c":true}],"e":[{"i":[[0,0],[-0.652,-24.991],[44.75,10.739],[0,0],[-0.5,3],[0,0],[0,0]],"o":[[0,0],[0.75,28.739],[-10.222,-2.453],[0,0],[0.5,-3],[0,0],[0,0]],"v":[[45.75,-71.125],[46,67.375],[-18.75,113.625],[32,135.625],[76.25,83.875],[56.75,-65.125],[51,-71.625]],"c":true}]},{"t":23}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":13,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"U back extrude 01","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[-38.803,-116.864,0]},"a":{"k":[-39.667,22.625,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,-38.5],[-15.245,-11.116],[-19,-0.25],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,38.5],[12,8.75],[2.549,0.034],[0,-17],[-0.5,-3],[0,0]],"v":[[-73.125,-98.5],[-72.5,63],[-49.5,134.5],[-6.5,144.75],[-31.5,98.5],[-38,-85],[-45.5,-99]],"c":true}],"e":[{"i":[[0,0],[0,-38.5],[-11.125,-10.5],[-35.625,0.5],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,28.75],[10.863,10.253],[2.549,-0.036],[0,-17],[-0.5,-3],[0,0]],"v":[[-92.417,-97.229],[-92.542,60.583],[-72.292,123.833],[-10.042,144.333],[-51.042,98.583],[-57.542,-84.917],[-67.792,-97.792]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,-38.5],[-11.125,-10.5],[-35.625,0.5],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,28.75],[10.863,10.253],[2.549,-0.036],[0,-17],[-0.5,-3],[0,0]],"v":[[-92.417,-97.229],[-92.542,60.583],[-72.292,123.833],[-10.042,144.333],[-51.042,98.583],[-57.542,-84.917],[-67.792,-97.792]],"c":true}],"e":[{"i":[[0,0],[0,-38.5],[-11.125,-10.5],[-35.625,0.5],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,28.75],[10.863,10.253],[2.549,-0.036],[0,-17],[-0.5,-3],[0,0]],"v":[[-100.167,-95.292],[-100.292,61.583],[-77.792,119.083],[-12.792,142.833],[-58.792,99.583],[-65.292,-83.917],[-79.417,-96.792]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,-38.5],[-11.125,-10.5],[-35.625,0.5],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,28.75],[10.863,10.253],[2.549,-0.036],[0,-17],[-0.5,-3],[0,0]],"v":[[-100.167,-95.292],[-100.292,61.583],[-77.792,119.083],[-12.792,142.833],[-58.792,99.583],[-65.292,-83.917],[-79.417,-96.792]],"c":true}],"e":[{"i":[[0,0],[0,-38.5],[-10.604,-9.498],[-36.604,-0.373],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,36.973],[10.075,9.038],[2.549,0.024],[0,-17],[-0.5,-3],[0,0]],"v":[[-101.917,-93.479],[-100.917,57.833],[-78.792,117.583],[-9.792,142.458],[-59.417,101.583],[-65.917,-81.917],[-86.792,-94.167]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,-38.5],[-10.604,-9.498],[-36.604,-0.373],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,36.973],[10.075,9.038],[2.549,0.024],[0,-17],[-0.5,-3],[0,0]],"v":[[-101.917,-93.479],[-100.917,57.833],[-78.792,117.583],[-9.792,142.458],[-59.417,101.583],[-65.917,-81.917],[-86.792,-94.167]],"c":true}],"e":[{"i":[[0,0],[0,-38.5],[-10.083,-8.495],[-37.583,-1.245],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,40.005],[9.286,7.824],[2.548,0.084],[0,-17],[-0.5,-3],[0,0]],"v":[[-101.417,-91.167],[-101.542,54.083],[-79.792,116.083],[-8.792,142.583],[-60.042,103.583],[-66.542,-79.917],[-90.667,-93.354]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,-38.5],[-10.083,-8.495],[-37.583,-1.245],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,40.005],[9.286,7.824],[2.548,0.084],[0,-17],[-0.5,-3],[0,0]],"v":[[-101.417,-91.167],[-101.542,54.083],[-79.792,116.083],[-8.792,142.583],[-60.042,103.583],[-66.542,-79.917],[-90.667,-93.354]],"c":true}],"e":[{"i":[[0,0],[0,-38.5],[-9.958,-8.762],[-38.583,-1.403],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,40.238],[9.112,8.006],[2.548,0.092],[0,-17],[-0.5,-3],[0,0]],"v":[[-100.083,-90.229],[-100.167,54.25],[-78.667,115.625],[-7.375,142.557],[-60.042,103.583],[-66.542,-79.917],[-90.896,-91]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[0,-38.5],[-9.958,-8.762],[-38.583,-1.403],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,40.238],[9.112,8.006],[2.548,0.092],[0,-17],[-0.5,-3],[0,0]],"v":[[-100.083,-90.229],[-100.167,54.25],[-78.667,115.625],[-7.375,142.557],[-60.042,103.583],[-66.542,-79.917],[-90.896,-91]],"c":true}],"e":[{"i":[[0,0],[0,-38.5],[-9.833,-9.028],[-39.583,-1.56],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,40.472],[8.939,8.188],[2.547,0.099],[0,-17],[-0.5,-3],[0,0]],"v":[[-98.75,-88.842],[-98.792,54.417],[-77.542,115.167],[-5.958,142.532],[-60.042,103.583],[-66.542,-79.917],[-93.75,-90.064]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,-38.5],[-9.833,-9.028],[-39.583,-1.56],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,40.472],[8.939,8.188],[2.547,0.099],[0,-17],[-0.5,-3],[0,0]],"v":[[-98.75,-88.842],[-98.792,54.417],[-77.542,115.167],[-5.958,142.532],[-60.042,103.583],[-66.542,-79.917],[-93.75,-90.064]],"c":true}],"e":[{"i":[[0,0],[0,-38.5],[-9.333,-10.095],[-43.583,-2.189],[0,17],[0.5,3],[0,0]],"o":[[0,0],[0,41.405],[8.243,8.916],[2.546,0.128],[0,-17],[-0.5,-3],[0,0]],"v":[[-93.417,-86.417],[-93.292,55.083],[-73.042,113.333],[-0.292,142.428],[-60.042,103.583],[-66.542,-79.917],[-92.042,-86.417]],"c":true}]},{"t":23}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":13,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Glass lines 6","parent":0,"ks":{"o":{"k":56},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[-0.858,9.023],[-0.167,1.204],[-1.534,-0.267],[-0.237,-14.397],[-0.059,-6.056]],"o":[[0.302,-3.174],[0.408,-2.935],[1.981,0.345],[0.218,13.204],[0.059,6.056]],"v":[[-4.359,114.109],[-3.393,106.481],[-0.582,101.715],[2.174,123.856],[2.858,203.689]],"c":false}],"e":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}]},{"t":4,"s":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-1.65,8.222],[-0.464,1.073],[-4.252,-0.238],[-0.658,-12.83],[-0.164,-5.397]],"o":[[0.961,-4.791],[1.131,-2.616],[5.492,0.308],[0.603,11.768],[0.164,5.397]],"v":[[-36.461,116.791],[-33.036,106.993],[-23.742,102.245],[-16.103,121.978],[-14.458,200.126]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-0.436,12.119],[-1.106,8.31],[-11,-0.218],[-0.75,-18.718],[-0.25,-7.87]],"o":[[0.556,-15.459],[1.5,-11.273],[10.75,0.213],[0.724,18.069],[0.25,7.87]],"v":[[-58.556,190.459],[-53.806,108.445],[-36.556,82.921],[-20.306,108.445],[-19.056,197.898]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-9.407,10.555],[-1.576,-5.643],[-0.415,-9.838],[-0.75,-19.686],[-0.25,-8.277]],"o":[[5.75,-6.452],[1,3.579],[0.5,11.856],[0.724,19.003],[0.25,8.277]],"v":[[-71.25,68.952],[-58,72.755],[-56.25,94.678],[-55.5,129.127],[-54.25,188.696]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-12.246,5.934],[-0.958,-5.869],[-0.415,-10.037],[0.247,-20.094],[-0.25,-8.444]],"o":[[9.75,-4.724],[1.75,10.726],[0.5,12.096],[-0.25,20.312],[0.25,8.444]],"v":[[-53,3.224],[-40.25,25.438],[-37.5,72.68],[-37,114.901],[-37,165.437]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-9.585,9.994],[-0.625,-4.516],[-0.415,-10.453],[0.5,-26.145],[-0.25,-8.794]],"o":[[4.625,-4.822],[1.55,11.198],[0.5,12.597],[-0.405,21.151],[0.25,8.794]],"v":[[-49.625,-57.678],[-38.5,-57.457],[-38,-10.138],[-40,85.221],[-40.25,146.387]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[-0.111,4.762],[-0.131,4.045],[-0.142,2.945],[-0.259,3.024],[-1.315,-3.978]],"o":[[0.127,-5.452],[0.193,-5.945],[0.235,-4.882],[0.32,-3.737],[1.535,4.643]],"v":[[-0.626,213.577],[-0.193,170.695],[-0.11,139.882],[0.26,118.664],[4.628,116.04]],"c":false}],"h":1},{"t":4,"s":[{"i":[[-0.245,4.052],[-0.368,3.433],[-2.946,-0.113],[-0.123,-2.476],[0.123,-4.165]],"o":[[0.245,-4.052],[0.368,-3.433],[2.946,0.113],[0.123,2.476],[-0.123,4.165]],"v":[[-3.251,209.786],[-2.443,131.222],[1.265,124.779],[4.197,131.196],[4.878,209.702]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-0.655,10.503],[-0.982,8.898],[-7.856,-0.292],[-0.327,-6.418],[0.327,-10.794]],"o":[[0.655,-10.503],[0.982,-8.898],[7.856,0.292],[0.327,6.418],[-0.327,10.794]],"v":[[-7.342,199.834],[-2.268,118.323],[7.621,101.625],[15.441,118.254],[17.673,199.207]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-1,15.314],[-1.5,12.975],[-12,-0.425],[-0.5,-9.359],[0.5,-15.74]],"o":[[1,-15.314],[1.5,-12.975],[12,0.425],[0.5,9.359],[-0.5,15.74]],"v":[[-7.556,197.473],[0.695,103.765],[16.945,79.092],[31.945,103.34],[32.944,197.26]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-1,16.106],[-1.5,13.646],[-12,-0.447],[-0.5,-9.843],[0.5,-16.554]],"o":[[1,-16.106],[1.5,-13.646],[12,0.447],[0.5,9.843],[-0.5,16.554]],"v":[[-42.75,188.394],[-34.5,85.73],[-18.25,59.781],[-3,85.282],[-0.75,190.196]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-1,16.432],[-1.5,13.921],[-11.946,-1.136],[-0.5,-10.042],[0.5,-16.888]],"o":[[1,-16.432],[1.5,-13.921],[12,1.141],[0.5,10.042],[-0.5,16.888]],"v":[[-29.25,165.318],[-25.25,39.359],[-10.75,-0.58],[-1,44.608],[-1.75,165.405]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-1,17.113],[-0.369,14.564],[-0.799,11.393],[-5.25,0.475],[-0.999,-9.604]],"o":[[1,-17.113],[0.5,-19.727],[0.5,-7.13],[4.508,-0.408],[0.714,6.862]],"v":[[-31.5,145.887],[-30.75,18.932],[-30,-37.16],[-23.001,-62.592],[-16.251,-49.646]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-0.25,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":12,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Glass lines 5","parent":0,"ks":{"o":{"k":56},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[-0.858,9.023],[-0.167,1.204],[-1.534,-0.267],[-0.237,-14.397],[-0.059,-6.056]],"o":[[0.302,-3.174],[0.408,-2.935],[1.981,0.345],[0.218,13.204],[0.059,6.056]],"v":[[-4.359,114.109],[-3.393,106.481],[-0.582,101.715],[2.174,123.856],[2.858,203.689]],"c":false}],"e":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}]},{"t":4,"s":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-1.65,8.222],[-0.464,1.073],[-4.252,-0.238],[-0.658,-12.83],[-0.164,-5.397]],"o":[[0.961,-4.791],[1.131,-2.616],[5.492,0.308],[0.603,11.768],[0.164,5.397]],"v":[[-36.461,116.791],[-33.036,106.993],[-23.742,102.245],[-16.103,121.978],[-14.458,200.126]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-0.436,12.119],[-1.106,8.31],[-11,-0.218],[-0.75,-18.718],[-0.25,-7.87]],"o":[[0.556,-15.459],[1.5,-11.273],[10.75,0.213],[0.724,18.069],[0.25,7.87]],"v":[[-58.556,190.459],[-53.806,108.445],[-36.556,82.921],[-20.306,108.445],[-19.056,197.898]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-9.407,10.555],[-1.576,-5.643],[-0.415,-9.838],[-0.75,-19.686],[-0.25,-8.277]],"o":[[5.75,-6.452],[1,3.579],[0.5,11.856],[0.724,19.003],[0.25,8.277]],"v":[[-71.25,68.952],[-58,72.755],[-56.25,94.678],[-55.5,129.127],[-54.25,188.696]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-12.246,5.934],[-0.958,-5.869],[-0.415,-10.037],[0.247,-20.094],[-0.25,-8.444]],"o":[[9.75,-4.724],[1.75,10.726],[0.5,12.096],[-0.25,20.312],[0.25,8.444]],"v":[[-53,3.224],[-40.25,25.438],[-37.5,72.68],[-37,114.901],[-37,165.437]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-9.585,9.994],[-0.625,-4.516],[-0.415,-10.453],[0.5,-26.145],[-0.25,-8.794]],"o":[[4.625,-4.822],[1.55,11.198],[0.5,12.597],[-0.405,21.151],[0.25,8.794]],"v":[[-49.625,-57.678],[-38.5,-57.457],[-38,-10.138],[-40,85.221],[-40.25,146.387]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[-0.111,4.762],[-0.131,4.045],[-0.142,2.945],[-0.259,3.024],[-1.315,-3.978]],"o":[[0.127,-5.452],[0.193,-5.945],[0.235,-4.882],[0.32,-3.737],[1.535,4.643]],"v":[[-0.626,213.577],[-0.193,170.695],[-0.11,139.882],[0.26,118.664],[4.628,116.04]],"c":false}],"h":1},{"t":4,"s":[{"i":[[-0.245,4.052],[-0.368,3.433],[-2.946,-0.113],[-0.123,-2.476],[0.123,-4.165]],"o":[[0.245,-4.052],[0.368,-3.433],[2.946,0.113],[0.123,2.476],[-0.123,4.165]],"v":[[-3.251,209.786],[-2.443,131.222],[1.265,124.779],[4.197,131.196],[4.878,209.702]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-0.655,10.503],[-0.982,8.898],[-7.856,-0.292],[-0.327,-6.418],[0.327,-10.794]],"o":[[0.655,-10.503],[0.982,-8.898],[7.856,0.292],[0.327,6.418],[-0.327,10.794]],"v":[[-7.342,199.834],[-2.268,118.323],[7.621,101.625],[15.441,118.254],[17.673,199.207]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-1,15.314],[-1.5,12.975],[-12,-0.425],[-0.5,-9.359],[0.5,-15.74]],"o":[[1,-15.314],[1.5,-12.975],[12,0.425],[0.5,9.359],[-0.5,15.74]],"v":[[-7.556,197.473],[0.695,103.765],[16.945,79.092],[31.945,103.34],[32.944,197.26]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-1,16.106],[-1.5,13.646],[-12,-0.447],[-0.5,-9.843],[0.5,-16.554]],"o":[[1,-16.106],[1.5,-13.646],[12,0.447],[0.5,9.843],[-0.5,16.554]],"v":[[-42.75,188.394],[-34.5,85.73],[-18.25,59.781],[-3,85.282],[-0.75,190.196]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-1,16.432],[-1.5,13.921],[-11.946,-1.136],[-0.5,-10.042],[0.5,-16.888]],"o":[[1,-16.432],[1.5,-13.921],[12,1.141],[0.5,10.042],[-0.5,16.888]],"v":[[-29.25,165.318],[-25.25,39.359],[-10.75,-0.58],[-1,44.608],[-1.75,165.405]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-1,17.113],[-0.369,14.564],[-0.799,11.393],[-5.25,0.475],[-0.999,-9.604]],"o":[[1,-17.113],[0.5,-19.727],[0.5,-7.13],[4.508,-0.408],[0.714,6.862]],"v":[[-31.5,145.887],[-30.75,18.932],[-30,-37.16],[-23.001,-62.592],[-16.251,-49.646]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-0.25,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[5.247,-0.154],[0.563,-0.356],[0.652,-1.8],[0.176,-3.25],[0.463,-6.019]],"o":[[-0.714,0.021],[-1.221,0.771],[-1.259,3.475],[-0.309,5.71],[-0.286,3.722]],"v":[[6.836,124.029],[4.926,124.612],[2.164,128.653],[0.354,140.079],[-5.511,203.974]],"c":false}],"e":[{"i":[[8.5,-0.25],[0.912,-0.576],[1.056,-2.915],[0.285,-5.265],[0.75,-9.75]],"o":[[-1.156,0.034],[-1.977,1.249],[-2.039,5.629],[-0.5,9.25],[-0.464,6.029]],"v":[[360.75,41.25],[357.656,42.194],[353.182,48.742],[350.25,67.25],[340.75,170.75]],"c":false}]},{"t":5,"s":[{"i":[[8.5,-0.25],[0.912,-0.576],[1.056,-2.915],[0.285,-5.265],[0.75,-9.75]],"o":[[-1.156,0.034],[-1.977,1.249],[-2.039,5.629],[-0.5,9.25],[-0.464,6.029]],"v":[[360.75,41.25],[357.656,42.194],[353.182,48.742],[350.25,67.25],[340.75,170.75]],"c":false}],"h":1},{"t":7,"s":[{"i":[[7.556,2.344],[0.912,-0.49],[1.056,-2.481],[0.285,-4.48],[0.75,-8.295]],"o":[[-1.104,-0.343],[-1.977,1.062],[-2.039,4.789],[-0.5,7.87],[-0.464,5.129]],"v":[[64.944,81.156],[59.1,81.209],[54.627,86.779],[51.694,102.526],[41.694,197.085]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,7.609],[0.763,8.343],[11.582,-0.045],[0.648,-6.379],[1.25,-17.896]],"o":[[0,-31.989],[-0.206,-2.25],[-12.421,0.048],[-3,29.528],[-0.377,5.4]],"v":[[51.75,188.509],[43.987,77.636],[31.168,60.3],[16,81.73],[8.75,190.302]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,7.763],[0.763,8.512],[11.582,-0.046],[0.648,-6.508],[1.25,-18.258]],"o":[[0,-32.636],[-0.206,-2.296],[-12.421,0.049],[-3,30.125],[-0.377,5.509]],"v":[[0.25,101.248],[-1.013,53.938],[-13.832,36.251],[-29,58.114],[-35.75,155.109]],"c":false}],"h":1},{"t":12,"s":[{"i":[[0,8.504],[0.763,9.324],[11.582,-0.05],[0.648,-7.13],[1.25,-20]],"o":[[0,-35.75],[-0.206,-2.515],[-12.421,0.054],[-3,33],[-0.377,6.035]],"v":[[389.75,86.75],[388.487,34.926],[375.668,15.55],[360.5,39.5],[353.75,145.75]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,-0.25],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":11,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Glass lines 4","parent":0,"ks":{"o":{"k":56},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[-0.858,9.023],[-0.167,1.204],[-1.534,-0.267],[-0.237,-14.397],[-0.059,-6.056]],"o":[[0.302,-3.174],[0.408,-2.935],[1.981,0.345],[0.218,13.204],[0.059,6.056]],"v":[[-4.359,114.109],[-3.393,106.481],[-0.582,101.715],[2.174,123.856],[2.858,203.689]],"c":false}],"e":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}]},{"t":4,"s":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-1.65,8.222],[-0.464,1.073],[-4.252,-0.238],[-0.658,-12.83],[-0.164,-5.397]],"o":[[0.961,-4.791],[1.131,-2.616],[5.492,0.308],[0.603,11.768],[0.164,5.397]],"v":[[-36.461,116.791],[-33.036,106.993],[-23.742,102.245],[-16.103,121.978],[-14.458,200.126]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-0.436,12.119],[-1.106,8.31],[-11,-0.218],[-0.75,-18.718],[-0.25,-7.87]],"o":[[0.556,-15.459],[1.5,-11.273],[10.75,0.213],[0.724,18.069],[0.25,7.87]],"v":[[-58.556,190.459],[-53.806,108.445],[-36.556,82.921],[-20.306,108.445],[-19.056,197.898]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-9.407,10.555],[-1.576,-5.643],[-0.415,-9.838],[-0.75,-19.686],[-0.25,-8.277]],"o":[[5.75,-6.452],[1,3.579],[0.5,11.856],[0.724,19.003],[0.25,8.277]],"v":[[-71.25,68.952],[-58,72.755],[-56.25,94.678],[-55.5,129.127],[-54.25,188.696]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-12.246,5.934],[-0.958,-5.869],[-0.415,-10.037],[0.247,-20.094],[-0.25,-8.444]],"o":[[9.75,-4.724],[1.75,10.726],[0.5,12.096],[-0.25,20.312],[0.25,8.444]],"v":[[-53,3.224],[-40.25,25.438],[-37.5,72.68],[-37,114.901],[-37,165.437]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-9.585,9.994],[-0.625,-4.516],[-0.415,-10.453],[0.5,-26.145],[-0.25,-8.794]],"o":[[4.625,-4.822],[1.55,11.198],[0.5,12.597],[-0.405,21.151],[0.25,8.794]],"v":[[-49.625,-57.678],[-38.5,-57.457],[-38,-10.138],[-40,85.221],[-40.25,146.387]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[-0.111,4.762],[-0.131,4.045],[-0.142,2.945],[-0.259,3.024],[-1.315,-3.978]],"o":[[0.127,-5.452],[0.193,-5.945],[0.235,-4.882],[0.32,-3.737],[1.535,4.643]],"v":[[-0.626,213.577],[-0.193,170.695],[-0.11,139.882],[0.26,118.664],[4.628,116.04]],"c":false}],"h":1},{"t":4,"s":[{"i":[[-0.245,4.052],[-0.368,3.433],[-2.946,-0.113],[-0.123,-2.476],[0.123,-4.165]],"o":[[0.245,-4.052],[0.368,-3.433],[2.946,0.113],[0.123,2.476],[-0.123,4.165]],"v":[[-3.251,209.786],[-2.443,131.222],[1.265,124.779],[4.197,131.196],[4.878,209.702]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-0.655,10.503],[-0.982,8.898],[-7.856,-0.292],[-0.327,-6.418],[0.327,-10.794]],"o":[[0.655,-10.503],[0.982,-8.898],[7.856,0.292],[0.327,6.418],[-0.327,10.794]],"v":[[-7.342,199.834],[-2.268,118.323],[7.621,101.625],[15.441,118.254],[17.673,199.207]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-1,15.314],[-1.5,12.975],[-12,-0.425],[-0.5,-9.359],[0.5,-15.74]],"o":[[1,-15.314],[1.5,-12.975],[12,0.425],[0.5,9.359],[-0.5,15.74]],"v":[[-7.556,197.473],[0.695,103.765],[16.945,79.092],[31.945,103.34],[32.944,197.26]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-1,16.106],[-1.5,13.646],[-12,-0.447],[-0.5,-9.843],[0.5,-16.554]],"o":[[1,-16.106],[1.5,-13.646],[12,0.447],[0.5,9.843],[-0.5,16.554]],"v":[[-42.75,188.394],[-34.5,85.73],[-18.25,59.781],[-3,85.282],[-0.75,190.196]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-1,16.432],[-1.5,13.921],[-11.946,-1.136],[-0.5,-10.042],[0.5,-16.888]],"o":[[1,-16.432],[1.5,-13.921],[12,1.141],[0.5,10.042],[-0.5,16.888]],"v":[[-29.25,165.318],[-25.25,39.359],[-10.75,-0.58],[-1,44.608],[-1.75,165.405]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-1,17.113],[-0.369,14.564],[-0.799,11.393],[-5.25,0.475],[-0.999,-9.604]],"o":[[1,-17.113],[0.5,-19.727],[0.5,-7.13],[4.508,-0.408],[0.714,6.862]],"v":[[-31.5,145.887],[-30.75,18.932],[-30,-37.16],[-23.001,-62.592],[-16.251,-49.646]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-0.25,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[5.247,-0.154],[0.563,-0.356],[0.652,-1.8],[0.176,-3.25],[0.463,-6.019]],"o":[[-0.714,0.021],[-1.221,0.771],[-1.259,3.475],[-0.309,5.71],[-0.286,3.722]],"v":[[6.836,124.029],[4.926,124.612],[2.164,128.653],[0.354,140.079],[-5.511,203.974]],"c":false}],"e":[{"i":[[8.5,-0.25],[0.912,-0.576],[1.056,-2.915],[0.285,-5.265],[0.75,-9.75]],"o":[[-1.156,0.034],[-1.977,1.249],[-2.039,5.629],[-0.5,9.25],[-0.464,6.029]],"v":[[360.75,41.25],[357.656,42.194],[353.182,48.742],[350.25,67.25],[340.75,170.75]],"c":false}]},{"t":5,"s":[{"i":[[8.5,-0.25],[0.912,-0.576],[1.056,-2.915],[0.285,-5.265],[0.75,-9.75]],"o":[[-1.156,0.034],[-1.977,1.249],[-2.039,5.629],[-0.5,9.25],[-0.464,6.029]],"v":[[360.75,41.25],[357.656,42.194],[353.182,48.742],[350.25,67.25],[340.75,170.75]],"c":false}],"h":1},{"t":7,"s":[{"i":[[7.556,2.344],[0.912,-0.49],[1.056,-2.481],[0.285,-4.48],[0.75,-8.295]],"o":[[-1.104,-0.343],[-1.977,1.062],[-2.039,4.789],[-0.5,7.87],[-0.464,5.129]],"v":[[64.944,81.156],[59.1,81.209],[54.627,86.779],[51.694,102.526],[41.694,197.085]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,7.609],[0.763,8.343],[11.582,-0.045],[0.648,-6.379],[1.25,-17.896]],"o":[[0,-31.989],[-0.206,-2.25],[-12.421,0.048],[-3,29.528],[-0.377,5.4]],"v":[[51.75,188.509],[43.987,77.636],[31.168,60.3],[16,81.73],[8.75,190.302]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,7.763],[0.763,8.512],[11.582,-0.046],[0.648,-6.508],[1.25,-18.258]],"o":[[0,-32.636],[-0.206,-2.296],[-12.421,0.049],[-3,30.125],[-0.377,5.509]],"v":[[0.25,101.248],[-1.013,53.938],[-13.832,36.251],[-29,58.114],[-35.75,155.109]],"c":false}],"h":1},{"t":12,"s":[{"i":[[0,8.504],[0.763,9.324],[11.582,-0.05],[0.648,-7.13],[1.25,-20]],"o":[[0,-35.75],[-0.206,-2.515],[-12.421,0.054],[-3,33],[-0.377,6.035]],"v":[[389.75,86.75],[388.487,34.926],[375.668,15.55],[360.5,39.5],[353.75,145.75]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,-0.25],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":9,"op":11,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Glass lines 3","parent":0,"ks":{"o":{"k":56},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[-0.858,9.023],[-0.167,1.204],[-1.534,-0.267],[-0.237,-14.397],[-0.059,-6.056]],"o":[[0.302,-3.174],[0.408,-2.935],[1.981,0.345],[0.218,13.204],[0.059,6.056]],"v":[[-4.359,114.109],[-3.393,106.481],[-0.582,101.715],[2.174,123.856],[2.858,203.689]],"c":false}],"e":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}]},{"t":4,"s":[{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-1.65,8.222],[-0.464,1.073],[-4.252,-0.238],[-0.658,-12.83],[-0.164,-5.397]],"o":[[0.961,-4.791],[1.131,-2.616],[5.492,0.308],[0.603,11.768],[0.164,5.397]],"v":[[-36.461,116.791],[-33.036,106.993],[-23.742,102.245],[-16.103,121.978],[-14.458,200.126]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-0.436,12.119],[-1.106,8.31],[-11,-0.218],[-0.75,-18.718],[-0.25,-7.87]],"o":[[0.556,-15.459],[1.5,-11.273],[10.75,0.213],[0.724,18.069],[0.25,7.87]],"v":[[-58.556,190.459],[-53.806,108.445],[-36.556,82.921],[-20.306,108.445],[-19.056,197.898]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-9.407,10.555],[-1.576,-5.643],[-0.415,-9.838],[-0.75,-19.686],[-0.25,-8.277]],"o":[[5.75,-6.452],[1,3.579],[0.5,11.856],[0.724,19.003],[0.25,8.277]],"v":[[-71.25,68.952],[-58,72.755],[-56.25,94.678],[-55.5,129.127],[-54.25,188.696]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-12.246,5.934],[-0.958,-5.869],[-0.415,-10.037],[0.247,-20.094],[-0.25,-8.444]],"o":[[9.75,-4.724],[1.75,10.726],[0.5,12.096],[-0.25,20.312],[0.25,8.444]],"v":[[-53,3.224],[-40.25,25.438],[-37.5,72.68],[-37,114.901],[-37,165.437]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-9.585,9.994],[-0.625,-4.516],[-0.415,-10.453],[0.5,-26.145],[-0.25,-8.794]],"o":[[4.625,-4.822],[1.55,11.198],[0.5,12.597],[-0.405,21.151],[0.25,8.794]],"v":[[-49.625,-57.678],[-38.5,-57.457],[-38,-10.138],[-40,85.221],[-40.25,146.387]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[-0.111,4.762],[-0.131,4.045],[-0.142,2.945],[-0.259,3.024],[-1.315,-3.978]],"o":[[0.127,-5.452],[0.193,-5.945],[0.235,-4.882],[0.32,-3.737],[1.535,4.643]],"v":[[-0.626,213.577],[-0.193,170.695],[-0.11,139.882],[0.26,118.664],[4.628,116.04]],"c":false}],"h":1},{"t":4,"s":[{"i":[[-0.245,4.052],[-0.368,3.433],[-2.946,-0.113],[-0.123,-2.476],[0.123,-4.165]],"o":[[0.245,-4.052],[0.368,-3.433],[2.946,0.113],[0.123,2.476],[-0.123,4.165]],"v":[[-3.251,209.786],[-2.443,131.222],[1.265,124.779],[4.197,131.196],[4.878,209.702]],"c":false}],"h":1},{"t":5,"s":[{"i":[[-0.655,10.503],[-0.982,8.898],[-7.856,-0.292],[-0.327,-6.418],[0.327,-10.794]],"o":[[0.655,-10.503],[0.982,-8.898],[7.856,0.292],[0.327,6.418],[-0.327,10.794]],"v":[[-7.342,199.834],[-2.268,118.323],[7.621,101.625],[15.441,118.254],[17.673,199.207]],"c":false}],"h":1},{"t":7,"s":[{"i":[[-1,15.314],[-1.5,12.975],[-12,-0.425],[-0.5,-9.359],[0.5,-15.74]],"o":[[1,-15.314],[1.5,-12.975],[12,0.425],[0.5,9.359],[-0.5,15.74]],"v":[[-7.556,197.473],[0.695,103.765],[16.945,79.092],[31.945,103.34],[32.944,197.26]],"c":false}],"h":1},{"t":9,"s":[{"i":[[-1,16.106],[-1.5,13.646],[-12,-0.447],[-0.5,-9.843],[0.5,-16.554]],"o":[[1,-16.106],[1.5,-13.646],[12,0.447],[0.5,9.843],[-0.5,16.554]],"v":[[-42.75,188.394],[-34.5,85.73],[-18.25,59.781],[-3,85.282],[-0.75,190.196]],"c":false}],"h":1},{"t":11,"s":[{"i":[[-1,16.432],[-1.5,13.921],[-11.946,-1.136],[-0.5,-10.042],[0.5,-16.888]],"o":[[1,-16.432],[1.5,-13.921],[12,1.141],[0.5,10.042],[-0.5,16.888]],"v":[[-29.25,165.318],[-25.25,39.359],[-10.75,-0.58],[-1,44.608],[-1.75,165.405]],"c":false}],"h":1},{"t":12,"s":[{"i":[[-1,17.113],[-0.369,14.564],[-0.799,11.393],[-5.25,0.475],[-0.999,-9.604]],"o":[[1,-17.113],[0.5,-19.727],[0.5,-7.13],[4.508,-0.408],[0.714,6.862]],"v":[[-31.5,145.887],[-30.75,18.932],[-30,-37.16],[-23.001,-62.592],[-16.251,-49.646]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-0.25,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[5.247,-0.154],[0.563,-0.356],[0.652,-1.8],[0.176,-3.25],[0.463,-6.019]],"o":[[-0.714,0.021],[-1.221,0.771],[-1.259,3.475],[-0.309,5.71],[-0.286,3.722]],"v":[[6.836,124.029],[4.926,124.612],[2.164,128.653],[0.354,140.079],[-5.511,203.974]],"c":false}],"e":[{"i":[[8.5,-0.25],[0.912,-0.576],[1.056,-2.915],[0.285,-5.265],[0.75,-9.75]],"o":[[-1.156,0.034],[-1.977,1.249],[-2.039,5.629],[-0.5,9.25],[-0.464,6.029]],"v":[[360.75,41.25],[357.656,42.194],[353.182,48.742],[350.25,67.25],[340.75,170.75]],"c":false}]},{"t":5,"s":[{"i":[[8.5,-0.25],[0.912,-0.576],[1.056,-2.915],[0.285,-5.265],[0.75,-9.75]],"o":[[-1.156,0.034],[-1.977,1.249],[-2.039,5.629],[-0.5,9.25],[-0.464,6.029]],"v":[[360.75,41.25],[357.656,42.194],[353.182,48.742],[350.25,67.25],[340.75,170.75]],"c":false}],"h":1},{"t":7,"s":[{"i":[[7.556,2.344],[0.912,-0.49],[1.056,-2.481],[0.285,-4.48],[0.75,-8.295]],"o":[[-1.104,-0.343],[-1.977,1.062],[-2.039,4.789],[-0.5,7.87],[-0.464,5.129]],"v":[[64.944,81.156],[59.1,81.209],[54.627,86.779],[51.694,102.526],[41.694,197.085]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,7.609],[0.763,8.343],[11.582,-0.045],[0.648,-6.379],[1.25,-17.896]],"o":[[0,-31.989],[-0.206,-2.25],[-12.421,0.048],[-3,29.528],[-0.377,5.4]],"v":[[51.75,188.509],[43.987,77.636],[31.168,60.3],[16,81.73],[8.75,190.302]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,7.763],[0.763,8.512],[11.582,-0.046],[0.648,-6.508],[1.25,-18.258]],"o":[[0,-32.636],[-0.206,-2.296],[-12.421,0.049],[-3,30.125],[-0.377,5.509]],"v":[[0.25,101.248],[-1.013,53.938],[-13.832,36.251],[-29,58.114],[-35.75,155.109]],"c":false}],"h":1},{"t":12,"s":[{"i":[[0,8.504],[0.763,9.324],[11.582,-0.05],[0.648,-7.13],[1.25,-20]],"o":[[0,-35.75],[-0.206,-2.515],[-12.421,0.054],[-3,33],[-0.377,6.035]],"v":[[389.75,86.75],[388.487,34.926],[375.668,15.55],[360.5,39.5],[353.75,145.75]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,-0.25],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":9,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Glass lines 2","parent":0,"ks":{"o":{"k":56},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.65,8.222],[-0.464,1.073],[-4.252,-0.238],[-0.658,-12.83],[-0.164,-5.397]],"o":[[0.961,-4.791],[1.131,-2.616],[5.492,0.308],[0.603,11.768],[0.164,5.397]],"v":[[-36.461,116.791],[-33.036,106.993],[-23.742,102.245],[-16.103,121.978],[-14.458,200.126]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.655,10.503],[-0.982,8.898],[-7.856,-0.292],[-0.327,-6.418],[0.327,-10.794]],"o":[[0.655,-10.503],[0.982,-8.898],[7.856,0.292],[0.327,6.418],[-0.327,10.794]],"v":[[-7.342,199.834],[-2.268,118.323],[7.621,101.625],[15.441,118.254],[17.673,199.207]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-0.25,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":5,"op":7,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Glass lines","parent":0,"ks":{"o":{"k":56},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.587,9.023],[-0.31,1.204],[-2.838,-0.267],[-0.439,-14.397],[-0.109,-6.056]],"o":[[0.558,-3.174],[0.755,-2.935],[3.666,0.345],[0.403,13.204],[0.109,6.056]],"v":[[-5.989,113.8],[-4.203,106.172],[0.998,101.406],[6.097,123.547],[7.362,203.38]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.245,4.052],[-0.368,3.433],[-2.946,-0.113],[-0.123,-2.476],[0.123,-4.165]],"o":[[0.245,-4.052],[0.368,-3.433],[2.946,0.113],[0.123,2.476],[-0.123,4.165]],"v":[[-3.251,209.786],[-2.443,131.222],[1.265,124.779],[4.197,131.196],[4.878,209.702]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[-0.25,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":3,"op":5,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Outline","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[1.374,-32.401,0]},"a":{"k":[1.374,-32.401,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[3.4,-0.029],[0,-0.314],[-4.372,0.011],[0.095,0.322]],"o":[[-3.644,0.031],[0,0.314],[3.886,-0.01],[-0.101,-0.342]],"v":[[0.473,106.154],[-4.625,106.483],[0.494,106.864],[5.655,106.481]],"c":true}],"h":1},{"t":4,"s":[{"i":[[4.998,-0.124],[0,-1.36],[-6.426,0.046],[0.14,1.397]],"o":[[-5.356,0.132],[0,1.36],[5.712,-0.041],[-0.149,-1.483]],"v":[[-0.006,107.874],[-7.5,109.303],[0.024,110.954],[7.61,109.293]],"c":true}],"h":1},{"t":5,"s":[{"i":[[21.617,-0.336],[0,-3.693],[-27.794,0.126],[0.606,3.795]],"o":[[-23.163,0.36],[0,3.693],[24.705,-0.112],[-0.643,-4.029]],"v":[[-1.09,68.836],[-33.5,72.719],[-0.957,77.202],[31.85,72.691]],"c":true}],"h":1},{"t":7,"s":[{"i":[[37.691,-0.585],[0,-6.439],[-48.461,0.22],[1.057,6.616]],"o":[[-40.386,0.627],[0,6.439],[43.075,-0.195],[-1.122,-7.024]],"v":[[-2.49,28.085],[-59,36.165],[-2.041,44.28],[54.943,36.116]],"c":true}],"h":1},{"t":9,"s":[{"i":[[42,-0.75],[0,-8.25],[-54.002,0.281],[1.177,8.477]],"o":[[-45.004,0.804],[0,8.25],[48,-0.25],[-1.25,-9]],"v":[[0,2.25],[-63.25,11],[0.5,23],[64,13.5]],"c":true}],"h":1},{"t":11,"s":[{"i":[[18.284,-0.327],[0,-3.591],[-23.508,0.122],[0.513,3.69]],"o":[[-19.592,0.35],[0,3.591],[20.896,-0.109],[-0.544,-3.918]],"v":[[-17.624,-37.599],[-45.158,-33.79],[-17.406,-28.566],[10.237,-32.701]],"c":true}],"h":1},{"t":12,"s":[{"i":[[7.444,-0.161],[0,-1.771],[-9.571,0.06],[0.209,1.82]],"o":[[-7.977,0.173],[0,1.771],[8.508,-0.054],[-0.222,-1.932]],"v":[[-33.539,-85.764],[-44.75,-83.886],[-33.451,-81.31],[-22.196,-83.35]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0.8],"e":[1.2]},{"t":9}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[0,0],[-0.025,-2.715],[-1.322,-0.707],[-1.625,0],[-1.085,0.437],[0,1.86],[0.01,0.639]],"o":[[0,0],[0.022,2.406],[0.74,0.137],[1.625,0],[1.102,-0.444],[0,-2.179],[-0.01,-0.649]],"v":[[-6.292,83.755],[-5.429,209.219],[-3.459,212.613],[-0.299,213.031],[3.053,212.47],[5.202,209.672],[6.686,83.63]],"c":false}],"h":1},{"t":4,"s":[{"i":[[0,0],[0.107,-4.589],[-2.658,0],[-2.748,0],[-2.009,0],[-0.112,4.464],[0.018,1.093]],"o":[[0,0],[-0.121,5.195],[2.658,0],[2.748,0],[2.009,0],[0.092,-3.683],[-0.018,-1.109]],"v":[[-11.254,75.487],[-9.129,204.595],[-4.901,209.91],[-0.35,209.93],[5.107,209.879],[8.845,205.36],[10.946,75.272]],"c":false}],"h":1},{"t":5,"s":[{"i":[[0,0],[0.233,-10.02],[-5.803,0],[-5.999,0],[-4.386,0],[-0.244,9.746],[0.066,3.078]],"o":[[0,0],[-0.264,11.342],[5.803,0],[5.999,0],[4.386,0],[0.201,-8.041],[-0.067,-3.126]],"v":[[-40.261,29.844],[-34.486,188.276],[-25.254,199.881],[-0.853,200.062],[23.48,199.95],[31.642,190.082],[41.994,29.241]],"c":false}],"h":1},{"t":7,"s":[{"i":[[0,0],[0.388,-16.702],[-9.672,0],[-10,0],[-7.31,0],[-0.406,16.245],[0.114,5.357]],"o":[[0,0],[-0.44,18.905],[9.672,0],[10,0],[7.31,0],[0.335,-13.404],[-0.116,-5.439]],"v":[[-70.42,-14.517],[-60.31,178.208],[-44.922,197.552],[-4.25,197.75],[43.81,197.25],[57.415,180.802],[72.703,-15.566]],"c":false}],"h":1},{"t":9,"s":[{"i":[[0,0],[0.442,-18.995],[-11,0],[-10,0],[-9,0],[-0.5,20],[0.123,7.017]],"o":[[0,0],[-0.5,21.5],[11,0],[10,0],[9,0],[0.413,-16.502],[-0.125,-7.125]],"v":[[-75.625,-32.25],[-69,166.5],[-51.5,188.5],[-7,190],[48,189],[64.75,168.75],[78.625,-33.625]],"c":false}],"h":1},{"t":11,"s":[{"i":[[0,0],[0.207,-8.886],[-5.136,-0.328],[-8.365,-0.011],[-4.207,0.17],[-0.234,9.357],[0.058,2.639]],"o":[[0,0],[-0.234,10.058],[4.954,0.316],[4.678,0.006],[4.154,-0.168],[0.193,-7.72],[-0.059,-2.68]],"v":[[-54.457,-91.92],[-49.782,151.517],[-40.454,164.934],[-20.76,165.386],[2.721,165.168],[13.307,151.819],[17.824,-92.437]],"c":false}],"h":1},{"t":12,"s":[{"i":[[0,0],[0.091,-3.914],[-4.522,-0.953],[-2.061,0],[-1.835,0.269],[0,5.554],[0.027,1.223]],"o":[[0,0],[-0.103,4.431],[1.979,0.417],[2.061,0],[4.224,-0.618],[0,-3.402],[-0.027,-1.242]],"v":[[-50.114,-96.993],[-49.209,135.732],[-43.353,145.828],[-35.808,146.379],[-27.974,145.868],[-20.773,137.508],[-16.62,-97.233]],"c":false}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":0.8},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[2.651,0],[-0.042,-1.092],[-3.07,0.076],[-0.062,1.547]],"o":[[-3.933,0],[0.042,1.092],[2.776,-0.068],[0.042,-1.047]],"v":[[0.155,82.375],[-6.302,83.732],[0.176,84.943],[6.676,83.641]],"c":true}],"h":1},{"t":4,"s":[{"i":[[4.534,0],[-0.072,-1.868],[-5.252,0.129],[-0.106,2.646]],"o":[[-6.728,0],[0.072,1.868],[4.749,-0.117],[0.072,-1.791]],"v":[[-0.226,73.501],[-11.272,75.448],[-0.19,77.394],[10.928,75.292]],"c":true}],"h":1},{"t":5,"s":[{"i":[[16.8,0],[-0.267,-5.265],[-19.461,0.364],[-0.394,7.455]],"o":[[-24.93,0],[0.267,5.265],[17.597,-0.329],[0.267,-5.045]],"v":[[0.6,24.25],[-40.328,29.734],[0.733,35.218],[41.927,29.295]],"c":true}],"h":1},{"t":7,"s":[{"i":[[29.231,0],[-0.464,-9.161],[-33.861,0.633],[-0.685,12.971]],"o":[[-43.378,0],[0.464,9.161],[30.62,-0.573],[0.464,-8.779]],"v":[[0.678,-24.25],[-70.536,-14.708],[0.91,-5.165],[72.587,-15.471]],"c":true}],"h":1},{"t":9,"s":[{"i":[[31.504,0],[-0.5,-12],[-36.494,0.829],[-0.739,16.991]],"o":[[-46.75,0],[0.5,12],[33,-0.75],[0.5,-11.5]],"v":[[1,-45],[-75.75,-32.5],[1.25,-20],[78.5,-33.5]],"c":true}],"h":1},{"t":11,"s":[{"i":[[14.763,0],[-0.234,-4.513],[-17.101,0.312],[-0.346,6.39]],"o":[[-21.907,0],[0.234,4.513],[15.464,-0.282],[0.234,-4.325]],"v":[[-18.551,-96.715],[-54.516,-92.014],[-18.434,-87.313],[17.766,-92.39]],"c":true}],"h":1},{"t":12,"s":[{"i":[[6.841,0],[-0.109,-2.091],[-7.924,0.145],[-0.16,2.961]],"o":[[-10.151,0],[0.109,2.091],[7.166,-0.131],[0.109,-2.004]],"v":[[-33.476,-99.215],[-50.141,-97.037],[-33.422,-94.858],[-16.647,-97.211]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":1.2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Fill 01 mask","parent":0,"td":1,"ks":{"o":{"k":100,"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').transform.opacity;"},"r":{"k":0,"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').transform.rotation;"},"p":{"k":[0,0,0]},"a":{"k":[0,0,0],"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').transform.anchorPoint;"},"s":{"k":[100,100,100],"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').transform.scale;"}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[1.447,-0.024],[-0.014,-0.603],[-0.096,-1.359],[-2.938,0.026],[-0.088,1.415],[-0.024,0.341]],"o":[[-2.33,0.039],[0.027,1.129],[0.101,1.439],[2.648,-0.024],[0.054,-0.861],[0.043,-0.611]],"v":[[0.073,108.616],[-3.611,109.286],[-2.904,203.827],[0.257,205.599],[3.073,203.517],[4.152,109.173]],"c":true}],"h":1},{"t":4,"s":[{"i":[[2.698,-0.045],[-0.027,-1.125],[-0.202,-2.87],[-6.207,0.055],[-0.186,2.989],[-0.044,0.635]],"o":[[-4.344,0.073],[0.05,2.104],[0.214,3.039],[5.594,-0.05],[0.113,-1.818],[0.079,-1.139]],"v":[[-0.436,113.35],[-7.305,114.599],[-6.614,196.338],[0.063,200.082],[6.012,195.684],[7.171,114.389]],"c":true}],"h":1},{"t":5,"s":[{"i":[[11.717,-0.196],[-0.115,-4.887],[-0.866,-12.278],[-26.556,0.236],[-0.797,12.788],[-0.192,2.758]],"o":[[-18.869,0.315],[0.216,9.14],[0.917,13.004],[23.932,-0.213],[0.485,-7.777],[0.345,-4.947]],"v":[[-2.381,80.435],[-32.216,85.86],[-27.451,168.246],[1.118,184.264],[26.567,165.447],[30.655,84.947]],"c":true}],"h":1},{"t":7,"s":[{"i":[[20.882,0.035],[-0.207,-6.008],[-1.542,-14.436],[-47.323,0.277],[-1.421,15.036],[-0.092,3.25]],"o":[[-17.374,-0.029],[0.375,10.869],[1.634,15.289],[42.647,-0.25],[0.864,-9.144],[0.169,-5.983]],"v":[[-3.882,55.215],[-54.375,61.006],[-45.884,158.461],[2.353,177],[45.921,155.464],[53.206,61.108]],"c":true}],"h":1},{"t":9,"s":[{"i":[[24.644,-0.733],[-0.23,-8.7],[-0.813,-15.572],[-52.601,0.51],[-2.215,20.141],[-0.102,3.489]],"o":[[-18.1,0.538],[0.309,11.672],[0.831,15.924],[49.463,-0.48],[1.078,-9.805],[0.188,-6.424]],"v":[[-3.644,34.233],[-61.27,41.45],[-55.581,144.326],[1.037,165.48],[52.965,142.109],[58.812,41.56]],"c":true}],"h":1},{"t":11,"s":[{"i":[[11.432,-0.072],[-0.204,-6.364],[-0.375,-15.194],[-21.752,0.531],[-0.735,16.334],[0.102,3.404]],"o":[[-8.376,0.053],[0.365,11.384],[0.384,15.537],[22.842,-0.557],[0.43,-9.57],[-0.163,-5.471]],"v":[[-18.807,-21.428],[-45.046,-15.511],[-42.396,127.329],[-17.748,147.969],[7.985,127.416],[10.163,-16.404]],"c":true}],"h":1},{"t":12,"s":[{"i":[[4.582,-0.029],[0.001,-2.552],[-0.15,-6.09],[-8.718,0.213],[-0.294,6.547],[0.041,1.364]],"o":[[-3.357,0.021],[-0.002,4.95],[0.154,6.227],[9.155,-0.223],[0.173,-3.836],[-0.065,-2.193]],"v":[[-34.419,-79.145],[-45.311,-76.45],[-44.645,125.55],[-34.641,134.947],[-24.203,125.085],[-22.683,-76.807]],"c":true}],"h":1}],"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').content('Path 1').path;"},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.02,0.64,1,1]},"o":{"k":100,"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').content('Fill 1').opacity;"},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,1],"ix":2},"a":{"k":[0,0],"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').transform.anchorPoint;","ix":1},"s":{"k":[100,100],"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').transform.scale;","ix":3},"r":{"k":0,"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').transform.rotation;","ix":6},"o":{"k":100,"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').transform.opacity;","ix":7},"sk":{"k":0,"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').transform.skew;","ix":4},"sa":{"k":0,"x":"var $bm_rt;\n$bm_rt = comp('U').layer('Liquid main fill').content('Shape 1').transform.skewAxis;","ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Top shade","parent":0,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[5.765,-0.045],[0.27,-1.423],[-6.131,0],[-0.038,1.225]],"o":[[-5.265,0.041],[-0.23,1.212],[6.174,0],[0.048,-1.57]],"v":[[1.211,107.545],[-8.981,109.164],[1.403,110.736],[12.854,109.21]],"c":true}],"h":1},{"t":4,"s":[{"i":[[5.765,-0.045],[0.27,-1.423],[-6.131,0],[-0.038,1.225]],"o":[[-5.265,0.041],[-0.23,1.212],[6.174,0],[0.048,-1.57]],"v":[[1.211,113.545],[-8.981,115.164],[1.403,116.736],[12.854,115.21]],"c":true}],"h":1},{"t":5,"s":[{"i":[[16.936,-0.133],[0.792,-4.181],[-18.011,0],[-0.11,3.599]],"o":[[-15.469,0.122],[-0.674,3.559],[18.137,0],[0.141,-4.613]],"v":[[-2.593,80.863],[-32.536,85.619],[-2.031,90.236],[31.609,85.752]],"c":true}],"h":1},{"t":7,"s":[{"i":[[28.408,-0.224],[1.329,-7.013],[-30.211,0],[-0.185,6.037]],"o":[[-25.947,0.204],[-1.131,5.97],[30.421,0],[0.237,-7.737]],"v":[[-4.105,54.036],[-54.329,62.013],[-4,68.5],[53.263,62.237]],"c":true}],"h":1},{"t":9,"s":[{"i":[[31.75,-0.25],[0.75,-6.75],[-33.765,0],[0,6.75]],"o":[[-28.999,0.228],[-0.75,6.75],[34,0],[0,-7.004]],"v":[[-4,35],[-61.25,41.75],[-5,49],[59,42]],"c":true}],"h":1},{"t":11,"s":[{"i":[[15.088,-0.119],[0.63,-5.116],[-16.045,0.02],[-0.25,4.555]],"o":[[-13.781,0.109],[-0.606,4.924],[17.413,-0.022],[0.182,-3.324]],"v":[[-18.438,-21.131],[-45.894,-15.674],[-17.663,-11.228],[11.25,-16.805]],"c":true}],"h":1},{"t":12,"s":[{"i":[[6.967,-0.042],[0.291,-1.827],[-7.409,0.007],[-0.115,1.627]],"o":[[-6.363,0.039],[-0.28,1.758],[8.04,-0.008],[0.084,-1.187]],"v":[[-33.543,-78.708],[-46.22,-76.758],[-33.185,-75.171],[-19.834,-77.162]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":10},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-0.625,-13.375,0],"e":[-10.625,-49.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[-10.625,-49.375,0],"e":[-13.625,-96.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[-13.625,-96.375,0],"e":[-54.625,-205.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-26,-26,100],"e":[63,63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[63,63,100],"e":[58,58,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[58,58,100],"e":[-12,-12,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":6,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":16},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-60.625,62.625,0],"e":[-18.625,-9.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[-18.625,-9.375,0],"e":[-49.625,-74.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[-49.625,-74.375,0],"e":[-137.625,-138.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-49,-49,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[40,40,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[40,40,100],"e":[-35,-35,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":7,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":16},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-60.625,-6.375,0],"e":[-34.625,-9.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[-34.625,-9.375,0],"e":[-49.625,-143.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[-49.625,-143.375,0],"e":[-137.625,-207.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-49,-49,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[40,40,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[40,40,100],"e":[-35,-35,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":7,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":16},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[11.375,-6.375,0],"e":[37.375,-9.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[37.375,-9.375,0],"e":[22.375,-143.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[22.375,-143.375,0],"e":[-65.625,-207.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-49,-49,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[40,40,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[40,40,100],"e":[-35,-35,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":7,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":16},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[11.375,-6.375,0],"e":[37.375,-28.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[37.375,-28.375,0],"e":[22.375,-88.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[22.375,-88.375,0],"e":[-65.625,-207.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-49,-49,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[40,40,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[40,40,100],"e":[-35,-35,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":7,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":16},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-38.625,-33.375,0],"e":[-12.625,-55.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[-12.625,-55.375,0],"e":[-27.625,-115.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[-27.625,-115.375,0],"e":[-115.625,-234.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-49,-49,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[40,40,100],"e":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[40,40,100],"e":[-35,-35,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":7,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":69},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-38.625,10.625,0],"e":[-12.625,-11.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[-12.625,-11.375,0],"e":[-27.625,-71.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[-27.625,-71.375,0],"e":[-115.625,-190.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-26,-26,100],"e":[63,63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[63,63,100],"e":[63,63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[63,63,100],"e":[-12,-12,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":7,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"Bubble","parent":21,"ks":{"o":{"k":16},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[2.375,-11.375,0],"e":[13.375,-30.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[13.375,-30.375,0],"e":[13.375,-65.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[13.375,-65.375,0],"e":[-74.625,-212.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":13}]},"a":{"k":[12.75,119.75,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[-26,-26,100],"e":[63,63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":7,"s":[63,63,100],"e":[63,63,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[63,63,100],"e":[-12,-12,100]},{"t":13}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[5.5,5.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":1},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[12.75,119.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":6,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":3,"nm":"Bottom track","parent":0,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[{"t":3,"s":[-0.25,206.625,0],"h":1},{"t":4,"s":[-0.25,206.625,0],"h":1},{"t":5,"s":[-0.625,201,0],"h":1},{"t":7,"s":[-0.625,185.125,0],"h":1},{"t":9,"s":[-0.625,178,0],"h":1},{"t":11,"s":[-0.625,166.25,0],"h":1},{"t":13,"s":[-35.625,135.75,0],"h":1}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"Liquid main fill","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":3,"s":[{"i":[[1.447,-0.024],[-0.014,-0.603],[-0.096,-1.359],[-2.938,0.026],[-0.088,1.415],[-0.024,0.341]],"o":[[-2.33,0.039],[0.027,1.129],[0.101,1.439],[2.648,-0.024],[0.054,-0.861],[0.043,-0.611]],"v":[[0.073,108.616],[-3.611,109.286],[-2.904,203.827],[0.257,205.599],[3.073,203.517],[4.152,109.173]],"c":true}],"h":1},{"t":4,"s":[{"i":[[2.698,-0.045],[-0.027,-1.125],[-0.202,-2.87],[-6.207,0.055],[-0.186,2.989],[-0.044,0.635]],"o":[[-4.344,0.073],[0.05,2.104],[0.214,3.039],[5.594,-0.05],[0.113,-1.818],[0.079,-1.139]],"v":[[-0.436,113.35],[-7.305,114.599],[-6.614,196.338],[0.063,200.082],[6.012,195.684],[7.171,114.389]],"c":true}],"h":1},{"t":5,"s":[{"i":[[11.717,-0.196],[-0.115,-4.887],[-0.866,-12.278],[-26.556,0.236],[-0.797,12.788],[-0.192,2.758]],"o":[[-18.869,0.315],[0.216,9.14],[0.917,13.004],[23.932,-0.213],[0.485,-7.777],[0.345,-4.947]],"v":[[-2.381,80.435],[-32.216,85.86],[-27.451,168.246],[1.118,184.264],[26.567,165.447],[30.655,84.947]],"c":true}],"h":1},{"t":7,"s":[{"i":[[20.882,0.035],[-0.207,-6.008],[-1.542,-14.436],[-47.323,0.277],[-1.421,15.036],[-0.092,3.25]],"o":[[-17.374,-0.029],[0.375,10.869],[1.634,15.289],[42.647,-0.25],[0.864,-9.144],[0.169,-5.983]],"v":[[-3.882,55.215],[-54.375,61.006],[-45.884,158.461],[2.353,177],[45.921,155.464],[53.206,61.108]],"c":true}],"h":1},{"t":9,"s":[{"i":[[24.644,-0.733],[-0.23,-8.7],[-0.813,-15.572],[-52.601,0.51],[-2.215,20.141],[-0.102,3.489]],"o":[[-18.1,0.538],[0.309,11.672],[0.831,15.924],[49.463,-0.48],[1.078,-9.805],[0.188,-6.424]],"v":[[-3.644,34.233],[-61.27,41.45],[-55.581,144.326],[1.037,165.48],[52.965,142.109],[58.812,41.56]],"c":true}],"h":1},{"t":11,"s":[{"i":[[11.432,-0.072],[-0.204,-6.364],[-0.375,-15.194],[-21.752,0.531],[-0.735,16.334],[0.102,3.404]],"o":[[-8.376,0.053],[0.365,11.384],[0.384,15.537],[22.842,-0.557],[0.43,-9.57],[-0.163,-5.471]],"v":[[-18.807,-21.428],[-45.046,-15.511],[-42.396,127.329],[-17.748,147.969],[7.985,127.416],[10.163,-16.404]],"c":true}],"h":1},{"t":12,"s":[{"i":[[4.582,-0.029],[0.001,-2.552],[-0.15,-6.09],[-8.718,0.213],[-0.294,6.547],[0.041,1.364]],"o":[[-3.357,0.021],[-0.002,4.95],[0.154,6.227],[9.155,-0.223],[0.173,-3.836],[-0.065,-2.193]],"v":[[-34.419,-79.145],[-45.311,-76.45],[-44.645,125.55],[-34.641,134.947],[-24.203,125.085],[-22.683,-76.807]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,1],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":13,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":1,"nm":"ResizerTemp","parent":24,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":1,"nm":"White Solid 56","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":25,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":25,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/V.json b/example/shared/src/commonMain/composeResources/files/mobilo/V.json new file mode 100644 index 00000000..417f4a18 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/V.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 53","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[],"ip":0,"op":34,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"V Outlines 2","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[56.47,-226.593],[0.879,-54.987],[-54.712,-226.593],[-107.281,-226.593],[-25.406,0],[27.466,0],[109.039,-226.593]],"c":true}},"nm":"V"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"V"}],"ip":25,"op":34,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 52","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[326,423.25,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":24,"op":25,"st":21,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 51","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[299.5,354.25,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[86.25,-39.583],[63.75,-28.958],[67.292,-19.375],[91.042,-28.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[75.213,-33.326],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":24,"op":25,"st":21,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 50","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[325.5,422.25,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":23,"op":24,"st":21,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 49","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[299.5,354.25,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[82.292,-50.417],[58.958,-41.458],[67.292,-19.375],[91.042,-28.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[70.883,-45.33],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":23,"op":24,"st":21,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 48","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[323.25,416.5,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":20,"op":23,"st":18,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 47","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[299.5,354.25,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[68.75,-87.292],[45.625,-76.875],[65,-26.875],[87.917,-35.833]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":20,"op":23,"st":18,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 46","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[309,377.25,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":18,"op":20,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 45","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[299.5,354.25,0]},"a":{"k":[0,0,0]},"s":{"k":[120,120,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[68.75,-87.292],[45.625,-76.875],[52.917,-57.5],[76.875,-66.875]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":18,"op":20,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 44","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[139.75,35.5],[97.5,68],[100.75,72.25],[142.75,40.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":26,"op":28,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 43","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[130.5,39.25],[100,63.5],[107,70.5],[137.25,47.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":24,"op":26,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 42","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[110.25,29],[99.75,45.25],[115.75,55.75],[126.5,39.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":22,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 40","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[323.75,368.5,0]},"a":{"k":[0,0,0]},"s":{"k":[61,61,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":20,"op":22,"st":18,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 39","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[264.5,343.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[86.75,-43],[82.5,-35.75],[87,-21.75],[101.25,-27.5],[95.25,-40.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":20,"op":22,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 36","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[309.25,324,0]},"a":{"k":[0,0,0]},"s":{"k":[61,61,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":18,"op":20,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Shape Layer 38","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[82.75,-55.75],[78.75,-47],[87,-21.75],[101.25,-27.5],[91.75,-52.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 35","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[299,295.5,0]},"a":{"k":[0,0,0]},"s":{"k":[61,61,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":16,"op":18,"st":16,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 34","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[81.25,-79.75],[56.5,-79.75],[71.75,-57.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":16,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"Shape Layer 33","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[25.4,25.4]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[57.2,-81.3],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":12,"op":14,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 32","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[48.5,-102.5],[34.5,-101.5],[37.5,-61],[52,-62.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":10,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 31","parent":70,"ks":{"o":{"k":100},"r":{"k":-37},"p":{"k":[196.5,252,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-146.691,12.454],[-152.143,27.441],[-141.408,40.066]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[6.493,-1.429],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100.864,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":22,"op":24,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 30","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-156,43.5],[-159.25,47.25],[-138.75,65.25],[-136.25,62.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":22,"op":24,"st":-3,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"Shape Layer 27","parent":70,"ks":{"o":{"k":100},"r":{"k":-37},"p":{"k":[196.5,252,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-129.167,1.044],[-146.928,22.953],[-123.122,43.007]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[6.493,-1.429],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100.864,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":20,"op":22,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"Shape Layer 29","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-141.25,16.75],[-152.5,28],[-123,57.5],[-111.75,45.25]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":20,"op":22,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":4,"nm":"Shape Layer 26","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-126.5,4.25],[-148.25,24.75],[-126.5,46.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":18,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":4,"nm":"Shape Layer 24","parent":70,"ks":{"o":{"k":100},"r":{"k":-2},"p":{"k":[145.5,323.75,0]},"a":{"k":[-110,18,0]},"s":{"k":[221.068,87.733,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[20.093,47.469]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-110.204,18.234],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":18,"op":20,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":28,"ty":4,"nm":"Shape Layer 23","parent":70,"ks":{"o":{"k":100},"r":{"k":6},"p":{"k":[142.5,315.25,0]},"a":{"k":[-110,18,0]},"s":{"k":[85.701,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[20.093,47.469]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-110.204,18.234],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":16,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":29,"ty":4,"nm":"Shape Layer 21","parent":70,"ks":{"o":{"k":100},"r":{"k":83},"p":{"k":[150,309.5,0]},"a":{"k":[-132,0,0]},"s":{"k":[58,58,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-130.628,-35.538],[-171.425,-1.946],[-132.378,33.73],[-97.169,-1.514]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":16,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":30,"ty":4,"nm":"Shape Layer 20","parent":70,"ks":{"o":{"k":100},"r":{"k":43},"p":{"k":[170,299.5,0]},"a":{"k":[-132,0,0]},"s":{"k":[79,79,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-136.213,-37.514],[-166.021,18.167],[-102.82,17.886]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":14,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":31,"ty":4,"nm":"Shape Layer 19","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[31.633,31.633]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-65.857,-15.51],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":10,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":32,"ty":4,"nm":"Shape Layer 18","parent":70,"ks":{"o":{"k":100},"r":{"k":-28},"p":{"k":[207,278,0]},"a":{"k":[-132,0,0]},"s":{"k":[63,63,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-133.231,-38.257],[-164.791,16.872],[-102.66,16.949]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 2"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":10,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":33,"ty":4,"nm":"Shape Layer 17","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,292.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[37.275,37.275]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[4.638,88.138],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":16,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":34,"ty":4,"nm":"Shape Layer 16","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[244.75,288.75,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[37.275,37.275]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[4.638,88.138],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":16,"op":18,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":35,"ty":4,"nm":"Shape Layer 14","parent":70,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":10,"s":[22],"e":[22]},{"t":12,"s":[22],"h":1},{"t":14,"s":[50],"h":1}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[269,326,0],"e":[268,336.5,0],"to":[-0.16666667163372,1.75,0],"ti":[0.45833334326744,-4.04166650772095,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[268,336.5,0],"e":[266.25,350.25,0],"to":[-0.45833334326744,4.04166650772095,0],"ti":[0.41666665673256,-4.41666650772095,0]},{"t":12,"s":[266.25,350.25,0],"h":1},{"t":14,"s":[265.5,363,0],"h":1},{"t":27,"s":[975.5,603,0],"h":1}]},"a":{"k":[-22,-166,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":12,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-19.124,-196.049],[-52.605,-160.105],[-5.181,-148.285]],"c":true}],"h":1},{"t":14,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-17.74,-198.477],[-49.803,-146.331],[-16.693,-141.954]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":36,"ty":4,"nm":"Shape Layer 13","parent":70,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[22]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":10,"s":[22],"e":[22]},{"t":12,"s":[22],"h":1},{"t":14,"s":[50],"h":1}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[269,326,0],"e":[268,336.5,0],"to":[-0.16666667163372,1.75,0],"ti":[1.29166662693024,-3.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[268,336.5,0],"e":[261.25,347,0],"to":[-1.29166662693024,3.5,0],"ti":[1.25,-3.875,0]},{"t":12,"s":[261.25,347,0],"h":1},{"t":14,"s":[260.5,359.75,0],"h":1},{"t":27,"s":[970.5,599.75,0],"h":1}]},"a":{"k":[-22,-166,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-19.124,-196.049],[-52.605,-160.105],[-5.181,-148.285],[-13.142,-194.634]],"c":true}],"h":1},{"t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-17.671,-199.726],[-49.505,-149.019],[-12.009,-145.203],[-12.134,-199.336]],"c":true}],"h":1}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":37,"ty":4,"nm":"Shape Layer 11","parent":70,"ks":{"o":{"k":100},"r":{"k":[{"t":8,"s":[0],"h":1},{"t":10,"s":[22],"h":1}]},"p":{"k":[{"t":8,"s":[269,326,0],"h":1},{"t":10,"s":[268,336.5,0],"h":1},{"t":27,"s":[978,576.5,0],"h":1}]},"a":{"k":[-22,-166,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-3.5,-184],[-32.149,-190.248],[-51.75,-168],[-36.25,-142.25],[-3.75,-150.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":38,"ty":4,"nm":"Shape Layer 10","parent":70,"ks":{"o":{"k":100},"r":{"k":[{"t":8,"s":[0],"h":1},{"t":10,"s":[22],"h":1}]},"p":{"k":[{"t":8,"s":[259,327.5,0],"h":1},{"t":10,"s":[259.5,335,0],"h":1},{"t":27,"s":[969.5,575,0],"h":1}]},"a":{"k":[-22,-166,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-21.5,-192],[-32.149,-190.248],[-51.75,-168],[-36.25,-142.25],[-24.948,-143.302],[-3.75,-150.75]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":39,"ty":4,"nm":"Shape Layer 9","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30,-50],[8,-36],[18.5,-17],[32.5,-27.5]],"c":true}],"e":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}],"e":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}],"e":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}],"e":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}],"e":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.358,"y":0},"n":"0p833_0p833_0p358_0","t":17,"s":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[109.5,-125.5],[57.75,-127.5],[-17.25,99.75]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":23,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":40,"ty":4,"nm":"Shape Layer 7","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30,-50],[8,-36],[18.5,-17],[32.5,-27.5]],"c":true}],"e":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}],"e":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}],"e":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}],"e":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}],"e":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.358,"y":0},"n":"0p833_0p833_0p358_0","t":17,"s":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[109.5,-125.5],[61.25,-127],[-21.75,100.25]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.22,0.07,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":41,"ty":4,"nm":"Shape Layer 6","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[217.5,238,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[3.373,11.868]],"o":[[0,0],[0,0],[0,0],[-6.75,-23.75]],"v":[[39.75,97.25],[-8,136.5],[-6,167],[22.25,166.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0.071,12.338]],"o":[[0,0],[0,0],[0,0],[-0.25,-43.5]],"v":[[61.5,63.5],[19,59.5],[-6,167],[30.5,166.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0.071,12.338]],"o":[[0,0],[0,0],[0,0],[-0.25,-43.5]],"v":[[61.5,63.5],[19,59.5],[-6,167],[30.5,166.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[-2.753,12.027]],"o":[[0,0],[0,0],[0,0],[28.5,-124.5]],"v":[[127.75,13.75],[80.5,-10.75],[-6,167],[49.25,169.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[-2.753,12.027]],"o":[[0,0],[0,0],[0,0],[28.5,-124.5]],"v":[[127.75,13.75],[80.5,-10.75],[-6,167],[49.25,169.75]],"c":true}],"e":[{"i":[[8.75,48.25],[0,0],[0,0],[-1.09,12.29]],"o":[[0.892,-14.724],[0,0],[0,0],[10.75,-121.25]],"v":[[106.25,-40.25],[62,-40.75],[-6,167],[64.75,169.75]],"c":true}]},{"t":22}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":42,"ty":4,"nm":"Shape Layer 8","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30,-50],[8,-36],[18.5,-17],[32.5,-27.5]],"c":true}],"e":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}],"e":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}],"e":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}],"e":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}],"e":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.358,"y":0},"n":"0p833_0p833_0p358_0","t":17,"s":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[109.5,-125.5],[61.25,-127],[-21.75,100.25]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":23,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":43,"ty":4,"nm":"Shape Layer 1","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30,-50],[8,-36],[18.5,-17],[32.5,-27.5]],"c":true}],"e":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}],"e":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}],"e":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}],"e":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}],"e":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.358,"y":0},"n":"0p833_0p833_0p358_0","t":17,"s":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[109.5,-125.5],[61.25,-127],[-21.75,100.25]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.22,0.07,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":44,"ty":4,"nm":"Shape Layer 2","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[12,-16],[0,0],[0,0]],"o":[[0,0],[-3.482,4.643],[0,0],[0,0]],"v":[[57.5,-26.25],[8.75,-18.5],[18,-3.75],[53.5,-12]],"c":true}],"e":[{"i":[[1.25,13.5],[20.125,-15.875],[0,0],[0,0]],"o":[[-1.209,-13.06],[-4.557,3.594],[0,0],[0,0]],"v":[[77.125,-14],[17.375,-28.875],[19.25,-17.5],[60.25,20]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[1.25,13.5],[20.125,-15.875],[0,0],[0,0]],"o":[[-1.209,-13.06],[-4.557,3.594],[0,0],[0,0]],"v":[[77.125,-14],[17.375,-28.875],[19.25,-17.5],[60.25,20]],"c":true}],"e":[{"i":[[2.5,27],[12,-16],[0,0],[0,0]],"o":[[-2.418,-26.119],[-3.482,4.643],[0,0],[0,0]],"v":[[96.75,-1.75],[48,-41.75],[43.5,-28.25],[61,55.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[2.5,27],[12,-16],[0,0],[0,0]],"o":[[-2.418,-26.119],[-3.482,4.643],[0,0],[0,0]],"v":[[96.75,-1.75],[48,-41.75],[43.5,-28.25],[61,55.75]],"c":true}],"e":[{"i":[[-12.383,5.521],[40.25,42.375],[0,0],[32.25,-24.75]],"o":[[30,-13.375],[-1.998,-2.104],[0,0],[5.706,13.725]],"v":[[69,101.625],[79,-32.875],[63.5,-28.125],[-16.375,101]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-12.383,5.521],[40.25,42.375],[0,0],[32.25,-24.75]],"o":[[30,-13.375],[-1.998,-2.104],[0,0],[5.706,13.725]],"v":[[69,101.625],[79,-32.875],[63.5,-28.125],[-16.375,101]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[64.5,-49.5]],"o":[[0,0],[0,0],[0,0],[11.413,27.451]],"v":[[116.75,93.5],[114,-4],[78.5,1.5],[28.75,108]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[64.5,-49.5]],"o":[[0,0],[0,0],[0,0],[11.413,27.451]],"v":[[116.75,93.5],[114,-4],[78.5,1.5],[28.75,108]],"c":true}],"e":[{"i":[[0,0],[0,0],[-2.565,-6.477],[26.25,-23]],"o":[[0,0],[0,0],[10,25.25],[11.413,27.451]],"v":[[116.75,93.5],[107.25,34.25],[81.25,38.25],[13.75,112.5]],"c":true}]},{"t":14}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":45,"ty":4,"nm":"Shape Layer 4","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30,-50],[8,-36],[18.5,-17],[32.5,-27.5]],"c":true}],"e":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}],"e":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}],"e":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}],"e":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}],"e":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.358,"y":0},"n":"0p833_0p833_0p358_0","t":17,"s":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[109.5,-125.5],[61.25,-127],[-21.75,100.25]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":17,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":46,"ty":4,"nm":"Shape Layer 3","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30,-50],[8,-36],[18.5,-17],[32.5,-27.5]],"c":true}],"e":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[-6,11],[0,0],[0,0],[-29.287,-3.004]],"o":[[-52.5,-16],[0,0],[0,0],[10.5,-14.5]],"v":[[77,-47.5],[1.5,-28.5],[13.5,-12],[63.5,-27]],"c":true}],"e":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[-10,9],[0,0],[0,0],[-6.5,-68]],"o":[[-39,-77],[0,0],[0,0],[12.5,-12.5]],"v":[[123.5,-10],[14,-42.5],[24.5,-21],[89.5,18.5]],"c":true}],"e":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[-22.5,-6.5],[106,17],[6,-9.25],[75.5,-77.5]],"o":[[6.5,-9.5],[-7,12.5],[13.076,3.051],[15.75,5]],"v":[[94.75,83.75],[57.5,-50.5],[45.25,-28],[49.5,70.5]],"c":true}],"e":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[-22.75,-0.25],[53,43.5],[7.25,-1.5],[78.75,-33.25]],"o":[[36.75,-12],[-15,4],[22.25,30.5],[20.25,0.25]],"v":[[71.25,98.5],[96.5,-37],[66.25,-25],[-9.75,98.75]],"c":true}],"e":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[-22.75,-0.25],[30.5,83.5],[10.75,-2],[99.75,-42.25]],"o":[[-0.25,0.5],[-12.5,2],[1.183,17.808],[20.25,0.25]],"v":[[48.75,101.5],[100.5,-1.5],[72.25,3],[-25.25,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-22.75,-0.25],[12.885,32.385],[11.365,-1.385],[34.212,-37.75]],"o":[[1.827,-5.808],[-13.654,1.154],[-24.866,35.346],[20.25,0.25]],"v":[[33.019,100.346],[88.115,41.115],[52.866,37.154],[-24.712,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.358,"y":0},"n":"0p833_0p833_0p358_0","t":17,"s":[{"i":[[-22.75,-0.25],[-15.619,28.427],[11.404,9.22],[22.635,-56.75]],"o":[[5.981,-18.423],[-19.119,-13.073],[-12.596,18.72],[20.25,0.25]],"v":[[28.558,100.72],[42.119,66.573],[5.596,38.78],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-22.75,-0.25],[-37.619,34.427],[10.404,8.72],[18.635,-68.25]],"o":[[4.442,-24.22],[-14.619,-18.573],[-38.596,32.22],[20.25,0.25]],"v":[[28.558,100.72],[99.619,-25.427],[68.096,-57.22],[-23.635,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-22.75,-0.25],[8.191,45.213],[17.327,-0.89],[12.692,-122.25]],"o":[[4.846,-74.11],[-20.309,-1.287],[-0.673,58.61],[20.25,0.25]],"v":[[28.154,100.61],[78.809,-93.713],[31.173,-90.61],[-22.692,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-22.75,-0.25],[-28.5,55],[14.75,2],[11.827,-29.85]],"o":[[13.25,-40.5],[-20,-3.5],[-7.659,14.196],[20.25,0.25]],"v":[[27.75,100.5],[117.5,-121],[69.75,-126],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":26,"s":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[102,-126],[53.75,-127.5],[-21.75,100.25]],"c":true}],"e":[{"i":[[-22.75,-0.25],[0,0],[0,0],[11.827,-29.85]],"o":[[13.25,-40.5],[0,0],[0,0],[20.25,0.25]],"v":[[27.75,100.5],[109.5,-125.5],[61.25,-127],[-21.75,100.25]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":12,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":47,"ty":4,"nm":"shape10","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":14,"s":[{"i":[[12.941,-15.599],[0,0],[0,0],[83.75,8]],"o":[[79.441,7.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-69.441,34.099],[-25.775,99.99],[28.103,100.338],[-44.25,7]],"c":true}],"e":[{"i":[[8.691,-16.849],[0,0],[0,0],[72.75,-17.75]],"o":[[56.191,5.151],[0,0],[0,0],[-3.25,7.25]],"v":[[-52.691,34.349],[-25.775,99.99],[28.103,100.338],[-38.25,1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":16,"s":[{"i":[[8.691,-16.849],[0,0],[0,0],[72.75,-17.75]],"o":[[56.191,5.151],[0,0],[0,0],[-3.25,7.25]],"v":[[-52.691,34.349],[-25.775,99.99],[28.103,100.338],[-38.25,1.25]],"c":true}],"e":[{"i":[[12.941,-15.599],[0,0],[0,0],[52.75,84]],"o":[[24.941,75.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-19.941,-18.401],[-25.775,99.99],[28.103,100.338],[1.75,-49.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[12.941,-15.599],[0,0],[0,0],[52.75,84]],"o":[[24.941,75.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-19.941,-18.401],[-25.775,99.99],[28.103,100.338],[1.75,-49.5]],"c":true}],"e":[{"i":[[17.441,9.401],[0,0],[0,0],[-15.75,109.5]],"o":[[-43.059,97.901],[0,0],[0,0],[-9.25,-6]],"v":[[-74.441,-110.401],[-25.775,99.99],[28.103,100.338],[-31.25,-80]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[17.441,9.401],[0,0],[0,0],[-15.75,109.5]],"o":[[-43.059,97.901],[0,0],[0,0],[-9.25,-6]],"v":[[-74.441,-110.401],[-25.775,99.99],[28.103,100.338],[-31.25,-80]],"c":true}],"e":[{"i":[[19.441,0.401],[0,0],[0,0],[40.75,84.5]],"o":[[47.941,91.401],[0,0],[0,0],[-8.75,0]],"v":[[-117.941,-123.901],[-25.775,99.99],[21.103,99.838],[-66.75,-125]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[19.441,0.401],[0,0],[0,0],[40.75,84.5]],"o":[[47.941,91.401],[0,0],[0,0],[-8.75,0]],"v":[[-117.941,-123.901],[-25.775,99.99],[21.103,99.838],[-66.75,-125]],"c":true}],"e":[{"i":[[19.941,-1.099],[0,0],[0,0],[15.75,91.5]],"o":[[23.441,98.401],[0,0],[0,0],[-8.75,0]],"v":[[-95.441,-125.401],[-25.775,99.99],[21.103,99.838],[-48.25,-126]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":26,"s":[{"i":[[19.941,-1.099],[0,0],[0,0],[15.75,91.5]],"o":[[23.441,98.401],[0,0],[0,0],[-8.75,0]],"v":[[-95.441,-125.401],[-25.775,99.99],[21.103,99.838],[-48.25,-126]],"c":true}],"e":[{"i":[[19.941,-1.099],[0,0],[0,0],[29.25,82.5]],"o":[[31.441,93.901],[0,0],[0,0],[-8.75,0]],"v":[[-105.441,-125.401],[-25.775,99.99],[21.103,99.838],[-59.25,-126]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.06,0.06,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":48,"ty":4,"nm":"shape09","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[38.5,-6.5],[0,0],[0,0],[-16.641,120.05]],"o":[[-38.049,6.424],[0,0],[0,0],[14,-101]],"v":[[-47,6],[-131,8],[-133,113],[35,136]],"c":true}],"e":[{"i":[[43.75,11.375],[2.625,-4.125],[0,0],[-12.48,90.038]],"o":[[-29.912,7.443],[13.625,6.25],[0,0],[10.5,-75.75]],"v":[[-34.375,-9.375],[-102.875,1],[-99,111.625],[36,136.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[43.75,11.375],[2.625,-4.125],[0,0],[-12.48,90.038]],"o":[[-29.912,7.443],[13.625,6.25],[0,0],[10.5,-75.75]],"v":[[-34.375,-9.375],[-102.875,1],[-99,111.625],[36,136.5]],"c":true}],"e":[{"i":[[49,29.25],[5.25,-8.25],[0,0],[-8.32,60.025]],"o":[[-21.775,8.462],[85.25,2],[0,0],[7,-50.5]],"v":[[-21.75,-24.75],[-61.75,34.5],[-12.5,110.75],[36,141.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[49,29.25],[5.25,-8.25],[0,0],[-8.32,60.025]],"o":[[-21.775,8.462],[85.25,2],[0,0],[7,-50.5]],"v":[[-21.75,-24.75],[-61.75,34.5],[-12.5,110.75],[36,141.5]],"c":true}],"e":[{"i":[[54.25,47.125],[7.875,-12.375],[0,0],[-4.16,30.013]],"o":[[-13.637,9.481],[69.875,13.5],[0,0],[3.5,-25.25]],"v":[[-9.125,-40.125],[-43.125,-2.25],[-4.75,109.125],[30.5,143]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[54.25,47.125],[7.875,-12.375],[0,0],[-4.16,30.013]],"o":[[-13.637,9.481],[69.875,13.5],[0,0],[3.5,-25.25]],"v":[[-9.125,-40.125],[-43.125,-2.25],[-4.75,109.125],[30.5,143]],"c":true}],"e":[{"i":[[59.5,65],[10.5,-16.5],[0,0],[0,0]],"o":[[-5.5,10.5],[54.5,25],[0,0],[0,0]],"v":[[3.5,-55.5],[-18.5,-20],[3,107.5],[25,144.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[59.5,65],[10.5,-16.5],[0,0],[0,0]],"o":[[-5.5,10.5],[54.5,25],[0,0],[0,0]],"v":[[3.5,-55.5],[-18.5,-20],[3,107.5],[25,144.5]],"c":true}],"e":[{"i":[[59.5,65],[17.5,-7.833],[0,0],[0,0]],"o":[[-9.5,0.833],[29.667,53.833],[0,0],[0,0]],"v":[[-2.5,-64.5],[-25,-48.833],[11.167,106.5],[34.333,129.167]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[59.5,65],[17.5,-7.833],[0,0],[0,0]],"o":[[-9.5,0.833],[29.667,53.833],[0,0],[0,0]],"v":[[-2.5,-64.5],[-25,-48.833],[11.167,106.5],[34.333,129.167]],"c":true}],"e":[{"i":[[59.5,65],[24.5,0.833],[0,0],[0,0]],"o":[[-13.5,-8.833],[-14,81.917],[0,0],[0,0]],"v":[[0.5,-60],[-34,-84.917],[21.333,105],[43.667,113.833]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[59.5,65],[24.5,0.833],[0,0],[0,0]],"o":[[-13.5,-8.833],[-14,81.917],[0,0],[0,0]],"v":[[0.5,-60],[-34,-84.917],[21.333,105],[43.667,113.833]],"c":true}],"e":[{"i":[[59.5,65],[31.5,9.5],[0,0],[0,0]],"o":[[-17.5,-18.5],[-20,111.5],[0,0],[0,0]],"v":[[3.5,-55.5],[-40.5,-97.5],[40,99],[53,98.5]],"c":true}]},{"t":21}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":22,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":49,"ty":4,"nm":"shape08","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":14,"s":[{"i":[[12.941,-15.599],[0,0],[0,0],[83.75,8]],"o":[[79.441,7.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-69.441,34.099],[-25.775,99.99],[28.103,100.338],[-44.25,7]],"c":true}],"e":[{"i":[[8.691,-16.849],[0,0],[0,0],[72.75,-17.75]],"o":[[56.191,5.151],[0,0],[0,0],[-3.25,7.25]],"v":[[-52.691,34.349],[-25.775,99.99],[28.103,100.338],[-38.25,1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":16,"s":[{"i":[[8.691,-16.849],[0,0],[0,0],[72.75,-17.75]],"o":[[56.191,5.151],[0,0],[0,0],[-3.25,7.25]],"v":[[-52.691,34.349],[-25.775,99.99],[28.103,100.338],[-38.25,1.25]],"c":true}],"e":[{"i":[[12.941,-15.599],[0,0],[0,0],[52.75,84]],"o":[[24.941,75.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-19.941,-18.401],[-25.775,99.99],[28.103,100.338],[1.75,-49.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[12.941,-15.599],[0,0],[0,0],[52.75,84]],"o":[[24.941,75.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-19.941,-18.401],[-25.775,99.99],[28.103,100.338],[1.75,-49.5]],"c":true}],"e":[{"i":[[17.441,9.401],[0,0],[0,0],[-15.75,109.5]],"o":[[-43.059,97.901],[0,0],[0,0],[-9.25,-6]],"v":[[-74.441,-110.401],[-25.775,99.99],[28.103,100.338],[-31.25,-80]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[17.441,9.401],[0,0],[0,0],[-15.75,109.5]],"o":[[-43.059,97.901],[0,0],[0,0],[-9.25,-6]],"v":[[-74.441,-110.401],[-25.775,99.99],[28.103,100.338],[-31.25,-80]],"c":true}],"e":[{"i":[[19.441,0.401],[0,0],[0,0],[40.75,84.5]],"o":[[47.941,91.401],[0,0],[0,0],[-8.75,0]],"v":[[-117.941,-123.901],[-25.775,99.99],[21.103,99.838],[-66.75,-125]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[19.441,0.401],[0,0],[0,0],[40.75,84.5]],"o":[[47.941,91.401],[0,0],[0,0],[-8.75,0]],"v":[[-117.941,-123.901],[-25.775,99.99],[21.103,99.838],[-66.75,-125]],"c":true}],"e":[{"i":[[19.941,-1.099],[0,0],[0,0],[15.75,91.5]],"o":[[23.441,98.401],[0,0],[0,0],[-8.75,0]],"v":[[-95.441,-125.401],[-25.775,99.99],[21.103,99.838],[-48.25,-126]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":26,"s":[{"i":[[19.941,-1.099],[0,0],[0,0],[15.75,91.5]],"o":[[23.441,98.401],[0,0],[0,0],[-8.75,0]],"v":[[-95.441,-125.401],[-25.775,99.99],[21.103,99.838],[-48.25,-126]],"c":true}],"e":[{"i":[[19.941,-1.099],[0,0],[0,0],[29.25,82.5]],"o":[[31.441,93.901],[0,0],[0,0],[-8.75,0]],"v":[[-105.441,-125.401],[-25.775,99.99],[21.103,99.838],[-59.25,-126]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.06,0.06,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":50,"ty":4,"nm":"shape07","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[57.25,-20.75],[0.122,-1.298],[-13,1.75],[0,0]],"o":[[84.25,18.75],[12.319,-0.042],[15.5,-74],[0,0]],"v":[[-52.25,4.75],[14.181,102.542],[34.5,103.5],[15.5,-1.5]],"c":true}],"e":[{"i":[[57.25,-20.75],[0.122,-1.298],[-13,1.75],[0,0]],"o":[[84.25,18.75],[12.32,-0.042],[15.5,-74],[0,0]],"v":[[-29.25,-16.75],[32.681,103.042],[51.5,102.5],[15.5,-1.5]],"c":true}]},{"t":16}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":16,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":51,"ty":4,"nm":"shape06","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":14,"s":[{"i":[[12.941,-15.599],[0,0],[0,0],[83.75,8]],"o":[[79.441,7.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-69.441,34.099],[-25.775,99.99],[28.103,100.338],[-44.25,7]],"c":true}],"e":[{"i":[[8.691,-16.849],[0,0],[0,0],[72.75,-17.75]],"o":[[56.191,5.151],[0,0],[0,0],[-3.25,7.25]],"v":[[-52.691,34.349],[-25.775,99.99],[28.103,100.338],[-38.25,1.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":16,"s":[{"i":[[8.691,-16.849],[0,0],[0,0],[72.75,-17.75]],"o":[[56.191,5.151],[0,0],[0,0],[-3.25,7.25]],"v":[[-52.691,34.349],[-25.775,99.99],[28.103,100.338],[-38.25,1.25]],"c":true}],"e":[{"i":[[12.941,-15.599],[0,0],[0,0],[52.75,84]],"o":[[24.941,75.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-19.941,-18.401],[-25.775,99.99],[28.103,100.338],[1.75,-49.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":18,"s":[{"i":[[12.941,-15.599],[0,0],[0,0],[52.75,84]],"o":[[24.941,75.901],[0,0],[0,0],[-4.25,4.5]],"v":[[-19.941,-18.401],[-25.775,99.99],[28.103,100.338],[1.75,-49.5]],"c":true}],"e":[{"i":[[17.441,9.401],[0,0],[0,0],[-15.75,109.5]],"o":[[-43.059,97.901],[0,0],[0,0],[-9.25,-6]],"v":[[-74.441,-110.401],[-25.775,99.99],[28.103,100.338],[-31.25,-80]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":21,"s":[{"i":[[17.441,9.401],[0,0],[0,0],[-15.75,109.5]],"o":[[-43.059,97.901],[0,0],[0,0],[-9.25,-6]],"v":[[-74.441,-110.401],[-25.775,99.99],[28.103,100.338],[-31.25,-80]],"c":true}],"e":[{"i":[[19.441,0.401],[0,0],[0,0],[40.75,84.5]],"o":[[47.941,91.401],[0,0],[0,0],[-8.75,0]],"v":[[-117.941,-123.901],[-25.775,99.99],[21.103,99.838],[-66.75,-125]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":24,"s":[{"i":[[19.441,0.401],[0,0],[0,0],[40.75,84.5]],"o":[[47.941,91.401],[0,0],[0,0],[-8.75,0]],"v":[[-117.941,-123.901],[-25.775,99.99],[21.103,99.838],[-66.75,-125]],"c":true}],"e":[{"i":[[19.941,-1.099],[0,0],[0,0],[15.75,91.5]],"o":[[23.441,98.401],[0,0],[0,0],[-8.75,0]],"v":[[-95.441,-125.401],[-25.775,99.99],[21.103,99.838],[-48.25,-126]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":26,"s":[{"i":[[19.941,-1.099],[0,0],[0,0],[15.75,91.5]],"o":[[23.441,98.401],[0,0],[0,0],[-8.75,0]],"v":[[-95.441,-125.401],[-25.775,99.99],[21.103,99.838],[-48.25,-126]],"c":true}],"e":[{"i":[[18.941,-0.599],[0,0],[0,0],[29.25,82.5]],"o":[[31.441,93.901],[0,0],[0,0],[-8.75,0]],"v":[[-106.941,-126.401],[-25.775,99.99],[18.103,100.338],[-54.75,-126.5]],"c":true}]},{"t":27}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":14,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":52,"ty":4,"nm":"shape05","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-12.5,-74],[-17.625,-54.526],[-19.028,-49.194],[-20.566,-43.349],[-21.426,-40.08],[-22.222,-37.058],[-22.5,-36],[-12,-19.5],[4,-38.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-13.5,-42],[-8,9]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6,-7],[-13.5,-57.5]],"v":[[-64.5,-94],[-66.294,-73.501],[-66.785,-67.888],[-67.323,-61.736],[-67.624,-58.295],[-67.903,-55.113],[-68,-54],[-12,-19.5],[4,-38.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-13.5,-42],[-8,9]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6,-7],[-13.5,-57.5]],"v":[[-64.5,-94],[-66.294,-73.501],[-66.785,-67.888],[-67.323,-61.736],[-67.624,-58.295],[-67.903,-55.113],[-68,-54],[-12,-19.5],[4,-38.5]],"c":true}],"e":[{"i":[[0,0],[0.096,-40.549],[-2.021,-0.85],[-2.833,-1.624],[-2.332,-1.397],[-2.083,-1.237],[-1.117,-0.655],[-12.75,-45.75],[-8,9]],"o":[[0,0],[1.613,0.124],[2.149,0.904],[1.926,1.104],[1.802,1.08],[1.041,0.618],[1.5,-25.5],[6,-7],[-13.5,-57.5]],"v":[[-63.75,-95.75],[-105.242,-52.451],[-99.839,-50.968],[-92.424,-47.15],[-86.056,-43.39],[-80.237,-39.911],[-77,-38],[-12.75,-21.25],[3.5,-40.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0.096,-40.549],[-2.021,-0.85],[-2.833,-1.624],[-2.332,-1.397],[-2.083,-1.237],[-1.117,-0.655],[-12.75,-45.75],[-8,9]],"o":[[0,0],[1.613,0.124],[2.149,0.904],[1.926,1.104],[1.802,1.08],[1.041,0.618],[1.5,-25.5],[6,-7],[-13.5,-57.5]],"v":[[-63.75,-95.75],[-105.242,-52.451],[-99.839,-50.968],[-92.424,-47.15],[-86.056,-43.39],[-80.237,-39.911],[-77,-38],[-12.75,-21.25],[3.5,-40.75]],"c":true}],"e":[{"i":[[0,0],[0.191,-81.099],[-3.562,0.054],[-3.916,0.177],[-2.622,0.087],[-1.959,0.009],[-0.955,-0.016],[-12,-49.5],[-8,9]],"o":[[0,0],[3.226,0.249],[3.787,-0.057],[2.662,-0.12],[2.026,-0.067],[0.979,-0.005],[3,-51],[6,-7],[-13.5,-57.5]],"v":[[-63,-97.5],[-124.691,-21.401],[-114.455,-21.156],[-102.836,-21.565],[-94.89,-21.893],[-88.903,-22.016],[-86,-22],[-13.5,-23],[3,-43]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0.191,-81.099],[-3.562,0.054],[-3.916,0.177],[-2.622,0.087],[-1.959,0.009],[-0.955,-0.016],[-12,-49.5],[-8,9]],"o":[[0,0],[3.226,0.249],[3.787,-0.057],[2.662,-0.12],[2.026,-0.067],[0.979,-0.005],[3,-51],[6,-7],[-13.5,-57.5]],"v":[[-63,-97.5],[-124.691,-21.401],[-114.455,-21.156],[-102.836,-21.565],[-94.89,-21.893],[-88.903,-22.016],[-86,-22],[-13.5,-23],[3,-43]],"c":true}],"e":[{"i":[[33,-28.5],[-22.859,-29.275],[-15.044,-4.898],[0,0],[0,0],[20.03,19.035],[-6,12],[0,0],[0,0]],"o":[[-20.814,17.976],[12.453,15.948],[15.993,5.207],[0,0],[0,0],[-9.259,-8.799],[11.595,-23.191],[0,0],[0,0]],"v":[[-126.5,-74.5],[-129.191,2.599],[-83.889,32.306],[-55.025,38.24],[-21.397,9.838],[-78.761,-18.699],[-88,-47.5],[-51.5,-63.5],[-37,-90.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[33,-28.5],[-22.859,-29.275],[-15.044,-4.898],[0,0],[0,0],[20.03,19.035],[-6,12],[0,0],[0,0]],"o":[[-20.814,17.976],[12.453,15.948],[15.993,5.207],[0,0],[0,0],[-9.259,-8.799],[11.595,-23.191],[0,0],[0,0]],"v":[[-126.5,-74.5],[-129.191,2.599],[-83.889,32.306],[-55.025,38.24],[-21.397,9.838],[-78.761,-18.699],[-88,-47.5],[-51.5,-63.5],[-37,-90.5]],"c":true}],"e":[{"i":[[8,-21.5],[-25.059,-13.849],[-18.487,-9.276],[0,0],[0,0],[20.03,19.034],[17.75,3],[0,0],[0,0]],"o":[[-9.591,25.776],[14.478,8.001],[31.018,15.564],[0,0],[0,0],[-9.989,-16.801],[-38.467,-6.501],[0,0],[0,0]],"v":[[-124.75,-46.75],[-100.441,21.599],[-38.513,45.276],[-25.775,99.99],[28.103,100.338],[9.739,27.051],[-63.75,-7.5],[-88.5,-57.75],[-115.5,-66.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[8,-21.5],[-25.059,-13.849],[-18.487,-9.276],[0,0],[0,0],[20.03,19.034],[17.75,3],[0,0],[0,0]],"o":[[-9.591,25.776],[14.478,8.001],[31.018,15.564],[0,0],[0,0],[-9.989,-16.801],[-38.467,-6.501],[0,0],[0,0]],"v":[[-124.75,-46.75],[-100.441,21.599],[-38.513,45.276],[-25.775,99.99],[28.103,100.338],[9.739,27.051],[-63.75,-7.5],[-88.5,-57.75],[-115.5,-66.25]],"c":true}],"e":[{"i":[[0,0],[-25.059,-11.599],[-16.783,-11.221],[0,0],[0,0],[18.761,21.449],[17.953,1.33],[16,5.25],[0,0]],"o":[[0,0],[33.441,9.401],[25.013,16.724],[0,0],[0,0],[-11.193,-12.797],[-20.25,-1.5],[-9.058,-2.972],[0,0]],"v":[[-112.75,12.75],[-80.441,34.599],[-34.513,48.276],[-25.775,99.99],[28.103,100.338],[12.239,31.551],[-35.25,6.5],[-68.5,2.25],[-79,-2.25]],"c":true}]},{"t":13}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.22,0.07,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":53,"ty":4,"nm":"shape04","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[48.906,11.54],[0,0],[0,0],[-16.641,120.05]],"o":[[-44.5,-10.5],[0,0],[0,0],[14,-101]],"v":[[-89.5,-14.5],[-138,-58],[-133,113],[-14,119]],"c":true}],"e":[{"i":[[38.408,-23.277],[0,0],[0,0],[-16.641,120.05]],"o":[[-33,20],[0,0],[0,0],[14,-101]],"v":[[-45,6],[-131,8],[-133,113],[11,132]],"c":true}]},{"t":13}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":12,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":54,"ty":4,"nm":"shape03","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-12.5,-74],[-17.625,-54.526],[-19.028,-49.194],[-20.566,-43.349],[-21.426,-40.08],[-22.222,-37.058],[-22.5,-36],[-12,-19.5],[4,-38.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-13.5,-42],[-8,9]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6,-7],[-13.5,-57.5]],"v":[[-64.5,-94],[-66.294,-73.501],[-66.785,-67.888],[-67.323,-61.736],[-67.624,-58.295],[-67.903,-55.113],[-68,-54],[-12,-19.5],[4,-38.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-13.5,-42],[-8,9]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6,-7],[-13.5,-57.5]],"v":[[-64.5,-94],[-66.294,-73.501],[-66.785,-67.888],[-67.323,-61.736],[-67.624,-58.295],[-67.903,-55.113],[-68,-54],[-12,-19.5],[4,-38.5]],"c":true}],"e":[{"i":[[0,0],[0.096,-40.549],[-2.021,-0.85],[-2.833,-1.624],[-2.332,-1.397],[-2.083,-1.237],[-1.117,-0.655],[-12.75,-45.75],[-8,9]],"o":[[0,0],[1.613,0.124],[2.149,0.904],[1.926,1.104],[1.802,1.08],[1.041,0.618],[1.5,-25.5],[6,-7],[-13.5,-57.5]],"v":[[-63.75,-95.75],[-105.242,-52.451],[-99.839,-50.968],[-92.424,-47.15],[-86.056,-43.39],[-80.237,-39.911],[-77,-38],[-12.75,-21.25],[3.5,-40.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0.096,-40.549],[-2.021,-0.85],[-2.833,-1.624],[-2.332,-1.397],[-2.083,-1.237],[-1.117,-0.655],[-12.75,-45.75],[-8,9]],"o":[[0,0],[1.613,0.124],[2.149,0.904],[1.926,1.104],[1.802,1.08],[1.041,0.618],[1.5,-25.5],[6,-7],[-13.5,-57.5]],"v":[[-63.75,-95.75],[-105.242,-52.451],[-99.839,-50.968],[-92.424,-47.15],[-86.056,-43.39],[-80.237,-39.911],[-77,-38],[-12.75,-21.25],[3.5,-40.75]],"c":true}],"e":[{"i":[[0,0],[0.191,-81.099],[-3.562,0.054],[-3.916,0.177],[-2.622,0.087],[-1.959,0.009],[-0.955,-0.016],[-12,-49.5],[-8,9]],"o":[[0,0],[3.226,0.249],[3.787,-0.057],[2.662,-0.12],[2.026,-0.067],[0.979,-0.005],[3,-51],[6,-7],[-13.5,-57.5]],"v":[[-63,-97.5],[-124.691,-21.401],[-114.455,-21.156],[-102.836,-21.565],[-94.89,-21.893],[-88.903,-22.016],[-86,-22],[-13.5,-23],[3,-43]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0.191,-81.099],[-3.562,0.054],[-3.916,0.177],[-2.622,0.087],[-1.959,0.009],[-0.955,-0.016],[-12,-49.5],[-8,9]],"o":[[0,0],[3.226,0.249],[3.787,-0.057],[2.662,-0.12],[2.026,-0.067],[0.979,-0.005],[3,-51],[6,-7],[-13.5,-57.5]],"v":[[-63,-97.5],[-124.691,-21.401],[-114.455,-21.156],[-102.836,-21.565],[-94.89,-21.893],[-88.903,-22.016],[-86,-22],[-13.5,-23],[3,-43]],"c":true}],"e":[{"i":[[33,-28.5],[-22.859,-29.275],[-15.044,-4.898],[0,0],[0,0],[20.03,19.035],[-6,12],[0,0],[0,0]],"o":[[-20.814,17.976],[12.453,15.948],[15.993,5.207],[0,0],[0,0],[-9.259,-8.799],[11.595,-23.191],[0,0],[0,0]],"v":[[-126.5,-74.5],[-129.191,2.599],[-83.889,32.306],[-55.025,38.24],[-21.397,9.838],[-78.761,-18.699],[-88,-47.5],[-51.5,-63.5],[-37,-90.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[33,-28.5],[-22.859,-29.275],[-15.044,-4.898],[0,0],[0,0],[20.03,19.035],[-6,12],[0,0],[0,0]],"o":[[-20.814,17.976],[12.453,15.948],[15.993,5.207],[0,0],[0,0],[-9.259,-8.799],[11.595,-23.191],[0,0],[0,0]],"v":[[-126.5,-74.5],[-129.191,2.599],[-83.889,32.306],[-55.025,38.24],[-21.397,9.838],[-78.761,-18.699],[-88,-47.5],[-51.5,-63.5],[-37,-90.5]],"c":true}],"e":[{"i":[[8,-21.5],[-25.059,-13.849],[-18.487,-9.276],[0,0],[0,0],[20.03,19.034],[17.75,3],[0,0],[0,0]],"o":[[-9.591,25.776],[14.478,8.001],[31.018,15.564],[0,0],[0,0],[-9.989,-16.801],[-38.467,-6.501],[0,0],[0,0]],"v":[[-124.75,-46.75],[-100.441,21.599],[-38.513,45.276],[-25.775,99.99],[28.103,100.338],[9.739,27.051],[-63.75,-7.5],[-88.5,-57.75],[-115.5,-66.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[8,-21.5],[-25.059,-13.849],[-18.487,-9.276],[0,0],[0,0],[20.03,19.034],[17.75,3],[0,0],[0,0]],"o":[[-9.591,25.776],[14.478,8.001],[31.018,15.564],[0,0],[0,0],[-9.989,-16.801],[-38.467,-6.501],[0,0],[0,0]],"v":[[-124.75,-46.75],[-100.441,21.599],[-38.513,45.276],[-25.775,99.99],[28.103,100.338],[9.739,27.051],[-63.75,-7.5],[-88.5,-57.75],[-115.5,-66.25]],"c":true}],"e":[{"i":[[0,0],[-25.059,-11.599],[-16.783,-11.221],[0,0],[0,0],[18.761,21.449],[17.953,1.33],[16,5.25],[0,0]],"o":[[0,0],[33.441,9.401],[25.013,16.724],[0,0],[0,0],[-11.193,-12.797],[-20.25,-1.5],[-9.058,-2.972],[0,0]],"v":[[-112.75,12.75],[-80.441,34.599],[-34.513,48.276],[-25.775,99.99],[28.103,100.338],[12.239,31.551],[-35.25,6.5],[-68.5,2.25],[-79,-2.25]],"c":true}]},{"t":13}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.22,0.07,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":55,"ty":4,"nm":"shape02","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0.01,-0.117],[2.33,-20.383],[0,0]],"o":[[0,0],[-0.619,7.096],[17.25,-22],[0,0]],"v":[[-66.5,-117.75],[-67.074,-110.482],[-71.25,-70.25],[-11,-77]],"c":true}],"e":[{"i":[[0,0],[0.001,-0.101],[-13.875,-7.375],[-8.5,1]],"o":[[0,0],[5.85,3.527],[-1.25,-44],[-18.875,-9.5]],"v":[[-95.625,-114.75],[-110.197,-50.72],[-83.625,-36.375],[-26.25,-86.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0.001,-0.101],[-13.875,-7.375],[-8.5,1]],"o":[[0,0],[5.85,3.527],[-1.25,-44],[-18.875,-9.5]],"v":[[-95.625,-114.75],[-110.197,-50.72],[-83.625,-36.375],[-26.25,-86.75]],"c":true}],"e":[{"i":[[0,0],[-0.007,-0.085],[-13,1.75],[-10.25,4]],"o":[[0,0],[12.319,-0.042],[-19.75,-66],[-37.75,-19]],"v":[[-128.75,-105.75],[-135.319,-16.458],[-84.5,-19],[-47.5,-97.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-0.007,-0.085],[-13,1.75],[-10.25,4]],"o":[[0,0],[12.319,-0.042],[-19.75,-66],[-37.75,-19]],"v":[[-128.75,-105.75],[-135.319,-16.458],[-84.5,-19],[-47.5,-97.5]],"c":true}],"e":[{"i":[[0,0],[-0.023,-0.271],[-13,1.75],[-4.5,36.5]],"o":[[0,0],[12.319,-0.042],[-116,-34],[-45,8]],"v":[[-170.75,-11.75],[-63.319,58.042],[-14,9.5],[-102,-94.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[-0.023,-0.271],[-13,1.75],[-4.5,36.5]],"o":[[0,0],[12.319,-0.042],[-116,-34],[-45,8]],"v":[[-170.75,-11.75],[-63.319,58.042],[-14,9.5],[-102,-94.5]],"c":true}],"e":[{"i":[[57.25,-20.75],[0.375,-1.413],[-13,1.75],[0,0]],"o":[[76.75,41.25],[12.32,-0.042],[15.5,-74],[0,0]],"v":[[-71.25,-11.25],[-28.82,102.542],[34.5,103.5],[15.5,-1.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[57.25,-20.75],[0.375,-1.413],[-13,1.75],[0,0]],"o":[[76.75,41.25],[12.32,-0.042],[15.5,-74],[0,0]],"v":[[-71.25,-11.25],[-28.82,102.542],[34.5,103.5],[15.5,-1.5]],"c":true}],"e":[{"i":[[57.25,-20.75],[0.122,-1.298],[-13,1.75],[0,0]],"o":[[47.142,7.572],[12.32,-0.042],[15.5,-74],[0,0]],"v":[[-52.25,4.75],[-2.819,103.042],[34.5,103.5],[15.5,-1.5]],"c":true}]},{"t":13}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":8,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":56,"ty":4,"nm":"shape01","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-12.5,-74],[-17.625,-54.526],[-19.028,-49.194],[-20.566,-43.349],[-21.426,-40.08],[-22.222,-37.058],[-22.5,-36],[-12,-19.5],[4,-38.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-13.5,-42],[-8,9]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6,-7],[-13.5,-57.5]],"v":[[-64.5,-94],[-66.294,-73.501],[-66.785,-67.888],[-67.323,-61.736],[-67.624,-58.295],[-67.903,-55.113],[-68,-54],[-12,-19.5],[4,-38.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-13.5,-42],[-8,9]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6,-7],[-13.5,-57.5]],"v":[[-64.5,-94],[-66.294,-73.501],[-66.785,-67.888],[-67.323,-61.736],[-67.624,-58.295],[-67.903,-55.113],[-68,-54],[-12,-19.5],[4,-38.5]],"c":true}],"e":[{"i":[[0,0],[0.096,-40.549],[-2.021,-0.85],[-2.833,-1.624],[-2.332,-1.397],[-2.083,-1.237],[-1.117,-0.655],[-12.75,-45.75],[-8,9]],"o":[[0,0],[1.613,0.124],[2.149,0.904],[1.926,1.104],[1.802,1.08],[1.041,0.618],[1.5,-25.5],[6,-7],[-13.5,-57.5]],"v":[[-63.75,-95.75],[-105.242,-52.451],[-99.839,-50.968],[-92.424,-47.15],[-86.056,-43.39],[-80.237,-39.911],[-77,-38],[-12.75,-21.25],[3.5,-40.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0.096,-40.549],[-2.021,-0.85],[-2.833,-1.624],[-2.332,-1.397],[-2.083,-1.237],[-1.117,-0.655],[-12.75,-45.75],[-8,9]],"o":[[0,0],[1.613,0.124],[2.149,0.904],[1.926,1.104],[1.802,1.08],[1.041,0.618],[1.5,-25.5],[6,-7],[-13.5,-57.5]],"v":[[-63.75,-95.75],[-105.242,-52.451],[-99.839,-50.968],[-92.424,-47.15],[-86.056,-43.39],[-80.237,-39.911],[-77,-38],[-12.75,-21.25],[3.5,-40.75]],"c":true}],"e":[{"i":[[0,0],[0.191,-81.099],[-3.562,0.054],[-3.916,0.177],[-2.622,0.087],[-1.959,0.009],[-0.955,-0.016],[-12,-49.5],[-8,9]],"o":[[0,0],[3.226,0.249],[3.787,-0.057],[2.662,-0.12],[2.026,-0.067],[0.979,-0.005],[3,-51],[6,-7],[-13.5,-57.5]],"v":[[-63,-97.5],[-124.691,-21.401],[-114.455,-21.156],[-102.836,-21.565],[-94.89,-21.893],[-88.903,-22.016],[-86,-22],[-13.5,-23],[3,-43]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0.191,-81.099],[-3.562,0.054],[-3.916,0.177],[-2.622,0.087],[-1.959,0.009],[-0.955,-0.016],[-12,-49.5],[-8,9]],"o":[[0,0],[3.226,0.249],[3.787,-0.057],[2.662,-0.12],[2.026,-0.067],[0.979,-0.005],[3,-51],[6,-7],[-13.5,-57.5]],"v":[[-63,-97.5],[-124.691,-21.401],[-114.455,-21.156],[-102.836,-21.565],[-94.89,-21.893],[-88.903,-22.016],[-86,-22],[-13.5,-23],[3,-43]],"c":true}],"e":[{"i":[[33,-28.5],[-22.859,-29.275],[-15.044,-4.898],[0,0],[0,0],[20.03,19.035],[-6,12],[0,0],[0,0]],"o":[[-20.814,17.976],[12.453,15.948],[15.993,5.207],[0,0],[0,0],[-9.259,-8.799],[11.595,-23.191],[0,0],[0,0]],"v":[[-126.5,-74.5],[-129.191,2.599],[-83.889,32.306],[-55.025,38.24],[-21.397,9.838],[-78.761,-18.699],[-88,-47.5],[-51.5,-63.5],[-37,-90.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[33,-28.5],[-22.859,-29.275],[-15.044,-4.898],[0,0],[0,0],[20.03,19.035],[-6,12],[0,0],[0,0]],"o":[[-20.814,17.976],[12.453,15.948],[15.993,5.207],[0,0],[0,0],[-9.259,-8.799],[11.595,-23.191],[0,0],[0,0]],"v":[[-126.5,-74.5],[-129.191,2.599],[-83.889,32.306],[-55.025,38.24],[-21.397,9.838],[-78.761,-18.699],[-88,-47.5],[-51.5,-63.5],[-37,-90.5]],"c":true}],"e":[{"i":[[8,-21.5],[-25.059,-13.849],[-18.487,-9.276],[0,0],[0,0],[20.03,19.034],[17.75,3],[0,0],[0,0]],"o":[[-9.591,25.776],[14.478,8.001],[31.018,15.564],[0,0],[0,0],[-9.989,-16.801],[-38.467,-6.501],[0,0],[0,0]],"v":[[-124.75,-46.75],[-100.441,21.599],[-38.513,45.276],[-25.775,99.99],[28.103,100.338],[9.739,27.051],[-63.75,-7.5],[-88.5,-57.75],[-115.5,-66.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[8,-21.5],[-25.059,-13.849],[-18.487,-9.276],[0,0],[0,0],[20.03,19.034],[17.75,3],[0,0],[0,0]],"o":[[-9.591,25.776],[14.478,8.001],[31.018,15.564],[0,0],[0,0],[-9.989,-16.801],[-38.467,-6.501],[0,0],[0,0]],"v":[[-124.75,-46.75],[-100.441,21.599],[-38.513,45.276],[-25.775,99.99],[28.103,100.338],[9.739,27.051],[-63.75,-7.5],[-88.5,-57.75],[-115.5,-66.25]],"c":true}],"e":[{"i":[[0,0],[-25.059,-11.599],[-16.783,-11.221],[0,0],[0,0],[18.761,21.449],[17.953,1.33],[16,5.25],[0,0]],"o":[[0,0],[33.441,9.401],[25.013,16.724],[0,0],[0,0],[-11.193,-12.797],[-20.25,-1.5],[-9.058,-2.972],[0,0]],"v":[[-112.75,12.75],[-80.441,34.599],[-34.513,48.276],[-25.775,99.99],[28.103,100.338],[12.239,31.551],[-35.25,6.5],[-68.5,2.25],[-79,-2.25]],"c":true}]},{"t":13}]},"nm":" "},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":14,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":57,"ty":4,"nm":"intro 16","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[84.759,84.147]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 2"},{"ty":"tr","p":{"k":[15.713,198.74],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":7,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":58,"ty":4,"nm":"intro 12","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[5,-64],[-58,-47.5],[-50,51.5],[5.5,59]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":7,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":59,"ty":4,"nm":"intro 11","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[84.759,84.147]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 2"},{"ty":"tr","p":{"k":[15.713,198.74],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":7,"op":8,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":60,"ty":4,"nm":"intro 15","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15,163.333],[-29.167,191.667],[-29.167,240],[14.167,267.5],[56.667,242.5],[56.667,190.833]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":7,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":61,"ty":4,"nm":"intro 9","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.5,-75],[-63.5,-25.5],[69,52],[77,67]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":7,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":62,"ty":4,"nm":"intro 8","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15,163.333],[-29.167,191.667],[-29.167,240],[14.167,267.5],[56.667,242.5],[56.667,190.833]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":7,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":63,"ty":4,"nm":"intro 14","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.833,214.167],[-15,251.667],[13.333,288.333],[45.833,252.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[0,0],"e":[-4.1,-88],"to":[-0.68333333730698,-14.6666669845581],"ti":[0.68333333730698,14.6666669845581]},{"t":5}],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":4,"s":[100,100],"e":[127.8,127.8]},{"t":5}],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":6,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":64,"ty":4,"nm":"intro 6","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[227,184.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27.75,96.5],[-18,97],[-18.5,205.5],[27.75,201]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":6,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":65,"ty":4,"nm":"intro 5","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[15.833,214.167],[-15,251.667],[13.333,288.333],[45.833,252.5]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[0,0],"e":[-4.1,-88],"to":[-0.68333333730698,-14.6666669845581],"ti":[0.68333333730698,14.6666669845581]},{"t":5}],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":4,"s":[100,100],"e":[127.8,127.8]},{"t":5}],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":4,"op":6,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":66,"ty":4,"nm":"intro 4","parent":70,"td":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[13.333,268.929],[3.571,297.024],[23.333,296.31]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.22,0.07,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[0,0],"e":[-4,-165],"to":[-0.66666668653488,-27.5],"ti":[0.66666668653488,27.5]},{"t":3}],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":2,"s":[100,100],"e":[151.2,151.2]},{"t":3}],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":4,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":67,"ty":4,"nm":"intro 3","parent":70,"tt":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,299,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[5.25,62.25],[-14,100],[1.25,102.25]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[3.75,37.75],[-17.75,84.25],[17,85.75]],"c":true}]},{"t":3}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":4,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":68,"ty":4,"nm":"intro 2","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[240,97.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[15,269.722],[3.611,297.5],[25.278,296.111]],"c":true}},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[0,0],"e":[-6.7,-155],"to":[-1.11666667461395,-25.8333339691162],"ti":[1.11666667461395,25.8333339691162]},{"t":3}],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":2,"s":[100,100],"e":[147.5,147.5]},{"t":3}],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":4,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":69,"ty":4,"nm":"intro","parent":70,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[258.25,340.5,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.852,20.852]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-3.574,51.426],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":1,"op":2,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":70,"ty":1,"nm":"ResizerTemp","parent":71,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":34,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":71,"ty":1,"nm":"White Solid 51","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":34,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":34,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/W.json b/example/shared/src/commonMain/composeResources/files/mobilo/W.json new file mode 100644 index 00000000..7f246d6f --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/W.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"splashy 25","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[328.905,392.523,0],"e":[386.905,316.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":34}]},"a":{"k":[-136,-191,0]},"s":{"k":[49,49,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[4],"e":[0]},{"t":26}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":15,"op":26,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"splashy 24","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[338.905,383.523,0],"e":[358.905,283.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":28}]},"a":{"k":[-136,-191,0]},"s":{"k":[38,38,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[0]},{"t":26}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":15,"op":26,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"splashy 23","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[315.905,383.523,0],"e":[305.905,263.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":32}]},"a":{"k":[-136,-191,0]},"s":{"k":[38,38,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[0]},{"t":26}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":15,"op":26,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"splashy 22","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[298.905,393.523,0],"e":[248.905,338.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":32}]},"a":{"k":[-136,-191,0]},"s":{"k":[38,38,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[5],"e":[0]},{"t":25}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":15,"op":26,"st":15,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"splashy 20","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[168.905,392.523,0],"e":[136.905,266.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":31}]},"a":{"k":[-136,-191,0]},"s":{"k":[49,49,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[4],"e":[0]},{"t":26}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":12,"op":26,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"splashy 21","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[188.905,383.523,0],"e":[198.905,313.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25}]},"a":{"k":[-136,-191,0]},"s":{"k":[38,38,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[0]},{"t":25}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":12,"op":26,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"splashy 19","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[155.905,393.523,0],"e":[95.905,323.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":29}]},"a":{"k":[-136,-191,0]},"s":{"k":[38,38,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[0]},{"t":25}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":12,"op":26,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"splashy 18","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[198.905,393.523,0],"e":[228.905,278.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":29}]},"a":{"k":[-136,-191,0]},"s":{"k":[38,38,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[5],"e":[0]},{"t":22}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":12,"op":26,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"W4","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[52.023,-9.593],[46.423,-4.165],[44.149,0],[98.229,0],[101.571,-9.593]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[111.523,-226.593],[68.923,-66.165],[44.149,0],[98.229,0],[161.071,-226.593]],"c":true}]},{"t":25}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":17,"op":35,"st":13,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"W3","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[93.923,-4.165],[90.011,-8.593],[42.88,-8.593],[44.247,-3.543],[44.149,0],[98.229,0]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[90.719,-20.551],[73.756,-62.693],[26.625,-62.693],[32.576,-41.001],[44.149,0],[98.229,0]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[90.719,-20.551],[73.756,-62.693],[26.625,-62.693],[32.576,-41.001],[44.149,0],[98.229,0]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.923,-66.165],[24.511,-226.593],[-22.62,-226.593],[1.247,-162.543],[44.149,0],[98.229,0]],"c":true}]},{"t":22}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":16,"op":35,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"triggerw5","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p4_1_0p167_0p167"],"t":5,"s":[90],"e":[0]},{"t":12}]},"p":{"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p5_1_0p167_0p167","t":5,"s":[245,231,0],"e":[295,151,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":10,"s":[295,151,0],"e":[295,400,0],"to":[0,0,0],"ti":[0,0,0]},{"t":15}]},"a":{"k":[-98,101,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[26.737,-48.144],[8.679,1.916],[0,0]],"o":[[0,0],[-7.932,-1.966],[25.124,-50.497],[0,0]],"v":[[28.062,-24.977],[25.259,51.977],[-26.22,44.269],[-25.938,-24.977]],"c":true}]},{"i":{"x":0.18,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p18_1_0p167_0p167","t":8,"s":[{"i":[[0,0],[26.737,-48.144],[8.679,1.916],[0,0]],"o":[[0,0],[-7.932,-1.966],[25.124,-50.497],[0,0]],"v":[[28.062,-24.977],[25.259,51.977],[-26.22,44.269],[-25.938,-24.977]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,-80.5],[27,19.5],[-27,19.5],[-27,-80.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,-80.5],[27,19.5],[-27,19.5],[-27,-80.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}]},{"t":15}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,81.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":5,"op":16,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 8","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[458]},{"t":17}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[352.5,138.5,0],"e":[480.5,179.5,0],"to":[0,0,0],"ti":[-86.5,-155.5,0]},{"t":17}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":14,"s":[41,41,100],"e":[19,19,100]},{"t":17}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":8,"op":18,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 7","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":8,"s":[0],"e":[-547]},{"t":18}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[344.5,154.5,0],"e":[435.5,248.5,0],"to":[0,0,0],"ti":[-19.5,-184.5,0]},{"t":18}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":11,"s":[73,73,100],"e":[19,19,100]},{"t":18}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":8,"op":19,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 6","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p14_1_0p167_0p167"],"t":7,"s":[0],"e":[458]},{"t":16}]},"p":{"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p6_1_0p167_0p167","t":7,"s":[377.5,178.5,0],"e":[420.5,50.5,0],"to":[0,0,0],"ti":[-16.7630443572998,-0.22299768030643,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"n":"0p833_0p833_0p4_0","t":16,"s":[420.5,50.5,0],"e":[442.5,125.5,0],"to":[9.51230716705322,0.12654159963131,0],"ti":[0,-1.66666662693024,0]},{"t":21}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[26,26,100],"e":[9,9,100]},{"t":21}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":7,"op":22,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"splashy 8","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p3_1_0p167_0p167","t":7,"s":[389.905,175.523,0],"e":[372.905,55.523,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"n":"0p833_0p833_0p7_0","t":16,"s":[372.905,55.523,0],"e":[372.905,165.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20}]},"a":{"k":[-136,-191,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0.7]},"n":["0p833_0p833_0p7_0","0p833_0p833_0p7_0","0p833_0p833_0p7_0p7"],"t":16,"s":[59,59,100],"e":[25,25,100]},{"t":20}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[10,10]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":9,"op":21,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"splashy 7","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p3_1_0p167_0p167","t":7,"s":[329.905,200.523,0],"e":[327.905,35.523,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"n":"0p833_0p833_0p7_0","t":15,"s":[327.905,35.523,0],"e":[327.905,185.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20}]},"a":{"k":[-136,-191,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0.7]},"n":["0p833_0p833_0p7_0","0p833_0p833_0p7_0","0p833_0p833_0p7_0p7"],"t":15,"s":[127,127,100],"e":[25,25,100]},{"t":20}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[10,10]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":9,"op":21,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"splashy 6","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p3_1_0p167_0p167","t":6,"s":[387.905,175.523,0],"e":[397.905,25.523,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"n":"0p833_0p833_0p7_0","t":13,"s":[397.905,25.523,0],"e":[387.905,145.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":18}]},"a":{"k":[-136,-191,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0.7]},"n":["0p833_0p833_0p7_0","0p833_0p833_0p7_0","0p833_0p833_0p7_0p7"],"t":13,"s":[100,100,100],"e":[25,25,100]},{"t":18}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[10,10]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":6,"op":19,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"splashy 11","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0.735,"y":0.877},"o":{"x":0.167,"y":0.167},"n":"0p735_0p877_0p167_0p167","t":7,"s":[339.905,170.523,0],"e":[326.554,146.057,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.086,"y":1},"o":{"x":0.095,"y":0.268},"n":"0p086_1_0p095_0p268","t":8,"s":[326.554,146.057,0],"e":[406.905,125.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":26}]},"a":{"k":[-136,-191,0]},"s":{"k":[42,42,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[2],"e":[0]},{"t":23}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":8,"op":26,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"splashy 10","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":7,"s":[359.905,160.523,0],"e":[347.905,35.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":24}]},"a":{"k":[-136,-191,0]},"s":{"k":[56,56,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":7,"s":[2],"e":[0]},{"t":22}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":8,"op":24,"st":7,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"splashy 9","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":5,"s":[319.905,160.523,0],"e":[297.905,55.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":22}]},"a":{"k":[-136,-191,0]},"s":{"k":[56,56,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[2],"e":[0]},{"t":20}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":6,"op":22,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"triggerw1","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p4_1_0p167_0p167"],"t":1,"s":[-90],"e":[0]},{"t":9}]},"p":{"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p5_1_0p167_0p167","t":1,"s":[256,231,0],"e":[206,151,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":7,"s":[206,151,0],"e":[206,400,0],"to":[0,0,0],"ti":[0,0,0]},{"t":12}]},"a":{"k":[-44,101,0]},"s":{"k":[96.179,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[-28.825,-39.96],[6.1,-7.552],[0,0]],"o":[[0,0],[-8.964,11.488],[-50.664,-45.539],[0,0]],"v":[[27,7.5],[34.321,66.469],[-9.552,88.031],[-27,7.5]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":4,"s":[{"i":[[0,0],[-28.825,-39.96],[6.1,-7.552],[0,0]],"o":[[0,0],[-8.964,11.488],[-50.664,-45.539],[0,0]],"v":[[27,7.5],[34.321,66.469],[-9.552,88.031],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.82,"y":0},"n":"0p833_1_0p82_0","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,-80.5],[27,19.5],[-27,19.5],[-27,-80.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,-80.5],[27,19.5],[-27,19.5],[-27,-80.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}]},{"t":12}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,81.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":1,"op":13,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"triggerw7","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p4_1_0p167_0p167"],"t":5,"s":[90],"e":[0]},{"t":11}]},"p":{"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p5_1_0p167_0p167","t":5,"s":[245,231,0],"e":[295,151,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":9,"s":[295,151,0],"e":[295,400,0],"to":[0,0,0],"ti":[0,0,0]},{"t":14}]},"a":{"k":[-98,101,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-44,89],[-44,101],[-98,101],[-98,89]],"c":true}],"e":[{"i":[[0,0],[16.144,-15.344],[4.34,0.958],[0,0]],"o":[[0,0],[-3.966,-0.983],[12.529,-18.324],[0,0]],"v":[[-45.513,75.137],[-44.48,118.258],[-91.342,111.437],[-94.261,75.958]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[16.144,-15.344],[4.34,0.958],[0,0]],"o":[[0,0],[-3.966,-0.983],[12.529,-18.324],[0,0]],"v":[[-45.513,75.137],[-44.48,118.258],[-91.342,111.437],[-94.261,75.958]],"c":true}],"e":[{"i":[[0,0],[32.189,-28.823],[8.679,1.916],[0,0]],"o":[[0,0],[-7.932,-1.966],[26.664,-50.209],[0,0]],"v":[[-57.025,55.274],[-47.867,134.59],[-93.108,128.051],[-104.748,56.541]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[32.189,-28.823],[8.679,1.916],[0,0]],"o":[[0,0],[-7.932,-1.966],[26.664,-50.209],[0,0]],"v":[[-57.025,55.274],[-47.867,134.59],[-93.108,128.051],[-104.748,56.541]],"c":true}],"e":[{"i":[[0,0],[30.938,-41.176],[2.735,0.604],[0,0]],"o":[[0,0],[-2.5,-0.62],[32.999,-39.206],[0,0]],"v":[[-43.147,68.969],[-50.931,145.832],[-97.787,133.218],[-89.887,65.826]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[30.938,-41.176],[2.735,0.604],[0,0]],"o":[[0,0],[-2.5,-0.62],[32.999,-39.206],[0,0]],"v":[[-43.147,68.969],[-50.931,145.832],[-97.787,133.218],[-89.887,65.826]],"c":true}],"e":[{"i":[[0,0],[2.344,-2.292],[0.404,0.089],[0,0]],"o":[[0,0],[-0.369,-0.092],[2.21,-1.327],[0,0]],"v":[[-45.024,90.274],[-51.924,124.525],[-95.548,117.875],[-89.678,87.555]],"c":true}]},{"i":{"x":0.18,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p18_1_0p167_0p167","t":9,"s":[{"i":[[0,0],[2.344,-2.292],[0.404,0.089],[0,0]],"o":[[0,0],[-0.369,-0.092],[2.21,-1.327],[0,0]],"v":[[-45.024,90.274],[-51.924,124.525],[-95.548,117.875],[-89.678,87.555]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-44,89],[-46.605,112.1],[-96.715,108.959],[-92.04,87.786]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-44,89],[-46.605,112.1],[-96.715,108.959],[-92.04,87.786]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-44,1],[-44,101],[-98,101],[-98,1]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-44,1],[-44,101],[-98,101],[-98,1]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-44,-20],[-44,101],[-98,101],[-98,-20]],"c":true}]},{"t":14}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":5,"op":15,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"triggerw6","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p4_1_0p167_0p167"],"t":1,"s":[-90],"e":[0]},{"t":8}]},"p":{"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p5_1_0p167_0p167","t":1,"s":[256,231,0],"e":[206,151,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":6,"s":[206,151,0],"e":[206,400,0],"to":[0,0,0],"ti":[0,0,0]},{"t":11}]},"a":{"k":[-44,101,0]},"s":{"k":[96.179,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[-10.909,-19.171],[1.915,-1.622],[0,0]],"o":[[0,0],[-0.097,0.58],[-15.659,-16.607],[0,0]],"v":[[22.276,4.999],[26.197,38.177],[-21.398,46.941],[-26.1,3.704]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[0,0],[-10.909,-19.171],[1.915,-1.622],[0,0]],"o":[[0,0],[-0.097,0.58],[-15.659,-16.607],[0,0]],"v":[[22.276,4.999],[26.197,38.177],[-21.398,46.941],[-26.1,3.704]],"c":true}],"e":[{"i":[[0,0],[-18.417,-29.053],[3.83,-3.243],[0,0]],"o":[[0,0],[-0.193,1.16],[-36.356,-36.891],[0,0]],"v":[[26.286,6.773],[25.393,56.854],[-15.796,74.382],[-14.275,0.069]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0,0],[-18.417,-29.053],[3.83,-3.243],[0,0]],"o":[[0,0],[-0.193,1.16],[-36.356,-36.891],[0,0]],"v":[[26.286,6.773],[25.393,56.854],[-15.796,74.382],[-14.275,0.069]],"c":true}],"e":[{"i":[[0,0],[-20.186,-31.419],[1.676,-1.419],[0,0]],"o":[[0,0],[-0.085,0.507],[-38.134,-21.59],[0,0]],"v":[[31.648,7.632],[28.94,60.336],[-16.327,79.132],[-18.476,4.683]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p833_1_0p167_0p167","t":4,"s":[{"i":[[0,0],[-20.186,-31.419],[1.676,-1.419],[0,0]],"o":[[0,0],[-0.085,0.507],[-38.134,-21.59],[0,0]],"v":[[31.648,7.632],[28.94,60.336],[-16.327,79.132],[-18.476,4.683]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-26.677,29.936],[-20.167,6.155]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.82,"y":0},"n":"0p833_1_0p82_0","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-26.677,29.936],[-20.167,6.155]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.82,"y":0},"n":"0p833_0p833_0p82_0","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,7.5],[27,19.5],[-27,19.5],[-27,7.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,-80.5],[27,19.5],[-27,19.5],[-27,-80.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27,-80.5],[27,19.5],[-27,19.5],[-27,-80.5]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27.364,-98.5],[27,19.5],[-27,19.5],[-26.636,-98.5]],"c":true}]},{"t":11}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-71,81.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":1,"op":12,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"W2","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.989,-12.186],[-89.62,-12.093],[-90.23,-11.665],[-95.734,0],[-41.654,0],[-40.253,-5.043]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[24.511,-226.593],[-22.62,-226.593],[-66.73,-66.165],[-95.734,0],[-41.654,0],[1.247,-162.543]],"c":true}]},{"t":22}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":14,"op":35,"st":10,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"W1","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-48.028,-10.593],[-97.878,-10.593],[-95.734,0],[-41.654,0],[-49.039,-11.286]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-63.166,-64.197],[-113.016,-64.197],[-95.734,0],[-41.654,0],[-50.258,-24.935]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-63.166,-64.197],[-113.016,-64.197],[-95.734,0],[-41.654,0],[-50.258,-24.935]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-109.028,-226.593],[-158.878,-226.593],[-95.734,0],[-41.654,0],[-66.039,-66.286]],"c":true}]},{"t":21}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":13,"op":35,"st":9,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":4,"nm":"Shape Layer 2","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0],"e":[458]},{"t":14}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[142.5,138.5,0],"e":[10.5,179.5,0],"to":[0,0,0],"ti":[56.5,-175.5,0]},{"t":14}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":11,"s":[41,41,100],"e":[19,19,100]},{"t":14}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":5,"op":15,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":4,"nm":"Shape Layer 1","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[0],"e":[-547]},{"t":15}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[134.5,154.5,0],"e":[15.5,248.5,0],"to":[0,0,0],"ti":[41.5,-190.5,0]},{"t":15}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":8,"s":[73,73,100],"e":[19,19,100]},{"t":15}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":5,"op":16,"st":1,"bm":0,"sr":1},{"ddd":0,"ind":28,"ty":4,"nm":"Shape Layer 4","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p14_1_0p167_0p167"],"t":4,"s":[0],"e":[458]},{"t":13}]},"p":{"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p6_1_0p167_0p167","t":4,"s":[167.5,178.5,0],"e":[100.5,50.5,0],"to":[0,0,0],"ti":[23.2369556427002,-1.22299766540527,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"n":"0p833_0p833_0p4_0","t":13,"s":[100.5,50.5,0],"e":[91.5,128.5,0],"to":[-9.5,0.5,0],"ti":[0,-1.66666662693024,0]},{"t":18}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[26,26,100],"e":[9,9,100]},{"t":18}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":4,"op":19,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":29,"ty":4,"nm":"Shape Layer 3","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.14],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0p14_1_0p167_0p167"],"t":4,"s":[0],"e":[458]},{"t":13}]},"p":{"k":[{"i":{"x":0.14,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p14_1_0p167_0p167","t":4,"s":[167.5,178.5,0],"e":[40.5,80.5,0],"to":[0,0,0],"ti":[72.5,-11.5,0]},{"t":13}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":6,"s":[26,26,100],"e":[9,9,100]},{"t":11}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":4,"op":11,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":30,"ty":4,"nm":"splashy 4","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p3_1_0p167_0p167","t":4,"s":[179.905,175.523,0],"e":[162.905,25.523,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"n":"0p833_0p833_0p7_0","t":13,"s":[162.905,25.523,0],"e":[162.905,165.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":17}]},"a":{"k":[-136,-191,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0.7]},"n":["0p833_0p833_0p7_0","0p833_0p833_0p7_0","0p833_0p833_0p7_0p7"],"t":13,"s":[59,59,100],"e":[25,25,100]},{"t":17}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[10,10]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":6,"op":18,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":31,"ty":4,"nm":"splashy 5","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p3_1_0p167_0p167","t":4,"s":[169.905,200.523,0],"e":[147.905,35.523,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"n":"0p833_0p833_0p7_0","t":12,"s":[147.905,35.523,0],"e":[147.905,185.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":17}]},"a":{"k":[-136,-191,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0.7]},"n":["0p833_0p833_0p7_0","0p833_0p833_0p7_0","0p833_0p833_0p7_0p7"],"t":12,"s":[127,127,100],"e":[25,25,100]},{"t":17}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[10,10]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":6,"op":18,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":32,"ty":4,"nm":"splashy 3","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p3_1_0p167_0p167","t":3,"s":[167.905,195.523,0],"e":[177.905,45.523,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.7,"y":0},"n":"0p833_0p833_0p7_0","t":10,"s":[177.905,45.523,0],"e":[167.905,165.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":15}]},"a":{"k":[-136,-191,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.7,0.7,0.7],"y":[0,0,0.7]},"n":["0p833_0p833_0p7_0","0p833_0p833_0p7_0","0p833_0p833_0p7_0p7"],"t":10,"s":[100,100,100],"e":[25,25,100]},{"t":15}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[10,10]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"}],"ip":3,"op":16,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":33,"ty":4,"nm":"splashy 14","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":4,"s":[189.905,170.523,0],"e":[176.905,105.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":23}]},"a":{"k":[-136,-191,0]},"s":{"k":[67,67,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[2],"e":[0]},{"t":20}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":6,"op":23,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":34,"ty":4,"nm":"splashy 13","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":4,"s":[169.905,190.523,0],"e":[157.905,65.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":21}]},"a":{"k":[-136,-191,0]},"s":{"k":[56,56,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":4,"s":[2],"e":[0]},{"t":19}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":6,"op":21,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":35,"ty":4,"nm":"splashy 12","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":2,"s":[199.905,160.523,0],"e":[217.905,35.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":19}]},"a":{"k":[-136,-191,0]},"s":{"k":[56,56,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":2,"s":[2],"e":[0]},{"t":17}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":3,"op":19,"st":2,"bm":0,"sr":1},{"ddd":0,"ind":36,"ty":4,"nm":"splashy 17","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":5,"s":[257.905,171.523,0],"e":[258.905,51.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":24}]},"a":{"k":[-136,-191,0]},"s":{"k":[39,39,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[2],"e":[0]},{"t":21}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":5,"op":24,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":37,"ty":4,"nm":"splashy 16","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":5,"s":[225.905,183.523,0],"e":[223.905,111.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":22}]},"a":{"k":[-136,-191,0]},"s":{"k":[28,28,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":5,"s":[2],"e":[0]},{"t":20}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":5,"op":22,"st":5,"bm":0,"sr":1},{"ddd":0,"ind":38,"ty":4,"nm":"splashy 15","parent":48,"ks":{"o":{"k":100},"r":{"k":-32},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":3,"s":[269.905,160.523,0],"e":[273.905,69.523,0],"to":[0,0,0],"ti":[0,0,0]},{"t":20}]},"a":{"k":[-136,-191,0]},"s":{"k":[28,28,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20,20]},"p":{"k":[0,0]},"nm":"Ellipse Path 1"},{"ty":"tr","p":{"k":[-136,-191],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":3,"s":[2],"e":[0]},{"t":18}]},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"}],"ip":3,"op":20,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":39,"ty":4,"nm":"Shape Layer 12","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[0],"e":[431]},{"t":27}]},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[289.5,383.5,0],"e":[252.54,372.604,0],"to":[0,0,0],"ti":[0,0,0]},{"t":36}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[67,67,100],"e":[7,7,100]},{"t":25}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":15,"op":26,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":40,"ty":4,"nm":"Shape Layer 13","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[-160],"e":[431]},{"t":27}]},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[345.5,388.5,0],"e":[404.5,318.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":49}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[59,59,100],"e":[7,7,100]},{"t":25}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":15,"op":26,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":41,"ty":4,"nm":"Shape Layer 11","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":15,"s":[29],"e":[431]},{"t":27}]},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[356.5,386.5,0],"e":[424.5,358.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":47}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[42,42,100],"e":[7,7,100]},{"t":25}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":15,"op":26,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":42,"ty":4,"nm":"Shape Layer 10","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[29],"e":[378]},{"t":24}]},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[148.5,381.5,0],"e":[104.5,348.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":37}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[42,42,100],"e":[7,7,100]},{"t":22}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":12,"op":23,"st":8,"bm":0,"sr":1},{"ddd":0,"ind":43,"ty":4,"nm":"Shape Layer 9","parent":48,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":12,"s":[0],"e":[-547]},{"t":24}]},"p":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[140.5,393.5,0],"e":[84.5,378.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":37}]},"a":{"k":[-115.5,-145.5,0]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":12,"s":[73,73,100],"e":[7,7,100]},{"t":22}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[19,19]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[-115.5,-145.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":12,"op":23,"st":8,"bm":0,"sr":1},{"ddd":0,"ind":44,"ty":4,"nm":"W Outlines 9","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[52.023,-9.593],[46.423,-4.165],[44.149,0],[98.229,0],[101.571,-9.593]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[111.523,-226.593],[68.923,-66.165],[44.149,0],[98.229,0],[161.071,-226.593]],"c":true}]},{"t":24}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":17,"op":25,"st":12,"bm":0,"sr":1},{"ddd":0,"ind":45,"ty":4,"nm":"W Outlines 8","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[93.923,-4.165],[90.011,-8.593],[42.88,-8.593],[44.247,-3.543],[44.149,0],[98.229,0]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[90.719,-20.551],[73.756,-62.693],[26.625,-62.693],[32.576,-41.001],[44.149,0],[98.229,0]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[90.719,-20.551],[73.756,-62.693],[26.625,-62.693],[32.576,-41.001],[44.149,0],[98.229,0]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[68.923,-66.165],[24.511,-226.593],[-22.62,-226.593],[1.247,-162.543],[44.149,0],[98.229,0]],"c":true}]},{"t":21}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":16,"op":25,"st":11,"bm":0,"sr":1},{"ddd":0,"ind":46,"ty":4,"nm":"W Outlines 7","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.989,-12.186],[-89.62,-12.093],[-90.23,-11.665],[-95.734,0],[-41.654,0],[-40.253,-5.043]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[24.511,-226.593],[-22.62,-226.593],[-66.73,-66.165],[-95.734,0],[-41.654,0],[1.247,-162.543]],"c":true}]},{"t":21}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":14,"op":25,"st":9,"bm":0,"sr":1},{"ddd":0,"ind":47,"ty":4,"nm":"W Outlines 6","parent":48,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-48.028,-10.593],[-97.878,-10.593],[-95.734,0],[-41.654,0],[-49.039,-11.286]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-63.166,-64.197],[-113.016,-64.197],[-95.734,0],[-41.654,0],[-50.258,-24.935]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"n":"0_1_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-63.166,-64.197],[-113.016,-64.197],[-95.734,0],[-41.654,0],[-50.258,-24.935]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-109.028,-226.593],[-158.878,-226.593],[-95.734,0],[-41.654,0],[-66.039,-66.286]],"c":true}]},{"t":20}]},"nm":"W"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"W"}],"ip":13,"op":25,"st":8,"bm":0,"sr":1},{"ddd":0,"ind":48,"ty":1,"nm":"ResizerTemp","parent":49,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":35,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":49,"ty":1,"nm":"White Solid 52","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":35,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":35,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/X.json b/example/shared/src/commonMain/composeResources/files/mobilo/X.json new file mode 100644 index 00000000..94840c8b --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/X.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"\rx bar 2","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.05,"y":1},"o":{"x":0.95,"y":0},"n":"0p05_1_0p95_0","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[27.177,100],[26.374,-16.979],[26.298,-55.688],[26.479,-126.686],[-27.601,-126.686],[-27.33,-16.74],[-27.254,22.104],[-27.206,100]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[104.427,100],[25.874,-16.62],[0.798,-55.594],[-44.521,-126.593],[-98.601,-126.593],[-24.58,-16.62],[0.496,22.052],[50.044,100]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":15,"op":29,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"\rx bar 1 final","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.784,-116.62],[100.106,-226.593],[46.026,-226.593],[0.707,-155.594],[-24.671,-116.62],[-102.921,0],[-48.841,0],[0.405,-77.948]],"c":true}},"nm":"X"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"X"}],"ip":25,"op":29,"st":-5,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"X \rbar 1","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.05,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p05_1_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[26.449,119.561],[26.772,111],[-27.308,111],[-27.377,116.528],[-27.255,119.56],[-27.505,128.62],[26.575,128.62],[26.571,122.565]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[26.471,-16.979],[26.794,-126.936],[-27.287,-126.936],[-27.355,-55.938],[-27.234,-16.99],[-27.484,99.375],[26.596,99.375],[26.593,21.604]],"c":true}]},{"i":{"x":0.05,"y":1},"o":{"x":0.95,"y":0},"n":"0p05_1_0p95_0","t":15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[26.471,-16.979],[26.794,-126.936],[-27.287,-126.936],[-27.355,-55.938],[-27.234,-16.99],[-27.484,99.375],[26.596,99.375],[26.593,21.604]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.721,-16.995],[100.044,-126.968],[45.963,-126.968],[0.645,-55.969],[-24.734,-16.995],[-102.984,99.625],[-48.904,99.625],[0.343,21.677]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":25,"st":4,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"\raccent","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.95,"y":0},"n":"0p833_0p833_0p95_0","t":17,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[27.177,100],[26.374,-16.979],[26.298,-55.688],[26.479,-126.686],[-27.601,-126.686],[-27.33,-16.74],[-27.254,22.104],[-27.206,100]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[65.802,100],[26.124,-16.8],[28.548,-55.641],[39.979,-126.279],[-63.101,-126.64],[-25.955,-16.68],[-20.879,22.078],[-41.081,100]],"c":true}]},{"i":{"x":0.05,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p05_1_0p167_0p167","t":21,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[65.802,100],[26.124,-16.8],[28.548,-55.641],[39.979,-126.279],[-63.101,-126.64],[-25.955,-16.68],[-20.879,22.078],[-41.081,100]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[104.427,100],[25.874,-16.62],[0.798,-55.594],[-44.521,-126.593],[-98.601,-126.593],[-24.58,-16.62],[0.496,22.052],[50.044,100]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":17,"op":25,"st":6,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"\rcolor 2","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.05,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p05_1_0p167_0p167","t":3,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[26.449,119.561],[26.772,111],[-27.308,111],[-27.377,116.528],[-27.255,119.56],[-27.505,128.62],[26.575,128.62],[26.571,122.565]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[26.471,-16.979],[26.794,-126.936],[-27.287,-126.936],[-27.355,-55.938],[-27.234,-16.99],[-27.484,99.375],[26.596,99.375],[26.593,21.604]],"c":true}]},{"t":14}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":15,"st":3,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"\rcolor 1","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,300,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.05,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p05_1_0p167_0p167","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[26.449,119.561],[26.772,111],[-27.308,111],[-27.377,116.528],[-27.255,119.56],[-27.505,128.62],[26.575,128.62],[26.571,122.565]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[26.471,-16.979],[26.794,-126.936],[-27.287,-126.936],[-27.355,-55.938],[-27.234,-16.99],[-27.484,99.375],[26.596,99.375],[26.593,21.604]],"c":true}]},{"t":11}]},"nm":"Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":15,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"X Outlines","parent":7,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[104.336,0],[25.784,-116.62],[100.106,-226.593],[46.026,-226.593],[0.707,-155.594],[-44.611,-226.593],[-98.692,-226.593],[-24.671,-116.62],[-102.921,0],[-48.841,0],[0.405,-77.948],[49.953,0]],"c":true}},"nm":"X"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"X"}],"ip":25,"op":29,"st":25,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":1,"nm":"ResizerTemp","parent":8,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":1,"nm":"White Solid 53","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":29,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/Y.json b/example/shared/src/commonMain/composeResources/files/mobilo/Y.json new file mode 100644 index 00000000..ada4599f --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/Y.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"scale","parent":43,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[250,401,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":26,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 25","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":5,"s":[84.125,-11.5,0],"h":1},{"t":8,"s":[50.125,-12,0],"h":1},{"t":9,"s":[16.875,-11.5,0],"h":1},{"t":10,"s":[16.875,-11.5,0],"h":1},{"t":11,"s":[-0.625,-11.75,0],"h":1},{"t":13,"s":[3.875,-23.75,0],"h":1},{"t":15,"s":[8.625,-32.875,0],"h":1},{"t":16,"s":[6.25,-30.75,0],"h":1}]},"a":{"k":[-72.75,-110.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-4.142],[4.142,0],[0,4.142],[-4.142,0]],"o":[[0,4.142],[-4.142,0],[0,-4.142],[4.142,0]],"v":[[-65.25,-110.5],[-72.75,-103],[-80.25,-110.5],[-72.75,-118]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 20","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":5,"s":[84.125,-11.5,0],"h":1},{"t":8,"s":[50.125,-12,0],"h":1},{"t":9,"s":[16.875,-11.5,0],"h":1},{"t":10,"s":[16.875,-11.5,0],"h":1},{"t":11,"s":[-0.625,-11.75,0],"h":1},{"t":13,"s":[3.875,-23.75,0],"h":1},{"t":15,"s":[8.625,-32.875,0],"h":1},{"t":16,"s":[6.25,-30.75,0],"h":1}]},"a":{"k":[-72.75,-110.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-4.142],[4.142,0],[0,4.142],[-4.142,0]],"o":[[0,4.142],[-4.142,0],[0,-4.142],[4.142,0]],"v":[[-65.25,-110.5],[-72.75,-103],[-80.25,-110.5],[-72.75,-118]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 26","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":5,"s":[-82.5,-14.5,0],"h":1},{"t":8,"s":[-7.5,-18,0],"h":1},{"t":9,"s":[54.25,-82,0],"h":1},{"t":11,"s":[19.5,-83.25,0],"h":1},{"t":13,"s":[26.75,-94.25,0],"h":1},{"t":15,"s":[8.75,-101.75,0],"h":1},{"t":16,"s":[12.25,-103,0],"h":1},{"t":19,"s":[12.625,-103.625,0],"h":1}]},"a":{"k":[-73.25,-110.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-5.178],[5.178,0],[0,5.178],[-5.178,0]],"o":[[0,5.178],[-5.178,0],[0,-5.178],[5.178,0]],"v":[[-64.125,-110.75],[-73.5,-101.375],[-82.875,-110.75],[-73.5,-120.125]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 19","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":5,"s":[-82.5,-14.5,0],"h":1},{"t":8,"s":[-7.5,-18,0],"h":1},{"t":9,"s":[54.25,-82,0],"h":1},{"t":11,"s":[19.5,-83.25,0],"h":1},{"t":13,"s":[26.75,-94.25,0],"h":1},{"t":15,"s":[8.75,-101.75,0],"h":1},{"t":16,"s":[12.25,-103,0],"h":1},{"t":19,"s":[12.625,-103.625,0],"h":1}]},"a":{"k":[-73.25,-110.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-5.178],[5.178,0],[0,5.178],[-5.178,0]],"o":[[0,5.178],[-5.178,0],[0,-5.178],[5.178,0]],"v":[[-64.125,-110.75],[-73.5,-101.375],[-82.875,-110.75],[-73.5,-120.125]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 27","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":6,"s":[-135,-10,0],"h":1},{"t":7,"s":[-132.25,-10,0],"h":1},{"t":8,"s":[60.5,-37,0],"h":1},{"t":9,"s":[46.25,-142.25,0],"h":1},{"t":10,"s":[46.25,-142.25,0],"h":1},{"t":11,"s":[58.25,-153.5,0],"h":1},{"t":13,"s":[64.5,-142.25,0],"h":1},{"t":15,"s":[42.125,-139.25,0],"h":1},{"t":16,"s":[51.125,-151.5,0],"h":1},{"t":17,"s":[50.625,-160.25,0],"h":1},{"t":19,"s":[51,-159.75,0],"h":1}]},"a":{"k":[-73.5,-110.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.59],[3.59,0],[0,3.59],[-3.59,0]],"o":[[0,3.59],[-3.59,0],[0,-3.59],[3.59,0]],"v":[[-67,-110.75],[-73.5,-104.25],[-80,-110.75],[-73.5,-117.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 18","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":6,"s":[-135,-10,0],"h":1},{"t":7,"s":[-132.25,-10,0],"h":1},{"t":8,"s":[60.5,-37,0],"h":1},{"t":9,"s":[46.25,-142.25,0],"h":1},{"t":10,"s":[46.25,-142.25,0],"h":1},{"t":11,"s":[58.25,-153.5,0],"h":1},{"t":13,"s":[64.5,-142.25,0],"h":1},{"t":15,"s":[42.125,-139.25,0],"h":1},{"t":16,"s":[51.125,-151.5,0],"h":1},{"t":17,"s":[50.625,-160.25,0],"h":1},{"t":19,"s":[51,-159.75,0],"h":1}]},"a":{"k":[-73.5,-110.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.59],[3.59,0],[0,3.59],[-3.59,0]],"o":[[0,3.59],[-3.59,0],[0,-3.59],[3.59,0]],"v":[[-67,-110.75],[-73.5,-104.25],[-80,-110.75],[-73.5,-117.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 28","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":5,"s":[-75.25,-52.5,0],"h":1},{"t":6,"s":[-79.25,-50,0],"h":1},{"t":7,"s":[-79.25,-49.5,0],"h":1},{"t":8,"s":[34.5,-93.5,0],"h":1},{"t":9,"s":[45.25,-102.5,0],"h":1},{"t":10,"s":[45.25,-102.5,0],"h":1},{"t":11,"s":[-0.5,-93.25,0],"h":1},{"t":13,"s":[27.25,-131.5,0],"h":1},{"t":15,"s":[42.625,-191.875,0],"h":1},{"t":16,"s":[48.875,-206,0],"h":1},{"t":17,"s":[46.875,-212.25,0],"h":1},{"t":18,"s":[46.188,-212.5,0],"h":1}]},"a":{"k":[-72.75,-110.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.59],[3.59,0],[0,3.59],[-3.59,0]],"o":[[0,3.59],[-3.59,0],[0,-3.59],[3.59,0]],"v":[[-66.5,-110.5],[-73,-104],[-79.5,-110.5],[-73,-117]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 17","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":5,"s":[-75.25,-52.5,0],"h":1},{"t":6,"s":[-79.25,-50,0],"h":1},{"t":7,"s":[-79.25,-49.5,0],"h":1},{"t":8,"s":[34.5,-93.5,0],"h":1},{"t":9,"s":[45.25,-102.5,0],"h":1},{"t":10,"s":[45.25,-102.5,0],"h":1},{"t":11,"s":[-0.5,-93.25,0],"h":1},{"t":13,"s":[27.25,-131.5,0],"h":1},{"t":15,"s":[42.625,-191.875,0],"h":1},{"t":16,"s":[48.875,-206,0],"h":1},{"t":17,"s":[46.875,-212.25,0],"h":1},{"t":18,"s":[46.188,-212.5,0],"h":1}]},"a":{"k":[-72.75,-110.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.59],[3.59,0],[0,3.59],[-3.59,0]],"o":[[0,3.59],[-3.59,0],[0,-3.59],[3.59,0]],"v":[[-66.5,-110.5],[-73,-104],[-79.5,-110.5],[-73,-117]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 29","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":6,"s":[55.25,-54.5,0],"h":1},{"t":8,"s":[-31,-123.25,0],"h":1},{"t":9,"s":[2.25,-181.5,0],"h":1},{"t":11,"s":[-10.25,-172.5,0],"h":1},{"t":12,"s":[-10.25,-171.5,0],"h":1},{"t":13,"s":[-19.25,-158.75,0],"h":1},{"t":14,"s":[-20,-158,0],"h":1},{"t":15,"s":[-23.25,-153.25,0],"h":1},{"t":16,"s":[-29.5,-153.75,0],"h":1},{"t":17,"s":[-34,-138.75,0],"h":1},{"t":18,"s":[-38.75,-138.25,0],"h":1},{"t":19,"s":[-38.25,-138.75,0],"h":1},{"t":20,"s":[-38,-144.5,0],"h":1}]},"a":{"k":[-73.5,-111,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.024,-6.075],[6.075,0.024],[-0.024,6.075],[-6.075,-0.024]],"o":[[-0.024,6.075],[-6.075,-0.024],[0.024,-6.075],[6.075,0.024]],"v":[[-62.25,-110.707],[-73.293,-99.75],[-84.25,-110.793],[-73.207,-121.75]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 16","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"t":6,"s":[55.25,-54.5,0],"h":1},{"t":8,"s":[-31,-123.25,0],"h":1},{"t":9,"s":[2.25,-181.5,0],"h":1},{"t":11,"s":[-10.25,-172.5,0],"h":1},{"t":12,"s":[-10.25,-171.5,0],"h":1},{"t":13,"s":[-19.25,-158.75,0],"h":1},{"t":14,"s":[-20,-158,0],"h":1},{"t":15,"s":[-23.25,-153.25,0],"h":1},{"t":16,"s":[-29.5,-153.75,0],"h":1},{"t":17,"s":[-34,-138.75,0],"h":1},{"t":18,"s":[-38.75,-138.25,0],"h":1},{"t":19,"s":[-38.25,-138.75,0],"h":1},{"t":20,"s":[-38,-144.5,0],"h":1}]},"a":{"k":[-73.5,-111,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.024,-6.075],[6.075,0.024],[-0.024,6.075],[-6.075,-0.024]],"o":[[-0.024,6.075],[-6.075,-0.024],[0.024,-6.075],[6.075,0.024]],"v":[[-62.25,-110.707],[-73.293,-99.75],[-84.25,-110.793],[-73.207,-121.75]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"Ball_final Blue","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[-95.5,-17.5,0],"e":[-87,-17.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[-87,-17.5,0],"e":[-82.498,-17.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[-82.498,-17.5,0],"e":[-81,-17.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":5,"s":[-81,-17.5,0],"h":1},{"t":6,"s":[-78.5,-17.5,0],"h":1},{"t":7,"s":[-77,-17.5,0],"h":1},{"t":8,"s":[-68.25,-17.25,0],"h":1},{"t":9,"s":[-66.75,-86.5,0],"h":1},{"t":10,"s":[-66.75,-90.5,0],"h":1},{"t":11,"s":[-65.75,-299.5,0],"h":1},{"t":12,"s":[-65.75,-304.5,0],"h":1},{"t":13,"s":[-65.75,-317.5,0],"h":1},{"t":14,"s":[-65.75,-325.5,0],"h":1},{"t":15,"s":[-65.75,-328,0],"h":1},{"t":16,"s":[-65.75,-327.5,0],"h":1},{"t":18,"s":[-65.75,-324,0],"h":1},{"t":19,"s":[-65.75,-322,0],"h":1},{"t":20,"s":[-67,-231.5,0],"h":1},{"t":21,"s":[-66.5,-226.5,0],"h":1},{"t":22,"s":[-72,-213,0],"h":1}]},"a":{"k":[-73,-110.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-8.284],[8.284,0],[0,8.284],[-8.284,0]],"o":[[0,8.284],[-8.284,0],[0,-8.284],[8.284,0]],"v":[[-58.25,-110.75],[-73.25,-95.75],[-88.25,-110.75],[-73.25,-125.75]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"Ball_final","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[-95.5,-17.5,0],"e":[-87,-17.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[-87,-17.5,0],"e":[-82.498,-17.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[-82.498,-17.5,0],"e":[-81,-17.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":5,"s":[-81,-17.5,0],"h":1},{"t":6,"s":[-78.5,-17.5,0],"h":1},{"t":7,"s":[-77,-17.5,0],"h":1},{"t":8,"s":[-68.25,-17.25,0],"h":1},{"t":9,"s":[-66.75,-86.5,0],"h":1},{"t":10,"s":[-66.75,-90.5,0],"h":1},{"t":11,"s":[-65.75,-299.5,0],"h":1},{"t":12,"s":[-65.75,-304.5,0],"h":1},{"t":13,"s":[-65.75,-317.5,0],"h":1},{"t":14,"s":[-65.75,-325.5,0],"h":1},{"t":15,"s":[-65.75,-328,0],"h":1},{"t":16,"s":[-65.75,-327.5,0],"h":1},{"t":18,"s":[-65.75,-324,0],"h":1},{"t":19,"s":[-65.75,-322,0],"h":1},{"t":20,"s":[-67,-231.5,0],"h":1},{"t":21,"s":[-67.5,-226.5,0],"h":1},{"t":22,"s":[-72,-213,0],"h":1}]},"a":{"k":[-73,-110.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-8.284],[8.284,0],[0,8.284],[-8.284,0]],"o":[[0,8.284],[-8.284,0],[0,-8.284],[8.284,0]],"v":[[-58.25,-110.75],[-73.25,-95.75],[-88.25,-110.75],[-73.25,-125.75]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"w":{"k":5},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":2,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 30","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":3,"s":[77],"h":1},{"t":6,"s":[30],"h":1},{"t":8,"s":[87],"h":1},{"t":9,"s":[57],"h":1},{"t":10,"s":[57],"h":1},{"t":11,"s":[-34],"h":1},{"t":13,"s":[-22],"h":1},{"t":15,"s":[-2],"h":1},{"t":17,"s":[24],"h":1},{"t":20,"s":[15],"h":1},{"t":22,"s":[0],"h":1}]},"p":{"k":[{"t":3,"s":[83.375,-8.75,0],"h":1},{"t":6,"s":[42.5,-8.25,0],"h":1},{"t":8,"s":[-11.75,-133.75,0],"h":1},{"t":9,"s":[-35.25,-138.75,0],"h":1},{"t":10,"s":[-33.75,-139.5,0],"h":1},{"t":11,"s":[-51,-154.25,0],"h":1},{"t":13,"s":[-41.75,-202.25,0],"h":1},{"t":15,"s":[-53.5,-190.375,0],"h":1},{"t":16,"s":[-54.25,-190.375,0],"h":1},{"t":17,"s":[-67.75,-197.75,0],"h":1},{"t":20,"s":[-93,-228.25,0],"h":1},{"t":21,"s":[-94,-228.25,0],"h":1},{"t":22,"s":[-93,-222,0],"h":1}]},"a":{"k":[-20.375,-85.375,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.75,-88.562],[-20.25,-79.5],[-14.5,-88.625]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 10","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":3,"s":[77],"h":1},{"t":6,"s":[30],"h":1},{"t":8,"s":[87],"h":1},{"t":9,"s":[57],"h":1},{"t":10,"s":[57],"h":1},{"t":11,"s":[-34],"h":1},{"t":13,"s":[-22],"h":1},{"t":15,"s":[-2],"h":1},{"t":17,"s":[24],"h":1},{"t":20,"s":[15],"h":1},{"t":22,"s":[0],"h":1}]},"p":{"k":[{"t":3,"s":[83.375,-8.75,0],"h":1},{"t":6,"s":[42.5,-8.25,0],"h":1},{"t":8,"s":[-11.75,-133.75,0],"h":1},{"t":9,"s":[-35.25,-138.75,0],"h":1},{"t":10,"s":[-33.75,-139.5,0],"h":1},{"t":11,"s":[-51,-154.25,0],"h":1},{"t":13,"s":[-41.75,-202.25,0],"h":1},{"t":15,"s":[-53.5,-190.375,0],"h":1},{"t":16,"s":[-54.25,-190.375,0],"h":1},{"t":17,"s":[-67.75,-197.75,0],"h":1},{"t":20,"s":[-93,-228.25,0],"h":1},{"t":21,"s":[-94,-228.25,0],"h":1},{"t":22,"s":[-93,-222,0],"h":1}]},"a":{"k":[-20.375,-85.375,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.75,-88.562],[-20.25,-79.5],[-14.5,-88.625]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"Shape Layer 31","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[-101],"h":1},{"t":7,"s":[-93],"h":1},{"t":8,"s":[75],"h":1},{"t":9,"s":[24],"h":1},{"t":10,"s":[24],"h":1},{"t":11,"s":[8.944],"h":1},{"t":13,"s":[4.944],"h":1},{"t":15,"s":[-4.056],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":6,"s":[-106.5,-10.5,0],"h":1},{"t":7,"s":[-106,-10.5,0],"h":1},{"t":8,"s":[-30.75,-7.5,0],"h":1},{"t":9,"s":[-2.75,-12.5,0],"h":1},{"t":10,"s":[-2.75,-12.5,0],"h":1},{"t":11,"s":[-4.75,-32.5,0],"h":1},{"t":13,"s":[2.75,-50.5,0],"h":1},{"t":15,"s":[6.875,-66.875,0],"h":1},{"t":16,"s":[6,-57,0],"h":1}]},"a":{"k":[-6.75,-80.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[1.905,-97.975],[-13.93,-79.785],[-5.286,-71.437]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Shape Layer 14","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[-101],"h":1},{"t":7,"s":[-93],"h":1},{"t":8,"s":[75],"h":1},{"t":9,"s":[24],"h":1},{"t":10,"s":[24],"h":1},{"t":11,"s":[8.944],"h":1},{"t":13,"s":[4.944],"h":1},{"t":15,"s":[-4.056],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":6,"s":[-106.5,-10.5,0],"h":1},{"t":7,"s":[-106,-10.5,0],"h":1},{"t":8,"s":[-30.75,-7.5,0],"h":1},{"t":9,"s":[-2.75,-12.5,0],"h":1},{"t":10,"s":[-2.75,-12.5,0],"h":1},{"t":11,"s":[-4.75,-32.5,0],"h":1},{"t":13,"s":[2.75,-50.5,0],"h":1},{"t":15,"s":[6.875,-66.875,0],"h":1},{"t":16,"s":[6,-57,0],"h":1}]},"a":{"k":[-6.75,-80.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[1.905,-97.975],[-13.93,-79.785],[-5.286,-71.437]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Shape Layer 32","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":3,"s":[-217],"h":1},{"t":6,"s":[-103],"h":1},{"t":8,"s":[-79],"h":1},{"t":9,"s":[-148],"h":1},{"t":11,"s":[-144],"h":1},{"t":13,"s":[-20],"h":1},{"t":15,"s":[-4],"h":1},{"t":19,"s":[0],"h":1}]},"p":{"k":[{"t":3,"s":[31.875,-10.5,0],"h":1},{"t":6,"s":[-10.875,-11.25,0],"h":1},{"t":8,"s":[-22.125,-62.25,0],"h":1},{"t":9,"s":[22.375,-33.75,0],"h":1},{"t":11,"s":[17.625,-57.5,0],"h":1},{"t":13,"s":[17.125,-76.25,0],"h":1},{"t":15,"s":[19.375,-85.75,0],"h":1},{"t":19,"s":[17.875,-84.5,0],"h":1}]},"a":{"k":[8,-93.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.655,-98.45],[11.945,-80.785],[12.527,-98.374]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Shape Layer 22","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":3,"s":[-217],"h":1},{"t":6,"s":[-103],"h":1},{"t":8,"s":[-79],"h":1},{"t":9,"s":[-148],"h":1},{"t":11,"s":[-144],"h":1},{"t":13,"s":[-20],"h":1},{"t":15,"s":[-4],"h":1},{"t":19,"s":[0],"h":1}]},"p":{"k":[{"t":3,"s":[31.875,-10.5,0],"h":1},{"t":6,"s":[-10.875,-11.25,0],"h":1},{"t":8,"s":[-22.125,-62.25,0],"h":1},{"t":9,"s":[22.375,-33.75,0],"h":1},{"t":11,"s":[17.625,-57.5,0],"h":1},{"t":13,"s":[17.125,-76.25,0],"h":1},{"t":15,"s":[19.375,-85.75,0],"h":1},{"t":19,"s":[17.875,-84.5,0],"h":1}]},"a":{"k":[8,-93.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.655,-98.45],[11.945,-80.785],[12.527,-98.374]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"Shape Layer 33","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[88],"h":1},{"t":8,"s":[129],"h":1},{"t":9,"s":[101],"h":1},{"t":10,"s":[101],"h":1},{"t":11,"s":[101],"h":1},{"t":13,"s":[56],"h":1},{"t":15,"s":[81],"h":1},{"t":16,"s":[124],"h":1}]},"p":{"k":[{"t":5,"s":[86.875,-29.375,0],"h":1},{"t":8,"s":[26.125,-109.875,0],"h":1},{"t":9,"s":[17.875,-126.125,0],"h":1},{"t":10,"s":[17.875,-126.125,0],"h":1},{"t":11,"s":[12.125,-103.375,0],"h":1},{"t":13,"s":[0.125,-93.625,0],"h":1},{"t":15,"s":[-25.375,-67,0],"h":1},{"t":16,"s":[-16.125,-72.125,0],"h":1}]},"a":{"k":[3.5,-89.125,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.405,-98.35],[-5.055,-79.535],[9.839,-88.312]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"Shape Layer 21","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[88],"h":1},{"t":8,"s":[129],"h":1},{"t":9,"s":[101],"h":1},{"t":10,"s":[101],"h":1},{"t":11,"s":[101],"h":1},{"t":13,"s":[56],"h":1},{"t":15,"s":[81],"h":1},{"t":16,"s":[124],"h":1}]},"p":{"k":[{"t":5,"s":[86.875,-29.375,0],"h":1},{"t":8,"s":[26.125,-109.875,0],"h":1},{"t":9,"s":[17.875,-126.125,0],"h":1},{"t":10,"s":[17.875,-126.125,0],"h":1},{"t":11,"s":[12.125,-103.375,0],"h":1},{"t":13,"s":[0.125,-93.625,0],"h":1},{"t":15,"s":[-25.375,-67,0],"h":1},{"t":16,"s":[-16.125,-72.125,0],"h":1}]},"a":{"k":[3.5,-89.125,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.405,-98.35],[-5.055,-79.535],[9.839,-88.312]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"Shape Layer 34","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[-89],"h":1},{"t":6,"s":[-65],"h":1},{"t":8,"s":[-26],"h":1},{"t":9,"s":[-38],"h":1},{"t":11,"s":[2],"h":1},{"t":13,"s":[-170],"h":1},{"t":15,"s":[-13],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":5,"s":[105.375,-13.75,0],"h":1},{"t":6,"s":[44.875,-78.75,0],"h":1},{"t":8,"s":[42.625,-79.25,0],"h":1},{"t":9,"s":[53.875,-121,0],"h":1},{"t":11,"s":[34.625,-144.5,0],"h":1},{"t":13,"s":[24.875,-114,0],"h":1},{"t":15,"s":[20,-118.75,0],"h":1},{"t":16,"s":[24.125,-119.25,0],"h":1}]},"a":{"k":[-7.5,-86.75,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[6.155,-100.1],[-16.305,-85.785],[-7.161,-80.062]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"Shape Layer 13","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[-89],"h":1},{"t":6,"s":[-65],"h":1},{"t":8,"s":[-26],"h":1},{"t":9,"s":[-38],"h":1},{"t":11,"s":[2],"h":1},{"t":13,"s":[-170],"h":1},{"t":15,"s":[-13],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":5,"s":[105.375,-13.75,0],"h":1},{"t":6,"s":[44.875,-78.75,0],"h":1},{"t":8,"s":[42.625,-79.25,0],"h":1},{"t":9,"s":[53.875,-121,0],"h":1},{"t":11,"s":[34.625,-144.5,0],"h":1},{"t":13,"s":[24.875,-114,0],"h":1},{"t":15,"s":[20,-118.75,0],"h":1},{"t":16,"s":[24.125,-119.25,0],"h":1}]},"a":{"k":[-7.5,-86.75,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[6.155,-100.1],[-16.305,-85.785],[-7.161,-80.062]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":5,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"Shape Layer 35","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[233],"h":1},{"t":8,"s":[264],"h":1},{"t":9,"s":[-31],"h":1},{"t":10,"s":[-31],"h":1},{"t":11,"s":[-28],"h":1},{"t":13,"s":[-17],"h":1},{"t":15,"s":[-8],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":5,"s":[120.25,-34.75,0],"h":1},{"t":8,"s":[92,-41.5,0],"h":1},{"t":9,"s":[38,-18.5,0],"h":1},{"t":10,"s":[38,-18.5,0],"h":1},{"t":11,"s":[26.25,-18.5,0],"h":1},{"t":13,"s":[22.75,-16.25,0],"h":1},{"t":15,"s":[21.75,-13.125,0],"h":1},{"t":16,"s":[14.5,-11.75,0],"h":1}]},"a":{"k":[-5.5,-74,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.53,-98.225],[-21.879,-65.561],[2.589,-65.437]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"Shape Layer 12","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[233],"h":1},{"t":8,"s":[264],"h":1},{"t":9,"s":[-31],"h":1},{"t":10,"s":[-31],"h":1},{"t":11,"s":[-28],"h":1},{"t":13,"s":[-17],"h":1},{"t":15,"s":[-8],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":5,"s":[120.25,-34.75,0],"h":1},{"t":8,"s":[92,-41.5,0],"h":1},{"t":9,"s":[38,-18.5,0],"h":1},{"t":10,"s":[38,-18.5,0],"h":1},{"t":11,"s":[26.25,-18.5,0],"h":1},{"t":13,"s":[22.75,-16.25,0],"h":1},{"t":15,"s":[21.75,-13.125,0],"h":1},{"t":16,"s":[14.5,-11.75,0],"h":1}]},"a":{"k":[-5.5,-74,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[2.53,-98.225],[-21.879,-65.561],[2.589,-65.437]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":4,"nm":"Shape Layer 36","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[-126],"h":1},{"t":8,"s":[-23],"h":1},{"t":9,"s":[-32],"h":1},{"t":10,"s":[-32],"h":1},{"t":11,"s":[-28],"h":1},{"t":13,"s":[-28],"h":1},{"t":15,"s":[-14],"h":1},{"t":16,"s":[-9],"h":1},{"t":17,"s":[2],"h":1},{"t":18,"s":[0],"h":1},{"t":20,"s":[0],"h":1}]},"p":{"k":[{"t":6,"s":[-38.5,-32.5,0],"h":1},{"t":8,"s":[13,-28.5,0],"h":1},{"t":9,"s":[14.5,-68.25,0],"h":1},{"t":10,"s":[14.5,-68.25,0],"h":1},{"t":11,"s":[23.75,-170.25,0],"h":1},{"t":13,"s":[8.75,-182,0],"h":1},{"t":15,"s":[-3.75,-169,0],"h":1},{"t":16,"s":[-9,-162,0],"h":1},{"t":17,"s":[-11.75,-157,0],"h":1},{"t":18,"s":[-15,-153.5,0],"h":1},{"t":20,"s":[-15,-153.5,0],"h":1}]},"a":{"k":[-15,-52.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.125,-88.5],[-21.5,-33.25],[-1.25,-46.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":4,"nm":"Shape Layer 9","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[-126],"h":1},{"t":8,"s":[-23],"h":1},{"t":9,"s":[-32],"h":1},{"t":10,"s":[-32],"h":1},{"t":11,"s":[-28],"h":1},{"t":13,"s":[-28],"h":1},{"t":15,"s":[-14],"h":1},{"t":16,"s":[-9],"h":1},{"t":17,"s":[2],"h":1},{"t":18,"s":[0],"h":1},{"t":20,"s":[0],"h":1}]},"p":{"k":[{"t":6,"s":[-38.5,-32.5,0],"h":1},{"t":8,"s":[13,-28.5,0],"h":1},{"t":9,"s":[14.5,-68.25,0],"h":1},{"t":10,"s":[14.5,-68.25,0],"h":1},{"t":11,"s":[23.75,-170.25,0],"h":1},{"t":13,"s":[8.75,-182,0],"h":1},{"t":15,"s":[-3.75,-169,0],"h":1},{"t":16,"s":[-9,-162,0],"h":1},{"t":17,"s":[-11.75,-157,0],"h":1},{"t":18,"s":[-15,-153.5,0],"h":1},{"t":20,"s":[-15,-153.5,0],"h":1}]},"a":{"k":[-15,-52.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.125,-88.5],[-21.5,-33.25],[-1.25,-46.25]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":4,"nm":"02","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":1,"s":[56],"h":1},{"t":3,"s":[86],"h":1},{"t":4,"s":[82],"h":1},{"t":6,"s":[42],"h":1},{"t":7,"s":[41],"h":1},{"t":8,"s":[21],"h":1},{"t":9,"s":[18],"h":1},{"t":11,"s":[36.325],"h":1},{"t":12,"s":[9.325],"h":1},{"t":13,"s":[11.325],"h":1},{"t":14,"s":[14.326],"h":1},{"t":15,"s":[12.325],"h":1},{"t":16,"s":[-7],"h":1},{"t":17,"s":[-6],"h":1},{"t":18,"s":[-3],"h":1}]},"p":{"k":[{"t":1,"s":[23.75,-4.5,0],"h":1},{"t":3,"s":[41,-24.25,0],"h":1},{"t":4,"s":[41,-23,0],"h":1},{"t":6,"s":[11.25,-85.75,0],"h":1},{"t":8,"s":[66.75,-154,0],"h":1},{"t":9,"s":[62.75,-169.25,0],"h":1},{"t":11,"s":[85.25,-177,0],"h":1},{"t":12,"s":[102.75,-240,0],"h":1},{"t":13,"s":[102.75,-241.5,0],"h":1},{"t":14,"s":[102.75,-244.25,0],"h":1},{"t":15,"s":[103.75,-246.75,0],"h":1},{"t":16,"s":[98.75,-226,0],"h":1},{"t":18,"s":[99.25,-225.25,0],"h":1}]},"a":{"k":[20.449,-88.562,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.197,-91.554],[-5,-50.875],[22,-89.125]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":28,"ty":4,"nm":"01","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":1,"s":[56],"h":1},{"t":3,"s":[86],"h":1},{"t":4,"s":[82],"h":1},{"t":6,"s":[42],"h":1},{"t":7,"s":[41],"h":1},{"t":8,"s":[21],"h":1},{"t":9,"s":[18],"h":1},{"t":11,"s":[36.325],"h":1},{"t":12,"s":[9.325],"h":1},{"t":13,"s":[11.325],"h":1},{"t":14,"s":[14.326],"h":1},{"t":15,"s":[12.325],"h":1},{"t":16,"s":[-7],"h":1},{"t":17,"s":[-6],"h":1},{"t":18,"s":[-3],"h":1}]},"p":{"k":[{"t":1,"s":[23.75,-4.5,0],"h":1},{"t":3,"s":[41,-24.25,0],"h":1},{"t":4,"s":[41,-23,0],"h":1},{"t":6,"s":[11.25,-85.75,0],"h":1},{"t":8,"s":[66.75,-154,0],"h":1},{"t":9,"s":[62.75,-169.25,0],"h":1},{"t":11,"s":[85.25,-177,0],"h":1},{"t":12,"s":[102.75,-240,0],"h":1},{"t":13,"s":[102.75,-241.5,0],"h":1},{"t":14,"s":[102.75,-244.25,0],"h":1},{"t":15,"s":[103.75,-246.75,0],"h":1},{"t":16,"s":[98.75,-226,0],"h":1},{"t":18,"s":[99.25,-225.25,0],"h":1}]},"a":{"k":[20.449,-88.562,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-25.197,-91.554],[-5,-50.875],[22,-89.125]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":1,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":29,"ty":4,"nm":"Shape Layer 37","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[10],"h":1},{"t":7,"s":[6],"h":1},{"t":8,"s":[-2],"h":1},{"t":11,"s":[-25],"h":1},{"t":13,"s":[-14],"h":1},{"t":15,"s":[-23],"h":1},{"t":16,"s":[0],"h":1},{"t":19,"s":[-7],"h":1}]},"p":{"k":[{"t":6,"s":[93.875,-37.999,0],"h":1},{"t":7,"s":[94,-38,0],"h":1},{"t":8,"s":[68.75,-4.5,0],"h":1},{"t":9,"s":[40,-42,0],"h":1},{"t":10,"s":[40,-42,0],"h":1},{"t":11,"s":[2.25,-53.25,0],"h":1},{"t":13,"s":[-5.25,-58.5,0],"h":1},{"t":15,"s":[-6.375,-70.375,0],"h":1},{"t":16,"s":[-6,-75.125,0],"h":1},{"t":17,"s":[-7,-76.625,0],"h":1},{"t":19,"s":[-4.625,-76.5,0],"h":1}]},"a":{"k":[26.75,27.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[34.134,0.088],[16.414,9.522],[26.191,28.177],[43.912,18.743]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":30,"ty":4,"nm":"Shape Layer 5","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[10],"h":1},{"t":7,"s":[6],"h":1},{"t":8,"s":[-2],"h":1},{"t":11,"s":[-25],"h":1},{"t":13,"s":[-14],"h":1},{"t":15,"s":[-23],"h":1},{"t":16,"s":[0],"h":1},{"t":19,"s":[-7],"h":1}]},"p":{"k":[{"t":6,"s":[93.875,-37.999,0],"h":1},{"t":7,"s":[94,-38,0],"h":1},{"t":8,"s":[68.75,-4.5,0],"h":1},{"t":9,"s":[40,-42,0],"h":1},{"t":10,"s":[40,-42,0],"h":1},{"t":11,"s":[2.25,-53.25,0],"h":1},{"t":13,"s":[-5.25,-58.5,0],"h":1},{"t":15,"s":[-6.375,-70.375,0],"h":1},{"t":16,"s":[-6,-75.125,0],"h":1},{"t":17,"s":[-7,-76.625,0],"h":1},{"t":19,"s":[-4.625,-76.5,0],"h":1}]},"a":{"k":[26.75,27.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[34.134,0.088],[16.414,9.522],[26.191,28.177],[43.912,18.743]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":31,"ty":4,"nm":"Shape Layer 38","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[-106],"e":[-110]},{"t":7,"s":[-110],"h":1},{"t":8,"s":[-54],"h":1},{"t":11,"s":[-34],"h":1},{"t":13,"s":[-3],"h":1},{"t":15,"s":[-19],"h":1},{"t":16,"s":[-26],"h":1},{"t":19,"s":[-11],"h":1},{"t":20,"s":[-8],"h":1},{"t":21,"s":[0],"h":1}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-56.875,-58.875,0],"e":[-56.875,-58.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":7,"s":[-56.875,-58.375,0],"h":1},{"t":8,"s":[42.875,-115.875,0],"h":1},{"t":9,"s":[36.875,-126.625,0],"h":1},{"t":10,"s":[36.875,-126.625,0],"h":1},{"t":11,"s":[22.375,-123.375,0],"h":1},{"t":13,"s":[44.875,-125.875,0],"h":1},{"t":15,"s":[24.875,-175.375,0],"h":1},{"t":16,"s":[24.875,-184.875,0],"h":1},{"t":17,"s":[24.375,-179.375,0],"h":1},{"t":19,"s":[21.375,-174.625,0],"h":1},{"t":20,"s":[20.625,-173.625,0],"h":1},{"t":21,"s":[20.125,-172.375,0],"h":1}]},"a":{"k":[71.875,54.625,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[82.103,45.304],[75.941,41.263],[61.268,63.712],[67.43,67.752]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":32,"ty":4,"nm":"Shape Layer 6","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[-106],"e":[-110]},{"t":7,"s":[-110],"h":1},{"t":8,"s":[-54],"h":1},{"t":11,"s":[-34],"h":1},{"t":13,"s":[-3],"h":1},{"t":15,"s":[-19],"h":1},{"t":16,"s":[-26],"h":1},{"t":19,"s":[-11],"h":1},{"t":20,"s":[-8],"h":1},{"t":21,"s":[0],"h":1}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-56.875,-58.875,0],"e":[-56.875,-58.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":7,"s":[-56.875,-58.375,0],"h":1},{"t":8,"s":[42.875,-115.875,0],"h":1},{"t":9,"s":[36.875,-126.625,0],"h":1},{"t":10,"s":[36.875,-126.625,0],"h":1},{"t":11,"s":[22.375,-123.375,0],"h":1},{"t":13,"s":[44.875,-125.875,0],"h":1},{"t":15,"s":[24.875,-175.375,0],"h":1},{"t":16,"s":[24.875,-184.875,0],"h":1},{"t":17,"s":[24.375,-179.375,0],"h":1},{"t":19,"s":[21.375,-174.625,0],"h":1},{"t":20,"s":[20.625,-173.625,0],"h":1},{"t":21,"s":[20.125,-172.375,0],"h":1}]},"a":{"k":[71.875,54.625,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[82.103,45.304],[75.941,41.263],[61.268,63.712],[67.43,67.752]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":33,"ty":4,"nm":"Shape Layer 4","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[2.5],"h":1},{"t":7,"s":[-1],"h":1},{"t":8,"s":[-3],"h":1},{"t":9,"s":[-19],"h":1},{"t":10,"s":[-10],"h":1},{"t":11,"s":[-14],"h":1},{"t":13,"s":[10],"h":1},{"t":15,"s":[-7],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":6,"s":[77.125,-54.875,0],"h":1},{"t":7,"s":[76.625,-54.75,0],"h":1},{"t":8,"s":[75.875,-66.25,0],"h":1},{"t":9,"s":[58.625,-17,0],"h":1},{"t":10,"s":[58.125,-17.5,0],"h":1},{"t":11,"s":[37.625,-37.5,0],"h":1},{"t":13,"s":[15.75,-47,0],"h":1},{"t":15,"s":[18.625,-52.125,0],"h":1},{"t":16,"s":[19.125,-53.5,0],"h":1}]},"a":{"k":[49.375,38.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[53.722,25.672],[45.694,25.594],[45.618,51.422],[53.647,51.5]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":34,"ty":4,"nm":"Shape Layer 3","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[90],"h":1},{"t":9,"s":[51],"h":1},{"t":10,"s":[51],"h":1},{"t":11,"s":[-11],"h":1},{"t":13,"s":[-3],"h":1},{"t":15,"s":[5],"h":1},{"t":16,"s":[0],"h":1}]},"p":{"k":[{"t":6,"s":[99.25,-20.5,0],"h":1},{"t":8,"s":[91.5,-20.5,0],"h":1},{"t":9,"s":[-40.25,-16.5,0],"h":1},{"t":10,"s":[-38.5,-16.5,0],"h":1},{"t":11,"s":[-27.75,-4,0],"h":1},{"t":13,"s":[-23.75,-4,0],"h":1},{"t":15,"s":[-21.625,-4.375,0],"h":1},{"t":16,"s":[-20,-3.5,0],"h":1}]},"a":{"k":[42.25,65.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[59.228,5.577],[41.81,5.488],[41.644,65.279],[59.062,65.368]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":35,"ty":4,"nm":"Shape Layer 39","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[-47],"h":1},{"t":8,"s":[-21],"h":1},{"t":9,"s":[16],"h":1},{"t":10,"s":[16],"h":1},{"t":11,"s":[26],"h":1},{"t":13,"s":[5],"h":1},{"t":15,"s":[94],"h":1},{"t":17,"s":[-81],"h":1},{"t":20,"s":[41],"h":1},{"t":21,"s":[37],"h":1},{"t":22,"s":[11],"h":1}]},"p":{"k":[{"t":6,"s":[11.229,-3.423,0],"h":1},{"t":8,"s":[20.979,-126.673,0],"h":1},{"t":9,"s":[11.229,-153.923,0],"h":1},{"t":10,"s":[11.229,-153.923,0],"h":1},{"t":11,"s":[-12.521,-189.173,0],"h":1},{"t":12,"s":[-12.521,-188.673,0],"h":1},{"t":13,"s":[-26.771,-202.673,0],"h":1},{"t":15,"s":[-50.396,-205.173,0],"h":1},{"t":16,"s":[-53.146,-205.173,0],"h":1},{"t":17,"s":[-49.271,-208.048,0],"h":1},{"t":20,"s":[-47.021,-219.923,0],"h":1},{"t":21,"s":[-47.646,-219.673,0],"h":1},{"t":22,"s":[-49.771,-212.548,0],"h":1}]},"a":{"k":[38.979,-31.548,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[35.93,9.389],[31,13.999],[39.777,23.377],[44.707,18.766]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,-54.181],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":36,"ty":4,"nm":"Shape Layer 23","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[-47],"h":1},{"t":8,"s":[-21],"h":1},{"t":9,"s":[16],"h":1},{"t":10,"s":[16],"h":1},{"t":11,"s":[26],"h":1},{"t":13,"s":[5],"h":1},{"t":15,"s":[94],"h":1},{"t":17,"s":[-81],"h":1},{"t":20,"s":[41],"h":1},{"t":21,"s":[37],"h":1},{"t":22,"s":[11],"h":1}]},"p":{"k":[{"t":6,"s":[11.229,-3.423,0],"h":1},{"t":8,"s":[20.979,-126.673,0],"h":1},{"t":9,"s":[11.229,-153.923,0],"h":1},{"t":10,"s":[11.229,-153.923,0],"h":1},{"t":11,"s":[-12.521,-189.173,0],"h":1},{"t":12,"s":[-12.521,-188.673,0],"h":1},{"t":13,"s":[-26.771,-202.673,0],"h":1},{"t":15,"s":[-50.396,-205.173,0],"h":1},{"t":16,"s":[-53.146,-205.173,0],"h":1},{"t":17,"s":[-49.271,-208.048,0],"h":1},{"t":20,"s":[-47.021,-219.923,0],"h":1},{"t":21,"s":[-47.646,-219.673,0],"h":1},{"t":22,"s":[-49.771,-212.548,0],"h":1}]},"a":{"k":[38.979,-31.548,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[35.93,9.389],[31,13.999],[39.777,23.377],[44.707,18.766]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.32,0.5,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,-54.181],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":37,"ty":4,"nm":"Shape Layer 40","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[-29],"h":1},{"t":8,"s":[-25],"h":1},{"t":9,"s":[10],"h":1},{"t":10,"s":[10],"h":1},{"t":11,"s":[30],"h":1},{"t":13,"s":[30],"h":1},{"t":17,"s":[12],"h":1}]},"p":{"k":[{"t":5,"s":[59.75,-26.5,0],"h":1},{"t":8,"s":[53.5,-59.75,0],"h":1},{"t":9,"s":[-15.5,-63.75,0],"h":1},{"t":10,"s":[-15.5,-63.75,0],"h":1},{"t":11,"s":[-33.75,-143.25,0],"h":1},{"t":13,"s":[-39.5,-139.5,0],"h":1},{"t":14,"s":[-40,-139,0],"h":1},{"t":15,"s":[-43.25,-136,0],"h":1},{"t":16,"s":[-48.75,-134.25,0],"h":1},{"t":17,"s":[-35.25,-168,0],"h":1},{"t":18,"s":[-41.5,-167.5,0],"h":1},{"t":20,"s":[-42.625,-172.125,0],"h":1},{"t":21,"s":[-42.625,-172.625,0],"h":1}]},"a":{"k":[48,9.5,0]},"s":{"k":[100,106.123,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[60.5,0.666],[37.322,1.33],[37.143,21.748],[60.321,21.084]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":21,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":38,"ty":4,"nm":"Shape Layer 8","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":5,"s":[-29],"h":1},{"t":8,"s":[-25],"h":1},{"t":9,"s":[10],"h":1},{"t":10,"s":[10],"h":1},{"t":11,"s":[30],"h":1},{"t":13,"s":[30],"h":1},{"t":17,"s":[12],"h":1}]},"p":{"k":[{"t":5,"s":[59.75,-26.5,0],"h":1},{"t":8,"s":[53.5,-59.75,0],"h":1},{"t":9,"s":[-15.5,-63.75,0],"h":1},{"t":10,"s":[-15.5,-63.75,0],"h":1},{"t":11,"s":[-33.75,-143.25,0],"h":1},{"t":13,"s":[-39.5,-139.5,0],"h":1},{"t":14,"s":[-40,-139,0],"h":1},{"t":15,"s":[-43.25,-136,0],"h":1},{"t":16,"s":[-48.75,-134.25,0],"h":1},{"t":17,"s":[-35.25,-168,0],"h":1},{"t":18,"s":[-41.5,-167.5,0],"h":1},{"t":20,"s":[-42.625,-172.125,0],"h":1},{"t":21,"s":[-42.625,-172.625,0],"h":1}]},"a":{"k":[48,9.5,0]},"s":{"k":[100,106.123,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[60.5,0.666],[37.322,1.33],[37.143,21.748],[60.321,21.084]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":6,"op":21,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":39,"ty":4,"nm":"Shape Layer 2","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":6,"s":[-37],"h":1},{"t":7,"s":[-34],"h":1},{"t":8,"s":[-65],"h":1},{"t":9,"s":[-58],"h":1},{"t":10,"s":[-60],"h":1},{"t":11,"s":[-12],"h":1},{"t":13,"s":[-23],"h":1},{"t":15,"s":[13],"h":1},{"t":16,"s":[13],"h":1},{"t":17,"s":[0],"h":1},{"t":18,"s":[0],"h":1}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[-108.25,-19.5,0],"e":[-108.25,-19.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"n":"0p833_1_0p167_0","t":7,"s":[-108.25,-19.5,0],"e":[-26.5,-16.75,0],"to":[0,0,0],"ti":[0,0,0]},{"t":8,"s":[-26.5,-16.75,0],"h":1},{"t":9,"s":[22,-77.75,0],"h":1},{"t":10,"s":[22,-77.75,0],"h":1},{"t":11,"s":[34.75,-102.75,0],"h":1},{"t":13,"s":[31.5,-138.5,0],"h":1},{"t":15,"s":[30.75,-152.5,0],"h":1},{"t":16,"s":[30,-167.25,0],"h":1},{"t":17,"s":[33.5,-170.25,0],"h":1},{"t":19,"s":[33.75,-170,0],"h":1}]},"a":{"k":[35.25,30.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[64.5,0.098],[36.676,0.041],[36.425,29.402],[64.249,29.459]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0.25,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":6,"op":24,"st":-1,"bm":0,"sr":1},{"ddd":0,"ind":40,"ty":4,"nm":"Shape Layer 7","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":3,"s":[-168],"h":1},{"t":4,"s":[-167],"h":1},{"t":5,"s":[-169],"h":1},{"t":6,"s":[-36],"h":1},{"t":8,"s":[-29],"h":1},{"t":9,"s":[-37],"h":1},{"t":10,"s":[-38],"h":1},{"t":11,"s":[-21],"h":1},{"t":13,"s":[-23],"h":1},{"t":15,"s":[-22],"h":1},{"t":17,"s":[1],"h":1},{"t":20,"s":[4],"h":1}]},"p":{"k":[{"t":3,"s":[49.75,-3,0],"h":1},{"t":4,"s":[49.75,-3,0],"h":1},{"t":6,"s":[21.25,-94.5,0],"h":1},{"t":8,"s":[-33.5,-106.75,0],"h":1},{"t":9,"s":[-27,-195,0],"h":1},{"t":10,"s":[-27,-194.75,0],"h":1},{"t":11,"s":[-30.25,-206.75,0],"h":1},{"t":13,"s":[-31.25,-201.75,0],"h":1},{"t":15,"s":[-37.125,-200.5,0],"h":1},{"t":16,"s":[-40.625,-197.25,0],"h":1},{"t":17,"s":[-37.75,-209.625,0],"h":1},{"t":20,"s":[-39.625,-214.625,0],"h":1},{"t":22,"s":[-38.625,-213.125,0],"h":1}]},"a":{"k":[4.339,-44.799,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.235,-30.643],[1.959,-43.363],[-29.824,-17.706],[-19.548,-4.986]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":41,"ty":4,"nm":"Shape Layer 24","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"t":3,"s":[-147],"h":1},{"t":6,"s":[-104],"h":1},{"t":8,"s":[-77],"h":1},{"t":9,"s":[-30],"h":1},{"t":10,"s":[-30],"h":1},{"t":11,"s":[-21.697],"h":1},{"t":13,"s":[-15],"h":1},{"t":15,"s":[-8],"h":1},{"t":17,"s":[0],"h":1},{"t":19,"s":[0],"h":1}]},"p":{"k":[{"t":3,"s":[16.5,-5,0],"h":1},{"t":6,"s":[26.5,-3.25,0],"h":1},{"t":8,"s":[12,-47.5,0],"h":1},{"t":9,"s":[-46.25,-91,0],"h":1},{"t":10,"s":[-45.5,-91,0],"h":1},{"t":11,"s":[-44,-96.5,0],"h":1},{"t":13,"s":[-46,-102.75,0],"h":1},{"t":15,"s":[-41.75,-110,0],"h":1},{"t":16,"s":[-33.75,-116,0],"h":1},{"t":17,"s":[-31,-122.75,0],"h":1},{"t":19,"s":[-30.5,-123,0],"h":1}]},"a":{"k":[-32.5,-21,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[45.687,-42.846],[31.934,-63.724],[-32.687,-21.154],[-18.934,-0.276]],"c":true}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":2,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":3,"op":24,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":42,"ty":4,"nm":"Y Outlines","parent":43,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[103.725,-226.593],[50.853,-226.593],[1.003,-148.041],[-48.546,-226.593],[-102.022,-226.593],[-22.563,-106.348],[-22.563,0],[24.568,0],[24.568,-107.254]],"c":true}},"nm":"Y 2"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":24,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":43,"ty":1,"nm":"ResizerTemp","parent":44,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":44,"ty":1,"nm":"White Solid 54","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":29,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/mobilo/Z.json b/example/shared/src/commonMain/composeResources/files/mobilo/Z.json new file mode 100644 index 00000000..0a0c9192 --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/mobilo/Z.json @@ -0,0 +1 @@ +{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"TOP DROP 3","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[250,300,0],"e":[250,301.5,0],"to":[0,0.25,0],"ti":[0,-0.25,0]},{"t":16}]},"a":{"k":[0,0,0]},"s":{"k":[-100,-100,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[-0.059,0.043],[0,0],[0,0],[-0.002,-0.011]],"o":[[0.059,-0.043],[0,0],[0,0],[0.002,0.011]],"v":[[-7.059,-5.094],[-7.047,-5.213],[-7.179,-5.259],[-7.145,-5.139]],"c":true}],"e":[{"i":[[1.775,-1.735],[0,0],[0,0],[0.055,0.464]],"o":[[-1.775,1.735],[0,0],[0,0],[-0.055,-0.464]],"v":[[-14.267,-17.754],[-14.647,-12.913],[-10.679,-11.061],[-11.707,-15.931]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[1.775,-1.735],[0,0],[0,0],[0.055,0.464]],"o":[[-1.775,1.735],[0,0],[0,0],[-0.055,-0.464]],"v":[[-14.267,-17.754],[-14.647,-12.913],[-10.679,-11.061],[-11.707,-15.931]],"c":true}],"e":[{"i":[[3.034,-0.979],[0,0],[0,0],[-0.233,0.683]],"o":[[-3.034,0.979],[0,0],[0,0],[0.233,-0.683]],"v":[[-16.131,-32.36],[-19.6,-25.997],[-16.431,-20.294],[-14.483,-27.816]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[3.034,-0.979],[0,0],[0,0],[-0.233,0.683]],"o":[[-3.034,0.979],[0,0],[0,0],[0.233,-0.683]],"v":[[-16.131,-32.36],[-19.6,-25.997],[-16.431,-20.294],[-14.483,-27.816]],"c":true}],"e":[{"i":[[3.69,5.366],[0,0],[0,0],[-1.471,-0.056]],"o":[[-3.69,-5.366],[0,0],[0,0],[1.471,0.056]],"v":[[2.373,-54.406],[-8.993,-52.293],[-11.891,-44.664],[-4.87,-49.795]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[3.69,5.366],[0,0],[0,0],[-1.471,-0.056]],"o":[[-3.69,-5.366],[0,0],[0,0],[1.471,0.056]],"v":[[2.373,-54.406],[-8.993,-52.293],[-11.891,-44.664],[-4.87,-49.795]],"c":true}],"e":[{"i":[[-4.558,6.16],[0,0],[0,0],[-1.828,-2.392]],"o":[[4.558,-6.16],[0,0],[0,0],[1.828,2.392]],"v":[[40.098,-49.901],[28.836,-63.081],[14.084,-64.682],[25.709,-57.057]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-4.558,6.16],[0,0],[0,0],[-1.828,-2.392]],"o":[[4.558,-6.16],[0,0],[0,0],[1.828,2.392]],"v":[[40.098,-49.901],[28.836,-63.081],[14.084,-64.682],[25.709,-57.057]],"c":true}],"e":[{"i":[[-8.571,-2.748],[0,0],[0,0],[1.111,-2.397]],"o":[[8.571,2.748],[0,0],[0,0],[-1.111,2.397]],"v":[[46.598,-20.183],[51.985,-34.535],[47.19,-48.45],[44.423,-35.941]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-8.571,-2.748],[0,0],[0,0],[1.111,-2.397]],"o":[[8.571,2.748],[0,0],[0,0],[-1.111,2.397]],"v":[[46.598,-20.183],[51.985,-34.535],[47.19,-48.45],[44.423,-35.941]],"c":true}],"e":[{"i":[[-9.879,-3.02],[0,0],[0,0],[1.175,-2.804]],"o":[[9.879,3.02],[0,0],[0,0],[-1.175,2.804]],"v":[[34.379,19.48],[44.973,5.219],[45.471,-12.835],[36.796,3.736]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-9.879,-3.02],[0,0],[0,0],[1.175,-2.804]],"o":[[9.879,3.02],[0,0],[0,0],[-1.175,2.804]],"v":[[34.379,19.48],[44.973,5.219],[45.471,-12.835],[36.796,3.736]],"c":true}],"e":[{"i":[[0.146,-5.048],[-6.063,0.777],[0,0],[2.653,0.635]],"o":[[-0.158,5.45],[5.37,-0.688],[0.538,0.269],[-2.653,-0.635]],"v":[[14.479,28.298],[20.597,33.612],[32.645,22.718],[18.903,24.635]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0.146,-5.048],[-6.063,0.777],[0,0],[2.653,0.635]],"o":[[-0.158,5.45],[5.37,-0.688],[0.538,0.269],[-2.653,-0.635]],"v":[[14.479,28.298],[20.597,33.612],[32.645,22.718],[18.903,24.635]],"c":true}],"e":[{"i":[[0.058,-0.035],[0,0],[0,0],[0.005,0.026]],"o":[[-0.058,0.035],[0,0],[0,0],[-0.005,-0.026]],"v":[[-11.567,-3.255],[-11.531,-3.105],[-11.442,-3.027],[-11.484,-3.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0.058,-0.035],[0,0],[0,0],[0.005,0.026]],"o":[[-0.058,0.035],[0,0],[0,0],[-0.005,-0.026]],"v":[[-11.567,-3.255],[-11.531,-3.105],[-11.442,-3.027],[-11.484,-3.144]],"c":true}],"e":[{"i":[[9.184,-4.82],[0,0],[0,0],[0.312,4.078]],"o":[[-9.184,4.82],[0,0],[0,0],[-0.312,-4.078]],"v":[[-47.917,-53.54],[-44.918,-30.345],[-33.027,-17.517],[-37.37,-35.874]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[9.184,-4.82],[0,0],[0,0],[0.312,4.078]],"o":[[-9.184,4.82],[0,0],[0,0],[-0.312,-4.078]],"v":[[-47.917,-53.54],[-44.918,-30.345],[-33.027,-17.517],[-37.37,-35.874]],"c":true}],"e":[{"i":[[15.061,-4.613],[0,0],[0,0],[-1.056,6.558]],"o":[[-15.061,4.613],[0,0],[0,0],[1.056,-6.558]],"v":[[-57.55,-116.79],[-60.935,-88.168],[-55.478,-66.837],[-45.818,-92.837]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[15.061,-4.613],[0,0],[0,0],[-1.056,6.558]],"o":[[-15.061,4.613],[0,0],[0,0],[1.056,-6.558]],"v":[[-57.55,-116.79],[-60.935,-88.168],[-55.478,-66.837],[-45.818,-92.837]],"c":true}],"e":[{"i":[[14.875,0.201],[0,0],[0,0],[-2.833,6.438]],"o":[[-14.875,-0.201],[0,0],[0,0],[2.833,-6.438]],"v":[[-36.875,-202.799],[-51.514,-165.174],[-47.264,-136],[-38.056,-167.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[14.875,0.201],[0,0],[0,0],[-2.833,6.438]],"o":[[-14.875,-0.201],[0,0],[0,0],[2.833,-6.438]],"v":[[-36.875,-202.799],[-51.514,-165.174],[-47.264,-136],[-38.056,-167.387]],"c":true}],"e":[{"i":[[5.541,11.84],[9.535,-2.397],[0,0],[-7.107,0.354]],"o":[[-5.541,-11.84],[-9.206,2.314],[0,0],[7.107,-0.354]],"v":[[22.067,-216.659],[-7.101,-221.041],[-29.656,-203.658],[-3.919,-209.548]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[5.541,11.84],[9.535,-2.397],[0,0],[-7.107,0.354]],"o":[[-5.541,-11.84],[-9.206,2.314],[0,0],[7.107,-0.354]],"v":[[22.067,-216.659],[-7.101,-221.041],[-29.656,-203.658],[-3.919,-209.548]],"c":true}],"e":[{"i":[[0.754,7.59],[0,0],[0,0],[-3.592,-2.242]],"o":[[-0.754,-7.59],[0,0],[0,0],[3.592,2.242]],"v":[[42.528,-196.897],[28.502,-205.508],[14.622,-208.184],[28.933,-198.944]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0.754,7.59],[0,0],[0,0],[-3.592,-2.242]],"o":[[-0.754,-7.59],[0,0],[0,0],[3.592,2.242]],"v":[[42.528,-196.897],[28.502,-205.508],[14.622,-208.184],[28.933,-198.944]],"c":true}],"e":[{"i":[[-1.738,4.244],[0,0],[0,0],[-1.194,-2.256]],"o":[[1.738,-4.244],[0,0],[0,0],[1.194,2.256]],"v":[[58.544,-160.52],[53.841,-169.253],[47.554,-174.798],[52.226,-165.648]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-1.738,4.244],[0,0],[0,0],[-1.194,-2.256]],"o":[[1.738,-4.244],[0,0],[0,0],[1.194,2.256]],"v":[[58.544,-160.52],[53.841,-169.253],[47.554,-174.798],[52.226,-165.648]],"c":true}],"e":[{"i":[[-3.56,3.124],[0,0],[0,0],[-0.024,-1.478]],"o":[[3.56,-3.124],[0,0],[0,0],[0.024,1.478]],"v":[[63.801,-139.819],[63.637,-145.534],[60.548,-148.879],[60.488,-142.869]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-3.56,3.124],[0,0],[0,0],[-0.024,-1.478]],"o":[[3.56,-3.124],[0,0],[0,0],[0.024,1.478]],"v":[[63.801,-139.819],[63.637,-145.534],[60.548,-148.879],[60.488,-142.869]],"c":true}],"e":[{"i":[[-4.057,2.444],[0,0],[0,0],[0.239,-1.459]],"o":[[4.057,-2.444],[0,0],[0,0],[-0.239,1.459]],"v":[[65.328,-130.785],[66.179,-136.439],[63.732,-140.279],[62.608,-134.374]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-4.057,2.444],[0,0],[0,0],[0.239,-1.459]],"o":[[4.057,-2.444],[0,0],[0,0],[-0.239,1.459]],"v":[[65.328,-130.785],[66.179,-136.439],[63.732,-140.279],[62.608,-134.374]],"c":true}],"e":[{"i":[[1.771,0.98099999999999],[0.79675,-1.87975],[0,0],[-1.68225,1.38925]],"o":[[-1.771,-0.98099999999999],[-0.79674999999999,1.87975],[0,0],[1.68225,-1.38925]],"v":[[75.208,-137.288],[71.40075,-134.75475],[70.25,-130.75],[74.05725,-133.28325]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[1.771,0.98099999999999],[0.79675,-1.87975],[0,0],[-1.68225,1.38925]],"o":[[-1.771,-0.98099999999999],[-0.79674999999999,1.87975],[0,0],[1.68225,-1.38925]],"v":[[75.208,-137.288],[71.40075,-134.75475],[70.25,-130.75],[74.05725,-133.28325]],"c":true}],"e":[{"i":[[1.81,1.95750000000001],[1.39637499999999,-1.84787499999999],[0,0],[-2.233,0.97762499999999]],"o":[[-1.53649999999999,-1.52349999999998],[-1.39637500000001,1.84787499999999],[0,0],[2.23299999999999,-0.97762499999999]],"v":[[81.88,-141.703],[77.166625,-139.911625],[74.758,-135.835],[79.6765,-137.300875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[1.81,1.95750000000001],[1.39637499999999,-1.84787499999999],[0,0],[-2.233,0.97762499999999]],"o":[[-1.53649999999999,-1.52349999999998],[-1.39637500000001,1.84787499999999],[0,0],[2.23299999999999,-0.97762499999999]],"v":[[81.88,-141.703],[77.166625,-139.911625],[74.758,-135.835],[79.6765,-137.300875]],"c":true}],"e":[{"i":[[1.52900000000001,2.4205],[1.64987499999999,-1.49837500000001],[0,0],[-2.30125000000001,0.46712500000001]],"o":[[-1.0765,-1.7045],[-1.64987500000001,1.49837500000001],[0,0],[2.30125,-0.46712500000001]],"v":[[89.192,-145.341],[84.546625,-144.474875],[81.516,-141.052],[86.50075,-141.381125]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[1.52900000000001,2.4205],[1.64987499999999,-1.49837500000001],[0,0],[-2.30125000000001,0.46712500000001]],"o":[[-1.0765,-1.7045],[-1.64987500000001,1.49837500000001],[0,0],[2.30125,-0.46712500000001]],"v":[[89.192,-145.341],[84.546625,-144.474875],[81.516,-141.052],[86.50075,-141.381125]],"c":true}],"e":[{"i":[[0.6335,2.78400000000002],[2.06425,-0.82000000000002],[0,0],[-2.334125,-0.36599999999999]],"o":[[-0.446,-1.96000000000001],[-2.06425,0.81999999999999],[0,0],[2.334125,0.36599999999999]],"v":[[96.947,-146.181],[92.261,-146.991],[88.244,-144.861],[93.070625,-143.433]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0.6335,2.78400000000002],[2.06425,-0.82000000000002],[0,0],[-2.334125,-0.36599999999999]],"o":[[-0.446,-1.96000000000001],[-2.06425,0.81999999999999],[0,0],[2.334125,0.36599999999999]],"v":[[96.947,-146.181],[92.261,-146.991],[88.244,-144.861],[93.070625,-143.433]],"c":true}],"e":[{"i":[[-0.1465,2.37300000000002],[1.87150000000001,-0.12125],[0,0],[-1.80912500000001,-0.88974999999999]],"o":[[0.10299999999999,-1.67100000000002],[-1.8715,0.12125],[0,0],[1.80912500000001,0.88975000000002]],"v":[[105.742,-143.867],[102.12775,-145.71325],[98.359,-145.053],[101.940625,-142.68025]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.1465,2.37300000000002],[1.87150000000001,-0.12125],[0,0],[-1.80912500000001,-0.88974999999999]],"o":[[0.10299999999999,-1.67100000000002],[-1.8715,0.12125],[0,0],[1.80912500000001,0.88975000000002]],"v":[[105.742,-143.867],[102.12775,-145.71325],[98.359,-145.053],[101.940625,-142.68025]],"c":true}],"e":[{"i":[[-0.7085,1.77249999999998],[1.28800000000001,0.25999999999999],[0,0],[-0.986125,-1.01512499999998]],"o":[[0.49900000000001,-1.24799999999999],[-1.288,-0.26000000000002],[0,0],[0.986125,1.01512500000001]],"v":[[111.141,-139.577],[109.18875,-141.657],[106.488,-141.865],[108.283125,-139.391625]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-0.7085,1.77249999999998],[1.28800000000001,0.25999999999999],[0,0],[-0.986125,-1.01512499999998]],"o":[[0.49900000000001,-1.24799999999999],[-1.288,-0.26000000000002],[0,0],[0.986125,1.01512500000001]],"v":[[111.141,-139.577],[109.18875,-141.657],[106.488,-141.865],[108.283125,-139.391625]],"c":true}],"e":[{"i":[[-0.98350000000001,0.97],[0.512125,0.51075],[0,0],[-0.093125,-0.92400000000001]],"o":[[0.69250000000001,-0.68300000000002],[-0.512125,-0.51075],[0,0],[0.093125,0.92400000000001]],"v":[[114.49,-134.509],[114.331375,-136.38425],[113.134,-137.235],[113.074375,-135.1445]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.98350000000001,0.97],[0.512125,0.51075],[0,0],[-0.093125,-0.92400000000001]],"o":[[0.69250000000001,-0.68300000000002],[-0.512125,-0.51075],[0,0],[0.093125,0.92400000000001]],"v":[[114.49,-134.509],[114.331375,-136.38425],[113.134,-137.235],[113.074375,-135.1445]],"c":true}],"e":[{"i":[[-0.93900000000001,0.149],[0.0485,0.49549999999999],[0,0],[0.3515,-0.559]],"o":[[0.661,-0.10499999999999],[-0.0485,-0.49549999999999],[0,0],[-0.3515,0.559]],"v":[[115.455,-129.251],[116.18425,-130.37325],[115.922,-131.338],[114.98425,-130.18275]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.93900000000001,0.149],[0.0485,0.49549999999999],[0,0],[0.3515,-0.559]],"o":[[0.661,-0.10499999999999],[-0.0485,-0.49549999999999],[0,0],[-0.3515,0.559]],"v":[[115.455,-129.251],[116.18425,-130.37325],[115.922,-131.338],[114.98425,-130.18275]],"c":true}],"e":[{"i":[[-0.014,-0.01249999999999],[0.00075,-0.04225],[0,0],[0.00525,0.04762499999998]],"o":[[0.01000000000001,0.00900000000001],[-0.00075,0.04225],[0,0],[-0.00525,-0.04762500000001]],"v":[[113.605,-128.928],[113.616,-128.83225],[113.612,-128.75],[113.598,-128.848375]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[64.812,-131.938],[64.812,-131.938]],"c":true}],"e":[{"i":[[3.62,3.915],[0,0]],"o":[[-3.073,-3.047],[0,0]],"v":[[81.88,-141.703],[74.758,-135.835]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[3.62,3.915],[0,0]],"o":[[-3.073,-3.047],[0,0]],"v":[[81.88,-141.703],[74.758,-135.835]],"c":true}],"e":[{"i":[[3.058,4.841],[0,0]],"o":[[-2.153,-3.409],[0,0]],"v":[[89.192,-145.341],[81.516,-141.052]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.714,"s":[{"i":[[3.058,4.841],[0,0]],"o":[[-2.153,-3.409],[0,0]],"v":[[89.192,-145.341],[81.516,-141.052]],"c":true}],"e":[{"i":[[1.267,5.568],[0,0]],"o":[[-0.892,-3.92],[0,0]],"v":[[96.947,-146.181],[88.244,-144.861]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.571,"s":[{"i":[[1.267,5.568],[0,0]],"o":[[-0.892,-3.92],[0,0]],"v":[[96.947,-146.181],[88.244,-144.861]],"c":true}],"e":[{"i":[[-0.293,4.746],[0,0]],"o":[[0.206,-3.342],[0,0]],"v":[[105.742,-143.867],[98.359,-145.053]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.429,"s":[{"i":[[-0.293,4.746],[0,0]],"o":[[0.206,-3.342],[0,0]],"v":[[105.742,-143.867],[98.359,-145.053]],"c":true}],"e":[{"i":[[-1.417,3.545],[0,0]],"o":[[0.998,-2.496],[0,0]],"v":[[111.141,-139.577],[106.488,-141.865]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.286,"s":[{"i":[[-1.417,3.545],[0,0]],"o":[[0.998,-2.496],[0,0]],"v":[[111.141,-139.577],[106.488,-141.865]],"c":true}],"e":[{"i":[[-1.967,1.94],[0,0]],"o":[[1.385,-1.366],[0,0]],"v":[[114.49,-134.509],[113.134,-137.235]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.143,"s":[{"i":[[-1.967,1.94],[0,0]],"o":[[1.385,-1.366],[0,0]],"v":[[114.49,-134.509],[113.134,-137.235]],"c":true}],"e":[{"i":[[0.023,0.093],[0,0]],"o":[[0.023,-0.095],[0,0]],"v":[[116.477,-129.03],[116.377,-129.067]],"c":true}]},{"t":22}]},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0.039,-0.017],[0,0]],"o":[[-0.039,0.017],[0,0]],"v":[[64.914,-128.716],[64.928,-128.636]],"c":true}],"e":[{"i":[[2.358,-1.023],[0,0]],"o":[[-2.358,1.023],[0,0]],"v":[[64.164,-135.488],[65.023,-130.607]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[2.358,-1.023],[0,0]],"o":[[-2.358,1.023],[0,0]],"v":[[64.164,-135.488],[65.023,-130.607]],"c":true}],"e":[{"i":[[1.509,-2.081],[0,0]],"o":[[-1.509,2.081],[0,0]],"v":[[58.616,-143.419],[61.84,-139.655]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[1.509,-2.081],[0,0]],"o":[[-1.509,2.081],[0,0]],"v":[[58.616,-143.419],[61.84,-139.655]],"c":true}],"e":[{"i":[[0.413,-2.579],[0,0]],"o":[[-0.413,2.579],[0,0]],"v":[[52.696,-145.814],[56.876,-143.49]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0.413,-2.579],[0,0]],"o":[[-0.413,2.579],[0,0]],"v":[[52.696,-145.814],[56.876,-143.49]],"c":true}],"e":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.105,-146.431],[53,-146.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.105,-146.431],[53,-146.25]],"c":true}],"e":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[39.239,-144.884],[45.066,-145.83]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[39.239,-144.884],[45.066,-145.83]],"c":true}],"e":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[36.046,-141.985],[40.276,-144.482]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[36.046,-141.985],[40.276,-144.482]],"c":true}],"e":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[32.508,-138.246],[34.209,-140.562]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[32.508,-138.246],[34.209,-140.562]],"c":true}],"e":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[32.049,-134.594],[32.5,-136.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[32.049,-134.594],[32.5,-136.875]],"c":true}],"e":[{"i":[[0.133,-0.014],[0,0]],"o":[[-0.133,0.014],[0,0]],"v":[[30.998,-131.915],[30.966,-131.991]],"c":true}]},{"t":24}]},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0.039,-0.017],[0,0]],"o":[[-0.039,0.017],[0,0]],"v":[[64.914,-128.716],[64.928,-128.636]],"c":true}],"e":[{"i":[[2.461,-1.762],[0,0]],"o":[[-2.09,1.496],[0,0]],"v":[[62.914,-134.613],[65.273,-129.857]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[2.461,-1.762],[0,0]],"o":[[-2.09,1.496],[0,0]],"v":[[62.914,-134.613],[65.273,-129.857]],"c":true}],"e":[{"i":[[2.287,-1.25],[0,0]],"o":[[-3.741,2.044],[0,0]],"v":[[58.366,-142.044],[61.215,-138.03]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[2.287,-1.25],[0,0]],"o":[[-3.741,2.044],[0,0]],"v":[[58.366,-142.044],[61.215,-138.03]],"c":true}],"e":[{"i":[[2.429,-2.061],[0,0]],"o":[[-1.992,1.689],[0,0]],"v":[[54.321,-147.439],[58.251,-144.115]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[2.429,-2.061],[0,0]],"o":[[-1.992,1.689],[0,0]],"v":[[54.321,-147.439],[58.251,-144.115]],"c":true}],"e":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.98,-148.431],[52.875,-147.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.98,-148.431],[52.875,-147.5]],"c":true}],"e":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[38.739,-147.259],[44.066,-148.08]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[38.739,-147.259],[44.066,-148.08]],"c":true}],"e":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[34.046,-142.735],[38.401,-146.732]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[34.046,-142.735],[38.401,-146.732]],"c":true}],"e":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[33.133,-137.621],[34.209,-140.562]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[33.133,-137.621],[34.209,-140.562]],"c":true}],"e":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[31.674,-133.219],[32.5,-136.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[31.674,-133.219],[32.5,-136.875]],"c":true}],"e":[{"i":[[0.133,-0.014],[0,0]],"o":[[-0.133,0.014],[0,0]],"v":[[30.998,-131.915],[30.966,-131.991]],"c":true}]},{"t":25}]},"nm":"Path 4"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"TOP DROP 2","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[250,300,0],"e":[250,301.5,0],"to":[0,0.25,0],"ti":[0,-0.25,0]},{"t":16}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[-0.059,0.043],[0,0],[0,0],[-0.002,-0.011]],"o":[[0.059,-0.043],[0,0],[0,0],[0.002,0.011]],"v":[[-7.059,-5.094],[-7.047,-5.213],[-7.179,-5.259],[-7.145,-5.139]],"c":true}],"e":[{"i":[[1.775,-1.735],[0,0],[0,0],[0.055,0.464]],"o":[[-1.775,1.735],[0,0],[0,0],[-0.055,-0.464]],"v":[[-14.267,-17.754],[-14.647,-12.913],[-10.679,-11.061],[-11.707,-15.931]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":1,"s":[{"i":[[1.775,-1.735],[0,0],[0,0],[0.055,0.464]],"o":[[-1.775,1.735],[0,0],[0,0],[-0.055,-0.464]],"v":[[-14.267,-17.754],[-14.647,-12.913],[-10.679,-11.061],[-11.707,-15.931]],"c":true}],"e":[{"i":[[3.034,-0.979],[0,0],[0,0],[-0.233,0.683]],"o":[[-3.034,0.979],[0,0],[0,0],[0.233,-0.683]],"v":[[-16.131,-32.36],[-19.6,-25.997],[-16.431,-20.294],[-14.483,-27.816]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[{"i":[[3.034,-0.979],[0,0],[0,0],[-0.233,0.683]],"o":[[-3.034,0.979],[0,0],[0,0],[0.233,-0.683]],"v":[[-16.131,-32.36],[-19.6,-25.997],[-16.431,-20.294],[-14.483,-27.816]],"c":true}],"e":[{"i":[[3.69,5.366],[0,0],[0,0],[-1.471,-0.056]],"o":[[-3.69,-5.366],[0,0],[0,0],[1.471,0.056]],"v":[[2.373,-54.406],[-8.993,-52.293],[-11.891,-44.664],[-4.87,-49.795]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[3.69,5.366],[0,0],[0,0],[-1.471,-0.056]],"o":[[-3.69,-5.366],[0,0],[0,0],[1.471,0.056]],"v":[[2.373,-54.406],[-8.993,-52.293],[-11.891,-44.664],[-4.87,-49.795]],"c":true}],"e":[{"i":[[-4.558,6.16],[0,0],[0,0],[-1.828,-2.392]],"o":[[4.558,-6.16],[0,0],[0,0],[1.828,2.392]],"v":[[40.098,-49.901],[28.836,-63.081],[14.084,-64.682],[25.709,-57.057]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[-4.558,6.16],[0,0],[0,0],[-1.828,-2.392]],"o":[[4.558,-6.16],[0,0],[0,0],[1.828,2.392]],"v":[[40.098,-49.901],[28.836,-63.081],[14.084,-64.682],[25.709,-57.057]],"c":true}],"e":[{"i":[[-8.571,-2.748],[0,0],[0,0],[1.111,-2.397]],"o":[[8.571,2.748],[0,0],[0,0],[-1.111,2.397]],"v":[[46.598,-20.183],[51.985,-34.535],[47.19,-48.45],[44.423,-35.941]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[-8.571,-2.748],[0,0],[0,0],[1.111,-2.397]],"o":[[8.571,2.748],[0,0],[0,0],[-1.111,2.397]],"v":[[46.598,-20.183],[51.985,-34.535],[47.19,-48.45],[44.423,-35.941]],"c":true}],"e":[{"i":[[-9.879,-3.02],[0,0],[0,0],[1.175,-2.804]],"o":[[9.879,3.02],[0,0],[0,0],[-1.175,2.804]],"v":[[34.379,19.48],[44.973,5.219],[45.471,-12.835],[36.796,3.736]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[-9.879,-3.02],[0,0],[0,0],[1.175,-2.804]],"o":[[9.879,3.02],[0,0],[0,0],[-1.175,2.804]],"v":[[34.379,19.48],[44.973,5.219],[45.471,-12.835],[36.796,3.736]],"c":true}],"e":[{"i":[[0.146,-5.048],[-6.063,0.777],[0,0],[2.653,0.635]],"o":[[-0.158,5.45],[5.37,-0.688],[0.538,0.269],[-2.653,-0.635]],"v":[[14.479,28.298],[20.597,33.612],[32.645,22.718],[18.903,24.635]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0.146,-5.048],[-6.063,0.777],[0,0],[2.653,0.635]],"o":[[-0.158,5.45],[5.37,-0.688],[0.538,0.269],[-2.653,-0.635]],"v":[[14.479,28.298],[20.597,33.612],[32.645,22.718],[18.903,24.635]],"c":true}],"e":[{"i":[[0.058,-0.035],[0,0],[0,0],[0.005,0.026]],"o":[[-0.058,0.035],[0,0],[0,0],[-0.005,-0.026]],"v":[[-11.567,-3.255],[-11.531,-3.105],[-11.442,-3.027],[-11.484,-3.144]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0.058,-0.035],[0,0],[0,0],[0.005,0.026]],"o":[[-0.058,0.035],[0,0],[0,0],[-0.005,-0.026]],"v":[[-11.567,-3.255],[-11.531,-3.105],[-11.442,-3.027],[-11.484,-3.144]],"c":true}],"e":[{"i":[[9.184,-4.82],[0,0],[0,0],[0.312,4.078]],"o":[[-9.184,4.82],[0,0],[0,0],[-0.312,-4.078]],"v":[[-47.917,-53.54],[-44.918,-30.345],[-33.027,-17.517],[-37.37,-35.874]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[9.184,-4.82],[0,0],[0,0],[0.312,4.078]],"o":[[-9.184,4.82],[0,0],[0,0],[-0.312,-4.078]],"v":[[-47.917,-53.54],[-44.918,-30.345],[-33.027,-17.517],[-37.37,-35.874]],"c":true}],"e":[{"i":[[15.061,-4.613],[0,0],[0,0],[-1.056,6.558]],"o":[[-15.061,4.613],[0,0],[0,0],[1.056,-6.558]],"v":[[-57.55,-116.79],[-60.935,-88.168],[-55.478,-66.837],[-45.818,-92.837]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[15.061,-4.613],[0,0],[0,0],[-1.056,6.558]],"o":[[-15.061,4.613],[0,0],[0,0],[1.056,-6.558]],"v":[[-57.55,-116.79],[-60.935,-88.168],[-55.478,-66.837],[-45.818,-92.837]],"c":true}],"e":[{"i":[[14.875,0.201],[0,0],[0,0],[-2.833,6.438]],"o":[[-14.875,-0.201],[0,0],[0,0],[2.833,-6.438]],"v":[[-36.875,-202.799],[-51.514,-165.174],[-47.264,-136],[-38.056,-167.387]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[14.875,0.201],[0,0],[0,0],[-2.833,6.438]],"o":[[-14.875,-0.201],[0,0],[0,0],[2.833,-6.438]],"v":[[-36.875,-202.799],[-51.514,-165.174],[-47.264,-136],[-38.056,-167.387]],"c":true}],"e":[{"i":[[5.541,11.84],[9.535,-2.397],[0,0],[-7.107,0.354]],"o":[[-5.541,-11.84],[-9.206,2.314],[0,0],[7.107,-0.354]],"v":[[22.067,-216.659],[-7.101,-221.041],[-29.656,-203.658],[-3.919,-209.548]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[5.541,11.84],[9.535,-2.397],[0,0],[-7.107,0.354]],"o":[[-5.541,-11.84],[-9.206,2.314],[0,0],[7.107,-0.354]],"v":[[22.067,-216.659],[-7.101,-221.041],[-29.656,-203.658],[-3.919,-209.548]],"c":true}],"e":[{"i":[[0.754,7.59],[0,0],[0,0],[-3.592,-2.242]],"o":[[-0.754,-7.59],[0,0],[0,0],[3.592,2.242]],"v":[[42.528,-196.897],[28.502,-205.508],[14.622,-208.184],[28.933,-198.944]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0.754,7.59],[0,0],[0,0],[-3.592,-2.242]],"o":[[-0.754,-7.59],[0,0],[0,0],[3.592,2.242]],"v":[[42.528,-196.897],[28.502,-205.508],[14.622,-208.184],[28.933,-198.944]],"c":true}],"e":[{"i":[[-1.738,4.244],[0,0],[0,0],[-1.194,-2.256]],"o":[[1.738,-4.244],[0,0],[0,0],[1.194,2.256]],"v":[[58.544,-160.52],[53.841,-169.253],[47.554,-174.798],[52.226,-165.648]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[-1.738,4.244],[0,0],[0,0],[-1.194,-2.256]],"o":[[1.738,-4.244],[0,0],[0,0],[1.194,2.256]],"v":[[58.544,-160.52],[53.841,-169.253],[47.554,-174.798],[52.226,-165.648]],"c":true}],"e":[{"i":[[-3.56,3.124],[0,0],[0,0],[-0.024,-1.478]],"o":[[3.56,-3.124],[0,0],[0,0],[0.024,1.478]],"v":[[63.801,-139.819],[63.637,-145.534],[60.548,-148.879],[60.488,-142.869]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[-3.56,3.124],[0,0],[0,0],[-0.024,-1.478]],"o":[[3.56,-3.124],[0,0],[0,0],[0.024,1.478]],"v":[[63.801,-139.819],[63.637,-145.534],[60.548,-148.879],[60.488,-142.869]],"c":true}],"e":[{"i":[[-4.057,2.444],[0,0],[0,0],[0.239,-1.459]],"o":[[4.057,-2.444],[0,0],[0,0],[-0.239,1.459]],"v":[[65.328,-130.785],[66.179,-136.439],[63.732,-140.279],[62.608,-134.374]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[-4.057,2.444],[0,0],[0,0],[0.239,-1.459]],"o":[[4.057,-2.444],[0,0],[0,0],[-0.239,1.459]],"v":[[65.328,-130.785],[66.179,-136.439],[63.732,-140.279],[62.608,-134.374]],"c":true}],"e":[{"i":[[1.771,0.98099999999999],[0.79675,-1.87975],[0,0],[-1.68225,1.38925]],"o":[[-1.771,-0.98099999999999],[-0.79674999999999,1.87975],[0,0],[1.68225,-1.38925]],"v":[[75.208,-137.288],[71.40075,-134.75475],[70.25,-130.75],[74.05725,-133.28325]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[1.771,0.98099999999999],[0.79675,-1.87975],[0,0],[-1.68225,1.38925]],"o":[[-1.771,-0.98099999999999],[-0.79674999999999,1.87975],[0,0],[1.68225,-1.38925]],"v":[[75.208,-137.288],[71.40075,-134.75475],[70.25,-130.75],[74.05725,-133.28325]],"c":true}],"e":[{"i":[[1.81,1.95750000000001],[1.39637499999999,-1.84787499999999],[0,0],[-2.233,0.97762499999999]],"o":[[-1.53649999999999,-1.52349999999998],[-1.39637500000001,1.84787499999999],[0,0],[2.23299999999999,-0.97762499999999]],"v":[[81.88,-141.703],[77.166625,-139.911625],[74.758,-135.835],[79.6765,-137.300875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[1.81,1.95750000000001],[1.39637499999999,-1.84787499999999],[0,0],[-2.233,0.97762499999999]],"o":[[-1.53649999999999,-1.52349999999998],[-1.39637500000001,1.84787499999999],[0,0],[2.23299999999999,-0.97762499999999]],"v":[[81.88,-141.703],[77.166625,-139.911625],[74.758,-135.835],[79.6765,-137.300875]],"c":true}],"e":[{"i":[[1.52900000000001,2.4205],[1.64987499999999,-1.49837500000001],[0,0],[-2.30125000000001,0.46712500000001]],"o":[[-1.0765,-1.7045],[-1.64987500000001,1.49837500000001],[0,0],[2.30125,-0.46712500000001]],"v":[[89.192,-145.341],[84.546625,-144.474875],[81.516,-141.052],[86.50075,-141.381125]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[1.52900000000001,2.4205],[1.64987499999999,-1.49837500000001],[0,0],[-2.30125000000001,0.46712500000001]],"o":[[-1.0765,-1.7045],[-1.64987500000001,1.49837500000001],[0,0],[2.30125,-0.46712500000001]],"v":[[89.192,-145.341],[84.546625,-144.474875],[81.516,-141.052],[86.50075,-141.381125]],"c":true}],"e":[{"i":[[0.6335,2.78400000000002],[2.06425,-0.82000000000002],[0,0],[-2.334125,-0.36599999999999]],"o":[[-0.446,-1.96000000000001],[-2.06425,0.81999999999999],[0,0],[2.334125,0.36599999999999]],"v":[[96.947,-146.181],[92.261,-146.991],[88.244,-144.861],[93.070625,-143.433]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0.6335,2.78400000000002],[2.06425,-0.82000000000002],[0,0],[-2.334125,-0.36599999999999]],"o":[[-0.446,-1.96000000000001],[-2.06425,0.81999999999999],[0,0],[2.334125,0.36599999999999]],"v":[[96.947,-146.181],[92.261,-146.991],[88.244,-144.861],[93.070625,-143.433]],"c":true}],"e":[{"i":[[-0.1465,2.37300000000002],[1.87150000000001,-0.12125],[0,0],[-1.80912500000001,-0.88974999999999]],"o":[[0.10299999999999,-1.67100000000002],[-1.8715,0.12125],[0,0],[1.80912500000001,0.88975000000002]],"v":[[105.742,-143.867],[102.12775,-145.71325],[98.359,-145.053],[101.940625,-142.68025]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.1465,2.37300000000002],[1.87150000000001,-0.12125],[0,0],[-1.80912500000001,-0.88974999999999]],"o":[[0.10299999999999,-1.67100000000002],[-1.8715,0.12125],[0,0],[1.80912500000001,0.88975000000002]],"v":[[105.742,-143.867],[102.12775,-145.71325],[98.359,-145.053],[101.940625,-142.68025]],"c":true}],"e":[{"i":[[-0.7085,1.77249999999998],[1.28800000000001,0.25999999999999],[0,0],[-0.986125,-1.01512499999998]],"o":[[0.49900000000001,-1.24799999999999],[-1.288,-0.26000000000002],[0,0],[0.986125,1.01512500000001]],"v":[[111.141,-139.577],[109.18875,-141.657],[106.488,-141.865],[108.283125,-139.391625]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-0.7085,1.77249999999998],[1.28800000000001,0.25999999999999],[0,0],[-0.986125,-1.01512499999998]],"o":[[0.49900000000001,-1.24799999999999],[-1.288,-0.26000000000002],[0,0],[0.986125,1.01512500000001]],"v":[[111.141,-139.577],[109.18875,-141.657],[106.488,-141.865],[108.283125,-139.391625]],"c":true}],"e":[{"i":[[-0.98350000000001,0.97],[0.512125,0.51075],[0,0],[-0.093125,-0.92400000000001]],"o":[[0.69250000000001,-0.68300000000002],[-0.512125,-0.51075],[0,0],[0.093125,0.92400000000001]],"v":[[114.49,-134.509],[114.331375,-136.38425],[113.134,-137.235],[113.074375,-135.1445]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-0.98350000000001,0.97],[0.512125,0.51075],[0,0],[-0.093125,-0.92400000000001]],"o":[[0.69250000000001,-0.68300000000002],[-0.512125,-0.51075],[0,0],[0.093125,0.92400000000001]],"v":[[114.49,-134.509],[114.331375,-136.38425],[113.134,-137.235],[113.074375,-135.1445]],"c":true}],"e":[{"i":[[-0.93900000000001,0.149],[0.0485,0.49549999999999],[0,0],[0.3515,-0.559]],"o":[[0.661,-0.10499999999999],[-0.0485,-0.49549999999999],[0,0],[-0.3515,0.559]],"v":[[115.455,-129.251],[116.18425,-130.37325],[115.922,-131.338],[114.98425,-130.18275]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-0.93900000000001,0.149],[0.0485,0.49549999999999],[0,0],[0.3515,-0.559]],"o":[[0.661,-0.10499999999999],[-0.0485,-0.49549999999999],[0,0],[-0.3515,0.559]],"v":[[115.455,-129.251],[116.18425,-130.37325],[115.922,-131.338],[114.98425,-130.18275]],"c":true}],"e":[{"i":[[-0.014,-0.01249999999999],[0.00075,-0.04225],[0,0],[0.00525,0.04762499999998]],"o":[[0.01000000000001,0.00900000000001],[-0.00075,0.04225],[0,0],[-0.00525,-0.04762500000001]],"v":[[113.605,-128.928],[113.616,-128.83225],[113.612,-128.75],[113.598,-128.848375]],"c":true}]},{"t":25}]},"nm":"Path 1"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[64.812,-131.938],[64.812,-131.938]],"c":true}],"e":[{"i":[[3.62,3.915],[0,0]],"o":[[-3.073,-3.047],[0,0]],"v":[[81.88,-141.703],[74.758,-135.835]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[3.62,3.915],[0,0]],"o":[[-3.073,-3.047],[0,0]],"v":[[81.88,-141.703],[74.758,-135.835]],"c":true}],"e":[{"i":[[3.058,4.841],[0,0]],"o":[[-2.153,-3.409],[0,0]],"v":[[89.192,-145.341],[81.516,-141.052]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.714,"s":[{"i":[[3.058,4.841],[0,0]],"o":[[-2.153,-3.409],[0,0]],"v":[[89.192,-145.341],[81.516,-141.052]],"c":true}],"e":[{"i":[[1.267,5.568],[0,0]],"o":[[-0.892,-3.92],[0,0]],"v":[[96.947,-146.181],[88.244,-144.861]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.571,"s":[{"i":[[1.267,5.568],[0,0]],"o":[[-0.892,-3.92],[0,0]],"v":[[96.947,-146.181],[88.244,-144.861]],"c":true}],"e":[{"i":[[-0.293,4.746],[0,0]],"o":[[0.206,-3.342],[0,0]],"v":[[105.742,-143.867],[98.359,-145.053]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.429,"s":[{"i":[[-0.293,4.746],[0,0]],"o":[[0.206,-3.342],[0,0]],"v":[[105.742,-143.867],[98.359,-145.053]],"c":true}],"e":[{"i":[[-1.417,3.545],[0,0]],"o":[[0.998,-2.496],[0,0]],"v":[[111.141,-139.577],[106.488,-141.865]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.286,"s":[{"i":[[-1.417,3.545],[0,0]],"o":[[0.998,-2.496],[0,0]],"v":[[111.141,-139.577],[106.488,-141.865]],"c":true}],"e":[{"i":[[-1.967,1.94],[0,0]],"o":[[1.385,-1.366],[0,0]],"v":[[114.49,-134.509],[113.134,-137.235]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.143,"s":[{"i":[[-1.967,1.94],[0,0]],"o":[[1.385,-1.366],[0,0]],"v":[[114.49,-134.509],[113.134,-137.235]],"c":true}],"e":[{"i":[[0.023,0.093],[0,0]],"o":[[0.023,-0.095],[0,0]],"v":[[116.477,-129.03],[116.377,-129.067]],"c":true}]},{"t":22}]},"nm":"Path 2"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0.039,-0.017],[0,0]],"o":[[-0.039,0.017],[0,0]],"v":[[64.914,-128.716],[64.928,-128.636]],"c":true}],"e":[{"i":[[2.358,-1.023],[0,0]],"o":[[-2.358,1.023],[0,0]],"v":[[64.164,-135.488],[65.023,-130.607]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[2.358,-1.023],[0,0]],"o":[[-2.358,1.023],[0,0]],"v":[[64.164,-135.488],[65.023,-130.607]],"c":true}],"e":[{"i":[[1.509,-2.081],[0,0]],"o":[[-1.509,2.081],[0,0]],"v":[[58.616,-143.419],[61.84,-139.655]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[1.509,-2.081],[0,0]],"o":[[-1.509,2.081],[0,0]],"v":[[58.616,-143.419],[61.84,-139.655]],"c":true}],"e":[{"i":[[0.413,-2.579],[0,0]],"o":[[-0.413,2.579],[0,0]],"v":[[52.696,-145.814],[56.876,-143.49]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0.413,-2.579],[0,0]],"o":[[-0.413,2.579],[0,0]],"v":[[52.696,-145.814],[56.876,-143.49]],"c":true}],"e":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.105,-146.431],[53,-146.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.105,-146.431],[53,-146.25]],"c":true}],"e":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[39.239,-144.884],[45.066,-145.83]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[39.239,-144.884],[45.066,-145.83]],"c":true}],"e":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[36.046,-141.985],[40.276,-144.482]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[36.046,-141.985],[40.276,-144.482]],"c":true}],"e":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[32.508,-138.246],[34.209,-140.562]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[32.508,-138.246],[34.209,-140.562]],"c":true}],"e":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[32.049,-134.594],[32.5,-136.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[32.049,-134.594],[32.5,-136.875]],"c":true}],"e":[{"i":[[0.133,-0.014],[0,0]],"o":[[-0.133,0.014],[0,0]],"v":[[30.998,-131.915],[30.966,-131.991]],"c":true}]},{"t":24}]},"nm":"Path 3"},{"ind":3,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0.039,-0.017],[0,0]],"o":[[-0.039,0.017],[0,0]],"v":[[64.914,-128.716],[64.928,-128.636]],"c":true}],"e":[{"i":[[2.461,-1.762],[0,0]],"o":[[-2.09,1.496],[0,0]],"v":[[62.914,-134.613],[65.273,-129.857]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[2.461,-1.762],[0,0]],"o":[[-2.09,1.496],[0,0]],"v":[[62.914,-134.613],[65.273,-129.857]],"c":true}],"e":[{"i":[[2.287,-1.25],[0,0]],"o":[[-3.741,2.044],[0,0]],"v":[[58.366,-142.044],[61.215,-138.03]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[2.287,-1.25],[0,0]],"o":[[-3.741,2.044],[0,0]],"v":[[58.366,-142.044],[61.215,-138.03]],"c":true}],"e":[{"i":[[2.429,-2.061],[0,0]],"o":[[-1.992,1.689],[0,0]],"v":[[54.321,-147.439],[58.251,-144.115]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[2.429,-2.061],[0,0]],"o":[[-1.992,1.689],[0,0]],"v":[[54.321,-147.439],[58.251,-144.115]],"c":true}],"e":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.98,-148.431],[52.875,-147.5]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[-0.238,-3.327],[0,0]],"o":[[0.238,3.327],[0,0]],"v":[[46.98,-148.431],[52.875,-147.5]],"c":true}],"e":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[38.739,-147.259],[44.066,-148.08]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[-0.855,-3.323],[0,0]],"o":[[0.855,3.323],[0,0]],"v":[[38.739,-147.259],[44.066,-148.08]],"c":true}],"e":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[34.046,-142.735],[38.401,-146.732]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[-1.751,-2.755],[0,0]],"o":[[1.751,2.755],[0,0]],"v":[[34.046,-142.735],[38.401,-146.732]],"c":true}],"e":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[33.133,-137.621],[34.209,-140.562]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[-1.433,-1.619],[0,0]],"o":[[1.433,1.619],[0,0]],"v":[[33.133,-137.621],[34.209,-140.562]],"c":true}],"e":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[31.674,-133.219],[32.5,-136.875]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[-1.514,-0.844],[0,0]],"o":[[1.514,0.844],[0,0]],"v":[[31.674,-133.219],[32.5,-136.875]],"c":true}],"e":[{"i":[[0.133,-0.014],[0,0]],"o":[[-0.133,0.014],[0,0]],"v":[[30.998,-131.915],[30.966,-131.991]],"c":true}]},{"t":25}]},"nm":"Path 4"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Z Dark Blue 2","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[0,-0.002],[0,-0.001],[-0.001,0],[-0.001,0],[-0.001,0],[-0.001,0.001],[0,0.002],[0,0.001],[0.001,0.001],[0.001,0],[0,0],[0.001,-0.002]],"o":[[0,0.001],[0,0.001],[0.001,0.001],[0.001,0],[0.002,0],[0.001,-0.001],[0,-0.001],[0,-0.001],[-0.001,-0.001],[-0.002,0],[0,0],[-0.001,0.002]],"v":[[-6.989,-102.841],[-6.988,-102.839],[-6.987,-102.837],[-6.985,-102.835],[-6.98,-102.835],[-6.976,-102.837],[-6.974,-102.842],[-6.974,-102.844],[-6.975,-102.847],[-6.979,-102.849],[-6.984,-102.849],[-6.988,-102.846]],"c":true}],"e":[{"i":[[0.525,2.62],[0.556,1.007],[0.734,0.608],[1.276,0.382],[1.835,-0.399],[1.446,-1.892],[0.076,-2.352],[-0.161,-1.023],[-0.726,-1.059],[-1.706,-0.343],[0,0],[-1.056,2.117]],"o":[[-0.178,-0.889],[-0.584,-1.06],[-1.026,-0.85],[-1.799,-0.539],[-2.327,0.505],[-1.429,1.87],[-0.032,0.985],[0.21,1.333],[0.984,1.435],[2.638,0.53],[0,0],[1.193,-2.391]],"v":[[3.106,-104.97],[1.947,-107.943],[-0.1,-110.594],[-3.314,-112.592],[-9.854,-113.003],[-15.307,-109.423],[-17.552,-103.374],[-17.382,-100.319],[-16.03,-96.635],[-10.59,-92.816],[-4.104,-92.816],[1.887,-97.277]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2.92,"s":[{"i":[[0.525,2.62],[0.556,1.007],[0.734,0.608],[1.276,0.382],[1.835,-0.399],[1.446,-1.892],[0.076,-2.352],[-0.161,-1.023],[-0.726,-1.059],[-1.706,-0.343],[0,0],[-1.056,2.117]],"o":[[-0.178,-0.889],[-0.584,-1.06],[-1.026,-0.85],[-1.799,-0.539],[-2.327,0.505],[-1.429,1.87],[-0.032,0.985],[0.21,1.333],[0.984,1.435],[2.638,0.53],[0,0],[1.193,-2.391]],"v":[[3.106,-104.97],[1.947,-107.943],[-0.1,-110.594],[-3.314,-112.592],[-9.854,-113.003],[-15.307,-109.423],[-17.552,-103.374],[-17.382,-100.319],[-16.03,-96.635],[-10.59,-92.816],[-4.104,-92.816],[1.887,-97.277]],"c":true}],"e":[{"i":[[1.118,5.577],[1.183,2.144],[1.563,1.294],[2.717,0.813],[3.906,-0.848],[3.077,-4.026],[0.162,-5.007],[-0.343,-2.178],[-1.546,-2.254],[-3.631,-0.73],[0,0],[-2.248,4.506]],"o":[[-0.379,-1.892],[-1.244,-2.256],[-2.184,-1.808],[-3.83,-1.147],[-4.952,1.076],[-3.042,3.98],[-0.068,2.097],[0.447,2.837],[2.095,3.054],[5.616,1.129],[0,0],[2.54,-5.089]],"v":[[14.507,-107.37],[12.039,-113.697],[7.682,-119.34],[0.841,-123.593],[-13.078,-124.468],[-24.685,-116.848],[-29.462,-103.973],[-29.1,-97.469],[-26.224,-89.628],[-14.645,-81.5],[-0.839,-81.5],[11.911,-90.995]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[1.118,5.577],[1.183,2.144],[1.563,1.294],[2.717,0.813],[3.906,-0.848],[3.077,-4.026],[0.162,-5.007],[-0.343,-2.178],[-1.546,-2.254],[-3.631,-0.73],[0,0],[-2.248,4.506]],"o":[[-0.379,-1.892],[-1.244,-2.256],[-2.184,-1.808],[-3.83,-1.147],[-4.952,1.076],[-3.042,3.98],[-0.068,2.097],[0.447,2.837],[2.095,3.054],[5.616,1.129],[0,0],[2.54,-5.089]],"v":[[14.507,-107.37],[12.039,-113.697],[7.682,-119.34],[0.841,-123.593],[-13.078,-124.468],[-24.685,-116.848],[-29.462,-103.973],[-29.1,-97.469],[-26.224,-89.628],[-14.645,-81.5],[-0.839,-81.5],[11.911,-90.995]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[13.953,-4.407],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-13.286,16.5],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-15.297,4.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[4.714,-7.25],[0.607,-15.255]],"v":[[14.757,-99.745],[15.322,-129.794],[15.932,-162.215],[15.841,-177.593],[-11.453,-177.593],[-28.56,-147.848],[-28.337,-130.848],[-28.794,-83.331],[-29.474,-12.628],[-29.645,-43.75],[8.536,-46.75],[15.036,-69.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4.76,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[13.953,-4.407],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-13.286,16.5],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-15.297,4.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[4.714,-7.25],[0.607,-15.255]],"v":[[14.757,-99.745],[15.322,-129.794],[15.932,-162.215],[15.841,-177.593],[-11.453,-177.593],[-28.56,-147.848],[-28.337,-130.848],[-28.794,-83.331],[-29.474,-12.628],[-29.645,-43.75],[8.536,-46.75],[15.036,-69.245]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[14.591,-235.843],[-23.453,-224.593],[-28.655,-199.598],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.698,5.75],[11.036,-8.75],[15.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5.68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[14.591,-235.843],[-23.453,-224.593],[-28.655,-199.598],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.698,5.75],[11.036,-8.75],[15.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[15.091,-237.343],[-24.203,-229.093],[-28.703,-206.348],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.724,7.25],[11.143,-7],[15.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6.6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[15.091,-237.343],[-24.203,-229.093],[-28.703,-206.348],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.724,7.25],[11.143,-7],[15.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[5.203,-26.157],[-1.998,-4.397],[0,0],[0,0],[0,0],[0,0],[-4.143,30.75],[4.857,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-2.297,12.343],[2.203,4.848],[0,0],[0,0],[0,0],[0,0],[0.857,-8.5],[0.607,-15.255]],"v":[[13.629,-61.995],[15.775,-127.879],[18.091,-198.965],[19.341,-240.093],[-33.453,-222.593],[-32.703,-200.598],[-25.459,-188.848],[-27.676,-118.019],[-30.974,-12.628],[-31.724,10],[17.143,-10.5],[13.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7.52,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[5.203,-26.157],[-1.998,-4.397],[0,0],[0,0],[0,0],[0,0],[-4.143,30.75],[4.857,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-2.297,12.343],[2.203,4.848],[0,0],[0,0],[0,0],[0,0],[0.857,-8.5],[0.607,-15.255]],"v":[[13.629,-61.995],[15.775,-127.879],[18.091,-198.965],[19.341,-240.093],[-33.453,-222.593],[-32.703,-200.598],[-25.459,-188.848],[-27.676,-118.019],[-30.974,-12.628],[-31.724,10],[17.143,-10.5],[13.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[17.203,-37.907],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-18.143,55],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-11.797,20.593],[11.953,-5.652],[0,0],[0,0],[0,0],[0,0],[2.357,-18],[-4.393,4.745]],"v":[[11.129,-55.245],[17.243,-123.895],[23.841,-197.965],[28.591,-240.343],[-41.703,-224.093],[-39.453,-167.348],[-21.459,-177.348],[-27.494,-113.352],[-36.474,-18.128],[-39.224,10.5],[30.643,-22],[18.893,-61.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8.44,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[17.203,-37.907],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-18.143,55],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-11.797,20.593],[11.953,-5.652],[0,0],[0,0],[0,0],[0,0],[2.357,-18],[-4.393,4.745]],"v":[[11.129,-55.245],[17.243,-123.895],[23.841,-197.965],[28.591,-240.343],[-41.703,-224.093],[-39.453,-167.348],[-21.459,-177.348],[-27.494,-113.352],[-36.474,-18.128],[-39.224,10.5],[30.643,-22],[18.893,-61.245]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[58.703,-52.407],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-58.143,56.5],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[6.703,9.093],[26.953,-25.652],[0,0],[0,0],[0,0],[0,0],[-7.643,-8.5],[-26.893,24.245]],"v":[[-2.871,-17.745],[18.155,-112.37],[40.841,-214.465],[45.591,-237.843],[-93.703,-223.593],[-69.953,-195.348],[-3.459,-214.848],[-21.15,-135.377],[-47.474,-17.128],[-53.224,9],[84.143,-12],[57.893,-38.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9.36,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[58.703,-52.407],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-58.143,56.5],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[6.703,9.093],[26.953,-25.652],[0,0],[0,0],[0,0],[0,0],[-7.643,-8.5],[-26.893,24.245]],"v":[[-2.871,-17.745],[18.155,-112.37],[40.841,-214.465],[45.591,-237.843],[-93.703,-223.593],[-69.953,-195.348],[-3.459,-214.848],[-21.15,-135.377],[-47.474,-17.128],[-53.224,9],[84.143,-12],[57.893,-38.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[36.703,67.093],[8.953,-4.652],[0,0],[0,0],[0,0],[0,0],[-47.143,-75.5],[-7.393,4.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.797,4.093],[43.453,77.348],[0,0],[0,0],[0,0],[0,0],[11.857,-7],[-39.893,-74.755]],"v":[[-16.871,-12.245],[19.066,-107.11],[57.841,-209.465],[67.591,-232.343],[-55.203,-328.593],[-88.953,-308.848],[14.041,-217.348],[-16.11,-138.48],[-60.974,-21.128],[-71.724,3],[54.143,106.5],[85.893,87.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10.28,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[36.703,67.093],[8.953,-4.652],[0,0],[0,0],[0,0],[0,0],[-47.143,-75.5],[-7.393,4.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.797,4.093],[43.453,77.348],[0,0],[0,0],[0,0],[0,0],[11.857,-7],[-39.893,-74.755]],"v":[[-16.871,-12.245],[19.066,-107.11],[57.841,-209.465],[67.591,-232.343],[-55.203,-328.593],[-88.953,-308.848],[14.041,-217.348],[-16.11,-138.48],[-60.974,-21.128],[-71.724,3],[54.143,106.5],[85.893,87.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-27.297,84.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[45.857,-104.5],[-11.393,-7.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-4.407],[-40.047,121.848],[0,0],[0,0],[0,0],[0,0],[10.357,6],[58.107,-116.255]],"v":[[-25.371,-16.245],[19.946,-106.3],[68.841,-203.465],[83.091,-231.343],[2.797,-357.593],[-34.953,-373.848],[26.041,-215.348],[-12.35,-139.695],[-69.474,-27.128],[-82.224,0],[-15.857,143],[19.393,162.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11.2,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-27.297,84.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[45.857,-104.5],[-11.393,-7.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-4.407],[-40.047,121.848],[0,0],[0,0],[0,0],[0,0],[10.357,6],[58.107,-116.255]],"v":[[-25.371,-16.245],[19.946,-106.3],[68.841,-203.465],[83.091,-231.343],[2.797,-357.593],[-34.953,-373.848],[26.041,-215.348],[-12.35,-139.695],[-69.474,-27.128],[-82.224,0],[-15.857,143],[19.393,162.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-35.797,93.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[41.857,-111.5],[-10.893,-6.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-10.297,-5.407],[-46.047,117.348],[0,0],[0,0],[0,0],[0,0],[9.857,5],[56.607,-128.255]],"v":[[-30.371,-21.245],[21.199,-108.895],[76.841,-203.465],[86.591,-225.343],[2.297,-348.093],[-34.953,-366.848],[31.041,-208.348],[-13.379,-133.097],[-79.474,-21.128],[-87.224,-1],[-13.857,136.5],[20.893,157.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12.12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-35.797,93.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[41.857,-111.5],[-10.893,-6.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-10.297,-5.407],[-46.047,117.348],[0,0],[0,0],[0,0],[0,0],[9.857,5],[56.607,-128.255]],"v":[[-30.371,-21.245],[21.199,-108.895],[76.841,-203.465],[86.591,-225.343],[2.297,-348.093],[-34.953,-366.848],[31.041,-208.348],[-13.379,-133.097],[-79.474,-21.128],[-87.224,-1],[-13.857,136.5],[20.893,157.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-2.297,93.093],[9.453,1.348],[0,0],[0,0],[0,0],[0,0],[9.357,-108],[-10.893,-2.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-0.907],[-10.547,111.348],[0,0],[0,0],[0,0],[0,0],[10.357,1.5],[15.107,-123.755]],"v":[[-29.371,-26.745],[25.07,-112.136],[82.341,-201.965],[86.591,-224.843],[-24.703,-329.593],[-66.453,-332.848],[30.041,-201.848],[-18.384,-124.24],[-81.474,-23.128],[-85.724,-1.5],[18.643,120.5],[60.393,126.255]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13.04,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-2.297,93.093],[9.453,1.348],[0,0],[0,0],[0,0],[0,0],[9.357,-108],[-10.893,-2.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-0.907],[-10.547,111.348],[0,0],[0,0],[0,0],[0,0],[10.357,1.5],[15.107,-123.755]],"v":[[-29.371,-26.745],[25.07,-112.136],[82.341,-201.965],[86.591,-224.843],[-24.703,-329.593],[-66.453,-332.848],[30.041,-201.848],[-18.384,-124.24],[-81.474,-23.128],[-85.724,-1.5],[18.643,120.5],[60.393,126.255]],"c":true}],"e":[{"i":[[0,0],[-17.711,26.852],[0,0],[0,0],[58.203,58.843],[7.703,-7.402],[0,0],[15.008,-22.705],[0,0],[0,0],[-67.143,-69.5],[-7.893,8.745]],"o":[[0,0],[19.11,-28.972],[0,0],[0,0],[-11.297,10.093],[74.953,69.348],[0,0],[-22.331,33.785],[0,0],[0,0],[6.607,-6.5],[-53.893,-60.505]],"v":[[-23.371,-34.239],[33.262,-111.8],[86.091,-202.215],[85.841,-227.343],[-68.203,-283.843],[-97.953,-254.348],[27.041,-194.348],[-12.482,-124.232],[-84.974,-24.878],[-86.224,-1],[72.138,68.5],[103.883,41.76]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13.96,"s":[{"i":[[0,0],[-17.711,26.852],[0,0],[0,0],[58.203,58.843],[7.703,-7.402],[0,0],[15.008,-22.705],[0,0],[0,0],[-67.143,-69.5],[-7.893,8.745]],"o":[[0,0],[19.11,-28.972],[0,0],[0,0],[-11.297,10.093],[74.953,69.348],[0,0],[-22.331,33.785],[0,0],[0,0],[6.607,-6.5],[-53.893,-60.505]],"v":[[-23.371,-34.239],[33.262,-111.8],[86.091,-202.215],[85.841,-227.343],[-68.203,-283.843],[-97.953,-254.348],[27.041,-194.348],[-12.482,-124.232],[-84.974,-24.878],[-86.224,-1],[72.138,68.5],[103.883,41.76]],"c":true}],"e":[{"i":[[0,0],[-16.011,24.868],[0,0],[0,0],[65.203,-42.907],[-6.297,-10.902],[0,0],[13.157,-17.917],[0,0],[0,0],[-71.143,49.25],[8.107,10.245]],"o":[[0,0],[18.718,-29.072],[0,0],[0,0],[4.953,10.343],[40.203,-23.902],[0,0],[-24.459,33.308],[0,0],[0,0],[-7.643,-12.75],[-26.643,18.495]],"v":[[-14.621,-42.245],[38.588,-113.249],[89.341,-203.715],[86.339,-228.588],[-68.703,-190.343],[-47.453,-154.098],[27.041,-180.598],[-6.575,-123.004],[-85.474,-27.378],[-86.474,-3.5],[84.143,-35.25],[62.643,-69.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14.88,"s":[{"i":[[0,0],[-16.011,24.868],[0,0],[0,0],[65.203,-42.907],[-6.297,-10.902],[0,0],[13.157,-17.917],[0,0],[0,0],[-71.143,49.25],[8.107,10.245]],"o":[[0,0],[18.718,-29.072],[0,0],[0,0],[4.953,10.343],[40.203,-23.902],[0,0],[-24.459,33.308],[0,0],[0,0],[-7.643,-12.75],[-26.643,18.495]],"v":[[-14.621,-42.245],[38.588,-113.249],[89.341,-203.715],[86.339,-228.588],[-68.703,-190.343],[-47.453,-154.098],[27.041,-180.598],[-6.575,-123.004],[-85.474,-27.378],[-86.474,-3.5],[84.143,-35.25],[62.643,-69.245]],"c":true}],"e":[{"i":[[0,0],[-16.259,24.612],[0,0],[0,0],[58.453,-61.157],[-8.547,-7.902],[0,0],[14.556,-20.516],[0,0],[0,0],[-60.393,66.25],[10.107,9.745]],"o":[[0,0],[17.655,-26.726],[0,0],[0,0],[8.453,8.093],[26.953,-25.402],[0,0],[-22.46,31.657],[0,0],[0,0],[-9.143,-9.75],[-19.393,23.995]],"v":[[-15.371,-47.245],[35.256,-119.825],[86.341,-201.215],[86.841,-227.593],[-66.453,-176.343],[-37.953,-148.098],[24.541,-181.848],[-17.173,-118.957],[-86.474,-25.378],[-85.474,-1.5],[71.893,-53.25],[42.393,-81.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15.8,"s":[{"i":[[0,0],[-16.259,24.612],[0,0],[0,0],[58.453,-61.157],[-8.547,-7.902],[0,0],[14.556,-20.516],[0,0],[0,0],[-60.393,66.25],[10.107,9.745]],"o":[[0,0],[17.655,-26.726],[0,0],[0,0],[8.453,8.093],[26.953,-25.402],[0,0],[-22.46,31.657],[0,0],[0,0],[-9.143,-9.75],[-19.393,23.995]],"v":[[-15.371,-47.245],[35.256,-119.825],[86.341,-201.215],[86.841,-227.593],[-66.453,-176.343],[-37.953,-148.098],[24.541,-181.848],[-17.173,-118.957],[-86.474,-25.378],[-85.474,-1.5],[71.893,-53.25],[42.393,-81.245]],"c":true}],"e":[{"i":[[0,0],[-16.95,24.847],[0,0],[0,0],[62.203,-52.407],[-6.047,-8.652],[0,0],[16.541,-26.058],[0,0],[0,0],[-65.672,57.268],[8.357,10.745]],"o":[[0,0],[18.288,-26.809],[0,0],[0,0],[6.203,9.593],[25.203,-22.652],[0,0],[-20.283,31.953],[0,0],[0,0],[-6.893,-10.25],[-26.143,20.745]],"v":[[-21.363,-49.75],[24.478,-120.805],[85.837,-199.716],[87.336,-224.59],[-77.444,-188.851],[-54.196,-153.859],[17.046,-183.858],[-28.675,-118.473],[-86.474,-25.378],[-86.476,1],[68.653,-49.76],[43.651,-81.505]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.72,"s":[{"i":[[0,0],[-16.95,24.847],[0,0],[0,0],[62.203,-52.407],[-6.047,-8.652],[0,0],[16.541,-26.058],[0,0],[0,0],[-65.672,57.268],[8.357,10.745]],"o":[[0,0],[18.288,-26.809],[0,0],[0,0],[6.203,9.593],[25.203,-22.652],[0,0],[-20.283,31.953],[0,0],[0,0],[-6.893,-10.25],[-26.143,20.745]],"v":[[-21.363,-49.75],[24.478,-120.805],[85.837,-199.716],[87.336,-224.59],[-77.444,-188.851],[-54.196,-153.859],[17.046,-183.858],[-28.675,-118.473],[-86.474,-25.378],[-86.476,1],[68.653,-49.76],[43.651,-81.505]],"c":true}],"e":[{"i":[[0,0],[-17.431,25.569],[0,0],[0,0],[61.781,-2.962],[-0.047,-10.152],[0,0],[17.355,-28.109],[0,0],[0,0],[-77.643,0.5],[1.177,14.467]],"o":[[0,0],[18.807,-27.588],[0,0],[0,0],[0.203,12.843],[68.953,1.348],[0,0],[-20.282,32.85],[0,0],[0,0],[0.107,-12.5],[-48.143,-0.255]],"v":[[-28.363,-45.26],[16.424,-119.986],[83.834,-198.221],[86.832,-223.092],[-86.186,-232.101],[-89.441,-188.364],[17.55,-188.612],[-32.973,-122.431],[-88.981,-22.385],[-84.987,5.004],[80.666,-9.515],[77.408,-48.268]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.64,"s":[{"i":[[0,0],[-17.431,25.569],[0,0],[0,0],[61.781,-2.962],[-0.047,-10.152],[0,0],[17.355,-28.109],[0,0],[0,0],[-77.643,0.5],[1.177,14.467]],"o":[[0,0],[18.807,-27.588],[0,0],[0,0],[0.203,12.843],[68.953,1.348],[0,0],[-20.282,32.85],[0,0],[0,0],[0.107,-12.5],[-48.143,-0.255]],"v":[[-28.363,-45.26],[16.424,-119.986],[83.834,-198.221],[86.832,-223.092],[-86.186,-232.101],[-89.441,-188.364],[17.55,-188.612],[-32.973,-122.431],[-88.981,-22.385],[-84.987,5.004],[80.666,-9.515],[77.408,-48.268]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[50.774,29.269],[3.453,-9.902],[0,0],[15.951,-24.564],[0,0],[0,0],[-80.643,-40.25],[-6.143,12.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-5.297,13.343],[70.703,33.098],[0,0],[-21.275,32.762],[0,0],[0,0],[7.107,-13],[-60.393,-31.505]],"v":[[-24.369,-41.249],[23.155,-115.19],[85.836,-199.216],[86.836,-224.592],[-81.2,-255.847],[-97.949,-216.603],[22.043,-187.854],[-25.585,-119.961],[-86.474,-25.378],[-85.478,1.502],[82.648,30.246],[99.394,-5.753]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.56,"s":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[50.774,29.269],[3.453,-9.902],[0,0],[15.951,-24.564],[0,0],[0,0],[-80.643,-40.25],[-6.143,12.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-5.297,13.343],[70.703,33.098],[0,0],[-21.275,32.762],[0,0],[0,0],[7.107,-13],[-60.393,-31.505]],"v":[[-24.369,-41.249],[23.155,-115.19],[85.836,-199.216],[86.836,-224.592],[-81.2,-255.847],[-97.949,-216.603],[22.043,-187.854],[-25.585,-119.961],[-86.474,-25.378],[-85.478,1.502],[82.648,30.246],[99.394,-5.753]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[61.016,26.042],[2.203,-9.902],[0,0],[14.874,-21.734],[0,0],[0,0],[-88.117,-36.506],[-3.893,11.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-4.047,12.843],[71.169,24.538],[0,0],[-22.131,32.339],[0,0],[0,0],[5.827,-14.268],[-48.297,-24.623]],"v":[[-21.876,-38.243],[33.154,-114.665],[87.84,-200.711],[86.341,-226.593],[-80.963,-244.593],[-92.714,-204.093],[26.534,-185.093],[-16.089,-118.886],[-86.474,-25.378],[-86.474,0],[83.631,30.995],[100.379,-7.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.48,"s":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[61.016,26.042],[2.203,-9.902],[0,0],[14.874,-21.734],[0,0],[0,0],[-88.117,-36.506],[-3.893,11.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-4.047,12.843],[71.169,24.538],[0,0],[-22.131,32.339],[0,0],[0,0],[5.827,-14.268],[-48.297,-24.623]],"v":[[-21.876,-38.243],[33.154,-114.665],[87.84,-200.711],[86.341,-226.593],[-80.963,-244.593],[-92.714,-204.093],[26.534,-185.093],[-16.089,-118.886],[-86.474,-25.378],[-86.474,0],[83.631,30.995],[100.379,-7.745]],"c":true}],"e":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[71.797,-26.682],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-71.4,23.529],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.703,-10.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-47.893,14.745]],"v":[[-19.874,-42.493],[33.197,-118.354],[86.335,-198.715],[85.839,-225.594],[-80.711,-204.342],[-68.459,-165.594],[23.786,-181.594],[-19.428,-118.999],[-86.474,-25.378],[-86.474,0],[82.384,-17.501],[71.884,-57.493]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20.4,"s":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[71.797,-26.682],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-71.4,23.529],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.703,-10.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-47.893,14.745]],"v":[[-19.874,-42.493],[33.197,-118.354],[86.335,-198.715],[85.839,-225.594],[-80.711,-204.342],[-68.459,-165.594],[23.786,-181.594],[-19.428,-118.999],[-86.474,-25.378],[-86.474,0],[82.384,-17.501],[71.884,-57.493]],"c":true}],"e":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[95.299,-25.872],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-54.393,19.575],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.203,-11.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-31.264,9.098]],"v":[[-20.871,-43.495],[23.683,-112.878],[86.337,-199.715],[86.335,-224.093],[-83.705,-208.599],[-73.703,-168.605],[21.29,-183.1],[-23.424,-120.509],[-86.474,-25.378],[-86.476,1],[80.391,-18.509],[68.389,-58.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.32,"s":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[95.299,-25.872],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-54.393,19.575],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.203,-11.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-31.264,9.098]],"v":[[-20.871,-43.495],[23.683,-112.878],[86.337,-199.715],[86.335,-224.093],[-83.705,-208.599],[-73.703,-168.605],[21.29,-183.1],[-23.424,-120.509],[-86.474,-25.378],[-86.476,1],[80.391,-18.509],[68.389,-58.504]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[68.538,-13.689],[-1.547,-13.402],[0,0],[14.572,-21.332],[0,0],[0,0],[-74.887,-9.47],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[34.953,-3.402],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-37.643,-5.505]],"v":[[-25.869,-41.503],[18.645,-111.331],[86.336,-199.215],[85.835,-224.094],[-83.951,-217.851],[-80.95,-177.108],[20.292,-185.103],[-26.926,-120.616],[-86.474,-25.378],[-86.48,2.5],[81.896,5.987],[85.643,-34.509]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.24,"s":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[68.538,-13.689],[-1.547,-13.402],[0,0],[14.572,-21.332],[0,0],[0,0],[-74.887,-9.47],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[34.953,-3.402],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-37.643,-5.505]],"v":[[-25.869,-41.503],[18.645,-111.331],[86.336,-199.215],[85.835,-224.094],[-83.951,-217.851],[-80.95,-177.108],[20.292,-185.103],[-26.926,-120.616],[-86.474,-25.378],[-86.48,2.5],[81.896,5.987],[85.643,-34.509]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[57.031,7.277],[2.203,-13.152],[0,0],[14.572,-21.332],[0,0],[0,0],[-64.884,-14.442],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[38.43,5.47],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-34.291,-9.856]],"v":[[-24.874,-39.5],[29.661,-117.803],[86.839,-200.213],[86.337,-225.093],[-84.958,-233.848],[-90.458,-192.103],[21.791,-184.599],[-21.425,-120.852],[-86.474,-25.378],[-86.975,0.499],[84.387,13.491],[90.386,-27.502]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23.16,"s":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[57.031,7.277],[2.203,-13.152],[0,0],[14.572,-21.332],[0,0],[0,0],[-64.884,-14.442],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[38.43,5.47],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-34.291,-9.856]],"v":[[-24.874,-39.5],[29.661,-117.803],[86.839,-200.213],[86.337,-225.093],[-84.958,-233.848],[-90.458,-192.103],[21.791,-184.599],[-21.425,-120.852],[-86.474,-25.378],[-86.975,0.499],[84.387,13.491],[90.386,-27.502]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[57.271,5.778],[2.203,-13.152],[0,0],[14.572,-21.332],[0,0],[0,0],[-47.637,-6.226],[-1.393,17.995]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-0.797,13.093],[29.918,4.203],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-36.393,-7.005]],"v":[[-22.871,-40.495],[29.661,-117.803],[86.837,-199.713],[86.839,-225.592],[-83.708,-228.346],[-86.955,-186.848],[22.291,-184.598],[-21.426,-120.602],[-86.474,-25.378],[-86.474,0],[86.889,4.247],[90.388,-37.748]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[57.271,5.778],[2.203,-13.152],[0,0],[14.572,-21.332],[0,0],[0,0],[-47.637,-6.226],[-1.393,17.995]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-0.797,13.093],[29.918,4.203],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-36.393,-7.005]],"v":[[-22.871,-40.495],[29.661,-117.803],[86.837,-199.713],[86.839,-225.592],[-83.708,-228.346],[-86.955,-186.848],[22.291,-184.598],[-21.426,-120.602],[-86.474,-25.378],[-86.474,0],[86.889,4.247],[90.388,-37.748]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-22.121,-41.995],[30.05,-118.582],[86.341,-201.215],[86.341,-226.593],[-83.453,-226.593],[-83.453,-184.598],[22.291,-184.598],[-21.426,-120.602],[-86.474,-25.378],[-86.474,0],[86.643,0],[86.643,-41.995]],"c":true}]},{"t":25}]},"nm":"Z"},{"ty":"fl","fillEnabled":true,"c":{"k":[0,0.01,0.24,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":-0.145,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Z"}],"ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Z Orange","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":-1,"s":[{"i":[[-0.005,-0.023],[-0.005,-0.009],[-0.007,-0.005],[-0.011,-0.003],[-0.016,0.004],[-0.013,0.017],[-0.001,0.021],[0.001,0.009],[0.006,0.009],[0.015,0.003],[0,0],[0.009,-0.019]],"o":[[0.002,0.008],[0.005,0.009],[0.009,0.008],[0.016,0.005],[0.021,-0.004],[0.013,-0.017],[0,-0.009],[-0.002,-0.012],[-0.009,-0.013],[-0.023,-0.005],[0,0],[-0.011,0.021]],"v":[[-7.087,-102.825],[-7.076,-102.799],[-7.058,-102.775],[-7.03,-102.757],[-6.972,-102.754],[-6.923,-102.785],[-6.903,-102.839],[-6.905,-102.866],[-6.917,-102.899],[-6.965,-102.933],[-7.023,-102.933],[-7.076,-102.893]],"c":true}],"e":[{"i":[[-0.001,-0.006],[-0.001,-0.002],[-0.002,-0.001],[-0.003,-0.001],[-0.004,0.001],[-0.003,0.004],[0,0.005],[0,0.002],[0.002,0.002],[0.004,0.001],[0,0],[0.002,-0.005]],"o":[[0,0.002],[0.001,0.002],[0.002,0.002],[0.004,0.001],[0.005,-0.001],[0.003,-0.004],[0,-0.002],[0,-0.003],[-0.002,-0.003],[-0.006,-0.001],[0,0],[-0.003,0.005]],"v":[[-6.999,-102.839],[-6.996,-102.832],[-6.992,-102.826],[-6.984,-102.822],[-6.97,-102.821],[-6.957,-102.829],[-6.952,-102.843],[-6.953,-102.85],[-6.956,-102.858],[-6.968,-102.866],[-6.983,-102.866],[-6.996,-102.856]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[-0.001,-0.006],[-0.001,-0.002],[-0.002,-0.001],[-0.003,-0.001],[-0.004,0.001],[-0.003,0.004],[0,0.005],[0,0.002],[0.002,0.002],[0.004,0.001],[0,0],[0.002,-0.005]],"o":[[0,0.002],[0.001,0.002],[0.002,0.002],[0.004,0.001],[0.005,-0.001],[0.003,-0.004],[0,-0.002],[0,-0.003],[-0.002,-0.003],[-0.006,-0.001],[0,0],[-0.003,0.005]],"v":[[-6.999,-102.839],[-6.996,-102.832],[-6.992,-102.826],[-6.984,-102.822],[-6.97,-102.821],[-6.957,-102.829],[-6.952,-102.843],[-6.953,-102.85],[-6.956,-102.858],[-6.968,-102.866],[-6.983,-102.866],[-6.996,-102.856]],"c":true}],"e":[{"i":[[0.79,3.941],[0.836,1.515],[1.105,0.915],[1.92,0.575],[2.76,-0.6],[2.175,-2.845],[0.115,-3.538],[-0.243,-1.539],[-1.092,-1.593],[-2.565,-0.516],[0,0],[-1.589,3.184]],"o":[[-0.268,-1.337],[-0.879,-1.594],[-1.544,-1.278],[-2.706,-0.81],[-3.499,0.76],[-2.15,2.813],[-0.048,1.482],[0.316,2.005],[1.48,2.158],[3.968,0.798],[0,0],[1.794,-3.596]],"v":[[8.21,-106.042],[6.466,-110.513],[3.388,-114.5],[-1.446,-117.506],[-11.282,-118.124],[-19.484,-112.739],[-22.859,-103.642],[-22.604,-99.046],[-20.571,-93.505],[-12.389,-87.762],[-2.633,-87.762],[6.376,-94.471]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0.79,3.941],[0.836,1.515],[1.105,0.915],[1.92,0.575],[2.76,-0.6],[2.175,-2.845],[0.115,-3.538],[-0.243,-1.539],[-1.092,-1.593],[-2.565,-0.516],[0,0],[-1.589,3.184]],"o":[[-0.268,-1.337],[-0.879,-1.594],[-1.544,-1.278],[-2.706,-0.81],[-3.499,0.76],[-2.15,2.813],[-0.048,1.482],[0.316,2.005],[1.48,2.158],[3.968,0.798],[0,0],[1.794,-3.596]],"v":[[8.21,-106.042],[6.466,-110.513],[3.388,-114.5],[-1.446,-117.506],[-11.282,-118.124],[-19.484,-112.739],[-22.859,-103.642],[-22.604,-99.046],[-20.571,-93.505],[-12.389,-87.762],[-2.633,-87.762],[6.376,-94.471]],"c":true}],"e":[{"i":[[1.118,5.577],[1.183,2.144],[1.563,1.294],[2.717,0.813],[3.906,-0.848],[3.077,-4.026],[0.162,-5.007],[-0.343,-2.178],[-1.546,-2.254],[-3.631,-0.73],[0,0],[-2.248,4.506]],"o":[[-0.379,-1.892],[-1.244,-2.256],[-2.184,-1.808],[-3.83,-1.147],[-4.952,1.076],[-3.042,3.98],[-0.068,2.097],[0.447,2.837],[2.095,3.054],[5.616,1.129],[0,0],[2.54,-5.089]],"v":[[14.507,-107.37],[12.039,-113.697],[7.682,-119.34],[0.841,-123.593],[-13.078,-124.468],[-24.685,-116.848],[-29.462,-103.973],[-29.1,-97.469],[-26.224,-89.628],[-14.645,-81.5],[-0.839,-81.5],[11.911,-90.995]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3.04,"s":[{"i":[[1.118,5.577],[1.183,2.144],[1.563,1.294],[2.717,0.813],[3.906,-0.848],[3.077,-4.026],[0.162,-5.007],[-0.343,-2.178],[-1.546,-2.254],[-3.631,-0.73],[0,0],[-2.248,4.506]],"o":[[-0.379,-1.892],[-1.244,-2.256],[-2.184,-1.808],[-3.83,-1.147],[-4.952,1.076],[-3.042,3.98],[-0.068,2.097],[0.447,2.837],[2.095,3.054],[5.616,1.129],[0,0],[2.54,-5.089]],"v":[[14.507,-107.37],[12.039,-113.697],[7.682,-119.34],[0.841,-123.593],[-13.078,-124.468],[-24.685,-116.848],[-29.462,-103.973],[-29.1,-97.469],[-26.224,-89.628],[-14.645,-81.5],[-0.839,-81.5],[11.911,-90.995]],"c":true}],"e":[{"i":[[0.57,2.427],[0.603,0.933],[0.121,0.877],[1.386,0.354],[8.831,-2.196],[1.622,-3.769],[0.083,-2.179],[-0.175,-0.948],[-0.789,-0.981],[-1.852,-0.318],[-6.508,6.893],[-1.217,5.928]],"o":[[-0.193,-0.823],[-0.635,-0.982],[-0.723,-5.255],[-1.954,-0.499],[-10.019,2.491],[-1.698,7.413],[-0.035,0.913],[0.228,1.235],[1.069,1.329],[2.865,0.491],[2.309,-3.029],[1.593,-8.588]],"v":[[14.63,-103.342],[13.147,-118.648],[11.723,-126.972],[10.188,-138.659],[-10.282,-139.04],[-26.583,-122.871],[-28.911,-114.857],[-28.95,-92.176],[-26.316,-73.301],[-21.992,-68.691],[5.253,-73.143],[13.442,-83.474]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0.57,2.427],[0.603,0.933],[0.121,0.877],[1.386,0.354],[8.831,-2.196],[1.622,-3.769],[0.083,-2.179],[-0.175,-0.948],[-0.789,-0.981],[-1.852,-0.318],[-6.508,6.893],[-1.217,5.928]],"o":[[-0.193,-0.823],[-0.635,-0.982],[-0.723,-5.255],[-1.954,-0.499],[-10.019,2.491],[-1.698,7.413],[-0.035,0.913],[0.228,1.235],[1.069,1.329],[2.865,0.491],[2.309,-3.029],[1.593,-8.588]],"v":[[14.63,-103.342],[13.147,-118.648],[11.723,-126.972],[10.188,-138.659],[-10.282,-139.04],[-26.583,-122.871],[-28.911,-114.857],[-28.95,-92.176],[-26.316,-73.301],[-21.992,-68.691],[5.253,-73.143],[13.442,-83.474]],"c":true}],"e":[{"i":[[0.285,1.423],[0.302,0.547],[0.399,0.33],[0.693,0.207],[9.265,-8.374],[0.864,-4.624],[0.041,-1.277],[-0.088,-0.556],[-0.394,-0.575],[-0.926,-0.186],[-12.187,9.865],[-0.68,9.518]],"o":[[-0.097,-0.483],[-0.317,-0.575],[-0.557,-0.461],[-0.977,-0.292],[-11.633,7.04],[-0.998,11.144],[-0.017,0.535],[0.114,0.724],[0.534,0.779],[1.433,0.288],[2.583,-2.626],[1.1,-12.662]],"v":[[14.754,-82.065],[14.494,-124.16],[13.782,-169.277],[15.39,-203.442],[-17.367,-196.54],[-27.619,-167.814],[-28.665,-148.992],[-28.897,-101.889],[-28.954,-30.772],[-28.552,-19.13],[7.187,-27.615],[14.085,-47.044]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0.285,1.423],[0.302,0.547],[0.399,0.33],[0.693,0.207],[9.265,-8.374],[0.864,-4.624],[0.041,-1.277],[-0.088,-0.556],[-0.394,-0.575],[-0.926,-0.186],[-12.187,9.865],[-0.68,9.518]],"o":[[-0.097,-0.483],[-0.317,-0.575],[-0.557,-0.461],[-0.977,-0.292],[-11.633,7.04],[-0.998,11.144],[-0.017,0.535],[0.114,0.724],[0.534,0.779],[1.433,0.288],[2.583,-2.626],[1.1,-12.662]],"v":[[14.754,-82.065],[14.494,-124.16],[13.782,-169.277],[15.39,-203.442],[-17.367,-196.54],[-27.619,-167.814],[-28.665,-148.992],[-28.897,-101.889],[-28.954,-30.772],[-28.552,-19.13],[7.187,-27.615],[14.085,-47.044]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[14.591,-235.843],[-23.453,-224.593],[-28.655,-199.598],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.698,5.75],[11.036,-8.75],[15.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[14.591,-235.843],[-23.453,-224.593],[-28.655,-199.598],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.698,5.75],[11.036,-8.75],[15.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[15.091,-237.343],[-24.203,-229.093],[-28.703,-206.348],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.724,7.25],[11.143,-7],[15.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6.8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[15.091,-237.343],[-24.203,-229.093],[-28.703,-206.348],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.724,7.25],[11.143,-7],[15.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[5.203,-26.157],[-1.998,-4.397],[0,0],[0,0],[0,0],[0,0],[-4.143,30.75],[4.857,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-2.297,12.343],[2.203,4.848],[0,0],[0,0],[0,0],[0,0],[0.857,-8.5],[0.607,-15.255]],"v":[[13.629,-61.995],[15.775,-127.879],[18.091,-198.965],[19.341,-240.093],[-33.453,-222.593],[-32.703,-200.598],[-25.459,-188.848],[-27.676,-118.019],[-30.974,-12.628],[-31.724,10],[17.143,-10.5],[13.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7.76,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[5.203,-26.157],[-1.998,-4.397],[0,0],[0,0],[0,0],[0,0],[-4.143,30.75],[4.857,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-2.297,12.343],[2.203,4.848],[0,0],[0,0],[0,0],[0,0],[0.857,-8.5],[0.607,-15.255]],"v":[[13.629,-61.995],[15.775,-127.879],[18.091,-198.965],[19.341,-240.093],[-33.453,-222.593],[-32.703,-200.598],[-25.459,-188.848],[-27.676,-118.019],[-30.974,-12.628],[-31.724,10],[17.143,-10.5],[13.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[17.203,-37.907],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-18.143,55],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-11.797,20.593],[11.953,-5.652],[0,0],[0,0],[0,0],[0,0],[2.357,-18],[-4.393,4.745]],"v":[[11.129,-55.245],[17.243,-123.895],[23.841,-197.965],[28.591,-240.343],[-41.703,-224.093],[-39.453,-167.348],[-21.459,-177.348],[-27.494,-113.352],[-36.474,-18.128],[-39.224,10.5],[30.643,-22],[18.893,-61.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8.72,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[17.203,-37.907],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-18.143,55],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-11.797,20.593],[11.953,-5.652],[0,0],[0,0],[0,0],[0,0],[2.357,-18],[-4.393,4.745]],"v":[[11.129,-55.245],[17.243,-123.895],[23.841,-197.965],[28.591,-240.343],[-41.703,-224.093],[-39.453,-167.348],[-21.459,-177.348],[-27.494,-113.352],[-36.474,-18.128],[-39.224,10.5],[30.643,-22],[18.893,-61.245]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[58.703,-52.407],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-58.143,56.5],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[6.703,9.093],[26.953,-25.652],[0,0],[0,0],[0,0],[0,0],[-7.643,-8.5],[-26.893,24.245]],"v":[[-2.871,-17.745],[18.155,-112.37],[40.841,-214.465],[45.591,-237.843],[-93.703,-223.593],[-69.953,-195.348],[-3.459,-214.848],[-21.15,-135.377],[-47.474,-17.128],[-53.224,9],[84.143,-12],[57.893,-38.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9.68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[58.703,-52.407],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-58.143,56.5],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[6.703,9.093],[26.953,-25.652],[0,0],[0,0],[0,0],[0,0],[-7.643,-8.5],[-26.893,24.245]],"v":[[-2.871,-17.745],[18.155,-112.37],[40.841,-214.465],[45.591,-237.843],[-93.703,-223.593],[-69.953,-195.348],[-3.459,-214.848],[-21.15,-135.377],[-47.474,-17.128],[-53.224,9],[84.143,-12],[57.893,-38.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[36.703,67.093],[8.953,-4.652],[0,0],[0,0],[0,0],[0,0],[-47.143,-75.5],[-7.393,4.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.797,4.093],[43.453,77.348],[0,0],[0,0],[0,0],[0,0],[11.857,-7],[-39.893,-74.755]],"v":[[-16.871,-12.245],[19.066,-107.11],[57.841,-209.465],[67.591,-232.343],[-55.203,-328.593],[-88.953,-308.848],[14.041,-217.348],[-16.11,-138.48],[-60.974,-21.128],[-71.724,3],[54.143,106.5],[85.893,87.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10.64,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[36.703,67.093],[8.953,-4.652],[0,0],[0,0],[0,0],[0,0],[-47.143,-75.5],[-7.393,4.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.797,4.093],[43.453,77.348],[0,0],[0,0],[0,0],[0,0],[11.857,-7],[-39.893,-74.755]],"v":[[-16.871,-12.245],[19.066,-107.11],[57.841,-209.465],[67.591,-232.343],[-55.203,-328.593],[-88.953,-308.848],[14.041,-217.348],[-16.11,-138.48],[-60.974,-21.128],[-71.724,3],[54.143,106.5],[85.893,87.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-27.297,84.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[45.857,-104.5],[-11.393,-7.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-4.407],[-40.047,121.848],[0,0],[0,0],[0,0],[0,0],[10.357,6],[58.107,-116.255]],"v":[[-25.371,-16.245],[19.946,-106.3],[68.841,-203.465],[83.091,-231.343],[2.797,-357.593],[-34.953,-373.848],[26.041,-215.348],[-12.35,-139.695],[-69.474,-27.128],[-82.224,0],[-15.857,143],[19.393,162.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11.6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-27.297,84.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[45.857,-104.5],[-11.393,-7.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-4.407],[-40.047,121.848],[0,0],[0,0],[0,0],[0,0],[10.357,6],[58.107,-116.255]],"v":[[-25.371,-16.245],[19.946,-106.3],[68.841,-203.465],[83.091,-231.343],[2.797,-357.593],[-34.953,-373.848],[26.041,-215.348],[-12.35,-139.695],[-69.474,-27.128],[-82.224,0],[-15.857,143],[19.393,162.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-35.797,93.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[41.857,-111.5],[-10.893,-6.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-10.297,-5.407],[-46.047,117.348],[0,0],[0,0],[0,0],[0,0],[9.857,5],[56.607,-128.255]],"v":[[-30.371,-21.245],[21.199,-108.895],[76.841,-203.465],[86.591,-225.343],[2.297,-348.093],[-34.953,-366.848],[31.041,-208.348],[-13.379,-133.097],[-79.474,-21.128],[-87.224,-1],[-13.857,136.5],[20.893,157.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12.56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-35.797,93.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[41.857,-111.5],[-10.893,-6.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-10.297,-5.407],[-46.047,117.348],[0,0],[0,0],[0,0],[0,0],[9.857,5],[56.607,-128.255]],"v":[[-30.371,-21.245],[21.199,-108.895],[76.841,-203.465],[86.591,-225.343],[2.297,-348.093],[-34.953,-366.848],[31.041,-208.348],[-13.379,-133.097],[-79.474,-21.128],[-87.224,-1],[-13.857,136.5],[20.893,157.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-2.297,93.093],[9.453,1.348],[0,0],[0,0],[0,0],[0,0],[9.357,-108],[-10.893,-2.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-0.907],[-10.547,111.348],[0,0],[0,0],[0,0],[0,0],[10.357,1.5],[15.107,-123.755]],"v":[[-29.371,-26.745],[25.07,-112.136],[82.341,-201.965],[86.591,-224.843],[-24.703,-329.593],[-66.453,-332.848],[30.041,-201.848],[-18.384,-124.24],[-81.474,-23.128],[-85.724,-1.5],[18.643,120.5],[60.393,126.255]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13.52,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-2.297,93.093],[9.453,1.348],[0,0],[0,0],[0,0],[0,0],[9.357,-108],[-10.893,-2.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-0.907],[-10.547,111.348],[0,0],[0,0],[0,0],[0,0],[10.357,1.5],[15.107,-123.755]],"v":[[-29.371,-26.745],[25.07,-112.136],[82.341,-201.965],[86.591,-224.843],[-24.703,-329.593],[-66.453,-332.848],[30.041,-201.848],[-18.384,-124.24],[-81.474,-23.128],[-85.724,-1.5],[18.643,120.5],[60.393,126.255]],"c":true}],"e":[{"i":[[0,0],[-17.711,26.852],[0,0],[0,0],[58.203,58.843],[7.703,-7.402],[0,0],[15.008,-22.705],[0,0],[0,0],[-67.143,-69.5],[-7.893,8.745]],"o":[[0,0],[19.11,-28.972],[0,0],[0,0],[-11.297,10.093],[74.953,69.348],[0,0],[-22.331,33.785],[0,0],[0,0],[6.607,-6.5],[-53.893,-60.505]],"v":[[-23.371,-34.239],[33.262,-111.8],[86.091,-202.215],[85.841,-227.343],[-68.203,-283.843],[-97.953,-254.348],[27.041,-194.348],[-12.482,-124.232],[-84.974,-24.878],[-86.224,-1],[72.138,68.5],[103.883,41.76]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14.48,"s":[{"i":[[0,0],[-17.711,26.852],[0,0],[0,0],[58.203,58.843],[7.703,-7.402],[0,0],[15.008,-22.705],[0,0],[0,0],[-67.143,-69.5],[-7.893,8.745]],"o":[[0,0],[19.11,-28.972],[0,0],[0,0],[-11.297,10.093],[74.953,69.348],[0,0],[-22.331,33.785],[0,0],[0,0],[6.607,-6.5],[-53.893,-60.505]],"v":[[-23.371,-34.239],[33.262,-111.8],[86.091,-202.215],[85.841,-227.343],[-68.203,-283.843],[-97.953,-254.348],[27.041,-194.348],[-12.482,-124.232],[-84.974,-24.878],[-86.224,-1],[72.138,68.5],[103.883,41.76]],"c":true}],"e":[{"i":[[0,0],[-16.011,24.868],[0,0],[0,0],[65.203,-42.907],[-6.297,-10.902],[0,0],[13.157,-17.917],[0,0],[0,0],[-71.143,49.25],[8.107,10.245]],"o":[[0,0],[18.718,-29.072],[0,0],[0,0],[4.953,10.343],[40.203,-23.902],[0,0],[-24.459,33.308],[0,0],[0,0],[-7.643,-12.75],[-26.643,18.495]],"v":[[-14.621,-42.245],[38.588,-113.249],[89.341,-203.715],[86.339,-228.588],[-68.703,-190.343],[-47.453,-154.098],[27.041,-180.598],[-6.575,-123.004],[-85.474,-27.378],[-86.474,-3.5],[84.143,-35.25],[62.643,-69.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15.44,"s":[{"i":[[0,0],[-16.011,24.868],[0,0],[0,0],[65.203,-42.907],[-6.297,-10.902],[0,0],[13.157,-17.917],[0,0],[0,0],[-71.143,49.25],[8.107,10.245]],"o":[[0,0],[18.718,-29.072],[0,0],[0,0],[4.953,10.343],[40.203,-23.902],[0,0],[-24.459,33.308],[0,0],[0,0],[-7.643,-12.75],[-26.643,18.495]],"v":[[-14.621,-42.245],[38.588,-113.249],[89.341,-203.715],[86.339,-228.588],[-68.703,-190.343],[-47.453,-154.098],[27.041,-180.598],[-6.575,-123.004],[-85.474,-27.378],[-86.474,-3.5],[84.143,-35.25],[62.643,-69.245]],"c":true}],"e":[{"i":[[0,0],[-16.259,24.612],[0,0],[0,0],[58.453,-61.157],[-8.547,-7.902],[0,0],[14.556,-20.516],[0,0],[0,0],[-60.393,66.25],[10.107,9.745]],"o":[[0,0],[17.655,-26.726],[0,0],[0,0],[8.453,8.093],[26.953,-25.402],[0,0],[-22.46,31.657],[0,0],[0,0],[-9.143,-9.75],[-19.393,23.995]],"v":[[-15.371,-47.245],[35.256,-119.825],[86.341,-201.215],[86.841,-227.593],[-66.453,-176.343],[-37.953,-148.098],[24.541,-181.848],[-17.173,-118.957],[-86.474,-25.378],[-85.474,-1.5],[71.893,-53.25],[42.393,-81.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16.4,"s":[{"i":[[0,0],[-16.259,24.612],[0,0],[0,0],[58.453,-61.157],[-8.547,-7.902],[0,0],[14.556,-20.516],[0,0],[0,0],[-60.393,66.25],[10.107,9.745]],"o":[[0,0],[17.655,-26.726],[0,0],[0,0],[8.453,8.093],[26.953,-25.402],[0,0],[-22.46,31.657],[0,0],[0,0],[-9.143,-9.75],[-19.393,23.995]],"v":[[-15.371,-47.245],[35.256,-119.825],[86.341,-201.215],[86.841,-227.593],[-66.453,-176.343],[-37.953,-148.098],[24.541,-181.848],[-17.173,-118.957],[-86.474,-25.378],[-85.474,-1.5],[71.893,-53.25],[42.393,-81.245]],"c":true}],"e":[{"i":[[0,0],[-16.95,24.847],[0,0],[0,0],[62.203,-52.407],[-6.047,-8.652],[0,0],[16.541,-26.058],[0,0],[0,0],[-65.672,57.268],[8.357,10.745]],"o":[[0,0],[18.288,-26.809],[0,0],[0,0],[6.203,9.593],[25.203,-22.652],[0,0],[-20.283,31.953],[0,0],[0,0],[-6.893,-10.25],[-26.143,20.745]],"v":[[-21.363,-49.75],[24.478,-120.805],[85.837,-199.716],[87.336,-224.59],[-77.444,-188.851],[-54.196,-153.859],[17.046,-183.858],[-28.675,-118.473],[-86.474,-25.378],[-86.476,1],[68.653,-49.76],[43.651,-81.505]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17.36,"s":[{"i":[[0,0],[-16.95,24.847],[0,0],[0,0],[62.203,-52.407],[-6.047,-8.652],[0,0],[16.541,-26.058],[0,0],[0,0],[-65.672,57.268],[8.357,10.745]],"o":[[0,0],[18.288,-26.809],[0,0],[0,0],[6.203,9.593],[25.203,-22.652],[0,0],[-20.283,31.953],[0,0],[0,0],[-6.893,-10.25],[-26.143,20.745]],"v":[[-21.363,-49.75],[24.478,-120.805],[85.837,-199.716],[87.336,-224.59],[-77.444,-188.851],[-54.196,-153.859],[17.046,-183.858],[-28.675,-118.473],[-86.474,-25.378],[-86.476,1],[68.653,-49.76],[43.651,-81.505]],"c":true}],"e":[{"i":[[0,0],[-17.431,25.569],[0,0],[0,0],[61.781,-2.962],[-0.047,-10.152],[0,0],[17.355,-28.109],[0,0],[0,0],[-77.643,0.5],[1.177,14.467]],"o":[[0,0],[18.807,-27.588],[0,0],[0,0],[0.203,12.843],[68.953,1.348],[0,0],[-20.282,32.85],[0,0],[0,0],[0.107,-12.5],[-48.143,-0.255]],"v":[[-28.363,-45.26],[16.424,-119.986],[83.834,-198.221],[86.832,-223.092],[-86.186,-232.101],[-89.441,-188.364],[17.55,-188.612],[-32.973,-122.431],[-88.981,-22.385],[-84.987,5.004],[80.666,-9.515],[77.408,-48.268]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18.32,"s":[{"i":[[0,0],[-17.431,25.569],[0,0],[0,0],[61.781,-2.962],[-0.047,-10.152],[0,0],[17.355,-28.109],[0,0],[0,0],[-77.643,0.5],[1.177,14.467]],"o":[[0,0],[18.807,-27.588],[0,0],[0,0],[0.203,12.843],[68.953,1.348],[0,0],[-20.282,32.85],[0,0],[0,0],[0.107,-12.5],[-48.143,-0.255]],"v":[[-28.363,-45.26],[16.424,-119.986],[83.834,-198.221],[86.832,-223.092],[-86.186,-232.101],[-89.441,-188.364],[17.55,-188.612],[-32.973,-122.431],[-88.981,-22.385],[-84.987,5.004],[80.666,-9.515],[77.408,-48.268]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[50.774,29.269],[3.453,-9.902],[0,0],[15.951,-24.564],[0,0],[0,0],[-80.643,-40.25],[-6.143,12.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-5.297,13.343],[70.703,33.098],[0,0],[-21.275,32.762],[0,0],[0,0],[7.107,-13],[-60.393,-31.505]],"v":[[-24.369,-41.249],[23.155,-115.19],[85.836,-199.216],[86.836,-224.592],[-81.2,-255.847],[-97.949,-216.603],[22.043,-187.854],[-25.585,-119.961],[-86.474,-25.378],[-85.478,1.502],[82.648,30.246],[99.394,-5.753]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19.28,"s":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[50.774,29.269],[3.453,-9.902],[0,0],[15.951,-24.564],[0,0],[0,0],[-80.643,-40.25],[-6.143,12.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-5.297,13.343],[70.703,33.098],[0,0],[-21.275,32.762],[0,0],[0,0],[7.107,-13],[-60.393,-31.505]],"v":[[-24.369,-41.249],[23.155,-115.19],[85.836,-199.216],[86.836,-224.592],[-81.2,-255.847],[-97.949,-216.603],[22.043,-187.854],[-25.585,-119.961],[-86.474,-25.378],[-85.478,1.502],[82.648,30.246],[99.394,-5.753]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[58.453,26.849],[2.515,-9.902],[0,0],[15.143,-22.442],[0,0],[0,0],[-86.246,-37.443],[-4.456,12.246]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-4.36,12.968],[66.524,21.723],[0,0],[-21.917,32.445],[0,0],[0,0],[6.148,-13.951],[-51.324,-26.345]],"v":[[-22.5,-38.995],[30.651,-114.796],[87.338,-200.337],[86.465,-226.092],[-81.522,-243.909],[-94.524,-200.723],[25.41,-185.784],[-18.465,-119.155],[-86.474,-25.378],[-86.225,0.376],[85.385,20.808],[100.133,-18.747]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[58.453,26.849],[2.515,-9.902],[0,0],[15.143,-22.442],[0,0],[0,0],[-86.246,-37.443],[-4.456,12.246]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-4.36,12.968],[66.524,21.723],[0,0],[-21.917,32.445],[0,0],[0,0],[6.148,-13.951],[-51.324,-26.345]],"v":[[-22.5,-38.995],[30.651,-114.796],[87.338,-200.337],[86.465,-226.092],[-81.522,-243.909],[-94.524,-200.723],[25.41,-185.784],[-18.465,-119.155],[-86.474,-25.378],[-86.225,0.376],[85.385,20.808],[100.133,-18.747]],"c":true}],"e":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[71.797,-26.682],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-71.4,23.529],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.703,-10.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-47.893,14.745]],"v":[[-19.874,-42.493],[33.197,-118.354],[86.335,-198.715],[85.839,-225.594],[-80.711,-204.342],[-68.459,-165.594],[23.786,-181.594],[-19.428,-118.999],[-86.474,-25.378],[-86.474,0],[82.384,-17.501],[71.884,-57.493]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21.2,"s":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[71.797,-26.682],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-71.4,23.529],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.703,-10.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-47.893,14.745]],"v":[[-19.874,-42.493],[33.197,-118.354],[86.335,-198.715],[85.839,-225.594],[-80.711,-204.342],[-68.459,-165.594],[23.786,-181.594],[-19.428,-118.999],[-86.474,-25.378],[-86.474,0],[82.384,-17.501],[71.884,-57.493]],"c":true}],"e":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[95.299,-25.872],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-54.393,19.575],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.203,-11.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-31.264,9.098]],"v":[[-20.871,-43.495],[23.683,-112.878],[86.337,-199.715],[86.335,-224.093],[-83.705,-208.599],[-73.703,-168.605],[21.29,-183.1],[-23.424,-120.509],[-86.474,-25.378],[-86.476,1],[80.391,-18.509],[68.389,-58.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22.16,"s":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[95.299,-25.872],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-54.393,19.575],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.203,-11.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-31.264,9.098]],"v":[[-20.871,-43.495],[23.683,-112.878],[86.337,-199.715],[86.335,-224.093],[-83.705,-208.599],[-73.703,-168.605],[21.29,-183.1],[-23.424,-120.509],[-86.474,-25.378],[-86.476,1],[80.391,-18.509],[68.389,-58.504]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[68.538,-13.689],[-1.547,-13.402],[0,0],[14.572,-21.332],[0,0],[0,0],[-74.887,-9.47],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[34.953,-3.402],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-37.643,-5.505]],"v":[[-25.869,-41.503],[18.645,-111.331],[86.336,-199.215],[85.835,-224.094],[-83.951,-217.851],[-80.95,-177.108],[20.292,-185.103],[-22.926,-118.116],[-86.474,-25.378],[-86.48,2.5],[81.896,5.987],[85.643,-34.509]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[68.538,-13.689],[-1.547,-13.402],[0,0],[14.572,-21.332],[0,0],[0,0],[-74.887,-9.47],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[34.953,-3.402],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-37.643,-5.505]],"v":[[-25.869,-41.503],[18.645,-111.331],[86.336,-199.215],[85.835,-224.094],[-83.951,-217.851],[-80.95,-177.108],[20.292,-185.103],[-22.926,-118.116],[-86.474,-25.378],[-86.48,2.5],[81.896,5.987],[85.643,-34.509]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-22.121,-41.995],[30.05,-118.582],[86.341,-201.215],[86.341,-226.593],[-83.453,-226.593],[-83.453,-184.598],[22.291,-184.598],[-21.426,-120.602],[-86.474,-25.378],[-86.474,0],[86.643,0],[86.643,-41.995]],"c":true}]},{"t":24}]},"nm":"Z"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.86,0.86,0.86,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Z"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Z Light Blue","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,400,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[{"i":[[-0.001,-0.006],[-0.001,-0.002],[-0.002,-0.001],[-0.003,-0.001],[-0.004,0.001],[-0.003,0.004],[0,0.005],[0,0.002],[0.002,0.002],[0.004,0.001],[0,0],[0.002,-0.005]],"o":[[0,0.002],[0.001,0.002],[0.002,0.002],[0.004,0.001],[0.005,-0.001],[0.003,-0.004],[0,-0.002],[0,-0.003],[-0.002,-0.003],[-0.006,-0.001],[0,0],[-0.003,0.005]],"v":[[-6.999,-102.839],[-6.996,-102.832],[-6.992,-102.827],[-6.984,-102.822],[-6.97,-102.821],[-6.957,-102.829],[-6.952,-102.843],[-6.953,-102.85],[-6.956,-102.858],[-6.968,-102.866],[-6.983,-102.866],[-6.996,-102.856]],"c":true}],"e":[{"i":[[0.977,4.878],[1.034,1.875],[1.367,1.132],[2.376,0.711],[3.417,-0.742],[2.692,-3.522],[0.142,-4.38],[-0.3,-1.905],[-1.352,-1.972],[-3.176,-0.638],[0,0],[-1.967,3.941]],"o":[[-0.332,-1.655],[-1.088,-1.973],[-1.911,-1.582],[-3.35,-1.003],[-4.332,0.941],[-2.661,3.481],[-0.059,1.834],[0.391,2.482],[1.832,2.671],[4.912,0.987],[0,0],[2.221,-4.452]],"v":[[11.794,-106.803],[9.636,-112.337],[5.825,-117.272],[-0.159,-120.993],[-12.333,-121.758],[-22.486,-115.093],[-26.665,-103.831],[-26.348,-98.143],[-23.832,-91.285],[-13.705,-84.175],[-1.628,-84.175],[9.524,-92.48]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":3,"s":[{"i":[[0.977,4.878],[1.034,1.875],[1.367,1.132],[2.376,0.711],[3.417,-0.742],[2.692,-3.522],[0.142,-4.38],[-0.3,-1.905],[-1.352,-1.972],[-3.176,-0.638],[0,0],[-1.967,3.941]],"o":[[-0.332,-1.655],[-1.088,-1.973],[-1.911,-1.582],[-3.35,-1.003],[-4.332,0.941],[-2.661,3.481],[-0.059,1.834],[0.391,2.482],[1.832,2.671],[4.912,0.987],[0,0],[2.221,-4.452]],"v":[[11.794,-106.803],[9.636,-112.337],[5.825,-117.272],[-0.159,-120.993],[-12.333,-121.758],[-22.486,-115.093],[-26.665,-103.831],[-26.348,-98.143],[-23.832,-91.285],[-13.705,-84.175],[-1.628,-84.175],[9.524,-92.48]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[13.953,-4.407],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-13.286,16.5],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-15.297,4.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[4.714,-7.25],[0.607,-15.255]],"v":[[14.757,-99.745],[15.322,-129.794],[15.994,-129.965],[15.933,-147.343],[-11.391,-145.343],[-28.499,-115.598],[-28.337,-130.848],[-28.794,-83.331],[-29.478,-59.378],[-29.509,-62],[8.569,-72.5],[15.069,-94.995]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[13.953,-4.407],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-13.286,16.5],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-15.297,4.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[4.714,-7.25],[0.607,-15.255]],"v":[[14.757,-99.745],[15.322,-129.794],[15.994,-129.965],[15.933,-147.343],[-11.391,-145.343],[-28.499,-115.598],[-28.337,-130.848],[-28.794,-83.331],[-29.478,-59.378],[-29.509,-62],[8.569,-72.5],[15.069,-94.995]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[13.953,-4.407],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-13.286,16.5],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-15.297,4.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[4.714,-7.25],[0.607,-15.255]],"v":[[14.757,-99.745],[15.322,-129.794],[15.872,-188.715],[15.811,-206.093],[-11.513,-204.093],[-28.621,-174.348],[-28.337,-130.848],[-28.794,-83.331],[-29.474,-12.628],[-29.504,-15.25],[8.573,-25.75],[15.073,-48.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[13.953,-4.407],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-13.286,16.5],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-15.297,4.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[4.714,-7.25],[0.607,-15.255]],"v":[[14.757,-99.745],[15.322,-129.794],[15.872,-188.715],[15.811,-206.093],[-11.513,-204.093],[-28.621,-174.348],[-28.337,-130.848],[-28.794,-83.331],[-29.474,-12.628],[-29.504,-15.25],[8.573,-25.75],[15.073,-48.245]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[14.591,-235.843],[-23.453,-224.593],[-28.655,-199.598],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.698,5.75],[11.036,-8.75],[15.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[14.591,-235.843],[-23.453,-224.593],[-28.655,-199.598],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.698,5.75],[11.036,-8.75],[15.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[15.091,-237.343],[-24.203,-229.093],[-28.703,-206.348],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.724,7.25],[11.143,-7],[15.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":7,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[9.703,-14.157],[0.106,-4.829],[0,0],[0,0],[0,0],[0,0],[-9.643,19.75],[-0.143,9.495]],"o":[[0,0],[0,0],[0,0],[0,0],[-4.547,7.843],[-0.297,13.598],[0,0],[0,0],[0,0],[0,0],[2.857,-7.25],[0.607,-15.255]],"v":[[14.879,-60.495],[15.342,-126.74],[15.841,-198.215],[15.091,-237.343],[-24.203,-229.093],[-28.703,-206.348],[-28.419,-180.848],[-28.843,-113.234],[-29.474,-12.628],[-29.724,7.25],[11.143,-7],[15.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[5.203,-26.157],[-1.998,-4.397],[0,0],[0,0],[0,0],[0,0],[-4.143,30.75],[4.857,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-2.297,12.343],[2.203,4.848],[0,0],[0,0],[0,0],[0,0],[0.857,-8.5],[0.607,-15.255]],"v":[[13.629,-61.995],[15.775,-127.879],[18.091,-198.965],[19.341,-240.093],[-33.453,-222.593],[-32.703,-200.598],[-25.459,-188.848],[-27.676,-118.019],[-30.974,-12.628],[-31.724,10],[17.143,-10.5],[13.143,-31.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[5.203,-26.157],[-1.998,-4.397],[0,0],[0,0],[0,0],[0,0],[-4.143,30.75],[4.857,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-2.297,12.343],[2.203,4.848],[0,0],[0,0],[0,0],[0,0],[0.857,-8.5],[0.607,-15.255]],"v":[[13.629,-61.995],[15.775,-127.879],[18.091,-198.965],[19.341,-240.093],[-33.453,-222.593],[-32.703,-200.598],[-25.459,-188.848],[-27.676,-118.019],[-30.974,-12.628],[-31.724,10],[17.143,-10.5],[13.143,-31.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[17.203,-37.907],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-18.143,55],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-11.797,20.593],[11.953,-5.652],[0,0],[0,0],[0,0],[0,0],[2.357,-18],[-4.393,4.745]],"v":[[11.129,-55.245],[17.243,-123.895],[23.841,-197.965],[28.591,-240.343],[-41.703,-224.093],[-39.453,-167.348],[-21.459,-177.348],[-27.494,-113.352],[-36.474,-18.128],[-39.224,10.5],[30.643,-22],[18.893,-61.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[17.203,-37.907],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-18.143,55],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-11.797,20.593],[11.953,-5.652],[0,0],[0,0],[0,0],[0,0],[2.357,-18],[-4.393,4.745]],"v":[[11.129,-55.245],[17.243,-123.895],[23.841,-197.965],[28.591,-240.343],[-41.703,-224.093],[-39.453,-167.348],[-21.459,-177.348],[-27.494,-113.352],[-36.474,-18.128],[-39.224,10.5],[30.643,-22],[18.893,-61.245]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[58.703,-52.407],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-58.143,56.5],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[6.703,9.093],[26.953,-25.652],[0,0],[0,0],[0,0],[0,0],[-7.643,-8.5],[-26.893,24.245]],"v":[[-2.871,-17.745],[18.155,-112.37],[40.841,-214.465],[45.591,-237.843],[-93.703,-223.593],[-69.953,-195.348],[-3.459,-214.848],[-21.15,-135.377],[-47.474,-17.128],[-53.224,9],[84.143,-12],[57.893,-38.745]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[58.703,-52.407],[-7.547,-8.152],[0,0],[0,0],[0,0],[0,0],[-58.143,56.5],[9.107,7.745]],"o":[[0,0],[0,0],[0,0],[0,0],[6.703,9.093],[26.953,-25.652],[0,0],[0,0],[0,0],[0,0],[-7.643,-8.5],[-26.893,24.245]],"v":[[-2.871,-17.745],[18.155,-112.37],[40.841,-214.465],[45.591,-237.843],[-93.703,-223.593],[-69.953,-195.348],[-3.459,-214.848],[-21.15,-135.377],[-47.474,-17.128],[-53.224,9],[84.143,-12],[57.893,-38.745]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[36.703,67.093],[8.953,-4.652],[0,0],[0,0],[0,0],[0,0],[-47.143,-75.5],[-7.393,4.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.797,4.093],[43.453,77.348],[0,0],[0,0],[0,0],[0,0],[11.857,-7],[-39.893,-74.755]],"v":[[-16.871,-12.245],[19.066,-107.11],[57.841,-209.465],[67.591,-232.343],[-55.203,-328.593],[-88.953,-308.848],[14.041,-217.348],[-16.11,-138.48],[-60.974,-21.128],[-71.724,3],[54.143,106.5],[85.893,87.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":11,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[36.703,67.093],[8.953,-4.652],[0,0],[0,0],[0,0],[0,0],[-47.143,-75.5],[-7.393,4.745]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.797,4.093],[43.453,77.348],[0,0],[0,0],[0,0],[0,0],[11.857,-7],[-39.893,-74.755]],"v":[[-16.871,-12.245],[19.066,-107.11],[57.841,-209.465],[67.591,-232.343],[-55.203,-328.593],[-88.953,-308.848],[14.041,-217.348],[-16.11,-138.48],[-60.974,-21.128],[-71.724,3],[54.143,106.5],[85.893,87.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-27.297,84.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[45.857,-104.5],[-11.393,-7.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-4.407],[-40.047,121.848],[0,0],[0,0],[0,0],[0,0],[10.357,6],[58.107,-116.255]],"v":[[-25.371,-16.245],[19.946,-106.3],[68.841,-203.465],[83.091,-231.343],[2.797,-357.593],[-34.953,-373.848],[26.041,-215.348],[-12.35,-139.695],[-69.474,-27.128],[-82.224,0],[-15.857,143],[19.393,162.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-27.297,84.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[45.857,-104.5],[-11.393,-7.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-4.407],[-40.047,121.848],[0,0],[0,0],[0,0],[0,0],[10.357,6],[58.107,-116.255]],"v":[[-25.371,-16.245],[19.946,-106.3],[68.841,-203.465],[83.091,-231.343],[2.797,-357.593],[-34.953,-373.848],[26.041,-215.348],[-12.35,-139.695],[-69.474,-27.128],[-82.224,0],[-15.857,143],[19.393,162.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-35.797,93.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[41.857,-111.5],[-10.893,-6.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-10.297,-5.407],[-46.047,117.348],[0,0],[0,0],[0,0],[0,0],[9.857,5],[56.607,-128.255]],"v":[[-30.371,-21.245],[21.199,-108.895],[76.841,-203.465],[86.591,-225.343],[2.297,-348.093],[-34.953,-366.848],[31.041,-208.348],[-13.379,-133.097],[-79.474,-21.128],[-87.224,-1],[-13.857,136.5],[20.893,157.755]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-35.797,93.593],[8.953,4.348],[0,0],[0,0],[0,0],[0,0],[41.857,-111.5],[-10.893,-6.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-10.297,-5.407],[-46.047,117.348],[0,0],[0,0],[0,0],[0,0],[9.857,5],[56.607,-128.255]],"v":[[-30.371,-21.245],[21.199,-108.895],[76.841,-203.465],[86.591,-225.343],[2.297,-348.093],[-34.953,-366.848],[31.041,-208.348],[-13.379,-133.097],[-79.474,-21.128],[-87.224,-1],[-13.857,136.5],[20.893,157.755]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[-2.297,93.093],[9.453,1.348],[0,0],[0,0],[0,0],[0,0],[9.357,-108],[-10.893,-2.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-0.907],[-10.547,111.348],[0,0],[0,0],[0,0],[0,0],[10.357,1.5],[15.107,-123.755]],"v":[[-29.371,-26.745],[25.07,-112.136],[82.341,-201.965],[86.591,-224.843],[-24.703,-329.593],[-66.453,-332.848],[30.041,-201.848],[-18.384,-124.24],[-81.474,-23.128],[-85.724,-1.5],[18.643,120.5],[60.393,126.255]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[-2.297,93.093],[9.453,1.348],[0,0],[0,0],[0,0],[0,0],[9.357,-108],[-10.893,-2.255]],"o":[[0,0],[0,0],[0,0],[0,0],[-9.797,-0.907],[-10.547,111.348],[0,0],[0,0],[0,0],[0,0],[10.357,1.5],[15.107,-123.755]],"v":[[-29.371,-26.745],[25.07,-112.136],[82.341,-201.965],[86.591,-224.843],[-24.703,-329.593],[-66.453,-332.848],[30.041,-201.848],[-18.384,-124.24],[-81.474,-23.128],[-85.724,-1.5],[18.643,120.5],[60.393,126.255]],"c":true}],"e":[{"i":[[0,0],[-17.711,26.852],[0,0],[0,0],[58.703,51.843],[7.703,-7.402],[0,0],[15.008,-22.705],[0,0],[0,0],[-71.638,-55.5],[-7.893,8.745]],"o":[[0,0],[19.11,-28.972],[0,0],[0,0],[-8.297,14.343],[51.953,44.348],[0,0],[-22.331,33.785],[0,0],[0,0],[6.362,-16],[-52.883,-44.76]],"v":[[-23.371,-34.239],[33.262,-111.8],[86.091,-202.215],[85.841,-227.343],[-63.203,-269.343],[-82.453,-233.848],[27.041,-194.348],[-12.482,-124.232],[-84.974,-24.878],[-86.224,-1],[68.138,42.5],[86.383,7.26]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":15,"s":[{"i":[[0,0],[-17.711,26.852],[0,0],[0,0],[58.703,51.843],[7.703,-7.402],[0,0],[15.008,-22.705],[0,0],[0,0],[-71.638,-55.5],[-7.893,8.745]],"o":[[0,0],[19.11,-28.972],[0,0],[0,0],[-8.297,14.343],[51.953,44.348],[0,0],[-22.331,33.785],[0,0],[0,0],[6.362,-16],[-52.883,-44.76]],"v":[[-23.371,-34.239],[33.262,-111.8],[86.091,-202.215],[85.841,-227.343],[-63.203,-269.343],[-82.453,-233.848],[27.041,-194.348],[-12.482,-124.232],[-84.974,-24.878],[-86.224,-1],[68.138,42.5],[86.383,7.26]],"c":true}],"e":[{"i":[[0,0],[-16.011,24.868],[0,0],[0,0],[65.203,-42.907],[-6.297,-10.902],[0,0],[13.157,-17.917],[0,0],[0,0],[-71.143,49.25],[8.107,10.245]],"o":[[0,0],[18.718,-29.072],[0,0],[0,0],[4.953,10.343],[40.203,-23.902],[0,0],[-24.459,33.308],[0,0],[0,0],[-7.643,-12.75],[-26.643,18.495]],"v":[[-14.621,-42.245],[38.588,-113.249],[89.341,-203.715],[86.339,-228.588],[-68.703,-190.343],[-47.453,-154.098],[27.041,-180.598],[-6.575,-123.004],[-85.474,-27.378],[-86.474,-3.5],[84.143,-35.25],[62.643,-69.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[-16.011,24.868],[0,0],[0,0],[65.203,-42.907],[-6.297,-10.902],[0,0],[13.157,-17.917],[0,0],[0,0],[-71.143,49.25],[8.107,10.245]],"o":[[0,0],[18.718,-29.072],[0,0],[0,0],[4.953,10.343],[40.203,-23.902],[0,0],[-24.459,33.308],[0,0],[0,0],[-7.643,-12.75],[-26.643,18.495]],"v":[[-14.621,-42.245],[38.588,-113.249],[89.341,-203.715],[86.339,-228.588],[-68.703,-190.343],[-47.453,-154.098],[27.041,-180.598],[-6.575,-123.004],[-85.474,-27.378],[-86.474,-3.5],[84.143,-35.25],[62.643,-69.245]],"c":true}],"e":[{"i":[[0,0],[-16.259,24.612],[0,0],[0,0],[58.453,-61.157],[-8.547,-7.902],[0,0],[14.556,-20.516],[0,0],[0,0],[-60.393,66.25],[10.107,9.745]],"o":[[0,0],[17.655,-26.726],[0,0],[0,0],[8.453,8.093],[26.953,-25.402],[0,0],[-22.46,31.657],[0,0],[0,0],[-9.143,-9.75],[-19.393,23.995]],"v":[[-15.371,-47.245],[35.256,-119.825],[86.341,-201.215],[86.841,-227.593],[-66.453,-176.343],[-37.953,-148.098],[24.541,-181.848],[-17.173,-118.957],[-86.474,-25.378],[-85.474,-1.5],[71.893,-53.25],[42.393,-81.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":17,"s":[{"i":[[0,0],[-16.259,24.612],[0,0],[0,0],[58.453,-61.157],[-8.547,-7.902],[0,0],[14.556,-20.516],[0,0],[0,0],[-60.393,66.25],[10.107,9.745]],"o":[[0,0],[17.655,-26.726],[0,0],[0,0],[8.453,8.093],[26.953,-25.402],[0,0],[-22.46,31.657],[0,0],[0,0],[-9.143,-9.75],[-19.393,23.995]],"v":[[-15.371,-47.245],[35.256,-119.825],[86.341,-201.215],[86.841,-227.593],[-66.453,-176.343],[-37.953,-148.098],[24.541,-181.848],[-17.173,-118.957],[-86.474,-25.378],[-85.474,-1.5],[71.893,-53.25],[42.393,-81.245]],"c":true}],"e":[{"i":[[0,0],[-16.95,24.847],[0,0],[0,0],[62.203,-52.407],[-6.047,-8.652],[0,0],[16.541,-26.058],[0,0],[0,0],[-65.672,57.268],[8.357,10.745]],"o":[[0,0],[18.288,-26.809],[0,0],[0,0],[6.203,9.593],[25.203,-22.652],[0,0],[-20.283,31.953],[0,0],[0,0],[-6.893,-10.25],[-26.143,20.745]],"v":[[-21.363,-49.75],[24.478,-120.805],[85.837,-199.716],[87.336,-224.59],[-77.444,-188.851],[-54.196,-153.859],[17.046,-183.858],[-28.675,-118.473],[-86.474,-25.378],[-86.476,1],[68.653,-49.76],[43.651,-81.505]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":18,"s":[{"i":[[0,0],[-16.95,24.847],[0,0],[0,0],[62.203,-52.407],[-6.047,-8.652],[0,0],[16.541,-26.058],[0,0],[0,0],[-65.672,57.268],[8.357,10.745]],"o":[[0,0],[18.288,-26.809],[0,0],[0,0],[6.203,9.593],[25.203,-22.652],[0,0],[-20.283,31.953],[0,0],[0,0],[-6.893,-10.25],[-26.143,20.745]],"v":[[-21.363,-49.75],[24.478,-120.805],[85.837,-199.716],[87.336,-224.59],[-77.444,-188.851],[-54.196,-153.859],[17.046,-183.858],[-28.675,-118.473],[-86.474,-25.378],[-86.476,1],[68.653,-49.76],[43.651,-81.505]],"c":true}],"e":[{"i":[[0,0],[-17.431,25.569],[0,0],[0,0],[61.781,-2.962],[-0.047,-10.152],[0,0],[17.355,-28.109],[0,0],[0,0],[-77.643,0.5],[1.177,14.467]],"o":[[0,0],[18.807,-27.588],[0,0],[0,0],[0.203,12.843],[68.953,1.348],[0,0],[-20.282,32.85],[0,0],[0,0],[0.107,-12.5],[-47.908,-5.732]],"v":[[-28.363,-45.26],[16.424,-119.986],[83.834,-198.221],[86.832,-223.092],[-86.186,-232.101],[-89.441,-188.364],[17.55,-188.612],[-32.973,-122.431],[-88.981,-22.385],[-84.987,5.004],[81.666,0.485],[80.408,-39.268]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":19,"s":[{"i":[[0,0],[-17.431,25.569],[0,0],[0,0],[61.781,-2.962],[-0.047,-10.152],[0,0],[17.355,-28.109],[0,0],[0,0],[-77.643,0.5],[1.177,14.467]],"o":[[0,0],[18.807,-27.588],[0,0],[0,0],[0.203,12.843],[68.953,1.348],[0,0],[-20.282,32.85],[0,0],[0,0],[0.107,-12.5],[-47.908,-5.732]],"v":[[-28.363,-45.26],[16.424,-119.986],[83.834,-198.221],[86.832,-223.092],[-86.186,-232.101],[-89.441,-188.364],[17.55,-188.612],[-32.973,-122.431],[-88.981,-22.385],[-84.987,5.004],[81.666,0.485],[80.408,-39.268]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[50.774,29.269],[3.453,-9.902],[0,0],[15.951,-24.564],[0,0],[0,0],[-80.643,-40.25],[-6.143,12.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-5.297,13.343],[70.703,33.098],[0,0],[-21.275,32.762],[0,0],[0,0],[7.107,-13],[-60.393,-31.505]],"v":[[-24.369,-41.249],[23.155,-115.19],[85.836,-199.216],[86.836,-224.592],[-81.2,-255.847],[-97.949,-216.603],[22.043,-187.854],[-25.585,-119.961],[-86.474,-25.378],[-85.478,1.502],[82.648,30.246],[99.394,-5.753]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":20,"s":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[50.774,29.269],[3.453,-9.902],[0,0],[15.951,-24.564],[0,0],[0,0],[-80.643,-40.25],[-6.143,12.995]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[-5.297,13.343],[70.703,33.098],[0,0],[-21.275,32.762],[0,0],[0,0],[7.107,-13],[-60.393,-31.505]],"v":[[-24.369,-41.249],[23.155,-115.19],[85.836,-199.216],[86.836,-224.592],[-81.2,-255.847],[-97.949,-216.603],[22.043,-187.854],[-25.585,-119.961],[-86.474,-25.378],[-85.478,1.502],[82.648,30.246],[99.394,-5.753]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[52.963,-5.407],[-5.286,-13.907],[0,0],[14.874,-21.734],[0,0],[0,0],[-92.631,-25.995],[-0.879,12.245]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[3.963,13.593],[64.714,-4.907],[0,0],[-22.131,32.339],[0,0],[0,0],[3.869,-16.495],[-48.879,-14.255]],"v":[[-21.876,-38.243],[33.154,-114.665],[87.84,-200.711],[86.341,-226.593],[-82.963,-223.593],[-73.714,-183.593],[26.534,-185.093],[-16.089,-118.886],[-86.474,-25.378],[-86.474,0],[80.631,9.495],[87.379,-32.245]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":21,"s":[{"i":[[0,0],[-17.511,25.809],[0,0],[0,0],[52.963,-5.407],[-5.286,-13.907],[0,0],[14.874,-21.734],[0,0],[0,0],[-92.631,-25.995],[-0.879,12.245]],"o":[[0,0],[18.893,-27.847],[0,0],[0,0],[3.963,13.593],[64.714,-4.907],[0,0],[-22.131,32.339],[0,0],[0,0],[3.869,-16.495],[-48.879,-14.255]],"v":[[-21.876,-38.243],[33.154,-114.665],[87.84,-200.711],[86.341,-226.593],[-82.963,-223.593],[-73.714,-183.593],[26.534,-185.093],[-16.089,-118.886],[-86.474,-25.378],[-86.474,0],[80.631,9.495],[87.379,-32.245]],"c":true}],"e":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[71.797,-26.682],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-71.4,23.529],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.703,-10.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-47.893,14.745]],"v":[[-19.874,-42.493],[33.197,-118.354],[86.335,-198.715],[85.839,-225.594],[-80.711,-204.342],[-68.459,-165.594],[23.786,-181.594],[-19.428,-118.999],[-86.474,-25.378],[-86.474,0],[82.384,-17.501],[71.884,-57.493]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":22,"s":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[71.797,-26.682],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-71.4,23.529],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.703,-10.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-47.893,14.745]],"v":[[-19.874,-42.493],[33.197,-118.354],[86.335,-198.715],[85.839,-225.594],[-80.711,-204.342],[-68.459,-165.594],[23.786,-181.594],[-19.428,-118.999],[-86.474,-25.378],[-86.474,0],[82.384,-17.501],[71.884,-57.493]],"c":true}],"e":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[95.299,-25.872],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-53.891,7.009],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.203,-11.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-29.389,-0.996]],"v":[[-20.871,-43.495],[23.683,-112.878],[86.337,-199.715],[86.335,-224.093],[-83.705,-208.599],[-73.703,-168.605],[21.29,-183.1],[-23.424,-120.509],[-86.474,-25.378],[-86.476,1],[83.891,-6.509],[79.389,-42.004]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[-17.19,25.288],[0,0],[0,0],[95.299,-25.872],[-3.047,-12.402],[0,0],[14.572,-21.198],[0,0],[0,0],[-53.891,7.009],[4.607,15.745]],"o":[[0,0],[18.547,-27.285],[0,0],[0,0],[2.703,12.343],[37.203,-11.402],[0,0],[-21.683,31.542],[0,0],[0,0],[-4.643,-16],[-29.389,-0.996]],"v":[[-20.871,-43.495],[23.683,-112.878],[86.337,-199.715],[86.335,-224.093],[-83.705,-208.599],[-73.703,-168.605],[21.29,-183.1],[-23.424,-120.509],[-86.474,-25.378],[-86.476,1],[83.891,-6.509],[79.389,-42.004]],"c":true}],"e":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[68.538,-13.689],[-1.547,-13.402],[0,0],[14.572,-21.332],[0,0],[0,0],[-74.887,-9.47],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[34.953,-3.402],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-37.643,-5.505]],"v":[[-25.869,-41.503],[18.645,-111.331],[86.336,-199.215],[85.835,-224.094],[-83.951,-217.851],[-80.95,-177.108],[20.292,-185.103],[-21.426,-119.116],[-86.474,-25.378],[-86.48,2.5],[81.896,5.987],[85.643,-34.509]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":24,"s":[{"i":[[0,0],[-17.511,25.769],[0,0],[0,0],[68.538,-13.689],[-1.547,-13.402],[0,0],[14.572,-21.332],[0,0],[0,0],[-74.887,-9.47],[-2.393,16.745]],"o":[[0,0],[18.893,-27.804],[0,0],[0,0],[-1.547,13.843],[34.953,-3.402],[0,0],[-21.683,31.741],[0,0],[0,0],[1.607,-18.5],[-37.643,-5.505]],"v":[[-25.869,-41.503],[18.645,-111.331],[86.336,-199.215],[85.835,-224.094],[-83.951,-217.851],[-80.95,-177.108],[20.292,-185.103],[-21.426,-119.116],[-86.474,-25.378],[-86.48,2.5],[81.896,5.987],[85.643,-34.509]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-22.121,-41.995],[30.05,-118.582],[86.341,-201.215],[86.341,-226.593],[-83.453,-226.593],[-83.453,-184.598],[22.291,-184.598],[-21.426,-120.602],[-86.474,-25.378],[-86.474,0],[86.643,0],[86.643,-41.995]],"c":true}]},{"t":25}]},"nm":"Z"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.15,0.8,0.55,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Z"}],"ip":0,"op":25,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":1,"nm":"ResizerTemp","parent":6,"ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[26.6,35.7,0]},"a":{"k":[250,300,0]},"s":{"k":[10.5,10.5,100]}},"ao":0,"sw":500,"sh":600,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":1,"nm":"White Solid 55","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[40,50,0]},"a":{"k":[28,35,0]},"s":{"k":[142.857,142.857,100]}},"ao":0,"sw":56,"sh":70,"sc":"#ffffff","ip":0,"op":29,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":29,"fr":25,"w":80,"h":100} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 3437f658..346fae28 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,19 +1,43 @@ +import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.focusable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsFocusedAsState +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ScaleFactor +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.CompottieException import io.github.alexzhirkevich.compottie.LottieComposition @@ -22,11 +46,13 @@ import io.github.alexzhirkevich.compottie.LottieConstants import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieImage +import io.github.alexzhirkevich.compottie.dynamic.DynamicStroke +import io.github.alexzhirkevich.compottie.dynamic.stroke import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter +import kotlinx.coroutines.delay import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.MissingResourceException -import kotlin.random.Random private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -61,6 +87,7 @@ private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" @Composable fun App() { + return LottieFontExample() val composition = rememberLottieComposition( dynamic = { @@ -74,10 +101,14 @@ fun App() { } } } + shapeLayer(""){ + stroke("qwe"){ + } + } } ) { - LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Resource("mobilo/A.json") // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } @@ -105,13 +136,14 @@ fun App() { val painter = rememberLottiePainter( composition = composition.value, - iterations = LottieConstants.IterateForever + iterations = LottieConstants.IterateForever, + clipToCompositionBounds = false ) Image( modifier = Modifier .fillMaxSize() - .opacityGrid(), - painter = painter, +// .opacityGrid(), + ,painter = painter, contentDescription = null ) @@ -121,6 +153,119 @@ fun App() { } } +private val ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ':, \n" + +@OptIn(ExperimentalLayoutApi::class) +@Composable +fun LottieFontExample() { + var text by remember { + mutableStateOf("") + } + + + val add1 = "COMPOTTIE NOW HAS IT'S OWN COMPOSE MULTIPLATFORM LOTTIE RENDERING ENGINE" + + LaunchedEffect(0) { + while (true) { + listOf(add1).forEach { line -> + line.forEach { +// if (it == ' ') { +// delay(200) +// } else { + delay(30) +// } + text += it + } + delay(500) + } + delay(1000) + text = "" + } + } + + val fontSize = 90.dp + + val focus = remember { + FocusRequester() + } + LaunchedEffect(focus) { + focus.requestFocus() + } + + Box( + modifier = Modifier.fillMaxSize() + .focusRequester(focus), +// .focusable(interactionSource = interactionSource), + contentAlignment = Alignment.Center + ) { + BasicTextField( + modifier = Modifier.fillMaxSize(), + value = text, + onValueChange = { + text = it.uppercase().filter { it in ALPHABET } + }, + decorationBox = { + Box( + Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + FlowRow( + modifier = Modifier + .animateContentSize() + .padding(100.dp), + horizontalArrangement = Arrangement.spacedBy( + space = -fontSize / 3, + alignment = Alignment.CenterHorizontally + ), + verticalArrangement = Arrangement.Center + ) { + text.forEach { c -> + val anim = when (c) { + ' ' -> { + Spacer( + modifier = Modifier + .width(fontSize * 2 / 3) + .height(fontSize) + ) + return@forEach + } + ':' -> "Colon" + ',' -> "Comma" + '\'' -> "Apostrophe" + else -> c.toString().uppercase() + } + Image( + modifier = Modifier + .height(fontSize) + .width(fontSize * 3 / 4f), + painter = rememberLottiePainter( + rememberLottieComposition { + LottieCompositionSpec.Resource("mobilo/$anim.json") + }.value + ), + contentDescription = anim + ) + } + + Image( + modifier = Modifier + .height(fontSize) + .padding(fontSize / 4), + painter = rememberLottiePainter( + composition = rememberLottieComposition { + LottieCompositionSpec.Resource("mobilo/BlinkingCursor.json") + }.value, + iterations = LottieConstants.IterateForever + ), + contentDescription = it.toString() + ) + } + } + } + ) + } +} + /** * [LottieComposition] spec from composeResources/[dir]/[path] json asset * */ From 1f8bb9c1b96323e39515d142302163ca4a7a59f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 18 Jun 2024 15:24:20 +0300 Subject: [PATCH 049/100] move assest manager to remember fun --- .../compottie/DotLottieCompositionSpec.kt | 18 +++---- .../compottie/UrlCompositionSpec.kt | 13 ++--- .../compottie/LottieComposition.kt | 10 ++-- .../compottie/LottieCompositionSpec.kt | 47 ------------------- .../src/jvmMain/kotlin/main.desktop.kt | 2 +- example/shared/src/commonMain/kotlin/App.kt | 21 ++++----- 6 files changed, 26 insertions(+), 85 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index a0fd888d..66cee4dd 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -29,9 +29,8 @@ var L.useStableWasmMemoryManagement by ::_useStableWasmMemoryManagement * */ @Stable fun LottieCompositionSpec.Companion.DotLottie( - assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, - archive: suspend () -> ByteArray, -) : LottieCompositionSpec = DotLottieCompositionSpec(archive, assetsManager) + archive: ByteArray, +) : LottieCompositionSpec = DotLottieCompositionSpec(archive) @OptIn(ExperimentalSerializationApi::class) @@ -42,8 +41,7 @@ private val DotLottieJson = Json { } private class DotLottieCompositionSpec( - private val archive : suspend () -> ByteArray, - private val assetsManager: LottieAssetsManager + private val archive : ByteArray, ) : LottieCompositionSpec { @OptIn(InternalCompottieApi::class) @@ -52,10 +50,8 @@ private class DotLottieCompositionSpec( val fileSystem = FakeFileSystem() val path = "anim".toPath() - val bytes = archive() - fileSystem.write(path) { - write(bytes) + write(archive) } val entries = fileSystem.listZipEntries(path) @@ -76,18 +72,16 @@ private class DotLottieCompositionSpec( iterations = LottieConstants.IterateForever } prepare(DotLottieAssetsManager(zipSystem)) - prepare(assetsManager) } } override fun hashCode(): Int { - return 31 * archive.hashCode() + assetsManager.hashCode() + return 31 * archive.contentHashCode() } override fun equals(other: Any?): Boolean { return (other as? DotLottieCompositionSpec)?.let { - it.archive == archive && - it.assetsManager == assetsManager + it.archive.contentEquals(archive) } == true } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 9740c8ff..79a17560 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -34,12 +34,10 @@ fun LottieCompositionSpec.Companion.Url( client: HttpClient = DefaultHttpClient, request : NetworkRequest = GetRequest, cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), - assetsManager: LottieAssetsManager = NetworkAssetsManager(client, cacheStrategy, request), ) : LottieCompositionSpec = NetworkCompositionSpec( url = url, format = format, client = client, - assetsManager = assetsManager, cacheStrategy = cacheStrategy, request = request ) @@ -49,7 +47,6 @@ private class NetworkCompositionSpec( private val url : String, private val format: LottieAnimationFormat, private val client : HttpClient, - private val assetsManager: LottieAssetsManager, private val cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), private val request : NetworkRequest, ) : LottieCompositionSpec { @@ -58,9 +55,9 @@ private class NetworkCompositionSpec( cacheStrategy.load(url)?.let { val delegate = if (byteArrayOf(it[0]).decodeToString() == "{") { - LottieCompositionSpec.JsonString(assetsManager) { it.decodeToString() } + LottieCompositionSpec.JsonString(it.decodeToString()) } else { - LottieCompositionSpec.DotLottie(assetsManager) { it } + LottieCompositionSpec.DotLottie(it) } return delegate.load() @@ -82,9 +79,9 @@ private class NetworkCompositionSpec( val bytes = resp.bodyAsChannel().toByteArray() val delegate = if (isJson) { - LottieCompositionSpec.JsonString(assetsManager) { bytes.decodeToString() } + LottieCompositionSpec.JsonString(bytes.decodeToString()) } else { - LottieCompositionSpec.DotLottie(assetsManager) { bytes } + LottieCompositionSpec.DotLottie(bytes) } val composition = delegate.load() @@ -106,7 +103,6 @@ private class NetworkCompositionSpec( if (url != other.url) return false if (format != other.format) return false if (client != other.client) return false - if (assetsManager != other.assetsManager) return false if (cacheStrategy != other.cacheStrategy) return false if (request != other.request) return false @@ -117,7 +113,6 @@ private class NetworkCompositionSpec( var result = url.hashCode() result = 31 * result + format.hashCode() result = 31 * result + client.hashCode() - result = 31 * result + assetsManager.hashCode() result = 31 * result + cacheStrategy.hashCode() result = 31 * result + request.hashCode() return result diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 2c7de9c1..77497088 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -228,24 +228,24 @@ fun rememberLottieComposition( @Stable fun rememberLottieComposition( vararg keys : Any?, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, dynamic : DynamicComposition.() -> Unit = {}, - spec : suspend (LottieContext) -> LottieCompositionSpec, + spec : suspend () -> LottieCompositionSpec, ) : LottieCompositionResult { val updatedSpec by rememberUpdatedState(spec) - val context = currentLottieContext() - - val result = remember(*keys, context) { + val result = remember(*keys,assetsManager) { LottieCompositionResultImpl() } LaunchedEffect(result) { withContext(Dispatchers.IODispatcher) { try { - val composition = updatedSpec(context).load().apply { + val composition = updatedSpec().load().apply { this.dynamic = DynamicCompositionProvider().apply(dynamic) } + composition.prepare(assetsManager) result.complete(composition) } catch (c: CancellationException) { result.completeExceptionally(c) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index a91820a9..48dfaf67 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -18,26 +18,9 @@ interface LottieCompositionSpec { * [LottieComposition] from a [jsonString] */ @Stable - @Deprecated( - "Use overload with lazy loading and assets manager instead", - replaceWith = ReplaceWith( - "JsonString { jsonString }" - ) - ) fun JsonString( jsonString: String ): LottieCompositionSpec = JsonStringImpl(jsonString) - - /** - * [LottieComposition] from a lazy [jsonString] - * - * Lambda should be stable. Otherwise this spec must be remembered if created in composition - * */ - @Stable - fun JsonString( - assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, - jsonString: suspend () -> String, - ): LottieCompositionSpec = LazyJsonString(jsonString, assetsManager) } } @@ -57,33 +40,3 @@ private value class JsonStringImpl( } } -@Immutable -private class LazyJsonString( - private val jsonString : suspend () -> String, - private val assetsManager: LottieAssetsManager, - private val dynamic : DynamicComposition.() -> Unit = {} -) : LottieCompositionSpec { - - override suspend fun load(): LottieComposition { - return LottieComposition.parse(jsonString()).apply { - prepare(assetsManager) - } - } - - override fun toString(): String { - return "LazyJsonString(jsonString='$jsonString')" - } - - override fun equals(other: Any?): Boolean { - return (other as? LazyJsonString)?.let { - it.jsonString == jsonString && - it.assetsManager == assetsManager - } == true - } - - override fun hashCode(): Int { - return 31 * jsonString.hashCode() + assetsManager.hashCode() - } -} - - diff --git a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt index 86a57416..47275247 100644 --- a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt +++ b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt @@ -8,7 +8,7 @@ import androidx.compose.ui.window.singleWindowApplication fun main() { singleWindowApplication( - title = "Compottie Example", + title = "Compottie 2.0 Example", state = WindowState( size = DpSize(1295.dp, 500.dp) ) diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 346fae28..3d4cb6df 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -87,9 +87,12 @@ private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" @Composable fun App() { - return LottieFontExample() +// return LottieFontExample() val composition = rememberLottieComposition( + assetsManager = remember { + ResourcesAssetsManager() + }, dynamic = { layer("Pre-comp 1", "Head Layer") { transform { @@ -108,11 +111,10 @@ fun App() { } } ) { - LottieCompositionSpec.Resource("mobilo/A.json") // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } -// LottieCompositionSpec.Resource(IMAGE_ASSET) + LottieCompositionSpec.Resource(CHECKMARK) // LottieCompositionSpec.Url( // url = "https://assets-v2.lottiefiles.com/a/e25360fe-1150-11ee-9d43-2f8655b815bb/xSk6HtgPaN.lottie", @@ -166,7 +168,7 @@ fun LottieFontExample() { val add1 = "COMPOTTIE NOW HAS IT'S OWN COMPOSE MULTIPLATFORM LOTTIE RENDERING ENGINE" LaunchedEffect(0) { - while (true) { +// while (true) { listOf(add1).forEach { line -> line.forEach { // if (it == ' ') { @@ -180,7 +182,7 @@ fun LottieFontExample() { } delay(1000) text = "" - } +// } } val fontSize = 90.dp @@ -271,14 +273,11 @@ fun LottieFontExample() { * */ @OptIn(ExperimentalResourceApi::class) @Stable -fun LottieCompositionSpec.Companion.Resource( +suspend fun LottieCompositionSpec.Companion.Resource( path : String, dir : String = "files", - assetsManager: LottieAssetsManager = ResourcesAssetsManager(), - readBytes: suspend (path: String) -> ByteArray = Res::readBytes -) : LottieCompositionSpec = JsonString(assetsManager) { - readBytes("$dir/$path").decodeToString() -} + readBytes: suspend (path: String) -> ByteArray = { Res.readBytes(it) } +) : LottieCompositionSpec = JsonString(readBytes("$dir/$path").decodeToString()) /** * Compose resources asset manager. From 21aa4af4a13b7b82c5c71a5c364bdfc34f081ab9 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 18 Jun 2024 17:29:16 +0300 Subject: [PATCH 050/100] disc cache --- compottie-network/build.gradle.kts | 1 - .../alexzhirkevich/compottie/DiskCache.kt | 7 +- .../compottie/DiskCacheStrategy.kt | 40 +++++-- .../compottie/UrlCompositionSpec.kt | 1 + .../compottie/FileSystem.web.kt | 71 +++++++++++- .../io/github/alexzhirkevich/compottie/L.kt | 2 +- example/shared/src/commonMain/kotlin/App.kt | 102 ++++++++++-------- 7 files changed, 168 insertions(+), 56 deletions(-) diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index 87bb2bc2..aa1fa85b 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -75,7 +75,6 @@ kotlin { implementation(compose.ui) implementation(libs.serialization) implementation(libs.okio) - implementation(libs.okio.fakefilesystem) api(libs.ktor.client.core) implementation(project(":compottie")) implementation(project(":compottie-dot")) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt index 43583063..5d49d7f1 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt @@ -110,10 +110,14 @@ interface DiskCache { } +internal val SharedDiskCache by lazy { + DiskCache() +} + @OptIn(InternalCompottieApi::class) @JsName("LottieDiskCache") fun DiskCache( - directory: Path = "compottie".toPath(), + directory: Path = FileSystem.SYSTEM_TEMPORARY_DIRECTORY.resolve("compottie_disc_cache".toPath()), fileSystem : FileSystem = defaultFileSystem(), maxSizeBytes : Long = MB_250, cleanupDispatcher : CoroutineDispatcher = Dispatchers.IODispatcher @@ -127,4 +131,5 @@ fun DiskCache( } + private const val MB_250 = 250L * 1024 * 1024 \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt index 034119e1..ec6aeaa2 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -3,27 +3,51 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable import okio.Buffer import okio.FileSystem +import okio.use @Stable -class DiskCacheStrategy : LottieCacheStrategy { +class DiskCacheStrategy( + private val diskCache: DiskCache = SharedDiskCache +) : LottieCacheStrategy { override suspend fun save(url: String, byteArray: ByteArray) { - val key = Buffer().write(url.encodeToByteArray()).md5().hex() - - FileSystem.SYSTEM_TEMPORARY_DIRECTORY + try { + val editor = diskCache.openEditor(key(url)) ?: return + try { + diskCache.fileSystem.write(editor.data) { + write(byteArray) + } + } finally { + editor.commit() + } + } catch (_: Throwable) { + } } override suspend fun load(url: String): ByteArray? { - return null + try { + val snapshot = diskCache.openSnapshot(key(url)) ?: return null + + snapshot.use { + val bytes = diskCache.fileSystem.read(it.data) { + readByteArray() + } + + return bytes + } + } catch (t: Throwable) { + return null + } } override fun equals(other: Any?): Boolean { - return true + return diskCache == (other as? DiskCacheStrategy)?.diskCache } override fun hashCode(): Int { - return 1 + return 31 * diskCache.hashCode() } + + private fun key(url: String) = Buffer().write(url.encodeToByteArray()).md5().hex() } -//internal expect fun FileSystem.Companion.System : FileSystem \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 79a17560..c4a3c417 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -63,6 +63,7 @@ private class NetworkCompositionSpec( return delegate.load() } + val resp = request(this.client, Url(url)) if (!resp.status.isSuccess()) { diff --git a/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt b/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt index 5e98ec24..aeb86032 100644 --- a/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt +++ b/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt @@ -1,6 +1,73 @@ package io.github.alexzhirkevich.compottie +import okio.FileHandle +import okio.FileMetadata import okio.FileSystem -import okio.fakefilesystem.FakeFileSystem +import okio.Path +import okio.Sink +import okio.Source -internal actual fun defaultFileSystem() : FileSystem = FakeFileSystem() \ No newline at end of file +internal actual fun defaultFileSystem() : FileSystem = ThrowingFileSystem + +/** A file system that throws if any of its methods are called. */ +private object ThrowingFileSystem : FileSystem() { + + override fun atomicMove(source: Path, target: Path) { + throwReadWriteIsUnsupported() + } + + override fun canonicalize(path: Path): Path { + throwReadWriteIsUnsupported() + } + + override fun createDirectory(dir: Path, mustCreate: Boolean) { + throwReadWriteIsUnsupported() + } + + override fun createSymlink(source: Path, target: Path) { + throwReadWriteIsUnsupported() + } + + override fun delete(path: Path, mustExist: Boolean) { + throwReadWriteIsUnsupported() + } + + override fun list(dir: Path): List { + throwReadWriteIsUnsupported() + } + + override fun listOrNull(dir: Path): List? { + throwReadWriteIsUnsupported() + } + + override fun metadataOrNull(path: Path): FileMetadata? { + throwReadWriteIsUnsupported() + } + + override fun openReadOnly(file: Path): FileHandle { + throwReadWriteIsUnsupported() + } + + override fun openReadWrite(file: Path, mustCreate: Boolean, mustExist: Boolean): FileHandle { + throwReadWriteIsUnsupported() + } + + override fun sink(file: Path, mustCreate: Boolean): Sink { + throwReadWriteIsUnsupported() + } + + override fun appendingSink(file: Path, mustExist: Boolean): Sink { + throwReadWriteIsUnsupported() + } + + override fun source(file: Path): Source { + throwReadWriteIsUnsupported() + } + + private fun throwReadWriteIsUnsupported(): Nothing { + throw UnsupportedOperationException( + "Javascript does not have access to the device's file system and cannot read from or " + + "write to it. If you are running on Node.js use 'NodeJsFileSystem' instead." + ) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt index 8bca4972..8083c538 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt @@ -14,7 +14,7 @@ object L { * Warmup JSON parser. The first animation parsing will be much faster * */ fun warmup() { -// LottieJson.decodeFromString(warmupAnim) + LottieJson.decodeFromString(warmupAnim) } } diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 3d4cb6df..ac74a4b0 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -8,10 +8,12 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width @@ -35,6 +37,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -43,6 +46,7 @@ import io.github.alexzhirkevich.compottie.CompottieException import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants +import io.github.alexzhirkevich.compottie.NetworkAssetsManager import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieImage @@ -51,6 +55,8 @@ import io.github.alexzhirkevich.compottie.dynamic.stroke import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import kotlinx.coroutines.delay +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.MissingResourceException @@ -83,7 +89,6 @@ private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" private val DOT = "dotlottie/dot.lottie" private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" -@OptIn(ExperimentalResourceApi::class) @Composable fun App() { @@ -91,7 +96,8 @@ fun App() { val composition = rememberLottieComposition( assetsManager = remember { - ResourcesAssetsManager() +// ResourcesAssetsManager() + NetworkAssetsManager() }, dynamic = { layer("Pre-comp 1", "Head Layer") { @@ -114,12 +120,11 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(CHECKMARK) +// LottieCompositionSpec.Resource(CHECKMARK) -// LottieCompositionSpec.Url( -// url = "https://assets-v2.lottiefiles.com/a/e25360fe-1150-11ee-9d43-2f8655b815bb/xSk6HtgPaN.lottie", -// assetsManager = NetworkAssetsManager() -// ) + LottieCompositionSpec.Url( + url = "https://assets-v2.lottiefiles.com/a/e25360fe-1150-11ee-9d43-2f8655b815bb/xSk6HtgPaN.lottie", + ) } // If you want to be aware of loading errors @@ -157,6 +162,7 @@ fun App() { private val ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ':, \n" + @OptIn(ExperimentalLayoutApi::class) @Composable fun LottieFontExample() { @@ -169,19 +175,19 @@ fun LottieFontExample() { LaunchedEffect(0) { // while (true) { - listOf(add1).forEach { line -> - line.forEach { + listOf(add1).forEach { line -> + line.forEach { // if (it == ' ') { // delay(200) // } else { - delay(30) + delay(30) // } - text += it - } - delay(500) + text += it } - delay(1000) - text = "" + delay(500) + } +// delay(1000) +// text = "" // } } @@ -194,17 +200,23 @@ fun LottieFontExample() { focus.requestFocus() } + val mutex = remember { + Mutex() + } + Box( modifier = Modifier.fillMaxSize() .focusRequester(focus), // .focusable(interactionSource = interactionSource), contentAlignment = Alignment.Center ) { + + BasicTextField( modifier = Modifier.fillMaxSize(), value = text, onValueChange = { - text = it.uppercase().filter { it in ALPHABET } + text = it }, decorationBox = { Box( @@ -215,44 +227,48 @@ fun LottieFontExample() { modifier = Modifier .animateContentSize() .padding(100.dp), - horizontalArrangement = Arrangement.spacedBy( - space = -fontSize / 3, - alignment = Alignment.CenterHorizontally - ), + horizontalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center - ) { - text.forEach { c -> - val anim = when (c) { - ' ' -> { - Spacer( + ){ + text.split(" ").forEach { word -> + Row( + modifier = Modifier, + horizontalArrangement = Arrangement.spacedBy( + space = -fontSize / 3, + alignment = Alignment.CenterHorizontally + ), + ) { + word.forEach { c -> + val anim = when (c) { + + ':' -> "Colon" + ',' -> "Comma" + '\'' -> "Apostrophe" + else -> c.toString().uppercase() + } + Image( modifier = Modifier - .width(fontSize * 2 / 3) .height(fontSize) + .width(fontSize * 3 / 4f), + painter = rememberLottiePainter( + rememberLottieComposition { + // sometimes cmp resources freeze on simultaneous resources access + mutex.withLock { + LottieCompositionSpec.Resource("mobilo/$anim.json") + } + }.value + ), + contentDescription = anim ) - return@forEach } - ':' -> "Colon" - ',' -> "Comma" - '\'' -> "Apostrophe" - else -> c.toString().uppercase() } - Image( - modifier = Modifier - .height(fontSize) - .width(fontSize * 3 / 4f), - painter = rememberLottiePainter( - rememberLottieComposition { - LottieCompositionSpec.Resource("mobilo/$anim.json") - }.value - ), - contentDescription = anim - ) } Image( modifier = Modifier .height(fontSize) - .padding(fontSize / 4), + .padding(fontSize / 4) + .offset(x = -fontSize / 3), painter = rememberLottiePainter( composition = rememberLottieComposition { LottieCompositionSpec.Resource("mobilo/BlinkingCursor.json") From 7258166e7e249ada4b0c583ba2634f46acf83d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 19 Jun 2024 00:25:58 +0300 Subject: [PATCH 051/100] update readme --- README.md | 237 +++++++++++++++++- .../compottie/dynamic/DynamicFill.kt | 9 - .../compottie/dynamic/DynamicStroke.kt | 10 - 3 files changed, 234 insertions(+), 22 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt diff --git a/README.md b/README.md index bf8dd8c9..94c35850 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Compottie +# Compottie ![badge-Android](https://img.shields.io/badge/Platform-Android-brightgreen) ![badge-iOS](https://img.shields.io/badge/Platform-iOS-lightgray) @@ -15,11 +15,242 @@ Compose Multiplatform port of [airbnb/lottie-compose](https://github.com/airbnb/ dependencies { - implementation("io.github.alexzhirkevich:compottie:") + implementation("io.github.alexzhirkevich:compottie:") + + // The rest modules are only supported by Compottie 2.x + + // For dotLottie (zip) animations + implementation("io.github.alexzhirkevich:compottie-dot:<2x_version>") + + // For Url animation and resources loading + implementation("io.github.alexzhirkevich:compottie-network:<2x_version>") } ``` # Usage +> [!TIP] +> The following docs describe the Compottie 2.x usage. +> For Compottie 1.x docs please refer to the [airbnb docs](https://github.com/airbnb/lottie/blob/master/android-compose.md#basic-usage). + +- [Basic Usage](#basic-usage) +- [LottieComposition](#lottiecomposition) +- [Animating/Updating Progress](#animatingupdating-progress) +- [LottieAnimatable](#lottieanimatable) +- [dotLottie](#dotlottie) +- [Images](#images) +- [URL loading](#url-loading) +- [Dynamic Properties](#dynamic-properties) + + +## Basic Usage +```kotlin +@Composable +fun Loader() { + val composition by rememberLottieComposition { + LottieCompositionSpec.JsonString( + Res.readBytes("files/anim.json").decodeToString() + ) + } + val progress by animateLottieCompositionAsState(composition) + + Image( + painter = rememberLottiePainter( + composition = composition, + progress = { progress }, + ), + contentDescription = "Lottie animation" + ) +} +``` +Or with the `rememberLottiePainter` overload that merges `rememberLottiePainter` and `animateLottieCompositionsState()` +```kotlin +@Composable +fun Loader() { + val composition by rememberLottieComposition { + LottieCompositionSpec.JsonString(Res.readBytes("files/anim.json").decodeToString()) + } + + Image( + painter = rememberLottiePainter( + composition = composition, + progress = { progress }, + ), + contentDescription = "Lottie animation" + ) +} +``` + +## LottieComposition +`LottieComposition` is the parsed version of your Lottie json file. It is stateless and can be cached/reused freely. +To create a `LottieComposition`: +* Use `rememberLottieComposition(spec)` +* Pass in a `LottieCompositionSpec`. `LottieCompositionSpec` is an open interface that lets you select the source (assets, string, network, etc.). + +For example: +```kotlin +val composition1 by rememberLottieComposition { + LottieCompositionSpec.JsonString(Res.readBytes("files/anim.json").decodeToString()) +} +val composition2 by rememberLottieComposition { + LottieCompositionSpec.Url("https://...") +} +val composition3 by rememberLottieComposition { + LottieCompositionSpec.DotLottie(Res.readBytes("files/anim.lottie")) +} +``` + +The type returned from `rememberLottieComposition` is +```kotlin +interface LottieCompositionResult : State +``` +This allows you to use it in two ways: +```kotlin +val composition: LottieComposition? by rememberLottieComposition(spec) +``` +This will return null until the composition is parsed and then will return the `LottieComposition` object. +Use this version in most cases, especially if you don't need any of the extra functionality on `LottieCompositionResult`. + +```kotlin +val compositionResult: LottieCompositionResult = rememberLottieComposition(spec) +``` +`LottieCompositionResult` lets you: +1. Access the composition via `compositionResult.value` +2. Access `error`, `isLoading`, `isComplete`, `isFailure`, and `isSuccess` properties. +3. Call `await()` to await the parsed composition from a coroutine. + +## Animating/Updating Progress + +You have the option of handling progress entirely yourself. If you choose to do that, just pass in `progress` to your `LottieAnimation` composable. + +In most cases, you will want to use either `animateLottieCompositionAsState()` or `LottieAnimatable`. These APIs were designed to be analogous to the standard Jetpack Compose APIs. `animateLottieCompositionAsState` is analogous to [animate*AsState](https://developer.android.com/jetpack/compose/animation#animatable) and `LottieAnimatable` is analogous to [Animatable](https://developer.android.com/jetpack/compose/animation#animatable). + +The decision for whether to use one over the other is similar as well: +* If your animation is very simple or a function of other state properties, use `animateLottieCompositionAsState()`. +* If you need to imperatively call `animate` or `snapTo` from something like a `LaunchedEffect` then use `LottieAnimatable`. + +`animateLottieCompositionAsState()` returns and `LottieAnimatable` implements: +```kotlin +interface LottieAnimationState : State +``` + +### animateLottieCompositionAsState() +```kotlin +val progress by animateLottieCompositionAsState(composition) +``` +```kotlin +val progress by animateLottieCompositionAsState( + composition, + iterations = LottieConstants.IterateForever, +) +``` +```kotlin +val progress by animateLottieCompositionAsState( + composition, + clipSpec = LottieClipSpec.Progress(0.5f, 0.75f), +) +``` + +### LottieAnimatable +```kotlin +@Stable +class MyHoistedState { + val lottieAnimatable = LottieAnimatable() + val somethingElse by mutableStateOf(0f) +} +``` +```kotlin +val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.animation)) +val lottieAnimatable = rememberLottieAnimatable() +LaunchedEffect(Unit) { + lottieAnimatable.animate( + composition, + iterations = LottieConstants.IterateForever, + clipSpec = LottieClipSpec.Progress(0.5f, 0.75f), + ) +} +``` + +## dotLottie + +[dotLottie ](https://dotlottie.io/) is an open-source file format that aggregates one or more Lottie files and their associated resources into a single file. They are ZIP archives compressed with the Deflate compression method and carry the file extension of ".lottie". + +dotLottie animations are up to 10x smaller in size and can have auto-linked bundled assets (as well as external assets ofc). + +`compottie-dot` module is required to use dotLottie animations in your app. It brings the new type of composition spec - `LottieCompositionSpec.DotLottie`. + +## Images + +Images should be avoided whenever possible. They are much larger, less performant, and can lead to pixelation. Whenever possible, try and make your animation consist solely of vectors. However, Lottie does support images in one of 4 ways: +1. Baked into the Lottie json file. This is done via an option in the exporter (such as teh Bodymovin After Effects plugin). When done, images are encoded as a base64 string and embedded directly in the json file. This is the simplest way to use images because everything is contained in a single file and no additional work is necessary to make them work. +2. Zipped with the json file in a single zip file. When parsing the animation, Lottie will unzip the animation and automatically link any images in zip file to the composition. These zip files can be stored in assets and loaded via `LottieCompositionSpec.DotLottie` (requires `compottie-dot` module) or downloaded via the internet and loaded via `LottieCompositionSpec.Url`. +3. Via dynamic properties. + +## URL loading +To load images remotely `compottie-network` module should be added as a dependensy. This module brings an additional composition spec called `LottieCompositionSpec.Url` +```kotlin +fun LottieCompositionSpec.Companion.Url( + url : String, + format: LottieAnimationFormat = LottieAnimationFormat.Undefined, + client: HttpClient = DefaultHttpClient, + request : NetworkRequest = GetRequest, + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), +) +``` +that can be used to load JSON and dotLottie animations from the Internet. + +`LottieAnimationFormat` is used to determine wheither animation is a JSON or dotLottie. If you left it `Undefined`, composition spec will automatically detect is this a JSON or dotLottie file. + +Ktor HTTP client can be overrided with `client` parameter. `request` is a lambda that takes url and client and returns a HTTP responce. By default it is a GET request. + +Caching strategy can be set with `cacheStrategy` parameter. By default animations are cached in the device temp directory. + +The network module also brings the `NetworkAssetsManager` that have similar parameters and can be used to load image assets. This manager can't load fonts from the Internet, so if the animation have both URL images and fonts, you have to create combined assets manager with `LottieAssetsManager.combine` + +Complete usage example: + +```kotlin +val composition by rememberLottieComposition( + assetsManager = remember { NetworkAssetsManager() } +) { + LottieCompositionSpec.Url("https://example.com/animation.json") +} +``` + +## Dynamic Properties + +Lottie allows you to update Lottie animation properties at runtime. Some reasons you may want to do this are: +1. Change colors for day/night or other app theme. +2. Change the progress of a specific layer to show download progress. +3. Change the size and position of something in response to a gesture. + +Dynamic properties are created with `rememberLottieComposition` + +```kotlin +val composition by rememberLottieComposition( + dynamic = { + shapeLayer("Precomposition 1", "Shape Layer 4") { + transform { + rotation { current -> current * progress } + } + fill("Group 1", "Fill 4") { + color { Color.Red } + alpha { .5f } + } + group("Group 4") { + ellipse("Ellipse 1") { + // configure size, position of the ellipse named "Ellipse 1" + } + stroke("Ellipse 1 Stroke") { + // configure stroke named "Ellipse 1 Stroke" in the same group + } + } + } + } +) { + // composition spec goes here +) +``` + +Note, that final property building blocks (such as rotations, color, alpha) are called on EACH ANIMATION FRAME and should be cached if they don't rely on progress and have allocations or hard computations. -Basically the same as described in [airbnb docs](https://github.com/airbnb/lottie/blob/master/android-compose.md#basic-usage) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt deleted file mode 100644 index 183a0b31..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.github.alexzhirkevich.compottie.dynamic - - -sealed interface DynamicFill : DynamicDraw { - sealed interface Solid : DynamicFill, DynamicDraw.Solid - - sealed interface Gradient : DynamicFill, DynamicDraw.Gradient -} - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt deleted file mode 100644 index b774fa05..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.github.alexzhirkevich.compottie.dynamic - -sealed interface DynamicStroke : DynamicDraw { - fun width(provider: PropertyProvider) {} - - sealed interface Solid : DynamicStroke, DynamicDraw.Solid - - sealed interface Gradient : DynamicStroke, DynamicDraw.Gradient -} - From fadceff913e776af7c7f9692c508e09dbd40fe71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 19 Jun 2024 00:26:18 +0300 Subject: [PATCH 052/100] wip dynamic --- compottie-network/build.gradle.kts | 2 +- .../alexzhirkevich/compottie/DiskCache.kt | 16 ++-- .../platform/PlatformImage.android.kt | 2 +- .../compottie/dynamic/DynamicComposition.kt | 34 ++++++-- .../compottie/dynamic/DynamicDraw.kt | 9 +-- .../compottie/dynamic/DynamicEllipse.kt | 11 +++ .../compottie/dynamic/DynamicFill.kt | 4 + .../compottie/dynamic/DynamicImageLayer.kt | 22 +++++ .../compottie/dynamic/DynamicLayer.kt | 66 +-------------- .../compottie/dynamic/DynamicPolystar.kt | 25 ++++++ .../compottie/dynamic/DynamicRect.kt | 14 ++++ .../compottie/dynamic/DynamicShape.kt | 4 +- .../compottie/dynamic/DynamicShapeLayer.kt | 73 +++++++++++++++++ .../compottie/dynamic/DynamicStroke.kt | 6 ++ .../compottie/dynamic/PropertyProvider.kt | 15 +++- .../dynamic/_DynamicCompositionProvider.kt | 6 +- .../compottie/dynamic/_DynamicDrawProvider.kt | 81 +++++++++++++------ .../dynamic/_DynamicEllipseProvider.kt | 21 +++++ .../compottie/dynamic/_DynamicFillProvider.kt | 19 +---- .../dynamic/_DynamicImageLayerProvider.kt | 15 ++++ .../dynamic/_DynamicLayerProvider.kt | 6 ++ .../dynamic/_DynamicPolystarProvider.kt | 63 +++++++++++++++ .../compottie/dynamic/_DynamicRectProvider.kt | 28 +++++++ .../dynamic/_DynamicShapeLayerProvider.kt | 54 ++++++------- .../dynamic/_DynamicShapeProvider.kt | 11 +++ .../dynamic/_DynamicStrokeProvider.kt | 53 ++++++++---- .../internal/animation/AnimatedNumber.kt | 45 ++++++++--- .../internal/animation/AnimatedTransform.kt | 58 ++++++------- .../internal/animation/AnimatedVector2.kt | 60 ++++++++++++-- .../internal/content/ContentGroup.kt | 11 ++- .../internal/content/ContentGroupBase.kt | 4 + .../internal/helpers/CompoundTrimPath.kt | 2 +- .../compottie/internal/helpers/Transform.kt | 1 + .../compottie/internal/layers/BaseLayer.kt | 2 - .../compottie/internal/layers/ImageLayer.kt | 47 ++++++++++- .../compottie/internal/layers/ShapeLayer.kt | 12 ++- .../internal/platform/PlatformImage.kt | 2 +- .../internal/platform/PlatformShader.kt | 2 +- .../internal/shapes/BaseStrokeShape.kt | 42 ++++++++-- .../compottie/internal/shapes/EllipseShape.kt | 36 +++++++-- .../compottie/internal/shapes/FillShape.kt | 60 +++++++------- .../internal/shapes/GradientFillShape.kt | 46 +++++------ .../internal/shapes/GradientStrokeShape.kt | 31 +++---- .../compottie/internal/shapes/GroupShape.kt | 21 +++-- .../internal/shapes/MergePathsShape.kt | 33 +++++--- .../compottie/internal/shapes/PathShape.kt | 18 ++++- .../internal/shapes/PolystarShape.kt | 38 ++++++++- .../compottie/internal/shapes/RectShape.kt | 30 ++++++- .../internal/shapes/RepeaterShape.kt | 19 ++++- .../compottie/internal/shapes/RoundShape.kt | 24 +++++- .../compottie/internal/shapes/Shape.kt | 7 +- .../internal/shapes/TransformShape.kt | 20 +++++ .../internal/shapes/TrimPathShape.kt | 19 +++++ .../internal/platform/PlatformImage.skiko.kt | 2 +- .../composeResources/files/image_asset.json | 2 +- example/shared/src/commonMain/kotlin/App.kt | 45 +++-------- 56 files changed, 1000 insertions(+), 399 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicEllipse.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicPolystar.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicRect.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicEllipseProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicImageLayerProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicPolystarProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicRectProvider.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeProvider.kt diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index aa1fa85b..378d4d78 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -74,7 +74,7 @@ kotlin { commonMain.dependencies { implementation(compose.ui) implementation(libs.serialization) - implementation(libs.okio) + api(libs.okio) api(libs.ktor.client.core) implementation(project(":compottie")) implementation(project(":compottie-dot")) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt index 5d49d7f1..1ff534d7 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt @@ -121,15 +121,11 @@ fun DiskCache( fileSystem : FileSystem = defaultFileSystem(), maxSizeBytes : Long = MB_250, cleanupDispatcher : CoroutineDispatcher = Dispatchers.IODispatcher -) : DiskCache { - return RealDiskCache( - maxSize = maxSizeBytes, - directory = directory, - fileSystem = fileSystem, - cleanupDispatcher = cleanupDispatcher - ) -} - - +) : DiskCache = RealDiskCache( + maxSize = maxSizeBytes, + directory = directory, + fileSystem = fileSystem, + cleanupDispatcher = cleanupDispatcher +) private const val MB_250 = 250L * 1024 * 1024 \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt index 6d97bbf2..151258c0 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.android.kt @@ -5,7 +5,7 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.text.font.Font -internal actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { +actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { return BitmapFactory .decodeByteArray(bytes, 0, bytes.size) .asImageBitmap() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt index ed17856c..256fbb7c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt @@ -5,6 +5,26 @@ package io.github.alexzhirkevich.compottie.dynamic * */ sealed interface DynamicComposition { + /** + * Layer dynamic properties builder. + * + * Path is a chain of layers names up to the required layer. + * All layers in the chain must have a name. + * + * Example: + * + * ``` + * layer("Precomposition 1", "Layer3") { + * transform { + * scale { + * it * (1 - this.progress) + * } + * } + * } + * ``` + * */ + fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) + /** * Layer dynamic properties builder. * @@ -27,7 +47,7 @@ sealed interface DynamicComposition { * } * ``` * */ - fun shapeLayer(vararg path: String, builder: DynamicLayer.Shape.() -> Unit) + fun shapeLayer(vararg path: String, builder: DynamicShapeLayer.() -> Unit) /** * Layer dynamic properties builder. @@ -38,16 +58,16 @@ sealed interface DynamicComposition { * Example: * * ``` - * layer("Precomposition 1", "Layer3") { - * transform { - * scale { - * it * (1 - this.progress) - * } + * imageLayer("Image 1") { + * image { source -> + * DynamicImage( + * + * ) * } * } * ``` * */ - fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) + fun imageLayer(vararg path: String, builder: DynamicImageLayer.() -> Unit) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt index 402d5343..fb5f70ff 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt @@ -15,14 +15,9 @@ sealed interface DynamicDraw : DynamicShape { fun blendMode(provider: PropertyProvider) - sealed interface Solid : DynamicDraw { - fun color(provider: PropertyProvider) - } + fun color(provider: PropertyProvider) - sealed interface Gradient : DynamicDraw { - - fun gradient(provider: GradientProvider) - } + fun gradient(provider: GradientProvider) } typealias GradientProvider = (Size, AnimationState) -> LottieGradient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicEllipse.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicEllipse.kt new file mode 100644 index 00000000..94c42795 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicEllipse.kt @@ -0,0 +1,11 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size + +interface DynamicEllipse : DynamicShape { + + fun size(provider : PropertyProvider) + + fun position(provider : PropertyProvider) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt new file mode 100644 index 00000000..c1d59c82 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicFill.kt @@ -0,0 +1,4 @@ +package io.github.alexzhirkevich.compottie.dynamic + + +sealed interface DynamicFill : DynamicDraw diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt new file mode 100644 index 00000000..1f190624 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt @@ -0,0 +1,22 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.graphics.ImageBitmap +import io.github.alexzhirkevich.compottie.internal.AnimationState + +interface DynamicImageLayer: DynamicLayer { + + /** + * Configure dynamic image. + * + * Image must be exact same size as required in spec (if spec is not null) + */ + fun image(image: AnimationState.(spec : ImageSpec?) -> ImageBitmap) +} + +data class ImageSpec( + val id : String, + val path : String, + val name : String, + val width : Int, + val height : Int +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt index 03c09f07..2a5e7bae 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicLayer.kt @@ -1,72 +1,12 @@ package io.github.alexzhirkevich.compottie.dynamic -import kotlin.reflect.KClass - sealed interface DynamicLayer { - fun transform(builder: DynamicTransform.() -> Unit) - - sealed interface Shape : DynamicLayer { + fun hidden(provider : PropertyProvider) - /** - * Shortcut useful if you want to configure multiple shapes in the same group - * - * Example: - * - * ``` - * group("Group 1") { - * ellipse("Ellipse 4") { } - * fill(DynamicFill.Solid, "Fill 1") { } - * } - * ``` - * Is alternative for - * - * ``` - * ellipse("Group 1", "Ellipse 4") { } - * fill("Group 1", "Fill 1") { } - *``` - * */ - fun group(name: String, shape: Shape.() -> Unit) - - } + fun transform(builder: DynamicTransform.() -> Unit) } -/** - * Configure dynamic stroke. - * - * Fill type must be the same as actual animation fill type. - * You can't configure gradient stroke if the animation is using solid stroke. - * - * Example: - * - * ``` - * stroke("Group 1", "Stroke 2") { - * width { 5f } - * color { if (isDark) Color.White else Color.Black } - * } - * ``` - * */ -inline fun DynamicLayer.Shape.stroke( - vararg path: String, - crossinline builder: T.() -> Unit -) = strokeImpl(*path, builder = builder) -/** - * Configure dynamic fill. - * - * Fill type must be the same as actual animation fill type. - * You can't configure gradient fill if the animation is using solid fill. - * - * Example: - * - * ``` - * fill("Group 1", "Stroke 2") { - * color { if (isDark) Color.White else Color.Black } - * } - * ``` - * */ -inline fun DynamicLayer.Shape.fill( - vararg path: String, - crossinline builder: T.() -> Unit -) = strokeImpl(*path, builder = builder) + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicPolystar.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicPolystar.kt new file mode 100644 index 00000000..1116e9a3 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicPolystar.kt @@ -0,0 +1,25 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import kotlinx.serialization.SerialName + +interface DynamicPolystar : DynamicShape { + + fun size(provider : PropertyProvider) + + fun position(provider : PropertyProvider) + + fun rotation(provider : PropertyProvider) + + fun points(provider : PropertyProvider) + + fun innerRoundness(provider : PropertyProvider) + + fun innerRadius(provider : PropertyProvider) + + fun outerRadius(provider : PropertyProvider) + + fun outerRoundness(provider : PropertyProvider) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicRect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicRect.kt new file mode 100644 index 00000000..59201b34 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicRect.kt @@ -0,0 +1,14 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size + +interface DynamicRect : DynamicShape { + + fun size(provider : PropertyProvider) + + fun position(provider : PropertyProvider) + + fun roundCorners(provider: PropertyProvider) +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt index bddc0d7c..42933da5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShape.kt @@ -2,7 +2,5 @@ package io.github.alexzhirkevich.compottie.dynamic sealed interface DynamicShape { - sealed interface Ellipse : DynamicShape - - sealed interface Rest : DynamicShape + fun hidden(provider : PropertyProvider) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt new file mode 100644 index 00000000..a2c1ed3d --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt @@ -0,0 +1,73 @@ +package io.github.alexzhirkevich.compottie.dynamic + +interface DynamicShapeLayer: DynamicLayer { + + fun shape( + vararg path: String, + builder: DynamicShape.() -> Unit + ) + + + /** + * Shortcut useful if you want to configure multiple shapes in the same group + * + * Example: + * + * ``` + * group("Group 1") { + * ellipse("Ellipse 4") { } + * fill("Fill 1") { } + * } + * ``` + * Is alternative for + * + * ``` + * ellipse("Group 1", "Ellipse 4") { } + * fill("Group 1", "Fill 1") { } + *``` + * */ + fun group(name: String, builder: DynamicShapeLayer.() -> Unit) + + /** + * Configure dynamic stroke. + * + * Example: + * + * ``` + * stroke("Group 1", "Stroke 2") { + * width { 5f } + * color { if (isDark) Color.White else Color.Black } + * } + * ``` + * */ + fun stroke( + vararg path: String, + builder: DynamicStroke.() -> Unit + ) + + /** + * Configure dynamic fill. + * + * Example: + * + * ``` + * fill("Group 1", "Stroke 2") { + * color { if (isDark) Color.White else Color.Black } + * } + * ``` + * */ + fun fill( + vararg path: String, + builder: DynamicFill.() -> Unit + ) + + fun ellipse( + vararg path: String, + builder: DynamicEllipse.() -> Unit + ) + + fun rect( + vararg path: String, + builder: DynamicRect.() -> Unit + ) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt new file mode 100644 index 00000000..0c3553cd --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicStroke.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie.dynamic + +sealed interface DynamicStroke : DynamicDraw { + fun width(provider: PropertyProvider) {} +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt index 971b7f5b..d02de5a1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt @@ -1,12 +1,20 @@ package io.github.alexzhirkevich.compottie.dynamic import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size import androidx.compose.ui.layout.ScaleFactor import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.Vec2 typealias PropertyProvider = AnimationState.(source : T) -> T +internal fun PropertyProvider.map( + from : (F) -> T, + to : (T) -> F +) : PropertyProvider = { + from(derive(to(it), this)) +} + /** * Returns [source] if this is null and provided value otherwise * */ @@ -14,8 +22,13 @@ internal fun PropertyProvider?.derive(source : T, state: AnimationState) return if (this == null) source else invoke(state, source) } -internal fun ScaleFactor.toVec2() = Vec2(scaleX,scaleY) internal fun Vec2.toScaleFactor() = ScaleFactor(x, y) +internal fun Vec2.toSize() = Size(x, y) +internal fun Size.toVec2() = Vec2(width, height) +internal fun ScaleFactor.toVec2() = Vec2(scaleX, scaleY) +internal fun Offset.toVec2() = this + +internal fun Vec2.toOffset() = this private val IdentityScaleFactor = ScaleFactor(1f,1f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt index 0b1b2e80..9e6dbe96 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt @@ -7,7 +7,7 @@ internal class DynamicCompositionProvider : DynamicComposition { val size: Int get() = layers.size - override fun shapeLayer(vararg path: String, builder: DynamicLayer.Shape.() -> Unit) { + override fun shapeLayer(vararg path: String, builder: DynamicShapeLayer.() -> Unit) { val p = path.joinToString(LayerPathSeparator) val provider = when(val existent = layers[p]) { @@ -24,6 +24,10 @@ internal class DynamicCompositionProvider : DynamicComposition { layers[p] = provider } + override fun imageLayer(vararg path: String, builder: DynamicImageLayer.() -> Unit) { + layers[path.joinToString(LayerPathSeparator)] = DynamicImageLayerProvider().apply(builder) + } + override fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) { layers[path.joinToString(LayerPathSeparator)] = DynamicLayerProvider().apply(builder) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt index 8bcf7199..9c645ba1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt @@ -1,30 +1,31 @@ package io.github.alexzhirkevich.compottie.dynamic +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter - +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm +import io.github.alexzhirkevich.compottie.internal.platform.GradientCache +import io.github.alexzhirkevich.compottie.internal.platform.GradientShader internal sealed interface DynamicDrawProvider : DynamicDraw { val opacity: PropertyProvider? val colorFilter: PropertyProvider? val blendMode: PropertyProvider? -} -internal sealed interface DynamicSolidDrawProvider : DynamicDrawProvider, DynamicDraw.Solid { - val color: PropertyProvider? -} + val hidden : PropertyProvider? -internal sealed interface DynamicGradientDrawProvider : DynamicDrawProvider, DynamicDraw.Gradient { val gradient: GradientProvider? + val color: PropertyProvider? } -internal fun DynamicGradientDrawProvider() : DynamicGradientDrawProvider = DynamicGradientDrawProviderImpl() - -internal fun DynamicSolidDrawProvider() : DynamicSolidDrawProvider = DynamicSolidDrawProviderImpl() - - -internal sealed class BaseDynamicDrawProvider : DynamicDraw, DynamicDrawProvider { +internal sealed class BaseDynamicDrawProvider : DynamicShapeProvider(), + DynamicDraw, DynamicDrawProvider{ final override var opacity: PropertyProvider? = null private set @@ -35,6 +36,12 @@ internal sealed class BaseDynamicDrawProvider : DynamicDraw, DynamicDrawProvider final override var blendMode: PropertyProvider? = null private set + final override var gradient: GradientProvider? = null + private set + + final override var color: PropertyProvider? = null + private set + final override fun opacity(provider: PropertyProvider) { opacity = provider } @@ -46,24 +53,50 @@ internal sealed class BaseDynamicDrawProvider : DynamicDraw, DynamicDrawProvider final override fun blendMode(provider: PropertyProvider) { blendMode = provider } -} - -private class DynamicSolidDrawProviderImpl : BaseDynamicDrawProvider(),DynamicSolidDrawProvider, DynamicDraw.Solid { - override var color: PropertyProvider? = null - private set + override fun gradient(provider: GradientProvider) { + gradient = provider + color = null + } override fun color(provider: PropertyProvider) { color = provider + gradient = null } } -private class DynamicGradientDrawProviderImpl : - BaseDynamicDrawProvider(), DynamicGradientDrawProvider, DynamicDraw.Gradient { +internal fun DynamicDrawProvider?.applyToPaint( + paint: Paint, + state: AnimationState, + parentAlpha: Float, + parentMatrix : Matrix, + opacity : AnimatedNumber?, + size: Size, + gradientCache: GradientCache +) { + this?.color?.let { + paint.color = it.derive(paint.color, state) + } + this?.gradient?.let { + paint.shader = GradientShader( + gradient = it.invoke(size, state), + matrix = parentMatrix, + cache = gradientCache + ) + } - override var gradient: GradientProvider? = null - private set + var alpha = 1f - override fun gradient(provider: GradientProvider) { - gradient = provider + opacity?.interpolatedNorm(state)?.let { + alpha = (alpha * it).coerceIn(0f,1f) + } + + this?.opacity?.let { + alpha = it.derive(alpha, state).coerceIn(0f,1f) } -} \ No newline at end of file + + paint.alpha = (alpha * parentAlpha).coerceIn(0f,1f) + paint.colorFilter = this?.colorFilter.derive(paint.colorFilter, state) + paint.blendMode = this?.blendMode.derive(paint.blendMode, state) +} + + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicEllipseProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicEllipseProvider.kt new file mode 100644 index 00000000..44d85f9a --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicEllipseProvider.kt @@ -0,0 +1,21 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size + +internal class DynamicEllipseProvider : DynamicShapeProvider(), DynamicEllipse { + + var size : PropertyProvider? = null + private set + + var position : PropertyProvider? = null + private set + + override fun size(provider: PropertyProvider) { + size = provider + } + + override fun position(provider: PropertyProvider) { + position = position + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt index b76ae8aa..48776357 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicFillProvider.kt @@ -1,21 +1,4 @@ package io.github.alexzhirkevich.compottie.dynamic -import kotlin.js.JsName - - -internal sealed interface DynamicFillProvider : DynamicFill, DynamicDrawProvider - -@PublishedApi -@JsName("MakeDynamicFillProvider") -internal fun DynamicFillProvider() : DynamicFillProvider = DynamicFillProviderImpl() - -@PublishedApi -internal class DynamicSolidFillProvider : DynamicFill.Solid, - DynamicSolidDrawProvider by DynamicSolidDrawProvider() - -@PublishedApi -internal class DynamicGradientFillProvider : DynamicFill.Gradient, - DynamicGradientDrawProvider by DynamicGradientDrawProvider() - -private class DynamicFillProviderImpl : BaseDynamicDrawProvider(), DynamicFillProvider +internal class DynamicFillProvider : BaseDynamicDrawProvider(), DynamicFill diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicImageLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicImageLayerProvider.kt new file mode 100644 index 00000000..68d6c125 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicImageLayerProvider.kt @@ -0,0 +1,15 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.graphics.ImageBitmap +import io.github.alexzhirkevich.compottie.internal.AnimationState + +@PublishedApi +internal class DynamicImageLayerProvider() : DynamicLayerProvider(), DynamicImageLayer { + + var image: (AnimationState.(source: ImageSpec?) -> ImageBitmap)? = null + private set + + override fun image(image: AnimationState.(source: ImageSpec?) -> ImageBitmap) { + this.image = image + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt index 8c29ddee..6e60bc2b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicLayerProvider.kt @@ -4,6 +4,12 @@ internal open class DynamicLayerProvider : DynamicLayer { var transform : DynamicTransformProvider? = null + var hidden : PropertyProvider? = null + private set + override fun hidden(provider: PropertyProvider) { + hidden = provider + } + override fun transform(builder: DynamicTransform.() -> Unit) { transform = DynamicTransformProvider().apply(builder) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicPolystarProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicPolystarProvider.kt new file mode 100644 index 00000000..483815ff --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicPolystarProvider.kt @@ -0,0 +1,63 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size + +internal class DynamicPolystarProvider : DynamicShapeProvider(), DynamicPolystar { + + var size : PropertyProvider? = null + private set + + var position : PropertyProvider? = null + private set + + var rotation : PropertyProvider? = null + private set + + var points : PropertyProvider? = null + private set + + var innerRoundness : PropertyProvider? = null + private set + + var innerRadius : PropertyProvider? = null + private set + + var outerRadius : PropertyProvider? = null + private set + + var outerRoundness : PropertyProvider? = null + private set + + override fun size(provider: PropertyProvider) { + size = provider + } + + override fun position(provider: PropertyProvider) { + position = provider + } + + override fun rotation(provider: PropertyProvider) { + rotation = provider + } + + override fun points(provider: PropertyProvider) { + points = provider + } + + override fun innerRoundness(provider: PropertyProvider) { + innerRoundness = provider + } + + override fun innerRadius(provider: PropertyProvider) { + innerRadius = provider + } + + override fun outerRadius(provider: PropertyProvider) { + outerRadius = provider + } + + override fun outerRoundness(provider: PropertyProvider) { + outerRoundness = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicRectProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicRectProvider.kt new file mode 100644 index 00000000..88251f3b --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicRectProvider.kt @@ -0,0 +1,28 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size + +internal class DynamicRectProvider : DynamicShapeProvider(), DynamicRect { + + var size : PropertyProvider? = null + private set + + var position : PropertyProvider? = null + private set + + var roundCorners : PropertyProvider? = null + private set + + override fun size(provider: PropertyProvider) { + size = provider + } + + override fun position(provider: PropertyProvider) { + position = provider + } + + override fun roundCorners(provider: PropertyProvider) { + roundCorners = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt index c83ef00d..7de649da 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt @@ -4,51 +4,45 @@ package io.github.alexzhirkevich.compottie.dynamic internal class DynamicShapeLayerProvider( private val basePath : String? = null, private val root : DynamicShapeLayerProvider? = null -) : DynamicLayerProvider(), DynamicLayer.Shape { +) : DynamicLayerProvider(), DynamicShapeLayer { private val nRoot get() = root ?: this @PublishedApi internal val shapes = mutableMapOf() - override fun group(name: String, shape: DynamicLayer.Shape.() -> Unit) { + override fun shape(vararg path: String, builder: DynamicShape.() -> Unit) { + shapes[path.joinToString(LayerPathSeparator)] = + DynamicShapeProvider().apply(builder) + } + + override fun group(name: String, builder: DynamicShapeLayer.() -> Unit) { DynamicShapeLayerProvider( basePath = layerPath(basePath, name), root = nRoot - ).apply(shape) + ).apply(builder) } internal inline operator fun get(path: String): S? = shapes[path] as? S -} -@PublishedApi -internal inline fun DynamicLayer.Shape.strokeImpl( - vararg path: String, - builder: T.() -> Unit -) { - check(this is DynamicShapeLayerProvider) - - shapes[path.joinToString(LayerPathSeparator)] = when (T::class){ - DynamicStroke.Solid::class -> (DynamicSolidStrokeProvider() as T).apply(builder) - DynamicStroke.Gradient::class -> (DynamicGradientStrokeProvider() as T).apply(builder) - DynamicStroke::class -> (DynamicStrokeProvider() as T).apply(builder) - else -> error("Invalid stroke type. Must be either DynamicStroke.Solid or DynamicStroke.Gradient") + override fun fill(vararg path: String, builder: DynamicFill.() -> Unit) { + shapes[path.joinToString(LayerPathSeparator)] = + DynamicFillProvider().apply(builder) } -} + override fun stroke(vararg path: String, builder: DynamicStroke.() -> Unit) { + shapes[path.joinToString(LayerPathSeparator)] = + DynamicStrokeProvider().apply(builder) + } -@PublishedApi -internal inline fun DynamicLayer.Shape.fillImpl( - vararg path: String, - builder: T.() -> Unit -) { - check(this is DynamicShapeLayerProvider) - - shapes[path.joinToString(LayerPathSeparator)] = when (T::class) { - DynamicFill.Solid::class -> (DynamicSolidFillProvider() as T).apply(builder) - DynamicFill.Gradient::class -> (DynamicGradientFillProvider() as T).apply(builder) - DynamicFill::class -> (DynamicFillProvider() as T).apply(builder) - else -> error("Invalid stroke type. Must be either DynamicStroke.Solid or DynamicStroke.Gradient") + override fun ellipse(vararg path: String, builder: DynamicEllipse.() -> Unit) { + shapes[path.joinToString(LayerPathSeparator)] = + DynamicEllipseProvider().apply(builder) } -} \ No newline at end of file + + override fun rect(vararg path: String, builder: DynamicRect.() -> Unit) { + shapes[path.joinToString(LayerPathSeparator)] = + DynamicRectProvider().apply(builder) + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeProvider.kt new file mode 100644 index 00000000..616bd152 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeProvider.kt @@ -0,0 +1,11 @@ +package io.github.alexzhirkevich.compottie.dynamic + +internal open class DynamicShapeProvider : DynamicShape { + + var hidden : PropertyProvider? = null + private set + + override fun hidden(provider: PropertyProvider) { + hidden = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt index 6fb5dda9..c39eede7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt @@ -1,22 +1,17 @@ package io.github.alexzhirkevich.compottie.dynamic +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm +import io.github.alexzhirkevich.compottie.internal.platform.GradientCache +import io.github.alexzhirkevich.compottie.internal.platform.GradientShader +import io.github.alexzhirkevich.compottie.internal.utils.scale import kotlin.js.JsName -internal interface DynamicStrokeProvider : DynamicStroke, DynamicDrawProvider - -@JsName("MakeDynamicStrokeProvider") -@PublishedApi -internal fun DynamicStrokeProvider() : DynamicStrokeProvider = DynamicStrokeProviderImpl() - -@PublishedApi -internal class DynamicSolidStrokeProvider : DynamicStroke.Solid, - DynamicSolidDrawProvider by DynamicSolidDrawProvider() - -@PublishedApi -internal class DynamicGradientStrokeProvider : DynamicStroke.Gradient, - DynamicGradientDrawProvider by DynamicGradientDrawProvider() - -private class DynamicStrokeProviderImpl: BaseDynamicDrawProvider(), DynamicStrokeProvider { +internal class DynamicStrokeProvider: BaseDynamicDrawProvider(), DynamicStroke { var width: PropertyProvider? = null private set @@ -24,4 +19,30 @@ private class DynamicStrokeProviderImpl: BaseDynamicDrawProvider(), DynamicStrok override fun width(provider: PropertyProvider) { this.width = provider } -} \ No newline at end of file +} + +internal fun DynamicStrokeProvider?.applyToPaint( + paint: Paint, + state: AnimationState, + parentAlpha: Float, + parentMatrix : Matrix, + opacity : AnimatedNumber?, + strokeWidth : AnimatedNumber, + size: Size, + gradientCache: GradientCache +) { + applyToPaint( + paint = paint, + state = state, + parentAlpha = parentAlpha, + parentMatrix = parentMatrix, + opacity = opacity, + size = size, + gradientCache = gradientCache + ) + + paint.strokeWidth = strokeWidth.interpolated(state) + paint.strokeWidth = this?.width.derive(paint.strokeWidth, state) + paint.strokeWidth *= parentMatrix.scale +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt index e24bea62..23cf14f0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -1,17 +1,34 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.dynamic.PropertyProvider +import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.internal.AnimationState import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.jsonObject @Serializable(with = AnimatedNumberSerializer::class) -internal sealed interface AnimatedNumber : KeyframeAnimation, Indexable { +internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { + + protected var dynamic: PropertyProvider? = null + + fun dynamic(provider: PropertyProvider?) { + dynamic = provider + } + + abstract fun interpolatedInternal(state: AnimationState): Float + + final override fun interpolated(state: AnimationState): Float { + return interpolatedInternal(state).let { + dynamic.derive(it, state) + } + } @Serializable class Default( @@ -23,9 +40,9 @@ internal sealed interface AnimatedNumber : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null - ) : AnimatedNumber { + ) : AnimatedNumber() { - override fun interpolated(state: AnimationState): Float = value + override fun interpolatedInternal(state: AnimationState): Float = value } @Serializable @@ -38,14 +55,22 @@ internal sealed interface AnimatedNumber : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null - ) : AnimatedNumber, KeyframeAnimation by BaseKeyframeAnimation( - expression = expression, - keyframes = value, - emptyValue = 1f, - map = { s, e, p -> - lerp(s[0], e[0], easingX.transform(p)) + ) : AnimatedNumber() { + + @Transient + private val delegate = BaseKeyframeAnimation( + expression = expression, + keyframes = value, + emptyValue = 1f, + map = { s, e, p -> + lerp(s[0], e[0], easingX.transform(p)) + } + ) + + override fun interpolatedInternal(state: AnimationState): Float { + return delegate.interpolated(state) } - ) + } } internal fun AnimatedNumber.interpolatedNorm(state: AnimationState) = interpolated(state) / 100f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 4278e94e..b9b0fc86 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -20,7 +20,7 @@ import kotlin.math.cos import kotlin.math.sin import kotlin.math.tan -internal abstract class AnimatedTransform { +internal abstract class AnimatedTransform{ abstract val anchorPoint: AnimatedVector2? abstract val position: AnimatedVector2? @@ -31,7 +31,19 @@ internal abstract class AnimatedTransform { abstract val skewAxis: AnimatedNumber? var autoOrient = false + var dynamic : DynamicTransformProvider? = null + set(value) { + field = value + position?.dynamicOffset(value?.offset) + scale?.dynamicScale(value?.scale) + rotation?.dynamic(value?.rotation) + opacity?.dynamic(value?.opacity) + skew?.dynamic(value?.skew) + skewAxis?.dynamic(value?.skewAxis) + } + + open fun isHidden(state: AnimationState) : Boolean = false protected val matrix: Matrix = Matrix() @@ -55,21 +67,21 @@ internal abstract class AnimatedTransform { matrix.reset() - var interpolatedPosition = position?.interpolated(state) + if (isHidden(state)){ + return matrix + } + + val interpolatedPosition = position?.interpolated(state) ?.takeIf { it.x != 0f || it.y != 0f } ?.also { matrix.preTranslate(it.x, it.y) } - dynamic?.offset?.let { - interpolatedPosition = it.derive(interpolatedPosition ?: Offset.Zero, state) - } - if (autoOrient){ if (interpolatedPosition != null) { // Store the start X and Y values because the pointF will be overwritten by the next getValue call. - val startX = interpolatedPosition!!.x - val startY = interpolatedPosition!!.y + val startX = interpolatedPosition.x + val startY = interpolatedPosition.y // 1) Find the next position value. // 2) Create a vector from the current position to the next position. // 3) Find the angle of that vector to the X axis (0 degrees). @@ -77,43 +89,28 @@ internal abstract class AnimatedTransform { position!!.interpolated(it) } - var rotationValue= Math.toDegree( + val rotationValue= Math.toDegree( atan2( (nextPosition.y - startY), (nextPosition.x - startX) ) ) - dynamic?.rotation?.let { - rotationValue = it.derive(rotationValue, state) - } matrix.preRotate(rotationValue) } } else { - var rotation = rotation?.interpolated(state) + val rotation = rotation?.interpolated(state) ?.takeIf { it != 0f } - dynamic?.rotation?.let { - rotation = it.derive(rotation ?: 0f, state) - } - rotation?.let(matrix::preRotate) } - var skew = skew?.interpolated(state) + val skew = skew?.interpolated(state) ?.takeIf { it != 0f } - dynamic?.skew?.let { - skew = it.derive(skew ?: 0f, state) - } - skew?.let { sk -> - var skewAngle = skewAxis?.interpolated(state) - - dynamic?.skewAxis?.let { - skewAngle = it.derive(skewAngle ?: 0f, state) - } + val skewAngle = skewAxis?.interpolated(state) val mCos = if (skewAngle == null) 0f @@ -151,18 +148,13 @@ internal abstract class AnimatedTransform { matrix.preConcat(skewMatrix3) } - var scale = scale?.interpolatedNorm(state) + val scale = scale?.interpolatedNorm(state) ?.takeIf { it.x != 1f || it.y != 1f } - dynamic?.scale?.let { - scale = it.derive(scale?.toScaleFactor() ?: ScaleFactor.Identity, state).toVec2() - } - scale?.let { matrix.preScale(it.x, it.y) } - anchorPoint?.interpolated(state) ?.takeIf { it.x != 0f || it.y != 0f } ?.let { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 193ef73d..77dd9a7b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -1,9 +1,18 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure +import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.dynamic.PropertyProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.map +import io.github.alexzhirkevich.compottie.dynamic.toOffset +import io.github.alexzhirkevich.compottie.dynamic.toScaleFactor +import io.github.alexzhirkevich.compottie.dynamic.toSize +import io.github.alexzhirkevich.compottie.dynamic.toVec2 import io.github.alexzhirkevich.compottie.internal.AnimationState import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName @@ -24,7 +33,19 @@ internal typealias Vec2 = Offset internal fun Vec2(x : Float, y : Float) : Vec2 = Offset(x,y) @Serializable(with = AnimatedVector2Serializer::class) -internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { +internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { + + protected var dynamic: PropertyProvider? = null + + fun dynamic(provider: PropertyProvider?) { + dynamic = provider + } + + protected abstract fun interpolatedInternal(state: AnimationState) : Vec2 + + final override fun interpolated(state: AnimationState): Vec2 { + return dynamic.derive(interpolatedInternal(state), state) + } @Serializable class Default( @@ -36,12 +57,12 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null - ) : AnimatedVector2 { + ) : AnimatedVector2() { @Transient private val animationVector = Offset(value[0], value[1]) - override fun interpolated(state: AnimationState): Vec2 = animationVector + override fun interpolatedInternal(state: AnimationState): Vec2 = animationVector } @Serializable @@ -54,7 +75,7 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null, - ) : AnimatedVector2 { + ) : AnimatedVector2() { private val path by lazy { Path() @@ -97,8 +118,10 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { } ) - override fun interpolated(state: AnimationState): Offset { - return delegate.interpolated(state) + override fun interpolatedInternal(state: AnimationState): Offset { + return delegate.interpolated(state).let { + dynamic.derive(it, state) + } } } @@ -106,12 +129,12 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { class Split( val x: AnimatedNumber, val y: AnimatedNumber, - ) : AnimatedVector2 { + ) : AnimatedVector2() { override val expression: String? get() = null override val index: String? get() = null - override fun interpolated(state: AnimationState): Vec2 { + override fun interpolatedInternal(state: AnimationState): Vec2 { return Offset( x.interpolated(state), y.interpolated(state) @@ -120,8 +143,28 @@ internal sealed interface AnimatedVector2 : KeyframeAnimation, Indexable { } } + internal fun AnimatedVector2.interpolatedNorm(state: AnimationState) = interpolated(state) / 100f +internal fun AnimatedVector2.dynamicOffset( + provider: PropertyProvider? +) { + dynamic(provider?.map(from = Offset::toVec2, to = Vec2::toOffset)) + +} + +internal fun AnimatedVector2.dynamicSize( + provider: PropertyProvider? +) { + dynamic(provider?.map(from = Size::toVec2, to = Vec2::toSize)) + +} + +internal fun AnimatedVector2.dynamicScale( + provider: PropertyProvider? +) { + dynamic(provider?.map(from = ScaleFactor::toVec2, to = Vec2::toScaleFactor)) +} internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer(AnimatedVector2::class) { @@ -144,6 +187,7 @@ internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer, + private val hidden : (AnimationState) -> Boolean, override val transform: AnimatedTransform?, ) : ContentGroupBase { @@ -30,8 +30,13 @@ internal class ContentGroup( } private val matrix = Matrix() private val path = Path() + // private val boundsRect = MutableRect(0f, 0f, 0f, 0f) + override fun hidden(state: AnimationState): Boolean { + return hidden.invoke(state) + } + private val mContents by lazy { contents.filterNot { it is ContentGroupBase && it.pathContents.isEmpty() @@ -61,7 +66,7 @@ internal class ContentGroup( state: AnimationState ) { - if (hidden) { + if (hidden(state)) { return } @@ -101,7 +106,7 @@ internal class ContentGroup( override fun getPath(state: AnimationState): Path { path.reset() - if (hidden) { + if (hidden(state)) { return path } matrix.reset() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt index 03b74a1a..b3b08de9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.content +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -8,4 +9,7 @@ internal interface ContentGroupBase : DrawingContent, PathContent { val pathContents : List val transform : AnimatedTransform? + + fun hidden(state: AnimationState) : Boolean + } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt index db7cf91d..6da0e86a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/CompoundTrimPath.kt @@ -34,7 +34,7 @@ internal fun CompoundSimultaneousTrimPath(contents: List) : CompoundTri } internal fun Path.applyTrimPath(trimPath: TrimPathShape, state: AnimationState) { - if (trimPath.hidden) { + if (trimPath.isHidden(state)) { return } val start: Float = trimPath.start.interpolatedNorm(state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index 165a85a9..15319fa2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.helpers +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index b7ddbbce..58d3aef6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -139,8 +139,6 @@ internal abstract class BaseLayer() : Layer { alpha = (alpha * it).coerceIn(0f, 1f) } - alpha = transform.dynamic?.opacity.derive(alpha, state) - alpha = (alpha * parentAlpha.coerceIn(0f,1f)) if (matteLayer == null && !hasMask()) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 23f6021b..609ef383 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -5,6 +5,11 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.dynamic.ImageSpec +import io.github.alexzhirkevich.compottie.dynamic.DynamicImageLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -92,12 +97,41 @@ internal class ImageLayer( painterProperties?.assets?.get(refId) as? ImageAsset } + private val assetBitmap by lazy { + asset?.bitmap + } + + private val imageSpec by lazy { + asset?.let { + ImageSpec( + id = it.id, + path = it.path, + name = it.fileName, + width = it.width, + height = it.height + ) + } + } + private val effectState by lazy { LayerEffectsState() } + @Transient + private var dynamic : DynamicImageLayerProvider? = null + + private fun dynamicAsset(state: AnimationState) : ImageAsset? { + + assetBitmap // initialize lazy property with default asset bitmap + + (dynamic?.image?.invoke(state, imageSpec) ?: assetBitmap)?.let { + asset?.setBitmap(it) + } + return asset + } + override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { - val mAsset = asset ?: return + val mAsset = dynamicAsset(state) ?: return val bitmap = mAsset.bitmap ?: return paint.alpha = parentAlpha @@ -108,7 +142,6 @@ internal class ImageLayer( canvas.save() canvas.concat(parentMatrix) - drawScope.drawImage( image = bitmap, alpha = parentAlpha, @@ -132,7 +165,7 @@ internal class ImageLayer( ) { super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) - asset?.let { + dynamicAsset(state)?.let { outBounds.set( left = 0f, top = 0f, @@ -142,5 +175,13 @@ internal class ImageLayer( boundsMatrix.map(outBounds) } } + + override fun onCreate(composition: LottieComposition) { + super.onCreate(composition) + + if (name != null) { + dynamic = composition.dynamic?.get(layerPath(namePath, name)) as? DynamicImageLayerProvider + } + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 7c51b727..6635aaed 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -5,7 +5,9 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroup @@ -85,7 +87,7 @@ internal class ShapeLayer( @SerialName("shapes") val shapes: List = emptyList(), -) : BaseLayer() { +) : BaseLayer() { init { shapes.forEach { @@ -93,10 +95,13 @@ internal class ShapeLayer( } } + @Transient + private var dynamicLayer : DynamicLayerProvider? = null + @Transient private val contentGroup = ContentGroup( name = name, - hidden = hidden, + hidden = { dynamicLayer?.hidden.derive(hidden, it) }, contents = shapes, transform = shapes.firstInstanceOf()?.apply { autoOrient = this@ShapeLayer.autoOrient == BooleanInt.Yes @@ -109,7 +114,8 @@ internal class ShapeLayer( super.onCreate(composition) if (name != null) { - (composition.dynamic?.get(layerPath(namePath, name)) as? DynamicShapeLayerProvider)?.let { dp -> + dynamicLayer = composition.dynamic?.get(layerPath(namePath, name)) + (dynamicLayer as? DynamicShapeLayerProvider?)?.let { dp -> shapes.fastForEach { it.setDynamicProperties(null, dp) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt index 45863c22..662a9047 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.kt @@ -2,4 +2,4 @@ package io.github.alexzhirkevich.compottie.internal.platform import androidx.compose.ui.graphics.ImageBitmap -internal expect fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap \ No newline at end of file +expect fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 99981760..0c6687ae 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -18,7 +18,7 @@ import kotlin.math.hypot private val CACHE_LIMIT = 15 -typealias GradientCache = LinkedHashMap +internal typealias GradientCache = LinkedHashMap internal fun GradientShader( gradient: LottieGradient, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 21649d98..c5091f34 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -14,6 +14,12 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicStrokeProvider +import io.github.alexzhirkevich.compottie.dynamic.applyToPaint +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm @@ -26,12 +32,12 @@ import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.helpers.applyTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure +import io.github.alexzhirkevich.compottie.internal.platform.GradientCache import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.utils.scale import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient import kotlin.jvm.JvmInline import kotlin.math.min @@ -88,6 +94,8 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private val trimPathPath = Path() private val path = Path() private val rect = MutableRect(0f, 0f, 0f, 0f) + private val boundsRect = MutableRect(0f, 0f, 0f, 0f) + protected val paint by lazy { Paint().apply { isAntiAlias = true @@ -124,20 +132,36 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { LayerEffectsState() } + protected var dynamicStroke : DynamicStrokeProvider? = null + + private var dynamicShape: DynamicShapeProvider? = null + + protected var gradientCache = GradientCache() + override fun draw( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState, ) { - - if (hidden){ + if (dynamicShape?.hidden.derive(hidden, state)) { return } paint.style = PaintingStyle.Stroke - paint.alpha = parentAlpha * opacity.interpolatedNorm(state).coerceIn(0f, 1f) - paint.strokeWidth = strokeWidth.interpolated(state) * parentMatrix.scale + + getBounds(drawScope, parentMatrix, false, state, boundsRect) + + dynamicStroke.applyToPaint( + paint = paint, + state = state, + parentAlpha = parentAlpha, + parentMatrix = parentMatrix, + opacity = opacity, + strokeWidth = strokeWidth, + size = boundsRect.size, + gradientCache = gradientCache + ) if (paint.strokeWidth <= 0) { return @@ -166,6 +190,14 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } } + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + name?.let { + dynamicStroke = properties[layerPath(basePath, it)] + dynamicShape = properties[layerPath(basePath, it)] + } + } + override fun setContents(contentsBefore: List, contentsAfter: List) { val trimPathContentBefore: TrimPathShape? = contentsBefore diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 10a13b73..e59687d7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -1,10 +1,21 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipse +import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipseProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath +import io.github.alexzhirkevich.compottie.dynamic.toOffset +import io.github.alexzhirkevich.compottie.dynamic.toScaleFactor +import io.github.alexzhirkevich.compottie.dynamic.toSize import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset +import io.github.alexzhirkevich.compottie.internal.animation.dynamicSize import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer @@ -44,16 +55,20 @@ internal class EllipseShape( @Transient private var trimPaths: CompoundTrimPath? = null + @Transient + private var dynamicShape : DynamicShapeProvider? = null + override fun getPath(state: AnimationState): Path { - if (hidden) { + if (dynamicShape?.hidden.derive(hidden, state)) { path.rewind() return path } - val size = size.interpolated(state) - val halfWidth = size.x / 2f - val halfHeight = size.y / 2f + val size = size.interpolated(state).toSize() + + val halfWidth = size.width / 2f + val halfHeight = size.height / 2f // TODO: handle bounds val cpW = halfWidth * ELLIPSE_CONTROL_POINT_PERCENTAGE @@ -74,7 +89,7 @@ internal class EllipseShape( path.cubicTo(-halfWidth, 0 - cpH, 0 - cpW, -halfHeight, 0f, -halfHeight) // } - val position = position.interpolated(state) + val position = position.interpolated(state).toOffset() path.translate(position) @@ -85,6 +100,17 @@ internal class EllipseShape( return path } + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + val dynamicEllipse = dynamicShape as? DynamicEllipseProvider? + size.dynamicSize(dynamicEllipse?.size) + position.dynamicOffset(dynamicEllipse?.position) + } + } + override fun setContents(contentsBefore: List, contentsAfter: List) { trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index c152925f..47c4a20c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -9,23 +10,22 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.dynamic.DynamicFillProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider -import io.github.alexzhirkevich.compottie.dynamic.DynamicSolidDrawProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.applyToPaint import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber -import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.FillRule -import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType import io.github.alexzhirkevich.compottie.internal.layers.Layer +import io.github.alexzhirkevich.compottie.internal.platform.GradientCache +import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -44,9 +44,6 @@ internal class FillShape( @SerialName("hd") override val hidden : Boolean = false, - @SerialName("a") - val withAlpha : BooleanInt = BooleanInt.No, - @SerialName("d") val direction : Int = 1, @@ -79,7 +76,11 @@ internal class FillShape( } @Transient - private var dynamic : DynamicFillProvider? = null + private var dynamicFill : DynamicFillProvider? = null + + @Transient + private var dynamicShape : DynamicShapeProvider? = null + @Transient private var roundShape : RoundShape? = null @@ -88,32 +89,26 @@ internal class FillShape( LayerEffectsState() } + @Transient + private val gradientCache = GradientCache() + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { - if (hidden) { + if (dynamicShape?.hidden.derive(hidden, state)) { return } - var c = color.interpolated(state) - - (dynamic as? DynamicSolidDrawProvider)?.color?.let { - c = it.derive(c, state) - } - - paint.color = c + paint.color = color.interpolated(state) - var alpha = 1f - - opacity?.interpolatedNorm(state)?.let { - alpha = (alpha * it).coerceIn(0f,1f) - } - dynamic?.opacity?.let { - alpha = it.derive(alpha, state).coerceIn(0f,1f) - } - - paint.alpha = (alpha * parentAlpha).coerceIn(0f,1f) - paint.colorFilter = dynamic?.colorFilter.derive(paint.colorFilter, state) - paint.blendMode = dynamic?.blendMode.derive(paint.blendMode, state) + dynamicFill.applyToPaint( + paint = paint, + state = state, + parentAlpha = parentAlpha, + parentMatrix = parentMatrix, + opacity = opacity, + size = Size.Zero, + gradientCache = gradientCache + ) roundShape?.applyTo(paint, state) @@ -154,7 +149,8 @@ internal class FillShape( override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamic = properties[layerPath(basePath, name)] + dynamicFill = properties[layerPath(basePath, name)] + dynamicShape = properties[layerPath(basePath, name)] } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 3a37e35d..967e03a0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -9,9 +9,9 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.dynamic.DynamicFillProvider -import io.github.alexzhirkevich.compottie.dynamic.DynamicGradientDrawProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider -import io.github.alexzhirkevich.compottie.dynamic.DynamicSolidDrawProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.applyToPaint import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState @@ -19,7 +19,6 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType -import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -104,7 +103,10 @@ internal class GradientFillShape( } @Transient - private var dynamic : DynamicFillProvider? = null + private var dynamicFill : DynamicFillProvider? = null + @Transient + private var dynamicShape : DynamicShapeProvider? = null + @Transient private val gradientCache = LinkedHashMap() @@ -117,14 +119,12 @@ internal class GradientFillShape( } override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { - if (hidden){ + if (dynamicShape?.hidden.derive(hidden, state)) { return } - val dynamicGradient = (dynamic as? DynamicGradientDrawProvider)?.gradient - - paint.shader = if (dynamicGradient == null) { - GradientShader( + if (dynamicFill?.gradient == null) { + paint.shader = GradientShader( type = type, startPoint = startPoint, endPoint = endPoint, @@ -135,24 +135,17 @@ internal class GradientFillShape( ) } else { getBounds(drawScope, parentMatrix, false, state, boundsRect) - GradientShader( - gradient = dynamicGradient.invoke(boundsRect.size, state), - matrix = parentMatrix, - cache = gradientCache - ) } - var alpha = 1f - - opacity?.interpolatedNorm(state)?.let { - alpha = (alpha * it).coerceIn(0f,1f) - } - dynamic?.opacity?.let { - alpha = it.derive(alpha, state).coerceIn(0f,1f) - } - paint.alpha = (alpha * parentAlpha).coerceIn(0f,1f) - paint.colorFilter = dynamic?.colorFilter.derive(paint.colorFilter, state) - paint.blendMode = dynamic?.blendMode.derive(paint.blendMode, state) + dynamicFill.applyToPaint( + paint = paint, + state = state, + parentAlpha = parentAlpha, + opacity = opacity, + parentMatrix = parentMatrix, + size = boundsRect.size, + gradientCache = gradientCache + ) layer.effectsApplier.applyTo(paint, state, effectsState) @@ -193,7 +186,8 @@ internal class GradientFillShape( override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamic = properties[layerPath(basePath, name)] + dynamicFill = properties[layerPath(basePath, name)] + dynamicShape = properties[layerPath(basePath, name)] } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index 6cb825e0..ef7c1511 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -1,8 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes -import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.platform.GradientShader @@ -75,25 +73,20 @@ internal class GradientStrokeShape( @Transient override lateinit var layer: Layer - @Transient - private val boundsRect = MutableRect(0f,0f,0f,0f) - - @Transient - private val gradientCache = LinkedHashMap() - override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { - getBounds(drawScope, parentMatrix, false, state, boundsRect) - - paint.shader = GradientShader( - type = type, - startPoint = startPoint, - endPoint = endPoint, - colors = colors, - state = state, - matrix = parentMatrix, - cache = gradientCache - ) + if (dynamicStroke?.gradient == null) { + paint.shader = GradientShader( + type = type, + startPoint = startPoint, + endPoint = endPoint, + colors = colors, + state = state, + matrix = parentMatrix, + cache = gradientCache + ) + } + super.draw(drawScope, parentMatrix, parentAlpha, state) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index 1a4b0195..bbed45c1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -1,8 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.shapes +import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider import io.github.alexzhirkevich.compottie.dynamic.LayerPathSeparator +import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -26,19 +30,15 @@ internal class GroupShape( @SerialName("hd") override val hidden : Boolean = false, - @SerialName("np") - val numberOfProperties : Int = 0, - @SerialName("it") val items : List = emptyList(), ) : Shape, ContentGroupBase by ContentGroup( name = name, - hidden = hidden, + hidden = { hidden }, contents = items, transform = items.firstInstanceOf() ) { - @Transient override var layer: Layer = NullLayer() set(value) { @@ -50,11 +50,20 @@ internal class GroupShape( transform?.autoOrient = value.autoOrient == BooleanInt.Yes } + @Transient + private var dynamicShape : DynamicShapeProvider? = null + + override fun hidden(state: AnimationState): Boolean { + return dynamicShape?.hidden.derive(hidden, state) + } + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { super.setDynamicProperties(basePath, properties) if (name != null) { + val path = layerPath(basePath, name) + dynamicShape = properties[path] items.forEach { - it.setDynamicProperties(layerPath(basePath, name), properties) + it.setDynamicProperties(path, properties) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 70be0358..b2604033 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -5,6 +5,10 @@ import androidx.compose.ui.graphics.PathOperation import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase @@ -63,27 +67,38 @@ internal class MergePathsShape( @Transient private var pathContents = emptyList() + @Transient + private var dynamicShape : DynamicShapeProvider? = null + override fun getPath(state: AnimationState): Path { path.reset() - if (hidden) { - return path - } + val hidden = dynamicShape?.hidden.derive(hidden, state) - when (mode) { - MergeMode.Normal -> pathContents.fastForEach { + if (hidden || mode == MergeMode.Add){ + pathContents.fastForEach { path.addPath(it.getPath(state)) } - MergeMode.Add -> opFirstPathWithRest(PathOperation.Union, state) - MergeMode.Subtract -> opFirstPathWithRest(PathOperation.Difference, state) - MergeMode.Intersect -> opFirstPathWithRest(PathOperation.Intersect, state) - MergeMode.ExcludeIntersections -> opFirstPathWithRest(PathOperation.Xor, state) + } else { + when (mode) { + MergeMode.Subtract -> opFirstPathWithRest(PathOperation.Difference, state) + MergeMode.Intersect -> opFirstPathWithRest(PathOperation.Intersect, state) + MergeMode.ExcludeIntersections -> opFirstPathWithRest(PathOperation.Xor, state) + } } return path } + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + } + } + override fun setContents(contentsBefore: List, contentsAfter: List) { pathContents.fastForEach { it.setContents(contentsBefore, contentsAfter) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index f44b48f9..0a43f484 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -2,6 +2,10 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathFillType +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -38,10 +42,13 @@ internal class PathShape( private val path = Path() + @Transient + private var dynamicShape : DynamicShapeProvider? = null + override fun getPath(state: AnimationState): Path { path.reset() - if (hidden) { + if (dynamicShape?.hidden.derive(hidden, state)) { return path } path.set(shape.interpolatedRaw(state)) @@ -54,4 +61,13 @@ internal class PathShape( override fun setContents(contentsBefore: List, contentsAfter: List) { trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } + + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + } + } + } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index de5af6b7..ed2a3889 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -3,11 +3,19 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure +import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipseProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicPolystarProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath +import io.github.alexzhirkevich.compottie.dynamic.toOffset import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath @@ -72,8 +80,7 @@ internal class PolystarShape( @SerialName("sy") val starType : StarType, - - ) : Shape, PathContent { +) : Shape, PathContent { @Transient override lateinit var layer: Layer @@ -90,10 +97,18 @@ internal class PolystarShape( @Transient private var trimPaths : CompoundTrimPath? = null + @Transient + private var dynamicShape : DynamicShapeProvider? = null + + override fun getPath(state: AnimationState): Path { path.rewind() + if (dynamicShape?.hidden.derive(hidden, state)){ + return path + } + when (starType) { StarType.Star -> createStarPath(state) StarType.Polygon -> createPolygonPath(state) @@ -108,6 +123,24 @@ internal class PolystarShape( trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + val dynamicPolystar = dynamicShape as? DynamicPolystarProvider? + + position?.dynamicOffset(dynamicPolystar?.position) + points.dynamic(dynamicPolystar?.points) + rotation?.dynamic(dynamicPolystar?.rotation) + innerRadius?.dynamic(dynamicPolystar?.innerRadius) + innerRoundness?.dynamic(dynamicPolystar?.innerRoundness) + outerRadius?.dynamic(dynamicPolystar?.outerRadius) + outerRoundness?.dynamic(dynamicPolystar?.outerRoundness) + } + } + + private fun createStarPath(state: AnimationState) { val points = points.interpolated(state = state) var currentAngle = Math.toRadians((rotation?.interpolated(state) ?: 0f) - 90f) @@ -214,7 +247,6 @@ internal class PolystarShape( longSegment = !longSegment } - position?.interpolated(state)?.let { path.translate(it) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index 09d33c44..d5cfb939 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -2,11 +2,20 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipseProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicRectProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath +import io.github.alexzhirkevich.compottie.dynamic.toSize import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset +import io.github.alexzhirkevich.compottie.internal.animation.dynamicSize import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath import io.github.alexzhirkevich.compottie.internal.layers.Layer @@ -50,21 +59,25 @@ internal class RectShape( @Transient private var trimPaths : CompoundTrimPath? = null + @Transient + private var dynamicShape : DynamicShapeProvider? = null + override fun setContents(contentsBefore: List, contentsAfter: List) { trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } override fun getPath(state: AnimationState): Path { - if (hidden) { + if (dynamicShape?.hidden.derive(hidden, state)) { path.rewind() return path } + path.rewind() val position = position.interpolated(state) val size = size.interpolated(state) - var radius = roundedCorners?.interpolated(state) ?: 0F + var radius = roundedCorners?.interpolated(state) ?: 0f val halfWidth = size.x / 2f val halfHeight = size.y / 2f @@ -135,4 +148,17 @@ internal class RectShape( return path } + + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + val dynamicRect = dynamicShape as? DynamicRectProvider? + + position.dynamicOffset(dynamicRect?.position) + size.dynamicSize(dynamicRect?.size) + roundedCorners?.dynamic(dynamicRect?.roundCorners) + } + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index d07594b3..9ac2bf6c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -5,6 +5,11 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.PropertyProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.RepeaterTransform @@ -57,6 +62,9 @@ internal class RepeaterShape( @Transient private val matrix = Matrix() + @Transient + private var dynamicHidden : DynamicShapeProvider? = null + override fun draw( drawScope: DrawScope, parentMatrix: Matrix, @@ -128,15 +136,22 @@ internal class RepeaterShape( val contentsList = contents.take(thisIndex) - repeat(thisIndex){ + repeat(thisIndex) { contents.removeFirst() } contentGroup = ContentGroup( name = name, - hidden = hidden, + hidden = { dynamicHidden?.hidden.derive(hidden, it) }, contents = contentsList, transform = null, ) } + + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + if (name != null) { + dynamicHidden = properties[layerPath(basePath, name)] + } + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index 4345d467..4a525784 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -2,6 +2,10 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.PathEffect +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.content.Content @@ -28,13 +32,29 @@ internal class RoundShape( @Transient override lateinit var layer: Layer + @Transient + private var dynamicShape : DynamicShapeProvider? = null + + fun isHidden(state : AnimationState) : Boolean { + return dynamicShape?.hidden.derive(hidden, state) + } + override fun setContents(contentsBefore: List, contentsAfter: List) { } + + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + } + } + } -internal fun RoundShape.applyTo(paint: Paint, state: AnimationState){ - if (!hidden){ +internal fun RoundShape.applyTo(paint: Paint, state: AnimationState) { + if (!isHidden(state)) { val radius = radius.interpolated(state) val effect = PathEffect.cornerPathEffect(radius) paint.pathEffect = if (paint.pathEffect == null) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index 9e0b05e5..23dde095 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -17,9 +17,7 @@ internal sealed interface Shape : Content { var layer : Layer - fun setDynamicProperties(basePath: String?, properties : DynamicShapeLayerProvider){ - - } + fun setDynamicProperties(basePath: String?, properties : DynamicShapeLayerProvider) {} @Serializable data object UnsupportedShape : Shape { @@ -31,8 +29,7 @@ internal sealed interface Shape : Content { get() = error("Unsupported shape doesn't have layer") set(value) {} - override fun setContents(contentsBefore: List, contentsAfter: List) { - } + override fun setContents(contentsBefore: List, contentsAfter: List) {} } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index ed502da4..6813c1b7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -1,5 +1,10 @@ package io.github.alexzhirkevich.compottie.internal.shapes +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ModifierContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform @@ -48,8 +53,23 @@ internal class TransformShape( @Transient override lateinit var layer: Layer + @Transient + private var dynamicShape : DynamicShapeProvider? = null + override fun setContents(contentsBefore: List, contentsAfter: List) { } + + override fun isHidden(state: AnimationState): Boolean { + return dynamicShape?.hidden.derive(hidden, state) + } + + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + } + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt index 8ec6e2fc..7bb79ece 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt @@ -1,5 +1,11 @@ package io.github.alexzhirkevich.compottie.internal.shapes +import io.github.alexzhirkevich.compottie.dynamic.DynamicShape +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider +import io.github.alexzhirkevich.compottie.dynamic.derive +import io.github.alexzhirkevich.compottie.dynamic.layerPath +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.helpers.TrimPathType import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber @@ -39,9 +45,22 @@ internal class TrimPathShape( @Transient override lateinit var layer: Layer + @Transient + private var dynamicShape : DynamicShapeProvider? = null + fun isHidden(state : AnimationState) : Boolean { + return dynamicShape?.hidden.derive(hidden, state) + } + override fun setContents(contentsBefore: List, contentsAfter: List) { } + + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + super.setDynamicProperties(basePath, properties) + if (name != null) { + dynamicShape = properties[layerPath(basePath, name)] + } + } } diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt index c17094ea..8abf960e 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformImage.skiko.kt @@ -4,6 +4,6 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.toComposeImageBitmap import org.jetbrains.skia.Image -internal actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { +actual fun ImageBitmap.Companion.fromBytes(bytes: ByteArray) : ImageBitmap { return Image.makeFromEncoded(bytes).toComposeImageBitmap() } \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/image_asset.json b/example/shared/src/commonMain/composeResources/files/image_asset.json index cb2f39f5..e8940863 100644 --- a/example/shared/src/commonMain/composeResources/files/image_asset.json +++ b/example/shared/src/commonMain/composeResources/files/image_asset.json @@ -1 +1 @@ -{"v":"5.5.2","fr":60,"ip":0,"op":60,"w":512,"h":512,"ddd":0,"assets":[{"id":"blep","h":512,"w":512,"u":"/images/","p":"blep.png","e":1}],"layers":[{"ddd":0,"ty":2,"sr":1,"ks":{"a":{"k":[0,0],"a":0},"p":{"k":[0,0],"a":0},"s":{"k":[100,100],"a":0},"r":{"k":0,"a":0},"o":{"k":100,"a":0},"sk":{"k":0,"a":0},"sa":{"k":0,"a":0}},"ao":0,"ip":0,"op":60,"st":0,"bm":0,"ind":0,"refId":"blep"}]} \ No newline at end of file +{"v":"5.5.2","fr":60,"ip":0,"op":60,"w":512,"h":512,"ddd":0,"assets":[{"id":"blep","h":512,"w":512,"u":"/images/","p":"blep.png","e":1}],"layers":[{"ddd":0,"ty":2,"sr":1,"ks":{"a":{"k":[0,0],"a":0},"p":{"k":[0,0],"a":0},"s":{"k":[100,100],"a":0},"r":{"k":0,"a":0},"o":{"k":100,"a":0},"sk":{"k":0,"a":0},"sa":{"k":0,"a":0}},"ao":0,"ip":0,"op":60,"nm":"Image","st":0,"bm":0,"ind":0,"refId":"blep"}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index ac74a4b0..f795541e 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,21 +1,14 @@ import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.focusable -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.interaction.collectIsFocusedAsState import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator @@ -24,6 +17,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment @@ -34,13 +28,9 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ScaleFactor -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.input.TextFieldValue +import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.CompottieException import io.github.alexzhirkevich.compottie.LottieComposition @@ -50,8 +40,7 @@ import io.github.alexzhirkevich.compottie.NetworkAssetsManager import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieImage -import io.github.alexzhirkevich.compottie.dynamic.DynamicStroke -import io.github.alexzhirkevich.compottie.dynamic.stroke +import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import kotlinx.coroutines.delay @@ -89,6 +78,7 @@ private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" private val DOT = "dotlottie/dot.lottie" private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" +@OptIn(ExperimentalResourceApi::class) @Composable fun App() { @@ -100,33 +90,22 @@ fun App() { NetworkAssetsManager() }, dynamic = { - layer("Pre-comp 1", "Head Layer") { - transform { - scale { - val p = progress - val scale = if (p > .5f) - (1f - p) / .5f else p / .5f - ScaleFactor(1f - scale/1.5f,1f - scale/1.5f) - } - } - } - shapeLayer(""){ - stroke("qwe"){ - - } - } } ) { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } -// LottieCompositionSpec.Resource(CHECKMARK) + LottieCompositionSpec.Resource(ROBOT) - LottieCompositionSpec.Url( - url = "https://assets-v2.lottiefiles.com/a/e25360fe-1150-11ee-9d43-2f8655b815bb/xSk6HtgPaN.lottie", - ) +// LottieCompositionSpec.Url( +// url = "https://assets-v2.lottiefiles.com/a/e25360fe-1150-11ee-9d43-2f8655b815bb/xSk6HtgPaN.lottie", +// ) } + LottieAssetsManager.combine( + + ) + // If you want to be aware of loading errors LaunchedEffect(composition) { try { From 7476b6b3bd761a37925f4a6eab92ac5e5c400026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 20 Jun 2024 01:24:19 +0300 Subject: [PATCH 053/100] resources --- compottie-resources/build.gradle.kts | 157 ++++++++++++++++++ .../compottie/ResourcesFontManager.android.kt | 25 +++ .../compottie/ResourcesAssetsManager.kt | 83 +++++++++ .../compottie/ResourcesFontManager.kt | 52 ++++++ .../compottie/ResourcesFontManager.skiko.kt | 22 +++ example/shared/build.gradle.kts | 1 + settings.gradle.kts | 1 + 7 files changed, 341 insertions(+) create mode 100644 compottie-resources/build.gradle.kts create mode 100644 compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt create mode 100644 compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt create mode 100644 compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt create mode 100644 compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt diff --git a/compottie-resources/build.gradle.kts b/compottie-resources/build.gradle.kts new file mode 100644 index 00000000..591198b9 --- /dev/null +++ b/compottie-resources/build.gradle.kts @@ -0,0 +1,157 @@ +@file:Suppress("DSL_SCOPE_VIOLATION") + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import java.util.Base64 + +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.android.library) + alias(libs.plugins.compose) + alias(libs.plugins.composeCompiler) + id("maven-publish") + id("signing") +} + +group = "io.github.alexzhirkevich" +version = libs.versions.compottie.get() + +val _jvmTarget = findProperty("jvmTarget") as String + +kotlin { + + @OptIn(ExperimentalKotlinGradlePluginApi::class) + applyDefaultHierarchyTemplate { + common { + group("skiko") { + withJvm() + withIos() + withMacos() + withJs() + withWasmJs() + } + } + } + + androidTarget{ + publishLibraryVariants("release") + compilations.all { + kotlinOptions { + jvmTarget = _jvmTarget + } + } + } + + + iosArm64() + iosX64() + iosSimulatorArm64() + + wasmJs(){ + browser() + } + js(IR){ + browser() + } + jvm("desktop"){ + compilations.all { + kotlinOptions { + jvmTarget = _jvmTarget + } + } + } + + macosArm64() + macosX64() + + sourceSets { + commonMain.dependencies { + implementation(compose.ui) + implementation(compose.components.resources) + implementation(libs.coroutines.core) + implementation(project(":compottie")) + } + } +} + +android { + namespace = "io.github.alexzhirkevich.compottie" + compileSdk = 34 + defaultConfig { + minSdk = 21 + } + + compileOptions { + sourceCompatibility = JavaVersion.toVersion(_jvmTarget) + targetCompatibility = JavaVersion.toVersion(_jvmTarget) + } +} + +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} +// https://github.com/gradle/gradle/issues/26091 +val signingTasks = tasks.withType() +tasks.withType().configureEach { + dependsOn(signingTasks) +} + +publishing { + if (System.getenv("OSSRH_PASSWORD")!=null) { + + repositories { + maven { + val releasesRepoUrl = + "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + val snapshotsRepoUrl = + "https://s01.oss.sonatype.org/content/repositories/snapshots/" + url = if (version.toString().contains("dev")) { + uri(snapshotsRepoUrl) + } else { + uri(releasesRepoUrl) + } + credentials { + username = System.getenv("OSSRH_USERNAME") + password = System.getenv("OSSRH_PASSWORD") + } + } + } + } + + publications.withType { + artifact(javadocJar) + pom { + name.set("Compottie") + description.set("Compose Multiplatform lottie animation") + url.set("https://github.com/alexzhirkevich/compottie") + + licenses { + license { + name.set("MIT") + url.set("https://opensource.org/licenses/MIT") + } + } + developers { + developer { + id.set("alexzhirkevich") + name.set("Alexander Zhirkevich") + email.set("sasha.zhirkevich@gmail.com") + } + } + scm { + url.set("https://github.com/alexzhirkevich/compottie") + connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + } + } + } +} + +if (System.getenv("GPG_KEY") != null) { + signing { + useInMemoryPgpKeys( + Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), + System.getenv("GPG_KEY_PWD"), + ) + sign(publishing.publications) + } +} \ No newline at end of file diff --git a/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt b/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt new file mode 100644 index 00000000..72ecef32 --- /dev/null +++ b/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt @@ -0,0 +1,25 @@ +@file:Suppress("INVISIBLE_MEMBER","INVISIBLE_REFERENCE") + +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.font.Font +import io.github.alexzhirkevich.compottie.assets.LottieFont +import org.jetbrains.compose.resources.ExperimentalResourceApi +import org.jetbrains.compose.resources.FontResource +import org.jetbrains.compose.resources.InternalResourceApi +import org.jetbrains.compose.resources.LocalComposeEnvironment +import org.jetbrains.compose.resources.ResourceEnvironment +import org.jetbrains.compose.resources.getFontResourceBytes +import org.jetbrains.compose.resources.getResourceItemByEnvironment + +@OptIn(ExperimentalResourceApi::class, InternalCompottieApi::class, InternalResourceApi::class) +internal actual suspend fun loadFont( + environment: ResourceEnvironment, + font: LottieFont, + resource: FontResource +) : Font { + val path = resource.getResourceItemByEnvironment(environment).path + return Font(path, L.context.assets, font.weight, font.style) +} \ No newline at end of file diff --git a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt new file mode 100644 index 00000000..2ff17e6f --- /dev/null +++ b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt @@ -0,0 +1,83 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import io.github.alexzhirkevich.compottie.assets.ImageRepresentable +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.assets.LottieImage +import io.github.alexzhirkevich.compottie_resources.generated.resources.Res +import org.jetbrains.compose.resources.ExperimentalResourceApi +import org.jetbrains.compose.resources.MissingResourceException + +/** + * Compose resources Lottie asset manager. + * + * Assess are stored in the _**composeResources/[directory]**_ directory. + * + * Handles the following possible cases: + * - path="/images/", name="image.png" + * - path="images/", name="image.png" + * - path="", name="/images/image.png" + * - path="", name="images/image.png" + * */ +@Composable +@ExperimentalCompottieApi +fun rememberResourcesAssetsManager( + directory : String = "files", + readBytes : suspend (path : String) -> ByteArray, +) : LottieAssetsManager { + + val updatedReadBytes by rememberUpdatedState(readBytes) + + return remember(directory) { + ResourcesAssetsManager(directory) { + updatedReadBytes(it) + } + } +} + +/** + * Compose resources asset manager. + * + * Assess are stored in the _**composeResources/[relativeTo]**_ directory. + * + * Handles the following possible cases: + * - path="/images/", name="image.png" + * - path="images/", name="image.png" + * - path="", name="/images/image.png" + * - path="", name="images/image.png" + * */ +@OptIn(ExperimentalResourceApi::class) +private class ResourcesAssetsManager( + private val relativeTo : String = "files", + private val readBytes : suspend (path : String) -> ByteArray = Res::readBytes, +) : LottieAssetsManager by LottieAssetsManager.Empty { + override suspend fun image(image: LottieImage): ImageRepresentable? { + return try { + val trimPath = image.path + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val trimName = image.name + .removePrefix("/") + .removeSuffix("/") + .takeIf(String::isNotEmpty) + + val fullPath = listOfNotNull( + relativeTo.takeIf(String::isNotEmpty), + trimPath, + trimName + ).joinToString("/") + + ImageRepresentable.Bytes(readBytes(fullPath)) + } catch (x: MissingResourceException) { + null + } + } + + +} \ No newline at end of file diff --git a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt new file mode 100644 index 00000000..466d452f --- /dev/null +++ b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt @@ -0,0 +1,52 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.text.font.Font +import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.assets.LottieFontManager +import org.jetbrains.compose.resources.ExperimentalResourceApi +import org.jetbrains.compose.resources.FontResource +import org.jetbrains.compose.resources.ResourceEnvironment +import org.jetbrains.compose.resources.rememberResourceEnvironment + +@OptIn(ExperimentalResourceApi::class) +@Composable +@ExperimentalCompottieApi +fun rememberResourcesFontManager( + font : (LottieFont) -> FontResource? +) : LottieFontManager { + val factory by rememberUpdatedState(font) + + val environment = rememberResourceEnvironment() + + return remember(environment) { + ResourcesFontManager( + environment = environment, + resource = { factory(it) } + ) + } +} + + +@OptIn(ExperimentalResourceApi::class) +private class ResourcesFontManager( + private val environment: ResourceEnvironment, + private val resource : (LottieFont) -> FontResource? +) : LottieFontManager { + + override suspend fun font(font: LottieFont): Font? { + val resource = resource(font) ?: return null + return loadFont(environment, font, resource) + } +} + + +@OptIn(ExperimentalResourceApi::class) +internal expect suspend fun loadFont( + environment: ResourceEnvironment, + font: LottieFont, + resource: FontResource +) : Font \ No newline at end of file diff --git a/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt b/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt new file mode 100644 index 00000000..f22d0f51 --- /dev/null +++ b/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt @@ -0,0 +1,22 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.ui.text.font.Font +import io.github.alexzhirkevich.compottie.assets.LottieFont +import org.jetbrains.compose.resources.ExperimentalResourceApi +import org.jetbrains.compose.resources.FontResource +import org.jetbrains.compose.resources.ResourceEnvironment +import org.jetbrains.compose.resources.getFontResourceBytes + +@OptIn(ExperimentalResourceApi::class) +internal actual suspend fun loadFont( + environment: ResourceEnvironment, + font: LottieFont, + resource: FontResource +) : Font { + return androidx.compose.ui.text.platform.Font( + identity = "${font.family}_${font.weight.weight}_${font.style}", + data = getFontResourceBytes(environment, resource), + weight = font.weight, + style = font.style + ) +} \ No newline at end of file diff --git a/example/shared/build.gradle.kts b/example/shared/build.gradle.kts index d8ce4025..1e0d10ac 100644 --- a/example/shared/build.gradle.kts +++ b/example/shared/build.gradle.kts @@ -48,6 +48,7 @@ kotlin { implementation(project(":compottie")) implementation(project(":compottie-dot")) implementation(project(":compottie-network")) + implementation(project(":compottie-resources")) implementation(compose.ui) implementation(compose.runtime) implementation(compose.material3) diff --git a/settings.gradle.kts b/settings.gradle.kts index 093fb3e1..6b04d400 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,6 +21,7 @@ rootProject.name = "compottie" include(":compottie") include(":compottie-dot") include(":compottie-network") +include(":compottie-resources") include(":example:desktopApp") include(":example:webApp") include(":example:androidapp") From c5ba52297124b47b04805cdde728c98f0b057231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 20 Jun 2024 01:24:38 +0300 Subject: [PATCH 054/100] upd readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94c35850..354a9f7c 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ Ktor HTTP client can be overrided with `client` parameter. `request` is a lambda Caching strategy can be set with `cacheStrategy` parameter. By default animations are cached in the device temp directory. -The network module also brings the `NetworkAssetsManager` that have similar parameters and can be used to load image assets. This manager can't load fonts from the Internet, so if the animation have both URL images and fonts, you have to create combined assets manager with `LottieAssetsManager.combine` +The network module also brings the `NetworkAssetsManager` that have similar parameters and can be used to load image assets Complete usage example: From 5496b48521d47ea4fdcd5c8160c01a783378aca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 20 Jun 2024 01:25:36 +0300 Subject: [PATCH 055/100] bug fixes --- compottie-dot/build.gradle.kts | 1 - .../compottie/DotLottieAssetsManager.kt | 6 +- .../compottie/DotLottieCompositionSpec.kt | 39 ++++-- .../alexzhirkevich/compottie/ZipFiles.kt | 93 ++++++------- compottie-network/build.gradle.kts | 1 - .../src/androidMain/AndroidManifest.xml | 4 + .../compottie/NetworkAssetsManager.kt | 3 - .../compottie/UrlCompositionSpec.kt | 1 - compottie/build.gradle.kts | 3 - compottie/src/androidMain/AndroidManifest.xml | 12 ++ .../alexzhirkevich/compottie/L.android.kt | 51 +++++++ .../compottie/ExperimentalCompottieApi.kt | 4 +- .../compottie/LottieComposition.kt | 19 ++- .../compottie/assets/LottieAssetManager.kt | 19 --- .../compottie/assets/LottieFontManager.kt | 34 +++++ .../compottie/dynamic/DynamicComposition.kt | 16 +-- .../compottie/dynamic/DynamicShapeLayer.kt | 36 +++-- .../dynamic/_DynamicShapeLayerProvider.kt | 5 + .../internal/animation/AnimatedColor.kt | 17 ++- .../internal/animation/AnimatedNumber.kt | 1 + .../internal/animation/AnimatedVector2.kt | 5 +- .../internal/assets/CharacterData.kt | 25 ++++ .../internal/assets/CharacterPath.kt | 6 + .../compottie/internal/helpers/Bezier.kt | 3 +- .../internal/helpers/text/TextRange.kt | 4 +- .../compottie/internal/layers/BaseLayer.kt | 7 +- .../internal/layers/SolidColorLayer.kt | 19 ++- .../compottie/internal/layers/TextLayer.kt | 13 +- .../composeResources/files/test.json | 1 + .../composeResources/font/ComicNeue.ttf | Bin 0 -> 82012 bytes example/shared/src/commonMain/kotlin/App.kt | 127 ++++++++---------- 31 files changed, 361 insertions(+), 214 deletions(-) create mode 100644 compottie-network/src/androidMain/AndroidManifest.xml create mode 100644 compottie/src/androidMain/AndroidManifest.xml create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt create mode 100644 example/shared/src/commonMain/composeResources/font/ComicNeue.ttf diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts index e565ed0e..5a5dcc1b 100644 --- a/compottie-dot/build.gradle.kts +++ b/compottie-dot/build.gradle.kts @@ -8,7 +8,6 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) - alias(libs.plugins.dokka) alias(libs.plugins.serialization) id("maven-publish") id("signing") diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index a8932f54..0c5a5bc5 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -6,11 +6,14 @@ import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieFont +import okio.FileSystem import okio.IOException +import okio.Path import okio.Path.Companion.toPath internal class DotLottieAssetsManager( private val zipFileSystem: ZipFileSystem, + private val root : Path? = null ) : LottieAssetsManager by LottieAssetsManager.Empty { override suspend fun image(image: LottieImage): ImageRepresentable? { @@ -39,7 +42,8 @@ internal class DotLottieAssetsManager( .joinToString("/") return try { - zipFileSystem.read(fullPath.toPath()) + val r = this.root ?: "/".toPath() + zipFileSystem.read(r.resolve(fullPath.toPath(true))) } catch (t: IOException) { null } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 66cee4dd..af28a387 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable -import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import okio.Path.Companion.toPath @@ -58,20 +57,38 @@ private class DotLottieCompositionSpec( val zipSystem = ZipFileSystem(fileSystem, entries, path) - val manifest = DotLottieJson.decodeFromString( - zipSystem.read("manifest.json".toPath()).decodeToString() - ) + val manifestPath = entries.keys.firstOrNull { it.name == "manifest.json" } - val animation = manifest.animations.first() + return if (manifestPath != null) { - val anim = zipSystem.read("animations/${animation.id}.json".toPath()) - return LottieComposition.parse(anim.decodeToString()).apply { - speed = animation.speed - if (animation.loop) { - iterations = LottieConstants.IterateForever + val manifest = DotLottieJson.decodeFromString( + zipSystem.read(manifestPath).decodeToString() + ) + + val animation = manifest.animations.first() + + val anim = zipSystem.read("animations/${animation.id}.json".toPath()) + + LottieComposition.parse(anim.decodeToString()).apply { + speed = animation.speed + if (animation.loop) { + iterations = LottieConstants.IterateForever + } + prepare(DotLottieAssetsManager(zipSystem, manifestPath.parent)) + } + } else { + val animPath = entries.keys.first { it.name.endsWith(".json", true) } + val anim = zipSystem.read(animPath) + + LottieComposition.parse(anim.decodeToString()).apply { + prepare( + assetsManager = DotLottieAssetsManager( + zipFileSystem = zipSystem, + root = animPath.parent + ) + ) } - prepare(DotLottieAssetsManager(zipSystem)) } } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt index a9c70a03..3de215b8 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFiles.kt @@ -137,7 +137,8 @@ internal fun FileSystem.listZipEntries( } // Organize the entries into a tree. - return entries.associateBy { it.canonicalPath } +// return entries.associateBy { it.canonicalPath } + return buildIndex(entries) } } @@ -145,51 +146,51 @@ internal fun FileSystem.listZipEntries( * Returns a map containing all of [entries], plus parent entries required so that all entries * (other than the file system root `/`) have a parent. */ -//private fun buildIndex(entries: List): Map { -// val root = "/".toPath() -// val result = mutableMapOf( -// root to ZipEntry( -// canonicalPath = root, -// isDirectory = true, -// extraSize = extraSize, -// nameSize = nameSize -// ), -// ) -// -// // Iterate in sorted order so each path is preceded by its parent. -// for (entry in entries.sortedBy { it.canonicalPath }) { -// // Note that this may clobber an existing element in the map. For consistency with java.util.zip -// // and java.nio.file.FileSystem, this prefers the last-encountered element. -// val replaced = result.put(entry.canonicalPath, entry) -// if (replaced != null) continue -// -// // Make sure this parent directories exist all the way up to the file system root. -// var child = entry -// while (true) { -// val parentPath = child.canonicalPath.parent ?: break // child is '/'. -// var parentEntry = result[parentPath] -// -// // We've found a parent that already exists! Add the child; we're done. -// if (parentEntry != null) { -// parentEntry.children += child -// break -// } -// -// // A parent is missing! Synthesize one. -// parentEntry = ZipEntry( -// canonicalPath = parentPath, -// isDirectory = true, -// extraSize = extraSize, -// nameSize = nameSize, -// ) -// result[parentPath] = parentEntry -// parentEntry.children += child -// child = parentEntry -// } -// } -// -// return result -//} +private fun buildIndex(entries: List): Map { + val root = "/".toPath() + val result = mutableMapOf( + root to ZipEntry( + canonicalPath = root, + isDirectory = true, + extraSize = 0, + nameSize = 0 + ), + ) + + // Iterate in sorted order so each path is preceded by its parent. + for (entry in entries.sortedBy { it.canonicalPath }) { + // Note that this may clobber an existing element in the map. For consistency with java.util.zip + // and java.nio.file.FileSystem, this prefers the last-encountered element. + val replaced = result.put(entry.canonicalPath, entry) + if (replaced != null) continue + + // Make sure this parent directories exist all the way up to the file system root. + var child = entry + while (true) { + val parentPath = child.canonicalPath.parent ?: break // child is '/'. + var parentEntry = result[parentPath] + + // We've found a parent that already exists! Add the child; we're done. + if (parentEntry != null) { + parentEntry.children += child + break + } + + // A parent is missing! Synthesize one. + parentEntry = ZipEntry( + canonicalPath = parentPath, + isDirectory = true, + extraSize = 0, + nameSize = 0, + ) + result[parentPath] = parentEntry + parentEntry.children += child + child = parentEntry + } + } + + return result +} /** When this returns, [this] will be positioned at the start of the next entry. */ @Throws(IOException::class) diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index 378d4d78..353a82d8 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -8,7 +8,6 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) - alias(libs.plugins.dokka) alias(libs.plugins.serialization) id("kotlinx-atomicfu") id("maven-publish") diff --git a/compottie-network/src/androidMain/AndroidManifest.xml b/compottie-network/src/androidMain/AndroidManifest.xml new file mode 100644 index 00000000..a8800291 --- /dev/null +++ b/compottie-network/src/androidMain/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index 52cfaf60..ac0e5ad7 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -40,7 +40,6 @@ private class NetworkAssetsManagerImpl( val url = try { Url(path) } catch (t: URLParserException) { - L.logger.error("Failed to load lottie asset ${image.id} - incorrect url", t) return null } @@ -55,6 +54,4 @@ private class NetworkAssetsManagerImpl( null } } - - override suspend fun font(font: LottieFont): Font? = null } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index c4a3c417..79a17560 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -63,7 +63,6 @@ private class NetworkCompositionSpec( return delegate.load() } - val resp = request(this.client, Url(url)) if (!resp.status.isSuccess()) { diff --git a/compottie/build.gradle.kts b/compottie/build.gradle.kts index 89b11764..57607b64 100644 --- a/compottie/build.gradle.kts +++ b/compottie/build.gradle.kts @@ -8,7 +8,6 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) - alias(libs.plugins.dokka) alias(libs.plugins.serialization) id("maven-publish") id("signing") @@ -77,8 +76,6 @@ kotlin { val desktopMain by getting val wasmJsMain by getting - - val skikoMain by creating { dependsOn(commonMain.get()) desktopMain.dependsOn(this) diff --git a/compottie/src/androidMain/AndroidManifest.xml b/compottie/src/androidMain/AndroidManifest.xml new file mode 100644 index 00000000..55a6979c --- /dev/null +++ b/compottie/src/androidMain/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt new file mode 100644 index 00000000..494edf62 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt @@ -0,0 +1,51 @@ +package io.github.alexzhirkevich.compottie + +import android.annotation.SuppressLint +import android.app.Application +import android.content.ContentProvider +import android.content.ContentValues +import android.content.Context +import android.database.Cursor +import android.net.Uri +import io.github.alexzhirkevich.compottie.internal.LottieData +import io.github.alexzhirkevich.compottie.internal.LottieJson + +@InternalCompottieApi +var L.context : Context + get() = checkNotNull(AndroidContextProvider.ANDROID_CONTEXT) { + "Android context failed to initialize. Probably applicationId is not set in the build.gradle" + } + internal set(value) { + AndroidContextProvider.ANDROID_CONTEXT = value.applicationContext + } + + +//https://andretietz.com/2017/09/06/autoinitialise-android-library/ +internal class AndroidContextProvider : ContentProvider() { + companion object { + @SuppressLint("StaticFieldLeak") + var ANDROID_CONTEXT: Context? = null + } + + override fun onCreate(): Boolean { + ANDROID_CONTEXT = context?.applicationContext + return true + } + + override fun query( + uri: Uri, + projection: Array?, + selection: String?, + selectionArgs: Array?, + sortOrder: String? + ): Cursor? = null + override fun getType(uri: Uri): String? = null + override fun insert(uri: Uri, values: ContentValues?): Uri? = null + override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int = 0 + override fun update( + uri: Uri, + values: ContentValues?, + selection: String?, + selectionArgs: Array? + ): Int = 0 +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt index 2046d3e8..f9b99ee8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ExperimentalCompottieApi.kt @@ -1,5 +1,7 @@ package io.github.alexzhirkevich.compottie -@RequiresOptIn("This is experimental/temporary/unstable api", RequiresOptIn.Level.WARNING) +@RequiresOptIn( + "This is experimental API that may change in the future", + RequiresOptIn.Level.WARNING) @Retention(value = AnnotationRetention.BINARY) annotation class ExperimentalCompottieApi() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 77497088..edb0cc91 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -13,6 +13,7 @@ import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.assets.LottieFontManager import io.github.alexzhirkevich.compottie.dynamic.DynamicComposition import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.internal.LottieData @@ -100,14 +101,15 @@ class LottieComposition internal constructor( * successfully loaded at prev [prepare] call) will not be loaded again * */ suspend fun prepare( - assetsManager: LottieAssetsManager + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, + fontManager: LottieFontManager = LottieFontManager.Empty ) { coroutineScope { launch { loadAssets(assetsManager) } launch { - loadFonts(assetsManager) + loadFonts(fontManager) } } } @@ -139,7 +141,7 @@ class LottieComposition internal constructor( } - private suspend fun loadFonts(assetsManager: LottieAssetsManager) { + private suspend fun loadFonts(assetsManager: LottieFontManager) { fontMutex.withLock { coroutineScope { fontsByFamily = lottieData.fonts?.list @@ -156,18 +158,21 @@ class LottieComposition internal constructor( ) it.font = f + if (f == null) null - else it.family to f + else listOf(it.family to f, it.name to f) } } ?.awaitAll() ?.filterNotNull() + ?.flatten() ?.groupBy { it.first } ?.filterValues { it.isNotEmpty() } ?.mapValues { FontFamily(it.value.map { it.second }) } .orEmpty() } + println(fontsByFamily) } } @@ -229,6 +234,7 @@ fun rememberLottieComposition( fun rememberLottieComposition( vararg keys : Any?, assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, + fontManager: LottieFontManager = LottieFontManager.Empty, dynamic : DynamicComposition.() -> Unit = {}, spec : suspend () -> LottieCompositionSpec, ) : LottieCompositionResult { @@ -245,7 +251,10 @@ fun rememberLottieComposition( val composition = updatedSpec().load().apply { this.dynamic = DynamicCompositionProvider().apply(dynamic) } - composition.prepare(assetsManager) + composition.prepare( + assetsManager = assetsManager, + fontManager = fontManager + ) result.complete(composition) } catch (c: CancellationException) { result.completeExceptionally(c) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt index c7a7972e..e29c589f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetManager.kt @@ -23,19 +23,6 @@ interface LottieAssetsManager { * */ suspend fun image(image: LottieImage): ImageRepresentable? - /** - * Load font asset - * - * @param id unique asset id that is used for referring from animation layers - * @param path relative system path or web URL excluding file name. For example: - * - * - /path/to/images/ - * - https://example.com/images/ - * - * @param name asset name and extension (for example image.png) - * */ - suspend fun font(font: LottieFont): Font? - companion object { /** @@ -50,17 +37,11 @@ interface LottieAssetsManager { override suspend fun image(image: LottieImage): ImageRepresentable? { return managers.firstNotNullOfOrNull { it.image(image) } } - - override suspend fun font(font: LottieFont): Font? { - return managers.firstNotNullOfOrNull { it.font(font) } - } } val Empty = object : LottieAssetsManager { override suspend fun image(image: LottieImage): ImageRepresentable? = null - - override suspend fun font(font: LottieFont): Font? = null } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt new file mode 100644 index 00000000..b328f2ca --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt @@ -0,0 +1,34 @@ +package io.github.alexzhirkevich.compottie.assets + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.ExperimentalTextApi +import androidx.compose.ui.text.font.Font + +/** + * Used to fetch lottie assets that are not embedded to the animation JSON file + * */ +@Stable +interface LottieFontManager { + + /** + * Load font by [font] requirements + * + * @param id unique asset id that is used for referring from animation layers + * @param path relative system path or web URL excluding file name. For example: + * + * - /path/to/images/ + * - https://example.com/images/ + * + * @param name asset name and extension (for example image.png) + * */ + suspend fun font(font: LottieFont): Font? + + companion object { + + val Empty = object : LottieFontManager { + override suspend fun font(font: LottieFont): Font? = null + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt index 256fbb7c..61f07a14 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt @@ -26,7 +26,7 @@ sealed interface DynamicComposition { fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) /** - * Layer dynamic properties builder. + * Shape layer dynamic properties builder. * * Path is a chain of layers names up to the required layer. * All layers in the chain must have a name. @@ -50,22 +50,10 @@ sealed interface DynamicComposition { fun shapeLayer(vararg path: String, builder: DynamicShapeLayer.() -> Unit) /** - * Layer dynamic properties builder. + * Image layer dynamic properties builder. * * Path is a chain of layers names up to the required layer. * All layers in the chain must have a name. - * - * Example: - * - * ``` - * imageLayer("Image 1") { - * image { source -> - * DynamicImage( - * - * ) - * } - * } - * ``` * */ fun imageLayer(vararg path: String, builder: DynamicImageLayer.() -> Unit) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt index a2c1ed3d..d5df4480 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt @@ -2,12 +2,14 @@ package io.github.alexzhirkevich.compottie.dynamic interface DynamicShapeLayer: DynamicLayer { + /** + * Configure generic dynamic shape. + * */ fun shape( vararg path: String, builder: DynamicShape.() -> Unit ) - /** * Shortcut useful if you want to configure multiple shapes in the same group * @@ -20,7 +22,6 @@ interface DynamicShapeLayer: DynamicLayer { * } * ``` * Is alternative for - * * ``` * ellipse("Group 1", "Ellipse 4") { } * fill("Group 1", "Fill 1") { } @@ -30,15 +31,6 @@ interface DynamicShapeLayer: DynamicLayer { /** * Configure dynamic stroke. - * - * Example: - * - * ``` - * stroke("Group 1", "Stroke 2") { - * width { 5f } - * color { if (isDark) Color.White else Color.Black } - * } - * ``` * */ fun stroke( vararg path: String, @@ -47,27 +39,33 @@ interface DynamicShapeLayer: DynamicLayer { /** * Configure dynamic fill. - * - * Example: - * - * ``` - * fill("Group 1", "Stroke 2") { - * color { if (isDark) Color.White else Color.Black } - * } - * ``` * */ fun fill( vararg path: String, builder: DynamicFill.() -> Unit ) + /** + * Configure dynamic ellipse. + * */ fun ellipse( vararg path: String, builder: DynamicEllipse.() -> Unit ) + /** + * Configure dynamic rect. + * */ fun rect( vararg path: String, builder: DynamicRect.() -> Unit ) + + /** + * Configure dynamic rect. + * */ + fun polystar( + vararg path: String, + builder: DynamicPolystar.() -> Unit + ) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt index 7de649da..e983046f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt @@ -45,4 +45,9 @@ internal class DynamicShapeLayerProvider( shapes[path.joinToString(LayerPathSeparator)] = DynamicRectProvider().apply(builder) } + + override fun polystar(vararg path: String, builder: DynamicPolystar.() -> Unit) { + shapes[path.joinToString(LayerPathSeparator)] = + DynamicPolystarProvider().apply(builder) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index 99acec84..2a7eea29 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -61,12 +61,21 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { } internal fun FloatArray.toColor() = Color( - red = get(0), - green = get(1), - blue = get(2), - alpha = getOrNull(3) ?: 1f + red = get(0).toColorComponent(), + green = get(1).toColorComponent(), + blue = get(2).toColorComponent(), + alpha = getOrNull(3)?.toColorComponent() ?: 1f ) +private fun Float.toColorComponent() : Float = when (this) { + in COLOR_RANGE_01 -> this + in COLOR_RANGE_0255 -> this/255f + else -> this // will likely throw error of invalid color space +} + +private val COLOR_RANGE_01 = 0f..1f +private val COLOR_RANGE_0255 = 0f..255f + internal class AnimatedColorSerializer : JsonContentPolymorphicSerializer( baseClass = AnimatedColor::class diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt index 23cf14f0..b5f74817 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -17,6 +17,7 @@ import kotlinx.serialization.json.jsonObject internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { protected var dynamic: PropertyProvider? = null + private set fun dynamic(provider: PropertyProvider?) { dynamic = provider diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 77dd9a7b..9f080f9c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -36,6 +36,7 @@ internal fun Vec2(x : Float, y : Float) : Vec2 = Offset(x,y) internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { protected var dynamic: PropertyProvider? = null + private set fun dynamic(provider: PropertyProvider?) { dynamic = provider @@ -170,9 +171,7 @@ internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer { - val k = requireNotNull(element.jsonObject["k"]) { - "Animation vector must have 'k' property" - } + val k = element.jsonObject["k"] return when { element.jsonObject["s"]?.jsonPrimitive?.booleanOrNull == true -> diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt new file mode 100644 index 00000000..4de9aedc --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt @@ -0,0 +1,25 @@ +package io.github.alexzhirkevich.compottie.internal.assets + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +internal class CharacterData( + + @SerialName("ch") + val character : String, + + @SerialName("fFamily") + val fontFamily : String, + + @SerialName("size") + val fontSize : Float = 10f, + + @SerialName("style") + val fontStyle : String? = null, + + @SerialName("width") + val width : Float? = null, + + val data: CharacterData +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt new file mode 100644 index 00000000..a93e3885 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt @@ -0,0 +1,6 @@ +package io.github.alexzhirkevich.compottie.internal.assets + +internal sealed interface CharacterPath { + + class CharacterShape +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt index bf4f755f..b535b1e1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt @@ -30,10 +30,11 @@ internal class Bezier( @Transient var curves: MutableList = ArrayList(vertices.size) + private set @Transient var initialPoint: Offset = Offset.Zero - + private set init { require(vertices.size == inTangents.size && vertices.size == outTangents.size){ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt index b2058843..221c313b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt @@ -9,8 +9,8 @@ internal class TextRange( @SerialName("nm") val name : String? = null, - @SerialName("s") - val selector: TextRangeSelector? = null, +// @SerialName("s") +// val selector: TextRangeSelector? = null, @SerialName("a") val style : TextStyle? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 58d3aef6..34ede169 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -147,6 +147,7 @@ internal abstract class BaseLayer() : Layer { return } + getBounds(drawScope, matrix, false, state, rect) intersectBoundsWithMatte(drawScope, rect, matrix, state) @@ -157,7 +158,7 @@ internal abstract class BaseLayer() : Layer { // Intersect the mask and matte rect with the canvas bounds. // If the canvas has a transform, then we need to transform its bounds by its matrix // so that we know the coordinate space that the canvas is showing. - canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) +// canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) drawScope.drawIntoCanvas { canvas -> // canvas.getMatrix(canvasMatrix) @@ -166,7 +167,8 @@ internal abstract class BaseLayer() : Layer { // canvasMatrix.map(canvasBounds) // } - rect.intersectOrReset(canvasBounds) + +// rect.intersectOrReset(canvasBounds) // Ensure that what we are drawing is >=1px of width and height. // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. @@ -179,6 +181,7 @@ internal abstract class BaseLayer() : Layer { clearCanvas(canvas) drawLayer(drawScope, matrix, alpha, state) + if (hasMask()) { applyMasks(canvas, matrix, state) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index fc62c558..95abb3c8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -1,12 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.layers +import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -16,6 +16,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode +import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -91,6 +92,9 @@ internal class SolidColorLayer( override var effects: List = emptyList() ) : BaseLayer() { + @Transient + private val rect = MutableRect(0f, 0f, 0f, 0f) + private val color: Color by lazy { val hex = colorHex.substringAfter("#") @@ -144,4 +148,17 @@ internal class SolidColorLayer( drawScope.drawContext.canvas.drawPath(path, paint) } + + override fun getBounds( + drawScope: DrawScope, + parentMatrix: Matrix, + applyParents: Boolean, + state: AnimationState, + outBounds: MutableRect + ) { + super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) + rect.set(0f, 0f, width, height) + boundsMatrix.map(rect) + outBounds.set(rect) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 98ae4f79..29618255 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.graphics.drawscope.DrawStyle import androidx.compose.ui.graphics.drawscope.Fill import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextMeasurer import androidx.compose.ui.text.TextStyle @@ -428,17 +429,15 @@ internal class TextLayer( ): Boolean { val position = document.wrapPosition?.toOffset() val size = document.wrapSize?.let { Size(it[0], it[1]) } - val lineStartY = if (position == null) { - 0f - } else { - document.lineHeight * density.density + position.y - } - density.run { textStyle.lineHeight.toPx() } + val lineStartY = if (position == null) + 0f else document.lineHeight + position.y - val lineOffset: Float = (lineIndex * document.lineHeight * density.density) + lineStartY + val lineOffset: Float = ((lineIndex-1) * document.lineHeight) + lineStartY val clip = painterProperties?.clipTextToBoundingBoxes == true - if (clip && size != null && position != null && lineOffset >= position.y + size.height + document.fontSize) { + if (clip && size != null && position != null && + lineOffset >= position.y + size.height + document.fontSize) { return false } diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index e69de29b..e6050a2f 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -0,0 +1 @@ +{"v": "5.9.0", "fr": 24, "ip": 0, "op": 192, "w": 375, "h": 640, "nm": "003_02", "ddd": 0, "assets": [{"id": "comp_0", "nm": "Fillpping coin_01", "fr": 24, "layers": [{"ddd": 0, "ind": 1, "ty": 4, "nm": "Shape Layer 16", "td": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [197.246, 320, 0], "to": [-1.708, 0, 0], "ti": [1.708, 0, 0]}, {"t": 49, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 2, "ty": 4, "nm": "Shape Layer 14", "tt": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.155, "y": 1}, "o": {"x": 0.84, "y": 0}, "t": 46, "s": [146.262, 246.355, 0], "to": [13.875, 24.583, 0], "ti": [-13.875, -24.583, 0]}, {"t": 58, "s": [229.512, 393.855, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-16.488, -41.145, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[81.726, -15.73], [81.774, 35.98], [-81.652, 123.48], [-81.701, 71.77]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-16.524, -95.02], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 46, "op": 58, "st": 46, "bm": 0}, {"ddd": 0, "ind": 4, "ty": 4, "nm": "Shape Layer 11", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [194.582, 319.805, 0], "to": [-1.264, 0, 0], "ti": [1.264, 0, 0]}, {"t": 49, "s": [187, 319.805, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.028, 72.804, 100]}, {"t": 49, "s": [73.617, 72.804, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 2, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 42, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 5, "ty": 4, "nm": "Shape Layer 3", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [197.246, 320, 0], "to": [-1.708, 0, 0], "ti": [1.708, 0, 0]}, {"t": 49, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 6, "ty": 4, "nm": "Shape Layer 7", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.667, "y": 1}, "o": {"x": 0.333, "y": 0}, "t": 43, "s": [182.301, 320, 0], "to": [-0.886, 0, 0], "ti": [1.339, 0, 0]}, {"t": 46, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": 35, "bm": 0}, {"ddd": 0, "ind": 7, "ty": 4, "nm": "Shape Layer 17", "td": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 320, 0], "to": [-0.701, 0, 0], "ti": [0.701, 0, 0]}, {"t": 35, "s": [182.796, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 8, "ty": 4, "nm": "Shape Layer 12", "tt": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.155, "y": 1}, "o": {"x": 0.84, "y": 0}, "t": 21, "s": [146.262, 246.355, 0], "to": [13.875, 24.583, 0], "ti": [-13.875, -24.583, 0]}, {"t": 31, "s": [229.512, 393.855, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-16.488, -41.145, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[81.726, -15.73], [81.774, 35.98], [-81.652, 123.48], [-81.701, 71.77]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-16.524, -95.02], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 31, "st": 19, "bm": 0}, {"ddd": 0, "ind": 9, "ty": 4, "nm": "Shape Layer 10", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 319.805, 0], "to": [-0.519, 0, 0], "ti": [0.519, 0, 0]}, {"t": 35, "s": [183.889, 319.805, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [73.617, 72.804, 100]}, {"t": 35, "s": [0.028, 72.804, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 2, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 29, "st": 19, "bm": 0}, {"ddd": 0, "ind": 10, "ty": 4, "nm": "Shape Layer 6", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 320, 0], "to": [-0.701, 0, 0], "ti": [0.701, 0, 0]}, {"t": 35, "s": [182.796, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 11, "ty": 4, "nm": "Shape Layer 1", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.667, "y": 1}, "o": {"x": 0.333, "y": 0}, "t": 23, "s": [187, 320, 0], "to": [0.718, 0, 0], "ti": [0.819, 0, 0]}, {"t": 26, "s": [194.727, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 12, "ty": 4, "nm": "Shape Layer 9", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.5, 320, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [0, 0, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 102.19, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 1, "k": [{"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 27, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.763, -59.32], [4.692, 57.946], [-4.5, 57.946], [-4.429, -59.32]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 28, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.096, -59.32], [4.025, 57.946], [-6.5, 58.004], [-6.429, -59.262]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 29, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.929, -59.273], [4.859, 57.993], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 30, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 31, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 33, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 35, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.278], [8.359, 57.988], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 36, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-5.875, 58.074], [-5.804, -59.192]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 37, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-5.875, 58.074], [-5.804, -59.192]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 38, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 39, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.054, -59.32], [7.984, 57.946], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 40, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[7.929, -59.254], [7.859, 58.012], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 41, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[7.054, -59.222], [6.984, 58.044], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 42, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[6.554, -59.281], [6.484, 57.985], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 43, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.179, -59.276], [5.109, 57.99], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"t": 44, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[2.179, -59.267], [2.109, 57.999], [-7.875, 57.989], [-7.804, -59.277]], "c": true}]}], "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [1.358, 0.548], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 27, "op": 45, "st": 19, "bm": 0}]}], "fonts": {"list": [{"fFamily": "Roboto", "fWeight": "", "fStyle": "Bold", "fName": "Roboto-Bold", "ascent": 75}]}, "layers": [{"ddd": 0, "ind": 1, "ty": 3, "nm": "Null 33", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187, 338.308, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.177, 0.177, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.978, 0.978, 0.333], "y": [0, 0, 0]}, "t": 181, "s": [87, 87, 100]}, {"t": 192, "s": [69, 69, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 2, "ty": 4, "nm": "Star 01 Outlines 6", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 73, "s": [0]}, {"t": 86, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [301.861, 447.036, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 73, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 81, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.266, 0.266, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.85, 0.85, 0.333], "y": [0, 0, 0]}, "t": 96, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.204, 0.204, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.817, 0.817, 0.333], "y": [0, 0, 0]}, "t": 103, "s": [76.55, 76.55, 100]}, {"t": 111, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 73, "op": 112, "st": 60, "bm": 0}, {"ddd": 0, "ind": 3, "ty": 4, "nm": "Star 01 Outlines 5", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 17, "s": [0]}, {"t": 30, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [138.822, 379.597, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 17, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 25, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 40, "s": [56.55, 56.55, 100]}, {"t": 48, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 17, "op": 52, "st": 0, "bm": 0}, {"ddd": 0, "ind": 4, "ty": 4, "nm": "Star 01 Outlines 8", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 124, "s": [0]}, {"t": 137, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [226.029, 193.863, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 124, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 132, "s": [68.515, 68.515, 100]}, {"i": {"x": [0, 0, 0.667], "y": [1.017, 1.017, 1]}, "o": {"x": [0.679, 0.679, 0.333], "y": [-0.011, -0.011, 0]}, "t": 145, "s": [68.515, 68.515, 100]}, {"i": {"x": [0.08, 0.08, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.705, 0.705, 0.333], "y": [0, 0, 0]}, "t": 151, "s": [75.035, 75.035, 100]}, {"t": 162, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 124, "op": 163, "st": 107, "bm": 0}, {"ddd": 0, "ind": 5, "ty": 4, "nm": "Star 01 Outlines 4", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 9, "s": [0]}, {"t": 22, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [233.537, 264.983, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 9, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 17, "s": [68.515, 68.515, 100]}, {"i": {"x": [0, 0, 0.667], "y": [1.017, 1.017, 1]}, "o": {"x": [0.679, 0.679, 0.333], "y": [-0.011, -0.011, 0]}, "t": 30, "s": [68.515, 68.515, 100]}, {"i": {"x": [0.08, 0.08, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.705, 0.705, 0.333], "y": [0, 0, 0]}, "t": 36, "s": [75.035, 75.035, 100]}, {"t": 47, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 9, "op": 48, "st": -8, "bm": 0}, {"ddd": 0, "ind": 6, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [141.281, -28.624, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 161, "bm": 0}, {"ddd": 0, "ind": 7, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [171.947, 52.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 158, "bm": 0}, {"ddd": 0, "ind": 8, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [141.281, 133.043, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 155, "bm": 0}, {"ddd": 0, "ind": 9, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, 175.403, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 152, "bm": 0}, {"ddd": 0, "ind": 10, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-41.386, 133.043, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 149, "bm": 0}, {"ddd": 0, "ind": 11, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-70.719, 52.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 146, "bm": 0}, {"ddd": 0, "ind": 12, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-41.386, -28.624, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 143, "bm": 0}, {"ddd": 0, "ind": 13, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, -67.891, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 140, "bm": 0}, {"ddd": 0, "ind": 14, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [266.414, 269.906, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 111, "bm": 0}, {"ddd": 0, "ind": 15, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [293.094, 340.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 108, "bm": 0}, {"ddd": 0, "ind": 16, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [266.414, 410.556, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 105, "bm": 0}, {"ddd": 0, "ind": 17, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.261, 447.409, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 102, "bm": 0}, {"ddd": 0, "ind": 18, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [107.494, 410.556, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 99, "bm": 0}, {"ddd": 0, "ind": 19, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [81.974, 340.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 96, "bm": 0}, {"ddd": 0, "ind": 20, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [107.494, 269.906, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 93, "bm": 0}, {"ddd": 0, "ind": 21, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.261, 235.743, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 90, "bm": 0}, {"ddd": 0, "ind": 22, "ty": 3, "nm": "Null 33", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187, 338.308, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.177, 0.177, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.978, 0.978, 0.333], "y": [0, 0, 0]}, "t": 205, "s": [87, 87, 100]}, {"t": 216, "s": [69, 69, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 23, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 58, "s": [0]}, {"t": 59, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 52, "s": [50.188, 51.856, 0], "to": [15.182, -13.413, 0], "ti": [-15.182, 13.413, 0]}, {"t": 70, "s": [141.281, -28.624, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 48, "op": 115, "st": 41, "bm": 0}, {"ddd": 0, "ind": 24, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 56, "s": [0]}, {"t": 57, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 50, "s": [50.188, 51.856, 0], "to": [20.293, 0.087, 0], "ti": [-20.293, -0.087, 0]}, {"t": 68, "s": [171.947, 52.376, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 46, "op": 115, "st": 39, "bm": 0}, {"ddd": 0, "ind": 25, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 54, "s": [0]}, {"t": 55, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 48, "s": [50.188, 51.856, 0], "to": [15.182, 13.531, 0], "ti": [-15.182, -13.531, 0]}, {"t": 66, "s": [141.281, 133.043, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 44, "op": 115, "st": 37, "bm": 0}, {"ddd": 0, "ind": 26, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 52, "s": [0]}, {"t": 53, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 46, "s": [50.188, 51.856, 0], "to": [0.019, 20.591, 0], "ti": [-0.019, -20.591, 0]}, {"t": 64, "s": [50.3, 175.403, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 42, "op": 115, "st": 35, "bm": 0}, {"ddd": 0, "ind": 27, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 50, "s": [0]}, {"t": 51, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 44, "s": [50.188, 51.856, 0], "to": [-15.262, 13.531, 0], "ti": [15.262, -13.531, 0]}, {"t": 62, "s": [-41.386, 133.043, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 40, "op": 115, "st": 33, "bm": 0}, {"ddd": 0, "ind": 28, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 48, "s": [0]}, {"t": 49, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 42, "s": [50.188, 51.856, 0], "to": [-20.151, 0.087, 0], "ti": [20.151, -0.087, 0]}, {"t": 60, "s": [-70.719, 52.376, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 38, "op": 115, "st": 31, "bm": 0}, {"ddd": 0, "ind": 29, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 46, "s": [0]}, {"t": 47, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 40, "s": [50.188, 51.856, 0], "to": [-15.262, -13.413, 0], "ti": [15.262, 13.413, 0]}, {"t": 58, "s": [-41.386, -28.624, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 36, "op": 115, "st": 29, "bm": 0}, {"ddd": 0, "ind": 30, "ty": 3, "nm": "Null 32", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 38, "s": [187, 322.38, 0], "to": [0, -14.44, 0], "ti": [0, 14.44, 0]}, {"t": 56, "s": [187, 235.743, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0, 0, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.866, 0.866, 0.333], "y": [0, 0, 0]}, "t": 38, "s": [87, 87, 100]}, {"t": 56, "s": [52.2, 52.2, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 72, "st": 0, "bm": 0}, {"ddd": 0, "ind": 31, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, -67.891, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 65, "op": 115, "st": 44, "bm": 0}, {"ddd": 0, "ind": 32, "ty": 0, "nm": "Fillpping coin_01", "parent": 30, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.044], "y": [1]}, "o": {"x": [0.844], "y": [0]}, "t": 0, "s": [0]}, {"t": 18, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.044, "y": 1}, "o": {"x": 0.844, "y": 0}, "t": 0, "s": [50.5, 141.435, 0], "to": [0, -16.551, 0], "ti": [0, 0, 0]}, {"i": {"x": 0.044, "y": 1}, "o": {"x": 0.812, "y": 0}, "t": 18, "s": [50.5, 42.132, 0], "to": [0, 0, 0], "ti": [0, -1.311, 0]}, {"t": 29, "s": [50.5, 50, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.044, 0.044, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.844, 0.844, 0.333], "y": [0, 0, 0]}, "t": 0, "s": [50, 50, 100]}, {"t": 18, "s": [100, 100, 100]}], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 0, "op": 65, "st": 0, "bm": 0}, {"ddd": 0, "ind": 33, "ty": 3, "nm": "Null 26", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.131, "y": 1}, "o": {"x": 0.881, "y": 0}, "t": 0, "s": [91.4, 134.33, 0], "to": [0, -8.418, 0], "ti": [0, 8.418, 0]}, {"i": {"x": 0.169, "y": 0.169}, "o": {"x": 0.167, "y": 0.167}, "t": 18, "s": [91.4, 83.825, 0], "to": [0, 0, 0], "ti": [0, 0, 0]}, {"i": {"x": 0.164, "y": 1}, "o": {"x": 0.899, "y": 0}, "t": 181, "s": [91.4, 83.825, 0], "to": [0, 0, 0], "ti": [0, 0, 0]}, {"t": 192, "s": [91.4, 66.163, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 35, "ty": 5, "nm": "Headline 01", "parent": 33, "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 4, "s": [0]}, {"i": {"x": [0.833], "y": [1]}, "o": {"x": [0.167], "y": [0]}, "t": 10, "s": [100]}, {"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [37.453, 15.434, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-2.814, 61.325, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "t": {"d": {"k": [{"s": {"sz": [289.833343505859, 102.166656494141], "ps": [-41.6666717529297, 54.1666717529297], "s": 27, "f": "Roboto-Bold", "t": "£100 put away each month, from the year 2000 until now.", "ca": 0, "j": 0, "tr": -10, "lh": 32.4000015258789, "ls": 0, "fc": [0.765, 1, 0.204]}, "t": 0}]}, "p": {}, "m": {"g": 1, "a": {"a": 0, "k": [0, 0], "ix": 2}}, "a": []}, "ip": 0, "op": 192, "st": 27, "bm": 0}], "markers": []} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/font/ComicNeue.ttf b/example/shared/src/commonMain/composeResources/font/ComicNeue.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ab3a41764d7081c99c93791cc0a6c833d076d7d9 GIT binary patch literal 82012 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 Wde$0Gw}!KkfWr7yKiqjYWB(6gmLJ#v literal 0 HcmV?d00001 diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index f795541e..5b2a03f6 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -10,6 +10,8 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.GenericShape import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator import androidx.compose.runtime.Composable @@ -17,7 +19,6 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment @@ -28,26 +29,24 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import compottie.example.shared.generated.resources.ComicNeue import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.CompottieException +import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants -import io.github.alexzhirkevich.compottie.NetworkAssetsManager -import io.github.alexzhirkevich.compottie.assets.ImageRepresentable -import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.LottieImage -import io.github.alexzhirkevich.compottie.internal.platform.fromBytes +import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter +import io.github.alexzhirkevich.compottie.rememberResourcesAssetsManager +import io.github.alexzhirkevich.compottie.rememberResourcesFontManager import kotlinx.coroutines.delay import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import org.jetbrains.compose.resources.ExperimentalResourceApi -import org.jetbrains.compose.resources.MissingResourceException private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -78,16 +77,32 @@ private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" private val DOT = "dotlottie/dot.lottie" private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" + +/** + * [LottieComposition] spec from composeResources/[dir]/[path] json asset + * */ @OptIn(ExperimentalResourceApi::class) +@Stable +suspend fun LottieCompositionSpec.Companion.Resource( + path : String, + dir : String = "files", + readBytes: suspend (path: String) -> ByteArray = { Res.readBytes(it) } +) : LottieCompositionSpec = JsonString(readBytes("$dir/$path").decodeToString()) + + +@OptIn(ExperimentalResourceApi::class, ExperimentalCompottieApi::class) @Composable fun App() { // return LottieFontExample() +// return LottieList() val composition = rememberLottieComposition( - assetsManager = remember { -// ResourcesAssetsManager() - NetworkAssetsManager() + assetsManager = rememberResourcesAssetsManager( + readBytes = Res::readBytes + ), + fontManager = rememberResourcesFontManager { + Res.font.ComicNeue }, dynamic = { } @@ -95,17 +110,16 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(ROBOT) - + LottieCompositionSpec.Resource(ROBOT_404) +// // LottieCompositionSpec.Url( -// url = "https://assets-v2.lottiefiles.com/a/e25360fe-1150-11ee-9d43-2f8655b815bb/xSk6HtgPaN.lottie", +// "https://dotlottie.io/sample_files/animation-external-image.lottie", +// "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", +// "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/anim_jpg.zip", +// "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/ZipInlineImage.zip", // ) } - LottieAssetsManager.combine( - - ) - // If you want to be aware of loading errors LaunchedEffect(composition) { try { @@ -120,15 +134,19 @@ fun App() { contentAlignment = Alignment.Center ) { + val progress by animateLottieCompositionAsState( +// clipSpec = LottieClipSpec.Frame(165, 235,true), + iterations = LottieConstants.IterateForever, + composition = composition.value + ) val painter = rememberLottiePainter( composition = composition.value, - iterations = LottieConstants.IterateForever, - clipToCompositionBounds = false + progress = { progress }, ) Image( modifier = Modifier .fillMaxSize() -// .opacityGrid(), + .opacityGrid() ,painter = painter, contentDescription = null ) @@ -149,7 +167,6 @@ fun LottieFontExample() { mutableStateOf("") } - val add1 = "COMPOTTIE NOW HAS IT'S OWN COMPOSE MULTIPLATFORM LOTTIE RENDERING ENGINE" LaunchedEffect(0) { @@ -263,59 +280,31 @@ fun LottieFontExample() { } } -/** - * [LottieComposition] spec from composeResources/[dir]/[path] json asset - * */ -@OptIn(ExperimentalResourceApi::class) -@Stable -suspend fun LottieCompositionSpec.Companion.Resource( - path : String, - dir : String = "files", - readBytes: suspend (path: String) -> ByteArray = { Res.readBytes(it) } -) : LottieCompositionSpec = JsonString(readBytes("$dir/$path").decodeToString()) - -/** - * Compose resources asset manager. - * - * Assess are stored in the _**composeResources/[relativeTo]**_ directory. - * - * Handles the following possible cases: - * - path="/images/", name="image.png" - * - path="images/", name="image.png" - * - path="", name="/images/image.png" - * - path="", name="images/image.png" - * */ -@OptIn(ExperimentalResourceApi::class) -private class ResourcesAssetsManager( - private val relativeTo : String = "files", - private val readBytes : suspend (path : String) -> ByteArray = Res::readBytes, -) : LottieAssetsManager by LottieAssetsManager.Empty { - override suspend fun image(image: LottieImage): ImageRepresentable? { - return try { - val trimPath = image.path - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) - - val trimName = image.name - .removePrefix("/") - .removeSuffix("/") - .takeIf(String::isNotEmpty) +@Composable +fun LottieList() { + LazyColumn { + items(100){ + val composition by rememberLottieComposition { +// LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Url( + url = "https://dotlottie.io/sample_files/animation-external-image.lottie", + ) + } - val fullPath = listOfNotNull( - relativeTo.takeIf(String::isNotEmpty), - trimPath, - trimName - ).joinToString("/") + val painter = rememberLottiePainter( + composition, + iterations = LottieConstants.IterateForever + ) - ImageRepresentable.Bytes(readBytes(fullPath)) - } catch (x: MissingResourceException) { - null + Image( + modifier = Modifier.height(200.dp), + painter = painter, + contentDescription = "" + ) } } } - private val DarkOpacity = Color(0xff7f7f7f) private val LightOpacity = Color(0xffb2b2b2) private fun Modifier.opacityGrid(cellSize : Dp = 30.dp) = drawBehind { From ef432d6bd4ace28e67f129744640d0c23a9ae376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Thu, 20 Jun 2024 01:50:14 +0300 Subject: [PATCH 056/100] fix merge path --- .../compottie/internal/shapes/MergePathsShape.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index b2604033..53ab01d8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -76,12 +76,13 @@ internal class MergePathsShape( val hidden = dynamicShape?.hidden.derive(hidden, state) - if (hidden || mode == MergeMode.Add){ + if (hidden || mode == MergeMode.Normal){ pathContents.fastForEach { path.addPath(it.getPath(state)) } } else { when (mode) { + MergeMode.Add -> opFirstPathWithRest(PathOperation.Union, state) MergeMode.Subtract -> opFirstPathWithRest(PathOperation.Difference, state) MergeMode.Intersect -> opFirstPathWithRest(PathOperation.Intersect, state) MergeMode.ExcludeIntersections -> opFirstPathWithRest(PathOperation.Xor, state) From b0a186641a4c9c2e456ecf9f15521ef0d11b67a8 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Thu, 20 Jun 2024 13:06:21 +0300 Subject: [PATCH 057/100] text as glyphs --- .../compottie/DotLottieAssetsManager.kt | 4 - .../compottie/DiskCacheStrategy.kt | 33 ++-- .../compottie/LottieCacheStrategy.kt | 2 +- .../compottie/NetworkAssetsManager.kt | 17 +- .../compottie/UrlCompositionSpec.kt | 47 +++--- .../compottie/ResourcesFontManager.android.kt | 13 +- .../compottie/ResourcesFontManager.kt | 19 ++- .../compottie/ResourcesFontManager.skiko.kt | 5 +- compottie/src/androidMain/AndroidManifest.xml | 12 -- .../alexzhirkevich/compottie/L.android.kt | 51 ------ .../io/github/alexzhirkevich/compottie/L.kt | 7 +- .../compottie/LottieComposition.kt | 33 ++-- .../alexzhirkevich/compottie/LottiePainter.kt | 57 +++---- .../compottie/assets/LottieAssetsCache.kt | 8 - .../compottie/assets/LottieFontManager.kt | 7 +- .../{LottieFont.kt => LottieFontSpec.kt} | 3 +- .../internal/{LottieData.kt => Animation.kt} | 6 +- .../compottie/internal/AnimationState.kt | 5 +- .../internal/assets/CharacterData.kt | 3 +- .../internal/assets/CharacterPath.kt | 113 ++++++++++++- .../internal/layers/BaseCompositionLayer.kt | 6 - .../internal/layers/CompositionLayer.kt | 10 +- .../internal/layers/PrecompositionLayer.kt | 4 +- .../compottie/internal/layers/TextLayer.kt | 157 ++++++++++++++---- example/shared/src/commonMain/kotlin/App.kt | 10 +- 25 files changed, 385 insertions(+), 247 deletions(-) delete mode 100644 compottie/src/androidMain/AndroidManifest.xml delete mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/{LottieFont.kt => LottieFontSpec.kt} (74%) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/{LottieData.kt => Animation.kt} (86%) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index 0c5a5bc5..0b57ccd0 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -1,12 +1,8 @@ package io.github.alexzhirkevich.compottie -import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.LottieFont -import okio.FileSystem import okio.IOException import okio.Path import okio.Path.Companion.toPath diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt index ec6aeaa2..147c3f40 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable import okio.Buffer -import okio.FileSystem import okio.use @Stable @@ -10,33 +9,27 @@ class DiskCacheStrategy( private val diskCache: DiskCache = SharedDiskCache ) : LottieCacheStrategy { - override suspend fun save(url: String, byteArray: ByteArray) { + override suspend fun save(url: String, bytes: ByteArray) { + val editor = diskCache.openEditor(key(url)) ?: return try { - val editor = diskCache.openEditor(key(url)) ?: return - try { - diskCache.fileSystem.write(editor.data) { - write(byteArray) - } - } finally { - editor.commit() + diskCache.fileSystem.write(editor.data) { + write(bytes) } - } catch (_: Throwable) { + editor.commit() + } catch (t: Throwable) { + editor.abort() } } override suspend fun load(url: String): ByteArray? { - try { - val snapshot = diskCache.openSnapshot(key(url)) ?: return null - - snapshot.use { - val bytes = diskCache.fileSystem.read(it.data) { - readByteArray() - } + val snapshot = diskCache.openSnapshot(key(url)) ?: return null - return bytes + snapshot.use { + val bytes = diskCache.fileSystem.read(it.data) { + readByteArray() } - } catch (t: Throwable) { - return null + + return bytes } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt index 1ca5792d..0bbabd93 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt @@ -7,7 +7,7 @@ interface LottieCacheStrategy { suspend fun save( url: String, - byteArray: ByteArray + bytes: ByteArray ) suspend fun load( diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index ac0e5ad7..c430834b 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -1,10 +1,8 @@ package io.github.alexzhirkevich.compottie -import androidx.compose.ui.text.font.Font import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.LottieFont import io.ktor.client.HttpClient import io.ktor.client.statement.bodyAsChannel import io.ktor.http.URLParserException @@ -43,12 +41,19 @@ private class NetworkAssetsManagerImpl( return null } - cacheStrategy.load(path)?.let { - return ImageRepresentable.Bytes(it) - } + try { + cacheStrategy.load(path)?.let { + return ImageRepresentable.Bytes(it) + } + } catch (_: Throwable) { } val bytes = request(client, url).bodyAsChannel().toByteArray() - cacheStrategy.save(path, bytes) + + try { + cacheStrategy.save(path, bytes) + } catch (e: Throwable) { + L.logger.error("NetworkAssetsManager failed to cache downloaded asset", e) + } ImageRepresentable.Bytes(bytes) } catch (t: Throwable) { null diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 79a17560..d50e1641 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -10,7 +10,6 @@ import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.NetworkAssetsManager import io.github.alexzhirkevich.compottie.NetworkRequest -import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.ktor.client.HttpClient import io.ktor.client.plugins.ClientRequestException import io.ktor.client.statement.bodyAsChannel @@ -53,14 +52,11 @@ private class NetworkCompositionSpec( override suspend fun load(): LottieComposition { - cacheStrategy.load(url)?.let { - val delegate = if (byteArrayOf(it[0]).decodeToString() == "{") { - LottieCompositionSpec.JsonString(it.decodeToString()) - } else { - LottieCompositionSpec.DotLottie(it) + try { + cacheStrategy.load(url)?.let { + return it.decodeLottieComposition(format) } - - return delegate.load() + } catch (_: Throwable) { } val resp = request(this.client, Url(url)) @@ -69,31 +65,19 @@ private class NetworkCompositionSpec( throw ClientRequestException(resp, resp.bodyAsText()) } - val contentType = resp.headers[HttpHeaders.ContentType]?.lowercase() - - val isJson = format == LottieAnimationFormat.Json || - contentType == null || - contentType == "application/json" || - contentType.startsWith("text") - val bytes = resp.bodyAsChannel().toByteArray() - val delegate = if (isJson) { - LottieCompositionSpec.JsonString(bytes.decodeToString()) - } else { - LottieCompositionSpec.DotLottie(bytes) - } - - val composition = delegate.load() + val composition = bytes.decodeLottieComposition(format) try { cacheStrategy.save(url, bytes) } catch (t: Throwable) { - L.logger.error("Lottie disk cache strategy error", t) + L.logger.error("Url composition spec failed to cache downloaded animation", t) } return composition } + override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null || this::class != other::class) return false @@ -117,4 +101,21 @@ private class NetworkCompositionSpec( result = 31 * result + request.hashCode() return result } +} + + +private suspend fun ByteArray.decodeLottieComposition( + format: LottieAnimationFormat +) : LottieComposition { + return when (format) { + LottieAnimationFormat.Json -> LottieCompositionSpec.JsonString(decodeToString()).load() + LottieAnimationFormat.DotLottie -> LottieCompositionSpec.DotLottie(this).load() + LottieAnimationFormat.Undefined -> { + try { + decodeLottieComposition(LottieAnimationFormat.Json) + } catch (t: Throwable) { + decodeLottieComposition(LottieAnimationFormat.DotLottie) + } + } + } } \ No newline at end of file diff --git a/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt b/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt index 72ecef32..3b85c514 100644 --- a/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt +++ b/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt @@ -2,24 +2,21 @@ package io.github.alexzhirkevich.compottie -import androidx.compose.runtime.remember -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.Font -import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.InternalResourceApi -import org.jetbrains.compose.resources.LocalComposeEnvironment import org.jetbrains.compose.resources.ResourceEnvironment -import org.jetbrains.compose.resources.getFontResourceBytes import org.jetbrains.compose.resources.getResourceItemByEnvironment -@OptIn(ExperimentalResourceApi::class, InternalCompottieApi::class, InternalResourceApi::class) +@OptIn(ExperimentalResourceApi::class, InternalResourceApi::class) internal actual suspend fun loadFont( + context : LottieContext, environment: ResourceEnvironment, - font: LottieFont, + font: LottieFontSpec, resource: FontResource ) : Font { val path = resource.getResourceItemByEnvironment(environment).path - return Font(path, L.context.assets, font.weight, font.style) + return Font(path, context.assets, font.weight, font.style) } \ No newline at end of file diff --git a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt index 466d452f..258225c7 100644 --- a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt +++ b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.text.font.Font -import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import io.github.alexzhirkevich.compottie.assets.LottieFontManager import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.FontResource @@ -16,14 +16,17 @@ import org.jetbrains.compose.resources.rememberResourceEnvironment @Composable @ExperimentalCompottieApi fun rememberResourcesFontManager( - font : (LottieFont) -> FontResource? + font : (LottieFontSpec) -> FontResource? ) : LottieFontManager { val factory by rememberUpdatedState(font) val environment = rememberResourceEnvironment() - return remember(environment) { + val context = currentLottieContext() + + return remember(environment, context) { ResourcesFontManager( + context = context, environment = environment, resource = { factory(it) } ) @@ -33,20 +36,22 @@ fun rememberResourcesFontManager( @OptIn(ExperimentalResourceApi::class) private class ResourcesFontManager( + private val context: LottieContext, private val environment: ResourceEnvironment, - private val resource : (LottieFont) -> FontResource? + private val resource : (LottieFontSpec) -> FontResource? ) : LottieFontManager { - override suspend fun font(font: LottieFont): Font? { + override suspend fun font(font: LottieFontSpec): Font? { val resource = resource(font) ?: return null - return loadFont(environment, font, resource) + return loadFont(context, environment, font, resource) } } @OptIn(ExperimentalResourceApi::class) internal expect suspend fun loadFont( + context : LottieContext, environment: ResourceEnvironment, - font: LottieFont, + font: LottieFontSpec, resource: FontResource ) : Font \ No newline at end of file diff --git a/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt b/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt index f22d0f51..eab6a372 100644 --- a/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt +++ b/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.ui.text.font.Font -import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.ResourceEnvironment @@ -9,8 +9,9 @@ import org.jetbrains.compose.resources.getFontResourceBytes @OptIn(ExperimentalResourceApi::class) internal actual suspend fun loadFont( + context : LottieContext, environment: ResourceEnvironment, - font: LottieFont, + font: LottieFontSpec, resource: FontResource ) : Font { return androidx.compose.ui.text.platform.Font( diff --git a/compottie/src/androidMain/AndroidManifest.xml b/compottie/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 55a6979c..00000000 --- a/compottie/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt deleted file mode 100644 index 494edf62..00000000 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/L.android.kt +++ /dev/null @@ -1,51 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import android.annotation.SuppressLint -import android.app.Application -import android.content.ContentProvider -import android.content.ContentValues -import android.content.Context -import android.database.Cursor -import android.net.Uri -import io.github.alexzhirkevich.compottie.internal.LottieData -import io.github.alexzhirkevich.compottie.internal.LottieJson - -@InternalCompottieApi -var L.context : Context - get() = checkNotNull(AndroidContextProvider.ANDROID_CONTEXT) { - "Android context failed to initialize. Probably applicationId is not set in the build.gradle" - } - internal set(value) { - AndroidContextProvider.ANDROID_CONTEXT = value.applicationContext - } - - -//https://andretietz.com/2017/09/06/autoinitialise-android-library/ -internal class AndroidContextProvider : ContentProvider() { - companion object { - @SuppressLint("StaticFieldLeak") - var ANDROID_CONTEXT: Context? = null - } - - override fun onCreate(): Boolean { - ANDROID_CONTEXT = context?.applicationContext - return true - } - - override fun query( - uri: Uri, - projection: Array?, - selection: String?, - selectionArgs: Array?, - sortOrder: String? - ): Cursor? = null - override fun getType(uri: Uri): String? = null - override fun insert(uri: Uri, values: ContentValues?): Uri? = null - override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int = 0 - override fun update( - uri: Uri, - values: ContentValues?, - selection: String?, - selectionArgs: Array? - ): Int = 0 -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt index 8083c538..d74244a1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt @@ -1,10 +1,7 @@ package io.github.alexzhirkevich.compottie -import io.github.alexzhirkevich.compottie.internal.LottieData +import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch object L { @@ -14,7 +11,7 @@ object L { * Warmup JSON parser. The first animation parsing will be much faster * */ fun warmup() { - LottieJson.decodeFromString(warmupAnim) + LottieJson.decodeFromString(warmupAnim) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index edb0cc91..b4559dc8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -12,12 +12,14 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.LottieFont +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import io.github.alexzhirkevich.compottie.assets.LottieFontManager import io.github.alexzhirkevich.compottie.dynamic.DynamicComposition import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider -import io.github.alexzhirkevich.compottie.internal.LottieData +import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson +import io.github.alexzhirkevich.compottie.internal.assets.CharacterData +import io.github.alexzhirkevich.compottie.internal.assets.CharacterPath import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers @@ -35,18 +37,18 @@ import kotlin.time.Duration.Companion.milliseconds @Stable class LottieComposition internal constructor( - internal val lottieData: LottieData, + internal val animation: Animation, ) { /** * Frame when animation becomes visible * */ - val startFrame: Float get() = lottieData.inPoint + val startFrame: Float get() = animation.inPoint /** * Frame when animation becomes no longer visible * */ - val endFrame: Float get() = lottieData.outPoint + val endFrame: Float get() = animation.outPoint /** * Animation duration @@ -56,17 +58,17 @@ class LottieComposition internal constructor( /** * Animation frame rate * */ - val frameRate: Float get() = lottieData.frameRate + val frameRate: Float get() = animation.frameRate /** * Animation intrinsic width * */ - val width : Float get() = lottieData.width + val width : Float get() = animation.width /** * Animation intrinsic height * */ - val height : Float get() = lottieData.height + val height : Float get() = animation.height /** * Some animations may contain predefined number of interactions. @@ -94,6 +96,10 @@ class LottieComposition internal constructor( } private val fontMutex = Mutex() + internal val charGlyphs : Map> = + animation.chars.groupBy(CharacterData::fontFamily) + .mapValues { it.value.associateBy(CharacterData::character) } + /** * Preload assets for instant animation displaying. * @@ -116,7 +122,7 @@ class LottieComposition internal constructor( private suspend fun loadAssets(assetsManager: LottieAssetsManager) { coroutineScope { - lottieData.assets.mapNotNull { asset -> + animation.assets.mapNotNull { asset -> when (asset) { is ImageAsset -> { if (asset.bitmap == null) { @@ -144,11 +150,11 @@ class LottieComposition internal constructor( private suspend fun loadFonts(assetsManager: LottieFontManager) { fontMutex.withLock { coroutineScope { - fontsByFamily = lottieData.fonts?.list + fontsByFamily = animation.fonts?.list ?.map { async { val f = it.font ?: assetsManager.font( - LottieFont( + LottieFontSpec( family = it.family, name = it.name, style = it.fontStyle, @@ -172,17 +178,16 @@ class LottieComposition internal constructor( ?.mapValues { FontFamily(it.value.map { it.second }) } .orEmpty() } - println(fontsByFamily) } } internal fun marker(name: String?) = - lottieData.markers.firstOrNull { it.name == name } + animation.markers.firstOrNull { it.name == name } companion object { fun parse(json: String) : LottieComposition { return LottieComposition( - lottieData = LottieJson.decodeFromString(json), + animation = LottieJson.decodeFromString(json), ) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 320137b1..33d12291 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -10,6 +10,7 @@ import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.scale @@ -23,6 +24,7 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer +import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import kotlin.math.roundToInt @@ -162,39 +164,46 @@ private class LottiePainter( clipToCompositionBounds : Boolean, ) : Painter() { + var progress: Float by mutableStateOf(initialProgress) + + override val intrinsicSize: Size = Size( - composition.lottieData.width, - composition.lottieData.height + composition.animation.width, + composition.animation.height ) - var progress: Float by mutableStateOf(initialProgress) + private val intIntrinsicSize = IntSize( + intrinsicSize.width.roundToInt(), + intrinsicSize.height.roundToInt() + ) private val matrix = Matrix() private var alpha by mutableStateOf(1f) - private val compositionLayer: BaseCompositionLayer = composition.lottieData - .layers - .takeIf { - it.size == 1 // don't create extra composition layer - }?.first() as? BaseCompositionLayer // if Precomposition is the only layer - ?: CompositionLayer(composition) + private val compositionLayer: Layer = CompositionLayer(composition) + + private val frame: Float by derivedStateOf { + val p = composition.animation.inPoint + + (composition.animation.outPoint - composition.animation.inPoint) * progress + p.coerceAtLeast(0f) + } + + private val animationState = AnimationState(frame, composition) init { val painterProperties = PainterProperties( - assets = composition.lottieData.assets.associateBy(LottieAsset::id), + assets = composition.animation.assets.associateBy(LottieAsset::id), fontFamilyResolver = fontFamilyResolver, clipToDrawBounds = clipToCompositionBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes, ) compositionLayer.painterProperties = painterProperties compositionLayer.onCreate(composition) - } - private val frame: Float by derivedStateOf { - val p = composition.lottieData.inPoint + - (composition.lottieData.outPoint - composition.lottieData.inPoint) * progress - p.coerceAtLeast(0f) + composition.animation.chars.forEach { + it.data.onCreate(composition, painterProperties) + } } override fun applyAlpha(alpha: Float): Boolean { @@ -205,28 +214,20 @@ private class LottiePainter( return true } - private val animationState = AnimationState(frame, composition) - override fun DrawScope.onDraw() { - matrix.reset() val scale = ContentScale.Fit.computeScaleFactor(intrinsicSize, size) val offset = Alignment.Center.align( - IntSize( - (intrinsicSize.width).roundToInt(), - (intrinsicSize.height).roundToInt() - ), - IntSize( - (size.width).roundToInt(), - (size.height).roundToInt() + size = intIntrinsicSize, + space = IntSize( + size.width.roundToInt(), + size.height.roundToInt() ), - layoutDirection + layoutDirection = layoutDirection ) - matrix.reset() - scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { animationState.remapped(frame) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt deleted file mode 100644 index 722d2fe6..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieAssetsCache.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.github.alexzhirkevich.compottie.assets - -interface LottieAssetsCache { - - suspend fun saveToCache(asset: ByteArray, id: String, path: String, name: String) - - suspend fun loadFromCache(id: String, path: String, name: String) : ByteArray? -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt index b328f2ca..c24aacf4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt @@ -1,9 +1,6 @@ package io.github.alexzhirkevich.compottie.assets -import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.font.Font /** @@ -23,12 +20,12 @@ interface LottieFontManager { * * @param name asset name and extension (for example image.png) * */ - suspend fun font(font: LottieFont): Font? + suspend fun font(font: LottieFontSpec): Font? companion object { val Empty = object : LottieFontManager { - override suspend fun font(font: LottieFont): Font? = null + override suspend fun font(font: LottieFontSpec): Font? = null } } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFont.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontSpec.kt similarity index 74% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFont.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontSpec.kt index db7c3981..400372a4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFont.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontSpec.kt @@ -2,9 +2,8 @@ package io.github.alexzhirkevich.compottie.assets import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight -import io.github.alexzhirkevich.compottie.internal.assets.LottieFontAsset -class LottieFont( +class LottieFontSpec internal constructor( val family : String, val name : String, val style : FontStyle, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt similarity index 86% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt index 4b937834..3e8dd253 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt @@ -1,16 +1,16 @@ package io.github.alexzhirkevich.compottie.internal +import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.assets.FontList import io.github.alexzhirkevich.compottie.internal.helpers.Marker import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.assets.LottieFontAsset import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -internal data class LottieData( +internal class Animation( @SerialName("fr") val frameRate : Float, @@ -38,5 +38,7 @@ internal data class LottieData( val fonts : FontList? = null, + val chars : List = emptyList(), + val markers : List = emptyList() ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 9d6b474c..b5ddfc03 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -4,7 +4,6 @@ import io.github.alexzhirkevich.compottie.LottieComposition import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract -import kotlin.jvm.JvmInline class AnimationState @PublishedApi internal constructor( frame : Float, @@ -15,8 +14,8 @@ class AnimationState @PublishedApi internal constructor( val progress : Float get() { - val p = (frame - composition.lottieData.inPoint)/ - (composition.lottieData.outPoint - composition.lottieData.inPoint) + val p = (frame - composition.animation.inPoint)/ + (composition.animation.outPoint - composition.animation.inPoint) return p.coerceIn(0f,1f) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt index 4de9aedc..eaddc9f8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt @@ -21,5 +21,6 @@ internal class CharacterData( @SerialName("width") val width : Float? = null, - val data: CharacterData + @SerialName("data") + val data: CharacterPath ) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt index a93e3885..e04dbee3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt @@ -1,6 +1,117 @@ package io.github.alexzhirkevich.compottie.internal.assets +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.content.DrawingContent +import io.github.alexzhirkevich.compottie.internal.helpers.Transform +import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties +import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer +import io.github.alexzhirkevich.compottie.internal.shapes.GroupShape +import io.github.alexzhirkevich.compottie.internal.shapes.Shape +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.JsonContentPolymorphicSerializer +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.jsonObject + +@Serializable(with = CharacterPathSerializer::class) internal sealed interface CharacterPath { - class CharacterShape + fun onCreate(composition: LottieComposition, painterProperties: PainterProperties) {} + + fun draw( + scope : DrawScope, + state: AnimationState, + parentMatrix: Matrix, + strokePaint : Paint, + fillPaint : Paint + ) + + @Serializable + class Shapes( + @SerialName("shapes") + val shapes: List + ) : CharacterPath { + + private val shape = GroupShape(items = shapes) + + override fun draw( + scope: DrawScope, + state: AnimationState, + parentMatrix: Matrix, + strokePaint: Paint, + fillPaint: Paint + ) { + val path = shape.getPath(state) + path.transform(parentMatrix) + + scope.drawIntoCanvas { + it.drawPath(path, fillPaint) + it.drawPath(path, strokePaint) + } + } + } + + @Serializable + class Precomp( + @SerialName("refId") + val refId: String, + + @SerialName("tr") + val transform: Transform = Transform(), + + @SerialName("ip") + val inPoint: Float? = null, + + @SerialName("op") + val outPoint: Float? = null, + + @SerialName("sr") + val timeStretch: Float = 1f, + ) : CharacterPath { + + private val layer = PrecompositionLayer( + refId = refId, + transform = transform, + inPoint = inPoint, + outPoint = outPoint, + timeStretch = timeStretch, + width = 0f, + height = 0f + ) + + override fun onCreate( + composition: LottieComposition, + painterProperties: PainterProperties + ) { + layer.painterProperties = painterProperties + layer.onCreate(composition) + } + + override fun draw( + scope: DrawScope, + state: AnimationState, + parentMatrix: Matrix, + strokePaint: Paint, + fillPaint: Paint + ) { + layer.draw(scope, parentMatrix, 1f, state) + } + } +} + +internal class CharacterPathSerializer : JsonContentPolymorphicSerializer(CharacterPath::class){ + override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + return if (element.jsonObject.containsKey("shapes")) { + CharacterPath.Shapes.serializer() + } else { + CharacterPath.Precomp.serializer() + } + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index c551c54d..bfb67fe4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -39,12 +39,6 @@ internal abstract class BaseCompositionLayer: BaseLayer() { layers.forEach { it.onCreate(composition) } } -// private val remappedState by lazy { -// RemappedAnimationState( -// frameRemapping = ::remappedFrame -// ) -// } - abstract fun loadLayers(): List private val layers by lazy { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 8770f5c5..57f88a91 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -13,8 +13,8 @@ internal class CompositionLayer( private val composition: LottieComposition ) : BaseCompositionLayer() { - override val width: Float get() = composition.lottieData.width - override val height: Float get() = composition.lottieData.height + override val width: Float get() = composition.animation.width + override val height: Float get() = composition.animation.height override val timeRemapping: AnimatedNumber? get() = null override val masks: List? get() = null @@ -37,12 +37,12 @@ internal class CompositionLayer( override val blendMode: LottieBlendMode get() = LottieBlendMode.Normal - override val inPoint: Float get() = composition.lottieData.inPoint - override val outPoint: Float get() = composition.lottieData.outPoint + override val inPoint: Float get() = composition.animation.inPoint + override val outPoint: Float get() = composition.animation.outPoint override val name: String? = null override fun loadLayers(): List { - return composition.lottieData.layers + return composition.animation.layers } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index d3f7d95d..fdaf6886 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -17,10 +17,10 @@ internal class PrecompositionLayer( val refId : String, @SerialName("w") - override val width : Float, + override var width : Float, @SerialName("h") - override val height : Float, + override var height : Float, @SerialName("tm") override val timeRemapping : AnimatedNumber? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 29618255..58b579be 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -5,12 +5,12 @@ import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.DrawStyle import androidx.compose.ui.graphics.drawscope.Fill import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextMeasurer import androidx.compose.ui.text.TextStyle @@ -23,6 +23,7 @@ import androidx.compose.ui.util.fastForEachIndexed import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.animation.toColor +import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode @@ -37,6 +38,8 @@ import io.github.alexzhirkevich.compottie.internal.platform.charCount import io.github.alexzhirkevich.compottie.internal.platform.codePointAt import io.github.alexzhirkevich.compottie.internal.platform.isModifier import io.github.alexzhirkevich.compottie.internal.util.toOffset +import io.github.alexzhirkevich.compottie.internal.utils.preScale +import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -108,10 +111,20 @@ internal class TextLayer( ) : BaseLayer() { @Transient - private val fillPaint = DrawProperties(Fill) + private val fillProperties = DrawProperties(Fill) @Transient - private val strokePaint = DrawProperties(Stroke(0f)) + private val fillPaint = Paint().apply { + isAntiAlias = true + } + + @Transient + private val strokeProperties = DrawProperties(Stroke(0f)) + + @Transient + private val strokePaint = Paint().apply { + isAntiAlias = true + } @Transient private val textAnimation = textData.ranges.firstOrNull() @@ -137,6 +150,9 @@ internal class TextLayer( @Transient private val stringBuilder = StringBuilder(2) + @Transient + private val matrix = Matrix() + override fun drawLayer( drawScope: DrawScope, parentMatrix: Matrix, @@ -151,8 +167,11 @@ internal class TextLayer( configurePaint(document, parentAlpha, state) configureTextStyle(drawScope, document, state) - drawTextWithFonts(drawScope, document) - + if (state.composition.fontsByFamily.isEmpty() && state.composition.charGlyphs.isNotEmpty()){ + drawTextWithGlyphs(drawScope, document, state) + } else { + drawTextWithFonts(drawScope, document) + } canvas.restore() } } @@ -168,7 +187,7 @@ internal class TextLayer( val composition = state.composition - outBounds.set(0f, 0f, composition.lottieData.width, composition.lottieData.height) + outBounds.set(0f, 0f, composition.animation.width, composition.animation.height) } private fun configurePaint(document: TextDocument, parentAlpha: Float, state: AnimationState) { @@ -179,45 +198,56 @@ internal class TextLayer( val strokeOpacity = textAnimation?.style?.strokeOpacity?.interpolatedNorm(state) ?: 1f - val fillH = textAnimation?.style?.fillHue?.interpolated(state)?.coerceIn(0f,360f) - val fillS = textAnimation?.style?.fillSaturation?.interpolated(state)?.coerceIn(0f,1f) - val fillB = textAnimation?.style?.fillBrightness?.interpolated(state)?.coerceIn(0f,1f) + val fillH = textAnimation?.style?.fillHue?.interpolated(state)?.coerceIn(0f, 360f) + val fillS = textAnimation?.style?.fillSaturation?.interpolated(state)?.coerceIn(0f, 1f) + val fillB = textAnimation?.style?.fillBrightness?.interpolated(state)?.coerceIn(0f, 1f) - fillPaint.color = if (fillH != null && fillS != null && fillB != null){ - Color.hsl(fillH, fillS, fillB) + fillProperties.color = if (fillH != null && fillS != null && fillB != null) { + Color.hsl(fillH, fillS, fillB) } else { textAnimation?.style?.fillColor?.interpolated(state) ?: document.fillColor?.toColor() ?: Color.Transparent } - fillPaint.alpha = (parentAlpha * transformOpacity * fillOpacity).coerceIn(0f,1f) + fillProperties.alpha = (parentAlpha * transformOpacity * fillOpacity).coerceIn(0f, 1f) + + fillPaint.color = fillProperties.color + fillPaint.alpha = fillProperties.alpha - val strokeH = textAnimation?.style?.strokeHue?.interpolated(state)?.coerceIn(0f,360f) - val strokeS = textAnimation?.style?.strokeSaturation?.interpolated(state)?.coerceIn(0f,1f) - val strokeB = textAnimation?.style?.strokeBrightness?.interpolated(state)?.coerceIn(0f,1f) + val strokeH = textAnimation?.style?.strokeHue?.interpolated(state)?.coerceIn(0f, 360f) + val strokeS = textAnimation?.style?.strokeSaturation?.interpolated(state)?.coerceIn(0f, 1f) + val strokeB = textAnimation?.style?.strokeBrightness?.interpolated(state)?.coerceIn(0f, 1f) - strokePaint.color = if (strokeH != null && strokeS != null && strokeB != null){ + strokeProperties.color = if (strokeH != null && strokeS != null && strokeB != null) { Color.hsl(strokeH, strokeS, strokeB) } else { textAnimation?.style?.strokeColor?.interpolated(state) ?: document.strokeColor?.toColor() ?: Color.Transparent } - strokePaint.color = textAnimation?.style?.strokeColor?.interpolated(state) + strokeProperties.color = textAnimation?.style?.strokeColor?.interpolated(state) ?: document.strokeColor?.toColor() ?: Color.Transparent - strokePaint.alpha = (parentAlpha * transformOpacity * strokeOpacity).coerceIn(0f,1f) + strokeProperties.alpha = (parentAlpha * transformOpacity * strokeOpacity).coerceIn(0f, 1f) val strokeWidth = textAnimation?.style?.strokeWidth?.interpolated(state) ?: document.strokeWidth - if (strokePaint.style.width != strokeWidth){ - strokePaint.style = Stroke(width = strokeWidth) + if (strokeProperties.style.width != strokeWidth) { + strokeProperties.style = Stroke(width = strokeWidth) } + + strokePaint.color = strokeProperties.color + strokePaint.alpha = strokeProperties.alpha + strokePaint.strokeWidth = strokeWidth } - private fun configureTextStyle(drawScope: DrawScope, document: TextDocument, animationState: AnimationState) { + private fun configureTextStyle( + drawScope: DrawScope, + document: TextDocument, + animationState: AnimationState + ) { drawScope.run { val fontSize = document.fontSize.toSp() @@ -234,7 +264,7 @@ internal class TextLayer( val lineSpacing = textAnimation?.style?.lineSpacing ?.interpolated(animationState) ?: 0f - val lineHeight = (document.lineHeight + lineSpacing).toSp() + val lineHeight = (document.lineHeight + lineSpacing).toSp() if ( textStyle.fontSize != fontSize || @@ -319,6 +349,43 @@ internal class TextLayer( } } + private fun drawTextWithGlyphs( + drawScope: DrawScope, + document: TextDocument, + state: AnimationState + ) { + // Split full text in multiple lines + val textLines = getTextLines(document.text ?: return) + val tracking = (document.textTracking ?: 0f) / 10f + + val measurer = getTextMeasurer(drawScope, drawScope.layoutDirection) + + val canvas = drawScope.drawContext.canvas + + textLines.fastForEachIndexed { lineIndex, line -> + val boxWidth = document.wrapSize?.getOrNull(0) ?: 0f + + val lines = splitGlyphTextIntoLines(measurer, line, boxWidth, tracking); + + lines.forEach { l -> + canvas.save(); + + if (offsetCanvas(canvas, drawScope, document, lineIndex, l.width)) { + drawGlyphTextLine( + text = l.text, + state = state, + fontScale = document.fontSize, + documentData = document, + drawScope = drawScope, + tracking = tracking + ) + } + + canvas.restore(); + } + } + } + private fun getTextLines(text: String): List { // Split full text by carriage return character val formattedText = text.replace("\r\n".toRegex(), "\r") @@ -432,12 +499,13 @@ internal class TextLayer( val lineStartY = if (position == null) 0f else document.lineHeight + position.y - val lineOffset: Float = ((lineIndex-1) * document.lineHeight) + lineStartY + val lineOffset: Float = ((lineIndex - 1) * document.lineHeight) + lineStartY val clip = painterProperties?.clipTextToBoundingBoxes == true if (clip && size != null && position != null && - lineOffset >= position.y + size.height + document.fontSize) { + lineOffset >= position.y + size.height + document.fontSize + ) { return false } @@ -479,6 +547,39 @@ internal class TextLayer( } } + private fun drawGlyphTextLine( + text: String, + state: AnimationState, + documentData: TextDocument, + fontScale: Float, + drawScope: DrawScope, + tracking: Float + ) { + val canvas = drawScope.drawContext.canvas + text.forEach { c -> + val character = state.composition.charGlyphs + .get(documentData.fontFamily) + ?.get(c.toString()) ?: return@forEach + + drawCharacterAsGlyph(drawScope, state, character, fontScale, documentData) + val tx = (character.width ?: 0f) * fontScale + tracking + canvas.translate(tx, 0f) + } + } + + private fun drawCharacterAsGlyph( + drawScope: DrawScope, + state: AnimationState, + character : CharacterData, + fontScale : Float, + document: TextDocument, + ) { + matrix.reset(); + matrix.preTranslate(0f, -(document.baselineShift ?: 0f)) + matrix.preScale(fontScale, fontScale); + character.data.draw(drawScope, state, matrix, strokePaint, fillPaint) + } + private fun codePointToString(text: String, startIndex: Int): String { val firstCodePoint: Int = text.codePointAt(startIndex) val firstCodePointLength: Int = charCount(firstCodePoint) @@ -514,11 +615,11 @@ internal class TextLayer( drawScope: DrawScope ) { if (documentData.strokeOverFill) { - drawCharacter(character, fillPaint, drawScope) - drawCharacter(character, strokePaint, drawScope) + drawCharacter(character, fillProperties, drawScope) + drawCharacter(character, strokeProperties, drawScope) } else { - drawCharacter(character, strokePaint, drawScope) - drawCharacter(character, fillPaint, drawScope) + drawCharacter(character, strokeProperties, drawScope) + drawCharacter(character, fillProperties, drawScope) } } diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 5b2a03f6..bfb6e570 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -101,8 +101,11 @@ fun App() { assetsManager = rememberResourcesAssetsManager( readBytes = Res::readBytes ), - fontManager = rememberResourcesFontManager { - Res.font.ComicNeue + fontManager = rememberResourcesFontManager { fontSpec -> + when (fontSpec.family) { + "Comic Neue" -> Res.font.ComicNeue + else -> Res.font.ComicNeue + } }, dynamic = { } @@ -110,9 +113,10 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(ROBOT_404) + LottieCompositionSpec.Resource(ROBOT) // // LottieCompositionSpec.Url( +// "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", // "https://dotlottie.io/sample_files/animation-external-image.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/anim_jpg.zip", From 19177db4de424ba14f70679f287c3f5cd335846c Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Thu, 20 Jun 2024 13:18:18 +0300 Subject: [PATCH 058/100] upd readme --- README.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 354a9f7c..d172c38f 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,13 @@ dependencies { // For dotLottie (zip) animations implementation("io.github.alexzhirkevich:compottie-dot:<2x_version>") - // For Url animation and resources loading - implementation("io.github.alexzhirkevich:compottie-network:<2x_version>") + // For Url animation and assets loading + implementation("io.github.alexzhirkevich:compottie-network:<2x_version>") + + // For compose-resources LottieAssetsManager and LottieFontManager. + // This module doesn't include resources composition spec. + // Animations from compose resources can be simply loaded with one line of code. See usage + implementation("io.github.alexzhirkevich:compottie-resources:<2x_version>") } ``` @@ -38,6 +43,7 @@ dependencies { - [LottieAnimatable](#lottieanimatable) - [dotLottie](#dotlottie) - [Images](#images) +- [Fonts](#fonts) - [URL loading](#url-loading) - [Dynamic Properties](#dynamic-properties) @@ -67,7 +73,9 @@ Or with the `rememberLottiePainter` overload that merges `rememberLottiePainter` @Composable fun Loader() { val composition by rememberLottieComposition { - LottieCompositionSpec.JsonString(Res.readBytes("files/anim.json").decodeToString()) + LottieCompositionSpec.JsonString( + Res.readBytes("files/anim.json").decodeToString() + ) } Image( @@ -89,7 +97,9 @@ To create a `LottieComposition`: For example: ```kotlin val composition1 by rememberLottieComposition { - LottieCompositionSpec.JsonString(Res.readBytes("files/anim.json").decodeToString()) + LottieCompositionSpec.JsonString( + Res.readBytes("files/anim.json").decodeToString() + ) } val composition2 by rememberLottieComposition { LottieCompositionSpec.Url("https://...") @@ -181,9 +191,48 @@ dotLottie animations are up to 10x smaller in size and can have auto-linked bund ## Images Images should be avoided whenever possible. They are much larger, less performant, and can lead to pixelation. Whenever possible, try and make your animation consist solely of vectors. However, Lottie does support images in one of 4 ways: -1. Baked into the Lottie json file. This is done via an option in the exporter (such as teh Bodymovin After Effects plugin). When done, images are encoded as a base64 string and embedded directly in the json file. This is the simplest way to use images because everything is contained in a single file and no additional work is necessary to make them work. -2. Zipped with the json file in a single zip file. When parsing the animation, Lottie will unzip the animation and automatically link any images in zip file to the composition. These zip files can be stored in assets and loaded via `LottieCompositionSpec.DotLottie` (requires `compottie-dot` module) or downloaded via the internet and loaded via `LottieCompositionSpec.Url`. -3. Via dynamic properties. +1. Baked into the Lottie json file. This is done via an option in the exporter (such as teh Bodymovin After Effects plugin). When done, images are encoded as a base64 string and embedded directly in the json file. This is the simplest way to use images because everything is contained in a single file and no additional work is necessary to make them work; +2. Zipped with the json file in a single zip file. When parsing the animation, Lottie will unzip the animation and automatically link any images in zip file to the composition. These zip files can be stored in assets and loaded via `LottieCompositionSpec.DotLottie` (requires `compottie-dot` module) or downloaded via the internet and loaded via `LottieCompositionSpec.Url`; +3. External images provided by `LottieAssetsManager`; +4. Via dynamic properties. + +`LottieAssetsManager` should be passed to `rememberLottieComposition` to load external resources. +`compottie-resources` provides ready-to-use implementation that loads assets from compose-resources: + +```kotlin +val composition = rememberLottieComposition( + assetsManager = rememberResourcesAssetsManager( + directory = "files" // by default, + readBytes = Res::readBytes + ) +) { + LottieCompositionSpec.JsonString( + Res.readBytes("files/anim.json").decodeToString() + ) +} +``` + +## Fonts + +Text can be drawn in 2 ways: using fonts and using glyphs (when characters are baked to the animation as lottie shapes) + +`LottieFontManager` should be passed to `rememberLottieComposition` to use custom fonts. +`compottie-resources` provides ready-to-use implementation that loads fonts from compose-resources: + +```kotlin +val composition = rememberLottieComposition( + fontManager = rememberResourcesFontManager { fontSpec -> + when (fontSpec.family) { + "Comic Neue" -> Res.font.ComicNeue + else -> null // default font will be used + } + } +) { + LottieCompositionSpec.JsonString( + Res.readBytes("files/anim.json").decodeToString() + ) +} +``` ## URL loading To load images remotely `compottie-network` module should be added as a dependensy. This module brings an additional composition spec called `LottieCompositionSpec.Url` From 81ff8d4b506480bae02a8c0a2f0afa6a4defc195 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Thu, 20 Jun 2024 15:09:05 +0300 Subject: [PATCH 059/100] animated gradient --- .../compottie/internal/LottieJson.kt | 6 + .../internal/animation/AnimatedGradient.kt | 130 ++++++++++++++---- 2 files changed, 107 insertions(+), 29 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index e7a3592e..68a0b73b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedGradient import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 @@ -122,6 +123,11 @@ internal val LottieJson by lazy { subclass(AnimatedColor.Animated::class) } + polymorphic(AnimatedGradient::class) { + subclass(AnimatedGradient.Default::class) + subclass(AnimatedGradient.Animated::class) + } + polymorphic(AnimatedShape::class) { subclass(AnimatedShape.Default::class) subclass(AnimatedShape.Animated::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt index 887820f9..4e686918 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.lerp import io.github.alexzhirkevich.compottie.internal.AnimationState import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName @@ -10,9 +11,59 @@ import kotlinx.serialization.json.JsonClassDiscriminator import kotlin.jvm.JvmInline internal class ColorsWithStops( - val colorStops: List, - val colors : List -) + size: Int +) { + val colorStops: List get() = mColorStops + val colors: List get() = mColors + + private val mColorStops: MutableList = ArrayList(size) + private val mColors: MutableList = ArrayList(size) + + fun fill(colors: FloatArray, numberOfColors: Int) { + resizeTo(numberOfColors) + + repeat(numberOfColors) { + mColorStops[it] = colors[it * 4] + + val alpha = if (colors.size == numberOfColors * 6) { + colors[colors.lastIndex - numberOfColors * 2 + (it + 1) * 2] + } else 1f + + + mColors[it] = + Color( + red = colors[it * 4 + 1], + green = colors[it * 4 + 2], + blue = colors[it * 4 + 3], + alpha = alpha + ) + } + } + + fun interpolateBetween(a: ColorsWithStops, b: ColorsWithStops, progress: Float) { + val n = minOf(a.colors.size, b.colors.size) + + resizeTo(n) + + repeat(n) { i -> + mColors[i] = lerp(a.colors[i], b.colors[i], progress) + mColorStops[i] = + androidx.compose.ui.util.lerp(a.colorStops[i], b.colorStops[i], progress) + } + } + + private fun resizeTo(size: Int) { + while (colorStops.size < size) { + mColorStops.add(0f) + mColors.add(Color.Transparent) + } + while (colorStops.size > size) { + mColorStops.removeLast() + mColors.removeLast() + } + } +} + @Serializable internal class GradientColors( @@ -36,45 +87,66 @@ internal value class GradientType(val type : Byte) { @OptIn(ExperimentalSerializationApi::class) @Serializable @JsonClassDiscriminator("a") -internal sealed interface AnimatedGradient : KeyframeAnimation { +internal abstract class AnimatedGradient : KeyframeAnimation { - var numberOfColors: Int + @Transient + var numberOfColors: Int = 0 @SerialName("0") @Serializable class Default( @SerialName("k") val colorsVector: FloatArray, - ) : AnimatedGradient { + ) : AnimatedGradient() { + + private val tempColors by lazy { + ColorsWithStops(numberOfColors).apply { + fill(colorsVector, numberOfColors) + } + } + + override fun interpolated(state: AnimationState): ColorsWithStops { + return tempColors + } + } + + @SerialName("1") + @Serializable + class Animated( + @SerialName("k") + val keyframes: List, + ) : AnimatedGradient(), KeyframeAnimation { + + private val tempColors by lazy { + ColorsWithStops(numberOfColors) + } + + private val tempColorsA by lazy { + ColorsWithStops(numberOfColors) + } + + private val tempColorsB by lazy { + ColorsWithStops(numberOfColors) + } @Transient - override var numberOfColors: Int = 0 + private val delegate = BaseKeyframeAnimation( + expression = null, + keyframes = keyframes, + emptyValue = tempColors + ) { s, e, p -> + val progress = easingX.transform(p) + + tempColorsA.fill(s, numberOfColors) + tempColorsB.fill(e, numberOfColors) - private val colors by lazy { - colorsVector.asGradient(numberOfColors) + tempColors.apply { + interpolateBetween(tempColorsA, tempColorsB, progress) + } } override fun interpolated(state: AnimationState): ColorsWithStops { - return colors + return delegate.interpolated(state) } } } - -private fun FloatArray.asGradient(numberOfColors: Int) : ColorsWithStops = ColorsWithStops( - colorStops = (0 until numberOfColors).map { - this[it * 4] - }, - colors = (0 until numberOfColors).map { - - val alpha = if (size == numberOfColors * 6) { - this[lastIndex - numberOfColors * 2 + (it + 1) * 2] - } else 1f - - Color( - red = this[it * 4 + 1], - green = this[it * 4 + 2], - blue = this[it * 4 + 3], - alpha = alpha - ) - } -) \ No newline at end of file From 262eb87ac8d3a74b37b64e8b9853eeac8b467fcb Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Thu, 20 Jun 2024 17:43:03 +0300 Subject: [PATCH 060/100] cache --- build.gradle.kts | 1 - .../compottie/DotLottieCompositionSpec.kt | 64 +- .../compottie/UrlCompositionSpec.kt | 38 +- compottie/build.gradle.kts | 1 + .../io/github/alexzhirkevich/compottie/L.kt | 20 + .../compottie/LottieComposition.kt | 253 +- .../compottie/LottieCompositionSpec.kt | 12 +- .../github/alexzhirkevich/compottie/LruMap.kt | 35 + .../internal/animation/AnimatedShape.kt | 3 - .../internal/animation/AnimatedVector2.kt | 1 - .../internal/platform/PlatformShader.kt | 61 +- .../internal/shapes/GradientFillShape.kt | 4 +- .../src/main/kotlin/MainActivity.kt | 6 + example/desktopApp/hs_err_pid16192.log | 2140 +++++++++++++++++ .../src/jvmMain/kotlin/main.desktop.kt | 4 - .../composeResources/files/test.json | 2 +- example/shared/src/commonMain/kotlin/App.kt | 7 +- 17 files changed, 2433 insertions(+), 219 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt create mode 100644 example/desktopApp/hs_err_pid16192.log diff --git a/build.gradle.kts b/build.gradle.kts index 32d76cd3..c3168c3b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,7 +11,6 @@ plugins { buildscript { dependencies { classpath(libs.gp.atomicfu) - } } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index af28a387..34d5472c 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -44,50 +44,52 @@ private class DotLottieCompositionSpec( ) : LottieCompositionSpec { @OptIn(InternalCompottieApi::class) - override suspend fun load(): LottieComposition { + override suspend fun load(key : Any?): LottieComposition { - val fileSystem = FakeFileSystem() - val path = "anim".toPath() + return LottieComposition.getOrCreate(key) { + val fileSystem = FakeFileSystem() + val path = "anim".toPath() - fileSystem.write(path) { - write(archive) - } + fileSystem.write(path) { + write(archive) + } - val entries = fileSystem.listZipEntries(path) + val entries = fileSystem.listZipEntries(path) - val zipSystem = ZipFileSystem(fileSystem, entries, path) + val zipSystem = ZipFileSystem(fileSystem, entries, path) - val manifestPath = entries.keys.firstOrNull { it.name == "manifest.json" } + val manifestPath = entries.keys.firstOrNull { it.name == "manifest.json" } - return if (manifestPath != null) { + if (manifestPath != null) { - val manifest = DotLottieJson.decodeFromString( - zipSystem.read(manifestPath).decodeToString() - ) + val manifest = DotLottieJson.decodeFromString( + zipSystem.read(manifestPath).decodeToString() + ) - val animation = manifest.animations.first() + val animation = manifest.animations.first() - val anim = zipSystem.read("animations/${animation.id}.json".toPath()) + val anim = zipSystem.read("animations/${animation.id}.json".toPath()) - LottieComposition.parse(anim.decodeToString()).apply { - speed = animation.speed - if (animation.loop) { - iterations = LottieConstants.IterateForever + LottieComposition.parse(anim.decodeToString()).apply { + speed = animation.speed + if (animation.loop) { + iterations = LottieConstants.IterateForever + } + prepare(DotLottieAssetsManager(zipSystem, manifestPath.parent)) } - prepare(DotLottieAssetsManager(zipSystem, manifestPath.parent)) - } - } else { - val animPath = entries.keys.first { it.name.endsWith(".json", true) } - val anim = zipSystem.read(animPath) - - LottieComposition.parse(anim.decodeToString()).apply { - prepare( - assetsManager = DotLottieAssetsManager( - zipFileSystem = zipSystem, - root = animPath.parent + } else { + val animPath = entries.keys.first { it.name.endsWith(".json", true) } + val anim = zipSystem.read(animPath) + + LottieComposition.parse(anim.decodeToString()).apply { + prepare( + assetsManager = DotLottieAssetsManager( + zipFileSystem = zipSystem, + root = animPath.parent + ) ) - ) + } } } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index d50e1641..fd818683 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -14,7 +14,6 @@ import io.ktor.client.HttpClient import io.ktor.client.plugins.ClientRequestException import io.ktor.client.statement.bodyAsChannel import io.ktor.client.statement.bodyAsText -import io.ktor.http.HttpHeaders import io.ktor.http.Url import io.ktor.http.isSuccess import io.ktor.util.toByteArray @@ -50,34 +49,35 @@ private class NetworkCompositionSpec( private val request : NetworkRequest, ) : LottieCompositionSpec { - override suspend fun load(): LottieComposition { + override suspend fun load(cacheKey : Any?): LottieComposition { - try { - cacheStrategy.load(url)?.let { - return it.decodeLottieComposition(format) + return LottieComposition.getOrCreate(cacheKey) { + try { + cacheStrategy.load(url)?.let { + return@getOrCreate it.decodeLottieComposition(format) + } + } catch (_: Throwable) { } - } catch (_: Throwable) { - } - val resp = request(this.client, Url(url)) + val resp = request(this.client, Url(url)) - if (!resp.status.isSuccess()) { - throw ClientRequestException(resp, resp.bodyAsText()) - } + if (!resp.status.isSuccess()) { + throw ClientRequestException(resp, resp.bodyAsText()) + } - val bytes = resp.bodyAsChannel().toByteArray() + val bytes = resp.bodyAsChannel().toByteArray() - val composition = bytes.decodeLottieComposition(format) + val composition = bytes.decodeLottieComposition(format) - try { - cacheStrategy.save(url, bytes) - } catch (t: Throwable) { - L.logger.error("Url composition spec failed to cache downloaded animation", t) + try { + cacheStrategy.save(url, bytes) + } catch (t: Throwable) { + L.logger.error("Url composition spec failed to cache downloaded animation", t) + } + composition } - return composition } - override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null || this::class != other::class) return false diff --git a/compottie/build.gradle.kts b/compottie/build.gradle.kts index 57607b64..73fd09e9 100644 --- a/compottie/build.gradle.kts +++ b/compottie/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) alias(libs.plugins.serialization) + id("kotlinx-atomicfu") id("maven-publish") id("signing") } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt index d74244a1..b3874501 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt @@ -7,6 +7,26 @@ object L { var logger : LottieLogger = LottieLogger.Default + /** + * Limit gradient shaders cache size. + * + * - This value represents the trade-off between memory usage and gradient animations performance. + * + * - Most of the time gradients are not animated therefore only 1 instance will be stored + * + * - Single animated gradient caches ~10 shaders per refresh rate (so assume on 60hz devices + * each animated gradient will try to cache ~600 shader instances) + * + * - By default each animated gradient instance keeps up to 1000 shader instances. + * If you have many composed animations that have many animated gradients, + * you can experience high memory usage. In that case you can lower this value. + * + * - You can set this value at any time (for example when you receive memory usage warning). + * All running animations will shrink their shader cache size. + * */ + @ExperimentalCompottieApi + var shaderCacheLimit : Int = 1000 + /** * Warmup JSON parser. The first animation parsing will be much faster * */ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index b4559dc8..7a651533 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -19,8 +19,8 @@ import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.CharacterData -import io.github.alexzhirkevich.compottie.internal.assets.CharacterPath import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset +import kotlinx.atomicfu.atomic import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async @@ -34,6 +34,85 @@ import kotlinx.coroutines.withContext import kotlin.time.Duration import kotlin.time.Duration.Companion.milliseconds +/** + * Load and prepare [LottieComposition] for displaying. + * + * Instance produces by [spec] will be remembered with until [key] are changed. + * + * You can configure various dynamic animation properties in the [dynamic] block. + * */ +@OptIn(InternalCompottieApi::class) +@Composable +@Stable +fun rememberLottieComposition( + key : Any? = null, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, + fontManager: LottieFontManager = LottieFontManager.Empty, + dynamic : DynamicComposition.() -> Unit = {}, + spec : suspend () -> LottieCompositionSpec, +) : LottieCompositionResult { + + val updatedSpec by rememberUpdatedState(spec) + + val result = remember(key, assetsManager) { + LottieCompositionResultImpl() + } + + LaunchedEffect(result) { + withContext(Dispatchers.IODispatcher) { + try { + val composition = updatedSpec().load(key).apply { + this.dynamic = DynamicCompositionProvider().apply(dynamic) + } + composition.prepare( + assetsManager = assetsManager, + fontManager = fontManager + ) + result.complete(composition) + } catch (c: CancellationException) { + result.completeExceptionally(c) + throw c + } catch (t: Throwable) { + result.completeExceptionally(CompottieException("Composition failed to load", t)) + } + } + } + + return result +} + +/** + * Load and prepare [LottieComposition]. + * */ +@Deprecated( + "Use overload with lambda instead", + ReplaceWith("rememberLottieComposition { spec }") +) +@OptIn(InternalCompottieApi::class) +@Composable +@Stable +fun rememberLottieComposition( + spec : LottieCompositionSpec, +) : LottieCompositionResult { + + val result = remember(spec) { + LottieCompositionResultImpl() + } + + LaunchedEffect(result) { + withContext(Dispatchers.IODispatcher) { + try { + result.complete(spec.load()) + } catch (c: CancellationException) { + throw c + } catch (t: Throwable) { + result.completeExceptionally(t) + } + } + } + + return result +} @Stable class LottieComposition internal constructor( @@ -63,12 +142,12 @@ class LottieComposition internal constructor( /** * Animation intrinsic width * */ - val width : Float get() = animation.width + val width: Float get() = animation.width /** * Animation intrinsic height * */ - val height : Float get() = animation.height + val height: Float get() = animation.height /** * Some animations may contain predefined number of interactions. @@ -88,18 +167,20 @@ class LottieComposition internal constructor( internal var fontsByFamily: Map = emptyMap() - internal var dynamic : DynamicCompositionProvider? = null + internal var dynamic: DynamicCompositionProvider? = null set(value) { if (value == null || value.size > 0) { field = value } } - private val fontMutex = Mutex() + private val prepareMutex = Mutex() - internal val charGlyphs : Map> = + internal val charGlyphs: Map> = animation.chars.groupBy(CharacterData::fontFamily) .mapValues { it.value.associateBy(CharacterData::character) } + private var isPrepared = false + /** * Preload assets for instant animation displaying. * @@ -110,12 +191,18 @@ class LottieComposition internal constructor( assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, fontManager: LottieFontManager = LottieFontManager.Empty ) { - coroutineScope { - launch { - loadAssets(assetsManager) - } - launch { - loadFonts(fontManager) + prepareMutex.withLock { + if (!isPrepared) { + coroutineScope { + launch { + loadAssets(assetsManager) + } + launch { + loadFonts(fontManager) + } + }.invokeOnCompletion { + isPrepared = it == null + } } } } @@ -148,36 +235,34 @@ class LottieComposition internal constructor( private suspend fun loadFonts(assetsManager: LottieFontManager) { - fontMutex.withLock { - coroutineScope { - fontsByFamily = animation.fonts?.list - ?.map { - async { - val f = it.font ?: assetsManager.font( - LottieFontSpec( - family = it.family, - name = it.name, - style = it.fontStyle, - weight = it.weight, - path = it.path - ) + coroutineScope { + fontsByFamily = animation.fonts?.list + ?.map { + async { + val f = it.font ?: assetsManager.font( + LottieFontSpec( + family = it.family, + name = it.name, + style = it.fontStyle, + weight = it.weight, + path = it.path ) + ) - it.font = f + it.font = f - if (f == null) - null - else listOf(it.family to f, it.name to f) - } + if (f == null) + null + else listOf(it.family to f, it.name to f) } - ?.awaitAll() - ?.filterNotNull() - ?.flatten() - ?.groupBy { it.first } - ?.filterValues { it.isNotEmpty() } - ?.mapValues { FontFamily(it.value.map { it.second }) } - .orEmpty() - } + } + ?.awaitAll() + ?.filterNotNull() + ?.flatten() + ?.groupBy { it.first } + ?.filterValues { it.isNotEmpty() } + ?.mapValues { FontFamily(it.value.map { it.second }) } + .orEmpty() } } @@ -185,90 +270,34 @@ class LottieComposition internal constructor( animation.markers.firstOrNull { it.name == name } companion object { - fun parse(json: String) : LottieComposition { + + fun parse(json: String): LottieComposition { return LottieComposition( animation = LottieJson.decodeFromString(json), ) } - } -} -/** - * Load and prepare [LottieComposition]. - * */ -@Deprecated( - "Use overload with lambda instead", - ReplaceWith("rememberLottieComposition { spec }") -) -@OptIn(InternalCompottieApi::class) -@Composable -@Stable -fun rememberLottieComposition( - spec : LottieCompositionSpec, -) : LottieCompositionResult { - - val result = remember(spec) { - LottieCompositionResultImpl() - } + /** + * Get cached composition for [key] or create new one and cache it by [key] + * */ + suspend fun getOrCreate(key : Any?, create : suspend () -> LottieComposition) : LottieComposition { + if (key == null) + return create() - LaunchedEffect(result) { - withContext(Dispatchers.IODispatcher) { - try { - result.complete(spec.load()) - } catch (c: CancellationException) { - throw c - } catch (t: Throwable) { - result.completeExceptionally(t) + return cacheMutex.withLock { + cache.getOrPut(key) { + create() + } } } - } - return result -} + /** + * Clear all previously cached compositions + * */ + suspend fun clearCache() = cache.clear() -/** - * Load and prepare [LottieComposition] for displaying. - * - * Instance produces by [spec] will be remembered until [keys] are changed. - * - * You can configure various dynamic animation properties in the [dynamic] block. - * */ -@OptIn(InternalCompottieApi::class) -@Composable -@Stable -fun rememberLottieComposition( - vararg keys : Any?, - assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, - fontManager: LottieFontManager = LottieFontManager.Empty, - dynamic : DynamicComposition.() -> Unit = {}, - spec : suspend () -> LottieCompositionSpec, -) : LottieCompositionResult { - - val updatedSpec by rememberUpdatedState(spec) - - val result = remember(*keys,assetsManager) { - LottieCompositionResultImpl() - } + private val cacheMutex = Mutex() - LaunchedEffect(result) { - withContext(Dispatchers.IODispatcher) { - try { - val composition = updatedSpec().load().apply { - this.dynamic = DynamicCompositionProvider().apply(dynamic) - } - composition.prepare( - assetsManager = assetsManager, - fontManager = fontManager - ) - result.complete(composition) - } catch (c: CancellationException) { - result.completeExceptionally(c) - throw c - } catch (t: Throwable) { - result.completeExceptionally(CompottieException("Composition failed to load", t)) - } - } + private val cache = LruMap(limit = { 20 }) } - - return result } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 48dfaf67..f5d0d26f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -2,14 +2,12 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable -import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.dynamic.DynamicComposition import kotlin.jvm.JvmInline @Stable interface LottieCompositionSpec { - suspend fun load() : LottieComposition + suspend fun load(cacheKey : Any? = null) : LottieComposition companion object { @@ -29,10 +27,12 @@ interface LottieCompositionSpec { @JvmInline private value class JsonStringImpl( private val jsonString: String -) : LottieCompositionSpec { +) : LottieCompositionSpec { - override suspend fun load(): LottieComposition { - return LottieComposition.parse(jsonString) + override suspend fun load(cacheKey: Any?): LottieComposition { + return LottieComposition.getOrCreate(cacheKey) { + LottieComposition.parse(jsonString) + } } override fun toString(): String { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt new file mode 100644 index 00000000..f6e96ffe --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt @@ -0,0 +1,35 @@ +package io.github.alexzhirkevich.compottie + +internal class LruMap( + private val delegate : LinkedHashMap = LinkedHashMap(), + private val limit : () -> Int, +) : MutableMap by delegate { + + override fun put(key: Any, value: T): T? { + val cacheLimit = limit() + + while (cacheLimit in 1..size) { + remove(keys.firstOrNull()) + } + + return delegate.put(key, value) + } + + override fun get(key: Any): T? { + val cached = remove(key) ?: return null + + put(key, cached) + return cached + } + + inline fun getOrPut(key: Any?, put: () -> T): T { + if (key == null) + return put() + + return get(key) ?: run { + val v = put() + put(key, v) + v + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 2995bd85..22e8eef1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -41,9 +41,6 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { } override fun interpolatedRaw(state: AnimationState): Path { -// return Path().apply { -// bezier.mapPath(this) -// } return interpolated(state) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 9f080f9c..17c18d28 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -92,7 +92,6 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { keyframes = value, emptyValue = Offset.Zero, map = { s, e, p -> - if (inTangent != null && outTangent != null && !s.contentEquals(e)) { path.reset() path.createPath(s, e, outTangent, inTangent) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 0c6687ae..4ff04584 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -9,6 +9,9 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.util.fastMap +import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi +import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.LruMap import io.github.alexzhirkevich.compottie.dynamic.LottieGradient import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 @@ -16,15 +19,29 @@ import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType import kotlin.math.hypot -private val CACHE_LIMIT = 15 +@OptIn(ExperimentalCompottieApi::class) +internal class GradientCache { -internal typealias GradientCache = LinkedHashMap + private val linear = LruMap(limit = { L.shaderCacheLimit }) + + private val radial = LruMap(limit = { L.shaderCacheLimit }) + + fun getOrPut( + hash : Int, + linear : Boolean, + factory : () -> Shader + ) : Shader { + val map = if (linear) this.linear else this.radial + return map.getOrPut(hash, factory) + } +} internal fun GradientShader( gradient: LottieGradient, matrix: Matrix, cache: GradientCache ): Shader { + return when (gradient){ is LottieGradient.Linear -> { CachedLinearGradient( @@ -58,6 +75,7 @@ internal fun GradientShader( matrix: Matrix, cache: GradientCache ) : Shader { + val start = startPoint.interpolated(state) val end = endPoint.interpolated(state) @@ -106,25 +124,9 @@ private fun CachedLinearGradient( hash = (hash * 31) + tileMode.hashCode() hash = (hash * 31) + matrix.hashCode() - val cached = cache[hash] - - if (cached != null){ - cache.remove(hash) - cache[hash] = cached - return cached + return cache.getOrPut(hash, true) { + MakeLinearGradient(from, to, colors, colorStops, tileMode, matrix) } - - val shader = MakeLinearGradient(from, to, colors, colorStops, tileMode, matrix) - - if (cache.size >= CACHE_LIMIT){ - repeat(cache.size - CACHE_LIMIT + 1){ - cache.remove(cache.keys.first()) - } - } - - cache[hash] = shader - - return shader } private fun CachedRadialGradient( @@ -143,25 +145,10 @@ private fun CachedRadialGradient( hash = (hash * 31) + tileMode.hashCode() hash = (hash * 31) + matrix.hashCode() - val cached = cache[hash] - - if (cached != null){ - cache.remove(hash) - cache[hash] = cached - return cached + return cache.getOrPut(hash, false) { + MakeRadialGradient(center, radius, colors, colorStops, tileMode, matrix) } - val shader = MakeRadialGradient(center, radius, colors, colorStops, tileMode, matrix) - - if (cache.size >= CACHE_LIMIT){ - repeat(cache.size - CACHE_LIMIT + 1){ - cache.remove(cache.keys.first()) - } - } - - cache[hash] = shader - - return shader } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 967e03a0..4a43b369 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -27,6 +27,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType import io.github.alexzhirkevich.compottie.internal.layers.Layer +import io.github.alexzhirkevich.compottie.internal.platform.GradientCache import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.firstInstanceOf @@ -107,9 +108,8 @@ internal class GradientFillShape( @Transient private var dynamicShape : DynamicShapeProvider? = null - @Transient - private val gradientCache = LinkedHashMap() + private val gradientCache = GradientCache() @Transient private var roundShape : RoundShape? = null diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index 94f7cbbc..db592807 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -4,11 +4,17 @@ import App import android.graphics.BitmapShader import android.graphics.Matrix import android.os.Bundle +import android.os.StrictMode import androidx.activity.ComponentActivity import androidx.activity.compose.setContent class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { + StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder() + .detectAll() + .penaltyLog() + .penaltyDeath() + .build()); super.onCreate(savedInstanceState) setContent { App() } } diff --git a/example/desktopApp/hs_err_pid16192.log b/example/desktopApp/hs_err_pid16192.log new file mode 100644 index 00000000..122691ec --- /dev/null +++ b/example/desktopApp/hs_err_pid16192.log @@ -0,0 +1,2140 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffe037c7cfe, pid=16192, tid=14472 +# +# JRE version: OpenJDK Runtime Environment (17.0.10) (build 17.0.10+0--11572160) +# Java VM: OpenJDK 64-Bit Server VM (17.0.10+0--11572160, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) +# Problematic frame: +# C [skiko-windows-x64.dll+0x57cfe] +# +# No core dump will be written. Minidumps are not enabled by default on client versions of Windows +# +# If you would like to submit a bug report, please visit: +# https://bugreport.java.com/bugreport/crash.jsp +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- S U M M A R Y ------------ + +Command Line: -Dcompose.application.configure.swing.globals=true -Dcompose.application.resources.dir=D:\projects\compottie\example\desktopApp\build\compose\tmp\prepareAppResources -Dfile.encoding=UTF-8 -Duser.country=RU -Duser.language=ru -Duser.variant Main_desktopKt + +Host: Intel(R) Core(TM) i3-10100 CPU @ 3.60GHz, 8 cores, 15G, Windows 10 , 64 bit Build 19041 (10.0.19041.3636) +Time: Thu Jun 20 17:16:12 2024 Windows 10 , 64 bit Build 19041 (10.0.19041.3636) elapsed time: 30.578999 seconds (0d 0h 0m 30s) + +--------------- T H R E A D --------------- + +Current thread (0x0000024f589ec880): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=14472, stack(0x000000d6dbe00000,0x000000d6dbf00000)] + +Stack: [0x000000d6dbe00000,0x000000d6dbf00000], sp=0x000000d6dbefd270, free space=1012k +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [skiko-windows-x64.dll+0x57cfe] + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j org.jetbrains.skiko.redrawer.Direct3DRedrawer.makeDirectXSurface(JJIILjava/lang/Object;I)J+0 +j org.jetbrains.skiko.redrawer.Direct3DRedrawer.makeSurface(JIILorg/jetbrains/skia/SurfaceProps;I)Lorg/jetbrains/skia/Surface;+47 +j org.jetbrains.skiko.context.Direct3DContextHandler.initCanvas()V+150 +J 5745 c1 org.jetbrains.skiko.context.ContextHandler.draw()V (76 bytes) @ 0x0000024f38b9166c [0x0000024f38b91560+0x000000000000010c] +J 5744 c1 org.jetbrains.skiko.redrawer.Direct3DRedrawer.drawAndSwap(Z)V (49 bytes) @ 0x0000024f38b90d7c [0x0000024f38b90c60+0x000000000000011c] +j org.jetbrains.skiko.redrawer.Direct3DRedrawer.redrawImmediately()V+180 +j org.jetbrains.skiko.SkiaLayer.paint(Ljava/awt/Graphics;)V+102 +j androidx.compose.ui.scene.skia.WindowSkiaLayerComponent$contentComponent$1.paint(Ljava/awt/Graphics;)V+21 +j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+523 java.desktop@17.0.10 +j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+288 java.desktop@17.0.10 +j javax.swing.JLayeredPane.paint(Ljava/awt/Graphics;)V+73 java.desktop@17.0.10 +j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+523 java.desktop@17.0.10 +j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+288 java.desktop@17.0.10 +j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+523 java.desktop@17.0.10 +j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+288 java.desktop@17.0.10 +j javax.swing.JLayeredPane.paint(Ljava/awt/Graphics;)V+73 java.desktop@17.0.10 +j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+523 java.desktop@17.0.10 +j javax.swing.JComponent.paintToOffscreen(Ljava/awt/Graphics;IIIIII)V+72 java.desktop@17.0.10 +j javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(Ljavax/swing/JComponent;Ljava/awt/Image;Ljava/awt/Graphics;IIII)V+163 java.desktop@17.0.10 +j javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Ljavax/swing/JComponent;Ljava/awt/Image;Ljava/awt/Graphics;IIII)V+46 java.desktop@17.0.10 +j javax.swing.RepaintManager$PaintManager.paint(Ljavax/swing/JComponent;Ljavax/swing/JComponent;Ljava/awt/Graphics;IIII)Z+128 java.desktop@17.0.10 +j javax.swing.RepaintManager.paint(Ljavax/swing/JComponent;Ljavax/swing/JComponent;Ljava/awt/Graphics;IIII)V+52 java.desktop@17.0.10 +j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+191 java.desktop@17.0.10 +j java.awt.GraphicsCallback$PaintCallback.run(Ljava/awt/Component;Ljava/awt/Graphics;)V+2 java.desktop@17.0.10 +j sun.awt.SunGraphicsCallback.runOneComponent(Ljava/awt/Component;Ljava/awt/Rectangle;Ljava/awt/Graphics;Ljava/awt/Shape;I)V+130 java.desktop@17.0.10 +j sun.awt.SunGraphicsCallback.runComponents([Ljava/awt/Component;Ljava/awt/Graphics;I)V+157 java.desktop@17.0.10 +j java.awt.Container.paint(Ljava/awt/Graphics;)V+58 java.desktop@17.0.10 +j java.awt.Window.paint(Ljava/awt/Graphics;)V+68 java.desktop@17.0.10 +j javax.swing.RepaintManager$4.run()Ljava/lang/Void;+142 java.desktop@17.0.10 +j javax.swing.RepaintManager$4.run()Ljava/lang/Object;+1 java.desktop@17.0.10 +J 3035 c1 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object; java.base@17.0.10 (22 bytes) @ 0x0000024f38544cb4 [0x0000024f38544a20+0x0000000000000294] +j javax.swing.RepaintManager.paintDirtyRegions(Ljava/util/Map;)V+154 java.desktop@17.0.10 +j javax.swing.RepaintManager.paintDirtyRegions()V+46 java.desktop@17.0.10 +j javax.swing.RepaintManager.prePaintDirtyRegions()V+73 java.desktop@17.0.10 +j javax.swing.RepaintManager$ProcessingRunnable.run()V+37 java.desktop@17.0.10 +J 5386 c2 java.awt.EventQueue.dispatchEventImpl(Ljava/awt/AWTEvent;Ljava/lang/Object;)V java.desktop@17.0.10 (136 bytes) @ 0x0000024f3fc83b58 [0x0000024f3fc83820+0x0000000000000338] +J 5668 c2 java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V java.desktop@17.0.10 (80 bytes) @ 0x0000024f3fcd07e4 [0x0000024f3fcd0500+0x00000000000002e4] +J 5696 c2 java.awt.EventDispatchThread.pumpOneEventForFilters(I)V java.desktop@17.0.10 (113 bytes) @ 0x0000024f3fcdf540 [0x0000024f3fcdf180+0x00000000000003c0] +j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+35 java.desktop@17.0.10 +j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11 java.desktop@17.0.10 +j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4 java.desktop@17.0.10 +j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3 java.desktop@17.0.10 +j java.awt.EventDispatchThread.run()V+18 java.desktop@17.0.10 +v ~StubRoutines::call_stub + +siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), reading address 0x0000000000000000 + + +Registers: +RAX=0x000000d6dbefd2c0, RBX=0x0000000000000000, RCX=0x0000000000000000, RDX=0x000000d6dbefd370 +RSP=0x000000d6dbefd270, RBP=0x000000d6dbefd370, RSI=0x0000024f589ecb38, RDI=0x0000024f590fb678 +R8 =0x0000000000000000, R9 =0x000000000000001b, R10=0x0000000000000000, R11=0xd180000000002cb3 +R12=0x0000000000000000, R13=0x0000024f555127b8, R14=0x0000024f593f3a90, R15=0x000000d6dbefd518 +RIP=0x00007ffe037c7cfe, EFLAGS=0x0000000000010206 + + +Register to memory mapping: + +RIP=0x00007ffe037c7cfe skiko-windows-x64.dll +RAX=0x000000d6dbefd2c0 is pointing into the stack for thread: 0x0000024f589ec880 +RBX=0x0 is NULL +RCX=0x0 is NULL +RDX=0x000000d6dbefd370 is pointing into the stack for thread: 0x0000024f589ec880 +RSP=0x000000d6dbefd270 is pointing into the stack for thread: 0x0000024f589ec880 +RBP=0x000000d6dbefd370 is pointing into the stack for thread: 0x0000024f589ec880 +RSI=0x0000024f589ecb38 points into unknown readable memory: 0x00007ffe0afd9810 | 10 98 fd 0a fe 7f 00 00 +RDI=0x0000024f590fb678 points into unknown readable memory: 0x0000000000000000 | 00 00 00 00 00 00 00 00 +R8 =0x0 is NULL +R9 =0x000000000000001b is an unknown value +R10=0x0 is NULL +R11=0xd180000000002cb3 is an unknown value +R12=0x0 is NULL +R13={method} {0x0000024f555127c0} 'makeDirectXSurface' '(JJIILjava/lang/Object;I)J' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer' +R14=0x0000024f593f3a90 points into unknown readable memory: 0x00007ffe044c4048 | 48 40 4c 04 fe 7f 00 00 +R15=0x000000d6dbefd518 is pointing into the stack for thread: 0x0000024f589ec880 + + +Top of Stack: (sp=0x000000d6dbefd270) +0x000000d6dbefd270: 000000d6dbefd370 0000024f593f3a90 +0x000000d6dbefd280: 0000000000000000 0000024f589ecb38 +0x000000d6dbefd290: 000000d6dbefd359 00007ffe78da2a9d +0x000000d6dbefd2a0: 0000004764065a3d 00007ffe0a9fb612 +0x000000d6dbefd2b0: 0000000000000000 0000000000000000 +0x000000d6dbefd2c0: 0000024f58d78cc0 0000000000000000 +0x000000d6dbefd2d0: 0000000000000000 0000001c00000000 +0x000000d6dbefd2e0: 0000000100000001 0000000000000000 +0x000000d6dbefd2f0: 0000000000000000 0000000000000000 +0x000000d6dbefd300: 0000000000000000 0000000000000000 +0x000000d6dbefd310: 0000e6ae9c7d9518 00007ffe0aacbe3f +0x000000d6dbefd320: 00000000000002e8 00007ffe78da2a55 +0x000000d6dbefd330: 000000d6dbefd510 0000024f589ec880 +0x000000d6dbefd340: 0000024f589f0840 00007ffe0aacbab5 +0x000000d6dbefd350: 000000d6dbefd3d0 000000d6dbefd3d0 +0x000000d6dbefd360: 0000000000000001 0000024f59449238 +0x000000d6dbefd370: 000000d6dbefd3d0 0000024f589ec880 +0x000000d6dbefd380: 000000d6dbefd3b0 0000000000000000 +0x000000d6dbefd390: 0000000000000000 0000024f59448d00 +0x000000d6dbefd3a0: 0000000000000002 00007ffe0a6c58f5 +0x000000d6dbefd3b0: 000000070774bdd8 0000024f589ec880 +0x000000d6dbefd3c0: 0000000800040c90 000000000000001c +0x000000d6dbefd3d0: 00007ffe0adfc210 0000024f589ec880 +0x000000d6dbefd3e0: 0000f91a0b6f4a31 0000000000000003 +0x000000d6dbefd3f0: 00000000451c4000 0000000000000000 +0x000000d6dbefd400: 0000024f589ec880 000000d6dbefd550 +0x000000d6dbefd410: 0000000000000000 00000000000001d4 +0x000000d6dbefd420: 00000000000000b4 0000024f555127b8 +0x000000d6dbefd430: 000000d6dbefd4f0 0000024f3f46d621 +0x000000d6dbefd440: 000000d6dbefd440 0000024f55817394 +0x000000d6dbefd450: 000000d6dbefd498 0000024f55817bd0 +0x000000d6dbefd460: 0000000000000387 00000007000002e8 + +Instructions: (pc=0x00007ffe037c7cfe) +0x00007ffe037c7bfe: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc +0x00007ffe037c7c0e: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc +0x00007ffe037c7c1e: cc cc 40 55 53 56 57 41 54 41 56 41 57 48 8d ac +0x00007ffe037c7c2e: 24 70 ff ff ff 48 81 ec 90 01 00 00 0f 29 b4 24 +0x00007ffe037c7c3e: 80 01 00 00 48 8b 05 8f 94 f1 00 48 33 c4 48 89 +0x00007ffe037c7c4e: 45 70 48 63 95 08 01 00 00 4d 8b f1 4c 8b bd 00 +0x00007ffe037c7c5e: 01 00 00 4d 8d 48 48 48 8b f1 c7 44 24 6c 1c 00 +0x00007ffe037c7c6e: 00 00 49 8b 48 38 0f 57 c0 45 33 e4 c7 44 24 70 +0x00007ffe037c7c7e: 01 00 00 00 f3 0f 7f 44 24 58 44 89 64 24 68 49 +0x00007ffe037c7c8e: 8d 3c d0 48 c7 44 24 74 01 00 00 00 4d 8d 0c d1 +0x00007ffe037c7c9e: 44 88 64 24 7c 4c 8d 05 be 2f c9 00 48 8b 01 ff +0x00007ffe037c7cae: 50 48 48 8d 44 24 58 48 83 c7 48 48 3b c7 74 26 +0x00007ffe037c7cbe: 48 8b 1f 48 85 db 74 09 48 8b 03 48 8b cb ff 50 +0x00007ffe037c7cce: 08 48 8b 4c 24 58 48 89 5c 24 58 48 85 c9 74 06 +0x00007ffe037c7cde: 48 8b 01 ff 50 10 4d 8b c7 48 8d 4c 24 50 48 8b +0x00007ffe037c7cee: d6 e8 b5 48 fb ff 48 8b 0f 48 8d 55 00 0f 57 f6 +0x00007ffe037c7cfe: 48 8b 01 ff 50 50 48 8b 0f 48 8d 55 38 8b 58 18 +0x00007ffe037c7d0e: 48 8b 01 ff 50 50 48 8d 4d 90 66 0f 7f 75 90 48 +0x00007ffe037c7d1e: 89 4c 24 20 4c 8d 4c 24 58 44 8b c3 48 8d 4d a0 +0x00007ffe037c7d2e: 8b 50 10 e8 8c e9 fa ff 48 8b 5c 24 50 48 8d 4d +0x00007ffe037c7d3e: 88 e8 1e 11 fc ff 4c 89 64 24 48 4c 8d 45 a0 4c +0x00007ffe037c7d4e: 89 64 24 40 48 8d 4d 80 48 89 5c 24 38 45 33 c9 +0x00007ffe037c7d5e: 48 89 44 24 30 49 8b d6 c7 44 24 28 04 00 00 00 +0x00007ffe037c7d6e: 44 89 64 24 20 e8 60 87 fb ff bb ff ff ff ff 48 +0x00007ffe037c7d7e: 8b 38 4c 89 20 48 8b 4d 80 48 85 c9 74 12 8b c3 +0x00007ffe037c7d8e: f0 0f c1 41 08 83 f8 01 75 06 48 8b 01 ff 50 08 +0x00007ffe037c7d9e: 48 8d 4d a0 e8 8d de fc ff 48 8b 4c 24 50 48 85 +0x00007ffe037c7dae: c9 74 0a ba 08 00 00 00 e8 0e 81 fc ff 48 8b 4c +0x00007ffe037c7dbe: 24 60 48 85 c9 74 10 f0 0f c1 59 08 83 fb 01 75 +0x00007ffe037c7dce: 06 48 8b 11 ff 52 08 48 8b 4c 24 58 48 85 c9 74 +0x00007ffe037c7dde: 06 48 8b 11 ff 52 10 48 8b c7 48 8b 4d 70 48 33 +0x00007ffe037c7dee: cc e8 38 b5 fb ff 0f 28 b4 24 80 01 00 00 48 81 + + +Stack slot to memory mapping: +stack at sp + 0 slots: 0x000000d6dbefd370 is pointing into the stack for thread: 0x0000024f589ec880 +stack at sp + 1 slots: 0x0000024f593f3a90 points into unknown readable memory: 0x00007ffe044c4048 | 48 40 4c 04 fe 7f 00 00 +stack at sp + 2 slots: 0x0 is NULL +stack at sp + 3 slots: 0x0000024f589ecb38 points into unknown readable memory: 0x00007ffe0afd9810 | 10 98 fd 0a fe 7f 00 00 +stack at sp + 4 slots: 0x000000d6dbefd359 is pointing into the stack for thread: 0x0000024f589ec880 +stack at sp + 5 slots: 0x00007ffe78da2a9d Dxgi.dll +stack at sp + 6 slots: 0x0000004764065a3d is an unknown value +stack at sp + 7 slots: 0x00007ffe0a9fb612 jvm.dll + + +Compiled method (c1) 30644 5745 3 org.jetbrains.skiko.context.ContextHandler::draw (76 bytes) + total in heap [0x0000024f38b91290,0x0000024f38b929f8] = 5992 + relocation [0x0000024f38b913e8,0x0000024f38b91560] = 376 + main code [0x0000024f38b91560,0x0000024f38b923a0] = 3648 + stub code [0x0000024f38b923a0,0x0000024f38b92478] = 216 + oops [0x0000024f38b92478,0x0000024f38b92480] = 8 + metadata [0x0000024f38b92480,0x0000024f38b92530] = 176 + scopes data [0x0000024f38b92530,0x0000024f38b92718] = 488 + scopes pcs [0x0000024f38b92718,0x0000024f38b92978] = 608 + dependencies [0x0000024f38b92978,0x0000024f38b92998] = 32 + handler table [0x0000024f38b92998,0x0000024f38b929b0] = 24 + nul chk table [0x0000024f38b929b0,0x0000024f38b929f8] = 72 + +[Constant Pool (empty)] + +[MachCode] +[Entry Point] + # {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler' + # [sp+0xe0] (sp of caller) + 0x0000024f38b91560: 448b 5208 | 49bb 0000 | 0000 0800 | 0000 4d03 | d34c 3bd0 + + 0x0000024f38b91574: ; {runtime_call ic_miss_stub} + 0x0000024f38b91574: 0f85 06fb | 9106 660f | 1f44 0000 +[Verified Entry Point] + 0x0000024f38b91580: 8984 2400 | 90ff ff55 | 4881 ecd0 | 0000 0048 | 8994 2498 + + 0x0000024f38b91594: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91594: 0000 0048 | be30 e50a | 564f 0200 | 008b becc | 0000 0083 | c702 89be | cc00 0000 | 81e7 fe07 + 0x0000024f38b915b4: 0000 83ff | 000f 846e | 0b00 0048 + + 0x0000024f38b915c0: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b915c0: 8bf2 48bf | 30e5 0a56 | 4f02 0000 + + 0x0000024f38b915cc: ; {metadata('org/jetbrains/skiko/context/Direct3DContextHandler')} + 0x0000024f38b915cc: 49ba e8fc | 2400 0800 | 0000 4c89 | 9720 0100 | 0048 8387 | 2801 0000 | 0148 8bf2 | 488b d60f + 0x0000024f38b915ec: ; {optimized virtual_call} + 0x0000024f38b915ec: 1f40 00e8 + + 0x0000024f38b915f0: ; ImmutableOopMap {[152]=Oop } + ;*invokevirtual initContext {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@1 (line 39) + 0x0000024f38b915f0: b10d 0000 + + 0x0000024f38b915f4: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b915f4: 83f8 0048 | ba30 e50a | 564f 0200 | 0048 be58 | 0100 0000 | 0000 000f | 840a 0000 | 0048 be48 + 0x0000024f38b91614: 0100 0000 | 0000 0048 | 8b3c 3248 | 8d7f 0148 | 893c 320f | 8495 0900 | 0048 8b94 | 2498 0000 + 0x0000024f38b91634: 0048 8bf2 + + 0x0000024f38b91638: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91638: 48bf 30e5 | 0a56 4f02 + + 0x0000024f38b91640: ; {metadata('org/jetbrains/skiko/context/Direct3DContextHandler')} + 0x0000024f38b91640: 0000 49ba | e8fc 2400 | 0800 0000 | 4c89 9788 | 0100 0048 | 8387 9001 | 0000 0148 | 8bf2 488b + 0x0000024f38b91660: d666 0f1f + + 0x0000024f38b91664: ; {optimized virtual_call} + 0x0000024f38b91664: 4400 00e8 + + 0x0000024f38b91668: ; ImmutableOopMap {[152]=Oop } + ;*invokevirtual initCanvas {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@21 (line 42) + 0x0000024f38b91668: 490d 0000 | 488b 9424 | 9800 0000 | 8b72 2048 | c1e6 0348 | 89b4 24a0 | 0000 0048 + + 0x0000024f38b91684: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91684: 83fe 0048 | bf30 e50a | 564f 0200 | 0048 bbb0 | 0100 0000 | 0000 000f | 840a 0000 | 0048 bbc0 + 0x0000024f38b916a4: 0100 0000 | 0000 0048 | 8b04 1f48 | 8d40 0148 | 8904 1f0f | 84b7 0800 | 0048 8bfa + + 0x0000024f38b916c0: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b916c0: 48bb 30e5 | 0a56 4f02 | 0000 8b7f | 0849 ba00 | 0000 0008 | 0000 0049 | 03fa 483b | bbe0 0100 + 0x0000024f38b916e0: 0075 0d48 | 8383 e801 | 0000 01e9 | 6600 0000 | 483b bbf0 | 0100 0075 | 0d48 8383 | f801 0000 + 0x0000024f38b91700: 01e9 5000 | 0000 4881 | bbe0 0100 | 0000 0000 | 0075 1748 | 89bb e001 | 0000 48c7 | 83e8 0100 + 0x0000024f38b91720: 0001 0000 | 00e9 2c00 | 0000 4881 | bbf0 0100 | 0000 0000 | 0075 1748 | 89bb f001 | 0000 48c7 + 0x0000024f38b91740: 83f8 0100 | 0001 0000 | 00e9 0800 | 0000 4883 | 83d0 0100 + + 0x0000024f38b91754: ; {metadata(method data for {method} {0x0000024f5551b618} 'isTransparentBackground' '()Z' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91754: 0001 48bf | 30f7 0a56 | 4f02 0000 | 8b9f cc00 | 0000 83c3 | 0289 9fcc | 0000 0081 | e3fe ff1f + 0x0000024f38b91774: 0083 fb00 | 0f84 d009 + + 0x0000024f38b9177c: ; {metadata(method data for {method} {0x0000024f5551b618} 'isTransparentBackground' '()Z' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b9177c: 0000 48bf | 30f7 0a56 | 4f02 0000 | 4883 8710 | 0100 0001 + + 0x0000024f38b91790: ; {metadata(method data for {method} {0x0000024f54594de0} 'getHostOs' '()Lorg/jetbrains/skiko/OS;' in 'org/jetbrains/skiko/OsArch_jvmKt')} + 0x0000024f38b91790: 48bf 30d7 | 0256 4f02 | 0000 8b9f | cc00 0000 | 83c3 0289 | 9fcc 0000 | 0081 e3fe | ff1f 0083 + 0x0000024f38b917b0: fb00 0f84 | b709 0000 + + 0x0000024f38b917b8: ; {oop(a 'kotlin/SynchronizedLazyImpl'{0x0000000703094d60})} + 0x0000024f38b917b8: 48bf 604d | 0903 0700 | 0000 488b + + 0x0000024f38b917c4: ; {metadata(method data for {method} {0x0000024f54594de0} 'getHostOs' '()Lorg/jetbrains/skiko/OS;' in 'org/jetbrains/skiko/OsArch_jvmKt')} + 0x0000024f38b917c4: df48 b830 | d702 564f | 0200 0048 | 8380 2801 | 0000 0148 | 8bd7 0f1f + + 0x0000024f38b917dc: ; {optimized virtual_call} + 0x0000024f38b917dc: 4400 00e8 + + 0x0000024f38b917e0: ; ImmutableOopMap {[152]=Oop [160]=Oop } + ;*invokeinterface getValue {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.OsArch_jvmKt::getHostOs@5 (line 3) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@0 (line 51) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b917e0: 5c81 f806 | 4883 f800 + + 0x0000024f38b917e8: ; {metadata(method data for {method} {0x0000024f54594de0} 'getHostOs' '()Lorg/jetbrains/skiko/OS;' in 'org/jetbrains/skiko/OsArch_jvmKt')} + 0x0000024f38b917e8: 7516 48bf | 30d7 0256 | 4f02 0000 | 808f 4101 | 0000 01e9 | d200 0000 + + 0x0000024f38b91800: ; {metadata('org/jetbrains/skiko/OS')} + 0x0000024f38b91800: 48bb d04d | 0800 0800 | 0000 8b70 | 0849 ba00 | 0000 0008 | 0000 0049 | 03f2 483b | de0f 8593 + 0x0000024f38b91820: ; {metadata(method data for {method} {0x0000024f54594de0} 'getHostOs' '()Lorg/jetbrains/skiko/OS;' in 'org/jetbrains/skiko/OsArch_jvmKt')} + 0x0000024f38b91820: 0000 0048 | bf30 d702 | 564f 0200 | 008b 5808 | 49ba 0000 | 0000 0800 | 0000 4903 | da48 3b9f + 0x0000024f38b91840: 5801 0000 | 750d 4883 | 8760 0100 | 0001 e97f | 0000 0048 | 3b9f 6801 | 0000 750d | 4883 8770 + 0x0000024f38b91860: 0100 0001 | e969 0000 | 0048 81bf | 5801 0000 | 0000 0000 | 7517 4889 | 9f58 0100 | 0048 c787 + 0x0000024f38b91880: 6001 0000 | 0100 0000 | e945 0000 | 0048 81bf | 6801 0000 | 0000 0000 | 7517 4889 | 9f68 0100 + 0x0000024f38b918a0: 0048 c787 | 7001 0000 | 0100 0000 | e921 0000 | 00e9 1c00 + + 0x0000024f38b918b4: ; {metadata(method data for {method} {0x0000024f54594de0} 'getHostOs' '()Lorg/jetbrains/skiko/OS;' in 'org/jetbrains/skiko/OsArch_jvmKt')} + 0x0000024f38b918b4: 0000 48bf | 30d7 0256 | 4f02 0000 | 4883 af48 | 0100 0001 | e9c3 0800 | 00e9 0000 | 0000 488b + 0x0000024f38b918d4: ; {oop(a 'org/jetbrains/skiko/OS'{0x00000007030bb9c8})} + 0x0000024f38b918d4: d049 bac8 | b90b 0307 | 0000 0049 + + 0x0000024f38b918e0: ; {metadata(method data for {method} {0x0000024f5551b618} 'isTransparentBackground' '()Z' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b918e0: 3bd2 48ba | 30f7 0a56 | 4f02 0000 | 48be 2001 | 0000 0000 | 0000 0f85 | 0a00 0000 | 48be 3001 + 0x0000024f38b91900: 0000 0000 | 0000 488b | 3c32 488d | 7f01 4889 | 3c32 0f85 | 1200 0000 | be01 0000 | 0048 8b94 + 0x0000024f38b91920: 2498 0000 | 00e9 9603 | 0000 488b | 9424 9800 | 0000 8b72 | 0c48 c1e6 | 0348 3b06 + + 0x0000024f38b9193c: ; {metadata(method data for {method} {0x0000024f5551b618} 'isTransparentBackground' '()Z' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b9193c: 488b fe48 | bb30 f70a | 564f 0200 | 0048 8383 | 4001 0000 + + 0x0000024f38b91950: ; {metadata(method data for {method} {0x0000024f55153978} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/SkiaLayer')} + 0x0000024f38b91950: 0148 bf40 | b802 564f | 0200 008b | 9fcc 0000 | 0083 c302 | 899f cc00 | 0000 81e3 | feff 1f00 + 0x0000024f38b91970: 83fb 000f | 8425 0800 | 008b b67c | 0100 0048 | c1e6 0348 | 3b06 488b + + 0x0000024f38b91988: ; {metadata(method data for {method} {0x0000024f55153978} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/SkiaLayer')} + 0x0000024f38b91988: fe48 bb40 | b802 564f | 0200 0048 | 8383 1001 + + 0x0000024f38b91998: ; {metadata(method data for {method} {0x0000024f5516d360} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/FullscreenAdapter')} + 0x0000024f38b91998: 0000 0148 | bfc8 b902 | 564f 0200 | 008b 9fcc | 0000 0083 | c302 899f | cc00 0000 | 81e3 feff + 0x0000024f38b919b8: 1f00 83fb | 000f 8401 | 0800 000f | be7e 0d83 + + 0x0000024f38b919c8: ; {metadata(method data for {method} {0x0000024f5516d360} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/FullscreenAdapter')} + 0x0000024f38b919c8: ff00 48bf | c8b9 0256 | 4f02 0000 | 48bb 1001 | 0000 0000 | 0000 0f84 | 0a00 0000 | 48bb 2001 + 0x0000024f38b919e8: 0000 0000 | 0000 488b | 041f 488d | 4001 4889 | 041f 0f84 | 3402 0000 | 8b76 1048 | c1e6 0348 + 0x0000024f38b91a08: 3b06 488b + + 0x0000024f38b91a0c: ; {metadata(method data for {method} {0x0000024f5516d360} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/FullscreenAdapter')} + 0x0000024f38b91a0c: fe48 bbc8 | b902 564f | 0200 0048 | 8383 3001 + + 0x0000024f38b91a1c: ; {metadata(method data for {method} {0x0000024f55169530} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/HardwareLayer')} + 0x0000024f38b91a1c: 0000 0148 | bf40 f1fd | 554f 0200 | 008b 9fcc | 0000 0083 | c302 899f | cc00 0000 | 81e3 feff + 0x0000024f38b91a3c: 1f00 83fb | 000f 84a3 + + 0x0000024f38b91a44: ; {metadata(method data for {method} {0x0000024f55169530} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/HardwareLayer')} + 0x0000024f38b91a44: 0700 0048 | bf40 f1fd | 554f 0200 | 0048 8387 | 1001 0000 + + 0x0000024f38b91a58: ; {metadata(method data for {method} {0x0000024f55946040} 'getPlatformOperations' '()Lorg/jetbrains/skiko/PlatformOperations;' in 'org/jetbrains/skiko/PlatformOperationsKt')} + 0x0000024f38b91a58: 0148 bf08 | e9fd 554f | 0200 008b | 9fcc 0000 | 0083 c302 | 899f cc00 | 0000 81e3 | feff 1f00 + 0x0000024f38b91a78: 83fb 000f | 848a 0700 + + 0x0000024f38b91a80: ; {oop(a 'kotlin/SynchronizedLazyImpl'{0x0000000702e34950})} + 0x0000024f38b91a80: 0048 bf50 | 49e3 0207 | 0000 0048 + + 0x0000024f38b91a8c: ; {metadata(method data for {method} {0x0000024f55946040} 'getPlatformOperations' '()Lorg/jetbrains/skiko/PlatformOperations;' in 'org/jetbrains/skiko/PlatformOperationsKt')} + 0x0000024f38b91a8c: 8bdf 48b8 | 08e9 fd55 | 4f02 0000 | 4883 8028 | 0100 0001 | 488b d748 | 89b4 24a8 | 0000 000f + 0x0000024f38b91aac: ; {optimized virtual_call} + 0x0000024f38b91aac: 1f40 00e8 + + 0x0000024f38b91ab0: ; ImmutableOopMap {[160]=Oop [152]=Oop [168]=Oop } + ;*invokeinterface getValue {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.PlatformOperationsKt::getPlatformOperations@5 (line 64) + ; - org.jetbrains.skiko.HardwareLayer::getFullscreen@0 (line 53) + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b91ab0: 8c7e f806 | 4883 f800 + + 0x0000024f38b91ab8: ; {metadata(method data for {method} {0x0000024f55946040} 'getPlatformOperations' '()Lorg/jetbrains/skiko/PlatformOperations;' in 'org/jetbrains/skiko/PlatformOperationsKt')} + 0x0000024f38b91ab8: 7516 48be | 08e9 fd55 | 4f02 0000 | 808e 4101 | 0000 01e9 | ee00 0000 + + 0x0000024f38b91ad0: ; {metadata('org/jetbrains/skiko/PlatformOperations')} + 0x0000024f38b91ad0: 48bf 3070 | 3000 0800 | 0000 8b70 | 0849 ba00 | 0000 0008 | 0000 0049 | 03f2 483b | 7e20 0f84 + 0x0000024f38b91af0: 1b00 0000 | 483b f70f | 8412 0000 + + 0x0000024f38b91afc: ; {runtime_call slow_subtype_check Runtime1 stub} + 0x0000024f38b91afc: 0056 57e8 | 7c5e 9c06 | 5e5e 83fe | 000f 8493 + + 0x0000024f38b91b0c: ; {metadata(method data for {method} {0x0000024f55946040} 'getPlatformOperations' '()Lorg/jetbrains/skiko/PlatformOperations;' in 'org/jetbrains/skiko/PlatformOperationsKt')} + 0x0000024f38b91b0c: 0000 0048 | be08 e9fd | 554f 0200 | 008b 7808 | 49ba 0000 | 0000 0800 | 0000 4903 | fa48 3bbe + 0x0000024f38b91b2c: 5801 0000 | 750d 4883 | 8660 0100 | 0001 e97f | 0000 0048 | 3bbe 6801 | 0000 750d | 4883 8670 + 0x0000024f38b91b4c: 0100 0001 | e969 0000 | 0048 81be | 5801 0000 | 0000 0000 | 7517 4889 | be58 0100 | 0048 c786 + 0x0000024f38b91b6c: 6001 0000 | 0100 0000 | e945 0000 | 0048 81be | 6801 0000 | 0000 0000 | 7517 4889 | be68 0100 + 0x0000024f38b91b8c: 0048 c786 | 7001 0000 | 0100 0000 | e921 0000 | 00e9 1c00 + + 0x0000024f38b91ba0: ; {metadata(method data for {method} {0x0000024f55946040} 'getPlatformOperations' '()Lorg/jetbrains/skiko/PlatformOperations;' in 'org/jetbrains/skiko/PlatformOperationsKt')} + 0x0000024f38b91ba0: 0000 48be | 08e9 fd55 | 4f02 0000 | 4883 ae48 | 0100 0001 | e973 0600 | 00e9 0000 | 0000 488b + 0x0000024f38b91bc0: d048 83fa | 000f 8428 + + 0x0000024f38b91bc8: ; {metadata('org/jetbrains/skiko/PlatformOperationsKt$platformOperations$2$2')} + 0x0000024f38b91bc8: 0000 0048 | bb50 7230 | 0008 0000 | 008b 7208 | 49ba 0000 | 0000 0800 | 0000 4903 | f248 3bde + 0x0000024f38b91be8: 0f85 4706 | 0000 e900 | 0000 004c | 8bc2 483b | 024c 8bc2 + + 0x0000024f38b91bfc: ; {metadata(method data for {method} {0x0000024f55169530} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/HardwareLayer')} + 0x0000024f38b91bfc: 48be 40f1 | fd55 4f02 | 0000 4883 | 8670 0100 | 0001 4c8b | 8424 a800 + + 0x0000024f38b91c14: ; {optimized virtual_call} + 0x0000024f38b91c14: 0000 90e8 + + 0x0000024f38b91c18: ; ImmutableOopMap {[160]=Oop [152]=Oop } + ;*invokeinterface isFullscreen {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.HardwareLayer::getFullscreen@7 (line 53) + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b91c18: 647e c5ff + + 0x0000024f38b91c1c: ; {metadata(method data for {method} {0x0000024f5516d360} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/FullscreenAdapter')} + 0x0000024f38b91c1c: 83e0 0148 | bac8 b902 | 564f 0200 | 00ff 8268 | 0100 00e9 | 0700 0000 | 0fbe 560c | 488b c283 + 0x0000024f38b91c3c: e001 83e0 | 0183 f800 + + 0x0000024f38b91c44: ; {metadata(method data for {method} {0x0000024f5551b618} 'isTransparentBackground' '()Z' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91c44: 48ba 30f7 | 0a56 4f02 | 0000 48be | 7801 0000 | 0000 0000 | 0f84 0a00 | 0000 48be | 8801 0000 + 0x0000024f38b91c64: 0000 0000 | 488b 3c32 | 488d 7f01 | 4889 3c32 | 0f84 1200 | 0000 be00 | 0000 0048 | 8b94 2498 + 0x0000024f38b91c84: 0000 00e9 | 3400 0000 | 488b 9424 | 9800 0000 | 8b72 0c48 | c1e6 0348 | 3b06 488b + + 0x0000024f38b91ca0: ; {metadata(method data for {method} {0x0000024f5551b618} 'isTransparentBackground' '()Z' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91ca0: fe48 bb30 | f70a 564f | 0200 0048 | 8383 9801 | 0000 010f | beb6 1b01 | 0000 83e6 | 0183 e601 + 0x0000024f38b91cc0: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91cc0: 83fe 0048 | be30 e50a | 564f 0200 | 0048 bf08 | 0200 0000 | 0000 000f | 840a 0000 | 0048 bf18 + 0x0000024f38b91ce0: 0200 0000 | 0000 0048 | 8b1c 3e48 | 8d5b 0148 | 891c 3e0f | 841a 0000 + + 0x0000024f38b91cf8: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91cf8: 0048 be30 | e50a 564f | 0200 00ff | 8628 0200 | 00be 0000 | 0000 e905 | 0000 00be | ffff ffff + 0x0000024f38b91d18: 89b4 24b0 | 0000 0048 | 8bb4 24a0 | 0000 0048 | 3b06 488b + + 0x0000024f38b91d2c: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91d2c: de48 b830 | e50a 564f | 0200 0048 | 8380 4002 + + 0x0000024f38b91d3c: ; {metadata(method data for {method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b91d3c: 0000 0148 | bb40 f90a | 564f 0200 | 008b 83cc | 0000 0083 | c002 8983 | cc00 0000 | 81e0 feff + 0x0000024f38b91d5c: 1f00 83f8 | 000f 84e2 + + 0x0000024f38b91d64: ; {oop(a 'org/jetbrains/skia/impl/Stats'{0x000000070312b738})} + 0x0000024f38b91d64: 0400 0048 | bb38 b712 | 0307 0000 | 0048 8bc3 + + 0x0000024f38b91d74: ; {metadata(method data for {method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b91d74: 48b9 40f9 | 0a56 4f02 | 0000 4883 | 8110 0100 | 0001 488b | d366 0f1f + + 0x0000024f38b91d8c: ; {optimized virtual_call} + 0x0000024f38b91d8c: 4400 00e8 + + 0x0000024f38b91d90: ; ImmutableOopMap {[160]=Oop [152]=Oop } + ;*invokevirtual onNativeCall {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skia.Canvas::clear@3 (line 950) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b91d90: 8cb1 f706 | 448b 8424 | b000 0000 | 488b b424 | a000 0000 + + 0x0000024f38b91da4: ; {metadata(method data for {method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b91da4: 488b d648 | bf40 f90a | 564f 0200 | 0048 8387 | 4801 0000 | 0148 8b56 + + 0x0000024f38b91dbc: ; {metadata(method data for {method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b91dbc: 1048 bf40 | f90a 564f | 0200 0048 | 8387 8001 + + 0x0000024f38b91dcc: ; {metadata(method data for {method} {0x0000024f5573d9c0} 'access$_nClear' '(JI)V' in 'org/jetbrains/skia/CanvasKt')} + 0x0000024f38b91dcc: 0000 0148 | bf50 fb0a | 564f 0200 | 008b 9fcc | 0000 0083 | c302 899f | cc00 0000 | 81e3 feff + 0x0000024f38b91dec: 1f00 83fb | 000f 8473 + + 0x0000024f38b91df4: ; {metadata(method data for {method} {0x0000024f5573d9c0} 'access$_nClear' '(JI)V' in 'org/jetbrains/skia/CanvasKt')} + 0x0000024f38b91df4: 0400 0048 | bf50 fb0a | 564f 0200 | 0048 8387 | 1001 0000 | 0166 0f1f + + 0x0000024f38b91e0c: ; {static_call} + 0x0000024f38b91e0c: 4400 00e8 + + 0x0000024f38b91e10: ; ImmutableOopMap {[152]=Oop [160]=Oop } + ;*invokestatic _nClear {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skia.CanvasKt::access$_nClear@2 (line 1) + ; - org.jetbrains.skia.Canvas::clear@12 (line 952) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b91e10: f105 0000 + + 0x0000024f38b91e14: ; {metadata(method data for {method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b91e14: 49b8 40f9 | 0a56 4f02 | 0000 4983 | 8090 0100 + + 0x0000024f38b91e24: ; {metadata(method data for {method} {0x0000024f552be860} 'reachabilityBarrier' '(Ljava/lang/Object;)V' in 'org/jetbrains/skia/impl/Native_jvmKt')} + 0x0000024f38b91e24: 0001 49b8 | d884 e555 | 4f02 0000 | 418b 90cc | 0000 0083 | c202 4189 | 90cc 0000 | 0081 e2fe + 0x0000024f38b91e44: ff1f 0083 | fa00 0f84 | 3b04 0000 + + 0x0000024f38b91e50: ; {metadata(method data for {method} {0x0000024f552be860} 'reachabilityBarrier' '(Ljava/lang/Object;)V' in 'org/jetbrains/skia/impl/Native_jvmKt')} + 0x0000024f38b91e50: 49b8 d884 | e555 4f02 | 0000 4983 | 8010 0100 + + 0x0000024f38b91e60: ; {metadata(method data for {method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38b91e60: 0001 49b8 | d0b9 4354 | 4f02 0000 | 418b 90cc | 0000 0083 | c202 4189 | 90cc 0000 | 0081 e2fe + 0x0000024f38b91e80: ff1f 0083 | fa00 0f84 | 2004 0000 + + 0x0000024f38b91e8c: ; {metadata(method data for {method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b91e8c: 49b8 40f9 | 0a56 4f02 | 0000 41ff | 80a0 0100 | 0048 8b94 | 2498 0000 | 008b 7210 | 48c1 e603 + 0x0000024f38b91eac: ; implicit exception: dispatches to 0x0000024f38b922cd + 0x0000024f38b91eac: 483b 064c + + 0x0000024f38b91eb0: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91eb0: 8bc6 48bf | 30e5 0a56 | 4f02 0000 | 458b 4008 | 49ba 0000 | 0000 0800 | 0000 4d03 | c24c 3b87 + 0x0000024f38b91ed0: 8802 0000 | 750d 4883 | 8790 0200 | 0001 e966 | 0000 004c | 3b87 9802 | 0000 750d | 4883 87a0 + 0x0000024f38b91ef0: 0200 0001 | e950 0000 | 0048 81bf | 8802 0000 | 0000 0000 | 7517 4c89 | 8788 0200 | 0048 c787 + 0x0000024f38b91f10: 9002 0000 | 0100 0000 | e92c 0000 | 0048 81bf | 9802 0000 | 0000 0000 | 7517 4c89 | 8798 0200 + 0x0000024f38b91f30: 0048 c787 | a002 0000 | 0100 0000 | e908 0000 | 0048 8387 | 7802 0000 | 014c 8b84 | 24a0 0000 + 0x0000024f38b91f50: 0048 8bd6 | 9048 b880 | b44f 624f + + 0x0000024f38b91f5c: ; {virtual_call} + 0x0000024f38b91f5c: 0200 00e8 + + 0x0000024f38b91f60: ; ImmutableOopMap {[152]=Oop } + ;*invokeinterface invoke {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@59 (line 45) + 0x0000024f38b91f60: c446 9206 + + 0x0000024f38b91f64: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91f64: 48ba 30e5 | 0a56 4f02 | 0000 ff82 | b002 0000 | 488b 9424 | 9800 0000 + + 0x0000024f38b91f7c: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b91f7c: 48be 30e5 | 0a56 4f02 + + 0x0000024f38b91f84: ; {metadata('org/jetbrains/skiko/context/Direct3DContextHandler')} + 0x0000024f38b91f84: 0000 49ba | e8fc 2400 | 0800 0000 | 4c89 96d8 | 0200 0048 | 8386 e002 | 0000 0148 | 8b94 2498 + 0x0000024f38b91fa4: ; {optimized virtual_call} + 0x0000024f38b91fa4: 0000 00e8 + + 0x0000024f38b91fa8: ; ImmutableOopMap {} + ;*invokevirtual flush {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@72 (line 47) + 0x0000024f38b91fa8: 7904 0000 | 4881 c4d0 | 0000 005d + + 0x0000024f38b91fb4: ; {poll_return} + 0x0000024f38b91fb4: 493b a750 | 0300 000f | 8711 0300 | 00c3 660f | 1f44 0000 + + 0x0000024f38b91fc8: ; {no_reloc} + 0x0000024f38b91fc8: e92a 0300 | 0000 0000 | 0000 80ba | 5b01 0000 | 040f 8527 | 0300 0049 | 8b87 0801 | 0000 488d + 0x0000024f38b91fe8: 7828 493b | bf18 0100 | 000f 870f | 0300 0049 | 89bf 0801 | 0000 48c7 | 0001 0000 | 0048 8bca + 0x0000024f38b92008: 49ba 0000 | 0000 0800 | 0000 492b | ca89 4808 | 4833 c989 | 480c 4833 | c948 8948 | 1048 8948 + 0x0000024f38b92028: 1848 8948 | 204c 8bc0 + + 0x0000024f38b92030: ; {metadata(method data for {method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b92030: 49b9 30e5 | 0a56 4f02 | 0000 4983 | 8168 0100 + + 0x0000024f38b92040: ; {oop("Cannot init graphic context"{0x0000000704c1a300})} + 0x0000024f38b92040: 0001 49b8 | 00a3 c104 | 0700 0000 + + 0x0000024f38b9204c: ; {oop(NULL)} + 0x0000024f38b9204c: 49b9 0000 | 0000 0000 | 0000 bf02 + + 0x0000024f38b92058: ; {oop(NULL)} + 0x0000024f38b92058: 0000 0048 | be00 0000 | 0000 0000 | 0048 8bd0 | 4889 8424 | b800 0000 | 0f1f 8000 + + 0x0000024f38b92074: ; {optimized virtual_call} + 0x0000024f38b92074: 0000 00e8 + + 0x0000024f38b92078: ; ImmutableOopMap {[184]=Oop } + ;*invokespecial {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@16 (line 40) + 0x0000024f38b92078: 04f3 9106 | 488b 8424 | b800 0000 | e9eb 0200 | 0049 8b87 | e003 0000 | 4d33 d24d | 8997 e003 + 0x0000024f38b92098: 0000 4d33 | d24d 8997 | e803 0000 | 488b b424 | a000 0000 | 488b 9424 | 9800 0000 + + 0x0000024f38b920b4: ; {metadata(method data for {method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b920b4: 48bf 40f9 | 0a56 4f02 | 0000 4883 | 87b8 0100 + + 0x0000024f38b920c4: ; {metadata(method data for {method} {0x0000024f552be860} 'reachabilityBarrier' '(Ljava/lang/Object;)V' in 'org/jetbrains/skia/impl/Native_jvmKt')} + 0x0000024f38b920c4: 0001 48bf | d884 e555 | 4f02 0000 | 8b9f cc00 | 0000 83c3 | 0289 9fcc | 0000 0081 | e3fe ff1f + 0x0000024f38b920e4: 0083 fb00 | 0f84 2502 + + 0x0000024f38b920ec: ; {metadata(method data for {method} {0x0000024f552be860} 'reachabilityBarrier' '(Ljava/lang/Object;)V' in 'org/jetbrains/skia/impl/Native_jvmKt')} + 0x0000024f38b920ec: 0000 48bf | d884 e555 | 4f02 0000 | 4883 8710 | 0100 0001 + + 0x0000024f38b92100: ; {metadata(method data for {method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38b92100: 48bf d0b9 | 4354 4f02 | 0000 8b9f | cc00 0000 | 83c3 0289 | 9fcc 0000 | 0081 e3fe | ff1f 0083 + 0x0000024f38b92120: fb00 0f84 | 0c02 0000 | e947 0200 + + 0x0000024f38b9212c: ; {metadata({method} {0x0000024f5551b500} 'draw' '()V' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b9212c: 0049 baf8 | b451 554f | 0200 004c | 8954 2408 | 48c7 0424 | ffff ffff + + 0x0000024f38b92144: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92144: e837 7f9c + + 0x0000024f38b92148: ; ImmutableOopMap {rdx=Oop [152]=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.context.ContextHandler::draw@-1 (line 39) + 0x0000024f38b92148: 06e9 71f4 + + 0x0000024f38b9214c: ; {metadata({method} {0x0000024f5551b618} 'isTransparentBackground' '()Z' in 'org/jetbrains/skiko/context/ContextHandler')} + 0x0000024f38b9214c: ffff 49ba | 10b6 5155 | 4f02 0000 | 4c89 5424 | 0848 c704 | 24ff ffff + + 0x0000024f38b92164: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92164: ffe8 167f + + 0x0000024f38b92168: ; ImmutableOopMap {rdx=Oop [152]=Oop [160]=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@-1 (line 51) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b92168: 9c06 e90f + + 0x0000024f38b9216c: ; {metadata({method} {0x0000024f54594de0} 'getHostOs' '()Lorg/jetbrains/skiko/OS;' in 'org/jetbrains/skiko/OsArch_jvmKt')} + 0x0000024f38b9216c: f6ff ff49 | bad8 4d59 | 544f 0200 | 004c 8954 | 2408 48c7 | 0424 ffff + + 0x0000024f38b92184: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92184: ffff e8f5 + + 0x0000024f38b92188: ; ImmutableOopMap {rdx=Oop [152]=Oop [160]=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.OsArch_jvmKt::getHostOs@-1 (line 3) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@0 (line 51) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b92188: 7e9c 06e9 | 28f6 ffff | 4889 0424 + + 0x0000024f38b92194: ; {runtime_call throw_class_cast_exception Runtime1 stub} + 0x0000024f38b92194: e807 529c + + 0x0000024f38b92198: ; ImmutableOopMap {[152]=Oop [160]=Oop } + ;*checkcast {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.OsArch_jvmKt::getHostOs@10 (line 3) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@0 (line 51) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b92198: 06e8 022e + + 0x0000024f38b9219c: ; ImmutableOopMap {[160]=Oop rdx=Oop [152]=Oop rsi=Oop } + ;*invokevirtual getFullscreen {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + ; {metadata({method} {0x0000024f55153978} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/SkiaLayer')} + 0x0000024f38b9219c: 9c06 49ba | 7039 1555 | 4f02 0000 | 4c89 5424 | 0848 c704 | 24ff ffff + + 0x0000024f38b921b4: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b921b4: ffe8 c67e + + 0x0000024f38b921b8: ; ImmutableOopMap {[160]=Oop rdx=Oop [152]=Oop rsi=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@-1 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b921b8: 9c06 e9ba + + 0x0000024f38b921bc: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b921bc: f7ff ffe8 + + 0x0000024f38b921c0: ; ImmutableOopMap {[160]=Oop rdx=Oop [152]=Oop rsi=Oop } + ;*invokevirtual getFullscreen {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b921c0: dc2d 9c06 + + 0x0000024f38b921c4: ; {metadata({method} {0x0000024f5516d360} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/FullscreenAdapter')} + 0x0000024f38b921c4: 49ba 58d3 | 1655 4f02 | 0000 4c89 | 5424 0848 | c704 24ff + + 0x0000024f38b921d8: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b921d8: ffff ffe8 + + 0x0000024f38b921dc: ; ImmutableOopMap {[160]=Oop rdx=Oop [152]=Oop rsi=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@-1 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b921dc: a07e 9c06 | e9de f7ff + + 0x0000024f38b921e4: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b921e4: ffe8 b62d + + 0x0000024f38b921e8: ; ImmutableOopMap {[160]=Oop [152]=Oop rsi=Oop } + ;*invokevirtual getFullscreen {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + ; {metadata({method} {0x0000024f55169530} 'getFullscreen' '()Z' in 'org/jetbrains/skiko/HardwareLayer')} + 0x0000024f38b921e8: 9c06 49ba | 2895 1655 | 4f02 0000 | 4c89 5424 | 0848 c704 | 24ff ffff + + 0x0000024f38b92200: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92200: ffe8 7a7e + + 0x0000024f38b92204: ; ImmutableOopMap {[160]=Oop [152]=Oop rsi=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.HardwareLayer::getFullscreen@-1 (line 53) + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b92204: 9c06 e93c + + 0x0000024f38b92208: ; {metadata({method} {0x0000024f55946040} 'getPlatformOperations' '()Lorg/jetbrains/skiko/PlatformOperations;' in 'org/jetbrains/skiko/PlatformOperationsKt')} + 0x0000024f38b92208: f8ff ff49 | ba38 6094 | 554f 0200 | 004c 8954 | 2408 48c7 | 0424 ffff + + 0x0000024f38b92220: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92220: ffff e859 + + 0x0000024f38b92224: ; ImmutableOopMap {[160]=Oop [152]=Oop rsi=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.PlatformOperationsKt::getPlatformOperations@-1 (line 64) + ; - org.jetbrains.skiko.HardwareLayer::getFullscreen@0 (line 53) + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b92224: 7e9c 06e9 | 55f8 ffff | 4889 0424 + + 0x0000024f38b92230: ; {runtime_call throw_class_cast_exception Runtime1 stub} + 0x0000024f38b92230: e86b 519c + + 0x0000024f38b92234: ; ImmutableOopMap {[160]=Oop [152]=Oop [168]=Oop } + ;*checkcast {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.PlatformOperationsKt::getPlatformOperations@10 (line 64) + ; - org.jetbrains.skiko.HardwareLayer::getFullscreen@0 (line 53) + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + ; {runtime_call throw_incompatible_class_change_error Runtime1 stub} + 0x0000024f38b92234: 06e8 6654 + + 0x0000024f38b92238: ; ImmutableOopMap {[160]=Oop [152]=Oop [168]=Oop rdx=Oop } + ;*invokeinterface isFullscreen {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.HardwareLayer::getFullscreen@7 (line 53) + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b92238: 9c06 e861 + + 0x0000024f38b9223c: ; ImmutableOopMap {[160]=Oop [152]=Oop [168]=Oop rdx=Oop } + ;*invokeinterface isFullscreen {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.HardwareLayer::getFullscreen@7 (line 53) + ; - org.jetbrains.skiko.FullscreenAdapter::getFullscreen@11 (line 31) + ; - org.jetbrains.skiko.SkiaLayer::getFullscreen@4 (line 214) + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@15 (line 55) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b9223c: 2d9c 06e8 + + 0x0000024f38b92240: ; ImmutableOopMap {[160]=Oop rdx=Oop [152]=Oop rsi=Oop } + ;*invokevirtual getTransparency {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::isTransparentBackground@27 (line 60) + ; - org.jetbrains.skiko.context.ContextHandler::draw@39 (line 44) + 0x0000024f38b92240: 5c2d 9c06 + + 0x0000024f38b92244: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b92244: e857 2d9c + + 0x0000024f38b92248: ; ImmutableOopMap {rsi=Oop [160]=Oop [152]=Oop } + ;*invokevirtual clear {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + ; {metadata({method} {0x0000024f54be74e0} 'clear' '(I)Lorg/jetbrains/skia/Canvas;' in 'org/jetbrains/skia/Canvas')} + 0x0000024f38b92248: 0649 bad8 | 74be 544f | 0200 004c | 8954 2408 | 48c7 0424 | ffff ffff + + 0x0000024f38b92260: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92260: e81b 7e9c + + 0x0000024f38b92264: ; ImmutableOopMap {rsi=Oop [160]=Oop [152]=Oop } + ;*synchronization entry + ; - org.jetbrains.skia.Canvas::clear@-1 (line 950) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b92264: 06e9 fdfa + + 0x0000024f38b92268: ; {metadata({method} {0x0000024f5573d9c0} 'access$_nClear' '(JI)V' in 'org/jetbrains/skia/CanvasKt')} + 0x0000024f38b92268: ffff 49ba | b8d9 7355 | 4f02 0000 | 4c89 5424 | 0848 c704 | 24ff ffff + + 0x0000024f38b92280: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92280: ffe8 fa7d + + 0x0000024f38b92284: ; ImmutableOopMap {[152]=Oop rsi=Oop [160]=Oop } + ;*synchronization entry + ; - org.jetbrains.skia.CanvasKt::access$_nClear@-1 + ; - org.jetbrains.skia.Canvas::clear@12 (line 952) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b92284: 9c06 e96c + + 0x0000024f38b92288: ; {metadata({method} {0x0000024f552be860} 'reachabilityBarrier' '(Ljava/lang/Object;)V' in 'org/jetbrains/skia/impl/Native_jvmKt')} + 0x0000024f38b92288: fbff ff49 | ba58 e82b | 554f 0200 | 004c 8954 | 2408 48c7 | 0424 ffff + + 0x0000024f38b922a0: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b922a0: ffff e8d9 + + 0x0000024f38b922a4: ; ImmutableOopMap {[152]=Oop [160]=Oop } + ;*synchronization entry + ; - org.jetbrains.skia.impl.Native_jvmKt::reachabilityBarrier@-1 (line 46) + ; - org.jetbrains.skia.Canvas::clear@16 (line 954) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b922a4: 7d9c 06e9 | a4fb ffff + + 0x0000024f38b922ac: ; {metadata({method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38b922ac: 49ba c829 | 0454 4f02 | 0000 4c89 | 5424 0848 | c704 24ff + + 0x0000024f38b922c0: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b922c0: ffff ffe8 + + 0x0000024f38b922c4: ; ImmutableOopMap {[152]=Oop [160]=Oop } + ;*synchronization entry + ; - java.lang.ref.Reference::reachabilityFence@-1 (line 621) + ; - org.jetbrains.skia.impl.Native_jvmKt::reachabilityBarrier@1 (line 46) + ; - org.jetbrains.skia.Canvas::clear@16 (line 954) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b922c4: b87d 9c06 | e9bf fbff + + 0x0000024f38b922cc: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b922cc: ffe8 ce2c + + 0x0000024f38b922d0: ; ImmutableOopMap {[160]=Oop rdx=Oop [152]=Oop rsi=Oop } + ;*invokeinterface invoke {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@59 (line 45) + ; {internal_word} + 0x0000024f38b922d0: 9c06 49ba | b41f b938 | 4f02 0000 | 4d89 9768 + + 0x0000024f38b922e0: ; {runtime_call SafepointBlob} + 0x0000024f38b922e0: 0300 00e9 | 1857 9206 + + 0x0000024f38b922e8: ; {metadata(NULL)} + 0x0000024f38b922e8: 48ba 0000 | 0000 0000 | 0000 b800 + + 0x0000024f38b922f4: ; {runtime_call load_klass_patching Runtime1 stub} + 0x0000024f38b922f4: 0f05 0ae8 + + 0x0000024f38b922f8: ; ImmutableOopMap {} + ;*new {reexecute=1 rethrow=0 return_oop=0} + ; - (reexecute) org.jetbrains.skiko.context.ContextHandler::draw@7 (line 40) + 0x0000024f38b922f8: 046d 9c06 | e9c7 fcff + + 0x0000024f38b92300: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b92300: ffe8 9a2c + + 0x0000024f38b92304: ; ImmutableOopMap {} + ;*new {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@7 (line 40) + 0x0000024f38b92304: 9c06 488b + + 0x0000024f38b92308: ; {runtime_call fast_new_instance_init_check Runtime1 stub} + 0x0000024f38b92308: d2e8 7238 + + 0x0000024f38b9230c: ; ImmutableOopMap {} + ;*new {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.context.ContextHandler::draw@7 (line 40) + 0x0000024f38b9230c: 9c06 e91a + + 0x0000024f38b92310: ; {metadata({method} {0x0000024f552be860} 'reachabilityBarrier' '(Ljava/lang/Object;)V' in 'org/jetbrains/skia/impl/Native_jvmKt')} + 0x0000024f38b92310: fdff ff49 | ba58 e82b | 554f 0200 | 004c 8954 | 2408 48c7 | 0424 ffff + + 0x0000024f38b92328: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92328: ffff e851 + + 0x0000024f38b9232c: ; ImmutableOopMap {rax=Oop rsi=Oop [160]=Oop rdx=Oop [152]=Oop } + ;*synchronization entry + ; - org.jetbrains.skia.impl.Native_jvmKt::reachabilityBarrier@-1 (line 46) + ; - org.jetbrains.skia.Canvas::clear@24 (line 954) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b9232c: 7d9c 06e9 | bafd ffff + + 0x0000024f38b92334: ; {metadata({method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38b92334: 49ba c829 | 0454 4f02 | 0000 4c89 | 5424 0848 | c704 24ff + + 0x0000024f38b92348: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b92348: ffff ffe8 + + 0x0000024f38b9234c: ; ImmutableOopMap {rax=Oop rsi=Oop [160]=Oop rdx=Oop [152]=Oop } + ;*synchronization entry + ; - java.lang.ref.Reference::reachabilityFence@-1 (line 621) + ; - org.jetbrains.skia.impl.Native_jvmKt::reachabilityBarrier@1 (line 46) + ; - org.jetbrains.skia.Canvas::clear@24 (line 954) + ; - org.jetbrains.skiko.context.ContextHandler::draw@50 (line 44) + 0x0000024f38b9234c: 307d 9c06 | e9d3 fdff | ff90 9049 | 8b87 e003 | 0000 49c7 | 87e0 0300 | 0000 0000 | 0049 c787 + 0x0000024f38b9236c: e803 0000 | 0000 0000 | 4881 c4d0 | 0000 005d + + 0x0000024f38b9237c: ; {runtime_call unwind_exception Runtime1 stub} + 0x0000024f38b9237c: e97f 4c93 | 06f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 + 0x0000024f38b9239c: f4f4 f4f4 +[Stub Code] + 0x0000024f38b923a0: ; {no_reloc} + 0x0000024f38b923a0: 0f1f 4400 + + 0x0000024f38b923a4: ; {static_stub} + 0x0000024f38b923a4: 0048 bb18 | 9351 554f + + 0x0000024f38b923ac: ; {runtime_call I2C/C2I adapters} + 0x0000024f38b923ac: 0200 00e9 | a539 9206 + + 0x0000024f38b923b4: ; {static_stub} + 0x0000024f38b923b4: 9048 bb50 | 9651 554f + + 0x0000024f38b923bc: ; {runtime_call I2C/C2I adapters} + 0x0000024f38b923bc: 0200 00e9 | 9539 9206 + + 0x0000024f38b923c4: ; {static_stub} + 0x0000024f38b923c4: 9048 bb00 | 0000 0000 + + 0x0000024f38b923cc: ; {runtime_call} + 0x0000024f38b923cc: 0000 00e9 | fbff ffff + + 0x0000024f38b923d4: ; {static_stub} + 0x0000024f38b923d4: 9048 bb00 | 0000 0000 + + 0x0000024f38b923dc: ; {runtime_call} + 0x0000024f38b923dc: 0000 00e9 | fbff ffff + + 0x0000024f38b923e4: ; {static_stub} + 0x0000024f38b923e4: 9048 bb00 | 0000 0000 + + 0x0000024f38b923ec: ; {runtime_call} + 0x0000024f38b923ec: 0000 00e9 | fbff ffff + + 0x0000024f38b923f4: ; {static_stub} + 0x0000024f38b923f4: 9048 bb00 | 0000 0000 + + 0x0000024f38b923fc: ; {runtime_call} + 0x0000024f38b923fc: 0000 00e9 | fbff ffff + + 0x0000024f38b92404: ; {static_stub} + 0x0000024f38b92404: 9048 bba8 | bf73 554f + + 0x0000024f38b9240c: ; {runtime_call I2C/C2I adapters} + 0x0000024f38b9240c: 0200 00e9 | c975 8f06 + + 0x0000024f38b92414: ; {static_stub} + 0x0000024f38b92414: 9048 bb00 | 0000 0000 + + 0x0000024f38b9241c: ; {runtime_call} + 0x0000024f38b9241c: 0000 00e9 | fbff ffff + + 0x0000024f38b92424: ; {static_stub} + 0x0000024f38b92424: 9048 bbd0 | 9751 554f + + 0x0000024f38b9242c: ; {runtime_call I2C/C2I adapters} + 0x0000024f38b9242c: 0200 00e9 | 2539 9206 + + 0x0000024f38b92434: ; {static_stub} + 0x0000024f38b92434: 9048 bb00 | 0000 0000 + + 0x0000024f38b9243c: ; {runtime_call} + 0x0000024f38b9243c: 0000 00e9 | fbff ffff +[Exception Handler] + 0x0000024f38b92444: ; {runtime_call handle_exception_from_callee Runtime1 stub} + 0x0000024f38b92444: e837 499c + + 0x0000024f38b92448: ; {external_word} + 0x0000024f38b92448: 0648 b9a0 | 7dde 0afe | 7f00 0048 + + 0x0000024f38b92454: ; {runtime_call} + 0x0000024f38b92454: 83e4 f049 | baf0 e4a6 | 0afe 7f00 | 0041 ffd2 + + 0x0000024f38b92464: ; {section_word} + 0x0000024f38b92464: f449 ba65 | 24b9 384f | 0200 0041 + + 0x0000024f38b92470: ; {runtime_call DeoptimizationBlob} + 0x0000024f38b92470: 52e9 2a48 | 9206 f4f4 +[/MachCode] + + +Compiled method (c1) 30678 5744 ! 3 org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap (49 bytes) + total in heap [0x0000024f38b90a90,0x0000024f38b91238] = 1960 + relocation [0x0000024f38b90be8,0x0000024f38b90c60] = 120 + main code [0x0000024f38b90c60,0x0000024f38b91000] = 928 + stub code [0x0000024f38b91000,0x0000024f38b91068] = 104 + oops [0x0000024f38b91068,0x0000024f38b91070] = 8 + metadata [0x0000024f38b91070,0x0000024f38b91080] = 16 + scopes data [0x0000024f38b91080,0x0000024f38b91118] = 152 + scopes pcs [0x0000024f38b91118,0x0000024f38b911b8] = 160 + dependencies [0x0000024f38b911b8,0x0000024f38b911c0] = 8 + handler table [0x0000024f38b911c0,0x0000024f38b91220] = 96 + nul chk table [0x0000024f38b91220,0x0000024f38b91238] = 24 + +[Constant Pool (empty)] + +[MachCode] +[Entry Point] + # {method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer' + # this: rdx:rdx = 'org/jetbrains/skiko/redrawer/Direct3DRedrawer' + # parm0: r8 = boolean + # [sp+0x80] (sp of caller) + 0x0000024f38b90c60: 448b 5208 | 49bb 0000 | 0000 0800 | 0000 4d03 | d34c 3bd0 + + 0x0000024f38b90c74: ; {runtime_call ic_miss_stub} + 0x0000024f38b90c74: 0f85 0604 | 9206 660f | 1f44 0000 +[Verified Entry Point] + 0x0000024f38b90c80: 8984 2400 | 90ff ff55 | 4883 ec70 | 4889 5424 | 4044 8944 + + 0x0000024f38b90c94: ; {metadata(method data for {method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90c94: 2448 48b8 | 20e3 0a56 | 4f02 0000 | 8bb0 cc00 | 0000 83c6 | 0289 b0cc | 0000 0081 | e6fe 0700 + 0x0000024f38b90cb4: 0083 fe00 | 0f84 5202 | 0000 8b72 | 4048 c1e6 | 0348 8974 | 2450 488d | 7c24 5848 | 8977 0848 + 0x0000024f38b90cd4: 8b06 4883 | c801 4889 | 07f0 480f | b13e 0f84 | 1300 0000 | 482b c448 | 81e0 07f0 | ffff 4889 + 0x0000024f38b90cf4: 070f 853b | 0200 0048 + + 0x0000024f38b90cfc: ; {metadata(method data for {method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90cfc: 8bfa 48bb | 20e3 0a56 | 4f02 0000 | 4883 8310 | 0100 0001 | 0fbe 7a0d | 83e7 0183 + + 0x0000024f38b90d18: ; {metadata(method data for {method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90d18: ff00 48bf | 20e3 0a56 | 4f02 0000 | 48bb 5801 | 0000 0000 | 0000 0f85 | 0a00 0000 | 48bb 4801 + 0x0000024f38b90d38: 0000 0000 | 0000 488b | 041f 488d | 4001 4889 | 041f 0f85 | 4701 0000 | 8b7a 3c48 | c1e7 0348 + 0x0000024f38b90d58: 3b07 488b + + 0x0000024f38b90d5c: ; {metadata(method data for {method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90d5c: df48 b820 | e30a 564f | 0200 0048 | 8380 6801 | 0000 0148 | 8bd7 0f1f + + 0x0000024f38b90d74: ; {optimized virtual_call} + 0x0000024f38b90d74: 4400 00e8 + + 0x0000024f38b90d78: ; ImmutableOopMap {[64]=Oop [80]=Oop [96]=Oop } + ;*invokevirtual draw {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@25 (line 91) + 0x0000024f38b90d78: 0408 0000 | 488b 5424 + + 0x0000024f38b90d80: ; {metadata(method data for {method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90d80: 4048 be20 | e30a 564f | 0200 0048 | 8386 a001 + + 0x0000024f38b90d90: ; {metadata(method data for {method} {0x0000024f555122e8} 'swap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90d90: 0000 0148 | ba70 e80a | 564f 0200 | 008b b2cc | 0000 0083 | c602 89b2 | cc00 0000 | 81e6 feff + 0x0000024f38b90db0: 1f00 83fe | 000f 8493 | 0100 0048 | 8b54 2440 | 0fbe 720e + + 0x0000024f38b90dc4: ; {metadata(method data for {method} {0x0000024f555122e8} 'swap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90dc4: 83fe 0048 | be70 e80a | 564f 0200 | 0048 bf20 | 0100 0000 | 0000 000f | 840a 0000 | 0048 bf10 + 0x0000024f38b90de4: 0100 0000 | 0000 0048 | 8b1c 3e48 | 8d5b 0148 | 891c 3e0f | 8457 0000 | 0048 8bfa + + 0x0000024f38b90e00: ; {metadata(method data for {method} {0x0000024f555122e8} 'swap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90e00: 48bb 70e8 | 0a56 4f02 | 0000 4883 | 8330 0100 | 0001 488b | fa48 8bd7 | 0f1f 8000 + + 0x0000024f38b90e1c: ; {optimized virtual_call} + 0x0000024f38b90e1c: 0000 00e8 + + 0x0000024f38b90e20: ; ImmutableOopMap {[64]=Oop [80]=Oop [96]=Oop } + ;*invokespecial getDevice {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::swap@10 (line 120) + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@30 (line 92) + 0x0000024f38b90e20: bc7a cdff | 488b 5424 + + 0x0000024f38b90e28: ; {metadata(method data for {method} {0x0000024f555122e8} 'swap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90e28: 4049 b870 | e80a 564f | 0200 0049 | 8380 4001 | 0000 014c | 8bc0 448b | 4c24 4848 | 8b54 2440 + 0x0000024f38b90e48: 0f1f 8000 + + 0x0000024f38b90e4c: ; {optimized virtual_call} + 0x0000024f38b90e4c: 0000 00e8 + + 0x0000024f38b90e50: ; ImmutableOopMap {[80]=Oop [96]=Oop } + ;*invokespecial swap {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::swap@14 (line 120) + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@30 (line 92) + 0x0000024f38b90e50: 6c44 1507 | 488d 4424 | 5848 8b30 | 4885 f60f | 840f 0000 | 0048 8b78 | 08f0 480f | b137 0f85 + 0x0000024f38b90e70: fb00 0000 + + 0x0000024f38b90e74: ; {metadata(method data for {method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90e74: 48b8 20e3 | 0a56 4f02 | 0000 ff80 | b001 0000 | 4883 c470 + + 0x0000024f38b90e88: ; {poll_return} + 0x0000024f38b90e88: 5d49 3ba7 | 5003 0000 | 0f87 ec00 | 0000 c348 | 8d44 2458 | 488b 3048 | 85f6 0f84 | 0f00 0000 + 0x0000024f38b90ea8: 488b 7808 | f048 0fb1 | 370f 85e1 | 0000 0048 | 83c4 705d + + 0x0000024f38b90ebc: ; {poll_return} + 0x0000024f38b90ebc: 493b a750 | 0300 000f | 87e2 0000 | 00c3 498b | 87e0 0300 | 004d 33d2 | 4d89 97e0 | 0300 004d + 0x0000024f38b90edc: 33d2 4d89 | 97e8 0300 | 0048 8bf0 | 488d 4424 | 5848 8b38 | 4885 ff0f | 840f 0000 | 0048 8b58 + 0x0000024f38b90efc: 08f0 480f | b13b 0f85 | b900 0000 | 488b c6e9 | e300 0000 + + 0x0000024f38b90f10: ; {metadata({method} {0x0000024f55511ed0} 'drawAndSwap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90f10: 49ba c81e | 5155 4f02 | 0000 4c89 | 5424 0848 | c704 24ff + + 0x0000024f38b90f24: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b90f24: ffff ffe8 + + 0x0000024f38b90f28: ; ImmutableOopMap {rdx=Oop [64]=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@-1 (line 87) + 0x0000024f38b90f28: 5491 9c06 | e98d fdff + + 0x0000024f38b90f30: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b90f30: ffe8 6a40 + + 0x0000024f38b90f34: ; ImmutableOopMap {rdx=Oop [64]=Oop rsi=Oop [80]=Oop } + ;*monitorenter {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@6 (line 87) + 0x0000024f38b90f34: 9c06 4889 | 7424 0848 + + 0x0000024f38b90f3c: ; {runtime_call monitorenter_nofpu Runtime1 stub} + 0x0000024f38b90f3c: 893c 24e8 + + 0x0000024f38b90f40: ; ImmutableOopMap {rdx=Oop [64]=Oop rsi=Oop [80]=Oop [96]=Oop } + ;*monitorenter {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@6 (line 87) + 0x0000024f38b90f40: 3c70 9c06 | e9b2 fdff + + 0x0000024f38b90f48: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38b90f48: ffe8 5240 + + 0x0000024f38b90f4c: ; ImmutableOopMap {rdx=Oop [64]=Oop [80]=Oop rdi=Oop [96]=Oop } + ;*invokevirtual draw {reexecute=0 rethrow=0 return_oop=0} + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@25 (line 91) + ; {metadata({method} {0x0000024f555122e8} 'swap' '(Z)V' in 'org/jetbrains/skiko/redrawer/Direct3DRedrawer')} + 0x0000024f38b90f4c: 9c06 49ba | e022 5155 | 4f02 0000 | 4c89 5424 | 0848 c704 | 24ff ffff + + 0x0000024f38b90f64: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38b90f64: ffe8 1691 + + 0x0000024f38b90f68: ; ImmutableOopMap {[64]=Oop [80]=Oop [96]=Oop } + ;*synchronization entry + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::swap@-1 (line 117) + ; - org.jetbrains.skiko.redrawer.Direct3DRedrawer::drawAndSwap@30 (line 92) + 0x0000024f38b90f68: 9c06 e94c | feff ff48 | 8d44 2458 | 4889 0424 + + 0x0000024f38b90f78: ; {runtime_call monitorexit_nofpu Runtime1 stub} + 0x0000024f38b90f78: e803 769c | 06e9 f2fe + + 0x0000024f38b90f80: ; {internal_word} + 0x0000024f38b90f80: ffff 49ba | 890e b938 | 4f02 0000 | 4d89 9768 + + 0x0000024f38b90f90: ; {runtime_call SafepointBlob} + 0x0000024f38b90f90: 0300 00e9 | 686a 9206 | 488d 4424 | 5848 8904 + + 0x0000024f38b90fa0: ; {runtime_call monitorexit_nofpu Runtime1 stub} + 0x0000024f38b90fa0: 24e8 da75 | 9c06 e90c + + 0x0000024f38b90fa8: ; {internal_word} + 0x0000024f38b90fa8: ffff ff49 | babc 0eb9 | 384f 0200 | 004d 8997 | 6803 0000 + + 0x0000024f38b90fbc: ; {runtime_call SafepointBlob} + 0x0000024f38b90fbc: e93f 6a92 | 0648 8d44 | 2458 4889 + + 0x0000024f38b90fc8: ; {runtime_call monitorexit_nofpu Runtime1 stub} + 0x0000024f38b90fc8: 0424 e8b1 | 759c 06e9 | 34ff ffff | 9090 498b | 87e0 0300 | 0049 c787 | e003 0000 | 0000 0000 + 0x0000024f38b90fe8: 49c7 87e8 | 0300 0000 | 0000 0048 | 83c4 705d + + 0x0000024f38b90ff8: ; {runtime_call unwind_exception Runtime1 stub} + 0x0000024f38b90ff8: e903 6093 | 06f4 f4f4 +[Stub Code] + 0x0000024f38b91000: ; {no_reloc} + 0x0000024f38b91000: 0f1f 4400 + + 0x0000024f38b91004: ; {static_stub} + 0x0000024f38b91004: 0048 bb00 | 0000 0000 + + 0x0000024f38b9100c: ; {runtime_call} + 0x0000024f38b9100c: 0000 00e9 | fbff ffff + + 0x0000024f38b91014: ; {static_stub} + 0x0000024f38b91014: 9048 bb00 | 0000 0000 + + 0x0000024f38b9101c: ; {runtime_call} + 0x0000024f38b9101c: 0000 00e9 | fbff ffff + + 0x0000024f38b91024: ; {static_stub} + 0x0000024f38b91024: 9048 bb00 | 0000 0000 + + 0x0000024f38b9102c: ; {runtime_call} + 0x0000024f38b9102c: 0000 00e9 | fbff ffff +[Exception Handler] + 0x0000024f38b91034: ; {runtime_call handle_exception_from_callee Runtime1 stub} + 0x0000024f38b91034: e847 5d9c + + 0x0000024f38b91038: ; {external_word} + 0x0000024f38b91038: 0648 b9a0 | 7dde 0afe | 7f00 0048 + + 0x0000024f38b91044: ; {runtime_call} + 0x0000024f38b91044: 83e4 f049 | baf0 e4a6 | 0afe 7f00 | 0041 ffd2 + + 0x0000024f38b91054: ; {section_word} + 0x0000024f38b91054: f449 ba55 | 10b9 384f | 0200 0041 + + 0x0000024f38b91060: ; {runtime_call DeoptimizationBlob} + 0x0000024f38b91060: 52e9 3a5c | 9206 f4f4 +[/MachCode] + + +Compiled method (c1) 30687 3035 3 java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege (22 bytes) + total in heap [0x0000024f38544810,0x0000024f385451b0] = 2464 + relocation [0x0000024f38544968,0x0000024f38544a20] = 184 + main code [0x0000024f38544a20,0x0000024f38544f00] = 1248 + stub code [0x0000024f38544f00,0x0000024f38544f98] = 152 + metadata [0x0000024f38544f98,0x0000024f38544fb8] = 32 + scopes data [0x0000024f38544fb8,0x0000024f38545098] = 224 + scopes pcs [0x0000024f38545098,0x0000024f38545198] = 256 + dependencies [0x0000024f38545198,0x0000024f385451a0] = 8 + nul chk table [0x0000024f385451a0,0x0000024f385451b0] = 16 + +[Constant Pool (empty)] + +[MachCode] +[Entry Point] + # {method} {0x0000024f54303068} 'doIntersectionPrivilege' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/ProtectionDomain$JavaSecurityAccessImpl' + # this: rdx:rdx = 'java/security/ProtectionDomain$JavaSecurityAccessImpl' + # parm0: r8:r8 = 'java/security/PrivilegedAction' + # parm1: r9:r9 = 'java/security/AccessControlContext' + # parm2: rdi:rdi = 'java/security/AccessControlContext' + # [sp+0xa0] (sp of caller) + 0x0000024f38544a20: 448b 5208 | 49bb 0000 | 0000 0800 | 0000 4d03 | d34c 3bd0 + + 0x0000024f38544a34: ; {runtime_call ic_miss_stub} + 0x0000024f38544a34: 0f85 46c6 | f606 660f | 1f44 0000 +[Verified Entry Point] + 0x0000024f38544a40: 8984 2400 | 90ff ff55 | 4881 ec90 + + 0x0000024f38544a4c: ; {metadata(method data for {method} {0x0000024f54303068} 'doIntersectionPrivilege' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/ProtectionDomain$JavaSecurityAccessImpl')} + 0x0000024f38544a4c: 0000 0048 | bed0 cbb8 | 554f 0200 | 008b 9ecc | 0000 0083 | c302 899e | cc00 0000 | 81e3 fe07 + 0x0000024f38544a6c: 0000 83fb | 000f 8472 | 0300 0049 + + 0x0000024f38544a78: ; {metadata(method data for {method} {0x0000024f54303068} 'doIntersectionPrivilege' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/ProtectionDomain$JavaSecurityAccessImpl')} + 0x0000024f38544a78: 83f8 0048 | bad0 cbb8 | 554f 0200 | 0048 be20 | 0100 0000 | 0000 000f | 840a 0000 | 0048 be10 + 0x0000024f38544a98: 0100 0000 | 0000 0048 | 8b1c 3248 | 8d5b 0148 | 891c 320f | 84a2 0200 | 004c 8944 + + 0x0000024f38544ab4: ; {metadata(method data for {method} {0x0000024f54303068} 'doIntersectionPrivilege' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/ProtectionDomain$JavaSecurityAccessImpl')} + 0x0000024f38544ab4: 2460 48ba | d0cb b855 | 4f02 0000 | 4883 8240 | 0100 0001 | 488b d74d + + 0x0000024f38544acc: ; {static_call} + 0x0000024f38544acc: 8bc1 90e8 + + 0x0000024f38544ad0: ; ImmutableOopMap {[96]=Oop } + ;*invokestatic getCombinedACC {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@15 (line 88) + 0x0000024f38544ad0: ecba 7007 + + 0x0000024f38544ad4: ; {metadata(method data for {method} {0x0000024f54303068} 'doIntersectionPrivilege' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/ProtectionDomain$JavaSecurityAccessImpl')} + 0x0000024f38544ad4: 48be d0cb | b855 4f02 | 0000 4883 | 8650 0100 + + 0x0000024f38544ae4: ; {metadata(method data for {method} {0x0000024f5403bbe8} 'doPrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544ae4: 0001 48be | e0c2 b855 | 4f02 0000 | 8bbe cc00 | 0000 83c7 | 0289 becc | 0000 0081 | e7fe ff1f + 0x0000024f38544b04: 0083 ff00 | 0f84 fc02 + + 0x0000024f38544b0c: ; {metadata(method data for {method} {0x0000024f5403bbe8} 'doPrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544b0c: 0000 48be | e0c2 b855 | 4f02 0000 | 4883 8610 | 0100 0001 | 4889 4424 + + 0x0000024f38544b24: ; {static_call} + 0x0000024f38544b24: 6866 90e8 + + 0x0000024f38544b28: ; ImmutableOopMap {[96]=Oop [104]=Oop } + ;*invokestatic getCallerClass {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.AccessController::doPrivileged@0 (line 397) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544b28: 94fd 4e07 + + 0x0000024f38544b2c: ; {metadata(method data for {method} {0x0000024f5403bbe8} 'doPrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544b2c: 48ba e0c2 | b855 4f02 | 0000 4883 | 8220 0100 | 0001 488b | 5424 684c | 8bc0 4889 | 4424 700f + 0x0000024f38544b4c: ; {static_call} + 0x0000024f38544b4c: 1f40 00e8 + + 0x0000024f38544b50: ; ImmutableOopMap {[96]=Oop [112]=Oop } + ;*invokestatic checkContext {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.AccessController::doPrivileged@6 (line 398) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544b50: 2c82 7007 | 4889 4424 + + 0x0000024f38544b58: ; {metadata(method data for {method} {0x0000024f5403bbe8} 'doPrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544b58: 7848 bae0 | c2b8 554f | 0200 0048 | 8382 3001 + + 0x0000024f38544b68: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544b68: 0000 0148 | ba08 8c4b | 544f 0200 | 008b b2cc | 0000 0083 | c602 89b2 | cc00 0000 | 81e6 feff + 0x0000024f38544b88: 1f00 83fe | 000f 8498 | 0200 0048 + + 0x0000024f38544b94: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544b94: 83f8 0048 | ba08 8c4b | 544f 0200 | 0048 be10 | 0100 0000 | 0000 000f | 840a 0000 | 0048 be20 + 0x0000024f38544bb4: 0100 0000 | 0000 0048 | 8b3c 3248 | 8d7f 0148 | 893c 320f | 841f 0000 + + 0x0000024f38544bcc: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544bcc: 0048 ba08 | 8c4b 544f | 0200 0048 | 8382 3001 | 0000 0148 | 8bd0 0f1f + + 0x0000024f38544be4: ; {static_call} + 0x0000024f38544be4: 4400 00e8 + + 0x0000024f38544be8: ; ImmutableOopMap {[96]=Oop [112]=Oop [120]=Oop } + ;*invokestatic ensureMaterializedForStackWalk {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.AccessController::executePrivileged@5 (line 772) + ; - java.security.AccessController::doPrivileged@13 (line 399) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544be8: d432 5f07 + + 0x0000024f38544bec: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544bec: 48ba 088c | 4b54 4f02 | 0000 ff82 | 4001 0000 | 4c8b 4424 | 6049 3b00 + + 0x0000024f38544c04: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544c04: 498b d048 | be08 8c4b | 544f 0200 | 008b 5208 | 49ba 0000 | 0000 0800 | 0000 4903 | d248 3b96 + 0x0000024f38544c24: b001 0000 | 750d 4883 | 86b8 0100 | 0001 e966 | 0000 0048 | 3b96 c001 | 0000 750d | 4883 86c8 + 0x0000024f38544c44: 0100 0001 | e950 0000 | 0048 81be | b001 0000 | 0000 0000 | 7517 4889 | 96b0 0100 | 0048 c786 + 0x0000024f38544c64: b801 0000 | 0100 0000 | e92c 0000 | 0048 81be | c001 0000 | 0000 0000 | 7517 4889 | 96c0 0100 + 0x0000024f38544c84: 0048 c786 | c801 0000 | 0100 0000 | e908 0000 | 0048 8386 | a001 0000 | 0149 8bd0 | 0f1f 4400 + 0x0000024f38544ca4: 0048 b800 | eb47 594f + + 0x0000024f38544cac: ; {virtual_call} + 0x0000024f38544cac: 0200 00e8 + + 0x0000024f38544cb0: ; ImmutableOopMap {[112]=Oop [120]=Oop } + ;*invokeinterface run {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.AccessController::executePrivileged@29 (line 776) + ; - java.security.AccessController::doPrivileged@13 (line 399) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544cb0: 9c86 0107 + + 0x0000024f38544cb4: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544cb4: 48ba 088c | 4b54 4f02 | 0000 ff82 | d801 0000 | 488b 5424 + + 0x0000024f38544cc8: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544cc8: 7048 be08 | 8c4b 544f | 0200 0048 | 8386 3802 + + 0x0000024f38544cd8: ; {metadata(method data for {method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38544cd8: 0000 0148 | bed0 b943 | 544f 0200 | 008b becc | 0000 0083 | c702 89be | cc00 0000 | 81e7 feff + 0x0000024f38544cf8: 1f00 83ff | 000f 844e + + 0x0000024f38544d00: ; {metadata(method data for {method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544d00: 0100 0048 | ba08 8c4b | 544f 0200 | 0048 8382 | 4802 0000 + + 0x0000024f38544d14: ; {metadata(method data for {method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38544d14: 0148 bad0 | b943 544f | 0200 008b | b2cc 0000 | 0083 c602 | 89b2 cc00 | 0000 81e6 | feff 1f00 + 0x0000024f38544d34: 83fe 000f | 8435 0100 | 0048 81c4 | 9000 0000 + + 0x0000024f38544d44: ; {poll_return} + 0x0000024f38544d44: 5d49 3ba7 | 5003 0000 | 0f87 4101 | 0000 c30f | 1f44 0000 + + 0x0000024f38544d58: ; {no_reloc} + 0x0000024f38544d58: e95b 0100 | 0000 0000 | 0000 498b | 8708 0100 | 0048 8d78 | 3049 3bbf | 1801 0000 | 0f87 4801 + 0x0000024f38544d78: 0000 4989 | bf08 0100 | 0048 c700 | 0100 0000 | 488b ca49 | ba00 0000 | 0008 0000 | 0049 2bca + 0x0000024f38544d98: 8948 0848 | 33c9 8948 | 0c48 33c9 | 4889 4810 | 4889 4818 | 4889 4820 | 4889 4828 + + 0x0000024f38544db4: ; {metadata(method data for {method} {0x0000024f54303068} 'doIntersectionPrivilege' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/ProtectionDomain$JavaSecurityAccessImpl')} + 0x0000024f38544db4: 488b d048 | bed0 cbb8 | 554f 0200 | 0048 8386 | 3001 0000 | 0148 8bd0 | 4889 8424 | 8000 0000 + 0x0000024f38544dd4: ; {optimized virtual_call} + 0x0000024f38544dd4: 6666 90e8 + + 0x0000024f38544dd8: ; ImmutableOopMap {[128]=Oop } + ;*invokespecial {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@8 (line 83) + 0x0000024f38544dd8: a4c5 f606 | 488b 8424 | 8000 0000 | e905 0100 + + 0x0000024f38544de8: ; {metadata({method} {0x0000024f54303068} 'doIntersectionPrivilege' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/ProtectionDomain$JavaSecurityAccessImpl')} + 0x0000024f38544de8: 0049 ba60 | 3030 544f | 0200 004c | 8954 2408 | 48c7 0424 | ffff ffff + + 0x0000024f38544e00: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38544e00: e87b 5201 + + 0x0000024f38544e04: ; ImmutableOopMap {rdx=Oop r8=Oop r9=Oop rdi=Oop } + ;*synchronization entry + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@-1 (line 82) + 0x0000024f38544e04: 07e9 6dfc + + 0x0000024f38544e08: ; {metadata({method} {0x0000024f5403bbe8} 'doPrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544e08: ffff 49ba | e0bb 0354 | 4f02 0000 | 4c89 5424 | 0848 c704 | 24ff ffff + + 0x0000024f38544e20: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38544e20: ffe8 5a52 + + 0x0000024f38544e24: ; ImmutableOopMap {[96]=Oop rax=Oop } + ;*synchronization entry + ; - java.security.AccessController::doPrivileged@-1 (line 397) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544e24: 0107 e9e3 + + 0x0000024f38544e28: ; {metadata({method} {0x0000024f5403c8d8} 'executePrivileged' '(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;' in 'java/security/AccessController')} + 0x0000024f38544e28: fcff ff49 | bad0 c803 | 544f 0200 | 004c 8954 | 2408 48c7 | 0424 ffff + + 0x0000024f38544e40: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38544e40: ffff e839 + + 0x0000024f38544e44: ; ImmutableOopMap {[96]=Oop [112]=Oop rax=Oop [120]=Oop } + ;*synchronization entry + ; - java.security.AccessController::executePrivileged@-1 (line 771) + ; - java.security.AccessController::doPrivileged@13 (line 399) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544e44: 5201 07e9 | 47fd ffff + + 0x0000024f38544e4c: ; {runtime_call throw_null_pointer_exception Runtime1 stub} + 0x0000024f38544e4c: e84f 0101 + + 0x0000024f38544e50: ; ImmutableOopMap {[112]=Oop r8=Oop [120]=Oop } + ;*invokeinterface run {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.AccessController::executePrivileged@29 (line 776) + ; - java.security.AccessController::doPrivileged@13 (line 399) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + ; {metadata({method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38544e50: 0749 bac8 | 2904 544f | 0200 004c | 8954 2408 | 48c7 0424 | ffff ffff + + 0x0000024f38544e68: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38544e68: e813 5201 + + 0x0000024f38544e6c: ; ImmutableOopMap {rax=Oop rdx=Oop } + ;*synchronization entry + ; - java.lang.ref.Reference::reachabilityFence@-1 (line 621) + ; - java.security.AccessController::executePrivileged@56 (line 781) + ; - java.security.AccessController::doPrivileged@13 (line 399) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544e6c: 07e9 91fe + + 0x0000024f38544e70: ; {metadata({method} {0x0000024f540429d0} 'reachabilityFence' '(Ljava/lang/Object;)V' in 'java/lang/ref/Reference')} + 0x0000024f38544e70: ffff 49ba | c829 0454 | 4f02 0000 | 4c89 5424 | 0848 c704 | 24ff ffff + + 0x0000024f38544e88: ; {runtime_call counter_overflow Runtime1 stub} + 0x0000024f38544e88: ffe8 f251 + + 0x0000024f38544e8c: ; ImmutableOopMap {rax=Oop } + ;*synchronization entry + ; - java.lang.ref.Reference::reachabilityFence@-1 (line 621) + ; - java.security.AccessController::executePrivileged@60 (line 782) + ; - java.security.AccessController::doPrivileged@13 (line 399) + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@18 (line 86) + 0x0000024f38544e8c: 0107 e9aa + + 0x0000024f38544e90: ; {internal_word} + 0x0000024f38544e90: feff ff49 | ba45 4d54 | 384f 0200 | 004d 8997 | 6803 0000 + + 0x0000024f38544ea4: ; {runtime_call SafepointBlob} + 0x0000024f38544ea4: e957 2bf7 + + 0x0000024f38544ea8: ; {metadata(NULL)} + 0x0000024f38544ea8: 0648 ba00 | 0000 0000 | 0000 00b8 | 000f 050a + + 0x0000024f38544eb8: ; {runtime_call load_klass_patching Runtime1 stub} + 0x0000024f38544eb8: e843 4101 + + 0x0000024f38544ebc: ; ImmutableOopMap {} + ;*new {reexecute=1 rethrow=0 return_oop=0} + ; - (reexecute) java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@4 (line 83) + 0x0000024f38544ebc: 07e9 96fe | ffff 488b + + 0x0000024f38544ec4: ; {runtime_call fast_new_instance Runtime1 stub} + 0x0000024f38544ec4: d2e8 b609 + + 0x0000024f38544ec8: ; ImmutableOopMap {} + ;*new {reexecute=0 rethrow=0 return_oop=0} + ; - java.security.ProtectionDomain$JavaSecurityAccessImpl::doIntersectionPrivilege@4 (line 83) + 0x0000024f38544ec8: 0107 e9e5 | feff ff90 | 9049 8b87 | e003 0000 | 49c7 87e0 | 0300 0000 | 0000 0049 | c787 e803 + 0x0000024f38544ee8: 0000 0000 | 0000 4881 | c490 0000 + + 0x0000024f38544ef4: ; {runtime_call unwind_exception Runtime1 stub} + 0x0000024f38544ef4: 005d e905 | 21f8 06f4 | f4f4 f4f4 +[Stub Code] + 0x0000024f38544f00: ; {no_reloc} + 0x0000024f38544f00: 0f1f 4400 + + 0x0000024f38544f04: ; {static_stub} + 0x0000024f38544f04: 0048 bbe0 | 3230 544f + + 0x0000024f38544f0c: ; {runtime_call I2C/C2I adapters} + 0x0000024f38544f0c: 0200 00e9 | 4917 f706 + + 0x0000024f38544f14: ; {static_stub} + 0x0000024f38544f14: 9048 bb00 | 0000 0000 + + 0x0000024f38544f1c: ; {runtime_call} + 0x0000024f38544f1c: 0000 00e9 | fbff ffff + + 0x0000024f38544f24: ; {static_stub} + 0x0000024f38544f24: 9048 bb00 | 0000 0000 + + 0x0000024f38544f2c: ; {runtime_call} + 0x0000024f38544f2c: 0000 00e9 | fbff ffff + + 0x0000024f38544f34: ; {static_stub} + 0x0000024f38544f34: 9048 bb00 | 0000 0000 + + 0x0000024f38544f3c: ; {runtime_call} + 0x0000024f38544f3c: 0000 00e9 | fbff ffff + + 0x0000024f38544f44: ; {static_stub} + 0x0000024f38544f44: 9048 bb00 | 0000 0000 + + 0x0000024f38544f4c: ; {runtime_call} + 0x0000024f38544f4c: 0000 00e9 | fbff ffff + + 0x0000024f38544f54: ; {static_stub} + 0x0000024f38544f54: 9048 bb00 | 0000 0000 + + 0x0000024f38544f5c: ; {runtime_call} + 0x0000024f38544f5c: 0000 00e9 | fbff ffff +[Exception Handler] + 0x0000024f38544f64: ; {runtime_call handle_exception_from_callee Runtime1 stub} + 0x0000024f38544f64: e817 1e01 + + 0x0000024f38544f68: ; {external_word} + 0x0000024f38544f68: 0748 b9a0 | 7dde 0afe | 7f00 0048 + + 0x0000024f38544f74: ; {runtime_call} + 0x0000024f38544f74: 83e4 f049 | baf0 e4a6 | 0afe 7f00 | 0041 ffd2 + + 0x0000024f38544f84: ; {section_word} + 0x0000024f38544f84: f449 ba85 | 4f54 384f | 0200 0041 + + 0x0000024f38544f90: ; {runtime_call DeoptimizationBlob} + 0x0000024f38544f90: 52e9 0a1d | f706 f4f4 +[/MachCode] + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x0000024f59530570, length=24, elements={ +0x0000024f34a5a660, 0x0000024f534f2ed0, 0x0000024f534f3c60, 0x0000024f53526d50, +0x0000024f53527820, 0x0000024f535282f0, 0x0000024f5352abd0, 0x0000024f5352b880, +0x0000024f5352c240, 0x0000024f5354f350, 0x0000024f536c8c40, 0x0000024f536d2b20, +0x0000024f58382fd0, 0x0000024f583834b0, 0x0000024f58383d60, 0x0000024f58a70f80, +0x0000024f58976010, 0x0000024f5882f9d0, 0x0000024f5897c460, 0x0000024f5897be00, +0x0000024f589ec880, 0x0000024f589eb440, 0x0000024f589edcc0, 0x0000024f589ecd90 +} + +Java Threads: ( => current thread ) + 0x0000024f34a5a660 JavaThread "main" [_thread_blocked, id=13464, stack(0x000000d6da100000,0x000000d6da200000)] + 0x0000024f534f2ed0 JavaThread "Reference Handler" daemon [_thread_blocked, id=12472, stack(0x000000d6da800000,0x000000d6da900000)] + 0x0000024f534f3c60 JavaThread "Finalizer" daemon [_thread_blocked, id=3372, stack(0x000000d6da900000,0x000000d6daa00000)] + 0x0000024f53526d50 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=14956, stack(0x000000d6daa00000,0x000000d6dab00000)] + 0x0000024f53527820 JavaThread "Attach Listener" daemon [_thread_blocked, id=16320, stack(0x000000d6dab00000,0x000000d6dac00000)] + 0x0000024f535282f0 JavaThread "Service Thread" daemon [_thread_blocked, id=5852, stack(0x000000d6dac00000,0x000000d6dad00000)] + 0x0000024f5352abd0 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=7120, stack(0x000000d6dad00000,0x000000d6dae00000)] + 0x0000024f5352b880 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=13752, stack(0x000000d6dae00000,0x000000d6daf00000)] + 0x0000024f5352c240 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=13280, stack(0x000000d6daf00000,0x000000d6db000000)] + 0x0000024f5354f350 JavaThread "Sweeper thread" daemon [_thread_blocked, id=2976, stack(0x000000d6db000000,0x000000d6db100000)] + 0x0000024f536c8c40 JavaThread "Notification Thread" daemon [_thread_blocked, id=11952, stack(0x000000d6db100000,0x000000d6db200000)] + 0x0000024f536d2b20 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=9752, stack(0x000000d6db300000,0x000000d6db400000)] + 0x0000024f58382fd0 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=7296, stack(0x000000d6db600000,0x000000d6db700000)] + 0x0000024f583834b0 JavaThread "AWT-Shutdown" [_thread_blocked, id=15232, stack(0x000000d6db700000,0x000000d6db800000)] + 0x0000024f58383d60 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2168, stack(0x000000d6db800000,0x000000d6db900000)] + 0x0000024f58a70f80 JavaThread "DefaultDispatcher-worker-1" daemon [_thread_blocked, id=14636, stack(0x000000d6db900000,0x000000d6dba00000)] + 0x0000024f58976010 JavaThread "DefaultDispatcher-worker-2" daemon [_thread_blocked, id=8212, stack(0x000000d6dba00000,0x000000d6dbb00000)] + 0x0000024f5882f9d0 JavaThread "DefaultDispatcher-worker-3" daemon [_thread_blocked, id=14208, stack(0x000000d6dbb00000,0x000000d6dbc00000)] + 0x0000024f5897c460 JavaThread "Reference Cleaner" daemon [_thread_blocked, id=5392, stack(0x000000d6dbc00000,0x000000d6dbd00000)] + 0x0000024f5897be00 JavaThread "kotlinx.coroutines.DefaultExecutor" daemon [_thread_blocked, id=12796, stack(0x000000d6dbd00000,0x000000d6dbe00000)] +=>0x0000024f589ec880 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=14472, stack(0x000000d6dbe00000,0x000000d6dbf00000)] + 0x0000024f589eb440 JavaThread "DefaultDispatcher-worker-4" daemon [_thread_blocked, id=15592, stack(0x000000d6db500000,0x000000d6db600000)] + 0x0000024f589edcc0 JavaThread "DefaultDispatcher-worker-5" daemon [_thread_blocked, id=14912, stack(0x000000d6dca00000,0x000000d6dcb00000)] + 0x0000024f589ecd90 JavaThread "pool-1-thread-1" daemon [_thread_blocked, id=10808, stack(0x000000d6dcb00000,0x000000d6dcc00000)] + +Other Threads: + 0x0000024f5337ebf0 VMThread "VM Thread" [stack: 0x000000d6da700000,0x000000d6da800000] [id=13080] + 0x0000024f535e8460 WatcherThread [stack: 0x000000d6db200000,0x000000d6db300000] [id=14516] + 0x0000024f34ac53d0 GCTaskThread "GC Thread#0" [stack: 0x000000d6da200000,0x000000d6da300000] [id=13224] + 0x0000024f58e060f0 GCTaskThread "GC Thread#1" [stack: 0x000000d6dbf00000,0x000000d6dc000000] [id=15192] + 0x0000024f58e063b0 GCTaskThread "GC Thread#2" [stack: 0x000000d6dc000000,0x000000d6dc100000] [id=7488] + 0x0000024f58e06670 GCTaskThread "GC Thread#3" [stack: 0x000000d6dc100000,0x000000d6dc200000] [id=10004] + 0x0000024f58e06930 GCTaskThread "GC Thread#4" [stack: 0x000000d6dc200000,0x000000d6dc300000] [id=9996] + 0x0000024f58e06bf0 GCTaskThread "GC Thread#5" [stack: 0x000000d6dc300000,0x000000d6dc400000] [id=1344] + 0x0000024f58df3860 GCTaskThread "GC Thread#6" [stack: 0x000000d6dc400000,0x000000d6dc500000] [id=15212] + 0x0000024f58ebc100 GCTaskThread "GC Thread#7" [stack: 0x000000d6dc500000,0x000000d6dc600000] [id=11404] + 0x0000024f34ad6070 ConcurrentGCThread "G1 Main Marker" [stack: 0x000000d6da300000,0x000000d6da400000] [id=7016] + 0x0000024f34ad6a90 ConcurrentGCThread "G1 Conc#0" [stack: 0x000000d6da400000,0x000000d6da500000] [id=13800] + 0x0000024f58eee4f0 ConcurrentGCThread "G1 Conc#1" [stack: 0x000000d6dc600000,0x000000d6dc700000] [id=15368] + 0x0000024f34b0ebe0 ConcurrentGCThread "G1 Refine#0" [stack: 0x000000d6da500000,0x000000d6da600000] [id=4420] + 0x0000024f532226c0 ConcurrentGCThread "G1 Service" [stack: 0x000000d6da600000,0x000000d6da700000] [id=3524] + +Threads with active compile tasks: + +VM state: not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x0000000702a00000, size: 4054 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 + +CDS archive(s) not mapped +Compressed class space mapped at: 0x0000000800000000-0x0000000840000000, reserved size: 1073741824 +Narrow klass base: 0x0000000800000000, Narrow klass shift: 0, Narrow klass range: 0x40000000 + +GC Precious Log: + CPUs: 8 total, 8 available + Memory: 16213M + Large Page Support: Disabled + NUMA Support: Disabled + Compressed Oops: Enabled (Zero based) + Heap Region Size: 2M + Heap Min Capacity: 8M + Heap Initial Capacity: 254M + Heap Max Capacity: 4054M + Pre-touch: Disabled + Parallel Workers: 8 + Concurrent Workers: 2 + Concurrent Refinement Workers: 8 + Periodic GC: Disabled + +Heap: + garbage-first heap total 90112K, used 27325K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 8 young (16384K), 2 survivors (4096K) + Metaspace used 37278K, committed 37504K, reserved 1114112K + class space used 3699K, committed 3776K, reserved 1048576K + +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next) +| 0|0x0000000702a00000, 0x0000000702c00000, 0x0000000702c00000|100%|HS| |TAMS 0x0000000702c00000, 0x0000000702a00000| Complete +| 1|0x0000000702c00000, 0x0000000702e00000, 0x0000000702e00000|100%| O| |TAMS 0x0000000702e00000, 0x0000000702c00000| Untracked +| 2|0x0000000702e00000, 0x0000000702f33c00, 0x0000000703000000| 60%| O| |TAMS 0x0000000702f33c00, 0x0000000702e00000| Untracked +| 3|0x0000000703000000, 0x0000000703200000, 0x0000000703200000|100%| O| |TAMS 0x0000000703200000, 0x0000000703000000| Untracked +| 4|0x0000000703200000, 0x0000000703400000, 0x0000000703400000|100%| O| |TAMS 0x0000000703400000, 0x0000000703200000| Untracked +| 5|0x0000000703400000, 0x0000000703600000, 0x0000000703600000|100%|HS| |TAMS 0x0000000703400000, 0x0000000703400000| Complete +| 6|0x0000000703600000, 0x0000000703800000, 0x0000000703800000|100%|HC| |TAMS 0x0000000703600000, 0x0000000703600000| Complete +| 7|0x0000000703800000, 0x0000000703800000, 0x0000000703a00000| 0%| F| |TAMS 0x0000000703800000, 0x0000000703800000| Untracked +| 8|0x0000000703a00000, 0x0000000703a00000, 0x0000000703c00000| 0%| F| |TAMS 0x0000000703a00000, 0x0000000703a00000| Untracked +| 9|0x0000000703c00000, 0x0000000703c00000, 0x0000000703e00000| 0%| F| |TAMS 0x0000000703c00000, 0x0000000703c00000| Untracked +| 10|0x0000000703e00000, 0x0000000703e00000, 0x0000000704000000| 0%| F| |TAMS 0x0000000703e00000, 0x0000000703e00000| Untracked +| 11|0x0000000704000000, 0x0000000704000000, 0x0000000704200000| 0%| F| |TAMS 0x0000000704000000, 0x0000000704000000| Untracked +| 12|0x0000000704200000, 0x0000000704200000, 0x0000000704400000| 0%| F| |TAMS 0x0000000704200000, 0x0000000704200000| Untracked +| 13|0x0000000704400000, 0x0000000704400000, 0x0000000704600000| 0%| F| |TAMS 0x0000000704400000, 0x0000000704400000| Untracked +| 14|0x0000000704600000, 0x0000000704600000, 0x0000000704800000| 0%| F| |TAMS 0x0000000704600000, 0x0000000704600000| Untracked +| 15|0x0000000704800000, 0x0000000704800000, 0x0000000704a00000| 0%| F| |TAMS 0x0000000704800000, 0x0000000704800000| Untracked +| 16|0x0000000704a00000, 0x0000000704b7bb70, 0x0000000704c00000| 74%| S|CS|TAMS 0x0000000704a00000, 0x0000000704a00000| Complete +| 17|0x0000000704c00000, 0x0000000704e00000, 0x0000000704e00000|100%| S|CS|TAMS 0x0000000704c00000, 0x0000000704c00000| Complete +| 18|0x0000000704e00000, 0x0000000704e00000, 0x0000000705000000| 0%| F| |TAMS 0x0000000704e00000, 0x0000000704e00000| Untracked +| 19|0x0000000705000000, 0x0000000705000000, 0x0000000705200000| 0%| F| |TAMS 0x0000000705000000, 0x0000000705000000| Untracked +| 20|0x0000000705200000, 0x0000000705200000, 0x0000000705400000| 0%| F| |TAMS 0x0000000705200000, 0x0000000705200000| Untracked +| 21|0x0000000705400000, 0x0000000705400000, 0x0000000705600000| 0%| F| |TAMS 0x0000000705400000, 0x0000000705400000| Untracked +| 22|0x0000000705600000, 0x0000000705600000, 0x0000000705800000| 0%| F| |TAMS 0x0000000705600000, 0x0000000705600000| Untracked +| 23|0x0000000705800000, 0x0000000705800000, 0x0000000705a00000| 0%| F| |TAMS 0x0000000705800000, 0x0000000705800000| Untracked +| 24|0x0000000705a00000, 0x0000000705a00000, 0x0000000705c00000| 0%| F| |TAMS 0x0000000705a00000, 0x0000000705a00000| Untracked +| 25|0x0000000705c00000, 0x0000000705c00000, 0x0000000705e00000| 0%| F| |TAMS 0x0000000705c00000, 0x0000000705c00000| Untracked +| 26|0x0000000705e00000, 0x0000000705e00000, 0x0000000706000000| 0%| F| |TAMS 0x0000000705e00000, 0x0000000705e00000| Untracked +| 27|0x0000000706000000, 0x0000000706000000, 0x0000000706200000| 0%| F| |TAMS 0x0000000706000000, 0x0000000706000000| Untracked +| 28|0x0000000706200000, 0x0000000706200000, 0x0000000706400000| 0%| F| |TAMS 0x0000000706200000, 0x0000000706200000| Untracked +| 29|0x0000000706400000, 0x0000000706400000, 0x0000000706600000| 0%| F| |TAMS 0x0000000706400000, 0x0000000706400000| Untracked +| 30|0x0000000706600000, 0x0000000706600000, 0x0000000706800000| 0%| F| |TAMS 0x0000000706600000, 0x0000000706600000| Untracked +| 31|0x0000000706800000, 0x0000000706800000, 0x0000000706a00000| 0%| F| |TAMS 0x0000000706800000, 0x0000000706800000| Untracked +| 32|0x0000000706a00000, 0x0000000706a00000, 0x0000000706c00000| 0%| F| |TAMS 0x0000000706a00000, 0x0000000706a00000| Untracked +| 33|0x0000000706c00000, 0x0000000706c00000, 0x0000000706e00000| 0%| F| |TAMS 0x0000000706c00000, 0x0000000706c00000| Untracked +| 34|0x0000000706e00000, 0x0000000706e00000, 0x0000000707000000| 0%| F| |TAMS 0x0000000706e00000, 0x0000000706e00000| Untracked +| 35|0x0000000707000000, 0x0000000707000000, 0x0000000707200000| 0%| F| |TAMS 0x0000000707000000, 0x0000000707000000| Untracked +| 36|0x0000000707200000, 0x0000000707200000, 0x0000000707400000| 0%| F| |TAMS 0x0000000707200000, 0x0000000707200000| Untracked +| 37|0x0000000707400000, 0x0000000707400000, 0x0000000707600000| 0%| F| |TAMS 0x0000000707400000, 0x0000000707400000| Untracked +| 38|0x0000000707600000, 0x0000000707800000, 0x0000000707800000|100%| E| |TAMS 0x0000000707600000, 0x0000000707600000| Complete +| 39|0x0000000707800000, 0x0000000707a00000, 0x0000000707a00000|100%| E|CS|TAMS 0x0000000707800000, 0x0000000707800000| Complete +| 40|0x0000000707a00000, 0x0000000707c00000, 0x0000000707c00000|100%| E|CS|TAMS 0x0000000707a00000, 0x0000000707a00000| Complete +| 41|0x0000000707c00000, 0x0000000707e00000, 0x0000000707e00000|100%| E|CS|TAMS 0x0000000707c00000, 0x0000000707c00000| Complete +| 60|0x000000070a200000, 0x000000070a400000, 0x000000070a400000|100%| E|CS|TAMS 0x000000070a200000, 0x000000070a200000| Complete +| 126|0x0000000712600000, 0x0000000712800000, 0x0000000712800000|100%| E|CS|TAMS 0x0000000712600000, 0x0000000712600000| Complete + +Card table byte_map: [0x0000024f47a50000,0x0000024f48240000] _byte_map_base: 0x0000024f4423b000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x0000024f34ac59f0, (CMBitMap*) 0x0000024f34ac5a30 + Prev Bits: [0x0000024f48a30000, 0x0000024f4c988000) + Next Bits: [0x0000024f4c990000, 0x0000024f508e8000) + +Polling page: 0x0000024f34210000 + +Metaspace: + +Usage: + Non-class: 32.79 MB used. + Class: 3.61 MB used. + Both: 36.40 MB used. + +Virtual space: + Non-class space: 64.00 MB reserved, 32.94 MB ( 51%) committed, 1 nodes. + Class space: 1.00 GB reserved, 3.69 MB ( <1%) committed, 1 nodes. + Both: 1.06 GB reserved, 36.62 MB ( 3%) committed. + +Chunk freelists: + Non-Class: 15.06 MB + Class: 12.12 MB + Both: 27.19 MB + +MaxMetaspaceSize: unlimited +CompressedClassSpaceSize: 1.00 GB +Initial GC threshold: 21.00 MB +Current GC threshold: 58.75 MB +CDS: off +MetaspaceReclaimPolicy: balanced + - commit_granule_bytes: 65536. + - commit_granule_words: 8192. + - virtual_space_node_default_size: 8388608. + - enlarge_chunks_in_place: 1. + - new_chunks_are_fully_committed: 0. + - uncommit_free_chunks: 1. + - use_allocation_guard: 0. + - handle_deallocations: 1. + + +Internal statistics: + +num_allocs_failed_limit: 6. +num_arena_births: 280. +num_arena_deaths: 0. +num_vsnodes_births: 2. +num_vsnodes_deaths: 0. +num_space_committed: 586. +num_space_uncommitted: 0. +num_chunks_returned_to_freelist: 6. +num_chunks_taken_from_freelist: 1088. +num_chunk_merges: 6. +num_chunk_splits: 850. +num_chunks_enlarged: 726. +num_inconsistent_stats: 0. + +CodeHeap 'non-profiled nmethods': size=120000Kb used=3107Kb max_used=3158Kb free=116892Kb + bounds [0x0000024f3fa00000, 0x0000024f3fd20000, 0x0000024f46f30000] +CodeHeap 'profiled nmethods': size=120000Kb used=11443Kb max_used=13159Kb free=108556Kb + bounds [0x0000024f37f30000, 0x0000024f38c10000, 0x0000024f3f460000] +CodeHeap 'non-nmethods': size=5760Kb used=1707Kb max_used=1780Kb free=4052Kb + bounds [0x0000024f3f460000, 0x0000024f3f6d0000, 0x0000024f3fa00000] + total_blobs=6567 nmethods=5427 adapters=1052 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 29.729 Thread 0x0000024f5352c240 6198 1 javax.swing.RepaintManager$PaintManager::show (2 bytes) +Event: 29.729 Thread 0x0000024f5352c240 nmethod 6198 0x0000024f3fb41f10 code [0x0000024f3fb420a0, 0x0000024f3fb42178] +Event: 29.803 Thread 0x0000024f5352c240 6199 3 java.util.IdentityHashMap::put (137 bytes) +Event: 29.803 Thread 0x0000024f5352c240 nmethod 6199 0x0000024f3851c510 code [0x0000024f3851c740, 0x0000024f3851d238] +Event: 29.848 Thread 0x0000024f5352c240 6200 3 sun.awt.PeerEvent:: (10 bytes) +Event: 29.848 Thread 0x0000024f5352c240 nmethod 6200 0x0000024f38401490 code [0x0000024f38401640, 0x0000024f38401788] +Event: 29.848 Thread 0x0000024f5352c240 6201 3 sun.awt.PeerEvent:: (16 bytes) +Event: 29.849 Thread 0x0000024f5352c240 nmethod 6201 0x0000024f38460e10 code [0x0000024f38460fa0, 0x0000024f38461108] +Event: 29.865 Thread 0x0000024f5352c240 6202 s 3 javax.swing.RepaintManager$ProcessingRunnable::markPending (16 bytes) +Event: 29.865 Thread 0x0000024f5352c240 nmethod 6202 0x0000024f383ab390 code [0x0000024f383ab540, 0x0000024f383ab798] +Event: 29.880 Thread 0x0000024f5352c240 6203 3 sun.awt.SunToolkit::executeOnEventHandlerThread (14 bytes) +Event: 29.881 Thread 0x0000024f5352c240 nmethod 6203 0x0000024f384bd010 code [0x0000024f384bd220, 0x0000024f384bd958] +Event: 29.881 Thread 0x0000024f5352c240 6204 3 sun.awt.SunToolkit::executeOnEventHandlerThread (12 bytes) +Event: 29.881 Thread 0x0000024f5352c240 nmethod 6204 0x0000024f38539390 code [0x0000024f38539580, 0x0000024f38539b88] +Event: 29.888 Thread 0x0000024f5352c240 6205 3 sun.awt.windows.WComponentPeer::dynamicallyLayoutContainer (57 bytes) +Event: 29.889 Thread 0x0000024f5352c240 nmethod 6205 0x0000024f383ba810 code [0x0000024f383baa40, 0x0000024f383bb3b8] +Event: 29.889 Thread 0x0000024f5352c240 6206 3 sun.awt.windows.WComponentPeer$1:: (15 bytes) +Event: 29.889 Thread 0x0000024f5352c240 nmethod 6206 0x0000024f383bdb90 code [0x0000024f383bdd40, 0x0000024f383bdf78] +Event: 30.548 Thread 0x0000024f5352c240 6207 3 java.awt.EventQueue::coalescePeerEvent (66 bytes) +Event: 30.548 Thread 0x0000024f5352c240 nmethod 6207 0x0000024f38482e10 code [0x0000024f38483000, 0x0000024f38483728] + +GC Heap History (18 events): +Event: 0.440 GC heap before +{Heap before GC invocations=0 (full 0): + garbage-first heap total 260096K, used 22528K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 11 young (22528K), 0 survivors (0K) + Metaspace used 15353K, committed 15552K, reserved 1114112K + class space used 1392K, committed 1472K, reserved 1048576K +} +Event: 0.442 GC heap after +{Heap after GC invocations=1 (full 0): + garbage-first heap total 260096K, used 5920K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 2 young (4096K), 2 survivors (4096K) + Metaspace used 15353K, committed 15552K, reserved 1114112K + class space used 1392K, committed 1472K, reserved 1048576K +} +Event: 0.834 GC heap before +{Heap before GC invocations=1 (full 0): + garbage-first heap total 260096K, used 32544K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 16 young (32768K), 2 survivors (4096K) + Metaspace used 21408K, committed 21504K, reserved 1114112K + class space used 2057K, committed 2112K, reserved 1048576K +} +Event: 0.837 GC heap after +{Heap after GC invocations=2 (full 0): + garbage-first heap total 260096K, used 6854K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 1 young (2048K), 1 survivors (2048K) + Metaspace used 21408K, committed 21504K, reserved 1114112K + class space used 2057K, committed 2112K, reserved 1048576K +} +Event: 1.094 GC heap before +{Heap before GC invocations=3 (full 0): + garbage-first heap total 34816K, used 25286K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 11 young (22528K), 1 survivors (2048K) + Metaspace used 26870K, committed 27136K, reserved 1114112K + class space used 2770K, committed 2880K, reserved 1048576K +} +Event: 1.095 GC heap after +{Heap after GC invocations=4 (full 0): + garbage-first heap total 34816K, used 7514K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 1 young (2048K), 1 survivors (2048K) + Metaspace used 26870K, committed 27136K, reserved 1114112K + class space used 2770K, committed 2880K, reserved 1048576K +} +Event: 1.131 GC heap before +{Heap before GC invocations=4 (full 0): + garbage-first heap total 34816K, used 9562K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 2 young (4096K), 1 survivors (2048K) + Metaspace used 27731K, committed 27968K, reserved 1114112K + class space used 2885K, committed 3008K, reserved 1048576K +} +Event: 1.133 GC heap after +{Heap after GC invocations=5 (full 0): + garbage-first heap total 34816K, used 7600K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 1 young (2048K), 1 survivors (2048K) + Metaspace used 27731K, committed 27968K, reserved 1114112K + class space used 2885K, committed 3008K, reserved 1048576K +} +Event: 1.270 GC heap before +{Heap before GC invocations=5 (full 0): + garbage-first heap total 34816K, used 23984K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 7 young (14336K), 1 survivors (2048K) + Metaspace used 31739K, committed 32000K, reserved 1114112K + class space used 3309K, committed 3392K, reserved 1048576K +} +Event: 1.271 GC heap after +{Heap after GC invocations=6 (full 0): + garbage-first heap total 34816K, used 14978K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 2 young (4096K), 2 survivors (4096K) + Metaspace used 31739K, committed 32000K, reserved 1114112K + class space used 3309K, committed 3392K, reserved 1048576K +} +Event: 1.399 GC heap before +{Heap before GC invocations=6 (full 0): + garbage-first heap total 34816K, used 21122K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 6 young (12288K), 2 survivors (4096K) + Metaspace used 33686K, committed 33920K, reserved 1114112K + class space used 3532K, committed 3648K, reserved 1048576K +} +Event: 1.401 GC heap after +{Heap after GC invocations=7 (full 0): + garbage-first heap total 34816K, used 14335K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 1 young (2048K), 1 survivors (2048K) + Metaspace used 33686K, committed 33920K, reserved 1114112K + class space used 3532K, committed 3648K, reserved 1048576K +} +Event: 2.079 GC heap before +{Heap before GC invocations=7 (full 0): + garbage-first heap total 34816K, used 22527K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 6 young (12288K), 1 survivors (2048K) + Metaspace used 34827K, committed 35136K, reserved 1114112K + class space used 3640K, committed 3776K, reserved 1048576K +} +Event: 2.081 GC heap after +{Heap after GC invocations=8 (full 0): + garbage-first heap total 147456K, used 14368K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 1 young (2048K), 1 survivors (2048K) + Metaspace used 34827K, committed 35136K, reserved 1114112K + class space used 3640K, committed 3776K, reserved 1048576K +} +Event: 6.090 GC heap before +{Heap before GC invocations=8 (full 0): + garbage-first heap total 147456K, used 45088K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 12 young (24576K), 1 survivors (2048K) + Metaspace used 35765K, committed 35968K, reserved 1114112K + class space used 3660K, committed 3776K, reserved 1048576K +} +Event: 6.092 GC heap after +{Heap after GC invocations=9 (full 0): + garbage-first heap total 147456K, used 27804K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 1 young (2048K), 1 survivors (2048K) + Metaspace used 35765K, committed 35968K, reserved 1114112K + class space used 3660K, committed 3776K, reserved 1048576K +} +Event: 19.467 GC heap before +{Heap before GC invocations=10 (full 0): + garbage-first heap total 90112K, used 72860K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 26 young (53248K), 1 survivors (2048K) + Metaspace used 37122K, committed 37312K, reserved 1114112K + class space used 3699K, committed 3776K, reserved 1048576K +} +Event: 19.472 GC heap after +{Heap after GC invocations=11 (full 0): + garbage-first heap total 90112K, used 12989K [0x0000000702a00000, 0x0000000800000000) + region size 2048K, 2 young (4096K), 2 survivors (4096K) + Metaspace used 37122K, committed 37312K, reserved 1114112K + class space used 3699K, committed 3776K, reserved 1048576K +} + +Dll operation events (2 events): +Event: 0.006 Loaded shared library D:\Android Studio\jbr\bin\java.dll +Event: 1.120 Loaded shared library D:\Android Studio\jbr\bin\verify.dll + +Deoptimization events (20 events): +Event: 26.077 Thread 0x0000024f589ec880 Uncommon trap: trap_request=0xffffffcc fr.pc=0x0000024f3fca9aa4 relative=0x0000000000000204 +Event: 26.077 Thread 0x0000024f589ec880 Uncommon trap: reason=intrinsic_or_type_checked_inlining action=make_not_entrant pc=0x0000024f3fca9aa4 method=java.util.Arrays.copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object; @ 35 c2 +Event: 26.077 Thread 0x0000024f589ec880 DEOPT PACKING pc=0x0000024f3fca9aa4 sp=0x000000d6dbefe5a0 +Event: 26.077 Thread 0x0000024f589ec880 DEOPT UNPACKING pc=0x0000024f3f4b69a3 sp=0x000000d6dbefe530 mode 2 +Event: 29.705 Thread 0x0000024f58383d60 Uncommon trap: trap_request=0xffffff45 fr.pc=0x0000024f3fbf4c30 relative=0x0000000000003510 +Event: 29.705 Thread 0x0000024f58383d60 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000024f3fbf4c30 method=java.awt.EventQueue.getPriority(Ljava/awt/AWTEvent;)I @ 22 c2 +Event: 29.705 Thread 0x0000024f58383d60 DEOPT PACKING pc=0x0000024f3fbf4c30 sp=0x000000d6db8fbfe0 +Event: 29.705 Thread 0x0000024f58383d60 DEOPT UNPACKING pc=0x0000024f3f4b69a3 sp=0x000000d6db8fbe98 mode 2 +Event: 29.705 Thread 0x0000024f58383d60 Uncommon trap: trap_request=0xffffff45 fr.pc=0x0000024f3fca3394 relative=0x0000000000000094 +Event: 29.705 Thread 0x0000024f58383d60 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000024f3fca3394 method=java.awt.EventQueue.getPriority(Ljava/awt/AWTEvent;)I @ 22 c2 +Event: 29.705 Thread 0x0000024f58383d60 DEOPT PACKING pc=0x0000024f3fca3394 sp=0x000000d6db8fbf10 +Event: 29.705 Thread 0x0000024f58383d60 DEOPT UNPACKING pc=0x0000024f3f4b69a3 sp=0x000000d6db8fbea0 mode 2 +Event: 30.375 Thread 0x0000024f5897be00 Uncommon trap: trap_request=0xffffffde fr.pc=0x0000024f3fa06f9c relative=0x00000000000001dc +Event: 30.375 Thread 0x0000024f5897be00 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000024f3fa06f9c method=kotlinx.coroutines.CancellableContinuationImpl.resumedState(Lkotlinx/coroutines/NotCompleted;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/ +Event: 30.375 Thread 0x0000024f5897be00 DEOPT PACKING pc=0x0000024f3fa06f9c sp=0x000000d6dbdfee90 +Event: 30.375 Thread 0x0000024f5897be00 DEOPT UNPACKING pc=0x0000024f3f4b69a3 sp=0x000000d6dbdfee10 mode 2 +Event: 30.375 Thread 0x0000024f5897be00 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x0000024f3fa481c4 relative=0x0000000000000104 +Event: 30.375 Thread 0x0000024f5897be00 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x0000024f3fa481c4 method=kotlinx.coroutines.DispatchedTaskKt.dispatch(Lkotlinx/coroutines/DispatchedTask;I)V @ 91 c2 +Event: 30.375 Thread 0x0000024f5897be00 DEOPT PACKING pc=0x0000024f3fa481c4 sp=0x000000d6dbdfee80 +Event: 30.375 Thread 0x0000024f5897be00 DEOPT UNPACKING pc=0x0000024f3f4b69a3 sp=0x000000d6dbdfee28 mode 2 + +Classes unloaded (0 events): +No events + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 1.150 Thread 0x0000024f589ec880 Exception (0x00000007126ccd40) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.152 Thread 0x0000024f589ec880 Exception (0x00000007126df600) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.152 Thread 0x0000024f58a70f80 Exception (0x00000007127f70e0) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.152 Thread 0x0000024f589ec880 Exception (0x00000007046041f8) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.152 Thread 0x0000024f58a70f80 Exception (0x00000007127fa590) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.154 Thread 0x0000024f589ec880 Exception (0x0000000704624340) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.155 Thread 0x0000024f589ec880 Exception (0x0000000704627ed0) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.155 Thread 0x0000024f589ec880 Exception (0x00000007046640b0) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.156 Thread 0x0000024f589ec880 Exception (0x000000070466bc40) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.157 Thread 0x0000024f589ec880 Exception (0x0000000704672d38) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.157 Thread 0x0000024f589ec880 Exception (0x0000000704679e38) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.157 Thread 0x0000024f589ec880 Exception (0x000000070467e6e8) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.160 Thread 0x0000024f589ec880 Exception (0x00000007046a2a78) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.170 Thread 0x0000024f58a70f80 Exception (0x00000007046e0308) +thrown [s\src\hotspot\share\prims\jni.cpp, line 517] +Event: 1.340 Thread 0x0000024f58a70f80 Exception (0x00000007047413d0) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.547 Thread 0x0000024f589ec880 Exception (0x0000000704530580) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.547 Thread 0x0000024f589ec880 Exception (0x0000000704535530) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.556 Thread 0x0000024f589ec880 Exception (0x00000007045a2300) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.778 Thread 0x0000024f589ec880 Exception (0x00000007040885d0) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] +Event: 1.778 Thread 0x0000024f589ec880 Exception (0x000000070408c580) +thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 771] + +VM Operations (20 events): +Event: 19.125 Executing VM operation: HandshakeAllThreads +Event: 19.125 Executing VM operation: HandshakeAllThreads done +Event: 19.359 Executing VM operation: HandshakeAllThreads +Event: 19.359 Executing VM operation: HandshakeAllThreads done +Event: 19.359 Executing VM operation: Cleanup +Event: 19.360 Executing VM operation: Cleanup done +Event: 19.467 Executing VM operation: G1CollectForAllocation +Event: 19.472 Executing VM operation: G1CollectForAllocation done +Event: 20.479 Executing VM operation: Cleanup +Event: 20.479 Executing VM operation: Cleanup done +Event: 21.489 Executing VM operation: Cleanup +Event: 21.490 Executing VM operation: Cleanup done +Event: 22.495 Executing VM operation: Cleanup +Event: 22.495 Executing VM operation: Cleanup done +Event: 23.507 Executing VM operation: Cleanup +Event: 23.507 Executing VM operation: Cleanup done +Event: 24.518 Executing VM operation: Cleanup +Event: 24.518 Executing VM operation: Cleanup done +Event: 26.536 Executing VM operation: Cleanup +Event: 26.536 Executing VM operation: Cleanup done + +Events (20 events): +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f387f2f90 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f387f3f90 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f387f4c10 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f387f4f10 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f387fe890 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38800410 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38803b10 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38804810 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38806d10 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38812390 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38819010 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38828690 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f3882a790 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f3882d990 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38840890 +Event: 19.364 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f3888af10 +Event: 19.365 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f388cdc90 +Event: 19.366 Thread 0x0000024f5354f350 flushing nmethod 0x0000024f38a45c10 +Event: 19.483 Thread 0x0000024f595bd670 Thread added: 0x0000024f595bd670 +Event: 19.681 Thread 0x0000024f595bd670 Thread exited: 0x0000024f595bd670 + + +Dynamic libraries: +0x00007ff764ca0000 - 0x00007ff764caa000 D:\Android Studio\jbr\bin\java.exe +0x00007ffe7d010000 - 0x00007ffe7d208000 C:\Windows\SYSTEM32\ntdll.dll +0x00007ffe7c570000 - 0x00007ffe7c62d000 C:\Windows\System32\KERNEL32.DLL +0x00007ffe7a720000 - 0x00007ffe7aa16000 C:\Windows\System32\KERNELBASE.dll +0x00007ffe7adc0000 - 0x00007ffe7aec0000 C:\Windows\System32\ucrtbase.dll +0x00007ffe0d9b0000 - 0x00007ffe0d9c7000 D:\Android Studio\jbr\bin\jli.dll +0x00007ffe7c230000 - 0x00007ffe7c3cf000 C:\Windows\System32\USER32.dll +0x00007ffe7aec0000 - 0x00007ffe7aee2000 C:\Windows\System32\win32u.dll +0x00007ffe7cce0000 - 0x00007ffe7cd0b000 C:\Windows\System32\GDI32.dll +0x00007ffe7aa20000 - 0x00007ffe7ab37000 C:\Windows\System32\gdi32full.dll +0x00007ffe7ac60000 - 0x00007ffe7acfd000 C:\Windows\System32\msvcp_win.dll +0x00007ffe77950000 - 0x00007ffe7796b000 D:\Android Studio\jbr\bin\VCRUNTIME140.dll +0x00007ffe62310000 - 0x00007ffe625aa000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.4355_none_60b8b9eb71f62e16\COMCTL32.dll +0x00007ffe7cd10000 - 0x00007ffe7cdae000 C:\Windows\System32\msvcrt.dll +0x00007ffe7ba20000 - 0x00007ffe7ba4f000 C:\Windows\System32\IMM32.DLL +0x00007ffe77930000 - 0x00007ffe7793c000 D:\Android Studio\jbr\bin\vcruntime140_1.dll +0x00007ffe63180000 - 0x00007ffe6320d000 D:\Android Studio\jbr\bin\msvcp140.dll +0x00007ffe0a4b0000 - 0x00007ffe0b133000 D:\Android Studio\jbr\bin\server\jvm.dll +0x00007ffe7b050000 - 0x00007ffe7b100000 C:\Windows\System32\ADVAPI32.dll +0x00007ffe7b100000 - 0x00007ffe7b1a0000 C:\Windows\System32\sechost.dll +0x00007ffe7c430000 - 0x00007ffe7c553000 C:\Windows\System32\RPCRT4.dll +0x00007ffe7ad00000 - 0x00007ffe7ad27000 C:\Windows\System32\bcrypt.dll +0x00007ffe79c60000 - 0x00007ffe79cab000 C:\Windows\SYSTEM32\POWRPROF.dll +0x00007ffe66310000 - 0x00007ffe66319000 C:\Windows\SYSTEM32\WSOCK32.dll +0x00007ffe7cf60000 - 0x00007ffe7cfcb000 C:\Windows\System32\WS2_32.dll +0x00007ffe63440000 - 0x00007ffe63467000 C:\Windows\SYSTEM32\WINMM.dll +0x00007ffe72530000 - 0x00007ffe7253a000 C:\Windows\SYSTEM32\VERSION.dll +0x00007ffe79c40000 - 0x00007ffe79c52000 C:\Windows\SYSTEM32\UMPDC.dll +0x00007ffe78390000 - 0x00007ffe783a2000 C:\Windows\SYSTEM32\kernel.appcore.dll +0x00007ffe32260000 - 0x00007ffe3226a000 D:\Android Studio\jbr\bin\jimage.dll +0x00007ffe514d0000 - 0x00007ffe516b4000 C:\Windows\SYSTEM32\DBGHELP.DLL +0x00007ffe4f530000 - 0x00007ffe4f564000 C:\Windows\SYSTEM32\dbgcore.DLL +0x00007ffe7ad30000 - 0x00007ffe7adb2000 C:\Windows\System32\bcryptPrimitives.dll +0x00007ffe32230000 - 0x00007ffe32255000 D:\Android Studio\jbr\bin\java.dll +0x00007ffe32210000 - 0x00007ffe32228000 D:\Android Studio\jbr\bin\zip.dll +0x00007ffe7bac0000 - 0x00007ffe7c22c000 C:\Windows\System32\SHELL32.dll +0x00007ffe78590000 - 0x00007ffe78d2d000 C:\Windows\SYSTEM32\windows.storage.dll +0x00007ffe7c8f0000 - 0x00007ffe7cc43000 C:\Windows\System32\combase.dll +0x00007ffe7a0f0000 - 0x00007ffe7a11e000 C:\Windows\SYSTEM32\Wldp.dll +0x00007ffe7ce70000 - 0x00007ffe7cf3d000 C:\Windows\System32\OLEAUT32.dll +0x00007ffe7b3d0000 - 0x00007ffe7b47d000 C:\Windows\System32\SHCORE.dll +0x00007ffe7c3d0000 - 0x00007ffe7c425000 C:\Windows\System32\shlwapi.dll +0x00007ffe7a600000 - 0x00007ffe7a624000 C:\Windows\SYSTEM32\profapi.dll +0x00007ffe16f40000 - 0x00007ffe16f59000 D:\Android Studio\jbr\bin\net.dll +0x00007ffe73070000 - 0x00007ffe7317a000 C:\Windows\SYSTEM32\WINHTTP.dll +0x00007ffe79e50000 - 0x00007ffe79eba000 C:\Windows\system32\mswsock.dll +0x00007ffe16f20000 - 0x00007ffe16f36000 D:\Android Studio\jbr\bin\nio.dll +0x00007ffe03770000 - 0x00007ffe047a9000 C:\Users\zhirkevichAY\.skiko\1af4ee19332ed4d6e49736b682169156441810a37589c852cea0529cd125890f\skiko-windows-x64.dll +0x00007ffe78180000 - 0x00007ffe781af000 C:\Windows\SYSTEM32\dwmapi.dll +0x00007ffe0d160000 - 0x00007ffe0d2f8000 D:\Android Studio\jbr\bin\awt.dll +0x00007ffe777c0000 - 0x00007ffe77850000 C:\Windows\SYSTEM32\apphelp.dll +0x00007ffe77eb0000 - 0x00007ffe77f4e000 C:\Windows\system32\uxtheme.dll +0x00007ffe7c630000 - 0x00007ffe7c744000 C:\Windows\System32\MSCTF.dll +0x00007ffe7b8f0000 - 0x00007ffe7ba1b000 C:\Windows\System32\ole32.dll +0x00007ffe440c0000 - 0x00007ffe441e5000 C:\Windows\system32\opengl32.dll +0x00007ffe44480000 - 0x00007ffe444ac000 C:\Windows\SYSTEM32\GLU32.dll +0x00007ffe0d040000 - 0x00007ffe0d0c8000 D:\Android Studio\jbr\bin\freetype.dll +0x00007ffe0d6f0000 - 0x00007ffe0d7c7000 D:\Android Studio\jbr\bin\fontmanager.dll +0x00007ffe64c30000 - 0x00007ffe64eaf000 C:\Windows\SYSTEM32\dwrite.dll +0x00007ffe3b940000 - 0x00007ffe3bae7000 C:\Windows\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.4355_none_91a3acd0cc88a7e4\gdiplus.dll +0x00007ffe77920000 - 0x00007ffe77927000 D:\Android Studio\jbr\bin\jawt.dll +0x00007ffe78d80000 - 0x00007ffe78e72000 C:\Windows\SYSTEM32\Dxgi.dll +0x00007ffe65ed0000 - 0x00007ffe65ef5000 C:\Windows\SYSTEM32\D3D12.dll +0x00007ffe2e0a0000 - 0x00007ffe2e26d000 C:\Windows\SYSTEM32\D3D12Core.dll +0x00007ffe70820000 - 0x00007ffe7085b000 C:\Windows\SYSTEM32\dxcore.dll +0x00007ffe7a6d0000 - 0x00007ffe7a71e000 C:\Windows\System32\cfgmgr32.dll +0x00007ffe67c30000 - 0x00007ffe6b241000 C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0797c0ea8580ae89\igc64.dll +0x00007ffe2d730000 - 0x00007ffe2e094000 C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0797c0ea8580ae89\igd12umd64.dll +0x00007ffe7aef0000 - 0x00007ffe7b04e000 C:\Windows\System32\CRYPT32.dll +0x00007ffe6b330000 - 0x00007ffe6b6f7000 C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0797c0ea8580ae89\igdgmm64.dll +0x00007ffe65ea0000 - 0x00007ffe65ecb000 C:\Windows\SYSTEM32\D3DSCache.dll +0x00007ffe7a570000 - 0x00007ffe7a59e000 C:\Windows\SYSTEM32\USERENV.dll +0x00007ffdfbba0000 - 0x00007ffe003e0000 C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0797c0ea8580ae89\igd12dxva64.dll +0x00007ffe7b480000 - 0x00007ffe7b8ee000 C:\Windows\System32\SETUPAPI.dll +0x00007ffe532f0000 - 0x00007ffe53317000 C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0797c0ea8580ae89\igdinfo64.dll +0x00007ffe71090000 - 0x00007ffe71293000 C:\Windows\SYSTEM32\twinapi.appcore.dll +0x00007ffe756a0000 - 0x00007ffe75885000 C:\Windows\SYSTEM32\dcomp.dll +0x00007ffe70f90000 - 0x00007ffe71089000 C:\Windows\SYSTEM32\textinputframework.dll +0x00007ffe76950000 - 0x00007ffe76cab000 C:\Windows\System32\CoreUIComponents.dll +0x00007ffe76fb0000 - 0x00007ffe770a2000 C:\Windows\System32\CoreMessaging.dll +0x00007ffe797e0000 - 0x00007ffe79813000 C:\Windows\SYSTEM32\ntmarta.dll +0x00007ffe758e0000 - 0x00007ffe75a37000 C:\Windows\SYSTEM32\wintypes.dll +0x00007ffe16f10000 - 0x00007ffe16f20000 D:\Android Studio\jbr\bin\verify.dll +0x00007ffe73c80000 - 0x00007ffe740dd000 C:\Windows\SYSTEM32\d3dcompiler_47.dll +0x00007ffe7a040000 - 0x00007ffe7a058000 C:\Windows\SYSTEM32\CRYPTSP.dll +0x00007ffe4d1b0000 - 0x00007ffe4d2e9000 C:\Windows\SYSTEM32\dxilconv.dll +0x00007ffe780a0000 - 0x00007ffe7817c000 C:\Windows\SYSTEM32\wer.dll +0x00007ffe542c0000 - 0x00007ffe54352000 C:\Windows\SYSTEM32\aepic.dll +0x0000024f08020000 - 0x0000024f08023000 C:\Windows\SYSTEM32\sfc.dll +0x00007ffe53d90000 - 0x00007ffe53da2000 C:\Windows\SYSTEM32\sfc_os.DLL +0x00007ffe796a0000 - 0x00007ffe796d4000 C:\Windows\system32\rsaenh.dll +0x00007ffe7a060000 - 0x00007ffe7a06c000 C:\Windows\SYSTEM32\CRYPTBASE.dll +0x00007ffe626c0000 - 0x00007ffe626d9000 C:\Windows\SYSTEM32\NETAPI32.dll +0x00007ffe791a0000 - 0x00007ffe792e1000 C:\Windows\SYSTEM32\DSREG.DLL +0x00007ffe79730000 - 0x00007ffe797ba000 C:\Windows\SYSTEM32\msvcp110_win.dll +0x00007ffe7a280000 - 0x00007ffe7a292000 C:\Windows\SYSTEM32\MSASN1.dll +0x00007ffe71350000 - 0x00007ffe71386000 C:\Windows\SYSTEM32\XmlLite.dll +0x00007ffe7c760000 - 0x00007ffe7c809000 C:\Windows\System32\clbcatq.dll +0x00007ffe4f440000 - 0x00007ffe4f529000 C:\Windows\System32\FlightSettings.dll +0x00007ffe76d20000 - 0x00007ffe76dc1000 C:\Windows\SYSTEM32\policymanager.dll +0x00007ffe77b10000 - 0x00007ffe77b4f000 C:\Windows\System32\netprofm.dll +0x00007ffe67050000 - 0x00007ffe67060000 C:\Windows\System32\npmproxy.dll +0x00007ffe781b0000 - 0x00007ffe781da000 C:\Windows\SYSTEM32\rmclient.dll +0x00007ffe49d90000 - 0x00007ffe49e84000 C:\Windows\System32\Windows.Security.Authentication.OnlineId.dll +0x00007ffe7a4b0000 - 0x00007ffe7a4ba000 C:\Windows\SYSTEM32\DPAPI.DLL +0x00007ffe6d860000 - 0x00007ffe6e030000 C:\Windows\System32\OneCoreUAPCommonProxyStub.dll +0x00007ffe79ac0000 - 0x00007ffe79afb000 C:\Windows\SYSTEM32\IPHLPAPI.DLL +0x00007ffe76ce0000 - 0x00007ffe76ceb000 C:\Windows\SYSTEM32\WINNSI.DLL +0x00007ffe7ba50000 - 0x00007ffe7ba58000 C:\Windows\System32\NSI.dll +0x00007ffe75410000 - 0x00007ffe75427000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL +0x00007ffe75360000 - 0x00007ffe7537d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL +0x00007ffe66250000 - 0x00007ffe662e8000 C:\Windows\SYSTEM32\webio.dll +0x00007ffe7a5a0000 - 0x00007ffe7a5d2000 C:\Windows\SYSTEM32\SspiCli.dll +0x00007ffe79b10000 - 0x00007ffe79bda000 C:\Windows\SYSTEM32\DNSAPI.dll +0x00007ffe73010000 - 0x00007ffe7301a000 C:\Windows\System32\rasadhlp.dll +0x00007ffe75a40000 - 0x00007ffe75ac0000 C:\Windows\System32\fwpuclnt.dll +0x00007ffe795b0000 - 0x00007ffe79648000 C:\Windows\system32\schannel.DLL +0x00007ffe634a0000 - 0x00007ffe634b5000 C:\Windows\SYSTEM32\mskeyprotect.dll +0x00007ffe7a120000 - 0x00007ffe7a15b000 C:\Windows\SYSTEM32\NTASN1.dll +0x00007ffe7a160000 - 0x00007ffe7a189000 C:\Windows\SYSTEM32\ncrypt.dll +0x00007ffe63ca0000 - 0x00007ffe63cc6000 C:\Windows\system32\ncryptsslp.dll +0x00007ffe62c90000 - 0x00007ffe62cc1000 C:\Windows\SYSTEM32\cryptnet.dll + +dbghelp: loaded successfully - version: 4.0.5 - missing functions: none +symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;D:\Android Studio\jbr\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.4355_none_60b8b9eb71f62e16;D:\Android Studio\jbr\bin\server;C:\Users\zhirkevichAY\.skiko\1af4ee19332ed4d6e49736b682169156441810a37589c852cea0529cd125890f;C:\Windows\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.4355_none_91a3acd0cc88a7e4;C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0797c0ea8580ae89 + +VM Arguments: +jvm_args: -Dcompose.application.configure.swing.globals=true -Dcompose.application.resources.dir=D:\projects\compottie\example\desktopApp\build\compose\tmp\prepareAppResources -Dfile.encoding=UTF-8 -Duser.country=RU -Duser.language=ru -Duser.variant +java_command: Main_desktopKt +java_class_path (initial): D:\projects\compottie\example\desktopApp\build\libs\desktopApp-jvm.jar;D:\projects\compottie\example\shared\build\libs\shared-desktop.jar;D:\projects\compottie\compottie-network\build\libs\compottie-network-desktop-1.1.1.jar;D:\projects\compottie\compottie-dot\build\libs\compottie-dot-desktop-1.1.1.jar;D:\projects\compottie\compottie-resources\build\libs\compottie-resources-desktop-1.1.1.jar;D:\projects\compottie\compottie\build\libs\compottie-desktop-1.1.1.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.desktop\desktop-jvm\1.6.10\4c88c77f0770ee2c111199047d90ed5a47e4482b\desktop-jvm-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material\material-desktop\1.6.10\d3e4b632fadb752973fa898989e4666e986011e6\material-desktop-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material3\material3-desktop\1.6.10\aca6ea9607c8a4d9254c14b7192fdd07ea76e2cc\material3-desktop-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.components\components-resources-desktop\1.6.10\5320a6943410f5e8484a3140a9a562d716753bc5\library-desktop-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material\material-ripple-desktop\1.6.10\81d8093be11dfbc4ce334bad9bcfc237f21ed701\material-ripple-desktop-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.foundation\foundation-desktop\1.6.10\ae2b43abc911ccb6eb335b682ed5f2763939b760\foundation-desktop-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.material\material-icons-extended-desktop\1.6.10\67bbcbd9b088c4355bf044e6486ca3dbabe50d12\material-icons-extended-desktop-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.animation\animation-desktop\1.6.10\ce21e9b6dea3019932615f2211ddec7eb4525cd6\animation-desktop-1.6.10.jar;D:\.gradle\caches\modules-2\files-2.1\org.jetbrains.compose.foundation\foundation-layout-desktop\1.6.10\da4289cf3f4f7b0ee49c7db8bd2f5db09aac6dee\founda +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 4 {product} {ergonomic} + uint ConcGCThreads = 2 {product} {ergonomic} + uint G1ConcRefinementThreads = 8 {product} {ergonomic} + size_t G1HeapRegionSize = 2097152 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 266338304 {product} {ergonomic} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 4250927104 {product} {ergonomic} + size_t MaxNewSize = 2550136832 {product} {ergonomic} + size_t MinHeapDeltaBytes = 2097152 {product} {ergonomic} + size_t MinHeapSize = 8388608 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 5839372 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122909434 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 122909434 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + size_t SoftMaxHeapSize = 4250927104 {manageable} {ergonomic} + bool UseCompressedClassPointers = true {product lp64_product} {ergonomic} + bool UseCompressedOops = true {product lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=D:\.jdks\azul-17 +PATH=C:\Python311\Scripts\;C:\Python311\;C:\Program Files\Microsoft MPI\Bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\dotnet\;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Azure Data Studio\bin;C:\Program Files\Git\cmd;D:\nodejs\;C:\ProgramData\chocolatey\bin;C:\Users\zhirkevichAY\AppData\Local\Microsoft\WindowsApps;D:\Program Files\JetBrains\JetBrains Rider\bin;C:\Users\zhirkevichAY\.dotnet\tools;C:\Program Files\Git;D:\IntelliJ IDEA\bin;C:\Users\zhirkevichAY\AppData\Roaming\npm;D:\.jdks\azul-17\bin;D:\Google\Cloud SDK\google-cloud-sdk\bin;C:\Users\zhirkevichAY\AppData\Local\JetBrains\Toolbox\scripts; +USERNAME=ZhirkevichAY +OS=Windows_NT +PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 165 Stepping 3, GenuineIntel +TMP=C:\Users\ZHIRKE~1\AppData\Local\Temp +TEMP=C:\Users\ZHIRKE~1\AppData\Local\Temp + + + +Periodic native trim disabled + +JNI global refs: +JNI global refs: 140, weak refs: 17 + +JNI global refs memory usage: 2107, weak refs: 1473 + +OOME stack traces (most recent first): +Classloader memory used: +Loader jdk.internal.loader.ClassLoaders$AppClassLoader : 2538K +Loader bootstrap : 2120K + + +--------------- S Y S T E M --------------- + +OS: + Windows 10 , 64 bit Build 19041 (10.0.19041.3636) +OS uptime: 0 days 8:31 hours + +CPU: total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 165 stepping 3 microcode 0xe0, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt +Processor Information for all 8 processors : + Max Mhz: 3600, Current Mhz: 3600, Mhz Limit: 3600 + +Memory: 4k page, system-wide physical 16213M (2632M free) +TotalPageFile size 24405M (AvailPageFile size 4526M) +current process WorkingSet (physical memory assigned to process): 724M, peak: 966M +current process commit charge ("private bytes"): 749M, peak: 1010M + +vm_info: OpenJDK 64-Bit Server VM (17.0.10+0--11572160) for windows-amd64 JRE (17.0.10+0--11572160), built on Mar 13 2024 23:56:38 by "androidbuild" with MS VC++ 16.10 / 16.11 (VS2019) + +END. diff --git a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt index 47275247..f5f778f1 100644 --- a/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt +++ b/example/desktopApp/src/jvmMain/kotlin/main.desktop.kt @@ -1,6 +1,3 @@ -@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") - -import androidx.compose.ui.geometry.Size import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowState @@ -17,4 +14,3 @@ fun main() { } } - diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index e6050a2f..fbda4c23 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1 +1 @@ -{"v": "5.9.0", "fr": 24, "ip": 0, "op": 192, "w": 375, "h": 640, "nm": "003_02", "ddd": 0, "assets": [{"id": "comp_0", "nm": "Fillpping coin_01", "fr": 24, "layers": [{"ddd": 0, "ind": 1, "ty": 4, "nm": "Shape Layer 16", "td": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [197.246, 320, 0], "to": [-1.708, 0, 0], "ti": [1.708, 0, 0]}, {"t": 49, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 2, "ty": 4, "nm": "Shape Layer 14", "tt": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.155, "y": 1}, "o": {"x": 0.84, "y": 0}, "t": 46, "s": [146.262, 246.355, 0], "to": [13.875, 24.583, 0], "ti": [-13.875, -24.583, 0]}, {"t": 58, "s": [229.512, 393.855, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-16.488, -41.145, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[81.726, -15.73], [81.774, 35.98], [-81.652, 123.48], [-81.701, 71.77]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-16.524, -95.02], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 46, "op": 58, "st": 46, "bm": 0}, {"ddd": 0, "ind": 4, "ty": 4, "nm": "Shape Layer 11", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [194.582, 319.805, 0], "to": [-1.264, 0, 0], "ti": [1.264, 0, 0]}, {"t": 49, "s": [187, 319.805, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.028, 72.804, 100]}, {"t": 49, "s": [73.617, 72.804, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 2, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 42, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 5, "ty": 4, "nm": "Shape Layer 3", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [197.246, 320, 0], "to": [-1.708, 0, 0], "ti": [1.708, 0, 0]}, {"t": 49, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 6, "ty": 4, "nm": "Shape Layer 7", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.667, "y": 1}, "o": {"x": 0.333, "y": 0}, "t": 43, "s": [182.301, 320, 0], "to": [-0.886, 0, 0], "ti": [1.339, 0, 0]}, {"t": 46, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": 35, "bm": 0}, {"ddd": 0, "ind": 7, "ty": 4, "nm": "Shape Layer 17", "td": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 320, 0], "to": [-0.701, 0, 0], "ti": [0.701, 0, 0]}, {"t": 35, "s": [182.796, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 8, "ty": 4, "nm": "Shape Layer 12", "tt": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.155, "y": 1}, "o": {"x": 0.84, "y": 0}, "t": 21, "s": [146.262, 246.355, 0], "to": [13.875, 24.583, 0], "ti": [-13.875, -24.583, 0]}, {"t": 31, "s": [229.512, 393.855, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-16.488, -41.145, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[81.726, -15.73], [81.774, 35.98], [-81.652, 123.48], [-81.701, 71.77]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-16.524, -95.02], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 31, "st": 19, "bm": 0}, {"ddd": 0, "ind": 9, "ty": 4, "nm": "Shape Layer 10", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 319.805, 0], "to": [-0.519, 0, 0], "ti": [0.519, 0, 0]}, {"t": 35, "s": [183.889, 319.805, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [73.617, 72.804, 100]}, {"t": 35, "s": [0.028, 72.804, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 2, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 29, "st": 19, "bm": 0}, {"ddd": 0, "ind": 10, "ty": 4, "nm": "Shape Layer 6", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 320, 0], "to": [-0.701, 0, 0], "ti": [0.701, 0, 0]}, {"t": 35, "s": [182.796, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 11, "ty": 4, "nm": "Shape Layer 1", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.667, "y": 1}, "o": {"x": 0.333, "y": 0}, "t": 23, "s": [187, 320, 0], "to": [0.718, 0, 0], "ti": [0.819, 0, 0]}, {"t": 26, "s": [194.727, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 12, "ty": 4, "nm": "Shape Layer 9", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.5, 320, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [0, 0, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 102.19, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 1, "k": [{"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 27, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.763, -59.32], [4.692, 57.946], [-4.5, 57.946], [-4.429, -59.32]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 28, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.096, -59.32], [4.025, 57.946], [-6.5, 58.004], [-6.429, -59.262]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 29, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.929, -59.273], [4.859, 57.993], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 30, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 31, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 33, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 35, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.278], [8.359, 57.988], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 36, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-5.875, 58.074], [-5.804, -59.192]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 37, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-5.875, 58.074], [-5.804, -59.192]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 38, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 39, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.054, -59.32], [7.984, 57.946], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 40, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[7.929, -59.254], [7.859, 58.012], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 41, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[7.054, -59.222], [6.984, 58.044], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 42, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[6.554, -59.281], [6.484, 57.985], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 43, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.179, -59.276], [5.109, 57.99], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"t": 44, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[2.179, -59.267], [2.109, 57.999], [-7.875, 57.989], [-7.804, -59.277]], "c": true}]}], "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [1.358, 0.548], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 27, "op": 45, "st": 19, "bm": 0}]}], "fonts": {"list": [{"fFamily": "Roboto", "fWeight": "", "fStyle": "Bold", "fName": "Roboto-Bold", "ascent": 75}]}, "layers": [{"ddd": 0, "ind": 1, "ty": 3, "nm": "Null 33", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187, 338.308, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.177, 0.177, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.978, 0.978, 0.333], "y": [0, 0, 0]}, "t": 181, "s": [87, 87, 100]}, {"t": 192, "s": [69, 69, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 2, "ty": 4, "nm": "Star 01 Outlines 6", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 73, "s": [0]}, {"t": 86, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [301.861, 447.036, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 73, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 81, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.266, 0.266, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.85, 0.85, 0.333], "y": [0, 0, 0]}, "t": 96, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.204, 0.204, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.817, 0.817, 0.333], "y": [0, 0, 0]}, "t": 103, "s": [76.55, 76.55, 100]}, {"t": 111, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 73, "op": 112, "st": 60, "bm": 0}, {"ddd": 0, "ind": 3, "ty": 4, "nm": "Star 01 Outlines 5", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 17, "s": [0]}, {"t": 30, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [138.822, 379.597, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 17, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 25, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 40, "s": [56.55, 56.55, 100]}, {"t": 48, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 17, "op": 52, "st": 0, "bm": 0}, {"ddd": 0, "ind": 4, "ty": 4, "nm": "Star 01 Outlines 8", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 124, "s": [0]}, {"t": 137, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [226.029, 193.863, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 124, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 132, "s": [68.515, 68.515, 100]}, {"i": {"x": [0, 0, 0.667], "y": [1.017, 1.017, 1]}, "o": {"x": [0.679, 0.679, 0.333], "y": [-0.011, -0.011, 0]}, "t": 145, "s": [68.515, 68.515, 100]}, {"i": {"x": [0.08, 0.08, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.705, 0.705, 0.333], "y": [0, 0, 0]}, "t": 151, "s": [75.035, 75.035, 100]}, {"t": 162, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 124, "op": 163, "st": 107, "bm": 0}, {"ddd": 0, "ind": 5, "ty": 4, "nm": "Star 01 Outlines 4", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 9, "s": [0]}, {"t": 22, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [233.537, 264.983, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 9, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 17, "s": [68.515, 68.515, 100]}, {"i": {"x": [0, 0, 0.667], "y": [1.017, 1.017, 1]}, "o": {"x": [0.679, 0.679, 0.333], "y": [-0.011, -0.011, 0]}, "t": 30, "s": [68.515, 68.515, 100]}, {"i": {"x": [0.08, 0.08, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.705, 0.705, 0.333], "y": [0, 0, 0]}, "t": 36, "s": [75.035, 75.035, 100]}, {"t": 47, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 9, "op": 48, "st": -8, "bm": 0}, {"ddd": 0, "ind": 6, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [141.281, -28.624, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 161, "bm": 0}, {"ddd": 0, "ind": 7, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [171.947, 52.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 158, "bm": 0}, {"ddd": 0, "ind": 8, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [141.281, 133.043, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 155, "bm": 0}, {"ddd": 0, "ind": 9, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, 175.403, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 152, "bm": 0}, {"ddd": 0, "ind": 10, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-41.386, 133.043, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 149, "bm": 0}, {"ddd": 0, "ind": 11, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-70.719, 52.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 146, "bm": 0}, {"ddd": 0, "ind": 12, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-41.386, -28.624, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 143, "bm": 0}, {"ddd": 0, "ind": 13, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, -67.891, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 140, "bm": 0}, {"ddd": 0, "ind": 14, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [266.414, 269.906, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 111, "bm": 0}, {"ddd": 0, "ind": 15, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [293.094, 340.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 108, "bm": 0}, {"ddd": 0, "ind": 16, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [266.414, 410.556, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 105, "bm": 0}, {"ddd": 0, "ind": 17, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.261, 447.409, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 102, "bm": 0}, {"ddd": 0, "ind": 18, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [107.494, 410.556, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 99, "bm": 0}, {"ddd": 0, "ind": 19, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [81.974, 340.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 96, "bm": 0}, {"ddd": 0, "ind": 20, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [107.494, 269.906, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 93, "bm": 0}, {"ddd": 0, "ind": 21, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.261, 235.743, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 90, "bm": 0}, {"ddd": 0, "ind": 22, "ty": 3, "nm": "Null 33", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187, 338.308, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.177, 0.177, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.978, 0.978, 0.333], "y": [0, 0, 0]}, "t": 205, "s": [87, 87, 100]}, {"t": 216, "s": [69, 69, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 23, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 58, "s": [0]}, {"t": 59, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 52, "s": [50.188, 51.856, 0], "to": [15.182, -13.413, 0], "ti": [-15.182, 13.413, 0]}, {"t": 70, "s": [141.281, -28.624, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 48, "op": 115, "st": 41, "bm": 0}, {"ddd": 0, "ind": 24, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 56, "s": [0]}, {"t": 57, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 50, "s": [50.188, 51.856, 0], "to": [20.293, 0.087, 0], "ti": [-20.293, -0.087, 0]}, {"t": 68, "s": [171.947, 52.376, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 46, "op": 115, "st": 39, "bm": 0}, {"ddd": 0, "ind": 25, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 54, "s": [0]}, {"t": 55, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 48, "s": [50.188, 51.856, 0], "to": [15.182, 13.531, 0], "ti": [-15.182, -13.531, 0]}, {"t": 66, "s": [141.281, 133.043, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 44, "op": 115, "st": 37, "bm": 0}, {"ddd": 0, "ind": 26, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 52, "s": [0]}, {"t": 53, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 46, "s": [50.188, 51.856, 0], "to": [0.019, 20.591, 0], "ti": [-0.019, -20.591, 0]}, {"t": 64, "s": [50.3, 175.403, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 42, "op": 115, "st": 35, "bm": 0}, {"ddd": 0, "ind": 27, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 50, "s": [0]}, {"t": 51, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 44, "s": [50.188, 51.856, 0], "to": [-15.262, 13.531, 0], "ti": [15.262, -13.531, 0]}, {"t": 62, "s": [-41.386, 133.043, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 40, "op": 115, "st": 33, "bm": 0}, {"ddd": 0, "ind": 28, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 48, "s": [0]}, {"t": 49, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 42, "s": [50.188, 51.856, 0], "to": [-20.151, 0.087, 0], "ti": [20.151, -0.087, 0]}, {"t": 60, "s": [-70.719, 52.376, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 38, "op": 115, "st": 31, "bm": 0}, {"ddd": 0, "ind": 29, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 46, "s": [0]}, {"t": 47, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 40, "s": [50.188, 51.856, 0], "to": [-15.262, -13.413, 0], "ti": [15.262, 13.413, 0]}, {"t": 58, "s": [-41.386, -28.624, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 36, "op": 115, "st": 29, "bm": 0}, {"ddd": 0, "ind": 30, "ty": 3, "nm": "Null 32", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 38, "s": [187, 322.38, 0], "to": [0, -14.44, 0], "ti": [0, 14.44, 0]}, {"t": 56, "s": [187, 235.743, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0, 0, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.866, 0.866, 0.333], "y": [0, 0, 0]}, "t": 38, "s": [87, 87, 100]}, {"t": 56, "s": [52.2, 52.2, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 72, "st": 0, "bm": 0}, {"ddd": 0, "ind": 31, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, -67.891, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 65, "op": 115, "st": 44, "bm": 0}, {"ddd": 0, "ind": 32, "ty": 0, "nm": "Fillpping coin_01", "parent": 30, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.044], "y": [1]}, "o": {"x": [0.844], "y": [0]}, "t": 0, "s": [0]}, {"t": 18, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.044, "y": 1}, "o": {"x": 0.844, "y": 0}, "t": 0, "s": [50.5, 141.435, 0], "to": [0, -16.551, 0], "ti": [0, 0, 0]}, {"i": {"x": 0.044, "y": 1}, "o": {"x": 0.812, "y": 0}, "t": 18, "s": [50.5, 42.132, 0], "to": [0, 0, 0], "ti": [0, -1.311, 0]}, {"t": 29, "s": [50.5, 50, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.044, 0.044, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.844, 0.844, 0.333], "y": [0, 0, 0]}, "t": 0, "s": [50, 50, 100]}, {"t": 18, "s": [100, 100, 100]}], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 0, "op": 65, "st": 0, "bm": 0}, {"ddd": 0, "ind": 33, "ty": 3, "nm": "Null 26", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.131, "y": 1}, "o": {"x": 0.881, "y": 0}, "t": 0, "s": [91.4, 134.33, 0], "to": [0, -8.418, 0], "ti": [0, 8.418, 0]}, {"i": {"x": 0.169, "y": 0.169}, "o": {"x": 0.167, "y": 0.167}, "t": 18, "s": [91.4, 83.825, 0], "to": [0, 0, 0], "ti": [0, 0, 0]}, {"i": {"x": 0.164, "y": 1}, "o": {"x": 0.899, "y": 0}, "t": 181, "s": [91.4, 83.825, 0], "to": [0, 0, 0], "ti": [0, 0, 0]}, {"t": 192, "s": [91.4, 66.163, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 35, "ty": 5, "nm": "Headline 01", "parent": 33, "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 4, "s": [0]}, {"i": {"x": [0.833], "y": [1]}, "o": {"x": [0.167], "y": [0]}, "t": 10, "s": [100]}, {"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [37.453, 15.434, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-2.814, 61.325, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "t": {"d": {"k": [{"s": {"sz": [289.833343505859, 102.166656494141], "ps": [-41.6666717529297, 54.1666717529297], "s": 27, "f": "Roboto-Bold", "t": "£100 put away each month, from the year 2000 until now.", "ca": 0, "j": 0, "tr": -10, "lh": 32.4000015258789, "ls": 0, "fc": [0.765, 1, 0.204]}, "t": 0}]}, "p": {}, "m": {"g": 1, "a": {"a": 0, "k": [0, 0], "ix": 2}}, "a": []}, "ip": 0, "op": 192, "st": 27, "bm": 0}], "markers": []} \ No newline at end of file +{"v":"5.6.5","fr":30,"ip":0,"op":300,"w":160,"h":160,"nm":"Comp 1","ddd":0,"assets":[],"fonts":{"list":[{"origin":1,"fPath":"","fClass":"","fFamily":"Product Sans","fWeight":"","fStyle":"Regular","fName":"ProductSans-Regular","ascent":71.5988159179688}]},"layers":[{"ddd":0,"ind":1,"ty":5,"nm":"Text","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[80,80,0],"ix":2},"a":{"a":0,"k":[0.216,-12.312,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"t":{"d":{"x":"var $bm_rt;\nvar beginCount, stopCount, beginTime, countDur;\nbeginCount = thisComp.layer('Counter (Invisible)').effect('Slider Control')('Slider');\nstopCount = thisComp.layer('Counter (Invisible)').effect('Slider Control')('Slider');\nbeginTime = 0;\ncountDur = 5;\n$bm_rt = $bm_sum(Math.round(linear(time, beginTime, $bm_sum(beginTime, countDur), beginCount, stopCount)), '%');","k":[{"s":{"s":36,"f":"ProductSans-Regular","t":"","j":2,"tr":0,"lh":43.2,"ls":0,"fc":[0,0.569,1]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Counter (Invisible)","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[94.25,74.25,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":5,"nm":"Slider Control","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[100]}],"ix":1}}]}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Meter","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[80,80,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"d":1,"ty":"el","s":{"a":0,"k":[152,152],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[100]}],"ix":2,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Counter (Invisible)').effect('Slider Control')('Slider');"},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0.568627476692,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Background","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[80,80,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"d":1,"ty":"el","s":{"a":0,"k":[152,152],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.96862745285,0.96862745285,0.96862745285,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":300,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index bfb6e570..3d094081 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -95,7 +95,7 @@ suspend fun LottieCompositionSpec.Companion.Resource( fun App() { // return LottieFontExample() -// return LottieList() + return LottieList() val composition = rememberLottieComposition( assetsManager = rememberResourcesAssetsManager( @@ -116,6 +116,7 @@ fun App() { LottieCompositionSpec.Resource(ROBOT) // // LottieCompositionSpec.Url( +// "https://assets-v2.lottiefiles.com/a/926b5f5e-117a-11ee-b83d-df9534a9fcf0/DhEx6yntOU.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", // "https://dotlottie.io/sample_files/animation-external-image.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", @@ -288,7 +289,9 @@ fun LottieFontExample() { fun LottieList() { LazyColumn { items(100){ - val composition by rememberLottieComposition { + val composition by rememberLottieComposition( +// key = "https://dotlottie.io/sample_files/animation-external-image.lottie" + ) { // LottieCompositionSpec.Resource(ROBOT) LottieCompositionSpec.Url( url = "https://dotlottie.io/sample_files/animation-external-image.lottie", From 8264f84c6c73c0a918f8d41255cd68cdc86447dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 21 Jun 2024 01:41:32 +0300 Subject: [PATCH 061/100] fix threads, deadlocks --- README.md | 11 ++- .../compottie/DotLottieCompositionSpec.kt | 70 +++++++++-------- .../compottie/DefaultHttpClient.kt | 5 ++ .../alexzhirkevich/compottie/DiskCache.kt | 2 +- .../compottie/DiskCacheStrategy.kt | 3 +- .../compottie/NetworkAssetsManager.kt | 43 +++++----- .../compottie/UrlCompositionSpec.kt | 69 ++++++++++------ .../alexzhirkevich/compottie/IODispatcher.kt | 2 +- .../io/github/alexzhirkevich/compottie/L.kt | 4 + .../compottie/LottieComposition.kt | 78 ++++++------------- .../compottie/LottieCompositionResult.kt | 14 +++- .../compottie/LottieCompositionSpec.kt | 8 +- .../alexzhirkevich/compottie/LottiePainter.kt | 51 ++++++++---- .../github/alexzhirkevich/compottie/LruMap.kt | 73 +++++++++++++---- ...micComposition.kt => DynamicProperties.kt} | 17 +++- .../dynamic/_DynamicCompositionProvider.kt | 6 +- .../compottie/internal/AnimationState.kt | 22 +++++- .../compottie/internal/LottieJson.kt | 2 +- .../internal/assets/CharacterPath.kt | 3 - .../compottie/internal/assets/ImageAsset.kt | 10 +++ .../internal/layers/BaseCompositionLayer.kt | 13 +--- .../compottie/internal/layers/BaseLayer.kt | 21 ++--- .../internal/layers/CompositionLayer.kt | 15 ++++ .../compottie/internal/layers/ImageLayer.kt | 39 ++-------- .../compottie/internal/layers/Layer.kt | 22 ++++-- .../compottie/internal/layers/ShapeLayer.kt | 35 +++++---- .../compottie/internal/layers/TextLayer.kt | 26 +++---- .../internal/platform/PlatformShader.kt | 6 +- .../compottie/IoDispatcher.jvmNative.kt | 4 +- .../compottie/IoDispatcher.web.kt | 3 +- example/shared/src/commonMain/kotlin/App.kt | 41 +++++----- 31 files changed, 409 insertions(+), 309 deletions(-) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/{DynamicComposition.kt => DynamicProperties.kt} (76%) diff --git a/README.md b/README.md index d172c38f..ef062d6f 100644 --- a/README.md +++ b/README.md @@ -272,11 +272,12 @@ Lottie allows you to update Lottie animation properties at runtime. Some reasons 2. Change the progress of a specific layer to show download progress. 3. Change the size and position of something in response to a gesture. -Dynamic properties are created with `rememberLottieComposition` +Dynamic properties are created with `rememberLottieDynamicProperties` ```kotlin -val composition by rememberLottieComposition( - dynamic = { +val painter = rememberLottiePainter( + composition = composition, + dynamicProperties = rememberLottieDynamicProperties { shapeLayer("Precomposition 1", "Shape Layer 4") { transform { rotation { current -> current * progress } @@ -295,9 +296,7 @@ val composition by rememberLottieComposition( } } } -) { - // composition spec goes here -) +) ``` Note, that final property building blocks (such as rotations, color, alpha) are called on EACH ANIMATION FRAME and should be cached if they don't rely on progress and have allocations or hard computations. diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 34d5472c..66547526 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable +import kotlinx.coroutines.withContext import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import okio.Path.Companion.toPath @@ -44,51 +45,52 @@ private class DotLottieCompositionSpec( ) : LottieCompositionSpec { @OptIn(InternalCompottieApi::class) - override suspend fun load(key : Any?): LottieComposition { - - return LottieComposition.getOrCreate(key) { - val fileSystem = FakeFileSystem() - val path = "anim".toPath() - - fileSystem.write(path) { - write(archive) - } + override suspend fun load(cacheKey : Any?): LottieComposition { + return withContext(ioDispatcher()) { + LottieComposition.getOrCreate(cacheKey) { + val fileSystem = FakeFileSystem() + val path = "anim".toPath() + + fileSystem.write(path) { + write(archive) + } - val entries = fileSystem.listZipEntries(path) + val entries = fileSystem.listZipEntries(path) - val zipSystem = ZipFileSystem(fileSystem, entries, path) + val zipSystem = ZipFileSystem(fileSystem, entries, path) - val manifestPath = entries.keys.firstOrNull { it.name == "manifest.json" } + val manifestPath = entries.keys.firstOrNull { it.name == "manifest.json" } - if (manifestPath != null) { + if (manifestPath != null) { - val manifest = DotLottieJson.decodeFromString( - zipSystem.read(manifestPath).decodeToString() - ) + val manifest = DotLottieJson.decodeFromString( + zipSystem.read(manifestPath).decodeToString() + ) - val animation = manifest.animations.first() + val animation = manifest.animations.first() - val anim = zipSystem.read("animations/${animation.id}.json".toPath()) + val anim = zipSystem.read("animations/${animation.id}.json".toPath()) - LottieComposition.parse(anim.decodeToString()).apply { - speed = animation.speed - if (animation.loop) { - iterations = LottieConstants.IterateForever + LottieComposition.parse(anim.decodeToString()).apply { + speed = animation.speed + if (animation.loop) { + iterations = LottieConstants.IterateForever + } + prepare(DotLottieAssetsManager(zipSystem, manifestPath.parent)) } - prepare(DotLottieAssetsManager(zipSystem, manifestPath.parent)) - } - } else { - val animPath = entries.keys.first { it.name.endsWith(".json", true) } - val anim = zipSystem.read(animPath) - - LottieComposition.parse(anim.decodeToString()).apply { - prepare( - assetsManager = DotLottieAssetsManager( - zipFileSystem = zipSystem, - root = animPath.parent + } else { + val animPath = entries.keys.first { it.name.endsWith(".json", true) } + val anim = zipSystem.read(animPath) + + LottieComposition.parse(anim.decodeToString()).apply { + prepare( + assetsManager = DotLottieAssetsManager( + zipFileSystem = zipSystem, + root = animPath.parent + ) ) - ) + } } } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt index 2744ec41..ea9be3bd 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable import io.ktor.client.HttpClient +import io.ktor.client.plugins.HttpRequestRetry import io.ktor.client.request.get import io.ktor.client.statement.HttpResponse import io.ktor.http.Url @@ -9,6 +10,10 @@ import io.ktor.http.Url internal val DefaultHttpClient by lazy { HttpClient { expectSuccess = true + install(HttpRequestRetry) { + maxRetries = 2 + constantDelay(250, 250) + } } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt index 1ff534d7..1edb9910 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt @@ -120,7 +120,7 @@ fun DiskCache( directory: Path = FileSystem.SYSTEM_TEMPORARY_DIRECTORY.resolve("compottie_disc_cache".toPath()), fileSystem : FileSystem = defaultFileSystem(), maxSizeBytes : Long = MB_250, - cleanupDispatcher : CoroutineDispatcher = Dispatchers.IODispatcher + cleanupDispatcher : CoroutineDispatcher = ioDispatcher() ) : DiskCache = RealDiskCache( maxSize = maxSizeBytes, directory = directory, diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt index 147c3f40..d7b1e81b 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable import okio.Buffer +import okio.ByteString.Companion.encodeUtf8 import okio.use @Stable @@ -41,6 +42,6 @@ class DiskCacheStrategy( return 31 * diskCache.hashCode() } - private fun key(url: String) = Buffer().write(url.encodeToByteArray()).md5().hex() + private fun key(url: String) = url.encodeUtf8().sha256().hex() } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index c430834b..f23de962 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -8,6 +8,7 @@ import io.ktor.client.statement.bodyAsChannel import io.ktor.http.URLParserException import io.ktor.http.Url import io.ktor.util.toByteArray +import kotlinx.coroutines.withContext /** * Asset manager that load images from web. @@ -31,32 +32,36 @@ private class NetworkAssetsManagerImpl( private val request : NetworkRequest, ) : LottieAssetsManager { + @OptIn(InternalCompottieApi::class) override suspend fun image(image: LottieImage): ImageRepresentable? { - return try { - val path = image.path + image.name + return withContext(ioDispatcher()) { + try { + val path = image.path + image.name - val url = try { - Url(path) - } catch (t: URLParserException) { - return null - } + val url = try { + Url(path) + } catch (t: URLParserException) { + return@withContext null + } - try { - cacheStrategy.load(path)?.let { - return ImageRepresentable.Bytes(it) + try { + cacheStrategy.load(path)?.let { + return@withContext ImageRepresentable.Bytes(it) + } + } catch (_: Throwable) { } - } catch (_: Throwable) { } - val bytes = request(client, url).bodyAsChannel().toByteArray() + val bytes = request(client, url).bodyAsChannel().toByteArray() - try { - cacheStrategy.save(path, bytes) - } catch (e: Throwable) { - L.logger.error("NetworkAssetsManager failed to cache downloaded asset", e) + try { + cacheStrategy.save(path, bytes) + } catch (e: Throwable) { + L.logger.error("NetworkAssetsManager failed to cache downloaded asset", e) + } + ImageRepresentable.Bytes(bytes) + } catch (t: Throwable) { + null } - ImageRepresentable.Bytes(bytes) - } catch (t: Throwable) { - null } } } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index fd818683..a9cf338e 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -3,6 +3,7 @@ import io.github.alexzhirkevich.compottie.DefaultHttpClient import io.github.alexzhirkevich.compottie.DiskCacheStrategy import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.GetRequest +import io.github.alexzhirkevich.compottie.InternalCompottieApi import io.github.alexzhirkevich.compottie.L import io.github.alexzhirkevich.compottie.LottieAnimationFormat import io.github.alexzhirkevich.compottie.LottieCacheStrategy @@ -10,6 +11,7 @@ import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.NetworkAssetsManager import io.github.alexzhirkevich.compottie.NetworkRequest +import io.github.alexzhirkevich.compottie.ioDispatcher import io.ktor.client.HttpClient import io.ktor.client.plugins.ClientRequestException import io.ktor.client.statement.bodyAsChannel @@ -17,6 +19,9 @@ import io.ktor.client.statement.bodyAsText import io.ktor.http.Url import io.ktor.http.isSuccess import io.ktor.util.toByteArray +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext /** * [LottieComposition] from web [url] @@ -49,32 +54,45 @@ private class NetworkCompositionSpec( private val request : NetworkRequest, ) : LottieCompositionSpec { + @OptIn(InternalCompottieApi::class) override suspend fun load(cacheKey : Any?): LottieComposition { - - return LottieComposition.getOrCreate(cacheKey) { - try { - cacheStrategy.load(url)?.let { - return@getOrCreate it.decodeLottieComposition(format) + return withContext(ioDispatcher()) { + mainMutex.withLock { mutexByUrl.getOrPut(url) { Mutex() } }.withLock { + try { + LottieComposition.getOrCreate(cacheKey) { + try { + cacheStrategy.load(url)?.let { + return@getOrCreate it.decodeLottieComposition(format) + } + } catch (_: Throwable) { + } + + val response = request(client, Url(url)) + + if (!response.status.isSuccess()) { + throw ClientRequestException(response, response.bodyAsText()) + } + + val bytes = response.bodyAsChannel().toByteArray() + + val composition = bytes.decodeLottieComposition(format) + + try { + cacheStrategy.save(url, bytes) + } catch (t: Throwable) { + L.logger.error( + "Url composition spec failed to cache downloaded animation", + t + ) + } + composition + } + } finally { + mainMutex.withLock { + mutexByUrl.remove(url) + } } - } catch (_: Throwable) { } - - val resp = request(this.client, Url(url)) - - if (!resp.status.isSuccess()) { - throw ClientRequestException(resp, resp.bodyAsText()) - } - - val bytes = resp.bodyAsChannel().toByteArray() - - val composition = bytes.decodeLottieComposition(format) - - try { - cacheStrategy.save(url, bytes) - } catch (t: Throwable) { - L.logger.error("Url composition spec failed to cache downloaded animation", t) - } - composition } } @@ -101,6 +119,11 @@ private class NetworkCompositionSpec( result = 31 * result + request.hashCode() return result } + + companion object { + private val mainMutex = Mutex() + private val mutexByUrl = mutableMapOf() + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt index f60c56c3..d024b01d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/IODispatcher.kt @@ -4,4 +4,4 @@ import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers @InternalCompottieApi -expect val Dispatchers.IODispatcher : CoroutineDispatcher \ No newline at end of file +expect fun ioDispatcher() : CoroutineDispatcher \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt index b3874501..c196b906 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt @@ -27,6 +27,10 @@ object L { @ExperimentalCompottieApi var shaderCacheLimit : Int = 1000 + @ExperimentalCompottieApi + var compositionCacheLimit : Int = 20 + + /** * Warmup JSON parser. The first animation parsing will be much faster * */ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 7a651533..921c8615 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable +import androidx.compose.runtime.currentCompositeKeyHash import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf @@ -14,13 +15,10 @@ import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import io.github.alexzhirkevich.compottie.assets.LottieFontManager -import io.github.alexzhirkevich.compottie.dynamic.DynamicComposition -import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset -import kotlinx.atomicfu.atomic import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async @@ -37,7 +35,8 @@ import kotlin.time.Duration.Companion.milliseconds /** * Load and prepare [LottieComposition] for displaying. * - * Instance produces by [spec] will be remembered with until [key] are changed. + * Instance produces by [spec] will be remembered until [key] is changed. Those instances + * are cached across the whole application. Cache size can be configured with [L.compositionCacheLimit] * * You can configure various dynamic animation properties in the [dynamic] block. * */ @@ -45,10 +44,9 @@ import kotlin.time.Duration.Companion.milliseconds @Composable @Stable fun rememberLottieComposition( - key : Any? = null, + key : Any? = currentCompositeKeyHash, assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, fontManager: LottieFontManager = LottieFontManager.Empty, - dynamic : DynamicComposition.() -> Unit = {}, spec : suspend () -> LottieCompositionSpec, ) : LottieCompositionResult { @@ -59,22 +57,23 @@ fun rememberLottieComposition( } LaunchedEffect(result) { - withContext(Dispatchers.IODispatcher) { - try { - val composition = updatedSpec().load(key).apply { - this.dynamic = DynamicCompositionProvider().apply(dynamic) + try { + val composition = withContext(ioDispatcher()) { + updatedSpec().load(key).apply { + prepare( + assetsManager = assetsManager, + fontManager = fontManager + ) } - composition.prepare( - assetsManager = assetsManager, - fontManager = fontManager - ) - result.complete(composition) - } catch (c: CancellationException) { - result.completeExceptionally(c) - throw c - } catch (t: Throwable) { - result.completeExceptionally(CompottieException("Composition failed to load", t)) } + result.complete(composition) + } catch (c: CancellationException) { + result.completeExceptionally(c) + throw c + } catch (t: Throwable) { + result.completeExceptionally( + CompottieException("Composition failed to load", t) + ) } } @@ -93,26 +92,7 @@ fun rememberLottieComposition( @Stable fun rememberLottieComposition( spec : LottieCompositionSpec, -) : LottieCompositionResult { - - val result = remember(spec) { - LottieCompositionResultImpl() - } - - LaunchedEffect(result) { - withContext(Dispatchers.IODispatcher) { - try { - result.complete(spec.load()) - } catch (c: CancellationException) { - throw c - } catch (t: Throwable) { - result.completeExceptionally(t) - } - } - } - - return result -} +) : LottieCompositionResult =rememberLottieComposition { spec } @Stable class LottieComposition internal constructor( @@ -167,12 +147,6 @@ class LottieComposition internal constructor( internal var fontsByFamily: Map = emptyMap() - internal var dynamic: DynamicCompositionProvider? = null - set(value) { - if (value == null || value.size > 0) { - field = value - } - } private val prepareMutex = Mutex() internal val charGlyphs: Map> = @@ -284,20 +258,14 @@ class LottieComposition internal constructor( if (key == null) return create() - return cacheMutex.withLock { - cache.getOrPut(key) { - create() - } - } + return cache.getOrPutSuspend(key, create) } /** * Clear all previously cached compositions * */ - suspend fun clearCache() = cache.clear() - - private val cacheMutex = Mutex() + fun clearCache() = cache.clear() - private val cache = LruMap(limit = { 20 }) + private val cache = LruMap(limit = L::compositionCacheLimit) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt index 96981cf7..69a6bc21 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionResult.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.compose.runtime.derivedStateOf @@ -7,8 +8,11 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import kotlinx.coroutines.CompletableDeferred +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext +import kotlin.coroutines.CoroutineContext /** * A [LottieCompositionResult] subclass is returned from [rememberLottieComposition]. @@ -79,7 +83,7 @@ interface LottieCompositionResult : State { @Stable -internal class LottieCompositionResultImpl : LottieCompositionResult { +internal class LottieCompositionResultImpl() : LottieCompositionResult { private var compositionDeferred = CompletableDeferred() @@ -103,18 +107,20 @@ internal class LottieCompositionResultImpl : LottieCompositionResult { private val mutex = Mutex() + // MAIN THREAD!!! internal suspend fun complete(composition: LottieComposition) { mutex.withLock { - if (isComplete) return + if (isComplete) return@withLock - this.value = composition + value = composition compositionDeferred.complete(composition) } } + // MAIN THREAD!!! internal suspend fun completeExceptionally(error: Throwable) { mutex.withLock { - if (isComplete) return + if (isComplete) return@withLock this.error = error compositionDeferred.completeExceptionally(error) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index f5d0d26f..7094dd10 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable +import kotlinx.coroutines.withContext import kotlin.jvm.JvmInline @Stable @@ -29,9 +30,12 @@ private value class JsonStringImpl( private val jsonString: String ) : LottieCompositionSpec { + @OptIn(InternalCompottieApi::class) override suspend fun load(cacheKey: Any?): LottieComposition { - return LottieComposition.getOrCreate(cacheKey) { - LottieComposition.parse(jsonString) + return withContext(ioDispatcher()) { + LottieComposition.getOrCreate(cacheKey) { + LottieComposition.parse(jsonString) + } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 33d12291..6487fea7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -10,7 +10,6 @@ import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.scale @@ -20,9 +19,10 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize +import io.github.alexzhirkevich.compottie.dynamic.DynamicProperties +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset -import io.github.alexzhirkevich.compottie.internal.layers.BaseCompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties @@ -64,6 +64,7 @@ import kotlin.math.roundToInt @Composable fun rememberLottiePainter( composition : LottieComposition?, + dynamicProperties : DynamicProperties? = null, isPlaying: Boolean = true, restartOnPlay: Boolean = true, reverseOnRepeat: Boolean = false, @@ -91,6 +92,7 @@ fun rememberLottiePainter( return rememberLottiePainter( composition = composition, progress = { progress.value }, + dynamicProperties = dynamicProperties, clipToCompositionBounds = clipToCompositionBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes ) @@ -109,6 +111,7 @@ fun rememberLottiePainter( fun rememberLottiePainter( composition : LottieComposition?, progress : () -> Float, + dynamicProperties : DynamicProperties? = null, clipToCompositionBounds : Boolean = true, clipTextToBoundingBoxes: Boolean = false, ) : Painter { @@ -118,15 +121,16 @@ fun rememberLottiePainter( val painter by produceState( EmptyPainter, composition, - clipTextToBoundingBoxes, - clipToCompositionBounds, - fontFamilyResolver, ) { if (composition != null) { value = LottiePainter( composition = composition, initialProgress = progress(), + dynamicProperties = when (dynamicProperties) { + is DynamicCompositionProvider -> dynamicProperties + null -> dynamicProperties + }, clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver, clipToCompositionBounds = clipToCompositionBounds @@ -134,6 +138,18 @@ fun rememberLottiePainter( } } + LaunchedEffect( + clipTextToBoundingBoxes, + clipToCompositionBounds, + fontFamilyResolver, + ){ + (painter as? LottiePainter)?.let { + it.clipTextToBoundingBoxes = clipTextToBoundingBoxes + it.clipToCompositionBounds = clipToCompositionBounds + it.fontFamilyResolver = fontFamilyResolver + } + } + LaunchedEffect(painter) { (painter as? LottiePainter)?.let { lp -> snapshotFlow { @@ -159,6 +175,7 @@ private object EmptyPainter : Painter() { private class LottiePainter( private val composition: LottieComposition, initialProgress : Float, + dynamicProperties: DynamicCompositionProvider?, fontFamilyResolver : FontFamily.Resolver, clipTextToBoundingBoxes : Boolean, clipToCompositionBounds : Boolean, @@ -166,7 +183,6 @@ private class LottiePainter( var progress: Float by mutableStateOf(initialProgress) - override val intrinsicSize: Size = Size( composition.animation.width, composition.animation.height @@ -177,6 +193,8 @@ private class LottiePainter( intrinsicSize.height.roundToInt() ) + + private val matrix = Matrix() private var alpha by mutableStateOf(1f) @@ -188,22 +206,25 @@ private class LottiePainter( (composition.animation.outPoint - composition.animation.inPoint) * progress p.coerceAtLeast(0f) } + private val animationState = AnimationState( + frame = frame, + composition = composition, + fontFamilyResolver = fontFamilyResolver, + clipToDrawBounds = clipToCompositionBounds, + dynamicProperties = dynamicProperties, + clipTextToBoundingBoxes = clipTextToBoundingBoxes + ) - private val animationState = AnimationState(frame, composition) + var clipTextToBoundingBoxes: Boolean by animationState::clipTextToBoundingBoxes + var clipToCompositionBounds: Boolean by animationState::clipToCompositionBounds + var fontFamilyResolver: FontFamily.Resolver by animationState::fontFamilyResolver + var dynamic: DynamicCompositionProvider? by animationState::dynamic init { val painterProperties = PainterProperties( assets = composition.animation.assets.associateBy(LottieAsset::id), - fontFamilyResolver = fontFamilyResolver, - clipToDrawBounds = clipToCompositionBounds, - clipTextToBoundingBoxes = clipTextToBoundingBoxes, ) compositionLayer.painterProperties = painterProperties - compositionLayer.onCreate(composition) - - composition.animation.chars.forEach { - it.data.onCreate(composition, painterProperties) - } } override fun applyAlpha(alpha: Float): Boolean { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt index f6e96ffe..371b74c3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt @@ -1,35 +1,82 @@ package io.github.alexzhirkevich.compottie +import kotlinx.atomicfu.locks.synchronized +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + internal class LruMap( private val delegate : LinkedHashMap = LinkedHashMap(), private val limit : () -> Int, ) : MutableMap by delegate { - override fun put(key: Any, value: T): T? { - val cacheLimit = limit() + private val suspendGetOrPutMutex = Mutex() - while (cacheLimit in 1..size) { - remove(keys.firstOrNull()) - } + override fun put(key: Any, value: T): T? = synchronized(this) { + putRaw(key, value) + } - return delegate.put(key, value) + override fun clear() = synchronized(this) { + clearRaw() + } + + override fun putAll(from: Map) = synchronized(this) { + putAllRaw(from) } - override fun get(key: Any): T? { - val cached = remove(key) ?: return null + override fun remove(key: Any): T? = synchronized(this) { + removeRaw(key) + } - put(key, cached) - return cached + override fun get(key: Any): T? = synchronized(this) { + getRaw(key) } - inline fun getOrPut(key: Any?, put: () -> T): T { + fun getOrPut(key: Any?, put: () -> T): T = synchronized(this) { if (key == null) return put() - return get(key) ?: run { + return getRaw(key) ?: run { val v = put() - put(key, v) + putRaw(key, v) v } } + + suspend fun getOrPutSuspend(key: Any?, put: suspend () -> T): T { + return suspendGetOrPutMutex.withLock { + if (key == null) + return@withLock put() + + getRaw(key) ?: run { + val v = put() + putRaw(key, v) + v + } + } + } + + private fun putRaw(key: Any, value: T): T? { + val cacheLimit = limit() + + while (cacheLimit in 1..size) { + remove(keys.firstOrNull()) + } + + return delegate.put(key, value) + } + + private fun putAllRaw(from: Map) { + from.forEach { + putRaw(it.key, it.value) + } + } + + private fun getRaw(key: Any): T? { + val cached = removeRaw(key) ?: return null + putRaw(key, cached) + return cached + } + + private fun removeRaw(key: Any): T? = delegate.remove(key) + private fun clearRaw() = delegate.clear() } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicProperties.kt similarity index 76% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicProperties.kt index 61f07a14..7dfdb313 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicProperties.kt @@ -1,9 +1,24 @@ package io.github.alexzhirkevich.compottie.dynamic +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi + +@Composable +@ExperimentalCompottieApi +fun rememberLottieDynamicProperties( + vararg keys : Any?, + composition: DynamicProperties.() -> Unit +) : DynamicProperties { + return remember(keys) { + DynamicCompositionProvider().apply(composition) + } +} + /** * Lottie dynamic properties builder * */ -sealed interface DynamicComposition { +sealed interface DynamicProperties { /** * Layer dynamic properties builder. diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt index 9e6dbe96..a4aa4c4c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt @@ -1,6 +1,8 @@ package io.github.alexzhirkevich.compottie.dynamic -internal class DynamicCompositionProvider : DynamicComposition { +import io.github.alexzhirkevich.compottie.internal.layers.ResolvingPath + +internal class DynamicCompositionProvider : DynamicProperties { private val layers = mutableMapOf() @@ -32,7 +34,7 @@ internal class DynamicCompositionProvider : DynamicComposition { layers[path.joinToString(LayerPathSeparator)] = DynamicLayerProvider().apply(builder) } - operator fun get(name: String): DynamicLayerProvider? = layers[name] + operator fun get(path: ResolvingPath): DynamicLayerProvider? = layers[path.path] } @PublishedApi diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index b5ddfc03..e815253f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -1,22 +1,36 @@ package io.github.alexzhirkevich.compottie.internal +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract class AnimationState @PublishedApi internal constructor( frame : Float, - val composition : LottieComposition + val composition : LottieComposition, + fontFamilyResolver: FontFamily.Resolver, + clipToDrawBounds : Boolean = true, + dynamicProperties : DynamicCompositionProvider? = null, + clipTextToBoundingBoxes : Boolean = false, ) { + internal var clipToCompositionBounds by mutableStateOf(clipToDrawBounds) + internal var clipTextToBoundingBoxes by mutableStateOf(clipTextToBoundingBoxes) + internal var fontFamilyResolver by mutableStateOf(fontFamilyResolver) + internal var dynamic by mutableStateOf(dynamicProperties) + var frame = frame private set - val progress : Float + val progress: Float get() { - val p = (frame - composition.animation.inPoint)/ + val p = (frame - composition.animation.inPoint) / (composition.animation.outPoint - composition.animation.inPoint) - return p.coerceIn(0f,1f) + return p.coerceIn(0f, 1f) } @PublishedApi diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index 68a0b73b..f16d5b27 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -43,7 +43,7 @@ import kotlinx.serialization.modules.polymorphic import kotlinx.serialization.modules.subclass @OptIn(ExperimentalSerializationApi::class) -internal val LottieJson by lazy { +internal val LottieJson by lazy{ Json { ignoreUnknownKeys = true isLenient = true diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt index e04dbee3..9d139a88 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt @@ -6,7 +6,6 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer @@ -15,7 +14,6 @@ import io.github.alexzhirkevich.compottie.internal.shapes.Shape import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.jsonObject @@ -91,7 +89,6 @@ internal sealed interface CharacterPath { painterProperties: PainterProperties ) { layer.painterProperties = painterProperties - layer.onCreate(composition) } override fun draw( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt index 6934e38e..135c775c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.unit.IntSize +import io.github.alexzhirkevich.compottie.dynamic.ImageSpec import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.platform.fromBytes import kotlinx.serialization.SerialName @@ -45,6 +46,15 @@ internal class ImageAsset( val height: Int get() = h ?: bitmap?.height ?: 0 + @Transient + val spec = ImageSpec( + id = id, + path = path, + name = fileName, + width = width, + height = height + ) + @OptIn(ExperimentalEncodingApi::class) @Transient var bitmap: ImageBitmap? = fileName diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index bfb67fe4..ab2c7f4d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -6,7 +6,6 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber @@ -35,19 +34,13 @@ internal abstract class BaseCompositionLayer: BaseLayer() { isAntiAlias = true } - override fun onCreate(composition: LottieComposition) { - layers.forEach { it.onCreate(composition) } - } - abstract fun loadLayers(): List private val layers by lazy { val layers = loadLayers().filterIsInstance() - if (name != null) { - layers.fastForEach { - it.namePath = layerPath(this.namePath, name!!) - } + layers.fastForEach { + it.resolvingPath = this.resolvingPath?.resolveOrNull(it.name) } layers.fastForEach { @@ -128,7 +121,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { layers.fastForEachReversed { layer -> // Only clip precomps. This mimics the way After Effects renders animations. val ignoreClipOnThisLayer = - isContainerLayer || painterProperties?.clipToDrawBounds == false + isContainerLayer || !state.clipToCompositionBounds if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { canvas.clipRect(newClipRect) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 34ede169..98f7d95f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -14,8 +14,6 @@ import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.L -import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm @@ -39,7 +37,7 @@ internal abstract class BaseLayer() : Layer { override var painterProperties: PainterProperties? = null - override var namePath: String? = null + override var resolvingPath : ResolvingPath? = null protected val boundsMatrix = Matrix() private val path = Path() @@ -97,16 +95,6 @@ internal abstract class BaseLayer() : Layer { LayerEffectsApplier(this) } - override fun onCreate(composition: LottieComposition) { - super.onCreate(composition) - transform.autoOrient = autoOrient == BooleanInt.Yes - - if (name != null) { - transform.dynamic = composition - .dynamic?.get(layerPath(namePath, name!!))?.transform - } - } - abstract fun drawLayer( drawScope: DrawScope, parentMatrix: Matrix, @@ -121,6 +109,13 @@ internal abstract class BaseLayer() : Layer { state: AnimationState, ) { try { + transform.autoOrient = autoOrient == BooleanInt.Yes + resolvingPath?.let { + val dynamic = state.dynamic?.get(it)?.transform + if (transform.dynamic !== dynamic){ + transform.dynamic = dynamic + } + } if (hidden || (inPoint ?: 0f) > state.frame || (outPoint ?: Float.MAX_VALUE) < state.frame) return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 57f88a91..ddaabf95 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -17,7 +17,10 @@ internal class CompositionLayer( override val height: Float get() = composition.animation.height override val timeRemapping: AnimatedNumber? get() = null + override var resolvingPath: ResolvingPath? = ResolvingPath.root + override val masks: List? get() = null + override var effects: List = emptyList() override val transform: Transform = Transform() @@ -42,6 +45,18 @@ internal class CompositionLayer( override val name: String? = null + override var painterProperties: PainterProperties? + get() = super.painterProperties + set(value) { + super.painterProperties = value + + if (value != null) { + composition.animation.chars.forEach { + it.data.onCreate(composition, value) + } + } + } + override fun loadLayers(): List { return composition.animation.layers } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 609ef383..982e1ff0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -5,11 +5,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.dynamic.ImageSpec import io.github.alexzhirkevich.compottie.dynamic.DynamicImageLayerProvider -import io.github.alexzhirkevich.compottie.dynamic.derive -import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -97,22 +93,6 @@ internal class ImageLayer( painterProperties?.assets?.get(refId) as? ImageAsset } - private val assetBitmap by lazy { - asset?.bitmap - } - - private val imageSpec by lazy { - asset?.let { - ImageSpec( - id = it.id, - path = it.path, - name = it.fileName, - width = it.width, - height = it.height - ) - } - } - private val effectState by lazy { LayerEffectsState() } @@ -122,11 +102,14 @@ internal class ImageLayer( private fun dynamicAsset(state: AnimationState) : ImageAsset? { - assetBitmap // initialize lazy property with default asset bitmap - - (dynamic?.image?.invoke(state, imageSpec) ?: assetBitmap)?.let { - asset?.setBitmap(it) + resolvingPath?.let { + dynamic = state.dynamic?.get(it) as? DynamicImageLayerProvider } + + val asset = asset ?: return null + val image = dynamic?.image?.invoke(state, asset.spec) ?: return asset + asset.setBitmap(image) + return asset } @@ -175,13 +158,5 @@ internal class ImageLayer( boundsMatrix.map(outBounds) } } - - override fun onCreate(composition: LottieComposition) { - super.onCreate(composition) - - if (name != null) { - dynamic = composition.dynamic?.get(layerPath(namePath, name)) as? DynamicImageLayerProvider - } - } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index f4863ee9..a6eb0ae1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,7 +1,5 @@ package io.github.alexzhirkevich.compottie.internal.layers -import androidx.compose.ui.text.font.FontFamily -import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -13,6 +11,9 @@ import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator +import kotlinx.serialization.json.JsonNames +import kotlin.jvm.JvmInline +import kotlin.math.ceil @OptIn(ExperimentalSerializationApi::class) @JsonClassDiscriminator("ty") @@ -58,18 +59,25 @@ internal sealed interface Layer : DrawingContent { var painterProperties : PainterProperties? - var namePath : String? + var resolvingPath : ResolvingPath? +} + +@JvmInline +internal value class ResolvingPath private constructor(val path : String) { + fun resolve(child : String) = ResolvingPath("$path/$child") - fun onCreate(composition: LottieComposition) {} + companion object { + val root = ResolvingPath("/") + } } +internal fun ResolvingPath.resolveOrNull(child: String?) : ResolvingPath? = + if (child != null) resolve(child) else null + internal val Layer.isContainerLayer get() = name == "__container" internal class PainterProperties( val assets: Map = emptyMap(), - val fontFamilyResolver: FontFamily.Resolver? = null, - val clipToDrawBounds : Boolean = true, - val clipTextToBoundingBoxes : Boolean = false, ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 6635aaed..229ddecf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -4,11 +4,9 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastForEach -import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.derive -import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -97,6 +95,16 @@ internal class ShapeLayer( @Transient private var dynamicLayer : DynamicLayerProvider? = null + set(value) { + if (field != value) { + field = value + if (value is DynamicShapeLayerProvider) { + shapes.fastForEach { + it.setDynamicProperties(null, value) + } + } + } + } @Transient private val contentGroup = ContentGroup( @@ -110,20 +118,6 @@ internal class ShapeLayer( setContents(emptyList(), emptyList()) } - override fun onCreate(composition: LottieComposition) { - super.onCreate(composition) - - if (name != null) { - dynamicLayer = composition.dynamic?.get(layerPath(namePath, name)) - (dynamicLayer as? DynamicShapeLayerProvider?)?.let { dp -> - shapes.fastForEach { - it.setDynamicProperties(null, dp) - } - } - } - } - - override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { contentGroup.draw(drawScope, parentMatrix, parentAlpha, state) } @@ -135,6 +129,15 @@ internal class ShapeLayer( state: AnimationState, outBounds: MutableRect, ) { + resolvingPath?.let { + dynamicLayer = state.dynamic?.get(it) + } + + (dynamicLayer as? DynamicShapeLayerProvider?)?.let { dp -> + shapes.fastForEach { + it.setDynamicProperties(null, dp) + } + } super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) contentGroup.getBounds(drawScope, boundsMatrix, applyParents, state, outBounds) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 58b579be..e96ab2bf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -170,7 +170,7 @@ internal class TextLayer( if (state.composition.fontsByFamily.isEmpty() && state.composition.charGlyphs.isNotEmpty()){ drawTextWithGlyphs(drawScope, document, state) } else { - drawTextWithFonts(drawScope, document) + drawTextWithFonts(state, drawScope, document) } canvas.restore() } @@ -285,21 +285,17 @@ internal class TextLayer( } } - private fun getTextMeasurer(density: Density, layoutDirection: LayoutDirection): TextMeasurer { + private fun getTextMeasurer(state: AnimationState, density: Density, layoutDirection: LayoutDirection): TextMeasurer { textMeasurer?.let { if (lastDensity == density && lastLayoutDirection == layoutDirection) { return it } } - val fontFamilyResolver = checkNotNull( - painterProperties?.fontFamilyResolver - ) - val tm = TextMeasurer( defaultDensity = density, defaultLayoutDirection = layoutDirection, - defaultFontFamilyResolver = fontFamilyResolver + defaultFontFamilyResolver = state.fontFamilyResolver ) lastLayoutDirection = layoutDirection @@ -309,8 +305,8 @@ internal class TextLayer( return tm } - private fun drawTextWithFonts(drawScope: DrawScope, document: TextDocument) { - val measurer = getTextMeasurer(drawScope, drawScope.layoutDirection) + private fun drawTextWithFonts(state: AnimationState, drawScope: DrawScope, document: TextDocument) { + val measurer = getTextMeasurer(state, drawScope, drawScope.layoutDirection) var tracking = document.textTracking?.div(10f) ?: 0f @@ -333,7 +329,7 @@ internal class TextLayer( lines.fastForEachIndexed { idx, line -> canvas.save() - if (offsetCanvas(canvas, drawScope, document, alLinesIdx + idx, line.width)) { + if (offsetCanvas(state, canvas, document, alLinesIdx + idx, line.width)) { drawFontTextLine( line.text, measurer, @@ -358,7 +354,7 @@ internal class TextLayer( val textLines = getTextLines(document.text ?: return) val tracking = (document.textTracking ?: 0f) / 10f - val measurer = getTextMeasurer(drawScope, drawScope.layoutDirection) + val measurer = getTextMeasurer(state, drawScope, drawScope.layoutDirection) val canvas = drawScope.drawContext.canvas @@ -370,7 +366,7 @@ internal class TextLayer( lines.forEach { l -> canvas.save(); - if (offsetCanvas(canvas, drawScope, document, lineIndex, l.width)) { + if (offsetCanvas(state, canvas, document, lineIndex, l.width)) { drawGlyphTextLine( text = l.text, state = state, @@ -488,8 +484,8 @@ internal class TextLayer( } private fun offsetCanvas( + state: AnimationState, canvas: Canvas, - density: Density, document: TextDocument, lineIndex: Int, lineWidth: Float @@ -501,9 +497,7 @@ internal class TextLayer( val lineOffset: Float = ((lineIndex - 1) * document.lineHeight) + lineStartY - val clip = painterProperties?.clipTextToBoundingBoxes == true - - if (clip && size != null && position != null && + if (state.clipTextToBoundingBoxes && size != null && position != null && lineOffset >= position.y + size.height + document.fontSize ) { return false diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 4ff04584..1947fe7c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -22,9 +22,8 @@ import kotlin.math.hypot @OptIn(ExperimentalCompottieApi::class) internal class GradientCache { - private val linear = LruMap(limit = { L.shaderCacheLimit }) - - private val radial = LruMap(limit = { L.shaderCacheLimit }) + private val linear = LruMap(limit = L::shaderCacheLimit) + private val radial = LruMap(limit = L::shaderCacheLimit) fun getOrPut( hash : Int, @@ -32,6 +31,7 @@ internal class GradientCache { factory : () -> Shader ) : Shader { val map = if (linear) this.linear else this.radial + return map.getOrPut(hash, factory) } } diff --git a/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt b/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt index 69aeec8a..67dadc98 100644 --- a/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt +++ b/compottie/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.jvmNative.kt @@ -4,5 +4,5 @@ import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO -actual val Dispatchers.IODispatcher : CoroutineDispatcher - get() = Dispatchers.IO \ No newline at end of file +actual fun ioDispatcher() = Dispatchers.IO + diff --git a/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt b/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt index 29e61e23..7a8389be 100644 --- a/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt +++ b/compottie/src/webMain/kotlin/io/github/alexzhirkevich/compottie/IoDispatcher.web.kt @@ -3,5 +3,4 @@ package io.github.alexzhirkevich.compottie import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers -actual val Dispatchers.IODispatcher : CoroutineDispatcher - get() = Dispatchers.Default \ No newline at end of file +actual fun ioDispatcher() = Dispatchers.Default \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 3d094081..57c0a55e 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -11,6 +11,9 @@ import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid import androidx.compose.foundation.shape.GenericShape import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator @@ -39,13 +42,12 @@ import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState +import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import io.github.alexzhirkevich.compottie.rememberResourcesAssetsManager import io.github.alexzhirkevich.compottie.rememberResourcesFontManager import kotlinx.coroutines.delay -import kotlinx.coroutines.sync.Mutex -import kotlinx.coroutines.sync.withLock import org.jetbrains.compose.resources.ExperimentalResourceApi private val GRADIENT_ELLIPSE = "gradient_ellipse.json" @@ -95,7 +97,8 @@ suspend fun LottieCompositionSpec.Companion.Resource( fun App() { // return LottieFontExample() - return LottieList() +// return LottieList() + val composition = rememberLottieComposition( assetsManager = rememberResourcesAssetsManager( @@ -107,13 +110,11 @@ fun App() { else -> Res.font.ComicNeue } }, - dynamic = { - } ) { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Resource(WONDERS) // // LottieCompositionSpec.Url( // "https://assets-v2.lottiefiles.com/a/926b5f5e-117a-11ee-b83d-df9534a9fcf0/DhEx6yntOU.lottie", @@ -201,10 +202,6 @@ fun LottieFontExample() { focus.requestFocus() } - val mutex = remember { - Mutex() - } - Box( modifier = Modifier.fillMaxSize() .focusRequester(focus), @@ -254,9 +251,7 @@ fun LottieFontExample() { painter = rememberLottiePainter( rememberLottieComposition { // sometimes cmp resources freeze on simultaneous resources access - mutex.withLock { - LottieCompositionSpec.Resource("mobilo/$anim.json") - } + LottieCompositionSpec.Resource("mobilo/$anim.json") }.value ), contentDescription = anim @@ -287,24 +282,24 @@ fun LottieFontExample() { @Composable fun LottieList() { - LazyColumn { - items(100){ - val composition by rememberLottieComposition( -// key = "https://dotlottie.io/sample_files/animation-external-image.lottie" + LazyVerticalGrid(columns = GridCells.FixedSize(100.dp)) { + items(1000){ + val composition = rememberLottieComposition( + key = "ROBOT" ) { -// LottieCompositionSpec.Resource(ROBOT) - LottieCompositionSpec.Url( - url = "https://dotlottie.io/sample_files/animation-external-image.lottie", - ) + LottieCompositionSpec.Resource(ROBOT) +// LottieCompositionSpec.Url( +// url = "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", +// ) } val painter = rememberLottiePainter( - composition, + composition.value, iterations = LottieConstants.IterateForever ) Image( - modifier = Modifier.height(200.dp), + modifier = Modifier.height(100.dp), painter = painter, contentDescription = "" ) From ec2cb63d46f9350c7a2ee36d0ed9c3516f440ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 22 Jun 2024 02:07:07 +0300 Subject: [PATCH 062/100] disable merge paths, fix text layer --- .../internal/platform/PlatformPath.android.kt | 8 +- .../compottie/LottieComposition.kt | 27 ++- .../alexzhirkevich/compottie/LottiePainter.kt | 28 +-- .../compottie/internal/AnimationState.kt | 52 ++++-- .../compottie/internal/LottieJson.kt | 3 +- .../internal/animation/AnimatedTransform.kt | 20 +-- .../internal/animation/AnimatedVector2.kt | 8 +- .../animation/BaseKeyframeAnimation.kt | 8 +- .../internal/animation/BezierKeyframe.kt | 9 +- .../compottie/internal/animation/Keyframe.kt | 35 ++-- .../animation/TextDocumentKeyframe.kt | 9 +- .../internal/animation/ValueKeyframe.kt | 11 +- .../internal/animation/VectorKeyframe.kt | 10 +- .../internal/assets/CharacterData.kt | 4 +- .../internal/assets/CharacterPath.kt | 39 ++--- .../internal/content/ContentGroup.kt | 149 +--------------- .../internal/content/ContentGroupBase.kt | 15 -- .../internal/content/ContentGroupImpl.kt | 149 ++++++++++++++++ .../compottie/internal/effects/TintEffect.kt | 16 +- .../internal/helpers/LottieBlendMode.kt | 38 ++--- .../internal/layers/BaseCompositionLayer.kt | 116 +++++++------ .../compottie/internal/layers/BaseLayer.kt | 157 +++++++++-------- .../internal/layers/CompositionLayer.kt | 15 +- .../compottie/internal/layers/ImageLayer.kt | 6 +- .../compottie/internal/layers/Layer.kt | 6 - .../internal/layers/PrecompositionLayer.kt | 6 +- .../compottie/internal/layers/ShapeLayer.kt | 18 +- .../internal/layers/SolidColorLayer.kt | 14 +- .../compottie/internal/layers/TextLayer.kt | 159 ++++++++++-------- .../internal/shapes/BaseStrokeShape.kt | 4 +- .../compottie/internal/shapes/EllipseShape.kt | 3 - .../compottie/internal/shapes/FillShape.kt | 5 +- .../internal/shapes/GradientFillShape.kt | 15 +- .../internal/shapes/GradientStrokeShape.kt | 3 +- .../compottie/internal/shapes/GroupShape.kt | 19 +-- .../internal/shapes/MergePathsShape.kt | 43 +---- .../compottie/internal/shapes/PathShape.kt | 3 +- .../internal/shapes/PolystarShape.kt | 3 +- .../compottie/internal/shapes/RectShape.kt | 3 +- .../internal/shapes/RepeaterShape.kt | 9 +- .../compottie/internal/shapes/RoundShape.kt | 3 +- .../compottie/internal/shapes/Shape.kt | 8 - .../internal/shapes/SolidStrokeShape.kt | 3 +- .../internal/shapes/TransformShape.kt | 3 +- .../internal/shapes/TrimPathShape.kt | 3 +- .../composeResources/files/test.json | 1 - .../composeResources/files/text.json | 78 ++++++++- .../composeResources/files/text_glyphs.json | 1 + .../composeResources/files/text_offset.json | 1 + example/shared/src/commonMain/kotlin/App.kt | 22 ++- 50 files changed, 704 insertions(+), 664 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt create mode 100644 example/shared/src/commonMain/composeResources/files/text_glyphs.json create mode 100644 example/shared/src/commonMain/composeResources/files/text_offset.json diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt index 8993e4ae..89cd4c38 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.android.kt @@ -39,13 +39,9 @@ private class AndroidExtendedPathMeasure( override val length: Float get() = internalPathMeasure.length - private val positionArray: FloatArray by lazy { - FloatArray(2) - } + private val positionArray: FloatArray = FloatArray(2) - private val tangentArray: FloatArray by lazy { - FloatArray(2) - } + private val tangentArray: FloatArray = FloatArray(2) override fun getSegment( startDistance: Float, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 921c8615..1f70f62c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -19,6 +19,7 @@ import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async @@ -145,14 +146,29 @@ class LottieComposition internal constructor( @InternalCompottieApi set - internal var fontsByFamily: Map = emptyMap() + private var fontsByFamily: Map = emptyMap() private val prepareMutex = Mutex() - internal val charGlyphs: Map> = - animation.chars.groupBy(CharacterData::fontFamily) + private val charGlyphs: Map> = + animation.chars + .groupBy(CharacterData::fontFamily) .mapValues { it.value.associateBy(CharacterData::character) } + internal fun findFont(family: String?) : FontFamily? { + return fontsByFamily[family] + } + + internal fun findGlyphs(family : String?) : Map? { + return charGlyphs[family] ?: run { + val font = animation.fonts?.list + ?.find { it.name == family || it.family == family } + ?: return@run null + + charGlyphs[font.family] ?: charGlyphs[font.name] + } + } + private var isPrepared = false /** @@ -166,7 +182,7 @@ class LottieComposition internal constructor( fontManager: LottieFontManager = LottieFontManager.Empty ) { prepareMutex.withLock { - if (!isPrepared) { +// if (!isPrepared) { coroutineScope { launch { loadAssets(assetsManager) @@ -177,7 +193,7 @@ class LottieComposition internal constructor( }.invokeOnCompletion { isPrepared = it == null } - } +// } } } @@ -266,6 +282,7 @@ class LottieComposition internal constructor( * */ fun clearCache() = cache.clear() + @OptIn(ExperimentalCompottieApi::class) private val cache = LruMap(limit = L::compositionCacheLimit) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 6487fea7..af850e68 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -25,7 +25,6 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.Layer -import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import kotlin.math.roundToInt /** @@ -60,6 +59,8 @@ import kotlin.math.roundToInt * @param clipToCompositionBounds if animation should be clipped to the * [composition].width x [composition].height * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) + * @param enableMergePaths enable experimental merge paths feature. Most of the time animation doesn't need + * it even if it contains merge paths. This feature should only be enabled for tested animations * */ @Composable fun rememberLottiePainter( @@ -73,8 +74,9 @@ fun rememberLottiePainter( iterations: Int = composition?.iterations ?: 1, cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, useCompositionFrameRate: Boolean = false, + clipToCompositionBounds: Boolean = true, clipTextToBoundingBoxes: Boolean = false, - clipToCompositionBounds: Boolean = true + enableMergePaths: Boolean = false, ) : Painter { val progress = animateLottieCompositionAsState( @@ -94,7 +96,8 @@ fun rememberLottiePainter( progress = { progress.value }, dynamicProperties = dynamicProperties, clipToCompositionBounds = clipToCompositionBounds, - clipTextToBoundingBoxes = clipTextToBoundingBoxes + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + enableMergePaths = enableMergePaths ) } @@ -106,6 +109,8 @@ fun rememberLottiePainter( * @param clipToCompositionBounds if drawing should be clipped to the * [composition].width x [composition].height * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) + * @param enableMergePaths enable experimental merge paths feature. Most of the time animation doesn't need + * it even if it contains merge paths. This feature should only be enabled for tested animations * */ @Composable fun rememberLottiePainter( @@ -114,6 +119,7 @@ fun rememberLottiePainter( dynamicProperties : DynamicProperties? = null, clipToCompositionBounds : Boolean = true, clipTextToBoundingBoxes: Boolean = false, + enableMergePaths: Boolean = false, ) : Painter { val fontFamilyResolver = LocalFontFamilyResolver.current @@ -133,7 +139,8 @@ fun rememberLottiePainter( }, clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver, - clipToCompositionBounds = clipToCompositionBounds + clipToCompositionBounds = clipToCompositionBounds, + enableMergePaths = enableMergePaths ) } } @@ -179,6 +186,7 @@ private class LottiePainter( fontFamilyResolver : FontFamily.Resolver, clipTextToBoundingBoxes : Boolean, clipToCompositionBounds : Boolean, + enableMergePaths : Boolean, ) : Painter() { var progress: Float by mutableStateOf(initialProgress) @@ -212,7 +220,10 @@ private class LottiePainter( fontFamilyResolver = fontFamilyResolver, clipToDrawBounds = clipToCompositionBounds, dynamicProperties = dynamicProperties, - clipTextToBoundingBoxes = clipTextToBoundingBoxes + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + enableMergePaths = enableMergePaths, + layer = compositionLayer, + assets = composition.animation.assets.associateBy(LottieAsset::id) ) var clipTextToBoundingBoxes: Boolean by animationState::clipTextToBoundingBoxes @@ -220,13 +231,6 @@ private class LottiePainter( var fontFamilyResolver: FontFamily.Resolver by animationState::fontFamilyResolver var dynamic: DynamicCompositionProvider? by animationState::dynamic - init { - val painterProperties = PainterProperties( - assets = composition.animation.assets.associateBy(LottieAsset::id), - ) - compositionLayer.painterProperties = painterProperties - } - override fun applyAlpha(alpha: Float): Boolean { if (alpha !in 0f..1f) return false diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index e815253f..50ba5ab6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -6,24 +6,24 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract class AnimationState @PublishedApi internal constructor( - frame : Float, val composition : LottieComposition, + internal val assets: Map, + frame : Float, fontFamilyResolver: FontFamily.Resolver, - clipToDrawBounds : Boolean = true, - dynamicProperties : DynamicCompositionProvider? = null, - clipTextToBoundingBoxes : Boolean = false, + clipToDrawBounds : Boolean, + dynamicProperties : DynamicCompositionProvider?, + clipTextToBoundingBoxes : Boolean, + enableMergePaths: Boolean, + layer : Layer ) { - internal var clipToCompositionBounds by mutableStateOf(clipToDrawBounds) - internal var clipTextToBoundingBoxes by mutableStateOf(clipTextToBoundingBoxes) - internal var fontFamilyResolver by mutableStateOf(fontFamilyResolver) - internal var dynamic by mutableStateOf(dynamicProperties) - - var frame = frame + var frame by mutableStateOf(frame) private set val progress: Float @@ -33,27 +33,45 @@ class AnimationState @PublishedApi internal constructor( return p.coerceIn(0f, 1f) } - @PublishedApi - internal fun setFrame(frame: Float) { - this.frame = frame - } + internal var clipToCompositionBounds by mutableStateOf(clipToDrawBounds) + internal var clipTextToBoundingBoxes by mutableStateOf(clipTextToBoundingBoxes) + internal var fontFamilyResolver by mutableStateOf(fontFamilyResolver) + internal var dynamic by mutableStateOf(dynamicProperties) + internal var enableMergePaths by mutableStateOf(enableMergePaths) + internal var layer by mutableStateOf(layer) + private set /** * Remaps current state to requested [frame] and performs [block] on it. * State is restored after the [block] call * */ @OptIn(ExperimentalContracts::class) - fun remapped(frame: Float, block: (AnimationState) -> R): R { + internal fun remapped(frame: Float, block: (AnimationState) -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } val initial = this.frame return try { - setFrame(frame) + this.frame = frame + block(this) + } finally { + this.frame = initial + } + } + + @OptIn(ExperimentalContracts::class) + internal fun onLayer(layer: Layer, block: (AnimationState) -> R): R { + contract { + callsInPlace(block, InvocationKind.EXACTLY_ONCE) + } + + val prevLayer = this.layer + return try { + this.layer = layer block(this) } finally { - setFrame(initial) + this.layer = prevLayer } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index f16d5b27..ed65e957 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -26,7 +26,6 @@ import io.github.alexzhirkevich.compottie.internal.shapes.FillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientFillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientStrokeShape import io.github.alexzhirkevich.compottie.internal.shapes.GroupShape -import io.github.alexzhirkevich.compottie.internal.shapes.MergePathsShape import io.github.alexzhirkevich.compottie.internal.shapes.PathShape import io.github.alexzhirkevich.compottie.internal.shapes.PolystarShape import io.github.alexzhirkevich.compottie.internal.shapes.RectShape @@ -78,7 +77,7 @@ internal val LottieJson by lazy{ subclass(GradientFillShape::class) subclass(GradientStrokeShape::class) subclass(GroupShape::class) - subclass(MergePathsShape::class) +// subclass(MergePathsShape::class) subclass(PathShape::class) subclass(PolystarShape::class) subclass(RectShape::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index b9b0fc86..8178f464 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -9,6 +9,7 @@ import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.toScaleFactor import io.github.alexzhirkevich.compottie.dynamic.toVec2 import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.utils.Math import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.preRotate @@ -30,8 +31,6 @@ internal abstract class AnimatedTransform{ abstract val skew: AnimatedNumber? abstract val skewAxis: AnimatedNumber? - var autoOrient = false - var dynamic : DynamicTransformProvider? = null set(value) { field = value @@ -47,23 +46,16 @@ internal abstract class AnimatedTransform{ protected val matrix: Matrix = Matrix() - private val skewMatrix1: Matrix by lazy { - Matrix() - } + private val skewMatrix1: Matrix = Matrix() - private val skewMatrix2: Matrix by lazy { - Matrix() - } + private val skewMatrix2: Matrix = Matrix() - private val skewMatrix3: Matrix by lazy { - Matrix() - } + private val skewMatrix3: Matrix = Matrix() - private val skewValues: FloatArray by lazy { - FloatArray(9) - } + private val skewValues: FloatArray = FloatArray(9) fun matrix(state: AnimationState): Matrix { + val autoOrient = state.layer.autoOrient == BooleanInt.Yes matrix.reset() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 17c18d28..dad7fc18 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -78,13 +78,9 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { override val index: String? = null, ) : AnimatedVector2() { - private val path by lazy { - Path() - } + private val path = Path() - private val pathMeasure by lazy { - PathMeasure() - } + private val pathMeasure = PathMeasure() @Transient private val delegate: KeyframeAnimation = BaseKeyframeAnimation( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index dc6d0895..f22f3778 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -20,13 +20,9 @@ internal class BaseKeyframeAnimation>( sortedKeyframes[it].time..sortedKeyframes[it + 1].time } - private val firstFrame: Float by lazy { - sortedKeyframes.first().time - } + private val firstFrame: Float = sortedKeyframes.first().time - private val lastFrame: Float by lazy { - sortedKeyframes.last().time - } + private val lastFrame: Float = sortedKeyframes.last().time private val initialValue by lazy { keyframes.first().run { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt index 043347f6..872a7291 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierKeyframe.kt @@ -30,7 +30,14 @@ internal class BezierKeyframe( @SerialName("o") override val outValue : BezierInterpolation? = null, -) : Keyframe() +) : Keyframe by BaseKeyframe( + start = start, + end = end, + time = time, + hold = hold, + inValue = inValue, + outValue = outValue +) internal class BezierSerializer : JsonTransformingSerializer(Bezier.serializer()) { override fun transformDeserialize(element: JsonElement): JsonElement { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt index 7ab1195b..a9a51fdc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/Keyframe.kt @@ -7,17 +7,30 @@ import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlin.math.abs import kotlin.math.absoluteValue -internal abstract class Keyframe() { - abstract val start: T? - abstract val end: T? - abstract val time: Float - abstract val hold : BooleanInt - abstract val inValue: BezierInterpolation? - abstract val outValue: BezierInterpolation? +internal interface Keyframe { + val start: T? + val end: T? + val time: Float + val hold : BooleanInt + val inValue: BezierInterpolation? + val outValue: BezierInterpolation? val endHold get() = if (hold == BooleanInt.Yes) start else end - val easingX: Easing by lazy { + val easingX: Easing + val easingY: Easing +} + +internal class BaseKeyframe( + override val start: T?, + override val end: T?, + override val time: Float, + override val hold : BooleanInt, + override val inValue: BezierInterpolation?, + override val outValue: BezierInterpolation?, +) : Keyframe { + + override val easingX: Easing = kotlin.run { val i = inValue val o = outValue @@ -39,17 +52,17 @@ internal abstract class Keyframe() { } } - val easingY by lazy { + override val easingY = kotlin.run { val i = inValue val o = outValue if (hold == BooleanInt.Yes || i == null || o == null) { - return@lazy LinearEasing + return@run LinearEasing } if (i.x.size < 2 || i.y.size < 2 || o.x.size < 2 || o.y.size == 2) { - return@lazy easingX + return@run easingX } PreciseCubicBezier( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt index 0128672c..9f87d898 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/TextDocumentKeyframe.kt @@ -20,4 +20,11 @@ internal class TextDocumentKeyframe( override val hold: BooleanInt = BooleanInt.No, override val inValue: BezierInterpolation? = null, override val outValue: BezierInterpolation? = null -) : Keyframe() \ No newline at end of file +) : Keyframe by BaseKeyframe( + start = start, + end = end, + time = time, + hold = hold, + inValue = inValue, + outValue = outValue +) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt index 16481d36..21d60203 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonTransformingSerializer -@Serializable() +@Serializable internal class ValueKeyframe( @SerialName("s") @@ -28,5 +28,12 @@ internal class ValueKeyframe( @SerialName("o") override val outValue : BezierInterpolation? = null, -) : Keyframe() +) : Keyframe by BaseKeyframe( + start = start, + end = end, + time = time, + hold = hold, + inValue = inValue, + outValue = outValue +) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index a103cdad..569c7217 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Path +import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -32,7 +33,14 @@ internal class VectorKeyframe( @SerialName("to") val outTangent: FloatArray? = null, -) : Keyframe() +) : Keyframe by BaseKeyframe( + start = start, + end = end, + time = time, + hold = hold, + inValue = inValue, + outValue = outValue +) private fun FloatArray.ofNulls() = all { it == 0f } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt index eaddc9f8..92983803 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt @@ -18,9 +18,9 @@ internal class CharacterData( @SerialName("style") val fontStyle : String? = null, - @SerialName("width") + @SerialName("w") val width : Float? = null, @SerialName("data") - val data: CharacterPath + val data: CharacterPath? = null ) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt index 9d139a88..259d3c81 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt @@ -4,10 +4,8 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.Transform -import io.github.alexzhirkevich.compottie.internal.layers.PainterProperties import io.github.alexzhirkevich.compottie.internal.layers.PrecompositionLayer import io.github.alexzhirkevich.compottie.internal.shapes.GroupShape import io.github.alexzhirkevich.compottie.internal.shapes.Shape @@ -21,8 +19,6 @@ import kotlinx.serialization.json.jsonObject @Serializable(with = CharacterPathSerializer::class) internal sealed interface CharacterPath { - fun onCreate(composition: LottieComposition, painterProperties: PainterProperties) {} - fun draw( scope : DrawScope, state: AnimationState, @@ -51,7 +47,9 @@ internal sealed interface CharacterPath { scope.drawIntoCanvas { it.drawPath(path, fillPaint) - it.drawPath(path, strokePaint) + if (strokePaint.strokeWidth > 0f) { + it.drawPath(path, strokePaint) + } } } } @@ -59,7 +57,7 @@ internal sealed interface CharacterPath { @Serializable class Precomp( @SerialName("refId") - val refId: String, + val refId: String? = null, @SerialName("tr") val transform: Transform = Transform(), @@ -74,22 +72,17 @@ internal sealed interface CharacterPath { val timeStretch: Float = 1f, ) : CharacterPath { - private val layer = PrecompositionLayer( - refId = refId, - transform = transform, - inPoint = inPoint, - outPoint = outPoint, - timeStretch = timeStretch, - width = 0f, - height = 0f - ) - - override fun onCreate( - composition: LottieComposition, - painterProperties: PainterProperties - ) { - layer.painterProperties = painterProperties - } + private val layer = if (refId != null) { + PrecompositionLayer( + refId = refId, + transform = transform, + inPoint = inPoint, + outPoint = outPoint, + timeStretch = timeStretch, + width = 0f, + height = 0f + ) + } else null override fun draw( scope: DrawScope, @@ -98,7 +91,7 @@ internal sealed interface CharacterPath { strokePaint: Paint, fillPaint: Paint ) { - layer.draw(scope, parentMatrix, 1f, state) + layer?.draw(scope, parentMatrix, 1f, state) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index c033afd5..08c23d14 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -1,154 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.content -import androidx.compose.ui.geometry.MutableRect -import androidx.compose.ui.geometry.toRect -import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform -import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm -import io.github.alexzhirkevich.compottie.internal.platform.addPath -import io.github.alexzhirkevich.compottie.internal.utils.preConcat -import io.github.alexzhirkevich.compottie.internal.utils.union -internal class ContentGroup( - override val name: String?, - contents: List, - private val hidden : (AnimationState) -> Boolean, - override val transform: AnimatedTransform?, -) : ContentGroupBase { +internal interface ContentGroup : DrawingContent, PathContent { + val transform : AnimatedTransform? - private val rect = MutableRect(0f, 0f, 0f, 0f) - private val offscreenRect = MutableRect(0f, 0f, 0f, 0f) - private val offscreenPaint = Paint().apply { - isAntiAlias = true - } - private val matrix = Matrix() - private val path = Path() + val isEmpty : Boolean -// private val boundsRect = MutableRect(0f, 0f, 0f, 0f) - - override fun hidden(state: AnimationState): Boolean { - return hidden.invoke(state) - } - - private val mContents by lazy { - contents.filterNot { - it is ContentGroupBase && it.pathContents.isEmpty() - }.toMutableList() - } - - override val pathContents: List by lazy { - this.mContents.filterIsInstance() - } - - private val drawingContents: List by lazy { - this.mContents.filterIsInstance() - } - - init { - val greedyContents = contents.filterIsInstance().reversed() - - greedyContents.fastForEachReversed { - it.absorbContent(mContents) - } - } - - override fun draw( - drawScope: DrawScope, - parentMatrix: Matrix, - parentAlpha: Float, - state: AnimationState - ) { - - if (hidden(state)) { - return - } - - var layerAlpha = parentAlpha - - matrix.setFrom(parentMatrix) - - if (transform != null) { - matrix.preConcat(transform.matrix(state)) - transform.opacity?.interpolatedNorm(state)?.let { - - layerAlpha = (layerAlpha * it).coerceIn(0f, 1f) - } - } - - val isRenderingWithOffScreen = drawingContents.size > 2 && layerAlpha < 1f - - val canvas = drawScope.drawContext.canvas - if (isRenderingWithOffScreen) { - offscreenRect.set(0f, 0f, 0f, 0f) - getBounds(drawScope, matrix, true, state, offscreenRect) - offscreenPaint.alpha = layerAlpha - canvas.saveLayer(offscreenRect.toRect(), offscreenPaint) - } - - val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha - - drawingContents.fastForEachReversed { content -> - content.draw(drawScope, matrix, childAlpha, state) - } - - if (isRenderingWithOffScreen) { - canvas.restore() - } - } - - override fun getPath(state: AnimationState): Path { - - path.reset() - if (hidden(state)) { - return path - } - matrix.reset() - - if (transform != null) { - matrix.setFrom(transform.matrix(state)) - } - pathContents.fastForEachReversed { - path.addPath(it.getPath(state), matrix) - } - - return path - } - - override fun setContents(contentsBefore: List, contentsAfter: List) { - // Do nothing with contents after. - val myContentsBefore: MutableList = ArrayList(contentsBefore.size + mContents.size) - myContentsBefore.addAll(contentsBefore) - - for (i in mContents.indices.reversed()) { - val content = mContents[i] - content.setContents(myContentsBefore, mContents.subList(0, i)) - myContentsBefore.add(content) - } - } - - override fun getBounds( - drawScope: DrawScope, - parentMatrix: Matrix, - applyParents: Boolean, - state: AnimationState, - outBounds: MutableRect, - ) { - matrix.setFrom(parentMatrix) - if (transform != null) { - matrix.preConcat(transform.matrix(state)) - } - rect.set(0f, 0f, 0f, 0f) - - drawingContents.fastForEachReversed { - it.getBounds(drawScope, matrix, applyParents, state, rect) - outBounds.union(rect) - } - } + fun hidden(state: AnimationState) : Boolean } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt deleted file mode 100644 index b3b08de9..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupBase.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.content - -import io.github.alexzhirkevich.compottie.internal.AnimationState -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt - -internal interface ContentGroupBase : DrawingContent, PathContent { - - val pathContents : List - - val transform : AnimatedTransform? - - fun hidden(state: AnimationState) : Boolean - -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt new file mode 100644 index 00000000..af78d903 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt @@ -0,0 +1,149 @@ +package io.github.alexzhirkevich.compottie.internal.content + +import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.toRect +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform +import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm +import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.utils.preConcat +import io.github.alexzhirkevich.compottie.internal.utils.union + +internal class ContentGroupImpl( + contents: List, + override val name: String?, + private val hidden : (AnimationState) -> Boolean, + override val transform: AnimatedTransform?, +) : ContentGroup { + + private val rect = MutableRect(0f, 0f, 0f, 0f) + private val offscreenRect = MutableRect(0f, 0f, 0f, 0f) + private val offscreenPaint = Paint().apply { + isAntiAlias = true + } + private val matrix = Matrix() + private val path = Path() + + override fun hidden(state: AnimationState): Boolean { + return hidden.invoke(state) + } + + private val mContents = contents + .filterNot { it is ContentGroup && it.isEmpty } + .toMutableList() + + override val isEmpty: Boolean + get() = pathContents.isEmpty() && drawingContents.isEmpty() + + private val pathContents: List = mContents + .filterIsInstance() + + private val drawingContents: List = + mContents.filterIsInstance() + + init { + val greedyContents = mContents.filterIsInstance().reversed() + + greedyContents.fastForEachReversed { + it.absorbContent(mContents) + } + } + + override fun draw( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + state: AnimationState + ) { + + if (hidden(state)) { + return + } + + var layerAlpha = parentAlpha + + matrix.setFrom(parentMatrix) + + if (transform != null) { + matrix.preConcat(transform.matrix(state)) + transform.opacity?.interpolatedNorm(state)?.let { + + layerAlpha = (layerAlpha * it).coerceIn(0f, 1f) + } + } + + val isRenderingWithOffScreen = drawingContents.size > 2 && layerAlpha < 1f + + val canvas = drawScope.drawContext.canvas + if (isRenderingWithOffScreen) { + offscreenRect.set(0f, 0f, 0f, 0f) + getBounds(drawScope, matrix, true, state, offscreenRect) + offscreenPaint.alpha = layerAlpha + canvas.saveLayer(offscreenRect.toRect(), offscreenPaint) + } + + val childAlpha = if (isRenderingWithOffScreen) 1f else layerAlpha + + drawingContents.fastForEachReversed { content -> + content.draw(drawScope, matrix, childAlpha, state) + } + + if (isRenderingWithOffScreen) { + canvas.restore() + } + } + + override fun getPath(state: AnimationState): Path { + + path.reset() + if (hidden(state)) { + return path + } + matrix.reset() + + if (transform != null) { + matrix.setFrom(transform.matrix(state)) + } + pathContents.fastForEachReversed { + path.addPath(it.getPath(state), matrix) + } + + return path + } + + override fun setContents(contentsBefore: List, contentsAfter: List) { + // Do nothing with contents after. + val myContentsBefore: MutableList = ArrayList(contentsBefore.size + mContents.size) + myContentsBefore.addAll(contentsBefore) + + for (i in mContents.indices.reversed()) { + val content = mContents[i] + content.setContents(myContentsBefore, mContents.subList(0, i)) + myContentsBefore.add(content) + } + } + + override fun getBounds( + drawScope: DrawScope, + parentMatrix: Matrix, + applyParents: Boolean, + state: AnimationState, + outBounds: MutableRect, + ) { + matrix.setFrom(parentMatrix) + if (transform != null) { + matrix.preConcat(transform.matrix(state)) + } + rect.set(0f, 0f, 0f, 0f) + + drawingContents.fastForEachReversed { + it.getBounds(drawScope, matrix, applyParents, state, rect) + outBounds.union(rect) + } + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt index 27b24b1d..f2f23964 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt @@ -12,15 +12,13 @@ internal class TintEffect( override val values : List> ) : LayerEffect { - val black by lazy { - values.getAs(0)?.value - } + val black + get() = values.getAs(0)?.value - val white by lazy { - values.getAs(1)?.value - } - val intensity by lazy { - values.getAs(2)?.value - } + val white + get() = values.getAs(1)?.value + + val intensity + get() = values.getAs(2)?.value } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt index 0c36d779..ec4d7596 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/LottieBlendMode.kt @@ -31,23 +31,21 @@ internal fun LottieBlendMode.asComposeBlendMode() : BlendMode { return BlendModeMapping[this] ?: error("Unknown lottie blend mode: $this") } -private val BlendModeMapping by lazy { - mapOf( - LottieBlendMode.Normal to BlendMode.SrcOver, - LottieBlendMode.Multiply to BlendMode.Multiply, - LottieBlendMode.Screen to BlendMode.Screen, - LottieBlendMode.Overlay to BlendMode.Overlay, - LottieBlendMode.Darken to BlendMode.Darken, - LottieBlendMode.Lighten to BlendMode.Lighten, - LottieBlendMode.ColorDodge to BlendMode.ColorDodge, - LottieBlendMode.ColorBurn to BlendMode.ColorBurn, - LottieBlendMode.HardLight to BlendMode.Hardlight, - LottieBlendMode.SoftLight to BlendMode.Softlight, - LottieBlendMode.Difference to BlendMode.Difference, - LottieBlendMode.Exclusion to BlendMode.Exclusion, - LottieBlendMode.Hue to BlendMode.Hue, - LottieBlendMode.Saturation to BlendMode.Saturation, - LottieBlendMode.Color to BlendMode.Color, - LottieBlendMode.Luminosity to BlendMode.Luminosity - ) -} \ No newline at end of file +private val BlendModeMapping = mapOf( + LottieBlendMode.Normal to BlendMode.SrcOver, + LottieBlendMode.Multiply to BlendMode.Multiply, + LottieBlendMode.Screen to BlendMode.Screen, + LottieBlendMode.Overlay to BlendMode.Overlay, + LottieBlendMode.Darken to BlendMode.Darken, + LottieBlendMode.Lighten to BlendMode.Lighten, + LottieBlendMode.ColorDodge to BlendMode.ColorDodge, + LottieBlendMode.ColorBurn to BlendMode.ColorBurn, + LottieBlendMode.HardLight to BlendMode.Hardlight, + LottieBlendMode.SoftLight to BlendMode.Softlight, + LottieBlendMode.Difference to BlendMode.Difference, + LottieBlendMode.Exclusion to BlendMode.Exclusion, + LottieBlendMode.Hue to BlendMode.Hue, + LottieBlendMode.Saturation to BlendMode.Saturation, + LottieBlendMode.Color to BlendMode.Color, + LottieBlendMode.Luminosity to BlendMode.Luminosity +) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index ab2c7f4d..a525ebc1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -4,9 +4,9 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.util.fastFilter import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -14,6 +14,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.clipRect import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.utils.union +import kotlinx.atomicfu.locks.synchronized import kotlinx.serialization.Transient internal abstract class BaseCompositionLayer: BaseLayer() { @@ -34,63 +35,9 @@ internal abstract class BaseCompositionLayer: BaseLayer() { isAntiAlias = true } - abstract fun loadLayers(): List + private var loadedLayers : List? = null - private val layers by lazy { - val layers = loadLayers().filterIsInstance() - - layers.fastForEach { - it.resolvingPath = this.resolvingPath?.resolveOrNull(it.name) - } - - layers.fastForEach { - it.effects = effects + it.effects - } - - val matteLayers = mutableSetOf() - - val layersWithIndex = layers - .filter { it.index != null } - .associateBy { it.index } - - layers.forEachIndexed { i, it -> - it.parent?.let { pId -> - val p = layersWithIndex[pId] - - if (p != null) { - it.setParentLayer(p) - } - } - - if (it.matteMode?.isSupported() == true) { - if (it.matteParent != null) { - val p = layersWithIndex[it.matteParent] - - if (p != null) { - it.setMatteLayer(p) - matteLayers.add(p) - } - } else { - if (i > 0) { - it.setMatteLayer(layers[i - 1]) - matteLayers.add(layers[i - 1]) - } - } - - } - } - - (layers - matteLayers).filterNot { it.matteTarget == BooleanInt.Yes } - } - - override var painterProperties: PainterProperties? - get() = super.painterProperties - set(value) { - super.painterProperties = value - layers.fastForEach { - it.painterProperties = value - } - } + abstract fun compose(state: AnimationState): List override fun drawLayer( drawScope: DrawScope, @@ -98,7 +45,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { parentAlpha: Float, state: AnimationState ) { -// remappedState.delegate = state + + val layers = getLayers(state) newClipRect.set(0f, 0f, width, height) parentMatrix.map(newClipRect) @@ -144,13 +92,63 @@ internal abstract class BaseCompositionLayer: BaseLayer() { ) { super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) - layers.fastForEachReversed { + getLayers(state).fastForEachReversed { rect.set(0f, 0f, 0f, 0f) it.getBounds(drawScope, boundsMatrix, true, state, rect) outBounds.union(rect) } } + private fun getLayers(state: AnimationState) : List = synchronized(this) { + loadedLayers?.let { return it } + + val layers = compose(state).filterIsInstance() + + layers.fastForEach { + it.resolvingPath = this.resolvingPath?.resolveOrNull(it.name) + } + + layers.fastForEach { + it.effects = effects + it.effects + } + + val matteLayers = mutableSetOf() + + val layersWithIndex = layers + .filter { it.index != null } + .associateBy { it.index } + + layers.forEachIndexed { i, it -> + it.parent?.let { pId -> + val p = layersWithIndex[pId] + + if (p != null) { + it.setParentLayer(p) + } + } + + if (it.matteMode?.isSupported() == true) { + if (it.matteParent != null) { + val p = layersWithIndex[it.matteParent] + + if (p != null) { + it.setMatteLayer(p) + matteLayers.add(p) + } + } else { + if (i > 0) { + it.setMatteLayer(layers[i - 1]) + matteLayers.add(layers[i - 1]) + } + } + + } + } + + this.loadedLayers = (layers - matteLayers).fastFilter { it.matteTarget != BooleanInt.Yes } + return this.loadedLayers!! + } + private fun getRemappedFrame(state: AnimationState): Float { val f = if (timeStretch != 0f && timeStretch != 1f && !isContainerLayer) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 98f7d95f..c04b23aa 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -7,25 +7,26 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.isIdentity import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.L -import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode import io.github.alexzhirkevich.compottie.internal.helpers.isInvert import io.github.alexzhirkevich.compottie.internal.helpers.isLuma import io.github.alexzhirkevich.compottie.internal.platform.Luma import io.github.alexzhirkevich.compottie.internal.platform.drawRect +import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set @@ -33,9 +34,7 @@ import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union -internal abstract class BaseLayer() : Layer { - - override var painterProperties: PainterProperties? = null +internal abstract class BaseLayer : Layer { override var resolvingPath : ResolvingPath? = null @@ -46,11 +45,10 @@ internal abstract class BaseLayer() : Layer { private val canvasMatrix = Matrix() private val canvasBounds = MutableRect(0f, 0f, 0f, 0f) - private val contentPaint by lazy { - Paint().apply { - isAntiAlias = true - } + private val contentPaint = Paint().apply { + isAntiAlias = true } + private val clearPaint by lazy { Paint().apply { isAntiAlias = true @@ -102,104 +100,106 @@ internal abstract class BaseLayer() : Layer { state: AnimationState, ) - override fun draw( + final override fun draw( drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState, ) { try { - transform.autoOrient = autoOrient == BooleanInt.Yes - resolvingPath?.let { - val dynamic = state.dynamic?.get(it)?.transform - if (transform.dynamic !== dynamic){ - transform.dynamic = dynamic + state.onLayer(this) { + resolvingPath?.let { + val dynamic = state.dynamic?.get(it)?.transform + if (transform.dynamic !== dynamic) { + transform.dynamic = dynamic + } } - } - if (hidden || (inPoint ?: 0f) > state.frame || (outPoint ?: Float.MAX_VALUE) < state.frame) - return + if (hidden || (inPoint ?: 0f) > state.frame || (outPoint + ?: Float.MAX_VALUE) < state.frame + ) return@onLayer - buildParentLayerListIfNeeded() - matrix.reset() + buildParentLayerListIfNeeded() + matrix.reset() - matrix.setFrom(parentMatrix) - parentLayers?.fastForEachReversed { - matrix.preConcat(it.transform.matrix(state)) - } - - var alpha = 1f - - transform.opacity?.interpolatedNorm(state)?.let { - alpha = (alpha * it).coerceIn(0f, 1f) - } + matrix.setFrom(parentMatrix) + parentLayers?.fastForEachReversed { + matrix.preConcat(it.transform.matrix(state)) + } - alpha = (alpha * parentAlpha.coerceIn(0f,1f)) + var alpha = 1f - if (matteLayer == null && !hasMask()) { - matrix.preConcat(transform.matrix(state)) - drawLayer(drawScope, matrix, alpha, state) - return - } + transform.opacity?.interpolatedNorm(state)?.let { + alpha = (alpha * it).coerceIn(0f, 1f) + } + alpha = (alpha * parentAlpha.coerceIn(0f, 1f)) - getBounds(drawScope, matrix, false, state, rect) + if (matteLayer == null && !hasMask()) { + matrix.preConcat(transform.matrix(state)) + drawLayer(drawScope, matrix, alpha, state) + return@onLayer + } - intersectBoundsWithMatte(drawScope, rect, matrix, state) - matrix.preConcat(transform.matrix(state)) - intersectBoundsWithMask(rect, matrix, state) + getBounds(drawScope, matrix, false, state, rect) - // Intersect the mask and matte rect with the canvas bounds. - // If the canvas has a transform, then we need to transform its bounds by its matrix - // so that we know the coordinate space that the canvas is showing. -// canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) - drawScope.drawIntoCanvas { canvas -> + intersectBoundsWithMatte(drawScope, rect, parentMatrix, state) -// canvas.getMatrix(canvasMatrix) -// if (!canvasMatrix.isIdentity()) { -// canvasMatrix.invert() -// canvasMatrix.map(canvasBounds) -// } + matrix.preConcat(transform.matrix(state)) + intersectBoundsWithMask(rect, matrix, state) + + // Intersect the mask and matte rect with the canvas bounds. + // If the canvas has a transform, then we need to transform its bounds by its matrix + // so that we know the coordinate space that the canvas is showing. + canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) + drawScope.drawIntoCanvas { canvas -> + + canvas.getMatrix(canvasMatrix) + if (!canvasMatrix.isIdentity()) { + canvasMatrix.invert() + canvasMatrix.map(canvasBounds) + } -// rect.intersectOrReset(canvasBounds) + rect.intersectOrReset(canvasBounds) +// + // Ensure that what we are drawing is >=1px of width and height. + // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. + // https://github.com/airbnb/lottie-android/issues/1625 + if (rect.width >= 1f && rect.height >= 1f) { + contentPaint.alpha = 1f + canvas.saveLayer(rect, contentPaint) - // Ensure that what we are drawing is >=1px of width and height. - // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. - // https://github.com/airbnb/lottie-android/issues/1625 - if (rect.width >= 1f && rect.height >= 1f) { - contentPaint.alpha = 1f - canvas.saveLayer(rect, contentPaint) + // Clear the off screen buffer. This is necessary for some phones. + clearCanvas(canvas) + drawLayer(drawScope, matrix, alpha, state) - // Clear the off screen buffer. This is necessary for some phones. - clearCanvas(canvas) - drawLayer(drawScope, matrix, alpha, state) + if (hasMask()) { + applyMasks(canvas, matrix, state) + } - if (hasMask()) { - applyMasks(canvas, matrix, state) - } + matteLayer?.let { + canvas.saveLayer(rect, mattePaint, SAVE_FLAGS) + clearCanvas(canvas) + it.draw(drawScope, parentMatrix, alpha, state) + canvas.restore() + } - matteLayer?.let { - canvas.saveLayer(rect, mattePaint, SAVE_FLAGS) - clearCanvas(canvas) - it.draw(drawScope, parentMatrix, alpha, state) canvas.restore() } - canvas.restore() +// val outlineMasksAndMattesPaint = Paint().apply { +// style = PaintingStyle.Stroke +// strokeWidth = 4f +// color = Color.Red +// } +// canvas.drawRect(rect, outlineMasksAndMattesPaint) +// outlineMasksAndMattesPaint.style = PaintingStyle.Fill +// outlineMasksAndMattesPaint.color = Color(0x50EBEBEB) +// canvas.drawRect(rect, outlineMasksAndMattesPaint) } - -// if (outlineMasksAndMattes && outlineMasksAndMattesPaint != null) { -// outlineMasksAndMattesPaint.setStyle(android.graphics.Paint.Style.STROKE) -// outlineMasksAndMattesPaint.setColor(-0x3d7fd) -// outlineMasksAndMattesPaint.setStrokeWidth(4f) -// canvas.drawRect(rect, outlineMasksAndMattesPaint) -// outlineMasksAndMattesPaint.setStyle(android.graphics.Paint.Style.FILL) -// outlineMasksAndMattesPaint.setColor(0x50EBEBEB) -// canvas.drawRect(rect, outlineMasksAndMattesPaint) -// } } } catch (t: Throwable) { L.logger.error("Lottie crashed in draw :(", t) @@ -299,7 +299,6 @@ internal abstract class BaseLayer() : Layer { if (mask.isInverted) { return } - val b = path.getBounds() maskBoundsRect.union(path.getBounds()) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index ddaabf95..7a95d2ca 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -45,19 +46,7 @@ internal class CompositionLayer( override val name: String? = null - override var painterProperties: PainterProperties? - get() = super.painterProperties - set(value) { - super.painterProperties = value - - if (value != null) { - composition.animation.chars.forEach { - it.data.onCreate(composition, value) - } - } - } - - override fun loadLayers(): List { + override fun compose(state: AnimationState): List { return composition.animation.layers } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 982e1ff0..b761361f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -89,10 +89,6 @@ internal class ImageLayer( blendMode = this@ImageLayer.blendMode.asComposeBlendMode() } - private val asset : ImageAsset? by lazy { - painterProperties?.assets?.get(refId) as? ImageAsset - } - private val effectState by lazy { LayerEffectsState() } @@ -106,7 +102,7 @@ internal class ImageLayer( dynamic = state.dynamic?.get(it) as? DynamicImageLayerProvider } - val asset = asset ?: return null + val asset = state.assets.get(refId) as? ImageAsset ?: return null val image = dynamic?.image?.invoke(state, asset.spec) ?: return asset asset.setBitmap(image) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index a6eb0ae1..2b4d9cd9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -57,8 +57,6 @@ internal sealed interface Layer : DrawingContent { val effectsApplier : LayerEffectsApplier - var painterProperties : PainterProperties? - var resolvingPath : ResolvingPath? } @@ -76,9 +74,5 @@ internal fun ResolvingPath.resolveOrNull(child: String?) : ResolvingPath? = internal val Layer.isContainerLayer get() = name == "__container" -internal class PainterProperties( - val assets: Map = emptyMap(), -) - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index fdaf6886..ac9d4fef 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.layers +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.assets.PrecompositionAsset import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -83,8 +84,7 @@ internal class PrecompositionLayer( override val collapseTransform: BooleanInt = BooleanInt.No ) : BaseCompositionLayer() { - override fun loadLayers(): List { - return (painterProperties?.assets?.get(refId) as? PrecompositionAsset?) - ?.layers.orEmpty() + override fun compose(state: AnimationState): List { + return (state.assets[refId] as? PrecompositionAsset?)?.layers.orEmpty() } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 229ddecf..6f31c795 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -9,6 +9,7 @@ import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroup +import io.github.alexzhirkevich.compottie.internal.content.ContentGroupImpl import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.helpers.LottieBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform @@ -87,12 +88,6 @@ internal class ShapeLayer( val shapes: List = emptyList(), ) : BaseLayer() { - init { - shapes.forEach { - it.layer = this - } - } - @Transient private var dynamicLayer : DynamicLayerProvider? = null set(value) { @@ -107,13 +102,11 @@ internal class ShapeLayer( } @Transient - private val contentGroup = ContentGroup( + private val contentGroup : ContentGroup = ContentGroupImpl( name = name, hidden = { dynamicLayer?.hidden.derive(hidden, it) }, contents = shapes, - transform = shapes.firstInstanceOf()?.apply { - autoOrient = this@ShapeLayer.autoOrient == BooleanInt.Yes - } + transform = shapes.firstInstanceOf() ).apply { setContents(emptyList(), emptyList()) } @@ -133,11 +126,6 @@ internal class ShapeLayer( dynamicLayer = state.dynamic?.get(it) } - (dynamicLayer as? DynamicShapeLayerProvider?)?.let { dp -> - shapes.fastForEach { - it.setDynamicProperties(null, dp) - } - } super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) contentGroup.getBounds(drawScope, boundsMatrix, applyParents, state, outBounds) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 95abb3c8..86a1c7ba 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -95,7 +95,10 @@ internal class SolidColorLayer( @Transient private val rect = MutableRect(0f, 0f, 0f, 0f) - private val color: Color by lazy { + @Transient + private val paint= Paint().apply { + isAntiAlias = true + blendMode = this@SolidColorLayer.blendMode.asComposeBlendMode() val hex = colorHex.substringAfter("#") @@ -106,15 +109,9 @@ internal class SolidColorLayer( chunked.last() } else 255 - Color(red = r, green = g, blue = b, alpha = a) + color = Color(red = r, green = g, blue = b, alpha = a) } - private val paint by lazy { - Paint().apply { - isAntiAlias = true - blendMode = this@SolidColorLayer.blendMode.asComposeBlendMode() - } - } @Transient private val path = Path() @@ -129,7 +126,6 @@ internal class SolidColorLayer( if (hidden) { return } - paint.color = color paint.alpha = (parentAlpha * (transform.opacity?.interpolatedNorm(state)?: 1f)).coerceIn(0f, 1f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index e96ab2bf..0e8e9664 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -1,11 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.DrawStyle import androidx.compose.ui.graphics.drawscope.Fill @@ -15,7 +17,9 @@ import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextMeasurer import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.drawText +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.BaselineShift +import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.sp @@ -36,6 +40,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.text.TextJustify import io.github.alexzhirkevich.compottie.internal.platform.addCodePoint import io.github.alexzhirkevich.compottie.internal.platform.charCount import io.github.alexzhirkevich.compottie.internal.platform.codePointAt +import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isModifier import io.github.alexzhirkevich.compottie.internal.util.toOffset import io.github.alexzhirkevich.compottie.internal.utils.preScale @@ -124,6 +129,7 @@ internal class TextLayer( @Transient private val strokePaint = Paint().apply { isAntiAlias = true + style = PaintingStyle.Stroke } @Transient @@ -166,12 +172,21 @@ internal class TextLayer( canvas.concat(parentMatrix) configurePaint(document, parentAlpha, state) - configureTextStyle(drawScope, document, state) - if (state.composition.fontsByFamily.isEmpty() && state.composition.charGlyphs.isNotEmpty()){ - drawTextWithGlyphs(drawScope, document, state) - } else { + + val hasFontFamily = configureTextStyle(drawScope, document, state) + + if (hasFontFamily) { drawTextWithFonts(state, drawScope, document) + } else { + val glyphs = state.composition.findGlyphs(document.fontFamily) + + if (glyphs != null) { + drawTextWithGlyphs(drawScope, document, state, glyphs) + } else { + drawTextWithFonts(state, drawScope, document) + } } + canvas.restore() } } @@ -247,42 +262,38 @@ internal class TextLayer( drawScope: DrawScope, document: TextDocument, animationState: AnimationState - ) { - - drawScope.run { - val fontSize = document.fontSize.toSp() - val baselineShift = document.baselineShift - ?.let { BaselineShift(it) } - ?: textStyle.baselineShift - - val fontFamily = animationState.composition.fontsByFamily[document.fontFamily] - - val letterSpacing = textAnimation?.style?.letterSpacing - ?.interpolated(animationState)?.toSp() - ?: textStyle.letterSpacing - - val lineSpacing = textAnimation?.style?.lineSpacing - ?.interpolated(animationState) ?: 0f - - val lineHeight = (document.lineHeight + lineSpacing).toSp() - - if ( - textStyle.fontSize != fontSize || - textStyle.baselineShift != baselineShift || - textStyle.lineHeight != lineHeight || - textStyle.fontFamily != fontFamily || - textStyle.letterSpacing != letterSpacing - ) { - textStyle = textStyle.copy( - baselineShift = baselineShift, - fontSize = fontSize, - lineHeight = lineHeight, - fontFamily = fontFamily, - letterSpacing = letterSpacing, - color = Color.Red - ) - } + ) : Boolean = drawScope.run { + val fontSize = document.fontSize.toSp() + val baselineShift = document.baselineShift + ?.let { BaselineShift(it) } + ?: textStyle.baselineShift + + val fontFamily = animationState.composition.findFont(document.fontFamily) + + val letterSpacing = textAnimation?.style?.letterSpacing + ?.interpolated(animationState)?.toSp() + ?: textStyle.letterSpacing + + val lineHeight = document.lineHeight.toSp() + + if ( + textStyle.fontSize != fontSize || + textStyle.baselineShift != baselineShift || + textStyle.lineHeight != lineHeight || + textStyle.fontFamily != fontFamily || + textStyle.letterSpacing != letterSpacing + ) { + textStyle = textStyle.copy( + baselineShift = baselineShift, + fontSize = fontSize, + lineHeight = lineHeight, + fontFamily = fontFamily, + letterSpacing = letterSpacing, + color = Color.Red + ) } + + fontFamily != null } private fun getTextMeasurer(state: AnimationState, density: Density, layoutDirection: LayoutDirection): TextMeasurer { @@ -305,7 +316,11 @@ internal class TextLayer( return tm } - private fun drawTextWithFonts(state: AnimationState, drawScope: DrawScope, document: TextDocument) { + private fun drawTextWithFonts( + state: AnimationState, + drawScope: DrawScope, + document: TextDocument + ) { val measurer = getTextMeasurer(state, drawScope, drawScope.layoutDirection) var tracking = document.textTracking?.div(10f) ?: 0f @@ -329,7 +344,7 @@ internal class TextLayer( lines.fastForEachIndexed { idx, line -> canvas.save() - if (offsetCanvas(state, canvas, document, alLinesIdx + idx, line.width)) { + if (offsetCanvas(state, canvas, document, alLinesIdx + idx, line.width, true)) { drawFontTextLine( line.text, measurer, @@ -348,7 +363,8 @@ internal class TextLayer( private fun drawTextWithGlyphs( drawScope: DrawScope, document: TextDocument, - state: AnimationState + state: AnimationState, + glyphs : Map ) { // Split full text in multiple lines val textLines = getTextLines(document.text ?: return) @@ -358,22 +374,23 @@ internal class TextLayer( val canvas = drawScope.drawContext.canvas - textLines.fastForEachIndexed { lineIndex, line -> + textLines.fastForEachIndexed { outerIndex, line -> val boxWidth = document.wrapSize?.getOrNull(0) ?: 0f val lines = splitGlyphTextIntoLines(measurer, line, boxWidth, tracking); - lines.forEach { l -> - canvas.save(); + lines.forEachIndexed { innerIndex, l -> + canvas.save() - if (offsetCanvas(state, canvas, document, lineIndex, l.width)) { + if (offsetCanvas(state, canvas, document, outerIndex + innerIndex, l.width,false)) { drawGlyphTextLine( text = l.text, state = state, - fontScale = document.fontSize, + fontScale = document.fontSize / 100f, documentData = document, drawScope = drawScope, - tracking = tracking + tracking = tracking, + glyphs = glyphs ) } @@ -488,30 +505,33 @@ internal class TextLayer( canvas: Canvas, document: TextDocument, lineIndex: Int, - lineWidth: Float + lineWidth: Float, + withFonts : Boolean, ): Boolean { - val position = document.wrapPosition?.toOffset() - val size = document.wrapSize?.let { Size(it[0], it[1]) } - val lineStartY = if (position == null) - 0f else document.lineHeight + position.y - val lineOffset: Float = ((lineIndex - 1) * document.lineHeight) + lineStartY + val position = document.wrapPosition?.toOffset() ?: Offset.Zero + val size = document.wrapSize?.let { Size(it[0], it[1]) } ?: Size.Zero - if (state.clipTextToBoundingBoxes && size != null && position != null && - lineOffset >= position.y + size.height + document.fontSize - ) { - return false + val lineSpacing = textAnimation?.style?.lineSpacing?.interpolated(state) ?: 0f + + var lineOffsetY = (lineIndex * (document.lineHeight + lineSpacing)) + position.y + + if (withFonts) { + // compose draws text below the Y. Lottie expects it to be above the Y + lineOffsetY -= document.fontSize } - val lineStart = position?.x ?: 0f - val boxWidth = size?.width ?: 0f + if (state.clipTextToBoundingBoxes && + lineOffsetY >= position.y + size.height + document.fontSize) { + return false + } when (document.textJustify) { - TextJustify.Left -> canvas.translate(lineStart, lineOffset) - TextJustify.Right -> canvas.translate(lineStart + boxWidth - lineWidth, lineOffset) + TextJustify.Left -> canvas.translate(position.x, lineOffsetY) + TextJustify.Right -> canvas.translate(position.x + size.width - lineWidth, lineOffsetY) TextJustify.Center -> canvas.translate( - lineStart + boxWidth / 2f - lineWidth / 2f, - lineOffset + position.x + size.width / 2f - lineWidth / 2f, + lineOffsetY ) } return true @@ -531,7 +551,6 @@ internal class TextLayer( val charString: String = codePointToString(text, i) i += charString.length - val measureResult = textMeasurer.measure(charString, textStyle) drawCharacterFromFont(measureResult, documentData, drawScope) @@ -547,13 +566,13 @@ internal class TextLayer( documentData: TextDocument, fontScale: Float, drawScope: DrawScope, - tracking: Float + tracking: Float, + glyphs: Map ) { val canvas = drawScope.drawContext.canvas text.forEach { c -> - val character = state.composition.charGlyphs - .get(documentData.fontFamily) - ?.get(c.toString()) ?: return@forEach + + val character = glyphs[c.toString()] ?: return@forEach drawCharacterAsGlyph(drawScope, state, character, fontScale, documentData) val tx = (character.width ?: 0f) * fontScale + tracking @@ -571,7 +590,7 @@ internal class TextLayer( matrix.reset(); matrix.preTranslate(0f, -(document.baselineShift ?: 0f)) matrix.preScale(fontScale, fontScale); - character.data.draw(drawScope, state, matrix, strokePaint, fillPaint) + character.data?.draw(drawScope, state, matrix, strokePaint, fillPaint) } private fun codePointToString(text: String, startIndex: Int): String { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index c5091f34..051a6906 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -102,7 +102,6 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { strokeMiterLimit = strokeMiter strokeCap = lineCap.asStrokeCap() strokeJoin = lineJoin.asStrokeJoin() - blendMode = layer.blendMode.asComposeBlendMode() } } private val pm = ExtendedPathMeasure() @@ -148,6 +147,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { return } + paint.blendMode = state.layer.blendMode.asComposeBlendMode() paint.style = PaintingStyle.Stroke getBounds(drawScope, parentMatrix, false, state, boundsRect) @@ -169,7 +169,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { applyDashPatternIfNeeded(parentMatrix, state) - layer.effectsApplier.applyTo(paint, state, effectsState) + state.layer.effectsApplier.applyTo(paint, state, effectsState) roundShape?.applyTo(paint, state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index e59687d7..fef6d607 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -46,9 +46,6 @@ internal class EllipseShape( val size : AnimatedVector2, ) : Shape, PathContent { - @Transient - override lateinit var layer: Layer - @Transient private val path = Path() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 47c4a20c..c328621a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -58,9 +58,6 @@ internal class FillShape( ) : Shape, DrawingContent { - @Transient - override lateinit var layer: Layer - @Transient private val path = Path().apply { fillRule?.asPathFillType()?.let { @@ -112,7 +109,7 @@ internal class FillShape( roundShape?.applyTo(paint, state) - layer.effectsApplier.applyTo(paint, state, effectsState) + state.layer.effectsApplier.applyTo(paint, state, effectsState) path.reset() paths.fastForEach { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 4a43b369..98e049a1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -80,8 +80,6 @@ internal class GradientFillShape( val fillRule : FillRule? = null, ) : Shape, DrawingContent { - @Transient - override lateinit var layer: Layer @Transient private val path = Path().apply { @@ -96,13 +94,11 @@ internal class GradientFillShape( @Transient private var paths: List = emptyList() - private val paint by lazy { - Paint().apply { - isAntiAlias = true - blendMode = layer.blendMode.asComposeBlendMode() - } + private val paint= Paint().apply { + isAntiAlias = true } + @Transient private var dynamicFill : DynamicFillProvider? = null @Transient @@ -117,8 +113,11 @@ internal class GradientFillShape( private val effectsState by lazy { LayerEffectsState() } + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { + paint.blendMode = state.layer.blendMode.asComposeBlendMode() + if (dynamicShape?.hidden.derive(hidden, state)) { return } @@ -147,7 +146,7 @@ internal class GradientFillShape( gradientCache = gradientCache ) - layer.effectsApplier.applyTo(paint, state, effectsState) + state.layer.effectsApplier.applyTo(paint, state, effectsState) path.reset() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index ef7c1511..c3cfce19 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -70,8 +70,7 @@ internal class GradientStrokeShape( val type : GradientType = GradientType.Linear ) : BaseStrokeShape(), Shape { - @Transient - override lateinit var layer: Layer + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index bbed45c1..f6e99398 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -1,17 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.shapes -import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider -import io.github.alexzhirkevich.compottie.dynamic.LayerPathSeparator import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.content.ContentGroupImpl import io.github.alexzhirkevich.compottie.internal.content.ContentGroup -import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.layers.Layer -import io.github.alexzhirkevich.compottie.internal.layers.NullLayer import io.github.alexzhirkevich.compottie.internal.utils.firstInstanceOf import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -33,22 +28,12 @@ internal class GroupShape( @SerialName("it") val items : List = emptyList(), -) : Shape, ContentGroupBase by ContentGroup( +) : Shape, ContentGroup by ContentGroupImpl( name = name, hidden = { hidden }, contents = items, transform = items.firstInstanceOf() ) { - @Transient - override var layer: Layer = NullLayer() - set(value) { - field = value - items.forEach { - it.layer = value - } - - transform?.autoOrient = value.autoOrient == BooleanInt.Yes - } @Transient private var dynamicShape : DynamicShapeProvider? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 53ab01d8..19fbc240 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -3,19 +3,15 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathOperation import androidx.compose.ui.util.fastForEach -import androidx.compose.ui.util.fastForEachIndexed -import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.content.ContentGroupBase import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.layers.Layer +import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -52,9 +48,6 @@ internal class MergePathsShape( val mode : MergeMode = MergeMode.Normal ) : Shape, GreedyContent, PathContent { - @Transient - override lateinit var layer: Layer - @Transient private val path = Path() @@ -76,7 +69,7 @@ internal class MergePathsShape( val hidden = dynamicShape?.hidden.derive(hidden, state) - if (hidden || mode == MergeMode.Normal){ + if (hidden || mode == MergeMode.Normal || !state.enableMergePaths){ pathContents.fastForEach { path.addPath(it.getPath(state)) } @@ -127,35 +120,17 @@ internal class MergePathsShape( remainderPath.reset() firstPath.reset() - for (i in pathContents.size - 1 downTo 1) { - val content = pathContents[i] - - if (content is ContentGroupBase) { - content.pathContents.fastForEachReversed { path -> - val p = path.getPath(state) - content.transform?.matrix(state) - ?.let(p::transform) - remainderPath.addPath(p) - } - } else { - remainderPath.addPath(content.getPath(state)) - } - } + path.reset() - val lastContent = pathContents[0] - if (lastContent is ContentGroupBase) { - lastContent.pathContents.fastForEach { - val p = it.getPath(state) -// lastContent.transform?.matrix(state)?.let(p::transform) - firstPath.addPath(p) - } - } else { - firstPath.set(lastContent.getPath(state)) + if (pathContents.isEmpty()) + return + + for (i in pathContents.size - 1 downTo 1) { + remainderPath.addPath(pathContents[i].getPath(state)) } + firstPath.set(pathContents[0].getPath(state)) -// firstPath.reset() -// firstPath.addRect(bounds) path.op(firstPath, remainderPath, op) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 0a43f484..1c580521 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -34,8 +34,7 @@ internal class PathShape( val shape : AnimatedShape ) : Shape, PathContent { - @Transient - override lateinit var layer: Layer + @Transient private var trimPaths : CompoundTrimPath? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index ed2a3889..e305b05e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -82,8 +82,7 @@ internal class PolystarShape( val starType : StarType, ) : Shape, PathContent { - @Transient - override lateinit var layer: Layer + @Transient private val path = Path() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index d5cfb939..c2f7bae5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -50,8 +50,7 @@ internal class RectShape( val roundedCorners : AnimatedNumber? = null, ) : Shape, PathContent { - @Transient - override lateinit var layer: Layer + @Transient private val path = Path() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 9ac2bf6c..7b1893dc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -7,7 +7,6 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.lerp import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider -import io.github.alexzhirkevich.compottie.dynamic.PropertyProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState @@ -16,11 +15,10 @@ import io.github.alexzhirkevich.compottie.internal.animation.RepeaterTransform import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.ContentGroup +import io.github.alexzhirkevich.compottie.internal.content.ContentGroupImpl import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.preConcat import kotlinx.serialization.SerialName @@ -50,9 +48,6 @@ internal class RepeaterShape( override val hidden: Boolean = false ) : Shape, GreedyContent, DrawingContent, PathContent { - @Transient - override lateinit var layer: Layer - @Transient private var contentGroup: ContentGroup? = null @@ -140,7 +135,7 @@ internal class RepeaterShape( contents.removeFirst() } - contentGroup = ContentGroup( + contentGroup = ContentGroupImpl( name = name, hidden = { dynamicHidden?.hidden.derive(hidden, it) }, contents = contentsList, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index 4a525784..f447c8f2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -29,8 +29,7 @@ internal class RoundShape( val radius : AnimatedNumber, ) : Shape { - @Transient - override lateinit var layer: Layer + @Transient private var dynamicShape : DynamicShapeProvider? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index 23dde095..f3db7f3e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonClassDiscriminator @@ -15,8 +14,6 @@ internal sealed interface Shape : Content { val hidden : Boolean - var layer : Layer - fun setDynamicProperties(basePath: String?, properties : DynamicShapeLayerProvider) {} @Serializable @@ -25,11 +22,6 @@ internal sealed interface Shape : Content { override val matchName: String? get() = null override val hidden: Boolean get() = true - override var layer: Layer - get() = error("Unsupported shape doesn't have layer") - set(value) {} - override fun setContents(contentsBefore: List, contentsAfter: List) {} } } - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index b0a033f9..6843417e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -51,8 +51,7 @@ internal class SolidStrokeShape( val color : AnimatedColor, ) : BaseStrokeShape(), Shape { - @Transient - override lateinit var layer: Layer + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { paint.color = color.interpolated(state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index 6813c1b7..11b28c4c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -50,8 +50,7 @@ internal class TransformShape( override val skewAxis: AnimatedNumber? = null, ) : AnimatedTransform(), Shape, ModifierContent { - @Transient - override lateinit var layer: Layer + @Transient private var dynamicShape : DynamicShapeProvider? = null diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt index 7bb79ece..660ff2e2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt @@ -42,8 +42,7 @@ internal class TrimPathShape( val type : TrimPathType = TrimPathType.Simultaneously ) : Shape { - @Transient - override lateinit var layer: Layer + @Transient private var dynamicShape : DynamicShapeProvider? = null diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index fbda4c23..e69de29b 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1 +0,0 @@ -{"v":"5.6.5","fr":30,"ip":0,"op":300,"w":160,"h":160,"nm":"Comp 1","ddd":0,"assets":[],"fonts":{"list":[{"origin":1,"fPath":"","fClass":"","fFamily":"Product Sans","fWeight":"","fStyle":"Regular","fName":"ProductSans-Regular","ascent":71.5988159179688}]},"layers":[{"ddd":0,"ind":1,"ty":5,"nm":"Text","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[80,80,0],"ix":2},"a":{"a":0,"k":[0.216,-12.312,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"t":{"d":{"x":"var $bm_rt;\nvar beginCount, stopCount, beginTime, countDur;\nbeginCount = thisComp.layer('Counter (Invisible)').effect('Slider Control')('Slider');\nstopCount = thisComp.layer('Counter (Invisible)').effect('Slider Control')('Slider');\nbeginTime = 0;\ncountDur = 5;\n$bm_rt = $bm_sum(Math.round(linear(time, beginTime, $bm_sum(beginTime, countDur), beginCount, stopCount)), '%');","k":[{"s":{"s":36,"f":"ProductSans-Regular","t":"","j":2,"tr":0,"lh":43.2,"ls":0,"fc":[0,0.569,1]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Counter (Invisible)","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[94.25,74.25,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":5,"nm":"Slider Control","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[100]}],"ix":1}}]}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Meter","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[80,80,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"d":1,"ty":"el","s":{"a":0,"k":[152,152],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":299,"s":[100]}],"ix":2,"x":"var $bm_rt;\n$bm_rt = thisComp.layer('Counter (Invisible)').effect('Slider Control')('Slider');"},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0.568627476692,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Background","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[80,80,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"d":1,"ty":"el","s":{"a":0,"k":[152,152],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.96862745285,0.96862745285,0.96862745285,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":300,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/text.json b/example/shared/src/commonMain/composeResources/files/text.json index 46b3b1dc..6be3da1c 100644 --- a/example/shared/src/commonMain/composeResources/files/text.json +++ b/example/shared/src/commonMain/composeResources/files/text.json @@ -1 +1,77 @@ -{"v":"5.5.2","fr":60,"ip":0,"op":120,"w":300,"h":100,"ddd":0,"assets":[],"fonts":{"list":[{"fPath":"https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf","fFamily":"Ubuntu","fStyle":"Light Italic","fName":"Ubuntu Light Italic","origin":3}]},"layers":[{"nm":"Text Layer","ty":5,"sr":1,"ks":{"p":{"k":[5,80],"a":0}},"ip":0,"op":120,"st":0,"t":{"a":[],"d":{"k":[{"s":{"f":"Ubuntu Light Italic","fc":[0,0,0],"s":100,"t":"Hello","j":0,"sc":[0,0,0],"sw":0},"t":0}]},"m":{"a":{"k":[0,0],"a":0}},"p":{}}}]} \ No newline at end of file +{ + "v": "5.5.2", + "fr": 60, + "ip": 0, + "op": 120, + "w": 300, + "h": 100, + "ddd": 0, + "assets": [], + "fonts": { + "list": [ + { + "fPath": "https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf", + "fFamily": "Ubuntu", + "fStyle": "Light Italic", + "fName": "Ubuntu Light Italic", + "origin": 3 + } + ] + }, + "layers": [ + { + "nm": "Text Layer", + "ty": 5, + "sr": 1, + "ks": { + "p": { + "k": [ + 5, + 80 + ], + "a": 0 + } + }, + "ip": 0, + "op": 120, + "st": 0, + "t": { + "a": [], + "d": { + "k": [ + { + "s": { + "f": "Ubuntu Light Italic", + "fc": [ + 0, + 0, + 0 + ], + "s": 100, + "t": "Hello", + "j": 0, + "sc": [ + 0, + 0, + 0 + ], + "sw": 0 + }, + "t": 0 + } + ] + }, + "m": { + "a": { + "k": [ + 0, + 0 + ], + "a": 0 + } + }, + "p": {} + } + } + ] +} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/text_glyphs.json b/example/shared/src/commonMain/composeResources/files/text_glyphs.json new file mode 100644 index 00000000..415df42d --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/text_glyphs.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE ","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":121,"w":1080,"h":1080,"nm":"Merge Circles","ddd":0,"assets":[],"fonts":{"list":[{"fName":"Lato-Black","fFamily":"Lato","fStyle":"Black","ascent":74.8992919921875}]},"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Center Parent","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":65,"s":[100,100,100]},{"t":85,"s":[150,150,100]}],"ix":6}},"ao":0,"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":5,"nm":"Center Text","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":43,"s":[0]},{"t":60,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[-0.18,15.81,0],"ix":1},"s":{"a":0,"k":[75,75,100],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":120,"f":"Lato-Black","t":"DATA\rCENTER","j":2,"tr":0,"lh":120,"ls":0,"fc":[0.282,0.145,0.667]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Mask","parent":1,"td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":17,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[-300.817,2.333,0],"to":[0,0,0],"ti":[0,0,0]},{"t":60,"s":[0,0,0]}],"ix":2},"a":{"a":0,"k":[866.252,588.683,0],"ix":1},"s":{"a":0,"k":[75,75,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[638.633,638.633],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.839215755463,0.349019616842,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[866.252,588.683],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Center Circle","parent":1,"tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":17,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[301.732,-2.333,0],"to":[0,0,0],"ti":[0,0,0]},{"t":60,"s":[0,0,0]}],"ix":2},"a":{"a":0,"k":[1075.674,582.462,0],"ix":1},"s":{"a":0,"k":[75,75,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[638.633,638.633],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1075.674,582.462],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":5,"nm":"Left Text","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":17,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[866.252,588.683,0],"ix":2},"a":{"a":0,"k":[-0.18,-43.71,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":120,"f":"Lato-Black","t":"CLOUD","j":2,"tr":0,"lh":144,"ls":0,"fc":[1,1,1]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Left Circle","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":17,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[239.183,542.333,0],"to":[0,0,0],"ti":[0,0,0]},{"t":60,"s":[540,540,0]}],"ix":2},"a":{"a":0,"k":[866.252,588.683,0],"ix":1},"s":{"a":0,"k":[75,75,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[638.633,638.633],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.835294187069,0.06274510175,0.431372582912,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[866.252,588.683],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":5,"nm":"Right Text","parent":8,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":17,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1075.674,582.462,0],"ix":2},"a":{"a":0,"k":[-0.18,-43.71,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"t":{"d":{"k":[{"s":{"s":120,"f":"Lato-Black","t":"DATA","j":2,"tr":0,"lh":144,"ls":0,"fc":[1,1,1]},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Right Circle","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":17,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[841.732,537.667,0],"to":[0,0,0],"ti":[0,0,0]},{"t":60,"s":[540,540,0]}],"ix":2},"a":{"a":0,"k":[1075.674,582.462,0],"ix":1},"s":{"a":0,"k":[75,75,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[638.633,638.633],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235354424,0.68235296011,0.164705887437,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1075.674,582.462],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":121,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Background","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1080,1080],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.282352954149,0.145098045468,0.666666686535,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":121,"st":0,"bm":0}],"markers":[],"chars":[{"ch":"D","size":120,"style":"Black","w":74.2,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.816,4.45],[3.3,3.234],[4.65,1.834],[5.666,0],[0,0],[0,0],[0,0],[-4.65,1.817],[-3.3,3.25],[-1.817,4.45],[0,5.267]],"o":[[-1.817,-4.45],[-3.3,-3.233],[-4.65,-1.833],[0,0],[0,0],[0,0],[5.666,0],[4.65,-1.816],[3.3,-3.25],[1.816,-4.45],[0,-5.233]],"v":[[69.375,-50.975],[61.7,-62.5],[49.775,-70.1],[34.3,-72.85],[6,-72.85],[6,0],[34.3,0],[49.775,-2.725],[61.7,-10.325],[69.375,-21.875],[72.1,-36.45]],"c":true},"ix":2},"nm":"D","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.933,-2.9],[1.75,-2.016],[2.533,-1.083],[3.233,0],[0,0],[0,0],[0,0],[-2.534,-1.083],[-1.75,-2.016],[-0.934,-2.9],[0,-3.6]],"o":[[-0.934,2.9],[-1.75,2.017],[-2.534,1.084],[0,0],[0,0],[0,0],[3.233,0],[2.533,1.084],[1.75,2.017],[0.933,2.9],[0,3.634]],"v":[[53.4,-26.65],[49.375,-19.275],[42.95,-14.625],[34.3,-13],[23,-13],[23,-59.85],[34.3,-59.85],[42.95,-58.225],[49.375,-53.575],[53.4,-46.2],[54.8,-36.45]],"c":true},"ix":2},"nm":"D","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"D","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"A","size":120,"style":"Black","w":73.7,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.967,0.75],[-0.334,0.934],[0,0],[0,0],[0,0],[-0.95,-0.683],[-1.467,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.4,0],[0.966,-0.75],[0,0],[0,0],[0,0],[0.366,1.067],[0.95,0.684],[0,0],[0,0]],"v":[[45.6,-72.85],[28.3,-72.85],[0.1,0],[13.3,0],[16.85,-1.125],[18.8,-3.65],[23.1,-16.35],[50.8,-16.35],[55.1,-3.65],[57.075,-1.025],[60.7,0],[73.8,0]],"c":true},"ix":2},"nm":"A","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.567,1.734],[-0.534,2.034],[-0.584,-1.716],[-0.434,-1.266],[0,0],[0,0]],"o":[[0.5,-1.266],[0.566,-1.733],[0.566,2],[0.583,1.717],[0,0],[0,0],[0,0]],"v":[[33.7,-47.7],[35.3,-52.2],[36.95,-57.85],[38.675,-52.275],[40.2,-47.8],[46.9,-27.85],[27,-27.85]],"c":true},"ix":2},"nm":"A","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"A","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"T","size":120,"style":"Black","w":59.9,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[1,-72.85],[1,-59.45],[21.5,-59.45],[21.5,0],[38.4,0],[38.4,-59.45],[58.9,-59.45],[58.9,-72.85]],"c":true},"ix":2},"nm":"T","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"T","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"C","size":120,"style":"Black","w":65.7,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.466,-0.216],[0.4,-0.333],[0.983,-0.583],[1.083,-0.366],[1.266,-0.15],[1.533,0],[2.333,1.034],[1.75,1.984],[1.016,2.9],[0,3.734],[-1.017,2.867],[-1.817,2.017],[-2.534,1.084],[-3.067,0],[-1.317,-0.266],[-0.984,-0.383],[-0.717,-0.45],[-0.6,-0.383],[-0.534,-0.266],[-0.6,0],[-0.5,0.384],[-0.367,0.467],[0,0],[1.766,1.184],[2.1,0.85],[2.416,0.484],[2.733,0],[4.666,-1.833],[3.35,-3.3],[1.866,-4.55],[0,-5.433],[-1.634,-4.55],[-3.05,-3.316],[-4.384,-1.883],[-5.534,0],[-4.417,1.95],[-2.934,3.834],[0,0],[0.4,0.15],[0.4,0]],"o":[[-0.467,0.217],[-1,0.867],[-0.984,0.584],[-1.084,0.367],[-1.267,0.15],[-2.667,0],[-2.334,-1.033],[-1.75,-1.983],[-1.017,-2.9],[0,-3.566],[1.016,-2.866],[1.816,-2.016],[2.533,-1.083],[1.766,0],[1.316,0.267],[0.983,0.384],[0.716,0.45],[0.6,0.384],[0.533,0.267],[0.9,0],[0.5,-0.383],[0,0],[-1.367,-1.433],[-1.767,-1.183],[-2.1,-0.85],[-2.417,-0.483],[-5.634,0],[-4.667,1.834],[-3.35,3.3],[-1.867,4.55],[0,5.334],[1.633,4.55],[3.05,3.317],[4.383,1.884],[6.033,0],[4.416,-1.95],[0,0],[-0.367,-0.366],[-0.4,-0.15],[-0.5,0]],"v":[[53.5,-18.525],[52.2,-17.7],[49.225,-15.525],[46.125,-14.1],[42.6,-13.325],[38.4,-13.1],[30.9,-14.65],[24.775,-19.175],[20.625,-26.5],[19.1,-36.45],[20.625,-46.1],[24.875,-53.425],[31.4,-58.075],[39.8,-59.7],[44.425,-59.3],[47.875,-58.325],[50.425,-57.075],[52.4,-55.825],[54.1,-54.85],[55.8,-54.45],[57.9,-55.025],[59.2,-56.3],[64.9,-63.95],[60.2,-67.875],[54.4,-70.925],[47.625,-72.925],[39.9,-73.65],[24.45,-70.9],[12.425,-63.2],[4.6,-51.425],[1.8,-36.45],[4.25,-21.625],[11.275,-9.825],[22.425,-2.025],[37.3,0.8],[52.975,-2.125],[64,-10.8],[57.3,-17.85],[56.15,-18.625],[54.95,-18.85]],"c":true},"ix":2},"nm":"C","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"C","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"L","size":120,"style":"Black","w":51.9,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.9,-72.85],[6,-72.85],[6,0],[49.9,0],[49.9,-13.5],[22.9,-13.5]],"c":true},"ix":2},"nm":"L","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"L","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"O","size":120,"style":"Black","w":80,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.816,4.534],[3.3,3.334],[4.65,1.917],[5.666,0],[4.666,-1.9],[3.316,-3.333],[1.816,-4.533],[0,-5.266],[-1.817,-4.533],[-3.317,-3.35],[-4.667,-1.9],[-5.667,0],[-4.65,1.9],[-3.3,3.35],[-1.817,4.534],[0,5.267]],"o":[[-1.817,-4.533],[-3.3,-3.333],[-4.65,-1.916],[-5.667,0],[-4.667,1.9],[-3.317,3.334],[-1.817,4.534],[0,5.267],[1.816,4.534],[3.316,3.35],[4.666,1.9],[5.666,0],[4.65,-1.9],[3.3,-3.35],[1.816,-4.533],[0,-5.233]],"v":[[75.175,-51.1],[67.5,-62.9],[55.575,-70.775],[40.1,-73.65],[24.6,-70.8],[12.625,-62.95],[4.925,-51.15],[2.2,-36.45],[4.925,-21.75],[12.625,-9.925],[24.6,-2.05],[40.1,0.8],[55.575,-2.05],[67.5,-9.925],[75.175,-21.75],[77.9,-36.45]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.933,-2.883],[1.75,-2],[2.533,-1.05],[3.233,0],[2.55,1.05],[1.75,2],[0.933,2.884],[0,3.634],[-0.934,2.884],[-1.75,2],[-2.55,1.067],[-3.267,0],[-2.534,-1.066],[-1.75,-2],[-0.934,-2.883],[0,-3.6]],"o":[[-0.934,2.884],[-1.75,2],[-2.534,1.05],[-3.267,0],[-2.55,-1.05],[-1.75,-2],[-0.934,-2.883],[0,-3.6],[0.933,-2.883],[1.75,-2],[2.55,-1.066],[3.233,0],[2.533,1.067],[1.75,2],[0.933,2.884],[0,3.634]],"v":[[59.2,-26.675],[55.175,-19.35],[48.75,-14.775],[40.1,-13.2],[31.375,-14.775],[24.925,-19.35],[20.9,-26.675],[19.5,-36.45],[20.9,-46.175],[24.925,-53.5],[31.375,-58.1],[40.1,-59.7],[48.75,-58.1],[55.175,-53.5],[59.2,-46.175],[60.6,-36.45]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"O","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"U","size":120,"style":"Black","w":72.6,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.783,0.75],[1.233,1.417],[0.65,2.017],[0,2.567],[0,0],[0,0],[0,0],[-1.434,-3.733],[-2.7,-2.7],[-3.867,-1.5],[-4.867,0],[-3.867,1.5],[-2.7,2.7],[-1.45,3.734],[0,4.467],[0,0],[0,0],[0,0],[0.65,-2.016],[1.233,-1.4],[1.783,-0.75],[2.266,0]],"o":[[-1.784,-0.75],[-1.234,-1.416],[-0.65,-2.016],[0,0],[0,0],[0,0],[0,4.467],[1.433,3.734],[2.7,2.7],[3.866,1.5],[4.833,0],[3.866,-1.5],[2.7,-2.7],[1.45,-3.733],[0,0],[0,0],[0,0],[0,2.567],[-0.65,2.017],[-1.234,1.4],[-1.784,0.75],[-2.267,0]],"v":[[30.225,-14.475],[25.7,-17.725],[22.875,-22.875],[21.9,-29.75],[21.9,-72.85],[5,-72.85],[5,-29.7],[7.15,-17.4],[13.35,-7.75],[23.2,-1.45],[36.3,0.8],[49.35,-1.45],[59.2,-7.75],[65.425,-17.4],[67.6,-29.7],[67.6,-72.85],[50.7,-72.85],[50.7,-29.7],[49.725,-22.825],[46.9,-17.7],[42.375,-14.475],[36.3,-13.35]],"c":true},"ix":2},"nm":"U","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"U","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"\r","size":120,"style":"Black","w":0,"fFamily":"Lato"},{"ch":"E","size":120,"style":"Black","w":56.5,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6,-72.85],[6,0],[52.9,0],[52.9,-13],[23,-13],[23,-30.35],[45.9,-30.35],[45.9,-42.85],[23,-42.85],[23,-59.85],[52.9,-59.85],[52.9,-72.85]],"c":true},"ix":2},"nm":"E","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"E","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"N","size":120,"style":"Black","w":75.6,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.733,0],[0,0],[0,0],[0,0],[0,0],[0.066,1.217],[0.1,1.267],[0,0],[-0.9,-0.4],[-1.3,0],[0,0],[0,0],[0,0],[0,0],[-0.067,-1.316],[-0.134,-1.4],[0,0],[0.366,0.334],[0.4,0.184],[0.5,0.067]],"o":[[0,0],[0,0],[0,0],[0,0],[0,-1.066],[-0.067,-1.216],[0,0],[0.833,1.067],[0.9,0.4],[0,0],[0,0],[0,0],[0,0],[0,1.167],[0.066,1.317],[0,0],[-0.467,-0.566],[-0.367,-0.333],[-0.4,-0.183],[-0.5,-0.066]],"v":[[14.9,-72.85],[6,-72.85],[6,0],[20.9,0],[20.9,-39.05],[20.8,-42.475],[20.55,-46.2],[54.9,-2.8],[57.5,-0.6],[60.8,0],[69.6,0],[69.6,-72.85],[54.7,-72.85],[54.7,-34.3],[54.8,-30.575],[55.1,-26.5],[20.5,-70.25],[19.25,-71.6],[18.1,-72.375],[16.75,-72.75]],"c":true},"ix":2},"nm":"N","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"N","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"},{"ch":"R","size":120,"style":"Black","w":66.5,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.717,-0.4],[-0.534,-0.933],[0,0],[-2.834,0],[0,0],[0,0],[0.983,0.834],[1.133,0.567],[-1.817,1.4],[-1.25,1.784],[-0.634,2.1],[0,2.367],[1.066,2.634],[2.35,1.934],[3.716,1.084],[5.266,0],[0,0],[0,0],[0,0],[0,0]],"o":[[1.3,0],[0.716,0.4],[0,0],[1.233,2.134],[0,0],[0,0],[-0.734,-1.2],[-0.984,-0.833],[2.366,-0.9],[1.816,-1.4],[1.25,-1.783],[0.633,-2.1],[0,-3.1],[-1.067,-2.633],[-2.35,-1.933],[-3.717,-1.083],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[27.2,-26.95],[30.225,-26.35],[32.1,-24.35],[44.2,-3.2],[50.3,0],[65.6,0],[50.1,-25.35],[47.525,-28.4],[44.35,-30.5],[50.625,-33.95],[55.225,-38.725],[58.05,-44.55],[59,-51.25],[57.4,-59.85],[52.275,-66.7],[43.175,-71.225],[29.7,-72.85],[6,-72.85],[6,0],[22.9,0],[22.9,-26.95]],"c":true},"ix":2},"nm":"R","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.084,-1.8],[0,-3.2],[0.466,-1.383],[1.033,-1.033],[1.616,-0.583],[2.3,0],[0,0]],"o":[[0,0],[4.366,0],[2.083,1.8],[0,1.6],[-0.467,1.384],[-1.034,1.034],[-1.617,0.584],[0,0],[0,0]],"v":[[22.9,-60.2],[29.7,-60.2],[39.375,-57.5],[42.5,-50],[41.8,-45.525],[39.55,-41.9],[35.575,-39.475],[29.7,-38.6],[22.9,-38.6]],"c":true},"ix":2},"nm":"R","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"R","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Lato"}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/text_offset.json b/example/shared/src/commonMain/composeResources/files/text_offset.json new file mode 100644 index 00000000..e6050a2f --- /dev/null +++ b/example/shared/src/commonMain/composeResources/files/text_offset.json @@ -0,0 +1 @@ +{"v": "5.9.0", "fr": 24, "ip": 0, "op": 192, "w": 375, "h": 640, "nm": "003_02", "ddd": 0, "assets": [{"id": "comp_0", "nm": "Fillpping coin_01", "fr": 24, "layers": [{"ddd": 0, "ind": 1, "ty": 4, "nm": "Shape Layer 16", "td": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [197.246, 320, 0], "to": [-1.708, 0, 0], "ti": [1.708, 0, 0]}, {"t": 49, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 2, "ty": 4, "nm": "Shape Layer 14", "tt": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.155, "y": 1}, "o": {"x": 0.84, "y": 0}, "t": 46, "s": [146.262, 246.355, 0], "to": [13.875, 24.583, 0], "ti": [-13.875, -24.583, 0]}, {"t": 58, "s": [229.512, 393.855, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-16.488, -41.145, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[81.726, -15.73], [81.774, 35.98], [-81.652, 123.48], [-81.701, 71.77]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-16.524, -95.02], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 46, "op": 58, "st": 46, "bm": 0}, {"ddd": 0, "ind": 4, "ty": 4, "nm": "Shape Layer 11", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [194.582, 319.805, 0], "to": [-1.264, 0, 0], "ti": [1.264, 0, 0]}, {"t": 49, "s": [187, 319.805, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.028, 72.804, 100]}, {"t": 49, "s": [73.617, 72.804, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 2, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 42, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 5, "ty": 4, "nm": "Shape Layer 3", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.118, "y": 1}, "o": {"x": 0.95, "y": 0}, "t": 35, "s": [197.246, 320, 0], "to": [-1.708, 0, 0], "ti": [1.708, 0, 0]}, {"t": 49, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": -13, "bm": 0}, {"ddd": 0, "ind": 6, "ty": 4, "nm": "Shape Layer 7", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.667, "y": 1}, "o": {"x": 0.333, "y": 0}, "t": 43, "s": [182.301, 320, 0], "to": [-0.886, 0, 0], "ti": [1.339, 0, 0]}, {"t": 46, "s": [187, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.118, 0.118, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.95, 0.95, 0.333], "y": [0, 0, 0]}, "t": 35, "s": [0.038, 98.384, 100]}, {"t": 49, "s": [99.483, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 35, "op": 318, "st": 35, "bm": 0}, {"ddd": 0, "ind": 7, "ty": 4, "nm": "Shape Layer 17", "td": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 320, 0], "to": [-0.701, 0, 0], "ti": [0.701, 0, 0]}, {"t": 35, "s": [182.796, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 8, "ty": 4, "nm": "Shape Layer 12", "tt": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.155, "y": 1}, "o": {"x": 0.84, "y": 0}, "t": 21, "s": [146.262, 246.355, 0], "to": [13.875, 24.583, 0], "ti": [-13.875, -24.583, 0]}, {"t": 31, "s": [229.512, 393.855, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-16.488, -41.145, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[81.726, -15.73], [81.774, 35.98], [-81.652, 123.48], [-81.701, 71.77]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-16.524, -95.02], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 31, "st": 19, "bm": 0}, {"ddd": 0, "ind": 9, "ty": 4, "nm": "Shape Layer 10", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 319.805, 0], "to": [-0.519, 0, 0], "ti": [0.519, 0, 0]}, {"t": 35, "s": [183.889, 319.805, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [73.617, 72.804, 100]}, {"t": 35, "s": [0.028, 72.804, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 2, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 29, "st": 19, "bm": 0}, {"ddd": 0, "ind": 10, "ty": 4, "nm": "Shape Layer 6", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.102, "y": 1}, "o": {"x": 0.913, "y": 0}, "t": 21, "s": [187, 320, 0], "to": [-0.701, 0, 0], "ti": [0.701, 0, 0]}, {"t": 35, "s": [182.796, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.639215686275, 0.862745098039, 0.101960784314, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 11, "ty": 4, "nm": "Shape Layer 1", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.667, "y": 1}, "o": {"x": 0.333, "y": 0}, "t": 23, "s": [187, 320, 0], "to": [0.718, 0, 0], "ti": [0.819, 0, 0]}, {"t": 26, "s": [194.727, 320, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-7.194, 40.355, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.102, 0.102, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.913, 0.913, 0.333], "y": [0, 0, 0]}, "t": 21, "s": [99.483, 98.384, 100]}, {"t": 35, "s": [0.038, 98.384, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-32.529, 0], [0, -32.529], [32.529, 0], [0, 32.529]], "o": [[32.529, 0], [0, 32.529], [-32.529, 0], [0, -32.529]], "v": [[0, -58.9], [58.9, 0], [0, 58.9], [-58.9, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [-7.194, 40.355], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [103.006, 103.006], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Ellipse 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 0, "op": 35, "st": 19, "bm": 0}, {"ddd": 0, "ind": 12, "ty": 4, "nm": "Shape Layer 9", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.5, 320, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [0, 0, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 102.19, 100], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 1, "k": [{"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 27, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.763, -59.32], [4.692, 57.946], [-4.5, 57.946], [-4.429, -59.32]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 28, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.096, -59.32], [4.025, 57.946], [-6.5, 58.004], [-6.429, -59.262]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 29, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[4.929, -59.273], [4.859, 57.993], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 30, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 31, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 33, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.804, -59.22], [5.734, 58.045], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 35, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.278], [8.359, 57.988], [-5.5, 58.027], [-5.429, -59.239]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 36, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-5.875, 58.074], [-5.804, -59.192]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 37, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-5.875, 58.074], [-5.804, -59.192]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 38, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.429, -59.27], [8.359, 57.996], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 39, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[8.054, -59.32], [7.984, 57.946], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 40, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[7.929, -59.254], [7.859, 58.012], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 41, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[7.054, -59.222], [6.984, 58.044], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 42, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[6.554, -59.281], [6.484, 57.985], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"i": {"x": 0.833, "y": 0.833}, "o": {"x": 0.167, "y": 0.167}, "t": 43, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[5.179, -59.276], [5.109, 57.99], [-6.5, 58.046], [-6.429, -59.22]], "c": true}]}, {"t": 44, "s": [{"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[2.179, -59.267], [2.109, 57.999], [-7.875, 57.989], [-7.804, -59.277]], "c": true}]}], "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.227450980392, 0.286274509804, 0.125490196078, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [1.358, 0.548], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 27, "op": 45, "st": 19, "bm": 0}]}], "fonts": {"list": [{"fFamily": "Roboto", "fWeight": "", "fStyle": "Bold", "fName": "Roboto-Bold", "ascent": 75}]}, "layers": [{"ddd": 0, "ind": 1, "ty": 3, "nm": "Null 33", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187, 338.308, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.177, 0.177, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.978, 0.978, 0.333], "y": [0, 0, 0]}, "t": 181, "s": [87, 87, 100]}, {"t": 192, "s": [69, 69, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 2, "ty": 4, "nm": "Star 01 Outlines 6", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 73, "s": [0]}, {"t": 86, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [301.861, 447.036, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 73, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 81, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.266, 0.266, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.85, 0.85, 0.333], "y": [0, 0, 0]}, "t": 96, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.204, 0.204, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.817, 0.817, 0.333], "y": [0, 0, 0]}, "t": 103, "s": [76.55, 76.55, 100]}, {"t": 111, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 73, "op": 112, "st": 60, "bm": 0}, {"ddd": 0, "ind": 3, "ty": 4, "nm": "Star 01 Outlines 5", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 17, "s": [0]}, {"t": 30, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [138.822, 379.597, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 17, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 25, "s": [56.55, 56.55, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 40, "s": [56.55, 56.55, 100]}, {"t": 48, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 17, "op": 52, "st": 0, "bm": 0}, {"ddd": 0, "ind": 4, "ty": 4, "nm": "Star 01 Outlines 8", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 124, "s": [0]}, {"t": 137, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [226.029, 193.863, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 124, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 132, "s": [68.515, 68.515, 100]}, {"i": {"x": [0, 0, 0.667], "y": [1.017, 1.017, 1]}, "o": {"x": [0.679, 0.679, 0.333], "y": [-0.011, -0.011, 0]}, "t": 145, "s": [68.515, 68.515, 100]}, {"i": {"x": [0.08, 0.08, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.705, 0.705, 0.333], "y": [0, 0, 0]}, "t": 151, "s": [75.035, 75.035, 100]}, {"t": 162, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 124, "op": 163, "st": 107, "bm": 0}, {"ddd": 0, "ind": 5, "ty": 4, "nm": "Star 01 Outlines 4", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 1, "k": [{"i": {"x": [0.206], "y": [1]}, "o": {"x": [0.871], "y": [0]}, "t": 9, "s": [0]}, {"t": 22, "s": [180]}], "ix": 10}, "p": {"a": 0, "k": [233.537, 264.983, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [214.794, 59, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 9, "s": [0, 0, 100]}, {"i": {"x": [0.667, 0.667, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.333, 0.333, 0.333], "y": [0, 0, 0]}, "t": 17, "s": [68.515, 68.515, 100]}, {"i": {"x": [0, 0, 0.667], "y": [1.017, 1.017, 1]}, "o": {"x": [0.679, 0.679, 0.333], "y": [-0.011, -0.011, 0]}, "t": 30, "s": [68.515, 68.515, 100]}, {"i": {"x": [0.08, 0.08, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.705, 0.705, 0.333], "y": [0, 0, 0]}, "t": 36, "s": [75.035, 75.035, 100]}, {"t": 47, "s": [0, 0, 100]}], "ix": 6, "l": 2}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[2.909, 14.164], [13.228, -3.377], [-1.576, -0.397], [-1.486, -0.892], [-1.413, -9.293], [-13.687, 2.692]], "o": [[-3.214, 14.29], [2.089, 0.414], [2.467, 0.621], [3.953, 2.35], [2.711, -15.002], [-13.57, -3.467]], "v": [[-0.001, -19], [-17.794, 0], [-12.318, 1.198], [-6.475, 3.359], [-0.001, 19], [17.794, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [1, 1, 1, 1], "ix": 4}, "o": {"a": 0, "k": 100, "ix": 5}, "r": 1, "bm": 0, "nm": "Fill 1", "mn": "ADBE Vector Graphic - Fill", "hd": false}, {"ty": "tr", "p": {"a": 0, "k": [214.794, 59], "ix": 2}, "a": {"a": 0, "k": [0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 6}, "o": {"a": 0, "k": 100, "ix": 7}, "sk": {"a": 0, "k": 0, "ix": 4}, "sa": {"a": 0, "k": 0, "ix": 5}, "nm": "Transform"}], "nm": "Group 1", "np": 2, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}], "ip": 9, "op": 48, "st": -8, "bm": 0}, {"ddd": 0, "ind": 6, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [141.281, -28.624, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 161, "bm": 0}, {"ddd": 0, "ind": 7, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [171.947, 52.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 158, "bm": 0}, {"ddd": 0, "ind": 8, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [141.281, 133.043, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 155, "bm": 0}, {"ddd": 0, "ind": 9, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, 175.403, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 152, "bm": 0}, {"ddd": 0, "ind": 10, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-41.386, 133.043, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 149, "bm": 0}, {"ddd": 0, "ind": 11, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-70.719, 52.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 146, "bm": 0}, {"ddd": 0, "ind": 12, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [-41.386, -28.624, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 143, "bm": 0}, {"ddd": 0, "ind": 13, "ty": 0, "nm": "Fillpping coin_01", "parent": 1, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, -67.891, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 165, "op": 222, "st": 140, "bm": 0}, {"ddd": 0, "ind": 14, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [266.414, 269.906, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 111, "bm": 0}, {"ddd": 0, "ind": 15, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [293.094, 340.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 108, "bm": 0}, {"ddd": 0, "ind": 16, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [266.414, 410.556, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 105, "bm": 0}, {"ddd": 0, "ind": 17, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.261, 447.409, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 102, "bm": 0}, {"ddd": 0, "ind": 18, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [107.494, 410.556, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 99, "bm": 0}, {"ddd": 0, "ind": 19, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [81.974, 340.376, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 96, "bm": 0}, {"ddd": 0, "ind": 20, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [107.494, 269.906, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 93, "bm": 0}, {"ddd": 0, "ind": 21, "ty": 0, "nm": "Fillpping coin_01", "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187.261, 235.743, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [52.2, 52.2, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 115, "op": 165, "st": 90, "bm": 0}, {"ddd": 0, "ind": 22, "ty": 3, "nm": "Null 33", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [187, 338.308, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.177, 0.177, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.978, 0.978, 0.333], "y": [0, 0, 0]}, "t": 205, "s": [87, 87, 100]}, {"t": 216, "s": [69, 69, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 23, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 58, "s": [0]}, {"t": 59, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 52, "s": [50.188, 51.856, 0], "to": [15.182, -13.413, 0], "ti": [-15.182, 13.413, 0]}, {"t": 70, "s": [141.281, -28.624, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 48, "op": 115, "st": 41, "bm": 0}, {"ddd": 0, "ind": 24, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 56, "s": [0]}, {"t": 57, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 50, "s": [50.188, 51.856, 0], "to": [20.293, 0.087, 0], "ti": [-20.293, -0.087, 0]}, {"t": 68, "s": [171.947, 52.376, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 46, "op": 115, "st": 39, "bm": 0}, {"ddd": 0, "ind": 25, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 54, "s": [0]}, {"t": 55, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 48, "s": [50.188, 51.856, 0], "to": [15.182, 13.531, 0], "ti": [-15.182, -13.531, 0]}, {"t": 66, "s": [141.281, 133.043, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 44, "op": 115, "st": 37, "bm": 0}, {"ddd": 0, "ind": 26, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 52, "s": [0]}, {"t": 53, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 46, "s": [50.188, 51.856, 0], "to": [0.019, 20.591, 0], "ti": [-0.019, -20.591, 0]}, {"t": 64, "s": [50.3, 175.403, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 42, "op": 115, "st": 35, "bm": 0}, {"ddd": 0, "ind": 27, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 50, "s": [0]}, {"t": 51, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 44, "s": [50.188, 51.856, 0], "to": [-15.262, 13.531, 0], "ti": [15.262, -13.531, 0]}, {"t": 62, "s": [-41.386, 133.043, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 40, "op": 115, "st": 33, "bm": 0}, {"ddd": 0, "ind": 28, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 48, "s": [0]}, {"t": 49, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 42, "s": [50.188, 51.856, 0], "to": [-20.151, 0.087, 0], "ti": [20.151, -0.087, 0]}, {"t": 60, "s": [-70.719, 52.376, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 38, "op": 115, "st": 31, "bm": 0}, {"ddd": 0, "ind": 29, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 46, "s": [0]}, {"t": 47, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 40, "s": [50.188, 51.856, 0], "to": [-15.262, -13.413, 0], "ti": [15.262, 13.413, 0]}, {"t": 58, "s": [-41.386, -28.624, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 36, "op": 115, "st": 29, "bm": 0}, {"ddd": 0, "ind": 30, "ty": 3, "nm": "Null 32", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0, "y": 1}, "o": {"x": 0.866, "y": 0}, "t": 38, "s": [187, 322.38, 0], "to": [0, -14.44, 0], "ti": [0, 14.44, 0]}, {"t": 56, "s": [187, 235.743, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0, 0, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.866, 0.866, 0.333], "y": [0, 0, 0]}, "t": 38, "s": [87, 87, 100]}, {"t": 56, "s": [52.2, 52.2, 100]}], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 72, "st": 0, "bm": 0}, {"ddd": 0, "ind": 31, "ty": 0, "nm": "Fillpping coin_01", "parent": 22, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [50.3, -67.891, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [60, 60, 100], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 65, "op": 115, "st": 44, "bm": 0}, {"ddd": 0, "ind": 32, "ty": 0, "nm": "Fillpping coin_01", "parent": 30, "refId": "comp_0", "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.044], "y": [1]}, "o": {"x": [0.844], "y": [0]}, "t": 0, "s": [0]}, {"t": 18, "s": [100]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.044, "y": 1}, "o": {"x": 0.844, "y": 0}, "t": 0, "s": [50.5, 141.435, 0], "to": [0, -16.551, 0], "ti": [0, 0, 0]}, {"i": {"x": 0.044, "y": 1}, "o": {"x": 0.812, "y": 0}, "t": 18, "s": [50.5, 42.132, 0], "to": [0, 0, 0], "ti": [0, -1.311, 0]}, {"t": 29, "s": [50.5, 50, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [187.5, 320, 0], "ix": 1, "l": 2}, "s": {"a": 1, "k": [{"i": {"x": [0.044, 0.044, 0.667], "y": [1, 1, 1]}, "o": {"x": [0.844, 0.844, 0.333], "y": [0, 0, 0]}, "t": 0, "s": [50, 50, 100]}, {"t": 18, "s": [100, 100, 100]}], "ix": 6, "l": 2}}, "ao": 0, "hasMask": true, "masksProperties": [{"inv": false, "mode": "a", "pt": {"a": 0, "k": {"i": [[0, 0], [0, 0], [0, 0], [0, 0]], "o": [[0, 0], [0, 0], [0, 0], [0, 0]], "v": [[258.005, 249.132], [115.162, 249.132], [115.162, 391.974], [258.005, 391.974]], "c": true}, "ix": 1}, "o": {"a": 0, "k": 100, "ix": 3}, "x": {"a": 0, "k": 0, "ix": 4}, "nm": "Mask 1"}], "w": 375, "h": 640, "ip": 0, "op": 65, "st": 0, "bm": 0}, {"ddd": 0, "ind": 33, "ty": 3, "nm": "Null 26", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 1, "k": [{"i": {"x": 0.131, "y": 1}, "o": {"x": 0.881, "y": 0}, "t": 0, "s": [91.4, 134.33, 0], "to": [0, -8.418, 0], "ti": [0, 8.418, 0]}, {"i": {"x": 0.169, "y": 0.169}, "o": {"x": 0.167, "y": 0.167}, "t": 18, "s": [91.4, 83.825, 0], "to": [0, 0, 0], "ti": [0, 0, 0]}, {"i": {"x": 0.164, "y": 1}, "o": {"x": 0.899, "y": 0}, "t": 181, "s": [91.4, 83.825, 0], "to": [0, 0, 0], "ti": [0, 0, 0]}, {"t": 192, "s": [91.4, 66.163, 0]}], "ix": 2, "l": 2}, "a": {"a": 0, "k": [50, 50, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "ip": 0, "op": 192, "st": 0, "bm": 0}, {"ddd": 0, "ind": 35, "ty": 5, "nm": "Headline 01", "parent": 33, "sr": 1, "ks": {"o": {"a": 1, "k": [{"i": {"x": [0.833], "y": [0.833]}, "o": {"x": [0.167], "y": [0.167]}, "t": 4, "s": [0]}, {"i": {"x": [0.833], "y": [1]}, "o": {"x": [0.167], "y": [0]}, "t": 10, "s": [100]}, {"i": {"x": [0.177], "y": [1]}, "o": {"x": [0.978], "y": [0]}, "t": 184, "s": [100]}, {"t": 191, "s": [0]}], "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [37.453, 15.434, 0], "ix": 2, "l": 2}, "a": {"a": 0, "k": [-2.814, 61.325, 0], "ix": 1, "l": 2}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6, "l": 2}}, "ao": 0, "t": {"d": {"k": [{"s": {"sz": [289.833343505859, 102.166656494141], "ps": [-41.6666717529297, 54.1666717529297], "s": 27, "f": "Roboto-Bold", "t": "£100 put away each month, from the year 2000 until now.", "ca": 0, "j": 0, "tr": -10, "lh": 32.4000015258789, "ls": 0, "fc": [0.765, 1, 0.204]}, "t": 0}]}, "p": {}, "m": {"g": 1, "a": {"a": 0, "k": [0, 0], "ix": 2}}, "a": []}, "ip": 0, "op": 192, "st": 27, "bm": 0}], "markers": []} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 57c0a55e..f7be58af 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -19,6 +19,7 @@ import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.NoLiveLiterals import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -27,11 +28,18 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.draw +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.drawText +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.rememberTextMeasurer import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import compottie.example.shared.generated.resources.ComicNeue @@ -73,6 +81,8 @@ private val REPEATER = "repeater.json" private val AUTOORIENT = "autoorient.json" private val TEXT_WITH_PATH = "text_with_path.json" private val TEXT = "text.json" +private val TEXT_GLYPHS = "text_glyphs.json" +private val TEXT_OFFSET = "text_offset.json" private val IMAGE_ASSET = "image_asset.json" private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" @@ -91,7 +101,6 @@ suspend fun LottieCompositionSpec.Companion.Resource( readBytes: suspend (path: String) -> ByteArray = { Res.readBytes(it) } ) : LottieCompositionSpec = JsonString(readBytes("$dir/$path").decodeToString()) - @OptIn(ExperimentalResourceApi::class, ExperimentalCompottieApi::class) @Composable fun App() { @@ -107,23 +116,23 @@ fun App() { fontManager = rememberResourcesFontManager { fontSpec -> when (fontSpec.family) { "Comic Neue" -> Res.font.ComicNeue - else -> Res.font.ComicNeue + else -> null } }, ) { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(WONDERS) +// LottieCompositionSpec.Resource(ROBOT) // -// LottieCompositionSpec.Url( -// "https://assets-v2.lottiefiles.com/a/926b5f5e-117a-11ee-b83d-df9534a9fcf0/DhEx6yntOU.lottie", + LottieCompositionSpec.Url( + "https://assets-v2.lottiefiles.com/a/cae79014-1161-11ee-8989-bf611d47f80c/HSa6KZQ7MY.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", // "https://dotlottie.io/sample_files/animation-external-image.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/anim_jpg.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/ZipInlineImage.zip", -// ) + ) } // If you want to be aware of loading errors @@ -148,6 +157,7 @@ fun App() { val painter = rememberLottiePainter( composition = composition.value, progress = { progress }, + clipToCompositionBounds = false ) Image( modifier = Modifier From 1f497ed621737776b795d45df04e9b054d4539d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 22 Jun 2024 23:26:59 +0300 Subject: [PATCH 063/100] bug fixes --- README.md | 26 +++--- .../compottie/DefaultHttpClient.kt | 17 ++-- .../compottie/NetworkAssetsManager.kt | 2 +- .../compottie/UrlCompositionSpec.kt | 2 +- .../compottie/LottieClipSpec.skiko.kt | 2 +- .../compottie/LottieComposition.kt | 6 +- .../alexzhirkevich/compottie/LottiePainter.kt | 8 +- .../github/alexzhirkevich/compottie/LruMap.kt | 14 +-- .../compottie/internal/AnimationState.kt | 2 +- .../internal/animation/AnimatedShape.kt | 3 +- .../internal/animation/AnimatedTransform.kt | 12 +-- .../internal/animation/AnimatedVector2.kt | 2 +- .../internal/content/ContentGroupImpl.kt | 6 +- .../compottie/internal/helpers/Mask.kt | 8 +- .../internal/helpers/text/TextDocument.kt | 4 +- .../internal/layers/BaseCompositionLayer.kt | 31 +++---- .../compottie/internal/layers/BaseLayer.kt | 75 +++++++++------- .../internal/layers/CompositionLayer.kt | 15 +++- .../compottie/internal/layers/ImageLayer.kt | 34 ++++--- .../compottie/internal/layers/Layer.kt | 6 +- .../compottie/internal/layers/NullLayer.kt | 7 ++ .../internal/layers/PrecompositionLayer.kt | 8 +- .../compottie/internal/layers/ShapeLayer.kt | 15 ++-- .../internal/layers/SolidColorLayer.kt | 8 +- .../compottie/internal/layers/TextLayer.kt | 46 +++++----- .../internal/platform/PlatformPath.kt | 2 +- .../internal/shapes/BaseStrokeShape.kt | 6 +- .../compottie/internal/shapes/FillShape.kt | 4 +- .../internal/shapes/GradientFillShape.kt | 4 +- .../compottie/internal/shapes/GroupShape.kt | 2 +- .../internal/shapes/MergePathsShape.kt | 7 +- .../compottie/internal/shapes/PathShape.kt | 4 +- .../internal/shapes/PolystarShape.kt | 2 +- .../internal/shapes/RepeaterShape.kt | 2 +- .../internal/platform/PlatformPath.skiko.kt | 1 - .../src/main/kotlin/MainActivity.kt | 10 +-- example/shared/src/commonMain/kotlin/App.kt | 90 +++++++++++++++++-- gradle/libs.versions.toml | 2 +- 38 files changed, 312 insertions(+), 183 deletions(-) diff --git a/README.md b/README.md index ef062d6f..deb16c33 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,12 @@ ![badge-macOS](https://img.shields.io/badge/Platform-macOS-purple) ![badge-web](https://img.shields.io/badge/Platform-Web-blue) -Compose Multiplatform port of [airbnb/lottie-compose](https://github.com/airbnb/lottie/blob/master/android-compose.md) +Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderer. + +> [!IMPORTANT] +> Starting from v2.0 Compottie has its own multiplatform rendering engine without any platform delegates. +>
    The new rendering engine is implemented from scratch and therefore may have bugs. +>
    Please [report](https://github.com/alexzhirkevich/compottie/issues) if you find any, preferably with a reproducible animation # Installation [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie) @@ -26,16 +31,16 @@ dependencies { implementation("io.github.alexzhirkevich:compottie-network:<2x_version>") // For compose-resources LottieAssetsManager and LottieFontManager. - // This module doesn't include resources composition spec. - // Animations from compose resources can be simply loaded with one line of code. See usage + // This module DOESN'T include resources composition spec due to its uselessness implementation("io.github.alexzhirkevich:compottie-resources:<2x_version>") } ``` # Usage -> [!TIP] -> The following docs describe the Compottie 2.x usage. -> For Compottie 1.x docs please refer to the [airbnb docs](https://github.com/airbnb/lottie/blob/master/android-compose.md#basic-usage). +The following docs describe the Compottie 2.x usage. +For Compottie 1.x docs please refer to the [airbnb docs](https://github.com/airbnb/lottie/blob/master/android-compose.md#basic-usage). + +## Compottie 2.0 - [Basic Usage](#basic-usage) - [LottieComposition](#lottiecomposition) @@ -89,10 +94,7 @@ fun Loader() { ``` ## LottieComposition -`LottieComposition` is the parsed version of your Lottie json file. It is stateless and can be cached/reused freely. -To create a `LottieComposition`: -* Use `rememberLottieComposition(spec)` -* Pass in a `LottieCompositionSpec`. `LottieCompositionSpec` is an open interface that lets you select the source (assets, string, network, etc.). +`LottieComposition` is the parsed version of your Lottie json file. It is stateless and can be cached/reused freely. Call `rememberLottieComposition(spec)` to create new composition. `LottieCompositionSpec` is an open interface that lets you select the source (string/zip, network/assets, etc.). For example: ```kotlin @@ -105,7 +107,9 @@ val composition2 by rememberLottieComposition { LottieCompositionSpec.Url("https://...") } val composition3 by rememberLottieComposition { - LottieCompositionSpec.DotLottie(Res.readBytes("files/anim.lottie")) + LottieCompositionSpec.DotLottie( + Res.readBytes("files/anim.lottie") + ) } ``` diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt index ea9be3bd..31fd7e7f 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt @@ -1,10 +1,10 @@ package io.github.alexzhirkevich.compottie -import androidx.compose.runtime.Stable import io.ktor.client.HttpClient import io.ktor.client.plugins.HttpRequestRetry -import io.ktor.client.request.get -import io.ktor.client.statement.HttpResponse +import io.ktor.client.request.prepareGet +import io.ktor.client.request.prepareRequest +import io.ktor.client.statement.HttpStatement import io.ktor.http.Url internal val DefaultHttpClient by lazy { @@ -17,8 +17,11 @@ internal val DefaultHttpClient by lazy { } } -typealias NetworkRequest = suspend (HttpClient, Url) -> HttpResponse +/** + * Http request builder. + * + * See [HttpClient.prepareRequest], [HttpClient.prepareGet], + * */ +typealias NetworkRequest = suspend (HttpClient, Url) -> HttpStatement -internal val GetRequest : NetworkRequest by lazy { - { c, u -> c.get(u) } -} \ No newline at end of file +internal val GetRequest : NetworkRequest = { c, u -> c.prepareGet(u) } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index f23de962..7d363928 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -51,7 +51,7 @@ private class NetworkAssetsManagerImpl( } catch (_: Throwable) { } - val bytes = request(client, url).bodyAsChannel().toByteArray() + val bytes = request(client, url).execute().bodyAsChannel().toByteArray() try { cacheStrategy.save(path, bytes) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index a9cf338e..69cedc03 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -67,7 +67,7 @@ private class NetworkCompositionSpec( } catch (_: Throwable) { } - val response = request(client, Url(url)) + val response = request(client, Url(url)).execute() if (!response.status.isSuccess()) { throw ClientRequestException(response, response.bodyAsText()) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt index cd75b1d3..91a189b7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieClipSpec.skiko.kt @@ -25,7 +25,7 @@ sealed class LottieClipSpec { class Frame( val min: Int?, val max: Int?, - val maxInclusive: Boolean, + val maxInclusive: Boolean = true, ) : LottieClipSpec() { private val actualMaxFrame = when { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 1f70f62c..ede220d9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -31,6 +31,7 @@ import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext import kotlin.time.Duration +import kotlin.time.Duration.Companion.microseconds import kotlin.time.Duration.Companion.milliseconds /** @@ -113,7 +114,10 @@ class LottieComposition internal constructor( /** * Animation duration * */ - val duration: Duration = ((endFrame - startFrame) / frameRate * 1000).toInt().milliseconds + val duration: Duration = (durationFrames / frameRate * 1_000_000).toInt().microseconds + + val durationFrames : Float + get() = animation.outPoint - animation.inPoint /** * Animation frame rate diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index af850e68..5fe35f87 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.util.lerp import io.github.alexzhirkevich.compottie.dynamic.DynamicProperties import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.internal.AnimationState @@ -210,10 +211,9 @@ private class LottiePainter( private val compositionLayer: Layer = CompositionLayer(composition) private val frame: Float by derivedStateOf { - val p = composition.animation.inPoint + - (composition.animation.outPoint - composition.animation.inPoint) * progress - p.coerceAtLeast(0f) + lerp(composition.startFrame, composition.endFrame, progress) } + private val animationState = AnimationState( frame = frame, composition = composition, @@ -255,7 +255,7 @@ private class LottiePainter( scale(scale.scaleX, scale.scaleY) { translate(offset.x.toFloat(), offset.y.toFloat()) { - animationState.remapped(frame) { + animationState.onFrame(frame) { compositionLayer.draw(this, matrix, alpha, it) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt index 371b74c3..d621a140 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LruMap.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import kotlinx.atomicfu.locks.SynchronizedObject import kotlinx.atomicfu.locks.synchronized import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock @@ -10,28 +11,29 @@ internal class LruMap( ) : MutableMap by delegate { private val suspendGetOrPutMutex = Mutex() + private val lock = SynchronizedObject() - override fun put(key: Any, value: T): T? = synchronized(this) { + override fun put(key: Any, value: T): T? = synchronized(lock) { putRaw(key, value) } - override fun clear() = synchronized(this) { + override fun clear() = synchronized(lock) { clearRaw() } - override fun putAll(from: Map) = synchronized(this) { + override fun putAll(from: Map) = synchronized(lock) { putAllRaw(from) } - override fun remove(key: Any): T? = synchronized(this) { + override fun remove(key: Any): T? = synchronized(lock) { removeRaw(key) } - override fun get(key: Any): T? = synchronized(this) { + override fun get(key: Any): T? = synchronized(lock) { getRaw(key) } - fun getOrPut(key: Any?, put: () -> T): T = synchronized(this) { + fun getOrPut(key: Any?, put: () -> T): T = synchronized(lock) { if (key == null) return put() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 50ba5ab6..7e1ff238 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -46,7 +46,7 @@ class AnimationState @PublishedApi internal constructor( * State is restored after the [block] call * */ @OptIn(ExperimentalContracts::class) - internal fun remapped(frame: Float, block: (AnimationState) -> R): R { + internal fun onFrame(frame: Float, block: (AnimationState) -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 22e8eef1..4293f1dc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -35,13 +35,12 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { private val tmpPath = Path() override fun interpolated(state: AnimationState): Path { - tmpPath.reset() bezier.mapPath(tmpPath) return tmpPath } override fun interpolatedRaw(state: AnimationState): Path { - return interpolated(state) + return Path().apply { bezier.mapPath(this) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 8178f464..2a9674d6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -1,13 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation -import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix -import androidx.compose.ui.layout.ScaleFactor import io.github.alexzhirkevich.compottie.dynamic.DynamicTransformProvider -import io.github.alexzhirkevich.compottie.dynamic.Identity -import io.github.alexzhirkevich.compottie.dynamic.derive -import io.github.alexzhirkevich.compottie.dynamic.toScaleFactor -import io.github.alexzhirkevich.compottie.dynamic.toVec2 import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.utils.Math @@ -77,7 +71,7 @@ internal abstract class AnimatedTransform{ // 1) Find the next position value. // 2) Create a vector from the current position to the next position. // 3) Find the angle of that vector to the X axis (0 degrees). - val nextPosition = state.remapped(state.frame + 0.001f) { + val nextPosition = state.onFrame(state.frame + 0.001f) { position!!.interpolated(it) } @@ -157,8 +151,6 @@ internal abstract class AnimatedTransform{ } private fun clearSkewValues() { - for (i in 0..8) { - skewValues[i] = 0f - } + skewValues.fill(0f) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index dad7fc18..4b0c889d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -89,7 +89,7 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { emptyValue = Offset.Zero, map = { s, e, p -> if (inTangent != null && outTangent != null && !s.contentEquals(e)) { - path.reset() + path.rewind() path.createPath(s, e, outTangent, inTangent) pathMeasure.setPath(path, false) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt index af78d903..8c99828f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt @@ -17,7 +17,7 @@ import io.github.alexzhirkevich.compottie.internal.utils.union internal class ContentGroupImpl( contents: List, override val name: String?, - private val hidden : (AnimationState) -> Boolean, + private val hidden : ((AnimationState) -> Boolean)?, override val transform: AnimatedTransform?, ) : ContentGroup { @@ -30,7 +30,7 @@ internal class ContentGroupImpl( private val path = Path() override fun hidden(state: AnimationState): Boolean { - return hidden.invoke(state) + return hidden?.invoke(state) == true } private val mContents = contents @@ -100,7 +100,7 @@ internal class ContentGroupImpl( override fun getPath(state: AnimationState): Path { - path.reset() + path.rewind() if (hidden(state)) { return path } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index 1282df2f..331cd62a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -38,4 +38,10 @@ internal value class MaskMode(val type : String) { val Darken = MaskMode("d") val Difference = MaskMode("f") } -} \ No newline at end of file +} + +internal fun MaskMode.isSupported() = + this == MaskMode.None || + this == MaskMode.Add || + this == MaskMode.Subtract + || this == MaskMode.Intersect \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt index 58f8d40b..9a01a3ee 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt @@ -47,4 +47,6 @@ internal class TextDocument( @SerialName("ls") var baselineShift : Float? = null, -) \ No newline at end of file +) + +internal val TextDocument.fontScale get() = fontSize/100f \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index a525ebc1..a0bcee46 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -14,8 +14,10 @@ import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.clipRect import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.utils.union +import kotlinx.atomicfu.locks.SynchronizedObject import kotlinx.atomicfu.locks.synchronized import kotlinx.serialization.Transient +import kotlin.math.absoluteValue internal abstract class BaseCompositionLayer: BaseLayer() { @@ -35,7 +37,9 @@ internal abstract class BaseCompositionLayer: BaseLayer() { isAntiAlias = true } - private var loadedLayers : List? = null + private val getLayerLock = SynchronizedObject() + + private var loadedLayers: List? = null abstract fun compose(state: AnimationState): List @@ -65,7 +69,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha - state.remapped(getRemappedFrame(state)) { remappedState -> + state.onFrame(getRemappedFrame(state)) { remappedState -> + layers.fastForEachReversed { layer -> // Only clip precomps. This mimics the way After Effects renders animations. val ignoreClipOnThisLayer = @@ -99,8 +104,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { } } - private fun getLayers(state: AnimationState) : List = synchronized(this) { - loadedLayers?.let { return it } + private fun getLayers(state: AnimationState): List = synchronized(getLayerLock) { + loadedLayers?.let { return@synchronized it } val layers = compose(state).filterIsInstance() @@ -148,19 +153,15 @@ internal abstract class BaseCompositionLayer: BaseLayer() { this.loadedLayers = (layers - matteLayers).fastFilter { it.matteTarget != BooleanInt.Yes } return this.loadedLayers!! } - private fun getRemappedFrame(state: AnimationState): Float { - val f = if (timeStretch != 0f && timeStretch != 1f && !isContainerLayer) { - state.frame / timeStretch - } else state.frame + val frame = timeRemapping?.interpolated(state) + ?.times(state.composition.frameRate) + ?.minus(state.composition.startFrame) + ?: (state.frame - (startTime ?: inPoint ?: 0f) ) - val tr = timeRemapping ?: return f - - val composition = state.composition - - return state.remapped(f) { - tr.interpolated(it) * composition.frameRate - composition.startFrame - } + return if (timeStretch.absoluteValue > Float.MIN_VALUE && timeStretch != 1f && !isContainerLayer) { + frame / timeStretch + } else frame } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index c04b23aa..c2d41838 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -7,15 +7,15 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.PaintingStyle import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.isIdentity +import androidx.compose.ui.util.fastFilter import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.content.Content @@ -24,9 +24,9 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode import io.github.alexzhirkevich.compottie.internal.helpers.isInvert import io.github.alexzhirkevich.compottie.internal.helpers.isLuma +import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.Luma import io.github.alexzhirkevich.compottie.internal.platform.drawRect -import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set @@ -39,6 +39,7 @@ internal abstract class BaseLayer : Layer { override var resolvingPath : ResolvingPath? = null protected val boundsMatrix = Matrix() + private val path = Path() private val matrix = Matrix() @@ -89,6 +90,14 @@ internal abstract class BaseLayer : Layer { private var parentLayer: BaseLayer? = null private var matteLayer: BaseLayer? = null + private val allMasksAreNone by lazy { + masks?.all { it.mode == MaskMode.None } == true + } + + private val supportedMasks by lazy { + masks?.fastFilter { it.mode.isSupported() } + } + override val effectsApplier by lazy { LayerEffectsApplier(this) } @@ -108,19 +117,21 @@ internal abstract class BaseLayer : Layer { ) { try { state.onLayer(this) { - resolvingPath?.let { - val dynamic = state.dynamic?.get(it)?.transform - if (transform.dynamic !== dynamic) { - transform.dynamic = dynamic + val dynamic = resolvingPath?.let { + state.dynamic?.get(it).also { d -> + if (transform.dynamic !== d?.transform) { + transform.dynamic = d?.transform + } } } - if (hidden || (inPoint ?: 0f) > state.frame || (outPoint - ?: Float.MAX_VALUE) < state.frame + + if (dynamic?.hidden.derive(hidden, state) + || (inPoint ?: Float.MIN_VALUE) > state.frame + || (outPoint ?: Float.MAX_VALUE) < state.frame ) return@onLayer buildParentLayerListIfNeeded() - matrix.reset() matrix.setFrom(parentMatrix) parentLayers?.fastForEachReversed { @@ -135,13 +146,12 @@ internal abstract class BaseLayer : Layer { alpha = (alpha * parentAlpha.coerceIn(0f, 1f)) - if (matteLayer == null && !hasMask()) { + if (matteLayer == null && !hasMasks()) { matrix.preConcat(transform.matrix(state)) drawLayer(drawScope, matrix, alpha, state) return@onLayer } - getBounds(drawScope, matrix, false, state, rect) intersectBoundsWithMatte(drawScope, rect, parentMatrix, state) @@ -152,17 +162,16 @@ internal abstract class BaseLayer : Layer { // Intersect the mask and matte rect with the canvas bounds. // If the canvas has a transform, then we need to transform its bounds by its matrix // so that we know the coordinate space that the canvas is showing. - canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) +// canvasBounds.set(0f, 0f, drawScope.size.width, drawScope.size.height) drawScope.drawIntoCanvas { canvas -> - canvas.getMatrix(canvasMatrix) - if (!canvasMatrix.isIdentity()) { - canvasMatrix.invert() - canvasMatrix.map(canvasBounds) - } - +// canvas.getMatrix(canvasMatrix) +// if (!canvasMatrix.isIdentity()) { +// canvasMatrix.invert() +// canvasMatrix.map(canvasBounds) +// } - rect.intersectOrReset(canvasBounds) +// rect.intersectOrReset(canvasBounds) // // Ensure that what we are drawing is >=1px of width and height. // On older devices, drawing to an offscreen buffer of <1px would draw back as a black bar. @@ -175,8 +184,7 @@ internal abstract class BaseLayer : Layer { clearCanvas(canvas) drawLayer(drawScope, matrix, alpha, state) - - if (hasMask()) { + if (hasMasks()) { applyMasks(canvas, matrix, state) } @@ -262,7 +270,7 @@ internal abstract class BaseLayer : Layer { } } - private fun hasMask(): Boolean = !masks.isNullOrEmpty() + private fun hasMasks(): Boolean = hasMask != false && !supportedMasks.isNullOrEmpty() private fun clearCanvas(canvas: Canvas) { // If we don't pad the clear draw, some phones leave a 1px border of the graphics buffer. @@ -276,14 +284,14 @@ internal abstract class BaseLayer : Layer { } private fun intersectBoundsWithMask(rect: MutableRect, matrix: Matrix, state: AnimationState) { + maskBoundsRect.set(0f, 0f, 0f, 0f) - if (!hasMask()) { + if (!hasMasks()) { return } - masks?.fastForEach { mask -> - + supportedMasks?.fastForEach { mask -> val maskPath = mask.shape?.interpolatedRaw(state) ?: return@fastForEach path.set(maskPath) path.transform(matrix) @@ -337,11 +345,12 @@ internal abstract class BaseLayer : Layer { masks?.fastForEachIndexed { i, mask -> when (mask.mode) { - MaskMode.None -> // None mask should have no effect. If all masks are NONE, fill the + MaskMode.None -> + // None mask should have no effect. If all masks are NONE, fill the // mask canvas with a rectangle so it fully covers the original layer content. // However, if there are other masks, they should be the only ones that have an effect so // this should noop. - if (this.masks!!.all { it.mode == MaskMode.None }) { + if (allMasksAreNone) { contentPaint.alpha = 1f canvas.drawRect(rect, contentPaint) } @@ -383,7 +392,7 @@ internal abstract class BaseLayer : Layer { ) { canvas.saveLayer(rect, contentPaint) canvas.drawRect(rect, contentPaint) - val maskPath = mask.shape?.interpolated(state) ?: return + val maskPath = mask.shape?.interpolatedRaw(state) ?: return path.set(maskPath) path.transform(matrix) contentPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f @@ -410,7 +419,7 @@ internal abstract class BaseLayer : Layer { mask: Mask, state: AnimationState, ) { - val maskPath = mask.shape?.interpolated(state) ?: return + val maskPath = mask.shape?.interpolatedRaw(state) ?: return path.set(maskPath) path.transform(matrix) canvas.drawPath(path, dstOutPaint) @@ -426,7 +435,7 @@ internal abstract class BaseLayer : Layer { canvas.drawRect(rect, contentPaint) dstOutPaint.alpha = mask.opacity?.interpolatedNorm(state) ?.coerceIn(0f, 1f) ?: 1f - val maskPath = mask.shape?.interpolated(state) ?: return + val maskPath = mask.shape?.interpolatedRaw(state) ?: return path.set(maskPath) path.transform(matrix) canvas.drawPath(path, dstOutPaint) @@ -440,7 +449,7 @@ internal abstract class BaseLayer : Layer { state: AnimationState, ) { canvas.saveLayer(rect, dstInPaint) - val maskPath = mask.shape?.interpolated(state) ?: return + val maskPath = mask.shape?.interpolatedRaw(state) ?: return path.set(maskPath) path.transform(matrix) contentPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f @@ -457,7 +466,7 @@ internal abstract class BaseLayer : Layer { canvas.saveLayer(rect, dstInPaint) canvas.drawRect(rect, contentPaint) dstOutPaint.alpha = mask.opacity?.interpolatedNorm(state)?.coerceIn(0f, 1f) ?: 1f - val maskPath = mask.shape?.interpolated(state) ?: return + val maskPath = mask.shape?.interpolatedRaw(state) ?: return path.set(maskPath) path.transform(matrix) canvas.drawPath(path, dstOutPaint) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 7a95d2ca..586497ba 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -22,6 +22,8 @@ internal class CompositionLayer( override val masks: List? get() = null + override val hasMask: Boolean get() = false + override var effects: List = emptyList() override val transform: Transform = Transform() @@ -41,12 +43,17 @@ internal class CompositionLayer( override val blendMode: LottieBlendMode get() = LottieBlendMode.Normal - override val inPoint: Float get() = composition.animation.inPoint - override val outPoint: Float get() = composition.animation.outPoint + override val inPoint: Float? get() = null + + override val outPoint: Float? get() = null - override val name: String? = null + override val startTime: Float? get() = null + + override val name: String = CONTAINER_NAME override fun compose(state: AnimationState): List { return composition.animation.layers } -} \ No newline at end of file +} + +internal const val CONTAINER_NAME = "__compottie_container" \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index b761361f..6667911c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.layers import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope @@ -19,6 +20,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import org.jetbrains.skia.Color @Serializable @SerialName("2") @@ -50,6 +52,9 @@ internal class ImageLayer( @SerialName("op") override val outPoint: Float? = null, + @SerialName("st") + override val startTime: Float? = null, + @SerialName("nm") override val name: String? = null, @@ -77,6 +82,8 @@ internal class ImageLayer( @SerialName("masksProperties") override val masks: List? = null, + override val hasMask: Boolean? = null, + @SerialName("ef") override var effects: List = emptyList(), @@ -85,24 +92,19 @@ internal class ImageLayer( ) : BaseLayer() { @Transient - private val paint = Paint().apply { - blendMode = this@ImageLayer.blendMode.asComposeBlendMode() - } + private val paint = Paint() private val effectState by lazy { LayerEffectsState() } - @Transient - private var dynamic : DynamicImageLayerProvider? = null - private fun dynamicAsset(state: AnimationState) : ImageAsset? { - resolvingPath?.let { - dynamic = state.dynamic?.get(it) as? DynamicImageLayerProvider + val dynamic = resolvingPath?.let { + state.dynamic?.get(it) as? DynamicImageLayerProvider } - val asset = state.assets.get(refId) as? ImageAsset ?: return null + val asset = state.assets[refId] as? ImageAsset ?: return null val image = dynamic?.image?.invoke(state, asset.spec) ?: return asset asset.setBitmap(image) @@ -114,6 +116,7 @@ internal class ImageLayer( val bitmap = mAsset.bitmap ?: return paint.alpha = parentAlpha + paint.blendMode = blendMode.asComposeBlendMode() effectsApplier.applyTo(paint, state, effectState) @@ -121,16 +124,9 @@ internal class ImageLayer( canvas.save() canvas.concat(parentMatrix) - drawScope.drawImage( - image = bitmap, - alpha = parentAlpha, - colorFilter = paint.colorFilter - ) -// canvas.drawImage( -// image = bitmap, -// topLeftOffset = Offset.Zero, -// paint = paint -// ) + drawScope.drawIntoCanvas { + it.drawImage(bitmap, Offset.Zero, paint) + } canvas.restore() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 2b4d9cd9..9bb908f7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -33,6 +33,8 @@ internal sealed interface Layer : DrawingContent { val outPoint : Float? + val startTime : Float? + val blendMode : LottieBlendMode val transform : Transform @@ -51,6 +53,8 @@ internal sealed interface Layer : DrawingContent { val collapseTransform : BooleanInt + val hasMask : Boolean? + val masks : List? var effects: List @@ -72,7 +76,7 @@ internal value class ResolvingPath private constructor(val path : String) { internal fun ResolvingPath.resolveOrNull(child: String?) : ResolvingPath? = if (child != null) resolve(child) else null -internal val Layer.isContainerLayer get() = name == "__container" +internal val Layer.isContainerLayer get() = name == CONTAINER_NAME diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index 4706699a..369b5510 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -43,6 +43,9 @@ internal class NullLayer( @SerialName("op") override val outPoint: Float? = null, + @SerialName("st") + override val startTime: Float? = null, + @SerialName("nm") override val name: String? = null, @@ -70,6 +73,9 @@ internal class NullLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("hasMask") + override val hasMask: Boolean? = null, + @SerialName("ef") override var effects: List = emptyList(), ) : BaseLayer() { @@ -77,6 +83,7 @@ internal class NullLayer( override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { } + override fun getBounds( drawScope: DrawScope, parentMatrix: Matrix, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index ac9d4fef..61a10211 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -14,7 +14,7 @@ import kotlinx.serialization.Serializable @SerialName("0") @Serializable -internal class PrecompositionLayer( +internal data class PrecompositionLayer( val refId : String, @SerialName("w") @@ -38,6 +38,9 @@ internal class PrecompositionLayer( @SerialName("op") override val outPoint: Float? = null, + @SerialName("st") + override val startTime: Float? = null, + @SerialName("nm") override val name: String? = null, @@ -53,6 +56,9 @@ internal class PrecompositionLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("hasMask") + override val hasMask: Boolean? = null, + @SerialName("ef") override var effects: List = emptyList(), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 6f31c795..3ce14197 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -6,7 +6,6 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider -import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroup import io.github.alexzhirkevich.compottie.internal.content.ContentGroupImpl @@ -54,6 +53,9 @@ internal class ShapeLayer( @SerialName("op") override val outPoint: Float? = null, + @SerialName("st") + override val startTime: Float? = null, + @SerialName("nm") override val name: String? = null, @@ -84,12 +86,15 @@ internal class ShapeLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("hasMask") + override val hasMask: Boolean? = null, + @SerialName("shapes") val shapes: List = emptyList(), ) : BaseLayer() { @Transient - private var dynamicLayer : DynamicLayerProvider? = null + private var dynamic : DynamicLayerProvider? = null set(value) { if (field != value) { field = value @@ -103,8 +108,8 @@ internal class ShapeLayer( @Transient private val contentGroup : ContentGroup = ContentGroupImpl( - name = name, - hidden = { dynamicLayer?.hidden.derive(hidden, it) }, + name = CONTAINER_NAME, + hidden = null, // will be managed by BaseLayer contents = shapes, transform = shapes.firstInstanceOf() ).apply { @@ -123,7 +128,7 @@ internal class ShapeLayer( outBounds: MutableRect, ) { resolvingPath?.let { - dynamicLayer = state.dynamic?.get(it) + dynamic = state.dynamic?.get(it) } super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 86a1c7ba..d5b1ccbe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -52,6 +52,9 @@ internal class SolidColorLayer( @SerialName("op") override val outPoint: Float? = null, + @SerialName("st") + override val startTime: Float? = null, + @SerialName("nm") override val name: String? = null, @@ -79,6 +82,9 @@ internal class SolidColorLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("hasMask") + override val hasMask: Boolean? = null, + @SerialName("sw") val width : Float, @@ -133,7 +139,7 @@ internal class SolidColorLayer( return } - path.reset() + path.rewind() parentMatrix.map(Offset.Zero).let { path.moveTo(it.x, it.y) } parentMatrix.map(Offset(width, 0f)).let { path.lineTo(it.x, it.y) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 0e8e9664..261b00d5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -37,6 +37,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.helpers.text.TextData import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument import io.github.alexzhirkevich.compottie.internal.helpers.text.TextJustify +import io.github.alexzhirkevich.compottie.internal.helpers.text.fontScale import io.github.alexzhirkevich.compottie.internal.platform.addCodePoint import io.github.alexzhirkevich.compottie.internal.platform.charCount import io.github.alexzhirkevich.compottie.internal.platform.codePointAt @@ -68,6 +69,9 @@ internal class TextLayer( @SerialName("op") override val outPoint: Float? = null, + @SerialName("st") + override val startTime: Float? = null, + @SerialName("nm") override val name: String? = null, @@ -83,6 +87,9 @@ internal class TextLayer( @SerialName("masksProperties") override val masks: List? = null, + @SerialName("hasMask") + override val hasMask: Boolean? = null, + @SerialName("ef") override var effects: List = emptyList(), @@ -339,7 +346,8 @@ internal class TextLayer( allLines.fastForEachIndexed { alLinesIdx, textLine -> val boxWidth = document.wrapSize?.firstOrNull() ?: 0f - val lines = splitGlyphTextIntoLines(measurer, textLine, boxWidth, tracking) + val lines = splitGlyphTextIntoLines( + measurer, textLine, document.fontScale,boxWidth, tracking,null) lines.fastForEachIndexed { idx, line -> @@ -377,7 +385,7 @@ internal class TextLayer( textLines.fastForEachIndexed { outerIndex, line -> val boxWidth = document.wrapSize?.getOrNull(0) ?: 0f - val lines = splitGlyphTextIntoLines(measurer, line, boxWidth, tracking); + val lines = splitGlyphTextIntoLines(measurer, line,document.fontScale, boxWidth, tracking, glyphs); lines.forEachIndexed { innerIndex, l -> canvas.save() @@ -386,7 +394,7 @@ internal class TextLayer( drawGlyphTextLine( text = l.text, state = state, - fontScale = document.fontSize / 100f, + fontScale = document.fontScale, documentData = document, drawScope = drawScope, tracking = tracking, @@ -411,8 +419,10 @@ internal class TextLayer( private fun splitGlyphTextIntoLines( textMeasurer: TextMeasurer, textLine: String, + fontScale: Float, boxWidth: Float, tracking: Float, + glyphs: Map?, ): List { var lineCount = 0 @@ -428,19 +438,15 @@ internal class TextLayer( for (i in textLine.indices) { val c = textLine[i] -// if (usingGlyphs) { -// val characterHash: Int = FontCharacter.hashFor(c, font.getFamily(), font.getStyle()) -// val character: FontCharacter = -// composition.getCharacters().get(characterHash) ?: continue -// currentCharWidth = -// character.getWidth() as Float * fontScale * Utils.dpScale() + tracking -// } else { + val currentCharWidth = if (glyphs != null) { + val character = glyphs[textLine[i].toString()] + (character?.width ?: 0f) * fontScale + tracking + } else { + val measureResult = textMeasurer.measure(textLine[i].toString(), textStyle) + measureResult.size.width + tracking // currentCharWidth = fillPaint.measureText(textLine.substring(i, i + 1)) + tracking -// } - - val measureResult = textMeasurer.measure(textLine[i].toString(), textStyle) + } - val currentCharWidth = measureResult.size.width + tracking if (c == ' ') { spaceWidth = currentCharWidth @@ -527,12 +533,12 @@ internal class TextLayer( } when (document.textJustify) { - TextJustify.Left -> canvas.translate(position.x, lineOffsetY) - TextJustify.Right -> canvas.translate(position.x + size.width - lineWidth, lineOffsetY) - TextJustify.Center -> canvas.translate( - position.x + size.width / 2f - lineWidth / 2f, - lineOffsetY - ) + TextJustify.Left, TextJustify.LastLineLeft -> + canvas.translate(position.x, lineOffsetY) + TextJustify.Right, TextJustify.LastLineRight -> + canvas.translate(position.x + size.width - lineWidth, lineOffsetY) + TextJustify.Center, TextJustify.LastLineCenter -> + canvas.translate(position.x + (size.width - lineWidth) / 2f, lineOffsetY) } return true } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt index d6c34b15..27cce1c1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.kt @@ -23,8 +23,8 @@ internal fun Path.set(other : Path){ reset() addPath(other) } - //internal expect fun Path.set(other : Path) + internal expect fun Path.addPath(path: Path, matrix: Matrix) : Path diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 051a6906..97a17736 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -180,7 +180,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { if (pathGroup.trimPath != null) { applyTrimPath(canvas, state, pathGroup, parentMatrix) } else { - path.reset() + path.rewind() pathGroup.paths.fastForEachReversed { path.addPath(it.getPath(state), parentMatrix) } @@ -232,7 +232,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { state: AnimationState, outBounds: MutableRect, ) { - path.reset() + path.rewind() pathGroups.fastForEach { pathGroup -> pathGroup.paths.fastForEach { path.addPath(it.getPath(state), parentMatrix) @@ -269,7 +269,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { return } - path.reset() + path.rewind() pathGroup.paths.fastForEachReversed { path.addPath(it.getPath(state).apply { transform(parentMatrix) }) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index c328621a..9425f08d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -110,7 +110,7 @@ internal class FillShape( roundShape?.applyTo(paint, state) state.layer.effectsApplier.applyTo(paint, state, effectsState) - path.reset() + path.rewind() paths.fastForEach { path.addPath(it.getPath(state), parentMatrix) @@ -128,7 +128,7 @@ internal class FillShape( outBounds: MutableRect ) { - path.reset() + path.rewind() paths.fastForEach { path.addPath(it.getPath(state), parentMatrix) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 98e049a1..c2647e88 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -148,7 +148,7 @@ internal class GradientFillShape( state.layer.effectsApplier.applyTo(paint, state, effectsState) - path.reset() + path.rewind() paths.fastForEach { path.addPath(it.getPath(state), parentMatrix) @@ -168,7 +168,7 @@ internal class GradientFillShape( state: AnimationState, outBounds: MutableRect ) { - path.reset() + path.rewind() paths.fastForEach { path.addPath(it.getPath(state), parentMatrix) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index f6e99398..fcbf4747 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -30,7 +30,7 @@ internal class GroupShape( ) : Shape, ContentGroup by ContentGroupImpl( name = name, - hidden = { hidden }, + hidden = null, // overrided contents = items, transform = items.firstInstanceOf() ) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 19fbc240..9fc7dd8b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -117,10 +117,9 @@ internal class MergePathsShape( private fun opFirstPathWithRest(op: PathOperation, state: AnimationState) { - remainderPath.reset() - firstPath.reset() - - path.reset() + remainderPath.rewind() + firstPath.rewind() + path.rewind() if (pathContents.isEmpty()) return diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 1c580521..37d9eafe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -45,12 +45,12 @@ internal class PathShape( private var dynamicShape : DynamicShapeProvider? = null override fun getPath(state: AnimationState): Path { - path.reset() + path.rewind() if (dynamicShape?.hidden.derive(hidden, state)) { return path } - path.set(shape.interpolatedRaw(state)) + path.set(shape.interpolated(state)) path.fillType = PathFillType.EvenOdd trimPaths?.apply(path, state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index e305b05e..369f644f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -304,7 +304,7 @@ internal class PolystarShape( // We want the final bezier curve to end *slightly* before the start. // The close() call at the end will complete the polystar. // https://github.com/airbnb/lottie-android/issues/2329 - lastSegmentPath.reset() + lastSegmentPath.rewind() lastSegmentPath.moveTo(previousX, previousY) lastSegmentPath.cubicTo(vX, vY, cpX, cpY, x, y) lastSegmentPathMeasure.setPath(lastSegmentPath, false) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 7b1893dc..317ce669 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -92,7 +92,7 @@ internal class RepeaterShape( } override fun getPath(state: AnimationState): Path { - path.reset() + path.rewind() val contentPath = contentGroup?.getPath(state) ?: return path val copies = copies.interpolated(state) diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt index cb44fd7d..86327622 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformPath.skiko.kt @@ -20,6 +20,5 @@ private class SkikoExtendedPathMeasure( } } - internal actual fun Path.addPath(path: Path, matrix: Matrix) = asSkiaPath().addPath(path.asSkiaPath(), matrix = matrix.asSkia33()).asComposePath() \ No newline at end of file diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index db592807..8142caf1 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -10,11 +10,11 @@ import androidx.activity.compose.setContent class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { - StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder() - .detectAll() - .penaltyLog() - .penaltyDeath() - .build()); +// StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder() +// .detectAll() +// .penaltyLog() +// .penaltyDeath() +// .build()); super.onCreate(savedInstanceState) setContent { App() } } diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index f7be58af..2091923b 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -1,18 +1,22 @@ import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image +import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid import androidx.compose.foundation.shape.GenericShape import androidx.compose.foundation.text.BasicTextField @@ -36,6 +40,7 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.drawscope.draw +import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.drawText import androidx.compose.ui.text.font.FontFamily @@ -46,6 +51,7 @@ import compottie.example.shared.generated.resources.ComicNeue import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.CompottieException import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi +import io.github.alexzhirkevich.compottie.LottieClipSpec import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants @@ -89,6 +95,36 @@ private val IMAGE_ASSET_EMBEDDED = "image_asset_embedded.json" private val DOT = "dotlottie/dot.lottie" private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" +private val ALL = listOf( + GRADIENT_ELLIPSE, + TEST, + CHECKMARK, + FADE_BALLS, + BOUNCING_BALL, + POLYSTAR, + RECT, + ROUND_RECT, + ROBOT, + ROBOT_404, + ASTRONAUT, + ANGEL, + CONFETTI, + WONDERS, + PRECOMP_WITH_REMAPPING, + MASK_ADD, + MATTE_LUMA, + DASH, + ROUNDING_CORENERS, + REPEATER, + AUTOORIENT, + TEXT_WITH_PATH, + TEXT, + TEXT_GLYPHS, + TEXT_OFFSET, + IMAGE_ASSET, + IMAGE_ASSET_EMBEDDED, +) + /** * [LottieComposition] spec from composeResources/[dir]/[path] json asset @@ -106,8 +142,7 @@ suspend fun LottieCompositionSpec.Companion.Resource( fun App() { // return LottieFontExample() -// return LottieList() - +// return AllExamples() val composition = rememberLottieComposition( assetsManager = rememberResourcesAssetsManager( @@ -123,16 +158,18 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } -// LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Resource(ROBOT) // - LottieCompositionSpec.Url( - "https://assets-v2.lottiefiles.com/a/cae79014-1161-11ee-8989-bf611d47f80c/HSa6KZQ7MY.lottie", +// LottieCompositionSpec.Url( +// "https://assets-v2.lottiefiles.com/a/1633f0d6-117a-11ee-a98b-eb5ca344688a/8OoA7VFval.lottie", +// "https://assets-v2.lottiefiles.com/a/10956594-1169-11ee-98fe-ef3d9d71ad0f/WVFg2bDWGj.lottie", +// "https://assets-v2.lottiefiles.com/a/0e63252e-1153-11ee-9e35-dfc2b798a135/sYygPbem7R.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", // "https://dotlottie.io/sample_files/animation-external-image.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/anim_jpg.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/ZipInlineImage.zip", - ) +// ) } // If you want to be aware of loading errors @@ -150,15 +187,16 @@ fun App() { ) { val progress by animateLottieCompositionAsState( -// clipSpec = LottieClipSpec.Frame(165, 235,true), +// clipSpec = LottieClipSpec.Progress(.55f, 1f), iterations = LottieConstants.IterateForever, composition = composition.value ) val painter = rememberLottiePainter( composition = composition.value, progress = { progress }, - clipToCompositionBounds = false +// clipToCompositionBounds = false ) + Image( modifier = Modifier .fillMaxSize() @@ -173,8 +211,42 @@ fun App() { } } -private val ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ':, \n" +@OptIn(ExperimentalResourceApi::class, ExperimentalCompottieApi::class) +@Composable +fun AllExamples(){ + LazyVerticalGrid( + modifier = Modifier + .fillMaxSize() + .opacityGrid(), + columns = GridCells.FixedSize(150.dp), + ){ + items(ALL) { + val composition by rememberLottieComposition( + assetsManager = rememberResourcesAssetsManager( + readBytes = Res::readBytes + ), + fontManager = rememberResourcesFontManager { fontSpec -> + when (fontSpec.family) { + "Comic Neue" -> Res.font.ComicNeue + else -> null + } + }, + ) { + LottieCompositionSpec.Resource(it) + } + + Image( + painter = rememberLottiePainter(composition, iterations = LottieConstants.IterateForever), + contentDescription = null, + modifier = Modifier + .size(150.dp) + .border(1.dp, Color.Black ) + ) + } + } +} +private val ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ':, \n" @OptIn(ExperimentalLayoutApi::class) @Composable diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bbfc2352..e05d13d6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,7 @@ lottie-android="6.4.0" okio = "3.9.0" serialization="1.6.2" ktor="2.3.11" -atomicfu="0.23.1" +atomicfu="0.23.2" coroutines="1.8.0" [libraries] From 673246bfb9a362fd31db91f6bff824919e8fc7fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 22 Jun 2024 23:56:49 +0300 Subject: [PATCH 064/100] refactor gradle scripts --- build.gradle.kts | 166 +++++++++++++++++++- compottie-dot/build.gradle.kts | 155 ------------------ compottie-network/build.gradle.kts | 154 ------------------ compottie-resources/build.gradle.kts | 136 ---------------- compottie/build.gradle.kts | 154 ------------------ example/shared/build.gradle.kts | 13 +- example/shared/src/commonMain/kotlin/App.kt | 27 +--- gradle.properties | 6 +- gradle/libs.versions.toml | 12 +- 9 files changed, 185 insertions(+), 638 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index c3168c3b..006b79ca 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,11 +1,18 @@ @file:Suppress("DSL_SCOPE_VIOLATION") + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import java.util.Base64 +import java.util.Properties + plugins { - alias(libs.plugins.kotlin.multiplatform).apply(false) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.android.application).apply(false) - alias(libs.plugins.android.library).apply(false) + alias(libs.plugins.android.library) alias(libs.plugins.compose).apply(false) alias(libs.plugins.dokka).apply(false) alias(libs.plugins.serialization).apply(false) + id("maven-publish") + id("signing") } buildscript { @@ -14,6 +21,161 @@ buildscript { } } +val jvmTarget = findProperty("jvmTarget") as String + +val _group = findProperty("group") as String + +subprojects { + if (!name.startsWith("compottie")){ + return@subprojects + } + + plugins.apply("maven-publish") + plugins.apply("signing") + plugins.apply("org.jetbrains.kotlin.multiplatform") + plugins.apply("com.android.library") + + group = _group + version = findProperty("version") as String + + kotlin { + @OptIn(ExperimentalKotlinGradlePluginApi::class) + applyDefaultHierarchyTemplate { + common { + group("jvmNative") { + withAndroidTarget() + withJvm() + withIos() + withMacos() + } + group("web"){ + withJs() + withWasmJs() + } + group("skiko"){ + withJvm() + withIos() + withMacos() + withJs() + withWasmJs() + } + } + } + + androidTarget { + compilations.all { + kotlinOptions.jvmTarget = jvmTarget + } + publishLibraryVariants("release") + } + + iosArm64() + iosX64() + iosSimulatorArm64() + macosX64() + macosArm64() + + + jvm("desktop") { + compilations.all { + kotlinOptions.jvmTarget = jvmTarget + } + } + + js(IR) { + browser() + } + + wasmJs() { + browser() + } + } + + android { + namespace = "_$_group.${name.filter { it.isLetter() }}" + compileSdk = (findProperty("android.compileSdk") as String).toInt() + + defaultConfig { + minSdk = (findProperty("android.minSdk") as String).toInt() + } + compileOptions { + sourceCompatibility = JavaVersion.toVersion(jvmTarget) + targetCompatibility = JavaVersion.toVersion(jvmTarget) + } + } + + val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") + } + + val signingTasks = tasks.withType() + + tasks.withType().configureEach { + dependsOn(signingTasks) + } + publishing { + if (rootProject.ext.has("ossrhPassword")) { + repositories.maven { + val releasesRepoUrl = + "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + val snapshotsRepoUrl = + "https://s01.oss.sonatype.org/content/repositories/snapshots/" + url = if (version.toString().endsWith("SNAPSHOT")) { + uri(snapshotsRepoUrl) + } else { + uri(releasesRepoUrl) + } + credentials { + username = rootProject.ext.get("ossrhUsername").toString() + password = rootProject.ext.get("ossrhPassword").toString() + } + } + } + + publications.withType { + artifact(javadocJar) + pom { + name.set("Compottie") + description.set("Compose Multiplatform Lottie animation renderer") + url.set("https://github.com/alexzhirkevich/compottie") + + licenses { + license { + name.set("MIT") + url.set("https://opensource.org/licenses/MIT") + } + } + developers { + developer { + id.set("alexzhirkevich") + name.set("Alexander Zhirkevich") + email.set("sasha.zhirkevich@gmail.com") + } + } + scm { + url.set("https://github.com/alexzhirkevich/compottie") + connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + } + } + } + } + if (System.getenv("GPG_KEY") != null) { + signing { + useInMemoryPgpKeys( + Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), + System.getenv("GPG_KEY_PWD"), + ) + sign(publishing.publications) + } + } +} + +android { + namespace = "$_group.${project.name}" + compileSdk = (findProperty("android.compileSdk") as String).toInt() +} + //tasks.register("clean", Delete::class) { // delete(rootProject.buildDir) //} diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts index 5a5dcc1b..11d7cb7e 100644 --- a/compottie-dot/build.gradle.kts +++ b/compottie-dot/build.gradle.kts @@ -1,73 +1,14 @@ @file:Suppress("DSL_SCOPE_VIOLATION") -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import java.util.Base64 - plugins { alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) alias(libs.plugins.serialization) - id("maven-publish") - id("signing") } -group = "io.github.alexzhirkevich" -version = libs.versions.compottie.get() - -val _jvmTarget = findProperty("jvmTarget") as String - kotlin { - @OptIn(ExperimentalKotlinGradlePluginApi::class) - applyDefaultHierarchyTemplate { - common { - group("jvmNative") { - withAndroidTarget() - withJvm() - withIos() - withMacos() - } - group("web"){ - withJs() - withWasmJs() - } - } - } - - androidTarget{ - publishLibraryVariants("release") - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - - - iosArm64() - iosX64() - iosSimulatorArm64() - - wasmJs(){ - browser() - } - js(IR){ - browser() - } - jvm("desktop"){ - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - - macosArm64() - macosX64() - - sourceSets { commonMain.dependencies { implementation(compose.ui) @@ -77,101 +18,5 @@ kotlin { implementation(libs.coroutines.core) implementation(project(":compottie")) } - - val desktopMain by getting - - val webMain by getting { - dependencies { - implementation(npm("pako","2.1.0")) - } - } - - jsMain. dependencies { -// implementation(npm("pako","2.1.0")) - implementation(npm("browserify-zlib","0.2.0")) - } } } - -android { - namespace = "io.github.alexzhirkevich.compottie" - compileSdk = 34 - defaultConfig { - minSdk = 21 - } - - compileOptions { - sourceCompatibility = JavaVersion.toVersion(_jvmTarget) - targetCompatibility = JavaVersion.toVersion(_jvmTarget) - } -} - -val javadocJar by tasks.registering(Jar::class) { - archiveClassifier.set("javadoc") -} -// https://github.com/gradle/gradle/issues/26091 -val signingTasks = tasks.withType() -tasks.withType().configureEach { - dependsOn(signingTasks) -} - -publishing { - if (System.getenv("OSSRH_PASSWORD")!=null) { - - repositories { - maven { - val releasesRepoUrl = - "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" - val snapshotsRepoUrl = - "https://s01.oss.sonatype.org/content/repositories/snapshots/" - url = if (version.toString().contains("dev")) { - uri(snapshotsRepoUrl) - } else { - uri(releasesRepoUrl) - } - credentials { - username = System.getenv("OSSRH_USERNAME") - password = System.getenv("OSSRH_PASSWORD") - } - } - } - } - - publications.withType { - artifact(javadocJar) - pom { - name.set("Compottie") - description.set("Compose Multiplatform lottie animation") - url.set("https://github.com/alexzhirkevich/compottie") - - licenses { - license { - name.set("MIT") - url.set("https://opensource.org/licenses/MIT") - } - } - developers { - developer { - id.set("alexzhirkevich") - name.set("Alexander Zhirkevich") - email.set("sasha.zhirkevich@gmail.com") - } - } - scm { - url.set("https://github.com/alexzhirkevich/compottie") - connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - } - } - } -} - -if (System.getenv("GPG_KEY") != null) { - signing { - useInMemoryPgpKeys( - Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), - System.getenv("GPG_KEY_PWD"), - ) - sign(publishing.publications) - } -} \ No newline at end of file diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index 353a82d8..d8557963 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -5,70 +5,12 @@ import java.util.Base64 plugins { alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) alias(libs.plugins.serialization) id("kotlinx-atomicfu") - id("maven-publish") - id("signing") } - -group = "io.github.alexzhirkevich" -version = libs.versions.compottie.get() - -val _jvmTarget = findProperty("jvmTarget") as String - kotlin { - - @OptIn(ExperimentalKotlinGradlePluginApi::class) - applyDefaultHierarchyTemplate { - common { - group("jvmNative") { - withAndroidTarget() - withJvm() - withIos() - withMacos() - } - group("web"){ - withJs() - withWasmJs() - } - } - } - - androidTarget{ - publishLibraryVariants("release") - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - - - iosArm64() - iosX64() - iosSimulatorArm64() - - wasmJs(){ - browser() - } - js(IR){ - browser() - } - jvm("desktop"){ - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - - macosArm64() - macosX64() - - sourceSets { commonMain.dependencies { implementation(compose.ui) @@ -80,99 +22,3 @@ kotlin { } } } - -android { - namespace = "io.github.alexzhirkevich.compottie" - compileSdk = 34 - defaultConfig { - minSdk = 21 - } - - compileOptions { - sourceCompatibility = JavaVersion.toVersion(_jvmTarget) - targetCompatibility = JavaVersion.toVersion(_jvmTarget) - } -} - -val javadocJar by tasks.registering(Jar::class) { - archiveClassifier.set("javadoc") -} -// https://github.com/gradle/gradle/issues/26091 -val signingTasks = tasks.withType() -tasks.withType().configureEach { - dependsOn(signingTasks) -} - -publishing { - if (System.getenv("OSSRH_PASSWORD")!=null) { - - repositories { - maven { - val releasesRepoUrl = - "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" - val snapshotsRepoUrl = - "https://s01.oss.sonatype.org/content/repositories/snapshots/" - url = if (version.toString().contains("dev")) { - uri(snapshotsRepoUrl) - } else { - uri(releasesRepoUrl) - } - credentials { - username = System.getenv("OSSRH_USERNAME") - password = System.getenv("OSSRH_PASSWORD") - } - } - } - } - - publications.withType { - artifact(javadocJar) - pom { - name.set("compottie-network") - description.set("Compose Multiplatform lottie animation") - url.set("https://github.com/alexzhirkevich/compottie") - - licenses { - license { - name.set("MIT") - url.set("https://opensource.org/licenses/MIT") - } - } - developers { - developer { - id.set("alexzhirkevich") - name.set("Alexander Zhirkevich") - email.set("sasha.zhirkevich@gmail.com") - } - } - scm { - url.set("https://github.com/alexzhirkevich/compottie") - connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - } - } - } -} - -if (System.getenv("GPG_KEY") != null) { - signing { - useInMemoryPgpKeys( - Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), - System.getenv("GPG_KEY_PWD"), - ) - sign(publishing.publications) - } -} - - -configurations - .filter { it.name.contains("wasmJs") } - .onEach { - it.resolutionStrategy.eachDependency { - if (requested.group.startsWith("io.ktor") && - requested.name.startsWith("ktor-client-") - ) { - useVersion("3.0.0-wasm2") - } - } - } \ No newline at end of file diff --git a/compottie-resources/build.gradle.kts b/compottie-resources/build.gradle.kts index 591198b9..29eef8bf 100644 --- a/compottie-resources/build.gradle.kts +++ b/compottie-resources/build.gradle.kts @@ -5,64 +5,11 @@ import java.util.Base64 plugins { alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) - id("maven-publish") - id("signing") } -group = "io.github.alexzhirkevich" -version = libs.versions.compottie.get() - -val _jvmTarget = findProperty("jvmTarget") as String - kotlin { - - @OptIn(ExperimentalKotlinGradlePluginApi::class) - applyDefaultHierarchyTemplate { - common { - group("skiko") { - withJvm() - withIos() - withMacos() - withJs() - withWasmJs() - } - } - } - - androidTarget{ - publishLibraryVariants("release") - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - - - iosArm64() - iosX64() - iosSimulatorArm64() - - wasmJs(){ - browser() - } - js(IR){ - browser() - } - jvm("desktop"){ - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - - macosArm64() - macosX64() - sourceSets { commonMain.dependencies { implementation(compose.ui) @@ -72,86 +19,3 @@ kotlin { } } } - -android { - namespace = "io.github.alexzhirkevich.compottie" - compileSdk = 34 - defaultConfig { - minSdk = 21 - } - - compileOptions { - sourceCompatibility = JavaVersion.toVersion(_jvmTarget) - targetCompatibility = JavaVersion.toVersion(_jvmTarget) - } -} - -val javadocJar by tasks.registering(Jar::class) { - archiveClassifier.set("javadoc") -} -// https://github.com/gradle/gradle/issues/26091 -val signingTasks = tasks.withType() -tasks.withType().configureEach { - dependsOn(signingTasks) -} - -publishing { - if (System.getenv("OSSRH_PASSWORD")!=null) { - - repositories { - maven { - val releasesRepoUrl = - "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" - val snapshotsRepoUrl = - "https://s01.oss.sonatype.org/content/repositories/snapshots/" - url = if (version.toString().contains("dev")) { - uri(snapshotsRepoUrl) - } else { - uri(releasesRepoUrl) - } - credentials { - username = System.getenv("OSSRH_USERNAME") - password = System.getenv("OSSRH_PASSWORD") - } - } - } - } - - publications.withType { - artifact(javadocJar) - pom { - name.set("Compottie") - description.set("Compose Multiplatform lottie animation") - url.set("https://github.com/alexzhirkevich/compottie") - - licenses { - license { - name.set("MIT") - url.set("https://opensource.org/licenses/MIT") - } - } - developers { - developer { - id.set("alexzhirkevich") - name.set("Alexander Zhirkevich") - email.set("sasha.zhirkevich@gmail.com") - } - } - scm { - url.set("https://github.com/alexzhirkevich/compottie") - connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - } - } - } -} - -if (System.getenv("GPG_KEY") != null) { - signing { - useInMemoryPgpKeys( - Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), - System.getenv("GPG_KEY_PWD"), - ) - sign(publishing.publications) - } -} \ No newline at end of file diff --git a/compottie/build.gradle.kts b/compottie/build.gradle.kts index 73fd09e9..3d434fcb 100644 --- a/compottie/build.gradle.kts +++ b/compottie/build.gradle.kts @@ -1,172 +1,18 @@ @file:Suppress("DSL_SCOPE_VIOLATION") -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import java.util.Base64 - plugins { alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.android.library) alias(libs.plugins.compose) alias(libs.plugins.composeCompiler) alias(libs.plugins.serialization) id("kotlinx-atomicfu") - id("maven-publish") - id("signing") } -group = "io.github.alexzhirkevich" -version = libs.versions.compottie.get() - -val _jvmTarget = findProperty("jvmTarget") as String - kotlin { - - applyDefaultHierarchyTemplate{ - @OptIn(ExperimentalKotlinGradlePluginApi::class) - common { - group("jvmNative") { - withAndroidTarget() - withJvm() - withIos() - withMacos() - } - group("web"){ - withJs() - withWasmJs() - } - } - } - - androidTarget{ - publishLibraryVariants("release") - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - iosArm64() - iosX64() - iosSimulatorArm64() - - wasmJs(){ - browser() - } - js(IR){ - browser() - } - jvm("desktop"){ - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - - macosArm64() - macosX64() - - sourceSets { commonMain.dependencies { implementation(compose.foundation) - implementation(compose.animation) implementation(libs.serialization) } - - val desktopMain by getting - val wasmJsMain by getting - - val skikoMain by creating { - dependsOn(commonMain.get()) - desktopMain.dependsOn(this) - iosMain.get().dependsOn(this) - macosMain.get().dependsOn(this) - jsMain.get().dependsOn(this) - wasmJsMain.dependsOn(this) - } } } - -android { - namespace = "io.github.alexzhirkevich.compottie" - compileSdk = 34 - defaultConfig { - minSdk = 21 - } - - compileOptions { - sourceCompatibility = JavaVersion.toVersion(_jvmTarget) - targetCompatibility = JavaVersion.toVersion(_jvmTarget) - } -} - -val javadocJar by tasks.registering(Jar::class) { - archiveClassifier.set("javadoc") -} -// https://github.com/gradle/gradle/issues/26091 -val signingTasks = tasks.withType() -tasks.withType().configureEach { - dependsOn(signingTasks) -} - -publishing { - if (System.getenv("OSSRH_PASSWORD")!=null) { - - repositories { - maven { - val releasesRepoUrl = - "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" - val snapshotsRepoUrl = - "https://s01.oss.sonatype.org/content/repositories/snapshots/" - url = if (version.toString().contains("dev")) { - uri(snapshotsRepoUrl) - } else { - uri(releasesRepoUrl) - } - credentials { - username = System.getenv("OSSRH_USERNAME") - password = System.getenv("OSSRH_PASSWORD") - } - } - } - } - - publications.withType { - artifact(javadocJar) - pom { - name.set("Compottie") - description.set("Compose Multiplatform lottie animation") - url.set("https://github.com/alexzhirkevich/compottie") - - licenses { - license { - name.set("MIT") - url.set("https://opensource.org/licenses/MIT") - } - } - developers { - developer { - id.set("alexzhirkevich") - name.set("Alexander Zhirkevich") - email.set("sasha.zhirkevich@gmail.com") - } - } - scm { - url.set("https://github.com/alexzhirkevich/compottie") - connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - } - } - } -} - -if (System.getenv("GPG_KEY") != null) { - signing { - useInMemoryPgpKeys( - Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), - System.getenv("GPG_KEY_PWD"), - ) - sign(publishing.publications) - } -} \ No newline at end of file diff --git a/example/shared/build.gradle.kts b/example/shared/build.gradle.kts index 1e0d10ac..26eb8d0a 100644 --- a/example/shared/build.gradle.kts +++ b/example/shared/build.gradle.kts @@ -1,15 +1,15 @@ +@Suppress("DSL_SCOPE_VIOLATION") + plugins { - kotlin("multiplatform") - id("com.android.library") - id("org.jetbrains.compose") alias(libs.plugins.composeCompiler) + alias(libs.plugins.compose) + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.multiplatform) } val _jvmTarget = findProperty("jvmTarget") as String -//@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) kotlin { -// targetHierarchy.default() applyDefaultHierarchyTemplate() jvm("desktop") { @@ -53,7 +53,6 @@ kotlin { implementation(compose.runtime) implementation(compose.material3) implementation(compose.foundation) - @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) implementation(compose.components.resources) } androidMain.dependencies { @@ -80,7 +79,7 @@ kotlin { } android { - namespace = "io.github.alexzhirkevich.compottie.example" + namespace = "compottie.example" compileSdk = 34 sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 2091923b..f45b8603 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -7,23 +7,18 @@ import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items -import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid -import androidx.compose.foundation.shape.GenericShape import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.NoLiveLiterals import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -32,35 +27,25 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind -import androidx.compose.ui.draw.drawWithCache -import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.drawscope.draw -import androidx.compose.ui.graphics.graphicsLayer -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.text.drawText -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.rememberTextMeasurer import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import compottie.example.shared.generated.resources.ComicNeue -import compottie.example.shared.generated.resources.Res import io.github.alexzhirkevich.compottie.CompottieException import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi -import io.github.alexzhirkevich.compottie.LottieClipSpec import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState -import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import io.github.alexzhirkevich.compottie.rememberResourcesAssetsManager import io.github.alexzhirkevich.compottie.rememberResourcesFontManager +import io.github.alexzhirkevich.shared.generated.resources.ComicNeue +import io.github.alexzhirkevich.shared.generated.resources.Res import kotlinx.coroutines.delay import org.jetbrains.compose.resources.ExperimentalResourceApi @@ -158,10 +143,10 @@ fun App() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(ROBOT) +// LottieCompositionSpec.Resource(ROBOT) // -// LottieCompositionSpec.Url( -// "https://assets-v2.lottiefiles.com/a/1633f0d6-117a-11ee-a98b-eb5ca344688a/8OoA7VFval.lottie", + LottieCompositionSpec.Url( + "https://assets-v2.lottiefiles.com/a/1633f0d6-117a-11ee-a98b-eb5ca344688a/8OoA7VFval.lottie", // "https://assets-v2.lottiefiles.com/a/10956594-1169-11ee-98fe-ef3d9d71ad0f/WVFg2bDWGj.lottie", // "https://assets-v2.lottiefiles.com/a/0e63252e-1153-11ee-9e35-dfc2b798a135/sYygPbem7R.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", @@ -169,7 +154,7 @@ fun App() { // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/anim_jpg.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/ZipInlineImage.zip", -// ) + ) } // If you want to be aware of loading errors diff --git a/gradle.properties b/gradle.properties index b6d6ff40..76656f90 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,10 +7,14 @@ jvmTarget=11 #Android android.useAndroidX=true android.nonTransitiveRClass=true - +android.compileSdk=34 +android.targetSdk=34 +android.minSdk=21 #MPP kotlin.mpp.enableCInteropCommonization=true kotlin.mpp.androidSourceSetLayoutVersion=2 +version = "2.0.0-beta01" +group=io.github.alexzhirkevich org.jetbrains.compose.experimental.macos.enabled=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e05d13d6..6e194efb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,18 +1,15 @@ [versions] -compottie = "1.1.1" kotlin="2.0.0" dokka="1.9.0" compose="1.6.10" -androidGradlePlugin = "8.1.1" -lottie-android="6.4.0" +agp = "8.1.1" okio = "3.9.0" -serialization="1.6.2" +serialization="1.6.3" ktor="2.3.11" atomicfu="0.23.2" coroutines="1.8.0" [libraries] -lottie-android = { module ="com.airbnb.android:lottie-compose", version.ref = "lottie-android" } okio = { module = "com.squareup.okio:okio", version.ref = "okio" } okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "okio" } serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } @@ -26,9 +23,8 @@ coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", ve [plugins] compose = { id = "org.jetbrains.compose", version.ref = "compose" } kotlin-multiplatform = { id ="org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } -kotlin-android = { id ="org.jetbrains.kotlin.android", version.ref = "kotlin" } -android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } -android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } +android-application = { id = "com.android.application", version.ref = "agp" } +android-library = { id = "com.android.library", version.ref = "agp" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } From 10c1d5b1e2f0781a0216cb3732a99ed4a8abd4ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 23 Jun 2024 01:12:40 +0300 Subject: [PATCH 065/100] move managers to painter --- README.md | 40 +++---- .../compottie/DotLottieCompositionSpec.kt | 6 +- .../compottie/UrlCompositionSpec.kt | 15 ++- .../io/github/alexzhirkevich/compottie/L.kt | 1 + .../compottie/LottieComposition.kt | 106 +++++++++--------- .../alexzhirkevich/compottie/LottiePainter.kt | 40 ++++++- .../compottie/assets/LottieFontManager.kt | 3 +- .../compottie/internal/AnimationState.kt | 2 + .../compottie/internal/LottieJson.kt | 6 +- .../compottie/internal/assets/ImageAsset.kt | 7 +- .../compottie/internal/assets/LottieAsset.kt | 17 +-- .../internal/assets/PrecompositionAsset.kt | 6 +- .../compottie/internal/layers/TextLayer.kt | 2 +- example/shared/src/commonMain/kotlin/App.kt | 65 +++++------ 14 files changed, 167 insertions(+), 149 deletions(-) diff --git a/README.md b/README.md index deb16c33..2ec5b035 100644 --- a/README.md +++ b/README.md @@ -220,26 +220,28 @@ val composition = rememberLottieComposition( Text can be drawn in 2 ways: using fonts and using glyphs (when characters are baked to the animation as lottie shapes) -`LottieFontManager` should be passed to `rememberLottieComposition` to use custom fonts. +`LottieFontManager` should be passed to `rememberLottiePainter` to use custom fonts. `compottie-resources` provides ready-to-use implementation that loads fonts from compose-resources: ```kotlin -val composition = rememberLottieComposition( +val composition by rememberLottieComposition() { + //... +} + +val painter = rememberLottiePainter( + composition = composition, fontManager = rememberResourcesFontManager { fontSpec -> when (fontSpec.family) { "Comic Neue" -> Res.font.ComicNeue else -> null // default font will be used } } -) { - LottieCompositionSpec.JsonString( - Res.readBytes("files/anim.json").decodeToString() - ) -} +) ``` ## URL loading -To load images remotely `compottie-network` module should be added as a dependensy. This module brings an additional composition spec called `LottieCompositionSpec.Url` +To load images remotely `compottie-network` module should be added as a dependensy. +This module brings an additional composition spec called `LottieCompositionSpec.Url` ```kotlin fun LottieCompositionSpec.Companion.Url( url : String, @@ -251,23 +253,17 @@ fun LottieCompositionSpec.Companion.Url( ``` that can be used to load JSON and dotLottie animations from the Internet. -`LottieAnimationFormat` is used to determine wheither animation is a JSON or dotLottie. If you left it `Undefined`, composition spec will automatically detect is this a JSON or dotLottie file. - -Ktor HTTP client can be overrided with `client` parameter. `request` is a lambda that takes url and client and returns a HTTP responce. By default it is a GET request. - -Caching strategy can be set with `cacheStrategy` parameter. By default animations are cached in the device temp directory. +`LottieAnimationFormat` is used to determine wheither animation is a JSON or dotLottie. If you left it `Undefined`, +composition spec will automatically detect is this a JSON or dotLottie file. -The network module also brings the `NetworkAssetsManager` that have similar parameters and can be used to load image assets +Ktor HTTP client can be provided with `client` parameter. -Complete usage example: +Caching strategy can be set with `cacheStrategy` parameter. By default animations are cached in the +device temp directory. -```kotlin -val composition by rememberLottieComposition( - assetsManager = remember { NetworkAssetsManager() } -) { - LottieCompositionSpec.Url("https://example.com/animation.json") -} -``` +The network module also brings the `NetworkAssetsManager` that have similar parameters and can be used to load image assets. +If you are using Url composition spec then specifying `NetworkAssetsManager` is redundant. +Url composition spec automatically prepares url assets ## Dynamic Properties diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 66547526..c06e0ba7 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -77,15 +77,15 @@ private class DotLottieCompositionSpec( if (animation.loop) { iterations = LottieConstants.IterateForever } - prepare(DotLottieAssetsManager(zipSystem, manifestPath.parent)) + prepareAssets(DotLottieAssetsManager(zipSystem, manifestPath.parent)) } } else { val animPath = entries.keys.first { it.name.endsWith(".json", true) } val anim = zipSystem.read(animPath) LottieComposition.parse(anim.decodeToString()).apply { - prepare( - assetsManager = DotLottieAssetsManager( + prepareAssets( + DotLottieAssetsManager( zipFileSystem = zipSystem, root = animPath.parent ) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 69cedc03..0d02c9bf 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -24,11 +24,14 @@ import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext /** - * [LottieComposition] from web [url] + * [LottieComposition] from network [url] * - * @param client Ktor http client to use - * @param assetsManager manager for assets that not embedded to the animation JSON or dotLottie archive. - * [NetworkAssetsManager] is used by default + * @param format animation format. Composition spec will try to guess format if format is not specified. + * @param client http client user for loading animation + * @param request request builder. Simple GET by default + * @param cacheStrategy caching strategy. Caching to system tmp dir by default + * + * URL assets will be automatically prepared with [NetworkAssetsManager] * */ @Stable fun LottieCompositionSpec.Companion.Url( @@ -54,6 +57,8 @@ private class NetworkCompositionSpec( private val request : NetworkRequest, ) : LottieCompositionSpec { + private val assetsManager = NetworkAssetsManager(client, cacheStrategy, request) + @OptIn(InternalCompottieApi::class) override suspend fun load(cacheKey : Any?): LottieComposition { return withContext(ioDispatcher()) { @@ -92,6 +97,8 @@ private class NetworkCompositionSpec( mutexByUrl.remove(url) } } + }.apply { + prepareAssets(assetsManager) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt index c196b906..dcf031cd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt @@ -34,6 +34,7 @@ object L { /** * Warmup JSON parser. The first animation parsing will be much faster * */ + @ExperimentalCompottieApi fun warmup() { LottieJson.decodeFromString(warmupAnim) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index ede220d9..aeabe203 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -10,6 +10,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue +import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager @@ -19,7 +20,7 @@ import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset -import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument +import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async @@ -32,41 +33,30 @@ import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext import kotlin.time.Duration import kotlin.time.Duration.Companion.microseconds -import kotlin.time.Duration.Companion.milliseconds /** * Load and prepare [LottieComposition] for displaying. * * Instance produces by [spec] will be remembered until [key] is changed. Those instances * are cached across the whole application. Cache size can be configured with [L.compositionCacheLimit] - * - * You can configure various dynamic animation properties in the [dynamic] block. * */ @OptIn(InternalCompottieApi::class) @Composable -@Stable fun rememberLottieComposition( key : Any? = currentCompositeKeyHash, - assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, - fontManager: LottieFontManager = LottieFontManager.Empty, spec : suspend () -> LottieCompositionSpec, ) : LottieCompositionResult { val updatedSpec by rememberUpdatedState(spec) - val result = remember(key, assetsManager) { + val result = remember(key) { LottieCompositionResultImpl() } LaunchedEffect(result) { try { val composition = withContext(ioDispatcher()) { - updatedSpec().load(key).apply { - prepare( - assetsManager = assetsManager, - fontManager = fontManager - ) - } + updatedSpec().load(key) } result.complete(composition) } catch (c: CancellationException) { @@ -83,18 +73,40 @@ fun rememberLottieComposition( } /** - * Load and prepare [LottieComposition]. + * Load [LottieComposition]. * */ +@OptIn(InternalCompottieApi::class) @Deprecated( "Use overload with lambda instead", ReplaceWith("rememberLottieComposition { spec }") ) -@OptIn(InternalCompottieApi::class) @Composable -@Stable fun rememberLottieComposition( spec : LottieCompositionSpec, -) : LottieCompositionResult =rememberLottieComposition { spec } +) : LottieCompositionResult { + + val result = remember(spec) { + LottieCompositionResultImpl() + } + + LaunchedEffect(result) { + try { + val composition = withContext(ioDispatcher()) { + spec.load() + } + result.complete(composition) + } catch (c: CancellationException) { + result.completeExceptionally(c) + throw c + } catch (t: Throwable) { + result.completeExceptionally( + CompottieException("Composition failed to load", t) + ) + } + } + + return result +} @Stable class LottieComposition internal constructor( @@ -150,18 +162,13 @@ class LottieComposition internal constructor( @InternalCompottieApi set - private var fontsByFamily: Map = emptyMap() - - private val prepareMutex = Mutex() - private val charGlyphs: Map> = animation.chars .groupBy(CharacterData::fontFamily) .mapValues { it.value.associateBy(CharacterData::character) } - internal fun findFont(family: String?) : FontFamily? { - return fontsByFamily[family] - } + + private val assetsMutex = Mutex() internal fun findGlyphs(family : String?) : Map? { return charGlyphs[family] ?: run { @@ -173,37 +180,23 @@ class LottieComposition internal constructor( } } - private var isPrepared = false - - /** - * Preload assets for instant animation displaying. - * - * Assets that are already loaded (such as embedded base64 images or assets - * successfully loaded at prev [prepare] call) will not be loaded again - * */ - suspend fun prepare( - assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, - fontManager: LottieFontManager = LottieFontManager.Empty - ) { - prepareMutex.withLock { -// if (!isPrepared) { - coroutineScope { - launch { - loadAssets(assetsManager) - } - launch { - loadFonts(fontManager) - } - }.invokeOnCompletion { - isPrepared = it == null - } -// } + @InternalCompottieApi + suspend fun prepareAssets(assetsManager: LottieAssetsManager) { + assetsMutex.withLock { + loadAssets(assetsManager, false) } } - private suspend fun loadAssets(assetsManager: LottieAssetsManager) { + internal suspend fun loadAssets( + assetsManager: LottieAssetsManager, + copy : Boolean + ) : List { + val assets = if (copy) + animation.assets.map(LottieAsset::copy) + else animation.assets + coroutineScope { - animation.assets.mapNotNull { asset -> + assets.mapNotNull { asset -> when (asset) { is ImageAsset -> { if (asset.bitmap == null) { @@ -225,15 +218,16 @@ class LottieComposition internal constructor( } }.joinAll() } + return assets } - private suspend fun loadFonts(assetsManager: LottieFontManager) { - coroutineScope { - fontsByFamily = animation.fonts?.list + internal suspend fun loadFonts(fontManager: LottieFontManager) : Map { + return coroutineScope { + animation.fonts?.list ?.map { async { - val f = it.font ?: assetsManager.font( + val f = it.font ?: fontManager.font( LottieFontSpec( family = it.family, name = it.name, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 5fe35f87..be83e06c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.produceState import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope @@ -20,12 +21,17 @@ import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.lerp +import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager +import io.github.alexzhirkevich.compottie.assets.LottieFontManager import io.github.alexzhirkevich.compottie.dynamic.DynamicProperties import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider +import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.Layer +import kotlinx.coroutines.async +import kotlinx.coroutines.withContext import kotlin.math.roundToInt /** @@ -35,6 +41,11 @@ import kotlin.math.roundToInt * * @param composition [LottieComposition] usually created by [rememberLottieComposition] * @param composition The composition to render. This should be retrieved with [rememberLottieComposition]. + * @param assetsManager used to load animation assets that were not loaded during composition + * initialization + * @param fontManager used to load animation fonts + * @param dynamicProperties dynamically-configurable animation properties. Can be created with + * [rememberLottieDynamicProperties] * @param isPlaying Whether or not the animation is currently playing. Note that the internal * animation may end due to reaching the target iterations count. If that happens, the animation may * stop even if this is still true. You can observe the returned [LottieAnimationState.isPlaying] @@ -66,6 +77,8 @@ import kotlin.math.roundToInt @Composable fun rememberLottiePainter( composition : LottieComposition?, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, + fontManager: LottieFontManager = LottieFontManager.Empty, dynamicProperties : DynamicProperties? = null, isPlaying: Boolean = true, restartOnPlay: Boolean = true, @@ -95,6 +108,8 @@ fun rememberLottiePainter( return rememberLottiePainter( composition = composition, progress = { progress.value }, + assetsManager = assetsManager, + fontManager = fontManager, dynamicProperties = dynamicProperties, clipToCompositionBounds = clipToCompositionBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes, @@ -107,16 +122,24 @@ fun rememberLottiePainter( * * @param composition [LottieComposition] usually created by [rememberLottieComposition] * @param progress animation progress from 0 to 1 usually derived from [animateLottieCompositionAsState] + * @param assetsManager used to load animation assets that were not loaded during composition + * initialization + * @param fontManager used to load animation fonts + * @param dynamicProperties dynamically-configurable animation properties. Can be created with + * [rememberLottieDynamicProperties] * @param clipToCompositionBounds if drawing should be clipped to the * [composition].width x [composition].height * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) * @param enableMergePaths enable experimental merge paths feature. Most of the time animation doesn't need * it even if it contains merge paths. This feature should only be enabled for tested animations * */ +@OptIn(InternalCompottieApi::class) @Composable fun rememberLottiePainter( composition : LottieComposition?, progress : () -> Float, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, + fontManager: LottieFontManager = LottieFontManager.Empty, dynamicProperties : DynamicProperties? = null, clipToCompositionBounds : Boolean = true, clipTextToBoundingBoxes: Boolean = false, @@ -131,6 +154,12 @@ fun rememberLottiePainter( ) { if (composition != null) { + val assets = async(ioDispatcher()) { + composition.loadAssets(assetsManager, true) + } + val fonts = async(ioDispatcher()) { + composition.loadFonts(fontManager) + } value = LottiePainter( composition = composition, initialProgress = progress(), @@ -141,7 +170,9 @@ fun rememberLottiePainter( clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver, clipToCompositionBounds = clipToCompositionBounds, - enableMergePaths = enableMergePaths + enableMergePaths = enableMergePaths, + assets = assets.await(), + fonts = fonts.await() ) } } @@ -182,6 +213,8 @@ private object EmptyPainter : Painter() { private class LottiePainter( private val composition: LottieComposition, + assets : List, + fonts : Map, initialProgress : Float, dynamicProperties: DynamicCompositionProvider?, fontFamilyResolver : FontFamily.Resolver, @@ -202,8 +235,6 @@ private class LottiePainter( intrinsicSize.height.roundToInt() ) - - private val matrix = Matrix() private var alpha by mutableStateOf(1f) @@ -223,7 +254,8 @@ private class LottiePainter( clipTextToBoundingBoxes = clipTextToBoundingBoxes, enableMergePaths = enableMergePaths, layer = compositionLayer, - assets = composition.animation.assets.associateBy(LottieAsset::id) + assets = assets.associateBy(LottieAsset::id), + fonts = fonts ) var clipTextToBoundingBoxes: Boolean by animationState::clipTextToBoundingBoxes diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt index c24aacf4..ffc922a1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontManager.kt @@ -4,7 +4,8 @@ import androidx.compose.runtime.Stable import androidx.compose.ui.text.font.Font /** - * Used to fetch lottie assets that are not embedded to the animation JSON file + * Used to load animation fonts. If manager returns null then glyphs or default platform font + * will be used * */ @Stable interface LottieFontManager { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 7e1ff238..3257830a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue +import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider @@ -15,6 +16,7 @@ import kotlin.contracts.contract class AnimationState @PublishedApi internal constructor( val composition : LottieComposition, internal val assets: Map, + internal val fonts : Map, frame : Float, fontFamilyResolver: FontFamily.Resolver, clipToDrawBounds : Boolean, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt index ed65e957..45461ab8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/LottieJson.kt @@ -26,6 +26,7 @@ import io.github.alexzhirkevich.compottie.internal.shapes.FillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientFillShape import io.github.alexzhirkevich.compottie.internal.shapes.GradientStrokeShape import io.github.alexzhirkevich.compottie.internal.shapes.GroupShape +import io.github.alexzhirkevich.compottie.internal.shapes.MergePathsShape import io.github.alexzhirkevich.compottie.internal.shapes.PathShape import io.github.alexzhirkevich.compottie.internal.shapes.PolystarShape import io.github.alexzhirkevich.compottie.internal.shapes.RectShape @@ -77,7 +78,7 @@ internal val LottieJson by lazy{ subclass(GradientFillShape::class) subclass(GradientStrokeShape::class) subclass(GroupShape::class) -// subclass(MergePathsShape::class) + subclass(MergePathsShape::class) subclass(PathShape::class) subclass(PolystarShape::class) subclass(RectShape::class) @@ -114,9 +115,6 @@ internal val LottieJson by lazy{ } } - // the rest polymorphic stuff doesn't really do anything. - // just referencing classes here to avoid them been tree-shaken by the proguard/webpack - polymorphic(AnimatedColor::class) { subclass(AnimatedColor.Default::class) subclass(AnimatedColor.Animated::class) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt index 135c775c..9b59698f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt @@ -70,11 +70,16 @@ internal class ImageAsset( this.bitmap = transformBitmap(bitmap) } - private fun transformBitmap(bitmap: ImageBitmap) : ImageBitmap { + private fun transformBitmap(bitmap: ImageBitmap): ImageBitmap { return if (w != null && w != bitmap.width || h != null && h != bitmap.width) { bitmap.resize(w ?: bitmap.width, h ?: bitmap.height) } else bitmap } + + override fun copy(): LottieAsset = + ImageAsset(id, fileName, path, slotId, name, embedded, w, h).apply { + this.bitmap?.let { setBitmap(it) } + } } private val String.isBase64Data : Boolean get() = diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt index 0f573b3c..ef9d03b0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt @@ -1,30 +1,23 @@ package io.github.alexzhirkevich.compottie.internal.assets -import androidx.compose.ui.graphics.Canvas -import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.unit.IntSize -import io.github.alexzhirkevich.compottie.internal.platform.fromBytes -import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.jsonObject -import kotlin.io.encoding.Base64 -import kotlin.io.encoding.ExperimentalEncodingApi @Serializable(with = AssetSerializer::class) internal sealed interface LottieAsset { val id: String + fun copy() : LottieAsset + @Serializable - data object UnsupportedAsset : LottieAsset { + object UnsupportedAsset : LottieAsset { override val id: String get() = "" + + override fun copy() = this } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt index 3c6fd922..caf903fe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/PrecompositionAsset.kt @@ -7,4 +7,8 @@ import kotlinx.serialization.Serializable internal class PrecompositionAsset( override val id: String, val layers : List -) : LottieAsset +) : LottieAsset { + override fun copy(): LottieAsset { + return this + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 261b00d5..84234550 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -275,7 +275,7 @@ internal class TextLayer( ?.let { BaselineShift(it) } ?: textStyle.baselineShift - val fontFamily = animationState.composition.findFont(document.fontFamily) + val fontFamily = animationState.fonts[document.fontFamily] val letterSpacing = textAnimation?.style?.letterSpacing ?.interpolated(animationState)?.toSp() diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index f45b8603..70fb9f02 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -82,7 +82,6 @@ private val DOT_WITH_IMAGE = "dotlottie/dot_with_image.lottie" private val ALL = listOf( GRADIENT_ELLIPSE, - TEST, CHECKMARK, FADE_BALLS, BOUNCING_BALL, @@ -127,19 +126,9 @@ suspend fun LottieCompositionSpec.Companion.Resource( fun App() { // return LottieFontExample() -// return AllExamples() + return AllExamples() - val composition = rememberLottieComposition( - assetsManager = rememberResourcesAssetsManager( - readBytes = Res::readBytes - ), - fontManager = rememberResourcesFontManager { fontSpec -> - when (fontSpec.family) { - "Comic Neue" -> Res.font.ComicNeue - else -> null - } - }, - ) { + val composition = rememberLottieComposition() { // LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { // Res.readBytes("files/$DOT_WITH_IMAGE") // } @@ -172,14 +161,21 @@ fun App() { ) { val progress by animateLottieCompositionAsState( -// clipSpec = LottieClipSpec.Progress(.55f, 1f), iterations = LottieConstants.IterateForever, composition = composition.value ) val painter = rememberLottiePainter( composition = composition.value, progress = { progress }, -// clipToCompositionBounds = false + assetsManager = rememberResourcesAssetsManager( + readBytes = Res::readBytes + ), + fontManager = rememberResourcesFontManager { fontSpec -> + when (fontSpec.family) { + "Comic Neue" -> Res.font.ComicNeue + else -> null + } + }, ) Image( @@ -206,22 +202,24 @@ fun AllExamples(){ columns = GridCells.FixedSize(150.dp), ){ items(ALL) { - val composition by rememberLottieComposition( - assetsManager = rememberResourcesAssetsManager( - readBytes = Res::readBytes - ), - fontManager = rememberResourcesFontManager { fontSpec -> - when (fontSpec.family) { - "Comic Neue" -> Res.font.ComicNeue - else -> null - } - }, - ) { + val composition by rememberLottieComposition() { LottieCompositionSpec.Resource(it) } Image( - painter = rememberLottiePainter(composition, iterations = LottieConstants.IterateForever), + painter = rememberLottiePainter( + composition = composition, + iterations = LottieConstants.IterateForever, + assetsManager = rememberResourcesAssetsManager( + readBytes = Res::readBytes + ), + fontManager = rememberResourcesFontManager { fontSpec -> + when (fontSpec.family) { + "Comic Neue" -> Res.font.ComicNeue + else -> null + } + }, + ), contentDescription = null, modifier = Modifier .size(150.dp) @@ -243,21 +241,13 @@ fun LottieFontExample() { val add1 = "COMPOTTIE NOW HAS IT'S OWN COMPOSE MULTIPLATFORM LOTTIE RENDERING ENGINE" LaunchedEffect(0) { -// while (true) { listOf(add1).forEach { line -> line.forEach { -// if (it == ' ') { -// delay(200) -// } else { delay(30) -// } text += it } delay(500) } -// delay(1000) -// text = "" -// } } val fontSize = 90.dp @@ -272,11 +262,9 @@ fun LottieFontExample() { Box( modifier = Modifier.fillMaxSize() .focusRequester(focus), -// .focusable(interactionSource = interactionSource), contentAlignment = Alignment.Center ) { - BasicTextField( modifier = Modifier.fillMaxSize(), value = text, @@ -355,9 +343,6 @@ fun LottieList() { key = "ROBOT" ) { LottieCompositionSpec.Resource(ROBOT) -// LottieCompositionSpec.Url( -// url = "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", -// ) } val painter = rememberLottiePainter( From 7087f6571156bea37489ffd8c463093800bffa13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 23 Jun 2024 01:22:50 +0300 Subject: [PATCH 066/100] upd readme --- README.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2ec5b035..4b78d2fb 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ For Compottie 1.x docs please refer to the [airbnb docs](https://github.com/airb - [LottieComposition](#lottiecomposition) - [Animating/Updating Progress](#animatingupdating-progress) - [LottieAnimatable](#lottieanimatable) -- [dotLottie](#dotlottie) +- [dotLottie (ZIP)](#dotlottie-zip) - [Images](#images) - [Fonts](#fonts) - [URL loading](#url-loading) @@ -184,7 +184,7 @@ LaunchedEffect(Unit) { } ``` -## dotLottie +## dotLottie (ZIP) [dotLottie ](https://dotlottie.io/) is an open-source file format that aggregates one or more Lottie files and their associated resources into a single file. They are ZIP archives compressed with the Deflate compression method and carry the file extension of ".lottie". @@ -192,6 +192,10 @@ dotLottie animations are up to 10x smaller in size and can have auto-linked bund `compottie-dot` module is required to use dotLottie animations in your app. It brings the new type of composition spec - `LottieCompositionSpec.DotLottie`. +You can also use `DotLottie` composition spec even without making a .lottie file just by ZIPping +your animation with assets using deflate algorithm. The only limitation - animation can't be named +as "manifest.json" and should contain exactly one .json file. + ## Images Images should be avoided whenever possible. They are much larger, less performant, and can lead to pixelation. Whenever possible, try and make your animation consist solely of vectors. However, Lottie does support images in one of 4 ways: @@ -207,7 +211,7 @@ Images should be avoided whenever possible. They are much larger, less performan val composition = rememberLottieComposition( assetsManager = rememberResourcesAssetsManager( directory = "files" // by default, - readBytes = Res::readBytes + readBytes = Res::readBytes ) ) { LottieCompositionSpec.JsonString( @@ -225,7 +229,7 @@ Text can be drawn in 2 ways: using fonts and using glyphs (when characters are b ```kotlin val composition by rememberLottieComposition() { - //... + //... } val painter = rememberLottiePainter( @@ -253,7 +257,7 @@ fun LottieCompositionSpec.Companion.Url( ``` that can be used to load JSON and dotLottie animations from the Internet. -`LottieAnimationFormat` is used to determine wheither animation is a JSON or dotLottie. If you left it `Undefined`, +`LottieAnimationFormat` is used to determine wheither animation is a JSON or dotLottie. If you left it `Undefined`, composition spec will automatically detect is this a JSON or dotLottie file. Ktor HTTP client can be provided with `client` parameter. From 7c8a71d7d2207e6d43965658eecbb78cc2d7f51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Mon, 24 Jun 2024 09:36:16 +0300 Subject: [PATCH 067/100] fix dynamic props --- README.md | 2 +- .../compottie/NetworkFontManager.android.kt | 22 ++++ .../compottie/DiskCacheStrategy.kt | 21 +++- .../compottie/LottieCacheStrategy.kt | 15 ++- .../compottie/NetworkAssetsManager.kt | 47 ++----- .../compottie/NetworkDownloadManager.kt | 49 ++++++++ .../compottie/NetworkFontManager.kt | 49 ++++++++ .../compottie/UrlCompositionSpec.kt | 12 +- .../compottie/NetworkFontManager.skiko.kt | 15 +++ .../compottie/LottieContext.android.kt | 2 + .../compottie/LottieComposition.kt | 23 +++- .../alexzhirkevich/compottie/LottiePainter.kt | 24 ++-- .../compottie/assets/LottieFontSpec.kt | 36 +++++- .../compottie/dynamic/DynamicDraw.kt | 20 ++- .../compottie/dynamic/DynamicShapeLayer.kt | 2 +- .../compottie/dynamic/PropertyProvider.kt | 2 +- .../dynamic/_DynamicCompositionProvider.kt | 6 +- .../compottie/dynamic/_DynamicDrawProvider.kt | 4 +- .../dynamic/_DynamicShapeLayerProvider.kt | 36 +++--- .../dynamic/_DynamicStrokeProvider.kt | 3 +- .../compottie/internal/Animation.kt | 19 ++- .../compottie/internal/AnimationState.kt | 16 +-- .../internal/animation/AnimatedColor.kt | 20 ++- .../internal/animation/AnimatedGradient.kt | 40 +++++- .../internal/animation/AnimatedNumber.kt | 9 ++ .../internal/animation/AnimatedShape.kt | 10 ++ .../animation/AnimatedTextDocument.kt | 6 + .../internal/animation/AnimatedTransform.kt | 16 +-- .../internal/animation/AnimatedVector2.kt | 35 ++++-- .../internal/animation/BezierInterpolation.kt | 7 +- .../internal/animation/RepeaterTransform.kt | 14 +++ .../internal/animation/ValueKeyframe.kt | 6 +- .../internal/animation/VectorKeyframe.kt | 28 +++-- .../internal/assets/CharacterData.kt | 13 +- .../internal/assets/CharacterPath.kt | 16 +++ .../internal/assets/LottieFontAsset.kt | 44 ++++++- .../compottie/internal/effects/BlurEffect.kt | 3 + .../internal/effects/DropShadowEffect.kt | 6 +- .../compottie/internal/effects/EffectValue.kt | 22 +++- .../compottie/internal/effects/FillEffect.kt | 3 + .../compottie/internal/effects/LayerEffect.kt | 8 +- .../internal/effects/LayerEffectsApplier.kt | 2 +- .../compottie/internal/effects/TintEffect.kt | 4 + .../compottie/internal/helpers/Mask.kt | 10 +- .../compottie/internal/helpers/StrokeDash.kt | 9 +- .../compottie/internal/helpers/Transform.kt | 19 ++- .../internal/helpers/text/TextAlignment.kt | 7 +- .../internal/helpers/text/TextData.kt | 12 +- .../internal/helpers/text/TextFollowPath.kt | 11 +- .../internal/helpers/text/TextRange.kt | 7 +- .../internal/helpers/text/TextStyle.kt | 19 ++- .../internal/layers/BaseCompositionLayer.kt | 15 +++ .../compottie/internal/layers/BaseLayer.kt | 26 ++-- .../internal/layers/CompositionLayer.kt | 4 + .../compottie/internal/layers/ImageLayer.kt | 32 ++++- .../compottie/internal/layers/Layer.kt | 14 ++- .../compottie/internal/layers/NullLayer.kt | 26 ++++ .../internal/layers/PrecompositionLayer.kt | 30 +++++ .../compottie/internal/layers/ShapeLayer.kt | 68 +++++++--- .../internal/layers/SolidColorLayer.kt | 29 +++++ .../compottie/internal/layers/TextLayer.kt | 27 ++++ .../internal/shapes/BaseStrokeShape.kt | 8 +- .../compottie/internal/shapes/EllipseShape.kt | 12 +- .../compottie/internal/shapes/FillShape.kt | 15 ++- .../internal/shapes/GradientFillShape.kt | 33 +++-- .../internal/shapes/GradientStrokeShape.kt | 20 +++ .../compottie/internal/shapes/GroupShape.kt | 9 ++ .../internal/shapes/MergePathsShape.kt | 9 ++ .../compottie/internal/shapes/PathShape.kt | 9 ++ .../internal/shapes/PolystarShape.kt | 25 +++- .../compottie/internal/shapes/RectShape.kt | 12 ++ .../internal/shapes/RepeaterShape.kt | 11 ++ .../compottie/internal/shapes/RoundShape.kt | 9 ++ .../compottie/internal/shapes/Shape.kt | 15 ++- .../internal/shapes/SolidStrokeShape.kt | 16 +++ .../internal/shapes/TransformShape.kt | 15 +++ .../internal/shapes/TrimPathShape.kt | 12 ++ .../compottie/internal/utils/Matrix.kt | 1 + example/androidapp/build.gradle.kts | 1 + .../src/main/kotlin/MainActivity.kt | 2 + .../composeResources/files/test.json | 116 ++++++++++++++++++ example/shared/src/commonMain/kotlin/App.kt | 59 +++++++-- 82 files changed, 1282 insertions(+), 229 deletions(-) create mode 100644 compottie-network/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.android.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt create mode 100644 compottie-network/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.skiko.kt diff --git a/README.md b/README.md index 4b78d2fb..065fd68a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ![badge-macOS](https://img.shields.io/badge/Platform-macOS-purple) ![badge-web](https://img.shields.io/badge/Platform-Web-blue) -Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderer. +Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations rendering engine. > [!IMPORTANT] > Starting from v2.0 Compottie has its own multiplatform rendering engine without any platform delegates. diff --git a/compottie-network/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.android.kt b/compottie-network/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.android.kt new file mode 100644 index 00000000..371c45ec --- /dev/null +++ b/compottie-network/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.android.kt @@ -0,0 +1,22 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.ui.text.font.Font +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec +import okio.Path +import java.io.FileOutputStream +import java.io.FilterOutputStream + +private const val CACHE_FONT_DIR = "compottie_font_cache" + +internal actual suspend fun makeFont(spec: LottieFontSpec, path: Path, bytes: ByteArray) : Font { + +// val cacheFile = lottieContext.cacheDir.resolve(CACHE_FONT_DIR).resolve(path.name) +// if (!cacheFile.exists()){ +// path.toFile().copyTo(cacheFile) +// } + return Font( + file = path.toFile(), + weight = spec.weight, + style = spec.style + ) +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt index d7b1e81b..f392a918 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable import okio.Buffer import okio.ByteString.Companion.encodeUtf8 +import okio.Path import okio.use @Stable @@ -10,15 +11,27 @@ class DiskCacheStrategy( private val diskCache: DiskCache = SharedDiskCache ) : LottieCacheStrategy { - override suspend fun save(url: String, bytes: ByteArray) { - val editor = diskCache.openEditor(key(url)) ?: return - try { + override fun path(url: String): Path? { + return try { + diskCache.openSnapshot(key(url)).use { it?.data } + } catch (t: Throwable) { + null + } + } + + override suspend fun save(url: String, bytes: ByteArray): Path? { + val editor = diskCache.openEditor(key(url)) ?: return null + + return try { diskCache.fileSystem.write(editor.data) { write(bytes) } - editor.commit() + editor.commitAndOpenSnapshot().use { + it?.data + } } catch (t: Throwable) { editor.abort() + null } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt index 0bbabd93..e2106aec 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCacheStrategy.kt @@ -1,15 +1,28 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable +import okio.Path @Stable interface LottieCacheStrategy { + /** + * Returns path to the cached file that was downloaded from [url] + * */ + fun path(url: String) : Path? + + /** + * Saves [bytes] downloaded from [url] to cache. + * Returns path to the saved file + * */ suspend fun save( url: String, bytes: ByteArray - ) + ): Path? + /** + * Loads bytes downloaded from [url] from cache + * */ suspend fun load( url: String ): ByteArray? diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index 7d363928..bf08861d 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -11,15 +11,12 @@ import io.ktor.util.toByteArray import kotlinx.coroutines.withContext /** - * Asset manager that load images from web. - * - * It can't be used to download fonts. Combine it with other font-loading manager - * using [LottieAssetsManager.combine] if needed + * Asset manager that load images from web using [request] with [client]. * */ fun NetworkAssetsManager( client: HttpClient = DefaultHttpClient, - cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), request : NetworkRequest = GetRequest, + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), ) : LottieAssetsManager = NetworkAssetsManagerImpl( client = client, cacheStrategy = cacheStrategy, @@ -27,41 +24,11 @@ fun NetworkAssetsManager( ) private class NetworkAssetsManagerImpl( - private val client: HttpClient, - private val cacheStrategy: LottieCacheStrategy, - private val request : NetworkRequest, -) : LottieAssetsManager { - - @OptIn(InternalCompottieApi::class) + client: HttpClient, + cacheStrategy: LottieCacheStrategy, + request : NetworkRequest, +) : NetworkDownloadManager(client, cacheStrategy, request), LottieAssetsManager { override suspend fun image(image: LottieImage): ImageRepresentable? { - return withContext(ioDispatcher()) { - try { - val path = image.path + image.name - - val url = try { - Url(path) - } catch (t: URLParserException) { - return@withContext null - } - - try { - cacheStrategy.load(path)?.let { - return@withContext ImageRepresentable.Bytes(it) - } - } catch (_: Throwable) { - } - - val bytes = request(client, url).execute().bodyAsChannel().toByteArray() - - try { - cacheStrategy.save(path, bytes) - } catch (e: Throwable) { - L.logger.error("NetworkAssetsManager failed to cache downloaded asset", e) - } - ImageRepresentable.Bytes(bytes) - } catch (t: Throwable) { - null - } - } + return load(image.path + image.name).second?.let(ImageRepresentable::Bytes) } } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt new file mode 100644 index 00000000..c81a7dc6 --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt @@ -0,0 +1,49 @@ +package io.github.alexzhirkevich.compottie + +import io.ktor.client.HttpClient +import io.ktor.client.statement.bodyAsChannel +import io.ktor.http.URLParserException +import io.ktor.http.Url +import io.ktor.util.toByteArray +import kotlinx.coroutines.withContext +import okio.Path + +internal abstract class NetworkDownloadManager( + private val client: HttpClient, + private val cacheStrategy: LottieCacheStrategy, + private val request : NetworkRequest, +) { + + @OptIn(InternalCompottieApi::class) + protected suspend fun load(url: String): Pair { + return withContext(ioDispatcher()) { + try { + try { + cacheStrategy.load(url)?.let { + return@withContext cacheStrategy.path(url) to it + } + } catch (_: Throwable) { + } + + val ktorUrl = try { + Url(url) + } catch (t: URLParserException) { + return@withContext null to null + } + + val bytes = request(client, ktorUrl).execute().bodyAsChannel().toByteArray() + + try { + cacheStrategy.save(url, bytes)?.let { + return@withContext it to bytes + } + } catch (e: Throwable) { + L.logger.error("${this::class.simpleName} failed to cache downloaded asset", e) + } + null to bytes + } catch (t: Throwable) { + null to null + } + } + } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt new file mode 100644 index 00000000..85e97eeb --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt @@ -0,0 +1,49 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.ui.text.font.Font +import io.github.alexzhirkevich.compottie.assets.LottieFontManager +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec +import io.ktor.client.HttpClient +import okio.Path + +/** + * Font manager that loads fonts from the web using [request] with [client]. + * + * Supports only [LottieFontSpec.FontOrigin.FontUrl] .ttf fonts (support may be higher on non-Android platforms). + * + * Note: [LottieCacheStrategy.path] should return valid file system paths to make [NetworkFontManager] work. + * Default [DiskCacheStrategy] supports it. + * */ +fun NetworkFontManager( + client: HttpClient = DefaultHttpClient, + request : NetworkRequest = GetRequest, + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), +) : LottieFontManager = NetworkFontManagerImpl( + client = client, + cacheStrategy = cacheStrategy, + request = request, +) + +private class NetworkFontManagerImpl( + client: HttpClient, + cacheStrategy: LottieCacheStrategy, + request : NetworkRequest, +) : NetworkDownloadManager(client, cacheStrategy, request),LottieFontManager { + + override suspend fun font(font: LottieFontSpec): Font? { + + if (font.origin != LottieFontSpec.FontOrigin.FontUrl){ + return null + } + + val (path, bytes) = load(font.path ?: return null) + + if (path == null || bytes == null){ + return null + } + + return makeFont(font, path, bytes) + } +} + +internal expect suspend fun makeFont(spec: LottieFontSpec, path: Path, bytes: ByteArray) : Font \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 0d02c9bf..1aab10ba 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -10,6 +10,7 @@ import io.github.alexzhirkevich.compottie.LottieCacheStrategy import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.NetworkAssetsManager +import io.github.alexzhirkevich.compottie.NetworkFontManager import io.github.alexzhirkevich.compottie.NetworkRequest import io.github.alexzhirkevich.compottie.ioDispatcher import io.ktor.client.HttpClient @@ -19,6 +20,7 @@ import io.ktor.client.statement.bodyAsText import io.ktor.http.Url import io.ktor.http.isSuccess import io.ktor.util.toByteArray +import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext @@ -57,7 +59,8 @@ private class NetworkCompositionSpec( private val request : NetworkRequest, ) : LottieCompositionSpec { - private val assetsManager = NetworkAssetsManager(client, cacheStrategy, request) + private val assetsManager = NetworkAssetsManager(client, request, cacheStrategy) + private val fontManager = NetworkFontManager(client, request, cacheStrategy) @OptIn(InternalCompottieApi::class) override suspend fun load(cacheKey : Any?): LottieComposition { @@ -98,7 +101,12 @@ private class NetworkCompositionSpec( } } }.apply { - prepareAssets(assetsManager) + launch { + prepareAssets(assetsManager) + } + launch { + prepareFonts(fontManager) + } } } } diff --git a/compottie-network/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.skiko.kt b/compottie-network/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.skiko.kt new file mode 100644 index 00000000..9f29a0e5 --- /dev/null +++ b/compottie-network/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.skiko.kt @@ -0,0 +1,15 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.platform.Font +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec +import okio.Path + +internal actual suspend fun makeFont(spec: LottieFontSpec, path: Path, bytes: ByteArray) : Font { + return Font( + identity = spec.name, + getData = { bytes }, + weight = spec.weight, + style = spec.style + ) +} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt index 1383b90f..3a92c1b7 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt @@ -4,6 +4,8 @@ import android.content.Context import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext +lateinit var lottieContext: Context + actual typealias LottieContext = Context @Composable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index aeabe203..6c2b1ab5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -10,7 +10,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue -import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager @@ -169,6 +168,9 @@ class LottieComposition internal constructor( private val assetsMutex = Mutex() + private val fontsMutex = Mutex() + + private var loadedFonts : Map = emptyMap() internal fun findGlyphs(family : String?) : Map? { return charGlyphs[family] ?: run { @@ -187,6 +189,13 @@ class LottieComposition internal constructor( } } + @InternalCompottieApi + suspend fun prepareFonts(fontsManager : LottieFontManager) { + fontsMutex.withLock { + loadedFonts = loadFonts(fontsManager) + } + } + internal suspend fun loadAssets( assetsManager: LottieAssetsManager, copy : Boolean @@ -221,10 +230,9 @@ class LottieComposition internal constructor( return assets } - internal suspend fun loadFonts(fontManager: LottieFontManager) : Map { return coroutineScope { - animation.fonts?.list + loadedFonts + animation.fonts?.list ?.map { async { val f = it.font ?: fontManager.font( @@ -233,7 +241,8 @@ class LottieComposition internal constructor( name = it.name, style = it.fontStyle, weight = it.weight, - path = it.path + path = it.path, + origin = it.origin?.toSpecOrigin() ?: LottieFontSpec.FontOrigin.Unknown ) ) @@ -254,6 +263,12 @@ class LottieComposition internal constructor( } } + internal fun deepCopy() : LottieComposition { + return LottieComposition( + animation + ) + } + internal fun marker(name: String?) = animation.markers.firstOrNull { it.name == name } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index be83e06c..52e02bd1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -9,7 +9,6 @@ import androidx.compose.runtime.produceState import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope @@ -31,8 +30,8 @@ import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.coroutines.async -import kotlinx.coroutines.withContext import kotlin.math.roundToInt +import kotlin.time.measureTime /** * Create and remember Lottie painter. @@ -160,12 +159,13 @@ fun rememberLottiePainter( val fonts = async(ioDispatcher()) { composition.loadFonts(fontManager) } + value = LottiePainter( - composition = composition, + composition = composition.deepCopy(), initialProgress = progress(), dynamicProperties = when (dynamicProperties) { is DynamicCompositionProvider -> dynamicProperties - null -> dynamicProperties + null -> null }, clipTextToBoundingBoxes = clipTextToBoundingBoxes, fontFamilyResolver = fontFamilyResolver, @@ -246,22 +246,26 @@ private class LottiePainter( } private val animationState = AnimationState( - frame = frame, composition = composition, + assets = assets.associateBy(LottieAsset::id), + fonts = fonts, + frame = frame, fontFamilyResolver = fontFamilyResolver, clipToDrawBounds = clipToCompositionBounds, - dynamicProperties = dynamicProperties, clipTextToBoundingBoxes = clipTextToBoundingBoxes, enableMergePaths = enableMergePaths, - layer = compositionLayer, - assets = assets.associateBy(LottieAsset::id), - fonts = fonts + layer = compositionLayer ) + init { + if (dynamicProperties != null) { + compositionLayer.setDynamicProperties(dynamicProperties, animationState) + } + } + var clipTextToBoundingBoxes: Boolean by animationState::clipTextToBoundingBoxes var clipToCompositionBounds: Boolean by animationState::clipToCompositionBounds var fontFamilyResolver: FontFamily.Resolver by animationState::fontFamilyResolver - var dynamic: DynamicCompositionProvider? by animationState::dynamic override fun applyAlpha(alpha: Float): Boolean { if (alpha !in 0f..1f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontSpec.kt index 400372a4..50cc918d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/LottieFontSpec.kt @@ -8,5 +8,37 @@ class LottieFontSpec internal constructor( val name : String, val style : FontStyle, val weight : FontWeight, - val path : String? -) \ No newline at end of file + val path : String?, + val origin: FontOrigin +) { + enum class FontOrigin { + /** + * Font from assets or file system + * */ + Local, + + /** + * Css font from url + * + * Example: [https://fonts.googleapis.com/css2?family=Poppins:wght@700&display=swap](https://fonts.googleapis.com/css2?family=Poppins:wght@700&display=swap) + * */ + CssUrl, + + + ScriptUrl, + + /** + * .ttf font from url + * + * Example: [https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf](https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf) + * */ + FontUrl, + + /** + * Font from unknown source + * + * Example: [https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf](https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf) + * */ + Unknown + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt index fb5f70ff..50315091 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicDraw.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.dynamic import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Color @@ -17,10 +18,27 @@ sealed interface DynamicDraw : DynamicShape { fun color(provider: PropertyProvider) + /** + * Dynamic gradient provider. + * + * Will be invoked for each frame therefore gradient instance should be cached if possible + * + * Example: + * + * ```kotlin + * gradient { bounds -> + * LottieGradient.Linear( + * colorStops = listOf(0f to Color.Red, 1f to Color.Blue), + * start = bounds.topLeft, + * end = bounds.bottomRight + * ) + * } + * ``` + * */ fun gradient(provider: GradientProvider) } -typealias GradientProvider = (Size, AnimationState) -> LottieGradient +typealias GradientProvider = AnimationState.(Rect) -> LottieGradient sealed interface LottieGradient { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt index d5df4480..77dc7e0f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicShapeLayer.kt @@ -27,7 +27,7 @@ interface DynamicShapeLayer: DynamicLayer { * fill("Group 1", "Fill 1") { } *``` * */ - fun group(name: String, builder: DynamicShapeLayer.() -> Unit) + fun group(vararg path: String, builder: DynamicShapeLayer.() -> Unit) /** * Configure dynamic stroke. diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt index d02de5a1..c0deb879 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/PropertyProvider.kt @@ -25,7 +25,7 @@ internal fun PropertyProvider?.derive(source : T, state: AnimationState) internal fun Vec2.toScaleFactor() = ScaleFactor(x, y) internal fun Vec2.toSize() = Size(x, y) internal fun Size.toVec2() = Vec2(width, height) -internal fun ScaleFactor.toVec2() = Vec2(scaleX, scaleY) +internal fun ScaleFactor.toVec2() = Vec2(scaleX * 100f, scaleY * 100f) internal fun Offset.toVec2() = this internal fun Vec2.toOffset() = this diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt index a4aa4c4c..c82790e0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt @@ -10,7 +10,7 @@ internal class DynamicCompositionProvider : DynamicProperties { get() = layers.size override fun shapeLayer(vararg path: String, builder: DynamicShapeLayer.() -> Unit) { - val p = path.joinToString(LayerPathSeparator) + val p = path.joinToString(LayerPathSeparator, LayerPathSeparator) val provider = when(val existent = layers[p]) { is DynamicShapeLayerProvider -> existent @@ -27,11 +27,11 @@ internal class DynamicCompositionProvider : DynamicProperties { } override fun imageLayer(vararg path: String, builder: DynamicImageLayer.() -> Unit) { - layers[path.joinToString(LayerPathSeparator)] = DynamicImageLayerProvider().apply(builder) + layers[path.joinToString(LayerPathSeparator, LayerPathSeparator)] = DynamicImageLayerProvider().apply(builder) } override fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) { - layers[path.joinToString(LayerPathSeparator)] = DynamicLayerProvider().apply(builder) + layers[path.joinToString(LayerPathSeparator, LayerPathSeparator)] = DynamicLayerProvider().apply(builder) } operator fun get(path: ResolvingPath): DynamicLayerProvider? = layers[path.path] diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt index 9c645ba1..cf1f0bb3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicDrawProvider.kt @@ -70,7 +70,7 @@ internal fun DynamicDrawProvider?.applyToPaint( parentAlpha: Float, parentMatrix : Matrix, opacity : AnimatedNumber?, - size: Size, + size: () -> Rect, gradientCache: GradientCache ) { this?.color?.let { @@ -78,7 +78,7 @@ internal fun DynamicDrawProvider?.applyToPaint( } this?.gradient?.let { paint.shader = GradientShader( - gradient = it.invoke(size, state), + gradient = it.invoke(state, size()), matrix = parentMatrix, cache = gradientCache ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt index e983046f..6eb02283 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicShapeLayerProvider.kt @@ -11,43 +11,41 @@ internal class DynamicShapeLayerProvider( @PublishedApi internal val shapes = mutableMapOf() - override fun shape(vararg path: String, builder: DynamicShape.() -> Unit) { - shapes[path.joinToString(LayerPathSeparator)] = - DynamicShapeProvider().apply(builder) - } - - override fun group(name: String, builder: DynamicShapeLayer.() -> Unit) { + override fun group(vararg path : String, builder: DynamicShapeLayer.() -> Unit) { DynamicShapeLayerProvider( - basePath = layerPath(basePath, name), + basePath = layerPath(basePath, path.joinToString(LayerPathSeparator)), root = nRoot ).apply(builder) } - internal inline operator fun get(path: String): S? = - shapes[path] as? S + override fun shape(vararg path: String, builder: DynamicShape.() -> Unit) { + this[path.toList()] = DynamicShapeProvider().apply(builder) + } override fun fill(vararg path: String, builder: DynamicFill.() -> Unit) { - shapes[path.joinToString(LayerPathSeparator)] = - DynamicFillProvider().apply(builder) + this[path.toList()] = DynamicFillProvider().apply(builder) } override fun stroke(vararg path: String, builder: DynamicStroke.() -> Unit) { - shapes[path.joinToString(LayerPathSeparator)] = - DynamicStrokeProvider().apply(builder) + this[path.toList()] = DynamicStrokeProvider().apply(builder) } override fun ellipse(vararg path: String, builder: DynamicEllipse.() -> Unit) { - shapes[path.joinToString(LayerPathSeparator)] = - DynamicEllipseProvider().apply(builder) + this[path.toList()] = DynamicEllipseProvider().apply(builder) } override fun rect(vararg path: String, builder: DynamicRect.() -> Unit) { - shapes[path.joinToString(LayerPathSeparator)] = - DynamicRectProvider().apply(builder) + this[path.toList()] = DynamicRectProvider().apply(builder) } override fun polystar(vararg path: String, builder: DynamicPolystar.() -> Unit) { - shapes[path.joinToString(LayerPathSeparator)] = - DynamicPolystarProvider().apply(builder) + this[path.toList()] = DynamicPolystarProvider().apply(builder) + } + + internal inline operator fun get(path: String): S? = + shapes[path] as? S + + private operator fun set(path : List, instance : T){ + nRoot.shapes[layerPath(basePath, path.joinToString(LayerPathSeparator))] = instance } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt index c39eede7..e5dcbfc0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicStrokeProvider.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.dynamic +import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint @@ -28,7 +29,7 @@ internal fun DynamicStrokeProvider?.applyToPaint( parentMatrix : Matrix, opacity : AnimatedNumber?, strokeWidth : AnimatedNumber, - size: Size, + size: () -> Rect, gradientCache: GradientCache ) { applyToPaint( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt index 3e8dd253..72cc8e3c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt @@ -41,4 +41,21 @@ internal class Animation( val chars : List = emptyList(), val markers : List = emptyList() -) +) { + fun deepCopy() : Animation { + return Animation( + frameRate = frameRate, + width = width, + height = height, + version = version, + inPoint = inPoint, + outPoint = outPoint, + name = name, + layers = layers.map(Layer::deepCopy), + assets = assets.map(LottieAsset::copy), + fonts = fonts?.deepCopy(), + chars = chars.map(CharacterData::deepCopy), + markers = markers + ) + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 3257830a..1bf04467 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -3,10 +3,8 @@ package io.github.alexzhirkevich.compottie.internal import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlin.contracts.ExperimentalContracts @@ -14,16 +12,15 @@ import kotlin.contracts.InvocationKind import kotlin.contracts.contract class AnimationState @PublishedApi internal constructor( - val composition : LottieComposition, + val composition: LottieComposition, internal val assets: Map, - internal val fonts : Map, - frame : Float, + internal val fonts: Map, + frame: Float, fontFamilyResolver: FontFamily.Resolver, - clipToDrawBounds : Boolean, - dynamicProperties : DynamicCompositionProvider?, - clipTextToBoundingBoxes : Boolean, + clipToDrawBounds: Boolean, + clipTextToBoundingBoxes: Boolean, enableMergePaths: Boolean, - layer : Layer + layer: Layer ) { var frame by mutableStateOf(frame) private set @@ -38,7 +35,6 @@ class AnimationState @PublishedApi internal constructor( internal var clipToCompositionBounds by mutableStateOf(clipToDrawBounds) internal var clipTextToBoundingBoxes by mutableStateOf(clipTextToBoundingBoxes) internal var fontFamilyResolver by mutableStateOf(fontFamilyResolver) - internal var dynamic by mutableStateOf(dynamicProperties) internal var enableMergePaths by mutableStateOf(enableMergePaths) internal var layer by mutableStateOf(layer) private set diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index 2a7eea29..a6d74d1c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -21,10 +21,12 @@ import kotlinx.serialization.json.jsonPrimitive @Serializable(with = AnimatedColorSerializer::class) internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { + fun copy() : AnimatedColor + @Serializable() class Default( @SerialName("k") - val value: FloatArray, + val value: List, @SerialName("x") override val expression: String? = null, @@ -35,6 +37,9 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { @Transient private val color: Color = value.toColor() + override fun copy(): AnimatedColor { + return Default(value = value, expression = expression, index = index) + } override fun interpolated(state: AnimationState) = color } @@ -57,9 +62,20 @@ internal sealed interface AnimatedColor : KeyframeAnimation, Indexable { map = { s, e, p -> lerp(s.toColor(), e.toColor(), easingX.transform(p)) } - ) + ) { + override fun copy(): AnimatedColor { + return Animated(value = value, expression = expression, index = index) + } + } } +internal fun List.toColor() = Color( + red = get(0).toColorComponent(), + green = get(1).toColorComponent(), + blue = get(2).toColorComponent(), + alpha = getOrNull(3)?.toColorComponent() ?: 1f +) + internal fun FloatArray.toColor() = Color( red = get(0).toColorComponent(), green = get(1).toColorComponent(), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt index 4e686918..b014c1b1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt @@ -40,6 +40,28 @@ internal class ColorsWithStops( } } + fun fill(colors: List, numberOfColors: Int) { + resizeTo(numberOfColors) + + repeat(numberOfColors) { + mColorStops[it] = colors[it * 4] + + val alpha = if (colors.size == numberOfColors * 6) { + colors[colors.lastIndex - numberOfColors * 2 + (it + 1) * 2] + } else 1f + + + mColors[it] = + Color( + red = colors[it * 4 + 1], + green = colors[it * 4 + 2], + blue = colors[it * 4 + 3], + alpha = alpha + ) + } + } + + fun interpolateBetween(a: ColorsWithStops, b: ColorsWithStops, progress: Float) { val n = minOf(a.colors.size, b.colors.size) @@ -73,7 +95,13 @@ internal class GradientColors( @SerialName("p") val numberOfColors: Int = 0 -) +) { + fun copy() = GradientColors( + colors = colors.copy(), + numberOfColors = numberOfColors + ) + +} @Serializable @JvmInline @@ -92,6 +120,8 @@ internal abstract class AnimatedGradient : KeyframeAnimation { @Transient var numberOfColors: Int = 0 + abstract fun copy() : AnimatedGradient + @SerialName("0") @Serializable class Default( @@ -108,6 +138,10 @@ internal abstract class AnimatedGradient : KeyframeAnimation { override fun interpolated(state: AnimationState): ColorsWithStops { return tempColors } + + override fun copy(): AnimatedGradient { + return Default(colorsVector.copyOf()) + } } @SerialName("1") @@ -145,6 +179,10 @@ internal abstract class AnimatedGradient : KeyframeAnimation { } } + override fun copy(): AnimatedGradient { + return Animated(keyframes) + } + override fun interpolated(state: AnimationState): ColorsWithStops { return delegate.interpolated(state) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt index b5f74817..6ee71664 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -23,6 +23,8 @@ internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { dynamic = provider } + abstract fun copy() : AnimatedNumber + abstract fun interpolatedInternal(state: AnimationState): Float final override fun interpolated(state: AnimationState): Float { @@ -42,6 +44,9 @@ internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { @SerialName("ix") override val index: String? = null ) : AnimatedNumber() { + override fun copy(): AnimatedNumber { + return Default(value, expression, index) + } override fun interpolatedInternal(state: AnimationState): Float = value } @@ -68,6 +73,10 @@ internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { } ) + override fun copy(): AnimatedNumber { + return Animated(value, expression, index) + } + override fun interpolatedInternal(state: AnimationState): Float { return delegate.interpolated(state) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index 4293f1dc..ef0ce735 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -19,6 +19,8 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { fun interpolatedRaw(state: AnimationState): Path + fun copy() : AnimatedShape + @Serializable class Default( @SerialName("x") @@ -42,6 +44,10 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { override fun interpolatedRaw(state: AnimationState): Path { return Path().apply { bezier.mapPath(this) } } + + override fun copy(): AnimatedShape { + return Default(expression = expression, index = index, bezier = bezier) + } } @Serializable @@ -92,6 +98,10 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { return rawDelegate.interpolated(state) } + override fun copy(): AnimatedShape { + return Animated(expression = expression, index = index, keyframes = keyframes) + } + override fun interpolated(state: AnimationState): Path { return delegate.interpolated(state) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt index 494ebea1..7d08429a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt @@ -35,4 +35,10 @@ internal class AnimatedTextDocument( override fun interpolated(state: AnimationState): TextDocument { return delegate.interpolated(state) } + + fun copy() = AnimatedTextDocument( + keyframes = keyframes, + expression = expression, + slotID = slotID + ) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 2a9674d6..a36b299f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -27,13 +27,15 @@ internal abstract class AnimatedTransform{ var dynamic : DynamicTransformProvider? = null set(value) { - field = value - position?.dynamicOffset(value?.offset) - scale?.dynamicScale(value?.scale) - rotation?.dynamic(value?.rotation) - opacity?.dynamic(value?.opacity) - skew?.dynamic(value?.skew) - skewAxis?.dynamic(value?.skewAxis) + if (field !== value) { + field = value + position?.dynamicOffset(value?.offset) + scale?.dynamicScale(value?.scale) + rotation?.dynamic(value?.rotation) + opacity?.dynamic(value?.opacity) + skew?.dynamic(value?.skew) + skewAxis?.dynamic(value?.skewAxis) + } } open fun isHidden(state: AnimationState) : Boolean = false diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 4b0c889d..934c673d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -42,6 +42,8 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { dynamic = provider } + abstract fun copy() : AnimatedVector2 + protected abstract fun interpolatedInternal(state: AnimationState) : Vec2 final override fun interpolated(state: AnimationState): Vec2 { @@ -51,7 +53,7 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { @Serializable class Default( @SerialName("k") - val value: FloatArray, + val value: List, @SerialName("x") override val expression: String? = null, @@ -64,6 +66,14 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { private val animationVector = Offset(value[0], value[1]) override fun interpolatedInternal(state: AnimationState): Vec2 = animationVector + + override fun copy(): AnimatedVector2 { + return Default( + value = value, + expression = expression, + index = index + ) + } } @Serializable @@ -88,7 +98,7 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { keyframes = value, emptyValue = Offset.Zero, map = { s, e, p -> - if (inTangent != null && outTangent != null && !s.contentEquals(e)) { + if (inTangent != null && outTangent != null && s != e) { path.rewind() path.createPath(s, e, outTangent, inTangent) pathMeasure.setPath(path, false) @@ -119,6 +129,14 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { dynamic.derive(it, state) } } + + override fun copy(): AnimatedVector2 { + return Animated( + value = value, + expression = expression, + index = index + ) + } } @Serializable @@ -129,6 +147,9 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { override val expression: String? get() = null override val index: String? get() = null + override fun copy(): AnimatedVector2 { + return Split(x.copy(), y.copy()) + } override fun interpolatedInternal(state: AnimationState): Vec2 { return Offset( @@ -183,10 +204,10 @@ internal class AnimatedVector2Serializer : JsonContentPolymorphicSerializer, + endPoint: List, + cp1: List, + cp2: List ) { moveTo(startPoint[0], startPoint[1]) @@ -203,4 +224,4 @@ private fun Path.createPath( } } -private fun FloatArray.hypot() = hypot(this[0], this[1]) \ No newline at end of file +private fun List.hypot() = hypot(this[0], this[1]) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt index c68dd031..139532c9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt @@ -3,6 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.ArraySerializer +import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonElement @@ -13,14 +14,14 @@ import kotlinx.serialization.json.JsonTransformingSerializer @Serializable class BezierInterpolation( @Serializable(with = BezierCoordinateSerializer::class) - val x : Array, + val x : List, @Serializable(with = BezierCoordinateSerializer::class) - val y : Array + val y : List ) @OptIn(ExperimentalSerializationApi::class) -internal class BezierCoordinateSerializer : JsonTransformingSerializer>(ArraySerializer(Float.serializer())) { +internal class BezierCoordinateSerializer : JsonTransformingSerializer>(ListSerializer(Float.serializer())) { override fun transformDeserialize(element: JsonElement): JsonElement { return if (element is JsonPrimitive){ JsonArray(listOf(element)) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt index b832b13d..eddaa209 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt @@ -39,6 +39,8 @@ internal class RepeaterTransform( val endOpacity : AnimatedNumber? = null, ) : AnimatedTransform() { + + fun repeaterMatrix(state: AnimationState, amount: Float): Matrix { matrix.reset() @@ -73,4 +75,16 @@ internal class RepeaterTransform( return matrix } + + fun deepCopy() = RepeaterTransform( + anchorPoint = anchorPoint?.copy(), + position = position?.copy(), + scale = scale?.copy(), + rotation = rotation?.copy(), + opacity = opacity?.copy(), + skew = skew?.copy(), + skewAxis = skewAxis?.copy(), + startOpacity = startOpacity?.copy(), + endOpacity = endOpacity?.copy() + ) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt index 21d60203..0b8e5508 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/ValueKeyframe.kt @@ -12,10 +12,10 @@ import kotlinx.serialization.json.JsonTransformingSerializer internal class ValueKeyframe( @SerialName("s") - override val start: FloatArray? = null, + override val start: List? = null, @SerialName("e") - override val end: FloatArray? = null, + override val end: List? = null, @SerialName("t") override val time: Float, @@ -28,7 +28,7 @@ internal class ValueKeyframe( @SerialName("o") override val outValue : BezierInterpolation? = null, -) : Keyframe by BaseKeyframe( +) : Keyframe> by BaseKeyframe( start = start, end = end, time = time, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index 569c7217..f5708a62 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -1,20 +1,17 @@ package io.github.alexzhirkevich.compottie.internal.animation -import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient @Serializable internal class VectorKeyframe( @SerialName("s") - override val start : FloatArray? = null, + override val start : List? = null, @SerialName("e") - override val end : FloatArray? = null, + override val end : List? = null, @SerialName("t") override val time : Float, @@ -29,18 +26,31 @@ internal class VectorKeyframe( override val outValue : BezierInterpolation? = null, @SerialName("ti") - val inTangent: FloatArray? = null, + val inTangent: List? = null, @SerialName("to") - val outTangent: FloatArray? = null, -) : Keyframe by BaseKeyframe( + val outTangent: List? = null, +) : Keyframe> by BaseKeyframe( start = start, end = end, time = time, hold = hold, inValue = inValue, outValue = outValue -) +) { + fun copy(): VectorKeyframe { + return VectorKeyframe( + start = start, + end = end, + time = time, + hold = hold, + inValue = inValue, + outValue = outValue, + inTangent = inTangent, + outTangent = outTangent + ) + } +} private fun FloatArray.ofNulls() = all { it == 0f } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt index 92983803..46128b7b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterData.kt @@ -23,4 +23,15 @@ internal class CharacterData( @SerialName("data") val data: CharacterPath? = null -) \ No newline at end of file +) { + fun deepCopy() : CharacterData { + return CharacterData( + character = character, + fontFamily = fontFamily, + fontSize = fontSize, + fontStyle = fontStyle, + width = width, + data = data?.copy() + ) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt index 259d3c81..40a3b497 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/CharacterPath.kt @@ -19,6 +19,8 @@ import kotlinx.serialization.json.jsonObject @Serializable(with = CharacterPathSerializer::class) internal sealed interface CharacterPath { + fun copy() : CharacterPath + fun draw( scope : DrawScope, state: AnimationState, @@ -52,6 +54,10 @@ internal sealed interface CharacterPath { } } } + + override fun copy(): CharacterPath { + return Shapes(shapes.map(Shape::deepCopy)) + } } @Serializable @@ -84,6 +90,16 @@ internal sealed interface CharacterPath { ) } else null + override fun copy(): CharacterPath { + return Precomp( + refId = refId, + transform = transform, + inPoint = inPoint, + outPoint = outPoint, + timeStretch = timeStretch + ) + } + override fun draw( scope: DrawScope, state: AnimationState, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt index ccb08fee..20eddb7f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt @@ -3,14 +3,20 @@ package io.github.alexzhirkevich.compottie.internal.assets import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlin.jvm.JvmInline @Serializable internal class FontList( val list : List -) +) { + fun deepCopy() : FontList { + return FontList(list.map(LottieFontAsset::copy)) + } +} @Serializable internal class LottieFontAsset( @@ -25,7 +31,10 @@ internal class LottieFontAsset( val style : String, @SerialName("fPath") - val path : String? = null + val path : String? = null, + + @SerialName("origin") + val origin : FontOrigin? = null ) { @Transient @@ -46,5 +55,34 @@ internal class LottieFontAsset( val fontStyle = if ("italic" in lStyle) FontStyle.Italic else FontStyle.Normal - var font : Font? = null + var font: Font? = null + + fun copy(): LottieFontAsset { + return LottieFontAsset( + family = family, + name = name, + style = style, + path = path, + origin = origin + ) + } +} + +@JvmInline +@Serializable +internal value class FontOrigin(val type : Byte){ + companion object{ + val Local = FontOrigin(0) + val CssUrl = FontOrigin(1) + val ScriptUrl = FontOrigin(2) + val FontUrl = FontOrigin(3) + } + + fun toSpecOrigin() = when(this){ + Local -> LottieFontSpec.FontOrigin.Local + CssUrl -> LottieFontSpec.FontOrigin.CssUrl + ScriptUrl -> LottieFontSpec.FontOrigin.ScriptUrl + FontUrl -> LottieFontSpec.FontOrigin.FontUrl + else -> LottieFontSpec.FontOrigin.Unknown + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt index 6c55f521..774f4fc5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/BlurEffect.kt @@ -14,4 +14,7 @@ internal class BlurEffect( ) : LayerEffect { val radius get() = values.getAs(0)?.value + override fun copy(): LayerEffect { + return BlurEffect(values.map(EffectValue::copy)) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt index b57043bf..73f34d95 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/DropShadowEffect.kt @@ -18,4 +18,8 @@ internal class DropShadowEffect( val angle get() = values.getAs(2)?.value val distance get() = values.getAs(3)?.value val blur get() = values.getAs(4)?.value -} + + override fun copy(): LayerEffect { + return DropShadowEffect(values.map(EffectValue::copy)) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt index 37972d84..3c54889b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/EffectValue.kt @@ -15,37 +15,49 @@ internal sealed interface EffectValue { val value : T? + fun copy() : EffectValue + @Serializable @SerialName("0") class Slider( @SerialName("v") override val value : AnimatedNumber? = null - ) : EffectValue + ) : EffectValue { + override fun copy() = Slider(value?.copy()) + } @Serializable @SerialName("1") class Angle( @SerialName("v") override val value : AnimatedNumber? = null - ) : EffectValue + ) : EffectValue{ + override fun copy() = Angle(value?.copy()) + } @Serializable @SerialName("4") class CheckBox( @SerialName("v") override val value : AnimatedNumber? = null - ) : EffectValue + ) : EffectValue { + override fun copy() = CheckBox(value?.copy()) + } @Serializable @SerialName("2") class Color( @SerialName("v") override val value : AnimatedColor? = null - ) : EffectValue + ) : EffectValue { + override fun copy() = Color(value?.copy()) + } @Serializable class Unsupported( @SerialName("v") override val value : JsonElement? = null - ) : EffectValue + ) : EffectValue { + override fun copy() = Unsupported(value) // TODO deep copy JsonElement? + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt index 6dc377b1..f8ff5a8f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/FillEffect.kt @@ -16,4 +16,7 @@ internal class FillEffect( val opacity get() = values.getAs(6)?.value + override fun copy(): LayerEffect { + return FillEffect(values.map(EffectValue::copy)) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt index 2e249202..126ba74c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffect.kt @@ -11,9 +11,15 @@ internal sealed interface LayerEffect { val values : List> + fun copy() : LayerEffect + @Serializable - data object UnsupportedEffect : LayerEffect { + class UnsupportedEffect : LayerEffect { override val values: List> get() = emptyList() + + override fun copy(): LayerEffect { + return UnsupportedEffect() + } } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt index 814a3aa8..e96ab657 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/LayerEffectsApplier.kt @@ -34,7 +34,7 @@ internal class LayerEffectsApplier( is DropShadowEffect -> { // paint.applyDropShadowEffect(it, animationState, effectState) } - LayerEffect.UnsupportedEffect -> { + is LayerEffect.UnsupportedEffect -> { } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt index f2f23964..0071ca96 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/effects/TintEffect.kt @@ -21,4 +21,8 @@ internal class TintEffect( val intensity get() = values.getAs(2)?.value + + override fun copy(): LayerEffect { + return TintEffect(values.map(EffectValue::copy)) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index 331cd62a..d1f99a19 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -23,7 +23,15 @@ internal class Mask( @SerialName("x") val expand: AnimatedNumber? = null -) +) { + fun deepCopy() = Mask( + isInverted = isInverted, + shape = shape?.copy(), + opacity = opacity?.copy(), + mode = mode, + expand = expand?.copy() + ) +} @Serializable @JvmInline diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt index bfdfdafd..ae014fa2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt @@ -18,7 +18,14 @@ internal class StrokeDash( @SerialName("v") val value : AnimatedNumber -) +) { + fun copy() = StrokeDash( + name = name, + matchName = matchName, + dashType = dashType, + value = value.copy() + ) +} @JvmInline @Serializable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index 15319fa2..af06fc2b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -1,9 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.helpers -import io.github.alexzhirkevich.compottie.internal.AnimationState +import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 -import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -30,6 +29,18 @@ internal class Transform( @SerialName("sa") override val skewAxis: AnimatedNumber? = null, -) : AnimatedTransform() - +) : AnimatedTransform() { + + fun deepCopy(): Transform { + return Transform( + anchorPoint = anchorPoint?.copy(), + position = position?.copy(), + scale = scale?.copy(), + rotation = rotation?.copy(), + opacity = opacity?.copy(), + skew = skew?.copy(), + skewAxis = skewAxis?.copy() + ) + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt index 16143ffc..8441b02b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextAlignment.kt @@ -7,4 +7,9 @@ import kotlinx.serialization.Serializable internal class TextAlignment( val alignment : AnimatedVector2? = null, val grouping: TextGrouping? = null -) \ No newline at end of file +) { + fun copy() = TextAlignment( + alignment = alignment?.copy(), + grouping = grouping + ) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt index 0f7a68bb..91297bd7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt @@ -17,7 +17,15 @@ internal class TextData( @SerialName("p") val followPath : TextFollowPath, -) - +) { + fun deepCopy() : TextData{ + return TextData( + ranges = ranges.map(TextRange::copy), + document = document.copy(), + alignment = alignment.copy(), + followPath = followPath.deepCopy() + ) + } +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt index 3c3ef1c0..30bd7dd0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextFollowPath.kt @@ -25,4 +25,13 @@ internal class TextFollowPath( @SerialName("p") val perpendicularToPath : AnimatedNumber? = null, -) \ No newline at end of file +) { + fun deepCopy() = TextFollowPath( + mask = mask?.deepCopy(), + firstMargin = firstMargin?.copy(), + lastMargin = lastMargin?.copy(), + reversePath = reversePath?.copy(), + forceAlignment = forceAlignment?.copy(), + perpendicularToPath = perpendicularToPath?.copy() + ) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt index 221c313b..324a1e79 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextRange.kt @@ -14,4 +14,9 @@ internal class TextRange( @SerialName("a") val style : TextStyle? = null -) \ No newline at end of file +) { + fun copy() = TextRange( + name = name, + style = style?.copy() + ) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt index 6c6c95a1..8c3a88cf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextStyle.kt @@ -49,4 +49,21 @@ internal class TextStyle( @SerialName("bl") val blur : AnimatedNumber? = null, -) \ No newline at end of file +) { + fun copy() = TextStyle( + strokeWidth = strokeWidth?.copy(), + strokeColor = strokeColor?.copy(), + strokeHue = strokeHue?.copy(), + strokeSaturation = strokeSaturation?.copy(), + strokeBrightness = strokeBrightness?.copy(), + strokeOpacity = strokeOpacity?.copy(), + fillColor = fillColor?.copy(), + fillHue = fillHue?.copy(), + fillSaturation = fillSaturation?.copy(), + fillBrightness = fillBrightness?.copy(), + fillOpacity = fillOpacity?.copy(), + letterSpacing = letterSpacing?.copy(), + lineSpacing = lineSpacing?.copy(), + blur = blur?.copy() + ) +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index a0bcee46..b325f4d4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -7,6 +7,8 @@ import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastFilter import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachReversed +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt @@ -104,6 +106,19 @@ internal abstract class BaseCompositionLayer: BaseLayer() { } } + override fun setDynamicProperties( + composition: DynamicCompositionProvider, + state: AnimationState + ): DynamicLayerProvider? { + val dynamic = super.setDynamicProperties(composition, state) + + getLayers(state).fastForEach { + it.setDynamicProperties(composition, state) + } + + return dynamic + } + private fun getLayers(state: AnimationState): List = synchronized(getLayerLock) { loadedLayers?.let { return@synchronized it } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index c2d41838..e5cec736 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -15,6 +15,8 @@ import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm @@ -102,6 +104,20 @@ internal abstract class BaseLayer : Layer { LayerEffectsApplier(this) } + protected var dynamicLayer : DynamicLayerProvider? = null + private set + + override fun setDynamicProperties( + composition: DynamicCompositionProvider, + state: AnimationState + ) : DynamicLayerProvider? { + resolvingPath?.let { + dynamicLayer = composition[it] + } + transform.dynamic = dynamicLayer?.transform + return dynamicLayer + } + abstract fun drawLayer( drawScope: DrawScope, parentMatrix: Matrix, @@ -117,16 +133,8 @@ internal abstract class BaseLayer : Layer { ) { try { state.onLayer(this) { - val dynamic = resolvingPath?.let { - state.dynamic?.get(it).also { d -> - if (transform.dynamic !== d?.transform) { - transform.dynamic = d?.transform - } - } - } - - if (dynamic?.hidden.derive(hidden, state) + if (dynamicLayer?.hidden.derive(hidden, state) || (inPoint ?: Float.MIN_VALUE) > state.frame || (outPoint ?: Float.MAX_VALUE) < state.frame ) return@onLayer diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt index 586497ba..bec885cd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/CompositionLayer.kt @@ -54,6 +54,10 @@ internal class CompositionLayer( override fun compose(state: AnimationState): List { return composition.animation.layers } + + override fun deepCopy(): Layer { + return CompositionLayer(composition.deepCopy()) + } } internal const val CONTAINER_NAME = "__compottie_container" \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 6667911c..281cf25e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -20,7 +20,6 @@ import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -import org.jetbrains.skia.Color @Serializable @SerialName("2") @@ -100,9 +99,7 @@ internal class ImageLayer( private fun dynamicAsset(state: AnimationState) : ImageAsset? { - val dynamic = resolvingPath?.let { - state.dynamic?.get(it) as? DynamicImageLayerProvider - } + val dynamic = dynamicLayer as? DynamicImageLayerProvider val asset = state.assets[refId] as? ImageAsset ?: return null val image = dynamic?.image?.invoke(state, asset.spec) ?: return asset @@ -150,5 +147,32 @@ internal class ImageLayer( boundsMatrix.map(outBounds) } } + + override fun deepCopy(): Layer { + return ImageLayer( + transform = transform.deepCopy(), + autoOrient = autoOrient, + is3d = is3d, + index = index, + blendMode = blendMode, + clazz = clazz, + htmlId = htmlId, + inPoint = inPoint, + outPoint = outPoint, + startTime = startTime, + name = name, + timeStretch = timeStretch, + parent = parent, + matteMode = matteMode, + matteParent = matteParent, + matteTarget = matteTarget, + hidden = hidden, + collapseTransform = collapseTransform, + masks = masks?.map(Mask::deepCopy), + hasMask = hasMask, + effects = effects.map(LayerEffect::copy), + refId = refId + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 9bb908f7..63f3342f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -1,6 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.layers -import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider +import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsApplier @@ -11,9 +13,7 @@ import io.github.alexzhirkevich.compottie.internal.helpers.MatteMode import io.github.alexzhirkevich.compottie.internal.helpers.Transform import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.JsonClassDiscriminator -import kotlinx.serialization.json.JsonNames import kotlin.jvm.JvmInline -import kotlin.math.ceil @OptIn(ExperimentalSerializationApi::class) @JsonClassDiscriminator("ty") @@ -62,6 +62,10 @@ internal sealed interface Layer : DrawingContent { val effectsApplier : LayerEffectsApplier var resolvingPath : ResolvingPath? + + fun setDynamicProperties(composition: DynamicCompositionProvider, state: AnimationState): DynamicLayerProvider? + + fun deepCopy() : Layer } @JvmInline @@ -69,14 +73,14 @@ internal value class ResolvingPath private constructor(val path : String) { fun resolve(child : String) = ResolvingPath("$path/$child") companion object { - val root = ResolvingPath("/") + val root = ResolvingPath("") } } internal fun ResolvingPath.resolveOrNull(child: String?) : ResolvingPath? = if (child != null) resolve(child) else null -internal val Layer.isContainerLayer get() = name == CONTAINER_NAME +internal val Layer.isContainerLayer get() = name == CONTAINER_NAME diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt index 369b5510..5bcc6e12 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/NullLayer.kt @@ -94,4 +94,30 @@ internal class NullLayer( super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) outBounds.set(0f,0f,0f,0f) } + + override fun deepCopy(): Layer { + return NullLayer( + transform = transform.deepCopy(), + autoOrient = autoOrient, + is3d = is3d, + index = index, + blendMode = blendMode, + clazz = clazz, + htmlId = htmlId, + inPoint = inPoint, + outPoint = outPoint, + startTime = startTime, + name = name, + timeStretch = timeStretch, + parent = parent, + matteMode = matteMode, + matteParent = matteParent, + matteTarget = matteTarget, + hidden = hidden, + collapseTransform = collapseTransform, + masks = masks?.map(Mask::deepCopy), + hasMask = hasMask, + effects = effects.map(LayerEffect::copy) + ) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt index 61a10211..1be9bfee 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/PrecompositionLayer.kt @@ -93,4 +93,34 @@ internal data class PrecompositionLayer( override fun compose(state: AnimationState): List { return (state.assets[refId] as? PrecompositionAsset?)?.layers.orEmpty() } + + override fun deepCopy(): Layer { + return PrecompositionLayer( + refId = refId, + width = width, + height = height, + timeRemapping = timeRemapping, + is3d = is3d, + index = index, + inPoint = inPoint, + outPoint = outPoint, + startTime = startTime, + name = name, + timeStretch = timeStretch, + parent = parent, + hidden = hidden, + masks = masks?.map(Mask::deepCopy), + hasMask = hasMask, + effects = effects.map(LayerEffect::copy), + transform = transform.deepCopy(), + autoOrient = autoOrient, + matteMode = matteMode, + matteParent = matteParent, + matteTarget = matteTarget, + blendMode = blendMode, + clazz = clazz, + htmlId = htmlId, + collapseTransform = collapseTransform + ) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 3ce14197..5ae32abc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.util.fastForEach +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.internal.AnimationState @@ -94,20 +95,7 @@ internal class ShapeLayer( ) : BaseLayer() { @Transient - private var dynamic : DynamicLayerProvider? = null - set(value) { - if (field != value) { - field = value - if (value is DynamicShapeLayerProvider) { - shapes.fastForEach { - it.setDynamicProperties(null, value) - } - } - } - } - - @Transient - private val contentGroup : ContentGroup = ContentGroupImpl( + private val contentGroup: ContentGroup = ContentGroupImpl( name = CONTAINER_NAME, hidden = null, // will be managed by BaseLayer contents = shapes, @@ -116,7 +104,26 @@ internal class ShapeLayer( setContents(emptyList(), emptyList()) } - override fun drawLayer(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { + override fun setDynamicProperties( + composition: DynamicCompositionProvider, + state: AnimationState + ): DynamicLayerProvider? { + val layer = super.setDynamicProperties(composition,state) + if (layer !is DynamicShapeLayerProvider) + return layer + + shapes.fastForEach { + it.setDynamicProperties(null, layer) + } + return layer + } + + override fun drawLayer( + drawScope: DrawScope, + parentMatrix: Matrix, + parentAlpha: Float, + state: AnimationState + ) { contentGroup.draw(drawScope, parentMatrix, parentAlpha, state) } @@ -127,11 +134,34 @@ internal class ShapeLayer( state: AnimationState, outBounds: MutableRect, ) { - resolvingPath?.let { - dynamic = state.dynamic?.get(it) - } - super.getBounds(drawScope, parentMatrix, applyParents, state, outBounds) contentGroup.getBounds(drawScope, boundsMatrix, applyParents, state, outBounds) } + + override fun deepCopy(): Layer { + return ShapeLayer( + transform = transform.deepCopy(), + autoOrient = autoOrient, + is3d = is3d, + index = index, + blendMode = blendMode, + clazz = clazz, + htmlId = htmlId, + inPoint = inPoint, + outPoint = outPoint, + startTime = startTime, + name = name, + effects = effects.map(LayerEffect::copy), + timeStretch = timeStretch, + parent = parent, + matteMode = matteMode, + matteParent = matteParent, + matteTarget = matteTarget, + hidden = hidden, + collapseTransform = collapseTransform, + masks = masks?.map(Mask::deepCopy), + hasMask = hasMask, + shapes = shapes.map(Shape::deepCopy) + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index d5b1ccbe..efc8450c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -163,4 +163,33 @@ internal class SolidColorLayer( boundsMatrix.map(rect) outBounds.set(rect) } + + override fun deepCopy(): Layer { + return SolidColorLayer( + transform = transform.deepCopy(), + autoOrient = autoOrient, + is3d = is3d, + index = index, + blendMode = blendMode, + clazz = clazz, + htmlId = htmlId, + inPoint = inPoint, + outPoint = outPoint, + startTime = startTime, + name = name, + timeStretch = timeStretch, + parent = parent, + matteMode = matteMode, + matteParent = matteParent, + matteTarget = matteTarget, + hidden = hidden, + collapseTransform = collapseTransform, + masks = masks?.map(Mask::deepCopy), + hasMask = hasMask, + width = width, + height = height, + colorHex = colorHex, + effects = effects.map(LayerEffect::copy) + ) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 84234550..dede7c81 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -166,6 +166,33 @@ internal class TextLayer( @Transient private val matrix = Matrix() + override fun deepCopy(): Layer { + return TextLayer( + transform = transform.deepCopy(), + is3d = is3d, + index = index, + inPoint = inPoint, + outPoint = outPoint, + startTime = startTime, + name = name, + timeStretch = timeStretch, + parent = parent, + hidden = hidden, + masks = masks?.map(Mask::deepCopy), + hasMask = hasMask, + effects = effects.map(LayerEffect::copy), + textData = textData.deepCopy(), + autoOrient = autoOrient, + matteMode = matteMode, + matteParent = matteParent, + matteTarget = matteTarget, + blendMode = blendMode, + clazz = clazz, + htmlId = htmlId, + collapseTransform = collapseTransform + ) + } + override fun drawLayer( drawScope: DrawScope, parentMatrix: Matrix, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index 97a17736..a8fd0b9a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.toRect import androidx.compose.ui.graphics.Canvas import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint @@ -35,6 +36,7 @@ import io.github.alexzhirkevich.compottie.internal.platform.ExtendedPathMeasure import io.github.alexzhirkevich.compottie.internal.platform.GradientCache import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.utils.IdentityMatrix import io.github.alexzhirkevich.compottie.internal.utils.scale import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.Serializable @@ -94,7 +96,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { private val trimPathPath = Path() private val path = Path() private val rect = MutableRect(0f, 0f, 0f, 0f) - private val boundsRect = MutableRect(0f, 0f, 0f, 0f) + private val rawBoundsRect = MutableRect(0f, 0f, 0f, 0f) protected val paint by lazy { Paint().apply { @@ -150,7 +152,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { paint.blendMode = state.layer.blendMode.asComposeBlendMode() paint.style = PaintingStyle.Stroke - getBounds(drawScope, parentMatrix, false, state, boundsRect) + getBounds(drawScope, IdentityMatrix, false, state, rawBoundsRect) dynamicStroke.applyToPaint( paint = paint, @@ -159,7 +161,7 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { parentMatrix = parentMatrix, opacity = opacity, strokeWidth = strokeWidth, - size = boundsRect.size, + size = rawBoundsRect::toRect, gradientCache = gradientCache ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index fef6d607..49c4bfbf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -107,9 +107,19 @@ internal class EllipseShape( position.dynamicOffset(dynamicEllipse?.position) } } - override fun setContents(contentsBefore: List, contentsAfter: List) { trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } + + override fun deepCopy(): Shape { + return EllipseShape( + matchName = matchName, + name = name, + hidden = hidden, + direction = direction, + position = position.copy(), + size = size.copy() + ) + } } private const val ELLIPSE_CONTROL_POINT_PERCENTAGE = 0.55228f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 9425f08d..de58e2c9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint @@ -89,6 +90,18 @@ internal class FillShape( @Transient private val gradientCache = GradientCache() + override fun deepCopy(): Shape { + return FillShape( + matchName = matchName, + name = name, + hidden = hidden, + direction = direction, + opacity = opacity?.copy(), + color = color.copy(), + fillRule = fillRule + ) + } + override fun draw(drawScope: DrawScope, parentMatrix: Matrix, parentAlpha: Float, state: AnimationState) { if (dynamicShape?.hidden.derive(hidden, state)) { @@ -103,7 +116,7 @@ internal class FillShape( parentAlpha = parentAlpha, parentMatrix = parentMatrix, opacity = opacity, - size = Size.Zero, + size = { Rect.Zero }, gradientCache = gradientCache ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index c2647e88..c5d9e5fb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -1,10 +1,10 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect +import androidx.compose.ui.geometry.toRect import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach @@ -26,10 +26,10 @@ import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.asComposeBlendMode import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType -import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.GradientCache import io.github.alexzhirkevich.compottie.internal.platform.GradientShader import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.utils.IdentityMatrix import io.github.alexzhirkevich.compottie.internal.utils.firstInstanceOf import io.github.alexzhirkevich.compottie.internal.utils.set import kotlinx.serialization.SerialName @@ -92,7 +92,7 @@ internal class GradientFillShape( private val boundsRect = MutableRect(0f,0f,0f,0f) @Transient - private var paths: List = emptyList() + private var pathContents: List = emptyList() private val paint= Paint().apply { isAntiAlias = true @@ -132,9 +132,8 @@ internal class GradientFillShape( matrix = parentMatrix, cache = gradientCache ) - } else { - getBounds(drawScope, parentMatrix, false, state, boundsRect) } + getBounds(drawScope, IdentityMatrix, false, state, boundsRect) dynamicFill.applyToPaint( paint = paint, @@ -142,7 +141,7 @@ internal class GradientFillShape( parentAlpha = parentAlpha, opacity = opacity, parentMatrix = parentMatrix, - size = boundsRect.size, + size = boundsRect::toRect, gradientCache = gradientCache ) @@ -150,7 +149,7 @@ internal class GradientFillShape( path.rewind() - paths.fastForEach { + pathContents.fastForEach { path.addPath(it.getPath(state), parentMatrix) } @@ -169,7 +168,7 @@ internal class GradientFillShape( outBounds: MutableRect ) { path.rewind() - paths.fastForEach { + pathContents.fastForEach { path.addPath(it.getPath(state), parentMatrix) } outBounds.set(path.getBounds()) @@ -192,8 +191,24 @@ internal class GradientFillShape( override fun setContents(contentsBefore: List, contentsAfter: List) { - paths = contentsAfter.filterIsInstance() + pathContents = contentsAfter.filterIsInstance() roundShape = contentsBefore.firstInstanceOf() } + + override fun deepCopy(): Shape { + return GradientFillShape( + matchName = matchName, + name = name, + hidden = hidden, + opacity = opacity?.copy(), + startPoint = startPoint.copy(), + endPoint = endPoint.copy(), + type = type, + highlightLength = highlightLength?.copy(), + highlightAngle = highlightAngle?.copy(), + colors = colors.copy(), + fillRule = fillRule + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index c3cfce19..3b934194 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -88,5 +88,25 @@ internal class GradientStrokeShape( super.draw(drawScope, parentMatrix, parentAlpha, state) } + + override fun deepCopy(): Shape { + return GradientStrokeShape( + matchName = matchName, + name = name, + hidden = hidden, + lineCap = lineCap, + lineJoin = lineJoin, + strokeMiter = strokeMiter, + opacity = opacity.copy(), + strokeWidth = strokeWidth.copy(), + strokeDash = strokeDash?.map(StrokeDash::copy), + startPoint = startPoint.copy(), + endPoint = endPoint.copy(), + highlightLength = highlightLength?.copy(), + highlightAngle = highlightAngle?.copy(), + colors = colors.copy(), + type = type + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index fcbf4747..f9cffd08 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -52,5 +52,14 @@ internal class GroupShape( } } } + + override fun deepCopy(): Shape { + return GroupShape( + matchName = matchName, + name = name, + hidden = hidden, + items = items.map(Shape::deepCopy) + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index 9fc7dd8b..e2ca4f49 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -93,6 +93,15 @@ internal class MergePathsShape( } } + override fun deepCopy(): Shape { + return MergePathsShape( + matchName = matchName, + name = name, + hidden = hidden, + mode = mode + ) + } + override fun setContents(contentsBefore: List, contentsAfter: List) { pathContents.fastForEach { it.setContents(contentsBefore, contentsAfter) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 37d9eafe..f31f54a5 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -69,4 +69,13 @@ internal class PathShape( } } + override fun deepCopy(): Shape { + return PathShape( + matchName = matchName, + name = name, + hidden = hidden, + shape = shape.copy() + ) + } + } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 369f644f..56d093e8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -139,16 +139,33 @@ internal class PolystarShape( } } + override fun deepCopy(): Shape { + return PolystarShape( + matchName = matchName, + name = name, + hidden = hidden, + position = position?.copy(), + direction = direction, + innerRoundness = innerRoundness?.copy(), + innerRadius = innerRadius?.copy(), + outerRadius = outerRadius?.copy(), + outerRoundness = outerRoundness?.copy(), + rotation = rotation?.copy(), + points = points.copy(), + starType = starType + ) + } + private fun createStarPath(state: AnimationState) { val points = points.interpolated(state = state) var currentAngle = Math.toRadians((rotation?.interpolated(state) ?: 0f) - 90f) // adjust current angle for partial points - val anglePerPoint: Float = (TwoPI / points).toFloat() -// if (isReversed) { -// anglePerPoint *= -1f -// } + var anglePerPoint: Float = (TwoPI / points).toFloat() + if (direction == DIRECTION_REVERSED) { + anglePerPoint *= -1f + } val halfAnglePerPoint = anglePerPoint / 2.0f val partialPointAmount = points - points.toInt() if (partialPointAmount != 0f) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index c2f7bae5..ddcf5243 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -160,4 +160,16 @@ internal class RectShape( roundedCorners?.dynamic(dynamicRect?.roundCorners) } } + + override fun deepCopy(): Shape { + return RectShape( + matchName = matchName, + name = name, + hidden = hidden, + direction = direction, + position = position.copy(), + size = size.copy(), + roundedCorners = roundedCorners?.copy() + ) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 317ce669..2c35c855 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -149,4 +149,15 @@ internal class RepeaterShape( dynamicHidden = properties[layerPath(basePath, name)] } } + + override fun deepCopy(): Shape { + return RepeaterShape( + copies = copies.copy(), + offset = offset?.copy(), + transform = transform.deepCopy(), + name = name, + matchName = matchName, + hidden = hidden + ) + } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index f447c8f2..89953c49 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -50,6 +50,15 @@ internal class RoundShape( } } + override fun deepCopy(): Shape { + return RoundShape( + matchName = matchName, + name = name, + hidden = hidden, + radius = radius.copy() + ) + } + } internal fun RoundShape.applyTo(paint: Paint, state: AnimationState) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index f3db7f3e..7126ab2e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -10,18 +10,25 @@ import kotlinx.serialization.json.JsonClassDiscriminator @Serializable @JsonClassDiscriminator("ty") internal sealed interface Shape : Content { - val matchName : String? - val hidden : Boolean + val matchName: String? - fun setDynamicProperties(basePath: String?, properties : DynamicShapeLayerProvider) {} + val hidden: Boolean + + fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) {} @Serializable - data object UnsupportedShape : Shape { + class UnsupportedShape : Shape { override val name: String? get() = null override val matchName: String? get() = null override val hidden: Boolean get() = true override fun setContents(contentsBefore: List, contentsAfter: List) {} + + override fun deepCopy(): Shape = UnsupportedShape() } + + fun deepCopy(): Shape } + +const val DIRECTION_REVERSED = 3 diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 6843417e..5726a7bc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -58,5 +58,21 @@ internal class SolidStrokeShape( super.draw(drawScope, parentMatrix, parentAlpha, state) } + + override fun deepCopy(): Shape { + return SolidStrokeShape( + matchName = matchName, + name = name, + hidden = hidden, + withAlpha = withAlpha, + lineCap = lineCap, + lineJoin = lineJoin, + strokeMiter = strokeMiter, + opacity = opacity.copy(), + strokeWidth = strokeWidth.copy(), + strokeDash = strokeDash?.map(StrokeDash::copy), + color = color.copy() + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index 11b28c4c..6159f576 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -70,5 +70,20 @@ internal class TransformShape( dynamicShape = properties[layerPath(basePath, name)] } } + + override fun deepCopy(): Shape { + return TransformShape( + matchName = matchName, + name = name, + hidden = hidden, + anchorPoint = anchorPoint?.copy(), + position = position?.copy(), + scale = scale?.copy(), + rotation = rotation?.copy(), + opacity = opacity?.copy(), + skew = skew?.copy(), + skewAxis = skewAxis?.copy() + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt index 660ff2e2..1d9e2a47 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt @@ -60,6 +60,18 @@ internal class TrimPathShape( dynamicShape = properties[layerPath(basePath, name)] } } + + override fun deepCopy(): Shape { + return TrimPathShape( + name = name, + matchName = matchName, + hidden = hidden, + start = start.copy(), + end = end.copy(), + offset = offset.copy(), + type = type + ) + } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index d15d7f11..3314fabd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -10,6 +10,7 @@ private val tempMatrixConcat = Matrix() private val tempMatrixTransform = Matrix() +internal val IdentityMatrix = Matrix() private val InvSqrt2Offset = Offset( 1/sqrt(2f), diff --git a/example/androidapp/build.gradle.kts b/example/androidapp/build.gradle.kts index 6335f564..2aa955a4 100644 --- a/example/androidapp/build.gradle.kts +++ b/example/androidapp/build.gradle.kts @@ -41,6 +41,7 @@ android { dependencies { implementation(project(":example:shared")) + implementation(project(":compottie")) implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.activity:activity-compose:1.8.0") } \ No newline at end of file diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index 8142caf1..d3b9d8fe 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -7,9 +7,11 @@ import android.os.Bundle import android.os.StrictMode import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import io.github.alexzhirkevich.compottie.lottieContext class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { + lottieContext = this // StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder() // .detectAll() // .penaltyLog() diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index e69de29b..1a6ee7c5 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -0,0 +1,116 @@ +{ + "v": "5.5.2", + "fr": 60, + "ip": 0, + "op": 120, + "w": 300, + "h": 100, + "ddd": 0, + "assets": [], + "fonts": { + "list": [ + { + "fPath": "https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf", + "fFamily": "Poppins", + "fStyle": "Bold", + "fName": "Poppins Bold", + "origin": 3 + } + ] + }, + "layers": [ + { + "ddd": 0, + "ty": 5, + "sr": 1, + "ks": { + "a": { + "k": [ + 0, + 0 + ], + "a": 0 + }, + "p": { + "k": [ + 5, + 80 + ], + "a": 0 + }, + "s": { + "k": [ + 100, + 100 + ], + "a": 0 + }, + "r": { + "k": 0, + "a": 0 + }, + "o": { + "k": 100, + "a": 0 + }, + "sk": { + "k": 0, + "a": 0 + }, + "sa": { + "k": 0, + "a": 0 + } + }, + "ao": 0, + "ip": 0, + "op": 120, + "st": 0, + "bm": 0, + "ind": 0, + "t": { + "a": [], + "d": { + "k": [ + { + "s": { + "f": "Poppins Bold", + "fc": [ + 0, + 0, + 0, + 1 + ], + "s": 100, + "t": "Hello", + "j": 0 + }, + "t": 0 + } + ] + }, + "m": { + "a": { + "k": [ + 0, + 0 + ], + "a": 0 + } + }, + "p": {} + } + }, + { + "ty": 1, + "sr": 1, + "ks": {}, + "ip": 0, + "op": 120, + "st": 0, + "sc": "#ffffff", + "sw": 300, + "sh": 100 + } + ] +} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 70fb9f02..845623c8 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -17,6 +17,7 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable @@ -31,7 +32,11 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Paint +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import io.github.alexzhirkevich.compottie.CompottieException @@ -39,7 +44,10 @@ import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec import io.github.alexzhirkevich.compottie.LottieConstants +import io.github.alexzhirkevich.compottie.NetworkFontManager import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState +import io.github.alexzhirkevich.compottie.dynamic.LottieGradient +import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter import io.github.alexzhirkevich.compottie.rememberResourcesAssetsManager @@ -48,6 +56,7 @@ import io.github.alexzhirkevich.shared.generated.resources.ComicNeue import io.github.alexzhirkevich.shared.generated.resources.Res import kotlinx.coroutines.delay import org.jetbrains.compose.resources.ExperimentalResourceApi +import kotlin.random.Random private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -126,16 +135,18 @@ suspend fun LottieCompositionSpec.Companion.Resource( fun App() { // return LottieFontExample() - return AllExamples() +// return AllExamples() +// return LottieList() + val composition = rememberLottieComposition() { -// LottieCompositionSpec.DotLottie(ResourcesAssetsManager()) { +// LottieCompositionSpec.DotLottie { // Res.readBytes("files/$DOT_WITH_IMAGE") // } -// LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Resource(WONDERS) // - LottieCompositionSpec.Url( - "https://assets-v2.lottiefiles.com/a/1633f0d6-117a-11ee-a98b-eb5ca344688a/8OoA7VFval.lottie", +// LottieCompositionSpec.Url( +// "https://assets-v2.lottiefiles.com/a/1633f0d6-117a-11ee-a98b-eb5ca344688a/8OoA7VFval.lottie", // "https://assets-v2.lottiefiles.com/a/10956594-1169-11ee-98fe-ef3d9d71ad0f/WVFg2bDWGj.lottie", // "https://assets-v2.lottiefiles.com/a/0e63252e-1153-11ee-9e35-dfc2b798a135/sYygPbem7R.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", @@ -143,7 +154,7 @@ fun App() { // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/anim_jpg.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/ZipInlineImage.zip", - ) +// ) } // If you want to be aware of loading errors @@ -170,12 +181,38 @@ fun App() { assetsManager = rememberResourcesAssetsManager( readBytes = Res::readBytes ), - fontManager = rememberResourcesFontManager { fontSpec -> - when (fontSpec.family) { - "Comic Neue" -> Res.font.ComicNeue - else -> null + dynamicProperties = rememberLottieDynamicProperties { + shapeLayer("Layer"){ + group("Group") { + rect("Rectangle") { +// size { +// it //* progress +// } + } + stroke("Stroke"){ + gradient { + LottieGradient.Linear( + colorStops = listOf(0f to Color.Red, 1f to Color.Blue), + start = Offset.Zero, + end = it.bottomRight + ) + } + width { + it / this.progress.coerceAtLeast(.5f) + } + } + } } }, + fontManager = remember { + NetworkFontManager() + } +// fontManager = rememberResourcesFontManager { fontSpec -> +// when (fontSpec.family) { +// "Comic Neue" -> Res.font.ComicNeue +// else -> null +// } +// }, ) Image( @@ -342,7 +379,7 @@ fun LottieList() { val composition = rememberLottieComposition( key = "ROBOT" ) { - LottieCompositionSpec.Resource(ROBOT) + LottieCompositionSpec.Resource(WONDERS) } val painter = rememberLottiePainter( From 91e646c303410e9b69639526c1409ac3f28af87d Mon Sep 17 00:00:00 2001 From: Alexander Zhirkevich Date: Mon, 24 Jun 2024 12:58:46 +0300 Subject: [PATCH 068/100] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 065fd68a..e26550e7 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,11 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations rendering engine. +![Example](https://github.com/alexzhirkevich/compottie/assets/63979218/2735c77a-d940-4fd7-825c-208454b3960a) + > [!IMPORTANT] > Starting from v2.0 Compottie has its own multiplatform rendering engine without any platform delegates. ->
    The new rendering engine is implemented from scratch and therefore may have bugs. +>
    The new engine is implemented from scratch and therefore may have bugs. >
    Please [report](https://github.com/alexzhirkevich/compottie/issues) if you find any, preferably with a reproducible animation # Installation From b087072a2f2fd659529ac675aa958216da2986a4 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Mon, 24 Jun 2024 14:29:54 +0300 Subject: [PATCH 069/100] add some legacy lottie checks and fallbacks --- build.gradle.kts | 2 +- .../compottie/NetworkFontManager.kt | 2 +- .../compottie/LottieContext.android.kt | 2 - .../compottie/LottieComposition.kt | 11 +- .../compottie/internal/Animation.kt | 2 + .../internal/animation/AnimatedColor.kt | 2 + .../internal/animation/AnimatedNumber.kt | 20 ++- .../internal/animation/AnimatedShape.kt | 14 +++ .../internal/assets/LottieFontAsset.kt | 23 +++- .../compottie/internal/helpers/Bezier.kt | 46 ++++--- .../compottie/internal/helpers/Mask.kt | 11 ++ .../internal/helpers/text/TextData.kt | 6 +- .../compottie/internal/layers/TextLayer.kt | 21 +++- .../compottie/internal/shapes/PathShape.kt | 10 +- .../src/main/kotlin/MainActivity.kt | 1 - .../composeResources/files/test.json | 116 ------------------ example/shared/src/commonMain/kotlin/App.kt | 41 +++---- gradle.properties | 2 +- 18 files changed, 150 insertions(+), 182 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 006b79ca..9ef5816a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -92,7 +92,7 @@ subprojects { } android { - namespace = "_$_group.${name.filter { it.isLetter() }}" + namespace = "$_group.${name.filter { it.isLetter() }}" compileSdk = (findProperty("android.compileSdk") as String).toInt() defaultConfig { diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt index 85e97eeb..9d83685f 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt @@ -9,7 +9,7 @@ import okio.Path /** * Font manager that loads fonts from the web using [request] with [client]. * - * Supports only [LottieFontSpec.FontOrigin.FontUrl] .ttf fonts (support may be higher on non-Android platforms). + * Guaranteed to work only with [LottieFontSpec.FontOrigin.FontUrl] .ttf fonts (support may be higher on non-Android platforms). * * Note: [LottieCacheStrategy.path] should return valid file system paths to make [NetworkFontManager] work. * Default [DiskCacheStrategy] supports it. diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt index 3a92c1b7..1383b90f 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottieContext.android.kt @@ -4,8 +4,6 @@ import android.content.Context import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext -lateinit var lottieContext: Context - actual typealias LottieContext = Context @Composable diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index 6c2b1ab5..e09f0961 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -235,16 +235,7 @@ class LottieComposition internal constructor( loadedFonts + animation.fonts?.list ?.map { async { - val f = it.font ?: fontManager.font( - LottieFontSpec( - family = it.family, - name = it.name, - style = it.fontStyle, - weight = it.weight, - path = it.path, - origin = it.origin?.toSpecOrigin() ?: LottieFontSpec.FontOrigin.Unknown - ) - ) + val f = it.font ?: fontManager.font(it.spec) it.font = f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt index 72cc8e3c..d403ea26 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt @@ -1,5 +1,7 @@ package io.github.alexzhirkevich.compottie.internal +import androidx.compose.ui.text.font.FontFamily +import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.assets.FontList import io.github.alexzhirkevich.compottie.internal.helpers.Marker diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index a6d74d1c..cb1e6a28 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -83,6 +83,8 @@ internal fun FloatArray.toColor() = Color( alpha = getOrNull(3)?.toColorComponent() ?: 1f ) +// Modern Lotties (v 4.1.9+) have color components in the [0, 1] range. +// Older ones have components in the [0, 255] range. private fun Float.toColorComponent() : Float = when (this) { in COLOR_RANGE_01 -> this in COLOR_RANGE_0255 -> this/255f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt index 6ee71664..56c54def 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -10,8 +10,14 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonNull +import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.JsonTransformingSerializer +import kotlinx.serialization.json.floatOrNull +import kotlinx.serialization.json.intOrNull import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive @Serializable(with = AnimatedNumberSerializer::class) internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { @@ -84,11 +90,16 @@ internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { } internal fun AnimatedNumber.interpolatedNorm(state: AnimationState) = interpolated(state) / 100f + internal class AnimatedNumberSerializer : JsonContentPolymorphicSerializer(AnimatedNumber::class){ override fun selectDeserializer(element: JsonElement): DeserializationStrategy { + if (element is JsonPrimitive){ + return AnimatedNumberAsPrimitiveSerializer + } + val value = requireNotNull(element.jsonObject["k"]){ - "Unrecognized animation value: $element" + "Illegal animated number encoding: $element" } return if (value is JsonPrimitive){ @@ -98,3 +109,10 @@ internal class AnimatedNumberSerializer : JsonContentPolymorphicSerializer(AnimatedNumber.Default.serializer()) { + override fun transformDeserialize(element: JsonElement): JsonElement { + return JsonObject(mapOf("k" to element)) + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt index ef0ce735..70b3e39a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedShape.kt @@ -1,6 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.animation import androidx.compose.ui.graphics.Path +import androidx.compose.ui.util.fastForEach import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.Bezier import kotlinx.serialization.DeserializationStrategy @@ -21,6 +22,8 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { fun copy() : AnimatedShape + fun setClosed(closed : Boolean) + @Serializable class Default( @SerialName("x") @@ -36,6 +39,10 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { @Transient private val tmpPath = Path() + override fun setClosed(closed: Boolean) { + bezier.setIsClosed(closed) + } + override fun interpolated(state: AnimationState): Path { bezier.mapPath(tmpPath) return tmpPath @@ -94,6 +101,13 @@ internal sealed interface AnimatedShape : KeyframeAnimation, Indexable { } ) + override fun setClosed(closed: Boolean) { + keyframes.fastForEach { + it.start?.setIsClosed(closed) + it.end?.setIsClosed(closed) + } + } + override fun interpolatedRaw(state: AnimationState): Path { return rawDelegate.interpolated(state) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt index 20eddb7f..a02b9556 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieFontAsset.kt @@ -13,7 +13,17 @@ import kotlin.jvm.JvmInline internal class FontList( val list : List ) { - fun deepCopy() : FontList { + + @Transient + private val map = list.map { + listOf(it.name to it.spec, it.family to it.spec) + }.flatten().toMap() + + fun find(family: String): LottieFontSpec? { + return map[family] + } + + fun deepCopy(): FontList { return FontList(list.map(LottieFontAsset::copy)) } } @@ -57,6 +67,17 @@ internal class LottieFontAsset( var font: Font? = null + val spec by lazy { + LottieFontSpec( + family = family, + name = name, + style = fontStyle, + weight = weight, + path = path, + origin = origin?.toSpecOrigin() ?: LottieFontSpec.FontOrigin.Unknown + ) + } + fun copy(): LottieFontAsset { return LottieFontAsset( family = family, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt index b535b1e1..bd13e6b6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt @@ -5,7 +5,6 @@ import androidx.compose.ui.geometry.lerp import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed -import androidx.compose.ui.util.lerp import io.github.alexzhirkevich.compottie.internal.util.toOffset import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -63,22 +62,21 @@ internal class Bezier( } if (isClosed) { - val vertex = vertices[0] - val prevVertex = vertices.last() - val cp1 = outTangents[vertices.lastIndex] - val cp2 = inTangents[0] + closeShape() + } + } + } - val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) - val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) + fun setIsClosed(closed : Boolean){ + if (isClosed == closed){ + return + } - curves.add( - CubicCurveData( - shapeCp1.toOffset(), - shapeCp2.toOffset(), - vertex.toOffset() - ) - ) - } + this.isClosed = closed + if (closed){ + closeShape() + } else { + curves.removeLast() } } @@ -146,6 +144,24 @@ internal class Bezier( outPath.close() } } + + private fun closeShape(){ + val vertex = vertices[0] + val prevVertex = vertices.last() + val cp1 = outTangents[vertices.lastIndex] + val cp2 = inTangents[0] + + val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) + + curves.add( + CubicCurveData( + shapeCp1.toOffset(), + shapeCp2.toOffset(), + vertex.toOffset() + ) + ) + } } internal class CubicCurveData( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index d1f99a19..f51a4177 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -21,9 +21,20 @@ internal class Mask( @SerialName("mode") val mode : MaskMode = MaskMode.Intersect, + @SerialName("cl") + val isClosedLegacy : Boolean? = null, + @SerialName("x") val expand: AnimatedNumber? = null ) { + + init { + // Until v 4.4.18 mask objects had a boolean cl property and c was not present in the bezier data + if (isClosedLegacy != null) { + shape?.setClosed(isClosedLegacy) + } + } + fun deepCopy() = Mask( isInverted = isInverted, shape = shape?.copy(), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt index 91297bd7..48f2a1d8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextData.kt @@ -15,15 +15,15 @@ internal class TextData( @SerialName("m") val alignment: TextAlignment, - @SerialName("p") - val followPath : TextFollowPath, +// @SerialName("p") +// val followPath : TextFollowPath, ) { fun deepCopy() : TextData{ return TextData( ranges = ranges.map(TextRange::copy), document = document.copy(), alignment = alignment.copy(), - followPath = followPath.deepCopy() +// followPath = followPath.deepCopy() ) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index dede7c81..33ceea01 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -17,9 +17,9 @@ import androidx.compose.ui.text.TextLayoutResult import androidx.compose.ui.text.TextMeasurer import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.drawText -import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.BaselineShift -import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.sp @@ -41,7 +41,6 @@ import io.github.alexzhirkevich.compottie.internal.helpers.text.fontScale import io.github.alexzhirkevich.compottie.internal.platform.addCodePoint import io.github.alexzhirkevich.compottie.internal.platform.charCount import io.github.alexzhirkevich.compottie.internal.platform.codePointAt -import io.github.alexzhirkevich.compottie.internal.platform.getMatrix import io.github.alexzhirkevich.compottie.internal.platform.isModifier import io.github.alexzhirkevich.compottie.internal.util.toOffset import io.github.alexzhirkevich.compottie.internal.utils.preScale @@ -302,7 +301,13 @@ internal class TextLayer( ?.let { BaselineShift(it) } ?: textStyle.baselineShift - val fontFamily = animationState.fonts[document.fontFamily] + val strFontFamily = document.fontFamily ?: return@run false + val fontFamily = animationState.fonts[strFontFamily] + + val fontSpec = animationState.composition.animation.fonts?.find(strFontFamily) + + val weight = fontSpec?.weight ?: FontWeight.Normal + val style = fontSpec?.style ?: FontStyle.Normal val letterSpacing = textAnimation?.style?.letterSpacing ?.interpolated(animationState)?.toSp() @@ -315,7 +320,9 @@ internal class TextLayer( textStyle.baselineShift != baselineShift || textStyle.lineHeight != lineHeight || textStyle.fontFamily != fontFamily || - textStyle.letterSpacing != letterSpacing + textStyle.letterSpacing != letterSpacing || + textStyle.fontWeight != weight || + textStyle.fontStyle != style ) { textStyle = textStyle.copy( baselineShift = baselineShift, @@ -323,7 +330,9 @@ internal class TextLayer( lineHeight = lineHeight, fontFamily = fontFamily, letterSpacing = letterSpacing, - color = Color.Red + color = Color.Red, + fontWeight = weight, + fontStyle = style ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index f31f54a5..0ebf538a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -30,11 +30,19 @@ internal class PathShape( @SerialName("hd") override val hidden : Boolean = false, + @SerialName("closed") + private val isClosedLegacy : Boolean? = null, + @SerialName("ks") val shape : AnimatedShape ) : Shape, PathContent { - + init { + // Until v 4.4.18 path objects had a boolean closed property and c was not present in the bezier data + if (isClosedLegacy != null) { + shape.setClosed(isClosedLegacy) + } + } @Transient private var trimPaths : CompoundTrimPath? = null diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index d3b9d8fe..f7938267 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -11,7 +11,6 @@ import io.github.alexzhirkevich.compottie.lottieContext class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { - lottieContext = this // StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder() // .detectAll() // .penaltyLog() diff --git a/example/shared/src/commonMain/composeResources/files/test.json b/example/shared/src/commonMain/composeResources/files/test.json index 1a6ee7c5..e69de29b 100644 --- a/example/shared/src/commonMain/composeResources/files/test.json +++ b/example/shared/src/commonMain/composeResources/files/test.json @@ -1,116 +0,0 @@ -{ - "v": "5.5.2", - "fr": 60, - "ip": 0, - "op": 120, - "w": 300, - "h": 100, - "ddd": 0, - "assets": [], - "fonts": { - "list": [ - { - "fPath": "https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf", - "fFamily": "Poppins", - "fStyle": "Bold", - "fName": "Poppins Bold", - "origin": 3 - } - ] - }, - "layers": [ - { - "ddd": 0, - "ty": 5, - "sr": 1, - "ks": { - "a": { - "k": [ - 0, - 0 - ], - "a": 0 - }, - "p": { - "k": [ - 5, - 80 - ], - "a": 0 - }, - "s": { - "k": [ - 100, - 100 - ], - "a": 0 - }, - "r": { - "k": 0, - "a": 0 - }, - "o": { - "k": 100, - "a": 0 - }, - "sk": { - "k": 0, - "a": 0 - }, - "sa": { - "k": 0, - "a": 0 - } - }, - "ao": 0, - "ip": 0, - "op": 120, - "st": 0, - "bm": 0, - "ind": 0, - "t": { - "a": [], - "d": { - "k": [ - { - "s": { - "f": "Poppins Bold", - "fc": [ - 0, - 0, - 0, - 1 - ], - "s": 100, - "t": "Hello", - "j": 0 - }, - "t": 0 - } - ] - }, - "m": { - "a": { - "k": [ - 0, - 0 - ], - "a": 0 - } - }, - "p": {} - } - }, - { - "ty": 1, - "sr": 1, - "ks": {}, - "ip": 0, - "op": 120, - "st": 0, - "sc": "#ffffff", - "sw": 300, - "sh": 100 - } - ] -} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 845623c8..58e2b15b 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.text.BasicTextField import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable @@ -32,11 +31,7 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.Paint -import androidx.compose.ui.graphics.SolidColor -import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import io.github.alexzhirkevich.compottie.CompottieException @@ -56,7 +51,6 @@ import io.github.alexzhirkevich.shared.generated.resources.ComicNeue import io.github.alexzhirkevich.shared.generated.resources.Res import kotlinx.coroutines.delay import org.jetbrains.compose.resources.ExperimentalResourceApi -import kotlin.random.Random private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -124,7 +118,7 @@ private val ALL = listOf( * */ @OptIn(ExperimentalResourceApi::class) @Stable -suspend fun LottieCompositionSpec.Companion.Resource( +suspend fun LottieCompositionSpec.Companion.ResourceString( path : String, dir : String = "files", readBytes: suspend (path: String) -> ByteArray = { Res.readBytes(it) } @@ -143,10 +137,11 @@ fun App() { // LottieCompositionSpec.DotLottie { // Res.readBytes("files/$DOT_WITH_IMAGE") // } - LottieCompositionSpec.Resource(WONDERS) + LottieCompositionSpec.ResourceString(ROBOT) // // LottieCompositionSpec.Url( -// "https://assets-v2.lottiefiles.com/a/1633f0d6-117a-11ee-a98b-eb5ca344688a/8OoA7VFval.lottie", +// "https://assets-v2.lottiefiles.com/a/e9cce796-ee9b-11ee-817f-5ff9e267b845/1IrfDLeScs.lottie", +// "https://lottie.host/02723b80-a213-478e-9320-0e5c3adf88ff/zz4HlIqtSb.lottie", // "https://assets-v2.lottiefiles.com/a/10956594-1169-11ee-98fe-ef3d9d71ad0f/WVFg2bDWGj.lottie", // "https://assets-v2.lottiefiles.com/a/0e63252e-1153-11ee-9e35-dfc2b798a135/sYygPbem7R.lottie", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/dalek.json", @@ -178,11 +173,20 @@ fun App() { val painter = rememberLottiePainter( composition = composition.value, progress = { progress }, + fontManager = remember { + NetworkFontManager() + }, + // fontManager = rememberResourcesFontManager { fontSpec -> +// when (fontSpec.family) { +// "Comic Neue" -> Res.font.ComicNeue +// else -> null +// } +// }, assetsManager = rememberResourcesAssetsManager( readBytes = Res::readBytes ), dynamicProperties = rememberLottieDynamicProperties { - shapeLayer("Layer"){ + shapeLayer("Layer") { group("Group") { rect("Rectangle") { // size { @@ -204,15 +208,6 @@ fun App() { } } }, - fontManager = remember { - NetworkFontManager() - } -// fontManager = rememberResourcesFontManager { fontSpec -> -// when (fontSpec.family) { -// "Comic Neue" -> Res.font.ComicNeue -// else -> null -// } -// }, ) Image( @@ -240,7 +235,7 @@ fun AllExamples(){ ){ items(ALL) { val composition by rememberLottieComposition() { - LottieCompositionSpec.Resource(it) + LottieCompositionSpec.ResourceString(it) } Image( @@ -343,7 +338,7 @@ fun LottieFontExample() { painter = rememberLottiePainter( rememberLottieComposition { // sometimes cmp resources freeze on simultaneous resources access - LottieCompositionSpec.Resource("mobilo/$anim.json") + LottieCompositionSpec.ResourceString("mobilo/$anim.json") }.value ), contentDescription = anim @@ -359,7 +354,7 @@ fun LottieFontExample() { .offset(x = -fontSize / 3), painter = rememberLottiePainter( composition = rememberLottieComposition { - LottieCompositionSpec.Resource("mobilo/BlinkingCursor.json") + LottieCompositionSpec.ResourceString("mobilo/BlinkingCursor.json") }.value, iterations = LottieConstants.IterateForever ), @@ -379,7 +374,7 @@ fun LottieList() { val composition = rememberLottieComposition( key = "ROBOT" ) { - LottieCompositionSpec.Resource(WONDERS) + LottieCompositionSpec.ResourceString(WONDERS) } val painter = rememberLottiePainter( diff --git a/gradle.properties b/gradle.properties index 76656f90..5dbc3a56 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ android.minSdk=21 #MPP kotlin.mpp.enableCInteropCommonization=true kotlin.mpp.androidSourceSetLayoutVersion=2 -version = "2.0.0-beta01" +version=2.0.0-beta01 group=io.github.alexzhirkevich From 962ac8c0637cea8b29a641afc0382edc21599225 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Mon, 24 Jun 2024 15:49:06 +0300 Subject: [PATCH 070/100] add dotlottie anim id --- .../compottie/DotLottieCompositionSpec.kt | 15 ++++---- .../alexzhirkevich/compottie/LottieLogger.kt | 6 ++-- .../assets/CompoundLottieAssetsFetcher.kt | 30 ---------------- .../internal/animation/AnimatedTransform.kt | 4 +-- .../internal/shapes/RepeaterShape.kt | 2 +- example/shared/src/commonMain/kotlin/App.kt | 36 +------------------ 6 files changed, 17 insertions(+), 76 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index c06e0ba7..af524e74 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -23,14 +23,14 @@ var L.useStableWasmMemoryManagement by ::_useStableWasmMemoryManagement /** * [LottieComposition] from a dotLottie zip archive. * - * @param archive archive bytes supplier - * @param assetsManager required only if animation contains assets that are not included in the archive - * (like fonts, resource images, etc.) + * @param archive dotLottie or zip archive file + * @param animId animation id (if dotLottie contains multiple animations) * */ @Stable fun LottieCompositionSpec.Companion.DotLottie( archive: ByteArray, -) : LottieCompositionSpec = DotLottieCompositionSpec(archive) + animId: String? = null +) : LottieCompositionSpec = DotLottieCompositionSpec(archive, animId) @OptIn(ExperimentalSerializationApi::class) @@ -42,6 +42,7 @@ private val DotLottieJson = Json { private class DotLottieCompositionSpec( private val archive : ByteArray, + private val animationId : String?, ) : LottieCompositionSpec { @OptIn(InternalCompottieApi::class) @@ -68,9 +69,11 @@ private class DotLottieCompositionSpec( zipSystem.read(manifestPath).decodeToString() ) - val animation = manifest.animations.first() + val animation = checkNotNull(manifest.animations.firstOrNull()){ + "dotLottie animation folder is empty" + } - val anim = zipSystem.read("animations/${animation.id}.json".toPath()) + val anim = zipSystem.read("animations/${animationId ?: animation.id}.json".toPath()) LottieComposition.parse(anim.decodeToString()).apply { speed = animation.speed diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt index 20ac0c6e..c9afd437 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt @@ -1,5 +1,7 @@ package io.github.alexzhirkevich.compottie +private const val TAG = "COMPOTTIE" + interface LottieLogger { fun log(message: String) @@ -8,11 +10,11 @@ interface LottieLogger { object Default : LottieLogger { override fun log(message: String) { - println(message) + println("[$TAG] $message") } override fun error(message: String, throwable: Throwable) { - println(message) + println("[$TAG] $message") throwable.printStackTrace() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt deleted file mode 100644 index cbf55294..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/assets/CompoundLottieAssetsFetcher.kt +++ /dev/null @@ -1,30 +0,0 @@ -//package io.github.alexzhirkevich.compottie.assets -// -//internal class CompoundLottieAssetsFetcher( -// private val localFetcher: LottieAssetsManager, -// private val remoteFetcher : LottieAssetsManager, -// private val cache : LottieAssetsCache -//) : LottieAssetsManager { -// -// override suspend fun fetch( -// id: String, -// type: LottieAssetsManager.AssetType, -// path: String, -// name: String -// ): ByteArray? { -// return if (path.startsWith("https://", true) || -// path.startsWith("http://", true) -// ) { -// cache.loadFromCache(id, path, name)?.let { -// return it -// } -// -// remoteFetcher.fetch(id, type, path, name)?.also { -// cache.saveToCache(it, id, path, name) -// } -// -// } else { -// localFetcher.fetch(id, type, path, name) -// } -// } -//} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index a36b299f..cd29fe93 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -102,11 +102,11 @@ internal abstract class AnimatedTransform{ val mCos = if (skewAngle == null) 0f - else cos(Math.toRadians(-skewAngle!! + 90)) + else cos(Math.toRadians(-skewAngle + 90)) val mSin = if (skewAngle == null) 1f - else sin(Math.toRadians(-skewAngle!! + 90)) + else sin(Math.toRadians(-skewAngle + 90)) val aTan = tan(Math.toRadians(sk)) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 2c35c855..9830a34e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -75,7 +75,7 @@ internal class RepeaterShape( for (i in copies.toInt() - 1 downTo 0) { matrix.setFrom(parentMatrix) matrix.preConcat(transform.repeaterMatrix(state, i + offset)) - val newAlpha = parentAlpha * lerp(startOpacity, endOpacity, i / copies) + val newAlpha = parentAlpha * lerp(startOpacity, endOpacity, i / copies).coerceIn(0f, 1f) contentGroup.draw(drawScope, matrix, newAlpha, state) } } diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 58e2b15b..e9f77a43 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset @@ -185,29 +186,6 @@ fun App() { assetsManager = rememberResourcesAssetsManager( readBytes = Res::readBytes ), - dynamicProperties = rememberLottieDynamicProperties { - shapeLayer("Layer") { - group("Group") { - rect("Rectangle") { -// size { -// it //* progress -// } - } - stroke("Stroke"){ - gradient { - LottieGradient.Linear( - colorStops = listOf(0f to Color.Red, 1f to Color.Blue), - start = Offset.Zero, - end = it.bottomRight - ) - } - width { - it / this.progress.coerceAtLeast(.5f) - } - } - } - } - }, ) Image( @@ -270,18 +248,6 @@ fun LottieFontExample() { mutableStateOf("") } - val add1 = "COMPOTTIE NOW HAS IT'S OWN COMPOSE MULTIPLATFORM LOTTIE RENDERING ENGINE" - - LaunchedEffect(0) { - listOf(add1).forEach { line -> - line.forEach { - delay(30) - text += it - } - delay(500) - } - } - val fontSize = 90.dp val focus = remember { From e7c515489fe0c7815508e6d6460ef3f8516453ec Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Mon, 24 Jun 2024 16:04:59 +0300 Subject: [PATCH 071/100] spec key --- .../compottie/DotLottieCompositionSpec.kt | 2 ++ .../compottie/UrlCompositionSpec.kt | 3 +++ .../compottie/LottieComposition.kt | 18 ++++++++++++++---- .../compottie/LottieCompositionSpec.kt | 8 ++++++++ example/shared/src/commonMain/kotlin/App.kt | 10 +++------- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index af524e74..c3639dd5 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -45,6 +45,8 @@ private class DotLottieCompositionSpec( private val animationId : String?, ) : LottieCompositionSpec { + override val key: String = "zip_${archive.contentHashCode()}_${animationId.orEmpty()}" + @OptIn(InternalCompottieApi::class) override suspend fun load(cacheKey : Any?): LottieComposition { return withContext(ioDispatcher()) { diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 1aab10ba..bbe4503d 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -59,6 +59,9 @@ private class NetworkCompositionSpec( private val request : NetworkRequest, ) : LottieCompositionSpec { + override val key: String + get() = "url_${url.hashCode()}" + private val assetsManager = NetworkAssetsManager(client, request, cacheStrategy) private val fontManager = NetworkFontManager(client, request, cacheStrategy) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index e09f0961..ef472619 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -13,7 +13,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager -import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import io.github.alexzhirkevich.compottie.assets.LottieFontManager import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson @@ -33,16 +32,21 @@ import kotlinx.coroutines.withContext import kotlin.time.Duration import kotlin.time.Duration.Companion.microseconds +internal object UnspecifiedCompositionKey + /** * Load and prepare [LottieComposition] for displaying. * * Instance produces by [spec] will be remembered until [key] is changed. Those instances - * are cached across the whole application. Cache size can be configured with [L.compositionCacheLimit] + * are cached across the whole application. Cache size can be configured with [L.compositionCacheLimit]. + * If key is not provided then [LottieCompositionSpec.key] will be used. + * To disable caching null [key] must be passed explicitly. + * [currentCompositeKeyHash] in appropriate place can be used as a key (inappropriate places are loops without key for example) * */ @OptIn(InternalCompottieApi::class) @Composable fun rememberLottieComposition( - key : Any? = currentCompositeKeyHash, + key : Any? = UnspecifiedCompositionKey, spec : suspend () -> LottieCompositionSpec, ) : LottieCompositionResult { @@ -55,7 +59,13 @@ fun rememberLottieComposition( LaunchedEffect(result) { try { val composition = withContext(ioDispatcher()) { - updatedSpec().load(key) + val specInstance = updatedSpec() + val k = when (key) { + UnspecifiedCompositionKey -> specInstance.key + null -> null + else -> key + } + specInstance.load(k) } result.complete(composition) } catch (c: CancellationException) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt index 7094dd10..62882c74 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieCompositionSpec.kt @@ -8,6 +8,11 @@ import kotlin.jvm.JvmInline @Stable interface LottieCompositionSpec { + /** + * Key that uniquely identifies composition instance. Equal specs must return equal key + * */ + val key : String? + suspend fun load(cacheKey : Any? = null) : LottieComposition companion object { @@ -30,6 +35,9 @@ private value class JsonStringImpl( private val jsonString: String ) : LottieCompositionSpec { + override val key: String + get() = "string_${jsonString.hashCode()}" + @OptIn(InternalCompottieApi::class) override suspend fun load(cacheKey: Any?): LottieComposition { return withContext(ioDispatcher()) { diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index e9f77a43..bb5c9bf9 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -36,6 +36,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import io.github.alexzhirkevich.compottie.CompottieException +import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec @@ -135,9 +136,6 @@ fun App() { val composition = rememberLottieComposition() { -// LottieCompositionSpec.DotLottie { -// Res.readBytes("files/$DOT_WITH_IMAGE") -// } LottieCompositionSpec.ResourceString(ROBOT) // // LottieCompositionSpec.Url( @@ -337,10 +335,8 @@ fun LottieFontExample() { fun LottieList() { LazyVerticalGrid(columns = GridCells.FixedSize(100.dp)) { items(1000){ - val composition = rememberLottieComposition( - key = "ROBOT" - ) { - LottieCompositionSpec.ResourceString(WONDERS) + val composition = rememberLottieComposition() { + LottieCompositionSpec.ResourceString(ROBOT) } val painter = rememberLottiePainter( From 96cbdb6b349f899cabf59302476277f3b5082c55 Mon Sep 17 00:00:00 2001 From: Alexander Zhirkevich Date: Mon, 24 Jun 2024 16:33:15 +0300 Subject: [PATCH 072/100] Update README.md --- README.md | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index e26550e7..39339a47 100644 --- a/README.md +++ b/README.md @@ -18,25 +18,13 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderin # Installation [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie) -```kotlin - - -dependencies { - implementation("io.github.alexzhirkevich:compottie:") - - // The rest modules are only supported by Compottie 2.x - // For dotLottie (zip) animations - implementation("io.github.alexzhirkevich:compottie-dot:<2x_version>") - - // For Url animation and assets loading - implementation("io.github.alexzhirkevich:compottie-network:<2x_version>") - - // For compose-resources LottieAssetsManager and LottieFontManager. - // This module DOESN'T include resources composition spec due to its uselessness - implementation("io.github.alexzhirkevich:compottie-resources:<2x_version>") -} -``` +| Module | Description | Artifact | +| --------------------- | ------------- | -------------------------------------------------------- | +| `compottie` | Main compottie module with rendering engine and `JsonString` animation spec. Currently has two branches - 1.x (with platform renderers - Skottie and lottie-android) and 2.x (with own renderer). 1.x is maintained until the new renderer becomes stable | `io.github.alexzhirkevich:compottie-dot:` | +| `compottie-dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. Transitively depends on [Okio](https://square.github.io/okio/). For Compottie 2.x only | `io.github.alexzhirkevich:compottie-dot:` | +| `compottie-network` | Contains `Url` animation spec and asset/font managers (with [Ktor](https://ktor.io/) and local cache with [Okio](https://square.github.io/okio/)). Allows loading animations and assets from web. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-network:` | +| `compottie-resources` | Contains asset and font managers powered by official Compose resources. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-resources:` | # Usage The following docs describe the Compottie 2.x usage. From 6e1461222f559c17cf2cc5c8541ff163c8000423 Mon Sep 17 00:00:00 2001 From: Alexander Zhirkevich Date: Mon, 24 Jun 2024 16:33:43 +0300 Subject: [PATCH 073/100] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 39339a47..a83b0936 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderin | Module | Description | Artifact | | --------------------- | ------------- | -------------------------------------------------------- | | `compottie` | Main compottie module with rendering engine and `JsonString` animation spec. Currently has two branches - 1.x (with platform renderers - Skottie and lottie-android) and 2.x (with own renderer). 1.x is maintained until the new renderer becomes stable | `io.github.alexzhirkevich:compottie-dot:` | -| `compottie-dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. Transitively depends on [Okio](https://square.github.io/okio/). For Compottie 2.x only | `io.github.alexzhirkevich:compottie-dot:` | +| `compottie-dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. Depends on [Okio](https://square.github.io/okio/). For Compottie 2.x only | `io.github.alexzhirkevich:compottie-dot:` | | `compottie-network` | Contains `Url` animation spec and asset/font managers (with [Ktor](https://ktor.io/) and local cache with [Okio](https://square.github.io/okio/)). Allows loading animations and assets from web. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-network:` | | `compottie-resources` | Contains asset and font managers powered by official Compose resources. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-resources:` | From 955710adf221394a0d9bcfaafe8482d4b1b13ca4 Mon Sep 17 00:00:00 2001 From: Alexander Zhirkevich Date: Mon, 24 Jun 2024 16:37:00 +0300 Subject: [PATCH 074/100] Update README.md --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a83b0936..6f1b9716 100644 --- a/README.md +++ b/README.md @@ -10,18 +10,17 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderin ![Example](https://github.com/alexzhirkevich/compottie/assets/63979218/2735c77a-d940-4fd7-825c-208454b3960a) +# Installation +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie) + > [!IMPORTANT] > Starting from v2.0 Compottie has its own multiplatform rendering engine without any platform delegates. >
    The new engine is implemented from scratch and therefore may have bugs. >
    Please [report](https://github.com/alexzhirkevich/compottie/issues) if you find any, preferably with a reproducible animation -# Installation -[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie) - - | Module | Description | Artifact | | --------------------- | ------------- | -------------------------------------------------------- | -| `compottie` | Main compottie module with rendering engine and `JsonString` animation spec. Currently has two branches - 1.x (with platform renderers - Skottie and lottie-android) and 2.x (with own renderer). 1.x is maintained until the new renderer becomes stable | `io.github.alexzhirkevich:compottie-dot:` | +| `compottie` | Main module with rendering engine and `JsonString` animation spec. Currently has two branches - 1.x (with platform renderers - Skottie and lottie-android) and 2.x (with own renderer). 1.x is maintained until the new renderer becomes stable | `io.github.alexzhirkevich:compottie-dot:` | | `compottie-dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. Depends on [Okio](https://square.github.io/okio/). For Compottie 2.x only | `io.github.alexzhirkevich:compottie-dot:` | | `compottie-network` | Contains `Url` animation spec and asset/font managers (with [Ktor](https://ktor.io/) and local cache with [Okio](https://square.github.io/okio/)). Allows loading animations and assets from web. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-network:` | | `compottie-resources` | Contains asset and font managers powered by official Compose resources. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-resources:` | From d9030acd5696397d89570ad3b904b48e77612843 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Mon, 24 Jun 2024 17:03:27 +0300 Subject: [PATCH 075/100] review declarations visibility --- .../alexzhirkevich/compottie/dynamic/DrawShape.kt | 13 ------------- .../compottie/internal/animation/AnimatedColor.kt | 1 - .../compottie/internal/content/Content.kt | 2 +- .../compottie/internal/helpers/MatteMode.kt | 2 +- .../compottie/internal/helpers/StrokeDash.kt | 2 +- .../compottie/internal/layers/BaseLayer.kt | 2 +- .../compottie/internal/layers/ImageLayer.kt | 4 +++- 7 files changed, 7 insertions(+), 19 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt deleted file mode 100644 index cd28bf8d..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DrawShape.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.alexzhirkevich.compottie.dynamic - -import androidx.compose.ui.graphics.BlendMode -import androidx.compose.ui.graphics.ColorFilter - -interface DrawShape { - - fun opacity(provider : PropertyProvider) - - fun colorFilter(provider : PropertyProvider) - - fun blendMode(provider: PropertyProvider) -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index cb1e6a28..b86cba6e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -10,7 +10,6 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonArray -import kotlinx.serialization.json.JsonClassDiscriminator import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt index 293e2c26..cede51c7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/Content.kt @@ -1,7 +1,7 @@ package io.github.alexzhirkevich.compottie.internal.content -interface Content { +internal interface Content { val name: String? diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt index b9f9d0ab..bd8901bd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt @@ -5,7 +5,7 @@ import kotlin.jvm.JvmInline @Serializable @JvmInline -value class MatteMode(val mode : Byte) { +internal value class MatteMode(val mode : Byte) { companion object { val None = MatteMode(0) val Add = MatteMode(1) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt index ae014fa2..85ce4ec9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/StrokeDash.kt @@ -29,7 +29,7 @@ internal class StrokeDash( @JvmInline @Serializable -value class DashType(val type : String) { +internal value class DashType(val type : String) { companion object { val Dash = DashType("d") diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index e5cec736..3812402a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -77,7 +77,7 @@ internal abstract class BaseLayer : Layer { private val matteBoundsRect = MutableRect(0f, 0f, 0f, 0f) private val mattePaint by lazy { Paint().apply { - isAntiAlias = false + isAntiAlias = true if (matteMode?.isLuma() == true){ colorFilter = ColorFilter.Luma } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 281cf25e..2783b94e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -91,7 +91,9 @@ internal class ImageLayer( ) : BaseLayer() { @Transient - private val paint = Paint() + private val paint = Paint().apply { + isAntiAlias = true + } private val effectState by lazy { LayerEffectsState() From cec3a0ef376b54225d260676a6b6eb2cda97d572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 25 Jun 2024 09:19:53 +0300 Subject: [PATCH 076/100] minor fixes --- .../compottie/DotLottieCompositionSpec.kt | 11 ++++++----- .../compottie/internal/content/GreedyContent.kt | 2 +- .../compottie/internal/helpers/MatteMode.kt | 6 +++--- gradle/libs.versions.toml | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index c3639dd5..e7b3151f 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -24,13 +24,13 @@ var L.useStableWasmMemoryManagement by ::_useStableWasmMemoryManagement * [LottieComposition] from a dotLottie zip archive. * * @param archive dotLottie or zip archive file - * @param animId animation id (if dotLottie contains multiple animations) + * @param animationId animation id (if dotLottie contains multiple animations) * */ @Stable fun LottieCompositionSpec.Companion.DotLottie( archive: ByteArray, - animId: String? = null -) : LottieCompositionSpec = DotLottieCompositionSpec(archive, animId) + animationId: String? = null +) : LottieCompositionSpec = DotLottieCompositionSpec(archive, animationId) @OptIn(ExperimentalSerializationApi::class) @@ -40,6 +40,7 @@ private val DotLottieJson = Json { allowTrailingComma = true } +@Stable private class DotLottieCompositionSpec( private val archive : ByteArray, private val animationId : String?, @@ -102,12 +103,12 @@ private class DotLottieCompositionSpec( } override fun hashCode(): Int { - return 31 * archive.contentHashCode() + return 31 * (31 * archive.contentHashCode() + animationId.hashCode()) } override fun equals(other: Any?): Boolean { return (other as? DotLottieCompositionSpec)?.let { - it.archive.contentEquals(archive) + it.archive.contentEquals(archive) && it.animationId == other.animationId } == true } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt index 5e3e4121..90583b1d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/GreedyContent.kt @@ -1,5 +1,5 @@ package io.github.alexzhirkevich.compottie.internal.content -interface GreedyContent { +internal interface GreedyContent { fun absorbContent(contents: MutableList) } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt index bd8901bd..3a0b47e7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/MatteMode.kt @@ -15,10 +15,10 @@ internal value class MatteMode(val mode : Byte) { } } -fun MatteMode.isInvert() : Boolean = this == MatteMode.Invert || this == MatteMode.InvertedLuma -fun MatteMode.isLuma() : Boolean = this == MatteMode.Luma || this == MatteMode.InvertedLuma +internal fun MatteMode.isInvert() : Boolean = this == MatteMode.Invert || this == MatteMode.InvertedLuma +internal fun MatteMode.isLuma() : Boolean = this == MatteMode.Luma || this == MatteMode.InvertedLuma -fun MatteMode.isSupported() = +internal fun MatteMode.isSupported() = this == MatteMode.Add || this == MatteMode.Invert // || this == MatteMode.Luma diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6e194efb..a39d4960 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] kotlin="2.0.0" dokka="1.9.0" -compose="1.6.10" +compose="1.6.11" agp = "8.1.1" okio = "3.9.0" serialization="1.6.3" From 2bb066bcd323f9e170554d46984cc8601eccd584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 25 Jun 2024 09:38:18 +0300 Subject: [PATCH 077/100] minor fixes --- .../compottie/DotLottieCompositionSpec.kt | 3 +- .../{DotLottie.kt => ZipFileSystem.kt} | 0 ...vmNative.kt => ZipFileSystem.jvmNative.kt} | 0 .../alexzhirkevich/compottie/DiskCache.kt | 3 ++ .../compottie/DiskCacheStrategy.kt | 7 ++- .../alexzhirkevich/compottie/Network.kt | 47 ++++++++++++++++++ .../compottie/NetworkAssetsManager.kt | 43 +++++++++++++--- .../compottie/NetworkDownloadManager.kt | 49 ------------------- .../compottie/NetworkFontManager.kt | 45 ++++++++++++++--- .../alexzhirkevich/compottie/RealDiskCache.kt | 24 +++++++++ .../compottie/UrlCompositionSpec.kt | 20 ++------ 11 files changed, 160 insertions(+), 81 deletions(-) rename compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/{DotLottie.kt => ZipFileSystem.kt} (100%) rename compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/{DotLottie.jvmNative.kt => ZipFileSystem.jvmNative.kt} (100%) create mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt delete mode 100644 compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index e7b3151f..81e72d23 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -53,7 +53,7 @@ private class DotLottieCompositionSpec( return withContext(ioDispatcher()) { LottieComposition.getOrCreate(cacheKey) { val fileSystem = FakeFileSystem() - val path = "anim".toPath() + val path = "lottie".toPath() fileSystem.write(path) { write(archive) @@ -67,7 +67,6 @@ private class DotLottieCompositionSpec( if (manifestPath != null) { - val manifest = DotLottieJson.decodeFromString( zipSystem.read(manifestPath).decodeToString() ) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.kt similarity index 100% rename from compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.kt rename to compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.kt diff --git a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.jvmNative.kt similarity index 100% rename from compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/DotLottie.jvmNative.kt rename to compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.jvmNative.kt diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt index 1edb9910..a0186b6e 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.runtime.Stable import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import okio.Closeable @@ -11,6 +12,7 @@ import kotlin.js.JsName /** * An LRU cache of files. */ +@Stable interface DiskCache { /** The current size of the cache in bytes. */ @@ -116,6 +118,7 @@ internal val SharedDiskCache by lazy { @OptIn(InternalCompottieApi::class) @JsName("LottieDiskCache") +@Stable fun DiskCache( directory: Path = FileSystem.SYSTEM_TEMPORARY_DIRECTORY.resolve("compottie_disc_cache".toPath()), fileSystem : FileSystem = defaultFileSystem(), diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt index f392a918..9f60602e 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCacheStrategy.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable -import okio.Buffer import okio.ByteString.Companion.encodeUtf8 import okio.Path import okio.use @@ -56,5 +55,11 @@ class DiskCacheStrategy( } private fun key(url: String) = url.encodeUtf8().sha256().hex() + + internal companion object { + val Instance by lazy { + DiskCacheStrategy() + } + } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt new file mode 100644 index 00000000..5191139f --- /dev/null +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt @@ -0,0 +1,47 @@ +package io.github.alexzhirkevich.compottie + +import io.ktor.client.HttpClient +import io.ktor.client.statement.bodyAsChannel +import io.ktor.http.URLParserException +import io.ktor.http.Url +import io.ktor.util.toByteArray +import kotlinx.coroutines.withContext +import okio.Path + +@OptIn(InternalCompottieApi::class) +internal suspend fun networkLoad( + client: HttpClient, + cacheStrategy: LottieCacheStrategy, + request : NetworkRequest, + url: String +): Pair { + return withContext(ioDispatcher()) { + try { + try { + cacheStrategy.load(url)?.let { + return@withContext cacheStrategy.path(url) to it + } + } catch (_: Throwable) { + } + + val ktorUrl = try { + Url(url) + } catch (t: URLParserException) { + return@withContext null to null + } + + val bytes = request(client, ktorUrl).execute().bodyAsChannel().toByteArray() + + try { + cacheStrategy.save(url, bytes)?.let { + return@withContext it to bytes + } + } catch (e: Throwable) { + L.logger.error("${this::class.simpleName} failed to cache downloaded asset", e) + } + null to bytes + } catch (t: Throwable) { + null to null + } + } +} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index bf08861d..b5b367ba 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.runtime.Stable import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieImage import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager @@ -13,22 +14,52 @@ import kotlinx.coroutines.withContext /** * Asset manager that load images from web using [request] with [client]. * */ +@Stable fun NetworkAssetsManager( client: HttpClient = DefaultHttpClient, request : NetworkRequest = GetRequest, - cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy.Instance, ) : LottieAssetsManager = NetworkAssetsManagerImpl( client = client, cacheStrategy = cacheStrategy, request = request, ) +@Stable private class NetworkAssetsManagerImpl( - client: HttpClient, - cacheStrategy: LottieCacheStrategy, - request : NetworkRequest, -) : NetworkDownloadManager(client, cacheStrategy, request), LottieAssetsManager { + private val client: HttpClient, + private val cacheStrategy: LottieCacheStrategy, + private val request : NetworkRequest, +) : LottieAssetsManager { + override suspend fun image(image: LottieImage): ImageRepresentable? { - return load(image.path + image.name).second?.let(ImageRepresentable::Bytes) + return networkLoad( + client = client, + cacheStrategy = cacheStrategy, + request = request, + url = image.path + image.name + ).second?.let(ImageRepresentable::Bytes) + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as NetworkAssetsManagerImpl + + if (client != other.client) return false + if (cacheStrategy != other.cacheStrategy) return false + if (request != other.request) return false + + return true + } + + override fun hashCode(): Int { + var result = client.hashCode() + result = 31 * result + cacheStrategy.hashCode() + result = 31 * result + request.hashCode() + return result } + + } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt deleted file mode 100644 index c81a7dc6..00000000 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkDownloadManager.kt +++ /dev/null @@ -1,49 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import io.ktor.client.HttpClient -import io.ktor.client.statement.bodyAsChannel -import io.ktor.http.URLParserException -import io.ktor.http.Url -import io.ktor.util.toByteArray -import kotlinx.coroutines.withContext -import okio.Path - -internal abstract class NetworkDownloadManager( - private val client: HttpClient, - private val cacheStrategy: LottieCacheStrategy, - private val request : NetworkRequest, -) { - - @OptIn(InternalCompottieApi::class) - protected suspend fun load(url: String): Pair { - return withContext(ioDispatcher()) { - try { - try { - cacheStrategy.load(url)?.let { - return@withContext cacheStrategy.path(url) to it - } - } catch (_: Throwable) { - } - - val ktorUrl = try { - Url(url) - } catch (t: URLParserException) { - return@withContext null to null - } - - val bytes = request(client, ktorUrl).execute().bodyAsChannel().toByteArray() - - try { - cacheStrategy.save(url, bytes)?.let { - return@withContext it to bytes - } - } catch (e: Throwable) { - L.logger.error("${this::class.simpleName} failed to cache downloaded asset", e) - } - null to bytes - } catch (t: Throwable) { - null to null - } - } - } -} \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt index 9d83685f..d97a6d88 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.runtime.Stable import androidx.compose.ui.text.font.Font import io.github.alexzhirkevich.compottie.assets.LottieFontManager import io.github.alexzhirkevich.compottie.assets.LottieFontSpec @@ -9,26 +10,29 @@ import okio.Path /** * Font manager that loads fonts from the web using [request] with [client]. * - * Guaranteed to work only with [LottieFontSpec.FontOrigin.FontUrl] .ttf fonts (support may be higher on non-Android platforms). + * Guaranteed to work only with [LottieFontSpec.FontOrigin.FontUrl] .ttf fonts + * (support may be higher on non-Android platforms). * * Note: [LottieCacheStrategy.path] should return valid file system paths to make [NetworkFontManager] work. * Default [DiskCacheStrategy] supports it. * */ +@Stable fun NetworkFontManager( client: HttpClient = DefaultHttpClient, request : NetworkRequest = GetRequest, - cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy.Instance, ) : LottieFontManager = NetworkFontManagerImpl( client = client, cacheStrategy = cacheStrategy, request = request, ) +@Stable private class NetworkFontManagerImpl( - client: HttpClient, - cacheStrategy: LottieCacheStrategy, - request : NetworkRequest, -) : NetworkDownloadManager(client, cacheStrategy, request),LottieFontManager { + private val client: HttpClient, + private val cacheStrategy: LottieCacheStrategy, + private val request : NetworkRequest, +) : LottieFontManager { override suspend fun font(font: LottieFontSpec): Font? { @@ -36,7 +40,12 @@ private class NetworkFontManagerImpl( return null } - val (path, bytes) = load(font.path ?: return null) + val (path, bytes) = networkLoad( + client = client, + cacheStrategy = cacheStrategy, + request = request, + url = font.path ?: return null + ) if (path == null || bytes == null){ return null @@ -44,6 +53,28 @@ private class NetworkFontManagerImpl( return makeFont(font, path, bytes) } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as NetworkFontManagerImpl + + if (client != other.client) return false + if (cacheStrategy != other.cacheStrategy) return false + if (request != other.request) return false + + return true + } + + override fun hashCode(): Int { + var result = client.hashCode() + result = 31 * result + cacheStrategy.hashCode() + result = 31 * result + request.hashCode() + return result + } + + } internal expect suspend fun makeFont(spec: LottieFontSpec, path: Path, bytes: ByteArray) : Font \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt index 2dbfd257..c4fd1235 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt @@ -1,10 +1,12 @@ package io.github.alexzhirkevich.compottie +import androidx.compose.runtime.Stable import kotlinx.coroutines.CoroutineDispatcher import okio.ByteString.Companion.encodeUtf8 import okio.FileSystem import okio.Path +@Stable internal class RealDiskCache( override val maxSize: Long, override val directory: Path, @@ -45,6 +47,28 @@ internal class RealDiskCache( private fun String.hash() = encodeUtf8().sha256().hex() + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as RealDiskCache + + if (maxSize != other.maxSize) return false + if (directory != other.directory) return false + if (fileSystem != other.fileSystem) return false + if (cache != other.cache) return false + + return true + } + + override fun hashCode(): Int { + var result = maxSize.hashCode() + result = 31 * result + directory.hashCode() + result = 31 * result + fileSystem.hashCode() + result = 31 * result + cache.hashCode() + return result + } + private class RealSnapshot(private val snapshot: DiskLruCache.Snapshot) : DiskCache.Snapshot { override val metadata get() = snapshot.file(ENTRY_METADATA) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index bbe4503d..5108d066 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -1,18 +1,6 @@ +package io.github.alexzhirkevich.compottie + import androidx.compose.runtime.Stable -import io.github.alexzhirkevich.compottie.DefaultHttpClient -import io.github.alexzhirkevich.compottie.DiskCacheStrategy -import io.github.alexzhirkevich.compottie.DotLottie -import io.github.alexzhirkevich.compottie.GetRequest -import io.github.alexzhirkevich.compottie.InternalCompottieApi -import io.github.alexzhirkevich.compottie.L -import io.github.alexzhirkevich.compottie.LottieAnimationFormat -import io.github.alexzhirkevich.compottie.LottieCacheStrategy -import io.github.alexzhirkevich.compottie.LottieComposition -import io.github.alexzhirkevich.compottie.LottieCompositionSpec -import io.github.alexzhirkevich.compottie.NetworkAssetsManager -import io.github.alexzhirkevich.compottie.NetworkFontManager -import io.github.alexzhirkevich.compottie.NetworkRequest -import io.github.alexzhirkevich.compottie.ioDispatcher import io.ktor.client.HttpClient import io.ktor.client.plugins.ClientRequestException import io.ktor.client.statement.bodyAsChannel @@ -41,7 +29,7 @@ fun LottieCompositionSpec.Companion.Url( format: LottieAnimationFormat = LottieAnimationFormat.Undefined, client: HttpClient = DefaultHttpClient, request : NetworkRequest = GetRequest, - cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + cacheStrategy: LottieCacheStrategy = DiskCacheStrategy.Instance, ) : LottieCompositionSpec = NetworkCompositionSpec( url = url, format = format, @@ -92,7 +80,7 @@ private class NetworkCompositionSpec( cacheStrategy.save(url, bytes) } catch (t: Throwable) { L.logger.error( - "Url composition spec failed to cache downloaded animation", + "io.github.alexzhirkevich.compottie.Url composition spec failed to cache downloaded animation", t ) } From d8c1815542c36ca3c42c89a325c04d8efd895106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 25 Jun 2024 10:24:46 +0300 Subject: [PATCH 078/100] treat unsupported masks as Add --- .../compottie/internal/helpers/Mask.kt | 20 ++++++++++++++ .../compottie/internal/layers/BaseLayer.kt | 26 +++++++++---------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index f51a4177..e9ea6d1b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.helpers +import io.github.alexzhirkevich.compottie.L import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.SerialName @@ -48,6 +49,25 @@ internal class Mask( @JvmInline internal value class MaskMode(val type : String) { + init { + if (!isSupported()){ + L.logger.log("Animation contains unsupported mask type: $this. It will be treated as an 'Add' mask") + } + } + + override fun toString() : String { + return when(this){ + None -> "None" + Add -> "Add" + Subtract -> "Subtract" + Intersect -> "Intersect" + Lighten -> "Lighten" + Darken -> "Darken" + Difference -> "Difference" + else -> "Unknown" + } + } + companion object { val None = MaskMode("n") val Add = MaskMode("a") diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 3812402a..2931812f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -96,10 +96,6 @@ internal abstract class BaseLayer : Layer { masks?.all { it.mode == MaskMode.None } == true } - private val supportedMasks by lazy { - masks?.fastFilter { it.mode.isSupported() } - } - override val effectsApplier by lazy { LayerEffectsApplier(this) } @@ -160,6 +156,7 @@ internal abstract class BaseLayer : Layer { return@onLayer } + getBounds(drawScope, matrix, false, state, rect) intersectBoundsWithMatte(drawScope, rect, parentMatrix, state) @@ -278,7 +275,7 @@ internal abstract class BaseLayer : Layer { } } - private fun hasMasks(): Boolean = hasMask != false && !supportedMasks.isNullOrEmpty() + private fun hasMasks(): Boolean = hasMask != false && !masks.isNullOrEmpty() private fun clearCanvas(canvas: Canvas) { // If we don't pad the clear draw, some phones leave a 1px border of the graphics buffer. @@ -299,7 +296,7 @@ internal abstract class BaseLayer : Layer { return } - supportedMasks?.fastForEach { mask -> + masks?.fastForEach { mask -> val maskPath = mask.shape?.interpolatedRaw(state) ?: return@fastForEach path.set(maskPath) path.transform(matrix) @@ -363,13 +360,7 @@ internal abstract class BaseLayer : Layer { canvas.drawRect(rect, contentPaint) } - MaskMode.Add -> if (mask.isInverted) { - applyInvertedAddMask(canvas, matrix, mask, state) - } else { - applyAddMask(canvas, matrix, mask, state) - } - - MaskMode.Subtract -> { + MaskMode.Subtract-> { if (i == 0) { contentPaint.color = Color.Black contentPaint.alpha = 1f @@ -387,6 +378,15 @@ internal abstract class BaseLayer : Layer { } else { applyIntersectMask(canvas, matrix, mask, state) } + + // MaskMode.Add + else -> if (mask.isInverted) { + applyInvertedAddMask(canvas, matrix, mask, state) + } else { + println("MAKING ADD MASK") + applyAddMask(canvas, matrix, mask, state) + } + } } canvas.restore() From f9ad0c8725f4f8485a162b512ed9eb6dd4ce045e Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 25 Jun 2024 14:00:25 +0300 Subject: [PATCH 079/100] fix unnsessary recompositions --- .../compottie/internal/AnimationState.kt | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 1bf04467..4c958e09 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -22,7 +22,8 @@ class AnimationState @PublishedApi internal constructor( enableMergePaths: Boolean, layer: Layer ) { - var frame by mutableStateOf(frame) + + var frame = frame private set val progress: Float @@ -36,7 +37,8 @@ class AnimationState @PublishedApi internal constructor( internal var clipTextToBoundingBoxes by mutableStateOf(clipTextToBoundingBoxes) internal var fontFamilyResolver by mutableStateOf(fontFamilyResolver) internal var enableMergePaths by mutableStateOf(enableMergePaths) - internal var layer by mutableStateOf(layer) + + internal var layer = layer private set /** @@ -44,7 +46,7 @@ class AnimationState @PublishedApi internal constructor( * State is restored after the [block] call * */ @OptIn(ExperimentalContracts::class) - internal fun onFrame(frame: Float, block: (AnimationState) -> R): R { + internal inline fun onFrame(frame: Float, block: (AnimationState) -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } @@ -59,7 +61,7 @@ class AnimationState @PublishedApi internal constructor( } @OptIn(ExperimentalContracts::class) - internal fun onLayer(layer: Layer, block: (AnimationState) -> R): R { + internal inline fun onLayer(layer: Layer, block: (AnimationState) -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } @@ -72,4 +74,36 @@ class AnimationState @PublishedApi internal constructor( this.layer = prevLayer } } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as AnimationState + + if (composition != other.composition) return false + if (assets != other.assets) return false + if (fonts != other.fonts) return false + if (frame != other.frame) return false + if (clipToCompositionBounds != other.clipToCompositionBounds) return false + if (clipTextToBoundingBoxes != other.clipTextToBoundingBoxes) return false + if (fontFamilyResolver != other.fontFamilyResolver) return false + if (enableMergePaths != other.enableMergePaths) return false + + return true + } + + override fun hashCode(): Int { + var result = composition.hashCode() + result = 31 * result + assets.hashCode() + result = 31 * result + fonts.hashCode() + result = 31 * result + frame.hashCode() + result = 31 * result + clipToCompositionBounds.hashCode() + result = 31 * result + clipTextToBoundingBoxes.hashCode() + result = 31 * result + fontFamilyResolver.hashCode() + result = 31 * result + enableMergePaths.hashCode() + return result + } + + } From 5d8e77edafef8ed53642774c2ddf0b5654629086 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 25 Jun 2024 14:05:00 +0300 Subject: [PATCH 080/100] fix offscreen drawing --- .../compottie/DefaultHttpClient.kt | 1 + .../compottie/NetworkAssetsManager.kt | 4 ++ .../compottie/NetworkFontManager.kt | 4 ++ .../compottie/UrlCompositionSpec.kt | 37 ++++++++++++++----- .../internal/content/ContentGroupImpl.kt | 4 +- .../internal/layers/BaseCompositionLayer.kt | 2 +- .../compottie/internal/layers/BaseLayer.kt | 5 +-- 7 files changed, 41 insertions(+), 16 deletions(-) diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt index 31fd7e7f..933603d8 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DefaultHttpClient.kt @@ -9,6 +9,7 @@ import io.ktor.http.Url internal val DefaultHttpClient by lazy { HttpClient { + followRedirects = true expectSuccess = true install(HttpRequestRetry) { maxRetries = 2 diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index b5b367ba..e10c1d44 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -13,6 +13,10 @@ import kotlinx.coroutines.withContext /** * Asset manager that load images from web using [request] with [client]. + * + * @param client http client used for loading animation + * @param request request builder. Simple GET by default + * @param cacheStrategy caching strategy. Caching to system temp dir by default * */ @Stable fun NetworkAssetsManager( diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt index d97a6d88..750e3a0b 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt @@ -15,6 +15,10 @@ import okio.Path * * Note: [LottieCacheStrategy.path] should return valid file system paths to make [NetworkFontManager] work. * Default [DiskCacheStrategy] supports it. + * + * @param client http client used for loading animation + * @param request request builder. Simple GET by default + * @param cacheStrategy caching strategy. Caching to system temp dir by default * */ @Stable fun NetworkFontManager( diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 5108d066..2e53a415 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -7,6 +7,7 @@ import io.ktor.client.statement.bodyAsChannel import io.ktor.client.statement.bodyAsText import io.ktor.http.Url import io.ktor.http.isSuccess +import io.ktor.util.logging.Logger import io.ktor.util.toByteArray import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex @@ -17,9 +18,9 @@ import kotlinx.coroutines.withContext * [LottieComposition] from network [url] * * @param format animation format. Composition spec will try to guess format if format is not specified. - * @param client http client user for loading animation + * @param client http client used for loading animation * @param request request builder. Simple GET by default - * @param cacheStrategy caching strategy. Caching to system tmp dir by default + * @param cacheStrategy caching strategy. Caching to system temp dir by default * * URL assets will be automatically prepared with [NetworkAssetsManager] * */ @@ -60,27 +61,45 @@ private class NetworkCompositionSpec( try { LottieComposition.getOrCreate(cacheKey) { try { + L.logger.log("Searching for animation in cache...") cacheStrategy.load(url)?.let { - return@getOrCreate it.decodeLottieComposition(format) + L.logger.log("Animation was found in cache. Parsing...") + return@getOrCreate it.decodeLottieComposition(format).also { + L.logger.log("Animation was successfully loaded from cache") + } + } ?: run { + L.logger.log("Animation wasn't found in cache") } } catch (_: Throwable) { + L.logger.log("Failed to load or decode animation from cache") } - val response = request(client, Url(url)).execute() + L.logger.log("Fetching animation from web...") - if (!response.status.isSuccess()) { - throw ClientRequestException(response, response.bodyAsText()) - } + val bytes = try { + val response = request(client, Url(url)).execute() + + if (!response.status.isSuccess()) { + L.logger.log("Animation request failed with ${response.status.value} status code") + throw ClientRequestException(response, response.bodyAsText()) + } - val bytes = response.bodyAsChannel().toByteArray() + response.bodyAsChannel().toByteArray() + } catch (t : ClientRequestException){ + L.logger.log("Animation request failed with ${t.response.status.value} status code") + throw t + } + L.logger.log("Animation was loaded from web. Parsing...") val composition = bytes.decodeLottieComposition(format) + L.logger.log("Animation was successfully loaded from web. Caching...") try { cacheStrategy.save(url, bytes) + L.logger.log("Animation was successfully saved to cache") } catch (t: Throwable) { L.logger.error( - "io.github.alexzhirkevich.compottie.Url composition spec failed to cache downloaded animation", + "Failed to cache animation", t ) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt index 8c99828f..c4cbc0a3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt @@ -24,7 +24,6 @@ internal class ContentGroupImpl( private val rect = MutableRect(0f, 0f, 0f, 0f) private val offscreenRect = MutableRect(0f, 0f, 0f, 0f) private val offscreenPaint = Paint().apply { - isAntiAlias = true } private val matrix = Matrix() private val path = Path() @@ -77,11 +76,10 @@ internal class ContentGroupImpl( } } - val isRenderingWithOffScreen = drawingContents.size > 2 && layerAlpha < 1f + val isRenderingWithOffScreen = drawingContents.size > 1 && layerAlpha < .99f val canvas = drawScope.drawContext.canvas if (isRenderingWithOffScreen) { - offscreenRect.set(0f, 0f, 0f, 0f) getBounds(drawScope, matrix, true, state, offscreenRect) offscreenPaint.alpha = layerAlpha canvas.saveLayer(offscreenRect.toRect(), offscreenPaint) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index b325f4d4..564d1486 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -58,7 +58,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { parentMatrix.map(newClipRect) // Apply off-screen rendering only when needed in order to improve rendering performance. - val isDrawingWithOffScreen = layers.isEmpty() && parentAlpha < 1f + val isDrawingWithOffScreen = layers.isNotEmpty() && parentAlpha < .99f val canvas = drawScope.drawContext.canvas diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 2931812f..eeef8c39 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -10,7 +10,6 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.util.fastFilter import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed @@ -34,6 +33,7 @@ import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat +import io.github.alexzhirkevich.compottie.internal.utils.set import io.github.alexzhirkevich.compottie.internal.utils.union internal abstract class BaseLayer : Layer { @@ -156,7 +156,7 @@ internal abstract class BaseLayer : Layer { return@onLayer } - + rect.set(0f,0f,0f,0f) getBounds(drawScope, matrix, false, state, rect) intersectBoundsWithMatte(drawScope, rect, parentMatrix, state) @@ -383,7 +383,6 @@ internal abstract class BaseLayer : Layer { else -> if (mask.isInverted) { applyInvertedAddMask(canvas, matrix, mask, state) } else { - println("MAKING ADD MASK") applyAddMask(canvas, matrix, mask, state) } From 969d15589f1ea5e56dc70ec97cf3c502af0f9c0a Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 25 Jun 2024 14:21:10 +0300 Subject: [PATCH 081/100] opt out of offscreen option --- .../alexzhirkevich/compottie/LottiePainter.kt | 142 +++++++----------- .../compottie/internal/AnimationState.kt | 2 + .../internal/content/ContentGroupImpl.kt | 5 +- .../internal/layers/BaseCompositionLayer.kt | 3 +- 4 files changed, 66 insertions(+), 86 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 52e02bd1..c4507e9a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -31,90 +31,6 @@ import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.coroutines.async import kotlin.math.roundToInt -import kotlin.time.measureTime - -/** - * Create and remember Lottie painter. - * Shortcut that combines [rememberLottiePainter] (with progress arg) - * and [animateLottieCompositionAsState] - * - * @param composition [LottieComposition] usually created by [rememberLottieComposition] - * @param composition The composition to render. This should be retrieved with [rememberLottieComposition]. - * @param assetsManager used to load animation assets that were not loaded during composition - * initialization - * @param fontManager used to load animation fonts - * @param dynamicProperties dynamically-configurable animation properties. Can be created with - * [rememberLottieDynamicProperties] - * @param isPlaying Whether or not the animation is currently playing. Note that the internal - * animation may end due to reaching the target iterations count. If that happens, the animation may - * stop even if this is still true. You can observe the returned [LottieAnimationState.isPlaying] - * to determine whether the underlying animation is still playing. - * @param restartOnPlay If isPlaying switches from false to true, restartOnPlay determines whether - * the progress and iteration gets reset. - * @param reverseOnRepeat Defines what this animation should do when it reaches the end. This setting - * is applied only when [iterations] is either greater than 0 or [LottieConstants.IterateForever]. - * Defaults to `false`. - * @param clipSpec A [LottieClipSpec] that specifies the bound the animation playback - * should be clipped to. - * @param speed The speed the animation should play at. Numbers larger than one will speed it up. - * Numbers between 0 and 1 will slow it down. Numbers less than 0 will play it backwards. - * @param iterations The number of times the animation should repeat before stopping. It must be - * a positive number. [LottieConstants.IterateForever] can be used to repeat forever. - * @param cancellationBehavior The behavior that this animation should have when cancelled. - * In most cases, you will want it to cancel immediately. However, if you have a state based - * transition and you want an animation to finish playing before moving on to the next one then you - * may want to set this to [LottieCancellationBehavior.OnIterationFinish]. - * @param useCompositionFrameRate Use frame rate declared in animation instead of screen refresh rate. - * Animation may seem junky if parameter is set to true and composition frame rate is less than screen - * refresh rate - * @param clipToCompositionBounds if animation should be clipped to the - * [composition].width x [composition].height - * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) - * @param enableMergePaths enable experimental merge paths feature. Most of the time animation doesn't need - * it even if it contains merge paths. This feature should only be enabled for tested animations - * */ -@Composable -fun rememberLottiePainter( - composition : LottieComposition?, - assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, - fontManager: LottieFontManager = LottieFontManager.Empty, - dynamicProperties : DynamicProperties? = null, - isPlaying: Boolean = true, - restartOnPlay: Boolean = true, - reverseOnRepeat: Boolean = false, - clipSpec: LottieClipSpec? = null, - speed: Float = composition?.speed ?: 1f, - iterations: Int = composition?.iterations ?: 1, - cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, - useCompositionFrameRate: Boolean = false, - clipToCompositionBounds: Boolean = true, - clipTextToBoundingBoxes: Boolean = false, - enableMergePaths: Boolean = false, -) : Painter { - - val progress = animateLottieCompositionAsState( - composition = composition, - isPlaying = isPlaying, - restartOnPlay = restartOnPlay, - reverseOnRepeat = reverseOnRepeat, - clipSpec = clipSpec, - speed = speed, - iterations = iterations, - cancellationBehavior = cancellationBehavior, - useCompositionFrameRate = useCompositionFrameRate - ) - - return rememberLottiePainter( - composition = composition, - progress = { progress.value }, - assetsManager = assetsManager, - fontManager = fontManager, - dynamicProperties = dynamicProperties, - clipToCompositionBounds = clipToCompositionBounds, - clipTextToBoundingBoxes = clipTextToBoundingBoxes, - enableMergePaths = enableMergePaths - ) -} /** * Create and remember Lottie painter @@ -126,6 +42,11 @@ fun rememberLottiePainter( * @param fontManager used to load animation fonts * @param dynamicProperties dynamically-configurable animation properties. Can be created with * [rememberLottieDynamicProperties] + * @param applyOpacityToLayers Sets whether to apply opacity to the each layer instead of shape. + * Opacity is normally applied directly to a shape. In cases where translucent + * shapes overlap, applying opacity to a layer will be more accurate at the expense of performance. + * Note: Turning this on can be very expensive and sometimes can cause artifacts. Enable it + * only if the animation have translucent overlapping shapes * @param clipToCompositionBounds if drawing should be clipped to the * [composition].width x [composition].height * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) @@ -140,6 +61,7 @@ fun rememberLottiePainter( assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, fontManager: LottieFontManager = LottieFontManager.Empty, dynamicProperties : DynamicProperties? = null, + applyOpacityToLayers : Boolean = false, clipToCompositionBounds : Boolean = true, clipTextToBoundingBoxes: Boolean = false, enableMergePaths: Boolean = false, @@ -171,6 +93,7 @@ fun rememberLottiePainter( fontFamilyResolver = fontFamilyResolver, clipToCompositionBounds = clipToCompositionBounds, enableMergePaths = enableMergePaths, + applyOpacityToLayers = applyOpacityToLayers, assets = assets.await(), fonts = fonts.await() ) @@ -202,6 +125,55 @@ fun rememberLottiePainter( return painter } +/** + * Create and remember Lottie painter. + * + * Shortcut that combines [rememberLottiePainter] and [animateLottieCompositionAsState] + * */ +@Composable +fun rememberLottiePainter( + composition : LottieComposition?, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, + fontManager: LottieFontManager = LottieFontManager.Empty, + dynamicProperties : DynamicProperties? = null, + isPlaying: Boolean = true, + restartOnPlay: Boolean = true, + reverseOnRepeat: Boolean = false, + applyOpacityToLayers : Boolean = false, + clipSpec: LottieClipSpec? = null, + speed: Float = composition?.speed ?: 1f, + iterations: Int = composition?.iterations ?: 1, + cancellationBehavior: LottieCancellationBehavior = LottieCancellationBehavior.Immediately, + useCompositionFrameRate: Boolean = false, + clipToCompositionBounds: Boolean = true, + clipTextToBoundingBoxes: Boolean = false, + enableMergePaths: Boolean = false, +) : Painter { + + val progress = animateLottieCompositionAsState( + composition = composition, + isPlaying = isPlaying, + restartOnPlay = restartOnPlay, + reverseOnRepeat = reverseOnRepeat, + clipSpec = clipSpec, + speed = speed, + iterations = iterations, + cancellationBehavior = cancellationBehavior, + useCompositionFrameRate = useCompositionFrameRate + ) + + return rememberLottiePainter( + composition = composition, + progress = { progress.value }, + assetsManager = assetsManager, + fontManager = fontManager, + dynamicProperties = dynamicProperties, + clipToCompositionBounds = clipToCompositionBounds, + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + enableMergePaths = enableMergePaths + ) +} + private object EmptyPainter : Painter() { @@ -218,6 +190,7 @@ private class LottiePainter( initialProgress : Float, dynamicProperties: DynamicCompositionProvider?, fontFamilyResolver : FontFamily.Resolver, + applyOpacityToLayers : Boolean, clipTextToBoundingBoxes : Boolean, clipToCompositionBounds : Boolean, enableMergePaths : Boolean, @@ -251,6 +224,7 @@ private class LottiePainter( fonts = fonts, frame = frame, fontFamilyResolver = fontFamilyResolver, + applyOpacityToLayers = applyOpacityToLayers, clipToDrawBounds = clipToCompositionBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes, enableMergePaths = enableMergePaths, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 4c958e09..a519832e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -17,6 +17,7 @@ class AnimationState @PublishedApi internal constructor( internal val fonts: Map, frame: Float, fontFamilyResolver: FontFamily.Resolver, + applyOpacityToLayers : Boolean, clipToDrawBounds: Boolean, clipTextToBoundingBoxes: Boolean, enableMergePaths: Boolean, @@ -37,6 +38,7 @@ class AnimationState @PublishedApi internal constructor( internal var clipTextToBoundingBoxes by mutableStateOf(clipTextToBoundingBoxes) internal var fontFamilyResolver by mutableStateOf(fontFamilyResolver) internal var enableMergePaths by mutableStateOf(enableMergePaths) + internal val applyOpacityToLayers by mutableStateOf(applyOpacityToLayers) internal var layer = layer private set diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt index c4cbc0a3..582fcf72 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt @@ -12,6 +12,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.preConcat +import io.github.alexzhirkevich.compottie.internal.utils.set import io.github.alexzhirkevich.compottie.internal.utils.union internal class ContentGroupImpl( @@ -76,10 +77,12 @@ internal class ContentGroupImpl( } } - val isRenderingWithOffScreen = drawingContents.size > 1 && layerAlpha < .99f + val isRenderingWithOffScreen = state.applyOpacityToLayers && + drawingContents.size > 1 && layerAlpha < .99f val canvas = drawScope.drawContext.canvas if (isRenderingWithOffScreen) { + offscreenRect.set(0f,0f,0f,0f) getBounds(drawScope, matrix, true, state, offscreenRect) offscreenPaint.alpha = layerAlpha canvas.saveLayer(offscreenRect.toRect(), offscreenPaint) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 564d1486..d6ec60e6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -58,7 +58,8 @@ internal abstract class BaseCompositionLayer: BaseLayer() { parentMatrix.map(newClipRect) // Apply off-screen rendering only when needed in order to improve rendering performance. - val isDrawingWithOffScreen = layers.isNotEmpty() && parentAlpha < .99f + val isDrawingWithOffScreen = state.applyOpacityToLayers && + layers.isNotEmpty() && parentAlpha < .99f val canvas = drawScope.drawContext.canvas From 43996b0436d0565788af9d80cdb07f952e7146eb Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 25 Jun 2024 14:56:07 +0300 Subject: [PATCH 082/100] fix dotlottie assets --- .../alexzhirkevich/compottie/LottiePainter.kt | 7 +++---- .../compottie/internal/Animation.kt | 2 -- .../compottie/internal/assets/ImageAsset.kt | 13 ++++++++++-- .../compottie/internal/assets/LottieAsset.kt | 4 ++-- .../internal/layers/SolidColorLayer.kt | 21 ++++++++++++------- 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index c4507e9a..ee38390b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -45,10 +45,9 @@ import kotlin.math.roundToInt * @param applyOpacityToLayers Sets whether to apply opacity to the each layer instead of shape. * Opacity is normally applied directly to a shape. In cases where translucent * shapes overlap, applying opacity to a layer will be more accurate at the expense of performance. - * Note: Turning this on can be very expensive and sometimes can cause artifacts. Enable it - * only if the animation have translucent overlapping shapes - * @param clipToCompositionBounds if drawing should be clipped to the - * [composition].width x [composition].height + * Note: Turning this on can be very expensive and sometimes can cause artifacts. Enable it only if + * the animation have translucent overlapping shapes and always test if it works fine for your animation + * @param clipToCompositionBounds if drawing should be clipped to the [composition].width X [composition].height rect * @param clipTextToBoundingBoxes if text should be clipped to its bounding boxes (if provided in animation) * @param enableMergePaths enable experimental merge paths feature. Most of the time animation doesn't need * it even if it contains merge paths. This feature should only be enabled for tested animations diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt index d403ea26..72cc8e3c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/Animation.kt @@ -1,7 +1,5 @@ package io.github.alexzhirkevich.compottie.internal -import androidx.compose.ui.text.font.FontFamily -import io.github.alexzhirkevich.compottie.assets.LottieFontSpec import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.assets.FontList import io.github.alexzhirkevich.compottie.internal.helpers.Marker diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt index 9b59698f..97ecfd74 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/ImageAsset.kt @@ -77,8 +77,17 @@ internal class ImageAsset( } override fun copy(): LottieAsset = - ImageAsset(id, fileName, path, slotId, name, embedded, w, h).apply { - this.bitmap?.let { setBitmap(it) } + ImageAsset( + id = id, + fileName = fileName, + path = path, + slotId = slotId, + name = name, + embedded = embedded, + w = w, + h = h + ).apply { + setBitmap(this@ImageAsset.bitmap ?: return@apply) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt index ef9d03b0..e28767e3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/assets/LottieAsset.kt @@ -14,10 +14,10 @@ internal sealed interface LottieAsset { fun copy() : LottieAsset @Serializable - object UnsupportedAsset : LottieAsset { + class UnsupportedAsset() : LottieAsset { override val id: String get() = "" - override fun copy() = this + override fun copy() = UnsupportedAsset() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index efc8450c..78133768 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -7,6 +7,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope +import io.github.alexzhirkevich.compottie.L import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -106,16 +107,22 @@ internal class SolidColorLayer( isAntiAlias = true blendMode = this@SolidColorLayer.blendMode.asComposeBlendMode() - val hex = colorHex.substringAfter("#") + try { + val hex = colorHex.substringAfter("#") - val chunked = hex.chunked(2).map { it.toInt(16) } - val (r, g, b) = chunked + val chunked = hex.chunked(2).map { it.toInt(16) } + val (r, g, b) = chunked - val a = if (chunked.size == 4) { - chunked.last() - } else 255 + val a = if (chunked.size == 4) { + chunked.last() + } else 255 - color = Color(red = r, green = g, blue = b, alpha = a) + color = Color(red = r, green = g, blue = b, alpha = a) + } catch (t: Throwable) { + // TODO: sometimes colors are exported as #d9.0147ae147aedf.fdf3b645a1c8e6.028f5c28f5c8 + L.logger.log("Solid color layer (${name}) with unrecognized color: $colorHex") + color = Color.Transparent + } } From bd61050f02c637d1562222eb84a0b225c38766b9 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Tue, 25 Jun 2024 15:14:44 +0300 Subject: [PATCH 083/100] fix composition clipping --- .../compottie/DotLottieAssetsManager.kt | 3 ++- .../alexzhirkevich/compottie/UrlCompositionSpec.kt | 2 +- .../github/alexzhirkevich/compottie/LottiePainter.kt | 12 +++++++++--- .../compottie/internal/AnimationState.kt | 6 +++--- .../internal/layers/BaseCompositionLayer.kt | 9 +-------- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index 0b57ccd0..8aff7fa3 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -41,7 +41,8 @@ internal class DotLottieAssetsManager( val r = this.root ?: "/".toPath() zipFileSystem.read(r.resolve(fullPath.toPath(true))) } catch (t: IOException) { - null + L.logger.error("Failed to decode dotLottie asset $trimName", t) + return null } } } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 2e53a415..47d9711e 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -17,7 +17,7 @@ import kotlinx.coroutines.withContext /** * [LottieComposition] from network [url] * - * @param format animation format. Composition spec will try to guess format if format is not specified. + * @param format animation format (JSON/dotLottie). Composition spec will try to guess format if format is not specified. * @param client http client used for loading animation * @param request request builder. Simple GET by default * @param cacheStrategy caching strategy. Caching to system temp dir by default diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index ee38390b..c84e33c7 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -100,14 +100,18 @@ fun rememberLottiePainter( } LaunchedEffect( + fontFamilyResolver, clipTextToBoundingBoxes, clipToCompositionBounds, - fontFamilyResolver, + applyOpacityToLayers, + enableMergePaths ){ (painter as? LottiePainter)?.let { - it.clipTextToBoundingBoxes = clipTextToBoundingBoxes + it.enableMergePaths = enableMergePaths + it.applyOpacityToLayers = applyOpacityToLayers it.clipToCompositionBounds = clipToCompositionBounds it.fontFamilyResolver = fontFamilyResolver + it.fontFamilyResolver = fontFamilyResolver } } @@ -224,7 +228,7 @@ private class LottiePainter( frame = frame, fontFamilyResolver = fontFamilyResolver, applyOpacityToLayers = applyOpacityToLayers, - clipToDrawBounds = clipToCompositionBounds, + clipToCompositionBounds = clipToCompositionBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes, enableMergePaths = enableMergePaths, layer = compositionLayer @@ -236,6 +240,8 @@ private class LottiePainter( } } + var enableMergePaths: Boolean by animationState::enableMergePaths + var applyOpacityToLayers: Boolean by animationState::applyOpacityToLayers var clipTextToBoundingBoxes: Boolean by animationState::clipTextToBoundingBoxes var clipToCompositionBounds: Boolean by animationState::clipToCompositionBounds var fontFamilyResolver: FontFamily.Resolver by animationState::fontFamilyResolver diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index a519832e..7e4fde05 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -18,7 +18,7 @@ class AnimationState @PublishedApi internal constructor( frame: Float, fontFamilyResolver: FontFamily.Resolver, applyOpacityToLayers : Boolean, - clipToDrawBounds: Boolean, + clipToCompositionBounds: Boolean, clipTextToBoundingBoxes: Boolean, enableMergePaths: Boolean, layer: Layer @@ -34,11 +34,11 @@ class AnimationState @PublishedApi internal constructor( return p.coerceIn(0f, 1f) } - internal var clipToCompositionBounds by mutableStateOf(clipToDrawBounds) + internal var clipToCompositionBounds by mutableStateOf(clipToCompositionBounds) internal var clipTextToBoundingBoxes by mutableStateOf(clipTextToBoundingBoxes) internal var fontFamilyResolver by mutableStateOf(fontFamilyResolver) internal var enableMergePaths by mutableStateOf(enableMergePaths) - internal val applyOpacityToLayers by mutableStateOf(applyOpacityToLayers) + internal var applyOpacityToLayers by mutableStateOf(applyOpacityToLayers) internal var layer = layer private set diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index d6ec60e6..77a4218d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -73,17 +73,10 @@ internal abstract class BaseCompositionLayer: BaseLayer() { val childAlpha = if (isDrawingWithOffScreen) 1f else parentAlpha state.onFrame(getRemappedFrame(state)) { remappedState -> - layers.fastForEachReversed { layer -> - // Only clip precomps. This mimics the way After Effects renders animations. - val ignoreClipOnThisLayer = - isContainerLayer || !state.clipToCompositionBounds - - if (!ignoreClipOnThisLayer && !newClipRect.isEmpty) { + if (state.clipToCompositionBounds && !newClipRect.isEmpty) { canvas.clipRect(newClipRect) } - - layer.draw(drawScope, parentMatrix, childAlpha, remappedState) } } From 8eb3c65a9b5a2eb1987bd100b57b87701eea983e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 25 Jun 2024 15:49:24 +0300 Subject: [PATCH 084/100] fix scripts --- build.gradle.kts | 13 +++++++++++++ .../alexzhirkevich/compottie/FileSystem.kt | 2 ++ .../compottie/UrlCompositionSpec.kt | 4 ++++ .../alexzhirkevich/compottie/FileSystem.web.kt | 5 +---- kotlin-js-store/yarn.lock | 17 ----------------- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 9ef5816a..0d35b208 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -104,6 +104,19 @@ subprojects { } } + configurations + .filter { it.name.contains("wasmJs") } + .onEach { + it.resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } + } + } + + val javadocJar by tasks.registering(Jar::class) { archiveClassifier.set("javadoc") } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt index 80c32c9a..7ebe9560 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt @@ -8,6 +8,8 @@ import okio.Path import kotlin.random.Random import kotlin.random.nextULong +internal object CacheIsUnsupportedException : Exception() + internal expect fun defaultFileSystem() : FileSystem internal fun Closeable.closeQuietly() { diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 47d9711e..5a2f5e62 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -70,6 +70,8 @@ private class NetworkCompositionSpec( } ?: run { L.logger.log("Animation wasn't found in cache") } + } catch (t : CacheIsUnsupportedException) { + L.logger.log("File system cache is disabled for this strategy on the current platform") } catch (_: Throwable) { L.logger.log("Failed to load or decode animation from cache") } @@ -97,6 +99,8 @@ private class NetworkCompositionSpec( try { cacheStrategy.save(url, bytes) L.logger.log("Animation was successfully saved to cache") + } catch (t : CacheIsUnsupportedException) { + L.logger.log("File system cache is disabled for this strategy on the current platform") } catch (t: Throwable) { L.logger.error( "Failed to cache animation", diff --git a/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt b/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt index aeb86032..3c8b3c99 100644 --- a/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt +++ b/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt @@ -65,9 +65,6 @@ private object ThrowingFileSystem : FileSystem() { } private fun throwReadWriteIsUnsupported(): Nothing { - throw UnsupportedOperationException( - "Javascript does not have access to the device's file system and cannot read from or " + - "write to it. If you are running on Node.js use 'NodeJsFileSystem' instead." - ) + throw CacheIsUnsupportedException } } \ No newline at end of file diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index d2598c6d..bd682f3c 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -641,13 +641,6 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-zlib@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - browserslist@^4.21.10: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" @@ -2151,16 +2144,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" From 98c5691e214a44f757fac94f0c4bc8487688575c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 25 Jun 2024 21:57:23 +0300 Subject: [PATCH 085/100] apply convention plugins --- README.md | 16 ++ build.gradle.kts | 174 ++---------------- compottie-dot/build.gradle.kts | 3 - compottie-network/build.gradle.kts | 11 +- compottie-resources/build.gradle.kts | 9 - compottie/build.gradle.kts | 3 - convention-plugins/build.gradle.kts | 9 + convention-plugins/settings.gradle.kts | 21 +++ .../kotlin/ktorwasm.workaround.gradle.kts | 11 ++ .../src/main/kotlin/module.android.gradle.kts | 25 +++ .../kotlin/module.multiplatform.gradle.kts | 62 +++++++ .../main/kotlin/module.publication.gradle.kts | 61 ++++++ .../main/kotlin/root.publication.gradle.kts | 25 +++ example/androidapp/build.gradle.kts | 12 +- .../src/main/kotlin/MainActivity.kt | 9 - example/desktopApp/build.gradle.kts | 2 - example/shared/build.gradle.kts | 57 +----- example/webApp/build.gradle.kts | 15 +- gradle/libs.versions.toml | 9 +- settings.gradle.kts | 3 +- 20 files changed, 264 insertions(+), 273 deletions(-) create mode 100644 convention-plugins/build.gradle.kts create mode 100644 convention-plugins/settings.gradle.kts create mode 100644 convention-plugins/src/main/kotlin/ktorwasm.workaround.gradle.kts create mode 100644 convention-plugins/src/main/kotlin/module.android.gradle.kts create mode 100644 convention-plugins/src/main/kotlin/module.multiplatform.gradle.kts create mode 100644 convention-plugins/src/main/kotlin/module.publication.gradle.kts create mode 100644 convention-plugins/src/main/kotlin/root.publication.gradle.kts diff --git a/README.md b/README.md index 6f1b9716..74d255eb 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,22 @@ The network module also brings the `NetworkAssetsManager` that have similar para If you are using Url composition spec then specifying `NetworkAssetsManager` is redundant. Url composition spec automatically prepares url assets +There is no stable Ktor client for wasm so to use network module on this target you need to add +the following to the bottom of your build script: + +```kotlin +configurations + .filter { it.name.contains("wasmJs") } + .onEach { + it.resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } + } + } +``` ## Dynamic Properties Lottie allows you to update Lottie animation properties at runtime. Some reasons you may want to do this are: diff --git a/build.gradle.kts b/build.gradle.kts index 0d35b208..568bfb3f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,14 +1,15 @@ @file:Suppress("DSL_SCOPE_VIOLATION") import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import java.util.Base64 -import java.util.Properties plugins { - alias(libs.plugins.kotlin.multiplatform) + id("root.publication") + + alias(libs.plugins.kotlin.multiplatform) apply false alias(libs.plugins.android.application).apply(false) - alias(libs.plugins.android.library) + alias(libs.plugins.android.library) apply false alias(libs.plugins.compose).apply(false) + alias(libs.plugins.composeCompiler).apply(false) alias(libs.plugins.dokka).apply(false) alias(libs.plugins.serialization).apply(false) id("maven-publish") @@ -18,6 +19,7 @@ plugins { buildscript { dependencies { classpath(libs.gp.atomicfu) + classpath(libs.nexus.publish) } } @@ -26,167 +28,17 @@ val jvmTarget = findProperty("jvmTarget") as String val _group = findProperty("group") as String subprojects { - if (!name.startsWith("compottie")){ - return@subprojects - } - - plugins.apply("maven-publish") - plugins.apply("signing") - plugins.apply("org.jetbrains.kotlin.multiplatform") - plugins.apply("com.android.library") - - group = _group - version = findProperty("version") as String - - kotlin { - @OptIn(ExperimentalKotlinGradlePluginApi::class) - applyDefaultHierarchyTemplate { - common { - group("jvmNative") { - withAndroidTarget() - withJvm() - withIos() - withMacos() - } - group("web"){ - withJs() - withWasmJs() - } - group("skiko"){ - withJvm() - withIos() - withMacos() - withJs() - withWasmJs() - } - } - } - - androidTarget { - compilations.all { - kotlinOptions.jvmTarget = jvmTarget - } - publishLibraryVariants("release") - } - - iosArm64() - iosX64() - iosSimulatorArm64() - macosX64() - macosArm64() - - - jvm("desktop") { - compilations.all { - kotlinOptions.jvmTarget = jvmTarget - } - } - - js(IR) { - browser() - } - - wasmJs() { - browser() - } - } - android { - namespace = "$_group.${name.filter { it.isLetter() }}" - compileSdk = (findProperty("android.compileSdk") as String).toInt() + plugins.apply("org.jetbrains.compose") + plugins.apply("org.jetbrains.kotlin.plugin.compose") - defaultConfig { - minSdk = (findProperty("android.minSdk") as String).toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.toVersion(jvmTarget) - targetCompatibility = JavaVersion.toVersion(jvmTarget) - } - } - - configurations - .filter { it.name.contains("wasmJs") } - .onEach { - it.resolutionStrategy.eachDependency { - if (requested.group.startsWith("io.ktor") && - requested.name.startsWith("ktor-client-") - ) { - useVersion("3.0.0-wasm2") - } - } - } - - - val javadocJar by tasks.registering(Jar::class) { - archiveClassifier.set("javadoc") - } - - val signingTasks = tasks.withType() - - tasks.withType().configureEach { - dependsOn(signingTasks) - } - publishing { - if (rootProject.ext.has("ossrhPassword")) { - repositories.maven { - val releasesRepoUrl = - "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" - val snapshotsRepoUrl = - "https://s01.oss.sonatype.org/content/repositories/snapshots/" - url = if (version.toString().endsWith("SNAPSHOT")) { - uri(snapshotsRepoUrl) - } else { - uri(releasesRepoUrl) - } - credentials { - username = rootProject.ext.get("ossrhUsername").toString() - password = rootProject.ext.get("ossrhPassword").toString() - } - } - } - - publications.withType { - artifact(javadocJar) - pom { - name.set("Compottie") - description.set("Compose Multiplatform Lottie animation renderer") - url.set("https://github.com/alexzhirkevich/compottie") - - licenses { - license { - name.set("MIT") - url.set("https://opensource.org/licenses/MIT") - } - } - developers { - developer { - id.set("alexzhirkevich") - name.set("Alexander Zhirkevich") - email.set("sasha.zhirkevich@gmail.com") - } - } - scm { - url.set("https://github.com/alexzhirkevich/compottie") - connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") - } - } - } - } - if (System.getenv("GPG_KEY") != null) { - signing { - useInMemoryPgpKeys( - Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), - System.getenv("GPG_KEY_PWD"), - ) - sign(publishing.publications) - } + if (!name.startsWith("compottie")) { + return@subprojects } -} -android { - namespace = "$_group.${project.name}" - compileSdk = (findProperty("android.compileSdk") as String).toInt() + plugins.apply("module.publication") + plugins.apply("module.android") + plugins.apply("module.multiplatform") } //tasks.register("clean", Delete::class) { diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts index 11d7cb7e..fc1ea2fc 100644 --- a/compottie-dot/build.gradle.kts +++ b/compottie-dot/build.gradle.kts @@ -1,9 +1,6 @@ @file:Suppress("DSL_SCOPE_VIOLATION") plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.compose) - alias(libs.plugins.composeCompiler) alias(libs.plugins.serialization) } diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index d8557963..f06a4a12 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -1,15 +1,8 @@ - @file:Suppress("DSL_SCOPE_VIOLATION") - -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import java.util.Base64 - plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.compose) - alias(libs.plugins.composeCompiler) - alias(libs.plugins.serialization) id("kotlinx-atomicfu") + id("ktorwasm.workaround") } + kotlin { sourceSets { commonMain.dependencies { diff --git a/compottie-resources/build.gradle.kts b/compottie-resources/build.gradle.kts index 29eef8bf..e38286d4 100644 --- a/compottie-resources/build.gradle.kts +++ b/compottie-resources/build.gradle.kts @@ -1,13 +1,4 @@ -@file:Suppress("DSL_SCOPE_VIOLATION") -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import java.util.Base64 - -plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.compose) - alias(libs.plugins.composeCompiler) -} kotlin { sourceSets { diff --git a/compottie/build.gradle.kts b/compottie/build.gradle.kts index 3d434fcb..5a616d5e 100644 --- a/compottie/build.gradle.kts +++ b/compottie/build.gradle.kts @@ -1,9 +1,6 @@ @file:Suppress("DSL_SCOPE_VIOLATION") plugins { - alias(libs.plugins.kotlin.multiplatform) - alias(libs.plugins.compose) - alias(libs.plugins.composeCompiler) alias(libs.plugins.serialization) id("kotlinx-atomicfu") } diff --git a/convention-plugins/build.gradle.kts b/convention-plugins/build.gradle.kts new file mode 100644 index 00000000..ae3a7b41 --- /dev/null +++ b/convention-plugins/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + `kotlin-dsl` +} + +dependencies { + implementation(libs.nexus.publish) + implementation(libs.kotlin.gp) + implementation(libs.android.gp) +} \ No newline at end of file diff --git a/convention-plugins/settings.gradle.kts b/convention-plugins/settings.gradle.kts new file mode 100644 index 00000000..ffb42e8a --- /dev/null +++ b/convention-plugins/settings.gradle.kts @@ -0,0 +1,21 @@ +pluginManagement { + repositories { + google() + gradlePluginPortal() + mavenCentral() + } +} + +dependencyResolutionManagement { + repositories { + google() + gradlePluginPortal() + mavenCentral() + } + + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} \ No newline at end of file diff --git a/convention-plugins/src/main/kotlin/ktorwasm.workaround.gradle.kts b/convention-plugins/src/main/kotlin/ktorwasm.workaround.gradle.kts new file mode 100644 index 00000000..69d90ef0 --- /dev/null +++ b/convention-plugins/src/main/kotlin/ktorwasm.workaround.gradle.kts @@ -0,0 +1,11 @@ +configurations + .filter { it.name.contains("wasmJs") } + .onEach { + it.resolutionStrategy.eachDependency { + if (requested.group.startsWith("io.ktor") && + requested.name.startsWith("ktor-client-") + ) { + useVersion("3.0.0-wasm2") + } + } + } diff --git a/convention-plugins/src/main/kotlin/module.android.gradle.kts b/convention-plugins/src/main/kotlin/module.android.gradle.kts new file mode 100644 index 00000000..f9200b30 --- /dev/null +++ b/convention-plugins/src/main/kotlin/module.android.gradle.kts @@ -0,0 +1,25 @@ +import org.gradle.api.JavaVersion +import org.gradle.api.publish.maven.MavenPublication +import org.gradle.api.tasks.bundling.Jar + +import java.util.Base64 + + +plugins { + id("com.android.library") +} + +val jvmTarget = findProperty("jvmTarget") as String + +android { + namespace = "$group.${name.filter { it.isLetter() }}" + compileSdk = (findProperty("android.compileSdk") as String).toInt() + + defaultConfig { + minSdk = (findProperty("android.minSdk") as String).toInt() + } + compileOptions { + sourceCompatibility = JavaVersion.toVersion(jvmTarget) + targetCompatibility = JavaVersion.toVersion(jvmTarget) + } +} diff --git a/convention-plugins/src/main/kotlin/module.multiplatform.gradle.kts b/convention-plugins/src/main/kotlin/module.multiplatform.gradle.kts new file mode 100644 index 00000000..c435e615 --- /dev/null +++ b/convention-plugins/src/main/kotlin/module.multiplatform.gradle.kts @@ -0,0 +1,62 @@ +import org.gradle.kotlin.dsl.kotlin +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + kotlin("multiplatform") +} + +val _jvmTarget = findProperty("jvmTarget")!! as String + +kotlin { + @OptIn(ExperimentalKotlinGradlePluginApi::class) + applyDefaultHierarchyTemplate { + common { + group("jvmNative") { + withAndroidTarget() + withJvm() + withIos() + withMacos() + } + group("web") { + withJs() + withWasmJs() + } + group("skiko") { + withJvm() + withIos() + withMacos() + withJs() + withWasmJs() + } + } + } + + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.fromTarget(_jvmTarget)) + } + publishLibraryVariants("release") + } + + iosArm64() + iosX64() + iosSimulatorArm64() + macosX64() + macosArm64() + + + jvm("desktop") { + compilerOptions { + jvmTarget.set(JvmTarget.fromTarget(_jvmTarget)) + } + } + + js(IR) { + browser() + } + + wasmJs() { + browser() + } +} \ No newline at end of file diff --git a/convention-plugins/src/main/kotlin/module.publication.gradle.kts b/convention-plugins/src/main/kotlin/module.publication.gradle.kts new file mode 100644 index 00000000..f2b659ec --- /dev/null +++ b/convention-plugins/src/main/kotlin/module.publication.gradle.kts @@ -0,0 +1,61 @@ +import org.gradle.api.publish.maven.MavenPublication +import org.gradle.api.tasks.bundling.Jar +import org.gradle.kotlin.dsl.`maven-publish` + +import java.util.Base64 + + +plugins { + `maven-publish` + signing +} + + +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} + +val signingTasks = tasks.withType() +tasks.withType().configureEach { + dependsOn(signingTasks) +} + +publishing { + publications.withType { + artifact(javadocJar) + pom { + name.set("Compottie") + description.set("Compose Multiplatform lottie animation") + url.set("https://github.com/alexzhirkevich/compottie") + + licenses { + license { + name.set("MIT") + url.set("https://opensource.org/licenses/MIT") + } + } + developers { + developer { + id.set("alexzhirkevich") + name.set("Alexander Zhirkevich") + email.set("sasha.zhirkevich@gmail.com") + } + } + scm { + url.set("https://github.com/alexzhirkevich/compottie") + connection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + developerConnection.set("scm:git:git://github.com/alexzhirkevich/compottie.git") + } + } + } +} + +if (System.getenv("GPG_KEY") != null) { + signing { + useInMemoryPgpKeys( + Base64.getDecoder().decode(System.getenv("GPG_KEY")).decodeToString(), + System.getenv("GPG_KEY_PWD"), + ) + sign(publishing.publications) + } +} \ No newline at end of file diff --git a/convention-plugins/src/main/kotlin/root.publication.gradle.kts b/convention-plugins/src/main/kotlin/root.publication.gradle.kts new file mode 100644 index 00000000..1fdaed40 --- /dev/null +++ b/convention-plugins/src/main/kotlin/root.publication.gradle.kts @@ -0,0 +1,25 @@ +plugins { + id("io.github.gradle-nexus.publish-plugin") +} + +allprojects { + group = "io.github.alexzhirkevich" + version = "1.1.3" +} + +nexusPublishing { + // Configure maven central repository + // https://github.com/gradle-nexus/publish-plugin#publishing-to-maven-central-via-sonatype-ossrh + repositories { + sonatype { //only for users registered in Sonatype after 24 Feb 2021 + nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/")) + snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) + + if (System.getenv("OSSRH_PASSWORD") != null) { + stagingProfileId.set(System.getenv("OSSRH_STAGING_PROFILE_ID")) + username.set(System.getenv("OSSRH_USERNAME")) + password.set(System.getenv("OSSRH_PASSWORD")) + } + } + } +} \ No newline at end of file diff --git a/example/androidapp/build.gradle.kts b/example/androidapp/build.gradle.kts index 2aa955a4..1b93ec1d 100644 --- a/example/androidapp/build.gradle.kts +++ b/example/androidapp/build.gradle.kts @@ -3,22 +3,20 @@ plugins { id("org.jetbrains.kotlin.android") alias(libs.plugins.android.application) - alias(libs.plugins.compose) - alias(libs.plugins.composeCompiler) } val _jvmTarget = findProperty("jvmTarget") as String android { - namespace = "io.github.alexzhirkevich.compottie.example.android" + namespace = "$group.compottie.example.android" compileSdk = 34 defaultConfig { - applicationId = "io.github.alexzhirkevich.compottie.example.android" + applicationId = namespace minSdk = 24 targetSdk = 34 versionCode = 1 - versionName = "1.0" + versionName = project.version.toString() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -42,6 +40,6 @@ dependencies { implementation(project(":example:shared")) implementation(project(":compottie")) - implementation("androidx.core:core-ktx:1.12.0") - implementation("androidx.activity:activity-compose:1.8.0") + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.activity.compose) } \ No newline at end of file diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index f7938267..97e8958c 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -1,21 +1,12 @@ package io.github.alexzhirkevich.compottie.example.android import App -import android.graphics.BitmapShader -import android.graphics.Matrix import android.os.Bundle -import android.os.StrictMode import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import io.github.alexzhirkevich.compottie.lottieContext class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { -// StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder() -// .detectAll() -// .penaltyLog() -// .penaltyDeath() -// .build()); super.onCreate(savedInstanceState) setContent { App() } } diff --git a/example/desktopApp/build.gradle.kts b/example/desktopApp/build.gradle.kts index 8d1cc15f..ae3d6aaa 100644 --- a/example/desktopApp/build.gradle.kts +++ b/example/desktopApp/build.gradle.kts @@ -1,8 +1,6 @@ plugins { kotlin("multiplatform") - id("org.jetbrains.compose") - alias(libs.plugins.composeCompiler) } diff --git a/example/shared/build.gradle.kts b/example/shared/build.gradle.kts index 26eb8d0a..1133c02d 100644 --- a/example/shared/build.gradle.kts +++ b/example/shared/build.gradle.kts @@ -1,38 +1,11 @@ -@Suppress("DSL_SCOPE_VIOLATION") - plugins { - alias(libs.plugins.composeCompiler) - alias(libs.plugins.compose) - alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.multiplatform) + id("module.android") + id("module.multiplatform") + id("ktorwasm.workaround") } -val _jvmTarget = findProperty("jvmTarget") as String - kotlin { - applyDefaultHierarchyTemplate() - jvm("desktop") { - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - androidTarget() { - compilations.all { - kotlinOptions { - jvmTarget = _jvmTarget - } - } - } - js(IR) { - browser() - } - wasmJs(){ - browser() - } - listOf( iosX64(), iosArm64(), @@ -79,31 +52,7 @@ kotlin { } android { - namespace = "compottie.example" - compileSdk = 34 - sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") sourceSets["main"].res.srcDirs("src/androidMain/res") sourceSets["main"].resources.srcDirs("src/commonMain/resources") - - compileOptions { - sourceCompatibility = JavaVersion.toVersion(_jvmTarget) - targetCompatibility = JavaVersion.toVersion(_jvmTarget) - } - - defaultConfig { - minSdk = 24 - } } - -configurations - .filter { it.name.contains("wasmJs") } - .onEach { - it.resolutionStrategy.eachDependency { - if (requested.group.startsWith("io.ktor") && - requested.name.startsWith("ktor-client-") - ) { - useVersion("3.0.0-wasm2") - } - } - } \ No newline at end of file diff --git a/example/webApp/build.gradle.kts b/example/webApp/build.gradle.kts index 4efa0779..6287187a 100644 --- a/example/webApp/build.gradle.kts +++ b/example/webApp/build.gradle.kts @@ -1,8 +1,5 @@ plugins { - id("org.jetbrains.compose") kotlin("multiplatform") - alias(libs.plugins.composeCompiler) - } kotlin { @@ -24,15 +21,5 @@ kotlin { } } -configurations - .filter { it.name.contains("wasmJs") } - .onEach { - it.resolutionStrategy.eachDependency { - if (requested.group.startsWith("io.ktor") && - requested.name.startsWith("ktor-client-") - ) { - useVersion("3.0.0-wasm2") - } - } - } +plugins.apply("ktorwasm.workaround") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a39d4960..9f5af197 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,4 +1,6 @@ [versions] +androidx-activity-compose="1.9.0" +androidx-core-ktx="1.13.1" kotlin="2.0.0" dokka="1.9.0" compose="1.6.11" @@ -8,8 +10,11 @@ serialization="1.6.3" ktor="2.3.11" atomicfu="0.23.2" coroutines="1.8.0" +nexus-publish="2.0.0" [libraries] +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } +androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core-ktx" } okio = { module = "com.squareup.okio:okio", version.ref = "okio" } okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "okio" } serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } @@ -19,6 +24,9 @@ ktor-client-ios = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } gp-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu-gradle-plugin", version.ref = "atomicfu" } coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } +nexus-publish = { module = "io.github.gradle-nexus.publish-plugin:io.github.gradle-nexus.publish-plugin.gradle.plugin", version.ref = "nexus-publish" } +kotlin-gp = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +android-gp = { module = "com.android.tools.build:gradle", version.ref = "agp" } [plugins] compose = { id = "org.jetbrains.compose", version.ref = "compose" } @@ -28,4 +36,3 @@ android-library = { id = "com.android.library", version.ref = "agp" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } - diff --git a/settings.gradle.kts b/settings.gradle.kts index 6b04d400..7d123b78 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,10 +1,10 @@ pluginManagement { + includeBuild("convention-plugins") repositories { google() gradlePluginPortal() mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - } } @@ -26,3 +26,4 @@ include(":example:desktopApp") include(":example:webApp") include(":example:androidapp") include(":example:shared") + From 44cac96a4f4ce918e0585b680188daa926694c7a Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 26 Jun 2024 11:01:42 +0300 Subject: [PATCH 086/100] update dynamic properties on recreate --- .../alexzhirkevich/compottie/LottiePainter.kt | 27 ++++++++++++++----- .../internal/layers/BaseCompositionLayer.kt | 2 +- .../compottie/internal/layers/BaseLayer.kt | 8 +++--- .../compottie/internal/layers/Layer.kt | 2 +- .../compottie/internal/layers/ShapeLayer.kt | 10 +++---- .../internal/shapes/BaseStrokeShape.kt | 6 ++--- .../compottie/internal/shapes/EllipseShape.kt | 7 ++--- .../compottie/internal/shapes/FillShape.kt | 8 +++--- .../internal/shapes/GradientFillShape.kt | 6 ++--- .../compottie/internal/shapes/GroupShape.kt | 4 +-- .../internal/shapes/MergePathsShape.kt | 5 ++-- .../compottie/internal/shapes/PathShape.kt | 5 ++-- .../internal/shapes/PolystarShape.kt | 7 ++--- .../compottie/internal/shapes/RectShape.kt | 7 ++--- .../internal/shapes/RepeaterShape.kt | 8 +++--- .../compottie/internal/shapes/RoundShape.kt | 5 ++-- .../compottie/internal/shapes/Shape.kt | 2 +- .../internal/shapes/TransformShape.kt | 5 ++-- .../internal/shapes/TrimPathShape.kt | 6 ++--- 19 files changed, 63 insertions(+), 67 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index c84e33c7..62b2ce40 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -72,7 +72,6 @@ fun rememberLottiePainter( EmptyPainter, composition, ) { - if (composition != null) { val assets = async(ioDispatcher()) { composition.loadAssets(assetsManager, true) @@ -100,21 +99,34 @@ fun rememberLottiePainter( } LaunchedEffect( + painter, fontFamilyResolver, clipTextToBoundingBoxes, clipToCompositionBounds, applyOpacityToLayers, - enableMergePaths + enableMergePaths, ){ (painter as? LottiePainter)?.let { it.enableMergePaths = enableMergePaths it.applyOpacityToLayers = applyOpacityToLayers it.clipToCompositionBounds = clipToCompositionBounds - it.fontFamilyResolver = fontFamilyResolver + it.clipTextToBoundingBoxes = clipTextToBoundingBoxes it.fontFamilyResolver = fontFamilyResolver } } + LaunchedEffect( + painter, + dynamicProperties + ) { + (painter as? LottiePainter)?.setDynamicProperties( + when (dynamicProperties) { + is DynamicCompositionProvider -> dynamicProperties + null -> null + }, + ) + } + LaunchedEffect(painter) { (painter as? LottiePainter)?.let { lp -> snapshotFlow { @@ -171,6 +183,7 @@ fun rememberLottiePainter( assetsManager = assetsManager, fontManager = fontManager, dynamicProperties = dynamicProperties, + applyOpacityToLayers = applyOpacityToLayers, clipToCompositionBounds = clipToCompositionBounds, clipTextToBoundingBoxes = clipTextToBoundingBoxes, enableMergePaths = enableMergePaths @@ -234,10 +247,12 @@ private class LottiePainter( layer = compositionLayer ) + fun setDynamicProperties(provider : DynamicCompositionProvider?) { + compositionLayer.setDynamicProperties(provider, animationState) + } + init { - if (dynamicProperties != null) { - compositionLayer.setDynamicProperties(dynamicProperties, animationState) - } + setDynamicProperties(dynamicProperties) } var enableMergePaths: Boolean by animationState::enableMergePaths diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 77a4218d..5b3e8c75 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -101,7 +101,7 @@ internal abstract class BaseCompositionLayer: BaseLayer() { } override fun setDynamicProperties( - composition: DynamicCompositionProvider, + composition: DynamicCompositionProvider?, state: AnimationState ): DynamicLayerProvider? { val dynamic = super.setDynamicProperties(composition, state) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index eeef8c39..0006f132 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -25,7 +25,6 @@ import io.github.alexzhirkevich.compottie.internal.helpers.Mask import io.github.alexzhirkevich.compottie.internal.helpers.MaskMode import io.github.alexzhirkevich.compottie.internal.helpers.isInvert import io.github.alexzhirkevich.compottie.internal.helpers.isLuma -import io.github.alexzhirkevich.compottie.internal.helpers.isSupported import io.github.alexzhirkevich.compottie.internal.platform.Luma import io.github.alexzhirkevich.compottie.internal.platform.drawRect import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost @@ -33,7 +32,6 @@ import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat -import io.github.alexzhirkevich.compottie.internal.utils.set import io.github.alexzhirkevich.compottie.internal.utils.union internal abstract class BaseLayer : Layer { @@ -104,11 +102,11 @@ internal abstract class BaseLayer : Layer { private set override fun setDynamicProperties( - composition: DynamicCompositionProvider, + composition: DynamicCompositionProvider?, state: AnimationState ) : DynamicLayerProvider? { - resolvingPath?.let { - dynamicLayer = composition[it] + dynamicLayer = resolvingPath?.let { + composition?.get(it) } transform.dynamic = dynamicLayer?.transform return dynamicLayer diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt index 63f3342f..10674b09 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/Layer.kt @@ -63,7 +63,7 @@ internal sealed interface Layer : DrawingContent { var resolvingPath : ResolvingPath? - fun setDynamicProperties(composition: DynamicCompositionProvider, state: AnimationState): DynamicLayerProvider? + fun setDynamicProperties(composition: DynamicCompositionProvider?, state: AnimationState): DynamicLayerProvider? fun deepCopy() : Layer } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 5ae32abc..16bd5411 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -105,15 +105,15 @@ internal class ShapeLayer( } override fun setDynamicProperties( - composition: DynamicCompositionProvider, + composition: DynamicCompositionProvider?, state: AnimationState ): DynamicLayerProvider? { val layer = super.setDynamicProperties(composition,state) - if (layer !is DynamicShapeLayerProvider) + if (layer !is DynamicShapeLayerProvider) { + shapes.fastForEach { + it.setDynamicProperties(null, null) + } return layer - - shapes.fastForEach { - it.setDynamicProperties(null, layer) } return layer } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt index a8fd0b9a..287bb33b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/BaseStrokeShape.kt @@ -192,11 +192,11 @@ internal abstract class BaseStrokeShape() : Shape, DrawingContent { } } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) name?.let { - dynamicStroke = properties[layerPath(basePath, it)] - dynamicShape = properties[layerPath(basePath, it)] + dynamicStroke = properties?.get(layerPath(basePath, it)) + dynamicShape = properties?.get(layerPath(basePath, it)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 49c4bfbf..9f15b3b0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -1,14 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipse import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipseProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.dynamic.toOffset -import io.github.alexzhirkevich.compottie.dynamic.toScaleFactor import io.github.alexzhirkevich.compottie.dynamic.toSize import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content @@ -18,7 +16,6 @@ import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset import io.github.alexzhirkevich.compottie.internal.animation.dynamicSize import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -97,11 +94,11 @@ internal class EllipseShape( return path } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) val dynamicEllipse = dynamicShape as? DynamicEllipseProvider? size.dynamicSize(dynamicEllipse?.size) position.dynamicOffset(dynamicEllipse?.position) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index de58e2c9..5d9fc520 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.MutableRect import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path @@ -24,7 +23,6 @@ import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.effects.LayerEffectsState import io.github.alexzhirkevich.compottie.internal.helpers.FillRule import io.github.alexzhirkevich.compottie.internal.helpers.asPathFillType -import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.platform.GradientCache import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.utils.set @@ -156,11 +154,11 @@ internal class FillShape( ) } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicFill = properties[layerPath(basePath, name)] - dynamicShape = properties[layerPath(basePath, name)] + dynamicFill = properties?.get(layerPath(basePath, name)) + dynamicShape = properties?.get(layerPath(basePath, name)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index c5d9e5fb..856d1312 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -181,11 +181,11 @@ internal class GradientFillShape( ) } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicFill = properties[layerPath(basePath, name)] - dynamicShape = properties[layerPath(basePath, name)] + dynamicFill = properties?.get(layerPath(basePath, name)) + dynamicShape = properties?.get(layerPath(basePath, name)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index f9cffd08..ba0b9f27 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -42,11 +42,11 @@ internal class GroupShape( return dynamicShape?.hidden.derive(hidden, state) } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { val path = layerPath(basePath, name) - dynamicShape = properties[path] + dynamicShape = properties?.get(path) items.forEach { it.setDynamicProperties(path, properties) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt index e2ca4f49..2a6248d8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/MergePathsShape.kt @@ -11,7 +11,6 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent -import io.github.alexzhirkevich.compottie.internal.platform.addPath import io.github.alexzhirkevich.compottie.internal.platform.set import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -85,11 +84,11 @@ internal class MergePathsShape( return path } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt index 0ebf538a..00b33f24 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PathShape.kt @@ -13,7 +13,6 @@ import io.github.alexzhirkevich.compottie.internal.platform.set import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -69,11 +68,11 @@ internal class PathShape( trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index 56d093e8..ddf7f00a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -3,13 +3,11 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathMeasure -import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipseProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicPolystarProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath -import io.github.alexzhirkevich.compottie.dynamic.toOffset import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -19,7 +17,6 @@ import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath -import io.github.alexzhirkevich.compottie.internal.layers.Layer import io.github.alexzhirkevich.compottie.internal.utils.Math import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -122,11 +119,11 @@ internal class PolystarShape( trimPaths = CompoundSimultaneousTrimPath(contentsBefore) } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) val dynamicPolystar = dynamicShape as? DynamicPolystarProvider? position?.dynamicOffset(dynamicPolystar?.position) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index ddcf5243..29530d25 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -2,13 +2,11 @@ package io.github.alexzhirkevich.compottie.internal.shapes import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.Path -import io.github.alexzhirkevich.compottie.dynamic.DynamicEllipseProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicRectProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.dynamic.layerPath -import io.github.alexzhirkevich.compottie.dynamic.toSize import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -18,7 +16,6 @@ import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset import io.github.alexzhirkevich.compottie.internal.animation.dynamicSize import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath import io.github.alexzhirkevich.compottie.internal.helpers.CompoundSimultaneousTrimPath -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -148,11 +145,11 @@ internal class RectShape( return path } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) val dynamicRect = dynamicShape as? DynamicRectProvider? position.dynamicOffset(dynamicRect?.position) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 9830a34e..8b88508e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -58,7 +58,7 @@ internal class RepeaterShape( private val matrix = Matrix() @Transient - private var dynamicHidden : DynamicShapeProvider? = null + private var dynamicShape : DynamicShapeProvider? = null override fun draw( drawScope: DrawScope, @@ -137,16 +137,16 @@ internal class RepeaterShape( contentGroup = ContentGroupImpl( name = name, - hidden = { dynamicHidden?.hidden.derive(hidden, it) }, + hidden = { dynamicShape?.hidden.derive(hidden, it) }, contents = contentsList, transform = null, ) } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicHidden = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt index 89953c49..b468ccf3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RoundShape.kt @@ -9,7 +9,6 @@ import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.content.Content -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -42,11 +41,11 @@ internal class RoundShape( } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt index 7126ab2e..72ef5edf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/Shape.kt @@ -15,7 +15,7 @@ internal sealed interface Shape : Content { val hidden: Boolean - fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) {} + fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) {} @Serializable class UnsupportedShape : Shape { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index 6159f576..46b8553d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -10,7 +10,6 @@ import io.github.alexzhirkevich.compottie.internal.content.ModifierContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -63,11 +62,11 @@ internal class TransformShape( return dynamicShape?.hidden.derive(hidden, state) } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt index 1d9e2a47..7e271dd2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TrimPathShape.kt @@ -1,6 +1,5 @@ package io.github.alexzhirkevich.compottie.internal.shapes -import io.github.alexzhirkevich.compottie.dynamic.DynamicShape import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeLayerProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicShapeProvider import io.github.alexzhirkevich.compottie.dynamic.derive @@ -9,7 +8,6 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.helpers.TrimPathType import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber -import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -54,10 +52,10 @@ internal class TrimPathShape( } - override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider) { + override fun setDynamicProperties(basePath: String?, properties: DynamicShapeLayerProvider?) { super.setDynamicProperties(basePath, properties) if (name != null) { - dynamicShape = properties[layerPath(basePath, name)] + dynamicShape = properties?.get(layerPath(basePath, name)) } } From 5f384fffc442773bf14f4233b9d6141af6e67e77 Mon Sep 17 00:00:00 2001 From: Alexander Zhirkevich Date: Wed, 26 Jun 2024 12:37:08 +0300 Subject: [PATCH 087/100] Create rendering_bug.yml --- .github/ISSUE_TEMPLATE/rendering_bug.yml | 59 ++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/rendering_bug.yml diff --git a/.github/ISSUE_TEMPLATE/rendering_bug.yml b/.github/ISSUE_TEMPLATE/rendering_bug.yml new file mode 100644 index 00000000..b85925b4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/rendering_bug.yml @@ -0,0 +1,59 @@ +name: Rendering Bug Report +description: File a rendering bug report. +title: "[Bug]: " +labels: ["rendering bug"] +assignees: + - alexzhirkevich +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Please describe what happened, attach the bug screenshot and the screenshot of what you expect to see (from AE or other Lottie player) + + Tip: You can attach images by clicking this area to highlight it and then dragging files in. + placeholder: Tell us what you see! + value: "A rendering bug happened!" + validations: + required: true + - type: checkboxes + id: unsupported-features + attributes: + label: Unsupported features + description: Please check that your animation is not using [unsupported features](https://lottiefiles.com/supported-features) that are the same as for Lottie-Android. + options: + - label: My animation doesn't use unsupported features + validations: + required: true + - type: input + id: compottie-version + attributes: + label: What Compottie version do you experience the bug on? + description: Note: only Compottie 2.0+ rendering bugs can be fixed because Compottie was using platform renderers before + placeholder: 2.x.x + validations: + required: true + - type: dropdown + id: platforms + attributes: + label: What platforms are you seeing the problem on? + multiple: true + options: + - All + - Android + - iOS + - Desktop + - Web (JS) + - Web (wasm) + validations: + required: true + - type: textarea + id: logs + attributes: + label: Does Compottie logs anythyng to the sdtout / your logger set with `Compottie.logger`? + description: This can be warning or exception. Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell From b993a07fb6d422c64671bbca5eb716120129b14f Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 26 Jun 2024 13:00:06 +0300 Subject: [PATCH 088/100] remate L to Compottie, move IterateForever to it. depend on main module as api from other modules --- README.md | 9 +++--- compottie-dot/build.gradle.kts | 2 +- .../compottie/DotLottieAssetsManager.kt | 2 +- .../compottie/DotLottieCompositionSpec.kt | 4 +-- .../compottie/Conversion.wasmJs.kt | 4 +-- .../compottie/ZipFileSystem.wasmJs.kt | 2 +- compottie-network/build.gradle.kts | 2 +- .../alexzhirkevich/compottie/Network.kt | 2 +- .../compottie/UrlCompositionSpec.kt | 29 +++++++++---------- compottie-resources/build.gradle.kts | 3 +- .../compottie/{L.kt => Compottie.kt} | 5 ++-- .../compottie/LottieAnimatable.kt | 4 +-- .../compottie/LottieComposition.kt | 4 +-- .../compottie/LottieConstants.kt | 7 +++++ .../animateLottieCompositionAsState.kt | 4 +-- .../compottie/internal/helpers/Mask.kt | 4 +-- .../compottie/internal/layers/BaseLayer.kt | 4 +-- .../internal/layers/SolidColorLayer.kt | 4 +-- .../internal/platform/PlatformShader.kt | 6 ++-- example/shared/src/commonMain/kotlin/App.kt | 9 +++--- 20 files changed, 59 insertions(+), 51 deletions(-) rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/{L.kt => Compottie.kt} (98%) diff --git a/README.md b/README.md index 74d255eb..26911e67 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,8 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderin > [!IMPORTANT] > Starting from v2.0 Compottie has its own multiplatform rendering engine without any platform delegates. >
    The new engine is implemented from scratch and therefore may have bugs. ->
    Please [report](https://github.com/alexzhirkevich/compottie/issues) if you find any, preferably with a reproducible animation +>
    Please [report](https://github.com/alexzhirkevich/compottie/issues) if you find any, preferably with a reproducible animation. +>
    List of supported AE Lottie features is the same as for [lottie-android](https://lottiefiles.com/supported-features) | Module | Description | Artifact | | --------------------- | ------------- | -------------------------------------------------------- | @@ -143,7 +144,7 @@ val progress by animateLottieCompositionAsState(composition) ```kotlin val progress by animateLottieCompositionAsState( composition, - iterations = LottieConstants.IterateForever, + iterations = Compottie.IterateForever, ) ``` ```kotlin @@ -167,7 +168,7 @@ val lottieAnimatable = rememberLottieAnimatable() LaunchedEffect(Unit) { lottieAnimatable.animate( composition, - iterations = LottieConstants.IterateForever, + iterations = Compottie.IterateForever, clipSpec = LottieClipSpec.Progress(0.5f, 0.75f), ) } @@ -258,7 +259,7 @@ The network module also brings the `NetworkAssetsManager` that have similar para If you are using Url composition spec then specifying `NetworkAssetsManager` is redundant. Url composition spec automatically prepares url assets -There is no stable Ktor client for wasm so to use network module on this target you need to add +There is no stable Ktor client for wasm so to use network module on this target you need to add the following to the bottom of your build script: ```kotlin diff --git a/compottie-dot/build.gradle.kts b/compottie-dot/build.gradle.kts index fc1ea2fc..e0a8615a 100644 --- a/compottie-dot/build.gradle.kts +++ b/compottie-dot/build.gradle.kts @@ -13,7 +13,7 @@ kotlin { implementation(libs.okio) implementation(libs.okio.fakefilesystem) implementation(libs.coroutines.core) - implementation(project(":compottie")) + api(project(":compottie")) } } } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index 8aff7fa3..3faa4484 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -41,7 +41,7 @@ internal class DotLottieAssetsManager( val r = this.root ?: "/".toPath() zipFileSystem.read(r.resolve(fullPath.toPath(true))) } catch (t: IOException) { - L.logger.error("Failed to decode dotLottie asset $trimName", t) + Compottie.logger.error("Failed to decode dotLottie asset $trimName", t) return null } } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 81e72d23..6cd69520 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -18,7 +18,7 @@ private var _useStableWasmMemoryManagement : Boolean = false * It is disabled by default. Turn this on if you have problems with dotLottie decompression on wasm * */ @ExperimentalCompottieApi -var L.useStableWasmMemoryManagement by ::_useStableWasmMemoryManagement +var Compottie.useStableWasmMemoryManagement by ::_useStableWasmMemoryManagement /** * [LottieComposition] from a dotLottie zip archive. @@ -80,7 +80,7 @@ private class DotLottieCompositionSpec( LottieComposition.parse(anim.decodeToString()).apply { speed = animation.speed if (animation.loop) { - iterations = LottieConstants.IterateForever + iterations = Compottie.IterateForever } prepareAssets(DotLottieAssetsManager(zipSystem, manifestPath.parent)) } diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt index c2baf1e8..c1b083b5 100644 --- a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt @@ -32,7 +32,7 @@ internal fun createSourceUnstable(data : JsReference) : JsAny = js("" @OptIn(ExperimentalCompottieApi::class) internal fun Int8Array.toByteArray(): Array { - if (L.useStableWasmMemoryManagement) { + if (Compottie.useStableWasmMemoryManagement) { return Array(byteLength) { this[it] } @@ -42,7 +42,7 @@ internal fun Int8Array.toByteArray(): Array { @OptIn(ExperimentalCompottieApi::class) internal fun ByteArray.toInt8Array() : Int8Array { - if (L.useStableWasmMemoryManagement) { + if (Compottie.useStableWasmMemoryManagement) { val result = Int8Array(size) for (i in indices) { result[i] = this[i] diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt index 58e5ad64..1cdf6a45 100644 --- a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt @@ -8,7 +8,7 @@ internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : B val ds = DecompressionStream("deflate-raw") - val source = if (L.useStableWasmMemoryManagement) { + val source = if (Compottie.useStableWasmMemoryManagement) { createSourceStable(array.toInt8Array()) } else { createSourceUnstable(array.toJsReference()) diff --git a/compottie-network/build.gradle.kts b/compottie-network/build.gradle.kts index f06a4a12..3294d1fc 100644 --- a/compottie-network/build.gradle.kts +++ b/compottie-network/build.gradle.kts @@ -10,7 +10,7 @@ kotlin { implementation(libs.serialization) api(libs.okio) api(libs.ktor.client.core) - implementation(project(":compottie")) + api(project(":compottie")) implementation(project(":compottie-dot")) } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt index 5191139f..a481c7f6 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt @@ -37,7 +37,7 @@ internal suspend fun networkLoad( return@withContext it to bytes } } catch (e: Throwable) { - L.logger.error("${this::class.simpleName} failed to cache downloaded asset", e) + Compottie.logger.error("${this::class.simpleName} failed to cache downloaded asset", e) } null to bytes } catch (t: Throwable) { diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index 5a2f5e62..bcadef7b 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -7,7 +7,6 @@ import io.ktor.client.statement.bodyAsChannel import io.ktor.client.statement.bodyAsText import io.ktor.http.Url import io.ktor.http.isSuccess -import io.ktor.util.logging.Logger import io.ktor.util.toByteArray import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex @@ -61,48 +60,48 @@ private class NetworkCompositionSpec( try { LottieComposition.getOrCreate(cacheKey) { try { - L.logger.log("Searching for animation in cache...") + Compottie.logger.log("Searching for animation in cache...") cacheStrategy.load(url)?.let { - L.logger.log("Animation was found in cache. Parsing...") + Compottie.logger.log("Animation was found in cache. Parsing...") return@getOrCreate it.decodeLottieComposition(format).also { - L.logger.log("Animation was successfully loaded from cache") + Compottie.logger.log("Animation was successfully loaded from cache") } } ?: run { - L.logger.log("Animation wasn't found in cache") + Compottie.logger.log("Animation wasn't found in cache") } } catch (t : CacheIsUnsupportedException) { - L.logger.log("File system cache is disabled for this strategy on the current platform") + Compottie.logger.log("File system cache is disabled for this strategy on the current platform") } catch (_: Throwable) { - L.logger.log("Failed to load or decode animation from cache") + Compottie.logger.log("Failed to load or decode animation from cache") } - L.logger.log("Fetching animation from web...") + Compottie.logger.log("Fetching animation from web...") val bytes = try { val response = request(client, Url(url)).execute() if (!response.status.isSuccess()) { - L.logger.log("Animation request failed with ${response.status.value} status code") + Compottie.logger.log("Animation request failed with ${response.status.value} status code") throw ClientRequestException(response, response.bodyAsText()) } response.bodyAsChannel().toByteArray() } catch (t : ClientRequestException){ - L.logger.log("Animation request failed with ${t.response.status.value} status code") + Compottie.logger.log("Animation request failed with ${t.response.status.value} status code") throw t } - L.logger.log("Animation was loaded from web. Parsing...") + Compottie.logger.log("Animation was loaded from web. Parsing...") val composition = bytes.decodeLottieComposition(format) - L.logger.log("Animation was successfully loaded from web. Caching...") + Compottie.logger.log("Animation was successfully loaded from web. Caching...") try { cacheStrategy.save(url, bytes) - L.logger.log("Animation was successfully saved to cache") + Compottie.logger.log("Animation was successfully saved to cache") } catch (t : CacheIsUnsupportedException) { - L.logger.log("File system cache is disabled for this strategy on the current platform") + Compottie.logger.log("File system cache is disabled for this strategy on the current platform") } catch (t: Throwable) { - L.logger.error( + Compottie.logger.error( "Failed to cache animation", t ) diff --git a/compottie-resources/build.gradle.kts b/compottie-resources/build.gradle.kts index e38286d4..4d7be32c 100644 --- a/compottie-resources/build.gradle.kts +++ b/compottie-resources/build.gradle.kts @@ -1,12 +1,11 @@ - kotlin { sourceSets { commonMain.dependencies { implementation(compose.ui) implementation(compose.components.resources) implementation(libs.coroutines.core) - implementation(project(":compottie")) + api(project(":compottie")) } } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt similarity index 98% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt index dcf031cd..918a07e2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/L.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt @@ -3,7 +3,9 @@ package io.github.alexzhirkevich.compottie import io.github.alexzhirkevich.compottie.internal.Animation import io.github.alexzhirkevich.compottie.internal.LottieJson -object L { +object Compottie { + + const val IterateForever = Int.MAX_VALUE var logger : LottieLogger = LottieLogger.Default @@ -30,7 +32,6 @@ object L { @ExperimentalCompottieApi var compositionCacheLimit : Int = 20 - /** * Warmup JSON parser. The first animation parsing will be much faster * */ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt index e3afb55e..96d7f1ef 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieAnimatable.kt @@ -103,7 +103,7 @@ interface LottieAnimatable : LottieAnimationState { * @param composition The [LottieComposition] that should be rendered. * @param iteration The iteration to start the animation at. Defaults to 1 and carries over from previous animates. * @param iterations The number of iterations to continue running for. Set to 1 to play one time - * set to [LottieConstants.IterateForever] to iterate forever. Can be set to arbitrary + * set to [Compottie.IterateForever] to iterate forever. Can be set to arbitrary * numbers. Defaults to 1 and carries over from previous animates. * @param speed The speed at which the composition should be animated. Can be negative. Defaults to 1 and * carries over from previous animates. @@ -278,7 +278,7 @@ private class LottieAnimatableImpl : LottieAnimatable { } private suspend fun doFrame(iterations: Int): Boolean { - return if (iterations == LottieConstants.IterateForever) { + return if (iterations == Compottie.IterateForever) { // We use withInfiniteAnimationFrameNanos because it allows tests to add a CoroutineContext // element that will cancel infinite transitions instead of preventing composition from ever going idle. withInfiniteAnimationFrameNanos { frameNanos -> diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index ef472619..df390652 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -38,7 +38,7 @@ internal object UnspecifiedCompositionKey * Load and prepare [LottieComposition] for displaying. * * Instance produces by [spec] will be remembered until [key] is changed. Those instances - * are cached across the whole application. Cache size can be configured with [L.compositionCacheLimit]. + * are cached across the whole application. Cache size can be configured with [Compottie.compositionCacheLimit]. * If key is not provided then [LottieCompositionSpec.key] will be used. * To disable caching null [key] must be passed explicitly. * [currentCompositeKeyHash] in appropriate place can be used as a key (inappropriate places are loops without key for example) @@ -297,6 +297,6 @@ class LottieComposition internal constructor( fun clearCache() = cache.clear() @OptIn(ExperimentalCompottieApi::class) - private val cache = LruMap(limit = L::compositionCacheLimit) + private val cache = LruMap(limit = Compottie::compositionCacheLimit) } } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt index a0f7c18b..0dd1bfbf 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieConstants.kt @@ -1,6 +1,13 @@ package io.github.alexzhirkevich.compottie +@Deprecated( + "Use Compottie accessor instead", + replaceWith = ReplaceWith( + "Compottie", + "io.github.alexzhirkevich.compottie.Compottie" + ) +) object LottieConstants { /** * Use this with [animateLottieCompositionAsState]'s iterations parameter to repeat forever. diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt index 9f932b22..38c1ac7d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/animateLottieCompositionAsState.kt @@ -20,14 +20,14 @@ import androidx.compose.runtime.setValue * @param restartOnPlay If isPlaying switches from false to true, restartOnPlay determines whether * the progress and iteration gets reset. * @param reverseOnRepeat Defines what this animation should do when it reaches the end. This setting - * is applied only when [iterations] is either greater than 0 or [LottieConstants.IterateForever]. + * is applied only when [iterations] is either greater than 0 or [Compottie.IterateForever]. * Defaults to `false`. * @param clipSpec A [LottieClipSpec] that specifies the bound the animation playback * should be clipped to. * @param speed The speed the animation should play at. Numbers larger than one will speed it up. * Numbers between 0 and 1 will slow it down. Numbers less than 0 will play it backwards. * @param iterations The number of times the animation should repeat before stopping. It must be - * a positive number. [LottieConstants.IterateForever] can be used to repeat forever. + * a positive number. [Compottie.IterateForever] can be used to repeat forever. * @param cancellationBehavior The behavior that this animation should have when cancelled. * In most cases, you will want it to cancel immediately. However, if you have a state based * transition and you want an animation to finish playing before moving on to the next one then you diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index e9ea6d1b..be761b70 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -1,6 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.helpers -import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.internal.animation.AnimatedShape import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import kotlinx.serialization.SerialName @@ -51,7 +51,7 @@ internal value class MaskMode(val type : String) { init { if (!isSupported()){ - L.logger.log("Animation contains unsupported mask type: $this. It will be treated as an 'Add' mask") + Compottie.logger.log("Animation contains unsupported mask type: $this. It will be treated as an 'Add' mask") } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 0006f132..4467890d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -13,7 +13,7 @@ import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import androidx.compose.ui.util.fastForEachReversed -import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider import io.github.alexzhirkevich.compottie.dynamic.derive @@ -213,7 +213,7 @@ internal abstract class BaseLayer : Layer { } } } catch (t: Throwable) { - L.logger.error("Lottie crashed in draw :(", t) + Compottie.logger.error("Lottie crashed in draw :(", t) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 78133768..81741cd8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -7,7 +7,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.DrawScope -import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.effects.LayerEffect @@ -120,7 +120,7 @@ internal class SolidColorLayer( color = Color(red = r, green = g, blue = b, alpha = a) } catch (t: Throwable) { // TODO: sometimes colors are exported as #d9.0147ae147aedf.fdf3b645a1c8e6.028f5c28f5c8 - L.logger.log("Solid color layer (${name}) with unrecognized color: $colorHex") + Compottie.logger.log("Solid color layer (${name}) with unrecognized color: $colorHex") color = Color.Transparent } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt index 1947fe7c..f42006bd 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.kt @@ -10,7 +10,7 @@ import androidx.compose.ui.graphics.Shader import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.util.fastMap import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi -import io.github.alexzhirkevich.compottie.L +import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.LruMap import io.github.alexzhirkevich.compottie.dynamic.LottieGradient import io.github.alexzhirkevich.compottie.internal.AnimationState @@ -22,8 +22,8 @@ import kotlin.math.hypot @OptIn(ExperimentalCompottieApi::class) internal class GradientCache { - private val linear = LruMap(limit = L::shaderCacheLimit) - private val radial = LruMap(limit = L::shaderCacheLimit) + private val linear = LruMap(limit = Compottie::shaderCacheLimit) + private val radial = LruMap(limit = Compottie::shaderCacheLimit) fun getOrPut( hash : Int, diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index bb5c9bf9..23800be0 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -35,6 +35,7 @@ import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.CompottieException import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi @@ -166,7 +167,7 @@ fun App() { ) { val progress by animateLottieCompositionAsState( - iterations = LottieConstants.IterateForever, + iterations = Compottie.IterateForever, composition = composition.value ) val painter = rememberLottiePainter( @@ -217,7 +218,7 @@ fun AllExamples(){ Image( painter = rememberLottiePainter( composition = composition, - iterations = LottieConstants.IterateForever, + iterations = Compottie.IterateForever, assetsManager = rememberResourcesAssetsManager( readBytes = Res::readBytes ), @@ -320,7 +321,7 @@ fun LottieFontExample() { composition = rememberLottieComposition { LottieCompositionSpec.ResourceString("mobilo/BlinkingCursor.json") }.value, - iterations = LottieConstants.IterateForever + iterations = Compottie.IterateForever ), contentDescription = it.toString() ) @@ -341,7 +342,7 @@ fun LottieList() { val painter = rememberLottiePainter( composition.value, - iterations = LottieConstants.IterateForever + iterations = Compottie.IterateForever ) Image( From 27b3f9e8d214035aec4a19b96d7ff63e591de3b9 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 26 Jun 2024 14:31:08 +0300 Subject: [PATCH 089/100] fix incorrect unsupported mask log --- .../compottie/internal/helpers/Mask.kt | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index be761b70..d91ed141 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -34,6 +34,10 @@ internal class Mask( if (isClosedLegacy != null) { shape?.setClosed(isClosedLegacy) } + + if (!mode.isSupported()){ + Compottie.logger.log("Animation contains unsupported mask type: $mode. It will be treated as an 'Add' mask") + } } fun deepCopy() = Mask( @@ -49,10 +53,14 @@ internal class Mask( @JvmInline internal value class MaskMode(val type : String) { - init { - if (!isSupported()){ - Compottie.logger.log("Animation contains unsupported mask type: $this. It will be treated as an 'Add' mask") - } + companion object { + val None = MaskMode("n") + val Add = MaskMode("a") + val Subtract = MaskMode("s") + val Intersect = MaskMode("i") + val Lighten = MaskMode("l") + val Darken = MaskMode("d") + val Difference = MaskMode("f") } override fun toString() : String { @@ -64,23 +72,17 @@ internal value class MaskMode(val type : String) { Lighten -> "Lighten" Darken -> "Darken" Difference -> "Difference" - else -> "Unknown" + else -> "Unknown ($type)" } } - - companion object { - val None = MaskMode("n") - val Add = MaskMode("a") - val Subtract = MaskMode("s") - val Intersect = MaskMode("i") - val Lighten = MaskMode("l") - val Darken = MaskMode("d") - val Difference = MaskMode("f") - } } -internal fun MaskMode.isSupported() = - this == MaskMode.None || - this == MaskMode.Add || - this == MaskMode.Subtract - || this == MaskMode.Intersect \ No newline at end of file +internal fun MaskMode.isSupported() : Boolean = + this in supportedMasks + +private val supportedMasks = listOf( + MaskMode.None, + MaskMode.Add, + MaskMode.Subtract, + MaskMode.Intersect +) \ No newline at end of file From 9fad675aa72aed8bda181b216e96dd7eec370864 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 26 Jun 2024 16:39:29 +0300 Subject: [PATCH 090/100] add default values to properties to make it work with dynamic even if not specified initially --- .../compottie/DotLottieAssetsManager.kt | 2 +- .../alexzhirkevich/compottie/Network.kt | 2 +- .../compottie/UrlCompositionSpec.kt | 28 ++++---- .../platform/PlatformShader.android.kt | 10 --- .../alexzhirkevich/compottie/Compottie.kt | 14 +++- .../alexzhirkevich/compottie/LottieLogger.kt | 7 +- .../internal/animation/AnimatedNumber.kt | 19 ++++++ .../internal/animation/AnimatedTransform.kt | 67 ++++++++++--------- .../internal/animation/AnimatedVector2.kt | 12 ++++ .../internal/animation/RepeaterTransform.kt | 44 ++++++------ .../internal/content/ContentGroup.kt | 2 +- .../internal/content/ContentGroupImpl.kt | 24 +++---- .../compottie/internal/helpers/Mask.kt | 2 +- .../compottie/internal/helpers/Transform.kt | 35 ++++++---- .../compottie/internal/layers/BaseLayer.kt | 9 +-- .../compottie/internal/layers/ShapeLayer.kt | 2 +- .../internal/layers/SolidColorLayer.kt | 2 +- .../compottie/internal/shapes/EllipseShape.kt | 4 +- .../compottie/internal/shapes/FillShape.kt | 5 +- .../internal/shapes/GradientFillShape.kt | 5 +- .../internal/shapes/GradientStrokeShape.kt | 3 +- .../compottie/internal/shapes/GroupShape.kt | 3 +- .../internal/shapes/PolystarShape.kt | 63 ++++++++--------- .../compottie/internal/shapes/RectShape.kt | 3 +- .../internal/shapes/RepeaterShape.kt | 18 ++--- .../internal/shapes/SolidStrokeShape.kt | 3 +- .../internal/shapes/TransformShape.kt | 37 +++++----- .../compottie/internal/utils/Matrix.kt | 32 ++++++--- 28 files changed, 264 insertions(+), 193 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index 3faa4484..2f7644f4 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -41,7 +41,7 @@ internal class DotLottieAssetsManager( val r = this.root ?: "/".toPath() zipFileSystem.read(r.resolve(fullPath.toPath(true))) } catch (t: IOException) { - Compottie.logger.error("Failed to decode dotLottie asset $trimName", t) + Compottie.logger?.error("Failed to decode dotLottie asset $trimName", t) return null } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt index a481c7f6..16421888 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Network.kt @@ -37,7 +37,7 @@ internal suspend fun networkLoad( return@withContext it to bytes } } catch (e: Throwable) { - Compottie.logger.error("${this::class.simpleName} failed to cache downloaded asset", e) + Compottie.logger?.error("${this::class.simpleName} failed to cache downloaded asset", e) } null to bytes } catch (t: Throwable) { diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index bcadef7b..d20eb071 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -60,48 +60,48 @@ private class NetworkCompositionSpec( try { LottieComposition.getOrCreate(cacheKey) { try { - Compottie.logger.log("Searching for animation in cache...") + Compottie.logger?.info("Searching for animation in cache...") cacheStrategy.load(url)?.let { - Compottie.logger.log("Animation was found in cache. Parsing...") + Compottie.logger?.info("Animation was found in cache. Parsing...") return@getOrCreate it.decodeLottieComposition(format).also { - Compottie.logger.log("Animation was successfully loaded from cache") + Compottie.logger?.info("Animation was successfully loaded from cache") } } ?: run { - Compottie.logger.log("Animation wasn't found in cache") + Compottie.logger?.info("Animation wasn't found in cache") } } catch (t : CacheIsUnsupportedException) { - Compottie.logger.log("File system cache is disabled for this strategy on the current platform") + Compottie.logger?.info("File system cache is disabled for this strategy on the current platform") } catch (_: Throwable) { - Compottie.logger.log("Failed to load or decode animation from cache") + Compottie.logger?.info("Failed to load or decode animation from cache") } - Compottie.logger.log("Fetching animation from web...") + Compottie.logger?.info("Fetching animation from web...") val bytes = try { val response = request(client, Url(url)).execute() if (!response.status.isSuccess()) { - Compottie.logger.log("Animation request failed with ${response.status.value} status code") + Compottie.logger?.info("Animation request failed with ${response.status.value} status code") throw ClientRequestException(response, response.bodyAsText()) } response.bodyAsChannel().toByteArray() } catch (t : ClientRequestException){ - Compottie.logger.log("Animation request failed with ${t.response.status.value} status code") + Compottie.logger?.info("Animation request failed with ${t.response.status.value} status code") throw t } - Compottie.logger.log("Animation was loaded from web. Parsing...") + Compottie.logger?.info("Animation was loaded from web. Parsing...") val composition = bytes.decodeLottieComposition(format) - Compottie.logger.log("Animation was successfully loaded from web. Caching...") + Compottie.logger?.info("Animation was successfully loaded from web. Caching...") try { cacheStrategy.save(url, bytes) - Compottie.logger.log("Animation was successfully saved to cache") + Compottie.logger?.info("Animation was successfully saved to cache") } catch (t : CacheIsUnsupportedException) { - Compottie.logger.log("File system cache is disabled for this strategy on the current platform") + Compottie.logger?.info("File system cache is disabled for this strategy on the current platform") } catch (t: Throwable) { - Compottie.logger.error( + Compottie.logger?.error( "Failed to cache animation", t ) diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt index 3c6e4cb7..8655c5f5 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/PlatformShader.android.kt @@ -1,24 +1,14 @@ package io.github.alexzhirkevich.compottie.internal.platform -import android.graphics.Bitmap import android.graphics.BlurMaskFilter -import android.graphics.ColorMatrixColorFilter -import android.graphics.RenderEffect -import android.graphics.Shader import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.graphics.LinearGradientShader import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.RadialGradientShader import androidx.compose.ui.graphics.TileMode -import androidx.compose.ui.graphics.asComposeColorFilter import androidx.compose.ui.graphics.setFrom -import androidx.compose.ui.graphics.toArgb -import kotlin.math.PI -import kotlin.math.sqrt private val tempMatrix = android.graphics.Matrix() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt index 918a07e2..cb87ccfe 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt @@ -7,7 +7,13 @@ object Compottie { const val IterateForever = Int.MAX_VALUE - var logger : LottieLogger = LottieLogger.Default + /** + * Logger used to inform about various events, errors, unsupported features, etc. + * + * Default instance uses stdout / stderr. + * You can set it to null for production + * */ + var logger : LottieLogger? = LottieLogger.Default /** * Limit gradient shaders cache size. @@ -29,8 +35,12 @@ object Compottie { @ExperimentalCompottieApi var shaderCacheLimit : Int = 1000 + /** + * Limit the number of in-memory cached lottie compositions. + * */ @ExperimentalCompottieApi - var compositionCacheLimit : Int = 20 + var compositionCacheLimit : Int = 15 + /** * Warmup JSON parser. The first animation parsing will be much faster diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt index c9afd437..cb85cf69 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt @@ -4,12 +4,15 @@ private const val TAG = "COMPOTTIE" interface LottieLogger { - fun log(message: String) + fun info(message: String) fun error(message: String, throwable: Throwable) + /** + * Uses stdout / stderr. + * */ object Default : LottieLogger { - override fun log(message: String) { + override fun info(message: String) { println("[$TAG] $message") } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt index 56c54def..a372b3c9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -89,6 +89,25 @@ internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { } } +internal fun AnimatedNumber.Companion.defaultRotation() : AnimatedNumber = + AnimatedNumber.Default(0f) + +internal fun AnimatedNumber.Companion.defaultSkew() : AnimatedNumber = + AnimatedNumber.Default(0f) + +internal fun AnimatedNumber.Companion.defaultSkewAxis() : AnimatedNumber = + AnimatedNumber.Default(0f) + +internal fun AnimatedNumber.Companion.defaultOpacity() : AnimatedNumber = + AnimatedNumber.Default(100f) + +internal fun AnimatedNumber.Companion.defaultRoundness() : AnimatedNumber = + AnimatedNumber.Default(0f) + +internal fun AnimatedNumber.Companion.defaultRadius() : AnimatedNumber = + AnimatedNumber.Default(0f) + + internal fun AnimatedNumber.interpolatedNorm(state: AnimationState) = interpolated(state) / 100f internal class AnimatedNumberSerializer : JsonContentPolymorphicSerializer(AnimatedNumber::class){ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index cd29fe93..ba15aba8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -15,26 +15,26 @@ import kotlin.math.cos import kotlin.math.sin import kotlin.math.tan -internal abstract class AnimatedTransform{ +internal abstract class AnimatedTransform { - abstract val anchorPoint: AnimatedVector2? - abstract val position: AnimatedVector2? - abstract val scale: AnimatedVector2? - abstract val rotation: AnimatedNumber? - abstract val opacity: AnimatedNumber? - abstract val skew: AnimatedNumber? - abstract val skewAxis: AnimatedNumber? + abstract val anchorPoint: AnimatedVector2 + abstract val position: AnimatedVector2 + abstract val scale: AnimatedVector2 + abstract val rotation: AnimatedNumber + abstract val opacity: AnimatedNumber + abstract val skew: AnimatedNumber + abstract val skewAxis: AnimatedNumber var dynamic : DynamicTransformProvider? = null set(value) { if (field !== value) { field = value - position?.dynamicOffset(value?.offset) - scale?.dynamicScale(value?.scale) - rotation?.dynamic(value?.rotation) - opacity?.dynamic(value?.opacity) - skew?.dynamic(value?.skew) - skewAxis?.dynamic(value?.skewAxis) + position.dynamicOffset(value?.offset) + scale.dynamicScale(value?.scale) + rotation.dynamic(value?.rotation) + opacity.dynamic(value?.opacity) + skew.dynamic(value?.skew) + skewAxis.dynamic(value?.skewAxis) } } @@ -59,8 +59,8 @@ internal abstract class AnimatedTransform{ return matrix } - val interpolatedPosition = position?.interpolated(state) - ?.takeIf { it.x != 0f || it.y != 0f } + val interpolatedPosition = position.interpolated(state) + .takeIf { it != Vec2.Zero } ?.also { matrix.preTranslate(it.x, it.y) } @@ -74,7 +74,7 @@ internal abstract class AnimatedTransform{ // 2) Create a vector from the current position to the next position. // 3) Find the angle of that vector to the X axis (0 degrees). val nextPosition = state.onFrame(state.frame + 0.001f) { - position!!.interpolated(it) + position.interpolated(it) } val rotationValue= Math.toDegree( @@ -84,27 +84,27 @@ internal abstract class AnimatedTransform{ ) ) - matrix.preRotate(rotationValue) } } else { - val rotation = rotation?.interpolated(state) - ?.takeIf { it != 0f } + val rotation = rotation.interpolated(state).takeIf { it != 0f } - rotation?.let(matrix::preRotate) + rotation?.let { + matrix.preRotate(it) + } } - val skew = skew?.interpolated(state) - ?.takeIf { it != 0f } + val skew = skew.interpolated(state).takeIf { it != 0f } skew?.let { sk -> - val skewAngle = skewAxis?.interpolated(state) - val mCos = if (skewAngle == null) + val skewAngle = skewAxis.interpolated(state) + + val mCos = if (skewAngle == 0f) 0f else cos(Math.toRadians(-skewAngle + 90)) - val mSin = if (skewAngle == null) + val mSin = if (skewAngle == 0f) 1f else sin(Math.toRadians(-skewAngle + 90)) @@ -133,18 +133,19 @@ internal abstract class AnimatedTransform{ skewMatrix3.setValues(skewValues) skewMatrix2.preConcat(skewMatrix1) skewMatrix3.preConcat(skewMatrix2) + matrix.preConcat(skewMatrix3) } - val scale = scale?.interpolatedNorm(state) - ?.takeIf { it.x != 1f || it.y != 1f } - scale?.let { - matrix.preScale(it.x, it.y) - } + scale.interpolatedNorm(state) + .takeIf { it.x != 1f || it.y != 1f } + ?.let { + matrix.preScale(it.x, it.y) + } - anchorPoint?.interpolated(state) - ?.takeIf { it.x != 0f || it.y != 0f } + anchorPoint.interpolated(state) + .takeIf { it != Vec2.Zero } ?.let { matrix.preTranslate(-it.x, -it.y) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 934c673d..27f647fb 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -160,6 +160,18 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { } } +internal fun AnimatedVector2.Companion.defaultPosition() : AnimatedVector2 = + AnimatedVector2.Default(FloatList3) + +internal fun AnimatedVector2.Companion.defaultAnchorPoint() : AnimatedVector2 = + AnimatedVector2.Default(FloatList3) + +internal fun AnimatedVector2.Companion.defaultScale() : AnimatedVector2 = + AnimatedVector2.Default(FloatList3_100) + +private val FloatList3 = listOf(0f,0f,0f) +private val FloatList3_100 = listOf(100f, 100f, 100f) + internal fun AnimatedVector2.interpolatedNorm(state: AnimationState) = interpolated(state) / 100f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt index eddaa209..eed6397e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/RepeaterTransform.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.animation +import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.utils.preRotate @@ -12,25 +13,25 @@ import kotlin.math.pow @Serializable internal class RepeaterTransform( @SerialName("a") - override val anchorPoint : AnimatedVector2? = null, + override val anchorPoint : AnimatedVector2 = AnimatedVector2.defaultAnchorPoint(), @SerialName("p") - override val position : AnimatedVector2? = null, + override val position : AnimatedVector2 = AnimatedVector2.defaultPosition(), @SerialName("s") - override val scale : AnimatedVector2? = null, + override val scale : AnimatedVector2 = AnimatedVector2.defaultScale(), @SerialName("r") - override val rotation : AnimatedNumber? = null, + override val rotation : AnimatedNumber = AnimatedNumber.defaultRotation(), @SerialName("o") - override val opacity : AnimatedNumber? = null, + override val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), @SerialName("sk") - override val skew: AnimatedNumber? = null, + override val skew: AnimatedNumber = AnimatedNumber.defaultSkew(), @SerialName("sa") - override val skewAxis: AnimatedNumber? = null, + override val skewAxis: AnimatedNumber = AnimatedNumber.defaultSkewAxis(), @SerialName("so") val startOpacity : AnimatedNumber? = null, @@ -44,31 +45,30 @@ internal class RepeaterTransform( fun repeaterMatrix(state: AnimationState, amount: Float): Matrix { matrix.reset() - position?.interpolated(state)?.let { + position.interpolated(state).takeIf { it != Vec2.Zero }?.let { matrix.preTranslate( it.x * amount, it.y * amount ) } - scale?.interpolatedNorm(state)?.takeIf { - it.x != 1f || it.y != 1f - }?.let { + scale.interpolatedNorm(state).takeIf { it.x != 1f || it.y != 1f } + ?.let { matrix.preScale( it.x.pow(amount), it.y.pow(amount) ) } - rotation?.interpolated(state)?.let { - val anchorPoint = anchorPoint?.interpolated(state) + rotation.interpolated(state).let { + val anchorPoint = anchorPoint.interpolated(state) - if (anchorPoint != null) { + if (anchorPoint != Vec2.Zero) { matrix.translate(anchorPoint.x, anchorPoint.y) } matrix.preRotate(it * amount) - if (anchorPoint != null) { + if (anchorPoint != Vec2.Zero) { matrix.translate(-anchorPoint.x, -anchorPoint.y) } } @@ -77,13 +77,13 @@ internal class RepeaterTransform( } fun deepCopy() = RepeaterTransform( - anchorPoint = anchorPoint?.copy(), - position = position?.copy(), - scale = scale?.copy(), - rotation = rotation?.copy(), - opacity = opacity?.copy(), - skew = skew?.copy(), - skewAxis = skewAxis?.copy(), + anchorPoint = anchorPoint.copy(), + position = position.copy(), + scale = scale.copy(), + rotation = rotation.copy(), + opacity = opacity.copy(), + skew = skew.copy(), + skewAxis = skewAxis.copy(), startOpacity = startOpacity?.copy(), endOpacity = endOpacity?.copy() ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt index 08c23d14..d0da4541 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroup.kt @@ -5,7 +5,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform internal interface ContentGroup : DrawingContent, PathContent { - val transform : AnimatedTransform? + val transform : AnimatedTransform val isEmpty : Boolean diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt index 582fcf72..4fdb46aa 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/content/ContentGroupImpl.kt @@ -11,15 +11,15 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.utils.fastSetFrom import io.github.alexzhirkevich.compottie.internal.utils.preConcat -import io.github.alexzhirkevich.compottie.internal.utils.set import io.github.alexzhirkevich.compottie.internal.utils.union internal class ContentGroupImpl( contents: List, override val name: String?, private val hidden : ((AnimationState) -> Boolean)?, - override val transform: AnimatedTransform?, + override val transform: AnimatedTransform, ) : ContentGroup { private val rect = MutableRect(0f, 0f, 0f, 0f) @@ -67,14 +67,12 @@ internal class ContentGroupImpl( var layerAlpha = parentAlpha - matrix.setFrom(parentMatrix) + matrix.fastSetFrom(parentMatrix) - if (transform != null) { - matrix.preConcat(transform.matrix(state)) - transform.opacity?.interpolatedNorm(state)?.let { + matrix.preConcat(transform.matrix(state)) + transform.opacity.interpolatedNorm(state).let { - layerAlpha = (layerAlpha * it).coerceIn(0f, 1f) - } + layerAlpha = (layerAlpha * it).coerceIn(0f, 1f) } val isRenderingWithOffScreen = state.applyOpacityToLayers && @@ -107,9 +105,7 @@ internal class ContentGroupImpl( } matrix.reset() - if (transform != null) { - matrix.setFrom(transform.matrix(state)) - } + matrix.fastSetFrom(transform.matrix(state)) pathContents.fastForEachReversed { path.addPath(it.getPath(state), matrix) } @@ -136,10 +132,8 @@ internal class ContentGroupImpl( state: AnimationState, outBounds: MutableRect, ) { - matrix.setFrom(parentMatrix) - if (transform != null) { - matrix.preConcat(transform.matrix(state)) - } + matrix.fastSetFrom(parentMatrix) + matrix.preConcat(transform.matrix(state)) rect.set(0f, 0f, 0f, 0f) drawingContents.fastForEachReversed { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index d91ed141..a46f3dc2 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -36,7 +36,7 @@ internal class Mask( } if (!mode.isSupported()){ - Compottie.logger.log("Animation contains unsupported mask type: $mode. It will be treated as an 'Add' mask") + Compottie.logger?.info("Animation contains unsupported mask type: $mode. It will be treated as an 'Add' mask") } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index af06fc2b..4d8448f6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -3,6 +3,13 @@ package io.github.alexzhirkevich.compottie.internal.helpers import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.defaultAnchorPoint +import io.github.alexzhirkevich.compottie.internal.animation.defaultOpacity +import io.github.alexzhirkevich.compottie.internal.animation.defaultPosition +import io.github.alexzhirkevich.compottie.internal.animation.defaultRotation +import io.github.alexzhirkevich.compottie.internal.animation.defaultScale +import io.github.alexzhirkevich.compottie.internal.animation.defaultSkew +import io.github.alexzhirkevich.compottie.internal.animation.defaultSkewAxis import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -10,36 +17,36 @@ import kotlinx.serialization.Serializable internal class Transform( @SerialName("a") - override val anchorPoint : AnimatedVector2? = null, + override val anchorPoint : AnimatedVector2 = AnimatedVector2.defaultAnchorPoint(), @SerialName("p") - override val position : AnimatedVector2? = null, + override val position : AnimatedVector2 = AnimatedVector2.defaultPosition(), @SerialName("s") - override val scale : AnimatedVector2? = null, + override val scale : AnimatedVector2 = AnimatedVector2.defaultScale(), @SerialName("r") - override val rotation : AnimatedNumber? = null, + override val rotation : AnimatedNumber = AnimatedNumber.defaultRotation(), @SerialName("o") - override val opacity : AnimatedNumber? = null, + override val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), @SerialName("sk") - override val skew: AnimatedNumber? = null, + override val skew: AnimatedNumber = AnimatedNumber.defaultSkew(), @SerialName("sa") - override val skewAxis: AnimatedNumber? = null, + override val skewAxis: AnimatedNumber = AnimatedNumber.defaultSkewAxis(), ) : AnimatedTransform() { fun deepCopy(): Transform { return Transform( - anchorPoint = anchorPoint?.copy(), - position = position?.copy(), - scale = scale?.copy(), - rotation = rotation?.copy(), - opacity = opacity?.copy(), - skew = skew?.copy(), - skewAxis = skewAxis?.copy() + anchorPoint = anchorPoint.copy(), + position = position.copy(), + scale = scale.copy(), + rotation = rotation.copy(), + opacity = opacity.copy(), + skew = skew.copy(), + skewAxis = skewAxis.copy() ) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt index 4467890d..e4579422 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseLayer.kt @@ -30,6 +30,7 @@ import io.github.alexzhirkevich.compottie.internal.platform.drawRect import io.github.alexzhirkevich.compottie.internal.platform.isAndroidAtMost import io.github.alexzhirkevich.compottie.internal.platform.saveLayer import io.github.alexzhirkevich.compottie.internal.platform.set +import io.github.alexzhirkevich.compottie.internal.utils.fastSetFrom import io.github.alexzhirkevich.compottie.internal.utils.intersectOrReset import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.union @@ -135,14 +136,14 @@ internal abstract class BaseLayer : Layer { buildParentLayerListIfNeeded() - matrix.setFrom(parentMatrix) + matrix.fastSetFrom(parentMatrix) parentLayers?.fastForEachReversed { matrix.preConcat(it.transform.matrix(state)) } var alpha = 1f - transform.opacity?.interpolatedNorm(state)?.let { + transform.opacity.interpolatedNorm(state).let { alpha = (alpha * it).coerceIn(0f, 1f) } @@ -213,7 +214,7 @@ internal abstract class BaseLayer : Layer { } } } catch (t: Throwable) { - Compottie.logger.error("Lottie crashed in draw :(", t) + Compottie.logger?.error("Lottie crashed in draw :(", t) } } @@ -226,7 +227,7 @@ internal abstract class BaseLayer : Layer { ) { rect.set(0f, 0f, 0f, 0f) buildParentLayerListIfNeeded() - boundsMatrix.setFrom(parentMatrix) + boundsMatrix.fastSetFrom(parentMatrix) if (applyParents) { val p = parentLayers diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 16bd5411..01913e7a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -99,7 +99,7 @@ internal class ShapeLayer( name = CONTAINER_NAME, hidden = null, // will be managed by BaseLayer contents = shapes, - transform = shapes.firstInstanceOf() + transform = shapes.firstInstanceOf() ?: Transform() ).apply { setContents(emptyList(), emptyList()) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index 81741cd8..c3662637 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -120,7 +120,7 @@ internal class SolidColorLayer( color = Color(red = r, green = g, blue = b, alpha = a) } catch (t: Throwable) { // TODO: sometimes colors are exported as #d9.0147ae147aedf.fdf3b645a1c8e6.028f5c28f5c8 - Compottie.logger.log("Solid color layer (${name}) with unrecognized color: $colorHex") + Compottie.logger?.info("Solid color layer (${name}) with unrecognized color: $colorHex") color = Color.Transparent } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt index 9f15b3b0..a84d8da9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/EllipseShape.kt @@ -12,6 +12,8 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.defaultPosition +import io.github.alexzhirkevich.compottie.internal.animation.defaultScale import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset import io.github.alexzhirkevich.compottie.internal.animation.dynamicSize import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath @@ -37,7 +39,7 @@ internal class EllipseShape( val direction : Int = 1, @SerialName("p") - val position : AnimatedVector2, + val position : AnimatedVector2 = AnimatedVector2.defaultPosition(), @SerialName("s") val size : AnimatedVector2, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt index 5d9fc520..18a60a19 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/FillShape.kt @@ -17,6 +17,7 @@ import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.animation.defaultOpacity import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -47,7 +48,7 @@ internal class FillShape( val direction : Int = 1, @SerialName("o") - val opacity : AnimatedNumber?, + val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), @SerialName("c") val color : AnimatedColor, @@ -94,7 +95,7 @@ internal class FillShape( name = name, hidden = hidden, direction = direction, - opacity = opacity?.copy(), + opacity = opacity.copy(), color = color.copy(), fillRule = fillRule ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 856d1312..195502aa 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -19,6 +19,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.animation.defaultOpacity import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.PathContent @@ -50,7 +51,7 @@ internal class GradientFillShape( override val hidden : Boolean = false, @SerialName("o") - val opacity : AnimatedNumber? = null, + val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), @SerialName("s") val startPoint : AnimatedVector2, @@ -200,7 +201,7 @@ internal class GradientFillShape( matchName = matchName, name = name, hidden = hidden, - opacity = opacity?.copy(), + opacity = opacity.copy(), startPoint = startPoint.copy(), endPoint = endPoint.copy(), type = type, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt index 3b934194..58d5cf0c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientStrokeShape.kt @@ -8,6 +8,7 @@ import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.GradientColors import io.github.alexzhirkevich.compottie.internal.animation.GradientType +import io.github.alexzhirkevich.compottie.internal.animation.defaultOpacity import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName @@ -37,7 +38,7 @@ internal class GradientStrokeShape( override val strokeMiter : Float = 0f, @SerialName("o") - override val opacity : AnimatedNumber = AnimatedNumber.Default(100f), + override val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), @SerialName("w") override val strokeWidth : AnimatedNumber, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt index ba0b9f27..8a2f74ab 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GroupShape.kt @@ -7,6 +7,7 @@ import io.github.alexzhirkevich.compottie.dynamic.layerPath import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.content.ContentGroupImpl import io.github.alexzhirkevich.compottie.internal.content.ContentGroup +import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.utils.firstInstanceOf import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -32,7 +33,7 @@ internal class GroupShape( name = name, hidden = null, // overrided contents = items, - transform = items.firstInstanceOf() + transform = items.firstInstanceOf() ?: Transform() ) { @Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt index ddf7f00a..b97bec55 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/PolystarShape.kt @@ -13,6 +13,11 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.Vec2 +import io.github.alexzhirkevich.compottie.internal.animation.defaultPosition +import io.github.alexzhirkevich.compottie.internal.animation.defaultRadius +import io.github.alexzhirkevich.compottie.internal.animation.defaultRotation +import io.github.alexzhirkevich.compottie.internal.animation.defaultRoundness import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath @@ -52,25 +57,25 @@ internal class PolystarShape( override val hidden : Boolean = false, @SerialName("p") - val position : AnimatedVector2?, + val position : AnimatedVector2 = AnimatedVector2.defaultPosition(), @SerialName("d") val direction : Int = 1, @SerialName("is") - val innerRoundness : AnimatedNumber? = null, + val innerRoundness : AnimatedNumber = AnimatedNumber.defaultRoundness(), @SerialName("ir") - val innerRadius : AnimatedNumber? = null, + val innerRadius : AnimatedNumber = AnimatedNumber.defaultRadius(), @SerialName("or") - val outerRadius : AnimatedNumber? = null, + val outerRadius : AnimatedNumber = AnimatedNumber.defaultRadius(), @SerialName("os") - val outerRoundness : AnimatedNumber? = null, + val outerRoundness : AnimatedNumber = AnimatedNumber.defaultRoundness(), @SerialName("r") - val rotation : AnimatedNumber? = null, + val rotation : AnimatedNumber = AnimatedNumber.defaultRotation(), @SerialName("pt") val points : AnimatedNumber, @@ -79,8 +84,6 @@ internal class PolystarShape( val starType : StarType, ) : Shape, PathContent { - - @Transient private val path = Path() @@ -126,13 +129,13 @@ internal class PolystarShape( dynamicShape = properties?.get(layerPath(basePath, name)) val dynamicPolystar = dynamicShape as? DynamicPolystarProvider? - position?.dynamicOffset(dynamicPolystar?.position) + position.dynamicOffset(dynamicPolystar?.position) points.dynamic(dynamicPolystar?.points) - rotation?.dynamic(dynamicPolystar?.rotation) - innerRadius?.dynamic(dynamicPolystar?.innerRadius) - innerRoundness?.dynamic(dynamicPolystar?.innerRoundness) - outerRadius?.dynamic(dynamicPolystar?.outerRadius) - outerRoundness?.dynamic(dynamicPolystar?.outerRoundness) + rotation.dynamic(dynamicPolystar?.rotation) + innerRadius.dynamic(dynamicPolystar?.innerRadius) + innerRoundness.dynamic(dynamicPolystar?.innerRoundness) + outerRadius.dynamic(dynamicPolystar?.outerRadius) + outerRoundness.dynamic(dynamicPolystar?.outerRoundness) } } @@ -141,13 +144,13 @@ internal class PolystarShape( matchName = matchName, name = name, hidden = hidden, - position = position?.copy(), + position = position.copy(), direction = direction, - innerRoundness = innerRoundness?.copy(), - innerRadius = innerRadius?.copy(), - outerRadius = outerRadius?.copy(), - outerRoundness = outerRoundness?.copy(), - rotation = rotation?.copy(), + innerRoundness = innerRoundness.copy(), + innerRadius = innerRadius.copy(), + outerRadius = outerRadius.copy(), + outerRoundness = outerRoundness.copy(), + rotation = rotation.copy(), points = points.copy(), starType = starType ) @@ -156,7 +159,7 @@ internal class PolystarShape( private fun createStarPath(state: AnimationState) { val points = points.interpolated(state = state) - var currentAngle = Math.toRadians((rotation?.interpolated(state) ?: 0f) - 90f) + var currentAngle = Math.toRadians(rotation.interpolated(state) - 90f) // adjust current angle for partial points var anglePerPoint: Float = (TwoPI / points).toFloat() @@ -169,11 +172,11 @@ internal class PolystarShape( currentAngle += (halfAnglePerPoint * (1f - partialPointAmount)) } - val outerRadius = outerRadius?.interpolated(state) ?: 0f - val innerRadius = innerRadius?.interpolated(state) ?: 0f + val outerRadius = outerRadius.interpolated(state) + val innerRadius = innerRadius.interpolated(state) - val innerRoundedness = innerRoundness?.interpolatedNorm(state) ?: 0f - val outerRoundedness = outerRoundness?.interpolatedNorm(state) ?: 0f + val innerRoundedness = innerRoundness.interpolatedNorm(state) + val outerRoundedness = outerRoundness.interpolatedNorm(state) var x: Float var y: Float @@ -260,7 +263,7 @@ internal class PolystarShape( longSegment = !longSegment } - position?.interpolated(state)?.let { + position.interpolated(state).takeIf { it != Vec2.Zero }?.let { path.translate(it) } @@ -269,13 +272,13 @@ internal class PolystarShape( private fun createPolygonPath(state: AnimationState) { val points = floor(points.interpolated(state)).toInt() - var currentAngle = Math.toRadians((rotation?.interpolated(state) ?: 0f) - 90f) + var currentAngle = Math.toRadians((rotation.interpolated(state)) - 90f) // adjust current angle for partial points val anglePerPoint = (TwoPI / points).toFloat() - val roundedness = outerRoundness?.interpolatedNorm(state) ?: 0f - val radius = outerRadius?.interpolated(state) ?: 0f + val roundedness = outerRoundness.interpolatedNorm(state) + val radius = outerRadius.interpolated(state) var x: Float var y: Float var previousX: Float @@ -348,7 +351,7 @@ internal class PolystarShape( currentAngle += anglePerPoint } - position?.interpolated(state)?.takeIf { it != Offset.Zero }?.let { + position.interpolated(state).takeIf { it != Offset.Zero }?.let { path.translate(it) } path.close() diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt index 29530d25..b9403ce4 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RectShape.kt @@ -12,6 +12,7 @@ import io.github.alexzhirkevich.compottie.internal.content.Content import io.github.alexzhirkevich.compottie.internal.content.PathContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 +import io.github.alexzhirkevich.compottie.internal.animation.defaultPosition import io.github.alexzhirkevich.compottie.internal.animation.dynamicOffset import io.github.alexzhirkevich.compottie.internal.animation.dynamicSize import io.github.alexzhirkevich.compottie.internal.helpers.CompoundTrimPath @@ -38,7 +39,7 @@ internal class RectShape( val direction : Int = 1, @SerialName("p") - val position : AnimatedVector2, + val position : AnimatedVector2 = AnimatedVector2.defaultPosition(), @SerialName("s") val size : AnimatedVector2, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt index 8b88508e..2cbc7016 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/RepeaterShape.kt @@ -19,7 +19,9 @@ import io.github.alexzhirkevich.compottie.internal.content.ContentGroupImpl import io.github.alexzhirkevich.compottie.internal.content.DrawingContent import io.github.alexzhirkevich.compottie.internal.content.GreedyContent import io.github.alexzhirkevich.compottie.internal.content.PathContent +import io.github.alexzhirkevich.compottie.internal.helpers.Transform import io.github.alexzhirkevich.compottie.internal.platform.addPath +import io.github.alexzhirkevich.compottie.internal.utils.fastSetFrom import io.github.alexzhirkevich.compottie.internal.utils.preConcat import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -33,10 +35,10 @@ internal class RepeaterShape( val copies : AnimatedNumber, @SerialName("o") - val offset : AnimatedNumber? = null, + val offset : AnimatedNumber = AnimatedNumber.Default(0f), @SerialName("tr") - val transform: RepeaterTransform, + val transform: RepeaterTransform = RepeaterTransform(), @SerialName("nm") override val name: String? = null, @@ -68,12 +70,12 @@ internal class RepeaterShape( ) { contentGroup?.let { contentGroup -> val copies = copies.interpolated(state) - val offset = offset?.interpolated(state) ?: 0f + val offset = offset.interpolated(state) val startOpacity = transform.startOpacity?.interpolatedNorm(state) ?: 1f val endOpacity = transform.endOpacity?.interpolatedNorm(state) ?: 1f for (i in copies.toInt() - 1 downTo 0) { - matrix.setFrom(parentMatrix) + matrix.fastSetFrom(parentMatrix) matrix.preConcat(transform.repeaterMatrix(state, i + offset)) val newAlpha = parentAlpha * lerp(startOpacity, endOpacity, i / copies).coerceIn(0f, 1f) contentGroup.draw(drawScope, matrix, newAlpha, state) @@ -96,10 +98,10 @@ internal class RepeaterShape( val contentPath = contentGroup?.getPath(state) ?: return path val copies = copies.interpolated(state) - val offset = offset?.interpolated(state) ?: 0f + val offset = offset.interpolated(state) for (i in copies.toInt() - 1 downTo 0) { - matrix.setFrom(transform.repeaterMatrix(state, i + offset)) + matrix.fastSetFrom(transform.repeaterMatrix(state, i + offset)) path.addPath(contentPath, matrix) } return path @@ -139,7 +141,7 @@ internal class RepeaterShape( name = name, hidden = { dynamicShape?.hidden.derive(hidden, it) }, contents = contentsList, - transform = null, + transform = Transform(), ) } @@ -153,7 +155,7 @@ internal class RepeaterShape( override fun deepCopy(): Shape { return RepeaterShape( copies = copies.copy(), - offset = offset?.copy(), + offset = offset.copy(), transform = transform.deepCopy(), name = name, matchName = matchName, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt index 5726a7bc..ed91346d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/SolidStrokeShape.kt @@ -6,6 +6,7 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.AnimatedColor import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.animation.defaultOpacity import io.github.alexzhirkevich.compottie.internal.helpers.StrokeDash import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.serialization.SerialName @@ -39,7 +40,7 @@ internal class SolidStrokeShape( override val strokeMiter : Float = 0f, @SerialName("o") - override val opacity : AnimatedNumber, + override val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), @SerialName("w") override val strokeWidth : AnimatedNumber, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt index 46b8553d..645dedce 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/TransformShape.kt @@ -10,6 +10,13 @@ import io.github.alexzhirkevich.compottie.internal.content.ModifierContent import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber +import io.github.alexzhirkevich.compottie.internal.animation.defaultAnchorPoint +import io.github.alexzhirkevich.compottie.internal.animation.defaultOpacity +import io.github.alexzhirkevich.compottie.internal.animation.defaultPosition +import io.github.alexzhirkevich.compottie.internal.animation.defaultRotation +import io.github.alexzhirkevich.compottie.internal.animation.defaultScale +import io.github.alexzhirkevich.compottie.internal.animation.defaultSkew +import io.github.alexzhirkevich.compottie.internal.animation.defaultSkewAxis import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient @@ -28,29 +35,27 @@ internal class TransformShape( override val hidden : Boolean = false, @SerialName("a") - override val anchorPoint : AnimatedVector2? = null, + override val anchorPoint : AnimatedVector2 = AnimatedVector2.defaultAnchorPoint(), @SerialName("p") - override val position : AnimatedVector2? = null, + override val position : AnimatedVector2 = AnimatedVector2.defaultPosition(), @SerialName("s") - override val scale : AnimatedVector2? = null, + override val scale : AnimatedVector2 = AnimatedVector2.defaultScale(), @SerialName("r") - override val rotation : AnimatedNumber ? = null, + override val rotation : AnimatedNumber = AnimatedNumber.defaultRotation(), @SerialName("o") - override val opacity : AnimatedNumber? = null, + override val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), @SerialName("sk") - override val skew: AnimatedNumber? = null, + override val skew: AnimatedNumber = AnimatedNumber.defaultSkew(), @SerialName("sa") - override val skewAxis: AnimatedNumber? = null, + override val skewAxis: AnimatedNumber = AnimatedNumber.defaultSkewAxis(), ) : AnimatedTransform(), Shape, ModifierContent { - - @Transient private var dynamicShape : DynamicShapeProvider? = null @@ -75,13 +80,13 @@ internal class TransformShape( matchName = matchName, name = name, hidden = hidden, - anchorPoint = anchorPoint?.copy(), - position = position?.copy(), - scale = scale?.copy(), - rotation = rotation?.copy(), - opacity = opacity?.copy(), - skew = skew?.copy(), - skewAxis = skewAxis?.copy() + anchorPoint = anchorPoint.copy(), + position = position.copy(), + scale = scale.copy(), + rotation = rotation.copy(), + opacity = opacity.copy(), + skew = skew.copy(), + skewAxis = skewAxis.copy() ) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index 3314fabd..68d7423f 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -2,6 +2,7 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.isIdentity import kotlin.math.hypot import kotlin.math.roundToInt import kotlin.math.sqrt @@ -16,7 +17,7 @@ private val InvSqrt2Offset = Offset( 1/sqrt(2f), 1/sqrt(2f), ) -val Matrix.scale: Float get() { +internal val Matrix.scale: Float get() { val p1 = map(Offset.Zero) val p2 = map(InvSqrt2Offset) @@ -25,7 +26,7 @@ val Matrix.scale: Float get() { return (hypot(p2.x - p1.x, p2.y - p1.y) * 1000).roundToInt() / 1000f } -fun Matrix.preTranslate(x : Float, y : Float) { +internal fun Matrix.preTranslate(x : Float, y : Float) { // preConcat(tempMatrixTransform.apply { // reset() @@ -34,14 +35,29 @@ fun Matrix.preTranslate(x : Float, y : Float) { return translate(x, y) } -fun Matrix.preConcat(other : Matrix) { - tempMatrixConcat.setFrom(other) +internal fun Matrix.preConcat(other : Matrix) { + + if (other.isIdentity()) { + return + } + + if (isIdentity()){ + fastSetFrom(other) + return + } + + tempMatrixConcat.fastSetFrom(other) tempMatrixConcat.timesAssign(this) - this.setFrom(tempMatrixConcat) + fastSetFrom(tempMatrixConcat) + // timesAssign(other) } -fun Matrix.setValues(values : FloatArray){ +internal fun Matrix.fastSetFrom(other : Matrix){ + other.values.copyInto(values) +} + +internal fun Matrix.setValues(values : FloatArray){ this.values[Matrix.ScaleX] = values[0] this.values[Matrix.SkewX] = values[1] this.values[Matrix.TranslateX] = values[2] @@ -53,7 +69,7 @@ fun Matrix.setValues(values : FloatArray){ this.values[Matrix.Perspective2] = values[8] } -fun Matrix.preRotate(degree : Float) { +internal fun Matrix.preRotate(degree : Float) { // preConcat(tempMatrixTransform.apply { // reset() // rotateZ(degree) @@ -65,7 +81,7 @@ fun Matrix.preRotate(degree : Float) { -fun Matrix.preScale(x : Float, y : Float) { +internal fun Matrix.preScale(x : Float, y : Float) { // preConcat(tempMatrixTransform.apply { // reset() // scale(x, y) From a29f2649fff8db12b41598583750135f746a4a3e Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 26 Jun 2024 16:45:03 +0300 Subject: [PATCH 091/100] cleanup converters utils --- .../alexzhirkevich/compottie/internal/helpers/Bezier.kt | 2 +- .../compottie/internal/helpers/text/TextDocument.kt | 4 ++-- .../alexzhirkevich/compottie/internal/layers/TextLayer.kt | 2 +- .../alexzhirkevich/compottie/internal/util/VectorUtil.kt | 5 ----- .../alexzhirkevich/compottie/internal/utils/MiscUtil.kt | 4 ++++ 5 files changed, 8 insertions(+), 9 deletions(-) delete mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt index bd13e6b6..073356da 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt @@ -5,7 +5,7 @@ import androidx.compose.ui.geometry.lerp import androidx.compose.ui.graphics.Path import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed -import io.github.alexzhirkevich.compottie.internal.util.toOffset +import io.github.alexzhirkevich.compottie.internal.utils.toOffset import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt index 9a01a3ee..53b8cc46 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt @@ -28,10 +28,10 @@ internal class TextDocument( var lineHeight : Float = fontSize, @SerialName("sz") - var wrapSize : FloatArray? = null, + var wrapSize : List? = null, @SerialName("ps") - var wrapPosition : FloatArray? = null, + var wrapPosition : List? = null, @SerialName("t") var text : String? = null, diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 33ceea01..79ba95ef 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -42,9 +42,9 @@ import io.github.alexzhirkevich.compottie.internal.platform.addCodePoint import io.github.alexzhirkevich.compottie.internal.platform.charCount import io.github.alexzhirkevich.compottie.internal.platform.codePointAt import io.github.alexzhirkevich.compottie.internal.platform.isModifier -import io.github.alexzhirkevich.compottie.internal.util.toOffset import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate +import io.github.alexzhirkevich.compottie.internal.utils.toOffset import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt deleted file mode 100644 index da34f3b0..00000000 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/util/VectorUtil.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.alexzhirkevich.compottie.internal.util - -import androidx.compose.ui.geometry.Offset - -internal fun FloatArray.toOffset() = Offset(this[0], this[1]) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt index 6280efb5..c1416865 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt @@ -1,8 +1,12 @@ package io.github.alexzhirkevich.compottie.internal.utils +import androidx.compose.ui.geometry.Offset import kotlin.math.max import kotlin.math.min +internal fun FloatArray.toOffset() = Offset(this[0], this[1]) +internal fun List.toOffset() = Offset(this[0], this[1]) + fun floorMod(x: Float, y: Float): Int { return floorMod(x.toInt(), y.toInt()) } From de6d8b917e8aa329586aa8a58be4f901d5ffca09 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 26 Jun 2024 16:48:23 +0300 Subject: [PATCH 092/100] minimize float array usage --- .../internal/animation/AnimatedColor.kt | 7 ------- .../internal/animation/VectorKeyframe.kt | 5 ----- .../compottie/internal/helpers/Bezier.kt | 16 ++++++++-------- .../internal/helpers/text/TextDocument.kt | 4 ++-- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt index b86cba6e..dc209723 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedColor.kt @@ -75,13 +75,6 @@ internal fun List.toColor() = Color( alpha = getOrNull(3)?.toColorComponent() ?: 1f ) -internal fun FloatArray.toColor() = Color( - red = get(0).toColorComponent(), - green = get(1).toColorComponent(), - blue = get(2).toColorComponent(), - alpha = getOrNull(3)?.toColorComponent() ?: 1f -) - // Modern Lotties (v 4.1.9+) have color components in the [0, 1] range. // Older ones have components in the [0, 255] range. private fun Float.toColorComponent() : Float = when (this) { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt index f5708a62..6adabe44 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/VectorKeyframe.kt @@ -51,8 +51,3 @@ internal class VectorKeyframe( ) } } - -private fun FloatArray.ofNulls() = all { it == 0f } - - - diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt index 073356da..ee4cbbca 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Bezier.kt @@ -50,12 +50,12 @@ internal class Bezier( val cp2 = inTangents[i] val vertex = vertices[i] - val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) - val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) + val shapeCp1 = Offset(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = Offset(vertex[0] + cp2[0], vertex[1] + cp2[1]) curves.add( CubicCurveData( - shapeCp1.toOffset(), - shapeCp2.toOffset(), + shapeCp1, + shapeCp2, vertex.toOffset() ) ) @@ -151,13 +151,13 @@ internal class Bezier( val cp1 = outTangents[vertices.lastIndex] val cp2 = inTangents[0] - val shapeCp1 = floatArrayOf(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) - val shapeCp2 = floatArrayOf(vertex[0] + cp2[0], vertex[1] + cp2[1]) + val shapeCp1 = Offset(prevVertex[0] + cp1[0], prevVertex[1] + cp1[1]) + val shapeCp2 = Offset(vertex[0] + cp2[0], vertex[1] + cp2[1]) curves.add( CubicCurveData( - shapeCp1.toOffset(), - shapeCp2.toOffset(), + shapeCp1, + shapeCp2, vertex.toOffset() ) ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt index 53b8cc46..448cc6b0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt @@ -10,10 +10,10 @@ internal class TextDocument( var fontFamily : String? = null, @SerialName("fc") - var fillColor : FloatArray? = null, + var fillColor : List? = null, @SerialName("sc") - var strokeColor : FloatArray? = null, + var strokeColor : List? = null, @SerialName("sw") var strokeWidth : Float = 0f, From 21141732e4ee03716dae4238facb62664951bb23 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Wed, 26 Jun 2024 17:40:33 +0300 Subject: [PATCH 093/100] improve dynamic images --- .../compottie/dynamic/DynamicImageLayer.kt | 59 +++++++++++++++++-- .../compottie/dynamic/DynamicTransform.kt | 4 ++ .../compottie/internal/AnimationState.kt | 8 +++ .../internal/animation/AnimatedNumber.kt | 10 ++-- .../internal/animation/AnimatedTransform.kt | 2 +- .../compottie/internal/layers/ImageLayer.kt | 8 +++ .../compottie/internal/layers/ShapeLayer.kt | 7 +-- 7 files changed, 84 insertions(+), 14 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt index 1f190624..452d02da 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt @@ -6,17 +6,68 @@ import io.github.alexzhirkevich.compottie.internal.AnimationState interface DynamicImageLayer: DynamicLayer { /** - * Configure dynamic image. + * Dynamically provide image for this layer. * - * Image must be exact same size as required in spec (if spec is not null) + * Image must be exact same size as required in spec (if spec is not null). + * + * Note: [image] block will be called for each frame so bitmap MUST BE CACHED + * and must be initialized OUTSIDE of this block. + * + * You can also use [AnimationState.images] to access all bitmaps loaded for this animation + * + * Example: + * + * ```kotlin + * imageLayer("Image 1"){ + * val image1 = //... you can init bitmaps here. + * val image2 = //... it will be invoked 1 time but in the UI thread + * + * image { spec -> + * // do NOT init or manipulate bitmaps here!!! only ready instances + * if (progress > .5f) image1 else image2 + * + * // this is AnimationState receiver context + * // so you can use [AnimationState.images] here + * if (progress > .5f) images["image_2"]!! else images[spec.id]!! + * } + * } + * ``` */ fun image(image: AnimationState.(spec : ImageSpec?) -> ImageBitmap) } -data class ImageSpec( +class ImageSpec internal constructor( val id : String, val path : String, val name : String, val width : Int, val height : Int -) \ No newline at end of file +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as ImageSpec + + if (id != other.id) return false + if (path != other.path) return false + if (name != other.name) return false + if (width != other.width) return false + if (height != other.height) return false + + return true + } + + override fun hashCode(): Int { + var result = id.hashCode() + result = 31 * result + path.hashCode() + result = 31 * result + name.hashCode() + result = 31 * result + width + result = 31 * result + height + return result + } + + override fun toString(): String { + return "ImageSpec(id='$id', path='$path', name='$name', width=$width, height=$height)" + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt index ef09bc12..dd019093 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTransform.kt @@ -8,6 +8,8 @@ interface DynamicTransform { /** * Apply dynamic scale transform for layer. * + * Scale x and y must be in range (0..1) + * * Note: source is the relative layer scale derived from the layer transform (not absolute value). * Scale derived from this provide will be multiplied by parent layer scale * */ @@ -47,6 +49,8 @@ interface DynamicTransform { /** * Apply dynamic opacity transform * + * Opacity must be in range (0..1) + * * Note: source is the relative layer opacity derived from the layer transform (not absolute value). * Opacity derived from this provider will be multiplied by parent layer opacity * */ diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt index 7e4fde05..ffc9cd3c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/AnimationState.kt @@ -3,8 +3,10 @@ package io.github.alexzhirkevich.compottie.internal import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue +import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.text.font.FontFamily import io.github.alexzhirkevich.compottie.LottieComposition +import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlin.contracts.ExperimentalContracts @@ -23,6 +25,12 @@ class AnimationState @PublishedApi internal constructor( enableMergePaths: Boolean, layer: Layer ) { + /** + * All successfully loaded images for this animation by the asset id + * */ + val images : Map = assets + .filterValues { it is ImageAsset && it.bitmap != null } + .mapValues { (it.value as ImageAsset).bitmap!! } var frame = frame private set diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt index a372b3c9..3fb70d1b 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedNumber.kt @@ -10,14 +10,10 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonNull import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.JsonTransformingSerializer -import kotlinx.serialization.json.floatOrNull -import kotlinx.serialization.json.intOrNull import kotlinx.serialization.json.jsonObject -import kotlinx.serialization.json.jsonPrimitive @Serializable(with = AnimatedNumberSerializer::class) internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { @@ -89,6 +85,12 @@ internal sealed class AnimatedNumber : KeyframeAnimation, Indexable { } } +internal fun AnimatedNumber.dynamicNorm(provider: PropertyProvider?) { + if (provider != null) + dynamic { provider(it) * 100f } + else dynamic(null) +} + internal fun AnimatedNumber.Companion.defaultRotation() : AnimatedNumber = AnimatedNumber.Default(0f) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index ba15aba8..5401cb71 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -32,7 +32,7 @@ internal abstract class AnimatedTransform { position.dynamicOffset(value?.offset) scale.dynamicScale(value?.scale) rotation.dynamic(value?.rotation) - opacity.dynamic(value?.opacity) + opacity.dynamicNorm(value?.opacity) skew.dynamic(value?.skew) skewAxis.dynamic(value?.skewAxis) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt index 2783b94e..1f2e6c1c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ImageLayer.kt @@ -6,6 +6,8 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.DrawScope import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import io.github.alexzhirkevich.compottie.Compottie +import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.dynamic.DynamicImageLayerProvider import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset @@ -105,6 +107,12 @@ internal class ImageLayer( val asset = state.assets[refId] as? ImageAsset ?: return null val image = dynamic?.image?.invoke(state, asset.spec) ?: return asset + + + require(image.width == asset.spec.width && image.height == asset.spec.height) { + "Dynamic image must be exactly same size as requested in spec!" + } + asset.setBitmap(image) return asset diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt index 01913e7a..2ba3016d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/ShapeLayer.kt @@ -109,11 +109,8 @@ internal class ShapeLayer( state: AnimationState ): DynamicLayerProvider? { val layer = super.setDynamicProperties(composition,state) - if (layer !is DynamicShapeLayerProvider) { - shapes.fastForEach { - it.setDynamicProperties(null, null) - } - return layer + shapes.fastForEach { + it.setDynamicProperties(null, layer as? DynamicShapeLayerProvider) } return layer } From c2532639d6c9e4d04cfb52c4c738bdc66da83e05 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Thu, 27 Jun 2024 12:51:39 +0300 Subject: [PATCH 094/100] non-composable factories --- .../compottie/NetworkAssetsManager.kt | 4 +- .../compottie/NetworkFontManager.kt | 2 - .../compottie/ResourcesFontManager.android.kt | 7 +- .../compottie/ResourcesAssetsManager.kt | 56 +++++++++---- .../compottie/ResourcesFontManager.kt | 33 +++++++- .../compottie/ResourcesFontManager.skiko.kt | 2 +- compottie/build.gradle.kts | 4 + compottie/src/androidMain/AndroidManifest.xml | 16 ++++ .../compottie/CompottieInitializer.kt | 17 ++++ .../compottie/LottiePainter.android.kt | 14 ++++ .../alexzhirkevich/compottie/Compottie.kt | 5 +- .../compottie/LottieComposition.kt | 13 ++- .../alexzhirkevich/compottie/LottiePainter.kt | 79 ++++++++++++++----- ...operties.kt => LottieDynamicProperties.kt} | 33 ++++++-- .../dynamic/_DynamicCompositionProvider.kt | 3 +- .../compottie/LottiePainter.android.kt | 8 ++ gradle/libs.versions.toml | 2 + 17 files changed, 245 insertions(+), 53 deletions(-) create mode 100644 compottie/src/androidMain/AndroidManifest.xml create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/CompottieInitializer.kt create mode 100644 compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt rename compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/{DynamicProperties.kt => LottieDynamicProperties.kt} (61%) create mode 100644 compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt index e10c1d44..3b474fbc 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkAssetsManager.kt @@ -29,6 +29,8 @@ fun NetworkAssetsManager( request = request, ) + + @Stable private class NetworkAssetsManagerImpl( private val client: HttpClient, @@ -64,6 +66,4 @@ private class NetworkAssetsManagerImpl( result = 31 * result + request.hashCode() return result } - - } \ No newline at end of file diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt index 750e3a0b..4902877d 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/NetworkFontManager.kt @@ -77,8 +77,6 @@ private class NetworkFontManagerImpl( result = 31 * result + request.hashCode() return result } - - } internal expect suspend fun makeFont(spec: LottieFontSpec, path: Path, bytes: ByteArray) : Font \ No newline at end of file diff --git a/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt b/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt index 3b85c514..9cd5418c 100644 --- a/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt +++ b/compottie-resources/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.android.kt @@ -12,11 +12,16 @@ import org.jetbrains.compose.resources.getResourceItemByEnvironment @OptIn(ExperimentalResourceApi::class, InternalResourceApi::class) internal actual suspend fun loadFont( - context : LottieContext, + context : LottieContext?, environment: ResourceEnvironment, font: LottieFontSpec, resource: FontResource ) : Font { val path = resource.getResourceItemByEnvironment(environment).path + + checkNotNull(context){ + "Compottie failed to initializer" + } + return Font(path, context.assets, font.weight, font.style) } \ No newline at end of file diff --git a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt index 2ff17e6f..3aae668b 100644 --- a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt +++ b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesAssetsManager.kt @@ -8,20 +8,22 @@ import androidx.compose.runtime.rememberUpdatedState import io.github.alexzhirkevich.compottie.assets.ImageRepresentable import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieImage -import io.github.alexzhirkevich.compottie_resources.generated.resources.Res -import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.MissingResourceException /** * Compose resources Lottie asset manager. * - * Assess are stored in the _**composeResources/[directory]**_ directory. + * Assess must be stored in the _**composeResources/[directory]**_. + * + * [`Res.readBytes`](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-images-resources.html#raw-files) + * should be used as a [readBytes] source * * Handles the following possible cases: * - path="/images/", name="image.png" * - path="images/", name="image.png" * - path="", name="/images/image.png" * - path="", name="images/image.png" + * * */ @Composable @ExperimentalCompottieApi @@ -40,21 +42,29 @@ fun rememberResourcesAssetsManager( } /** - * Compose resources asset manager. + * Factory method to create Compose resources [LottieAssetsManager] from non-composable + * context. * - * Assess are stored in the _**composeResources/[relativeTo]**_ directory. + * [`Res::readBytes`](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-images-resources.html#raw-files) + * should be used as a [readBytes] source + * + * Use [rememberResourcesAssetsManager] to create it from the composition * - * Handles the following possible cases: - * - path="/images/", name="image.png" - * - path="images/", name="image.png" - * - path="", name="/images/image.png" - * - path="", name="images/image.png" * */ -@OptIn(ExperimentalResourceApi::class) -private class ResourcesAssetsManager( - private val relativeTo : String = "files", - private val readBytes : suspend (path : String) -> ByteArray = Res::readBytes, +@ExperimentalCompottieApi +@Stable +fun ResourcesAssetsManager( + directory : String = "files", + readBytes : suspend (path : String) -> ByteArray, +) : LottieAssetsManager = ResourcesAssetsManagerImpl(directory, readBytes) + + +@Stable +private class ResourcesAssetsManagerImpl( + private val directory : String = "files", + private val readBytes : suspend (path : String) -> ByteArray, ) : LottieAssetsManager by LottieAssetsManager.Empty { + override suspend fun image(image: LottieImage): ImageRepresentable? { return try { val trimPath = image.path @@ -68,7 +78,7 @@ private class ResourcesAssetsManager( .takeIf(String::isNotEmpty) val fullPath = listOfNotNull( - relativeTo.takeIf(String::isNotEmpty), + directory.takeIf(String::isNotEmpty), trimPath, trimName ).joinToString("/") @@ -79,5 +89,21 @@ private class ResourcesAssetsManager( } } + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as ResourcesAssetsManagerImpl + if (directory != other.directory) return false + if (readBytes != other.readBytes) return false + + return true + } + + override fun hashCode(): Int { + var result = directory.hashCode() + result = 31 * result + readBytes.hashCode() + return result + } } \ No newline at end of file diff --git a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt index 258225c7..35be4593 100644 --- a/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt +++ b/compottie-resources/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.kt @@ -10,8 +10,14 @@ import io.github.alexzhirkevich.compottie.assets.LottieFontManager import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.ResourceEnvironment +import org.jetbrains.compose.resources.getSystemResourceEnvironment import org.jetbrains.compose.resources.rememberResourceEnvironment +/** + * Create and remember Compose resources [LottieFontManager] + * + * Warning: this manager uses internal Compose API on Android and should be considered unstable + * */ @OptIn(ExperimentalResourceApi::class) @Composable @ExperimentalCompottieApi @@ -25,7 +31,7 @@ fun rememberResourcesFontManager( val context = currentLottieContext() return remember(environment, context) { - ResourcesFontManager( + ResourcesFontManagerImpl( context = context, environment = environment, resource = { factory(it) } @@ -33,10 +39,29 @@ fun rememberResourcesFontManager( } } +@OptIn(InternalCompottieApi::class, ExperimentalResourceApi::class) +@ExperimentalCompottieApi +/** + * Factory method to create Compose resources [LottieFontManager] from non-composable context. + * + * Use [rememberResourcesFontManager] to create it from composition. + * + * LottiePainter created with this font manager won't work with Android Studio preview. + * + * Warning: this manager uses internal Compose API on Android and should be considered unstable + * */ +fun ResourcesFontManager( + environment: ResourceEnvironment = getSystemResourceEnvironment(), + resource : (LottieFontSpec) -> FontResource? +) : LottieFontManager = ResourcesFontManagerImpl( + context = Compottie.context, + environment = environment, + resource = resource +) @OptIn(ExperimentalResourceApi::class) -private class ResourcesFontManager( - private val context: LottieContext, +private class ResourcesFontManagerImpl( + private val context: LottieContext?, private val environment: ResourceEnvironment, private val resource : (LottieFontSpec) -> FontResource? ) : LottieFontManager { @@ -50,7 +75,7 @@ private class ResourcesFontManager( @OptIn(ExperimentalResourceApi::class) internal expect suspend fun loadFont( - context : LottieContext, + context : LottieContext?, environment: ResourceEnvironment, font: LottieFontSpec, resource: FontResource diff --git a/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt b/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt index eab6a372..32b6702b 100644 --- a/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt +++ b/compottie-resources/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/ResourcesFontManager.skiko.kt @@ -9,7 +9,7 @@ import org.jetbrains.compose.resources.getFontResourceBytes @OptIn(ExperimentalResourceApi::class) internal actual suspend fun loadFont( - context : LottieContext, + context : LottieContext?, environment: ResourceEnvironment, font: LottieFontSpec, resource: FontResource diff --git a/compottie/build.gradle.kts b/compottie/build.gradle.kts index 5a616d5e..5a287eeb 100644 --- a/compottie/build.gradle.kts +++ b/compottie/build.gradle.kts @@ -11,5 +11,9 @@ kotlin { implementation(compose.foundation) implementation(libs.serialization) } + + androidMain.dependencies { + implementation(libs.androidx.startup) + } } } diff --git a/compottie/src/androidMain/AndroidManifest.xml b/compottie/src/androidMain/AndroidManifest.xml new file mode 100644 index 00000000..9ce7dd30 --- /dev/null +++ b/compottie/src/androidMain/AndroidManifest.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/CompottieInitializer.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/CompottieInitializer.kt new file mode 100644 index 00000000..710f842d --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/CompottieInitializer.kt @@ -0,0 +1,17 @@ +package io.github.alexzhirkevich.compottie + +import android.content.Context +import androidx.startup.Initializer + +class CompottieInitializer : Initializer { + + @OptIn(InternalCompottieApi::class) + override fun create(context: Context): Compottie { + Compottie.context = context + return Compottie + } + + override fun dependencies(): MutableList>> { + return mutableListOf() + } +} \ No newline at end of file diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt new file mode 100644 index 00000000..ed353ce2 --- /dev/null +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt @@ -0,0 +1,14 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.createFontFamilyResolver + + +@OptIn(InternalCompottieApi::class) +internal actual fun makeFontFamilyResolver() : FontFamily.Resolver { + return createFontFamilyResolver( + requireNotNull(Compottie.context){ + "Compottie failed to initialize" + } + ) +} diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt index cb87ccfe..812bc0d8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/Compottie.kt @@ -41,7 +41,6 @@ object Compottie { @ExperimentalCompottieApi var compositionCacheLimit : Int = 15 - /** * Warmup JSON parser. The first animation parsing will be much faster * */ @@ -49,6 +48,10 @@ object Compottie { fun warmup() { LottieJson.decodeFromString(warmupAnim) } + + @InternalCompottieApi + var context : LottieContext? = null + internal set } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index df390652..e5446bb3 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -180,7 +180,7 @@ class LottieComposition internal constructor( private val assetsMutex = Mutex() private val fontsMutex = Mutex() - private var loadedFonts : Map = emptyMap() + private var storedFonts : MutableMap = mutableMapOf() internal fun findGlyphs(family : String?) : Map? { return charGlyphs[family] ?: run { @@ -192,6 +192,7 @@ class LottieComposition internal constructor( } } + @InternalCompottieApi suspend fun prepareAssets(assetsManager: LottieAssetsManager) { assetsMutex.withLock { @@ -202,7 +203,7 @@ class LottieComposition internal constructor( @InternalCompottieApi suspend fun prepareFonts(fontsManager : LottieFontManager) { fontsMutex.withLock { - loadedFonts = loadFonts(fontsManager) + storedFonts.putAll(loadFontsInternal(fontsManager)) } } @@ -242,7 +243,13 @@ class LottieComposition internal constructor( internal suspend fun loadFonts(fontManager: LottieFontManager) : Map { return coroutineScope { - loadedFonts + animation.fonts?.list + storedFonts + loadFontsInternal(fontManager) + } + } + + private suspend fun loadFontsInternal(fontManager: LottieFontManager) : Map { + return coroutineScope { + storedFonts + animation.fonts?.list ?.map { async { val f = it.font ?: fontManager.font(it.spec) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt index 62b2ce40..7d5f3316 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.kt @@ -6,8 +6,8 @@ import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState +import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue -import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Matrix @@ -18,11 +18,12 @@ import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFontFamilyResolver import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.createFontFamilyResolver import androidx.compose.ui.unit.IntSize import androidx.compose.ui.util.lerp import io.github.alexzhirkevich.compottie.assets.LottieAssetsManager import io.github.alexzhirkevich.compottie.assets.LottieFontManager -import io.github.alexzhirkevich.compottie.dynamic.DynamicProperties +import io.github.alexzhirkevich.compottie.dynamic.LottieDynamicProperties import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties import io.github.alexzhirkevich.compottie.internal.AnimationState @@ -30,6 +31,7 @@ import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset import io.github.alexzhirkevich.compottie.internal.layers.CompositionLayer import io.github.alexzhirkevich.compottie.internal.layers.Layer import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope import kotlin.math.roundToInt /** @@ -59,7 +61,7 @@ fun rememberLottiePainter( progress : () -> Float, assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, fontManager: LottieFontManager = LottieFontManager.Empty, - dynamicProperties : DynamicProperties? = null, + dynamicProperties : LottieDynamicProperties? = null, applyOpacityToLayers : Boolean = false, clipToCompositionBounds : Boolean = true, clipTextToBoundingBoxes: Boolean = false, @@ -68,6 +70,8 @@ fun rememberLottiePainter( val fontFamilyResolver = LocalFontFamilyResolver.current + val updatedProgress by rememberUpdatedState(progress) + val painter by produceState( EmptyPainter, composition, @@ -82,7 +86,7 @@ fun rememberLottiePainter( value = LottiePainter( composition = composition.deepCopy(), - initialProgress = progress(), + progress = { updatedProgress() }, dynamicProperties = when (dynamicProperties) { is DynamicCompositionProvider -> dynamicProperties null -> null @@ -127,16 +131,6 @@ fun rememberLottiePainter( ) } - LaunchedEffect(painter) { - (painter as? LottiePainter)?.let { lp -> - snapshotFlow { - progress() - }.collect { - lp.progress = it - } - } - } - return painter } @@ -150,7 +144,7 @@ fun rememberLottiePainter( composition : LottieComposition?, assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, fontManager: LottieFontManager = LottieFontManager.Empty, - dynamicProperties : DynamicProperties? = null, + dynamicProperties : LottieDynamicProperties? = null, isPlaying: Boolean = true, restartOnPlay: Boolean = true, reverseOnRepeat: Boolean = false, @@ -190,6 +184,54 @@ fun rememberLottiePainter( ) } + +/** + * Factory method to create Lottie painter from non-composable context. + * This painter will not work with Android Studio preview. + * Use [rememberLottiePainter] to create it from the composition. + * + * [progress] lambda has to be derivable so that [derivedStateOf] can derive progress from it. + * + * Use [LottieCompositionSpec.load] to get [LottieComposition] instance from [LottieCompositionSpec]. + * */ +@OptIn(InternalCompottieApi::class) +suspend fun LottiePainter( + composition : LottieComposition, + progress : () -> Float, + assetsManager: LottieAssetsManager = LottieAssetsManager.Empty, + fontManager: LottieFontManager = LottieFontManager.Empty, + dynamicProperties : LottieDynamicProperties? = null, + applyOpacityToLayers : Boolean = false, + clipToCompositionBounds : Boolean = true, + clipTextToBoundingBoxes: Boolean = false, + enableMergePaths: Boolean = false, +) : Painter = coroutineScope { + val assets = async(ioDispatcher()) { + composition.loadAssets(assetsManager, true) + } + val fonts = async(ioDispatcher()) { + composition.loadFonts(fontManager) + } + + LottiePainter( + composition = composition.deepCopy(), + progress = progress, + dynamicProperties = when (dynamicProperties) { + is DynamicCompositionProvider -> dynamicProperties + null -> null + }, + clipTextToBoundingBoxes = clipTextToBoundingBoxes, + fontFamilyResolver = makeFontFamilyResolver(), + clipToCompositionBounds = clipToCompositionBounds, + enableMergePaths = enableMergePaths, + applyOpacityToLayers = applyOpacityToLayers, + assets = assets.await(), + fonts = fonts.await() + ) +} + +internal expect fun makeFontFamilyResolver() : FontFamily.Resolver + private object EmptyPainter : Painter() { @@ -201,9 +243,9 @@ private object EmptyPainter : Painter() { private class LottiePainter( private val composition: LottieComposition, + progress : () -> Float, assets : List, fonts : Map, - initialProgress : Float, dynamicProperties: DynamicCompositionProvider?, fontFamilyResolver : FontFamily.Resolver, applyOpacityToLayers : Boolean, @@ -212,7 +254,6 @@ private class LottiePainter( enableMergePaths : Boolean, ) : Painter() { - var progress: Float by mutableStateOf(initialProgress) override val intrinsicSize: Size = Size( composition.animation.width, @@ -224,6 +265,8 @@ private class LottiePainter( intrinsicSize.height.roundToInt() ) + private val progress: Float by derivedStateOf(progress::invoke) + private val matrix = Matrix() private var alpha by mutableStateOf(1f) @@ -231,7 +274,7 @@ private class LottiePainter( private val compositionLayer: Layer = CompositionLayer(composition) private val frame: Float by derivedStateOf { - lerp(composition.startFrame, composition.endFrame, progress) + lerp(composition.startFrame, composition.endFrame, this.progress) } private val animationState = AnimationState( diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicProperties.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/LottieDynamicProperties.kt similarity index 61% rename from compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicProperties.kt rename to compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/LottieDynamicProperties.kt index 7dfdb313..e2013da8 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicProperties.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/LottieDynamicProperties.kt @@ -4,21 +4,44 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi +/** + * Create and remember [createLottieDynamicProperties]. + * + * Dynamic properties are used to style your animation. For example, change color according to app theme + * or change size/position of specific layer as a reaction for a click. + * */ @Composable @ExperimentalCompottieApi fun rememberLottieDynamicProperties( vararg keys : Any?, - composition: DynamicProperties.() -> Unit -) : DynamicProperties { + builder: LottieDynamicProperties.() -> Unit +) : LottieDynamicProperties { return remember(keys) { - DynamicCompositionProvider().apply(composition) + createLottieDynamicProperties(builder) } } /** - * Lottie dynamic properties builder + * Create and remember [LottieDynamicProperties]. + * + * Dynamic properties are used to style your animation. For example, change color according to app theme + * or change size/position of specific layer as a reaction for a click. + * + * Use [rememberLottieDynamicProperties] to create it from the composition + * */ +inline fun createLottieDynamicProperties( + builder: LottieDynamicProperties.() -> Unit +) : LottieDynamicProperties { + return DynamicCompositionProvider().apply(builder) +} + +/** + * Lottie dynamic properties builder. + * + * Usually created with [rememberLottieDynamicProperties] (from Compose) or + * [createLottieDynamicProperties] (outside of Compose) * */ -sealed interface DynamicProperties { +sealed interface LottieDynamicProperties { /** * Layer dynamic properties builder. diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt index c82790e0..7398dc84 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt @@ -2,7 +2,8 @@ package io.github.alexzhirkevich.compottie.dynamic import io.github.alexzhirkevich.compottie.internal.layers.ResolvingPath -internal class DynamicCompositionProvider : DynamicProperties { +@PublishedApi +internal class DynamicCompositionProvider : LottieDynamicProperties { private val layers = mutableMapOf() diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt new file mode 100644 index 00000000..52267bbb --- /dev/null +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/LottiePainter.android.kt @@ -0,0 +1,8 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.createFontFamilyResolver + +internal actual fun makeFontFamilyResolver() : FontFamily.Resolver { + return createFontFamilyResolver() +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9f5af197..88ca715d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,7 @@ [versions] androidx-activity-compose="1.9.0" androidx-core-ktx="1.13.1" +androidx-startup="1.1.1" kotlin="2.0.0" dokka="1.9.0" compose="1.6.11" @@ -15,6 +16,7 @@ nexus-publish="2.0.0" [libraries] androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core-ktx" } +androidx-startup = { module = "androidx.startup:startup-runtime", version.ref = "androidx-startup" } okio = { module = "com.squareup.okio:okio", version.ref = "okio" } okio-fakefilesystem = { module = "com.squareup.okio:okio-fakefilesystem", version.ref = "okio" } serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } From 61a3744da00d5265ba30d62720be98bfa0444675 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Thu, 27 Jun 2024 17:17:44 +0300 Subject: [PATCH 095/100] dynamic text layer --- README.md | 46 +++++--- .../compottie/UrlCompositionSpec.kt | 2 +- .../compottie/dynamic/DynamicImageLayer.kt | 35 ------ .../compottie/dynamic/DynamicTextLayer.kt | 42 ++++++++ .../compottie/dynamic/ImageSpec.kt | 37 +++++++ .../dynamic/LottieDynamicProperties.kt | 26 +++-- .../dynamic/_DynamicCompositionProvider.kt | 41 ++++--- .../dynamic/_DynamicTextLayerProvider.kt | 100 ++++++++++++++++++ .../animation/AnimatedTextDocument.kt | 80 +++++++++++++- .../internal/helpers/text/TextDocument.kt | 2 +- .../internal/helpers/text/TextJustify.kt | 11 +- .../compottie/internal/layers/TextLayer.kt | 15 ++- .../compottie/internal/utils/MiscUtil.kt | 2 + .../main/kotlin/root.publication.gradle.kts | 1 - example/androidapp/build.gradle.kts | 3 + .../src/main/kotlin/MainActivity.kt | 9 ++ .../composeResources/files/text.json | 78 +------------- example/shared/src/commonMain/kotlin/App.kt | 26 +++-- 18 files changed, 385 insertions(+), 171 deletions(-) create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTextLayer.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/ImageSpec.kt create mode 100644 compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTextLayerProvider.kt diff --git a/README.md b/README.md index 26911e67..9ffe10e5 100644 --- a/README.md +++ b/README.md @@ -19,12 +19,35 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderin >
    Please [report](https://github.com/alexzhirkevich/compottie/issues) if you find any, preferably with a reproducible animation. >
    List of supported AE Lottie features is the same as for [lottie-android](https://lottiefiles.com/supported-features) -| Module | Description | Artifact | -| --------------------- | ------------- | -------------------------------------------------------- | -| `compottie` | Main module with rendering engine and `JsonString` animation spec. Currently has two branches - 1.x (with platform renderers - Skottie and lottie-android) and 2.x (with own renderer). 1.x is maintained until the new renderer becomes stable | `io.github.alexzhirkevich:compottie-dot:` | -| `compottie-dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. Depends on [Okio](https://square.github.io/okio/). For Compottie 2.x only | `io.github.alexzhirkevich:compottie-dot:` | -| `compottie-network` | Contains `Url` animation spec and asset/font managers (with [Ktor](https://ktor.io/) and local cache with [Okio](https://square.github.io/okio/)). Allows loading animations and assets from web. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-network:` | -| `compottie-resources` | Contains asset and font managers powered by official Compose resources. For Compottie 2.x only | `io.github.alexzhirkevich:compottie-resources:` | +| Module | Description | +| :----: | ------------- | +| `compottie` | Main module with rendering engine and `JsonString` animation spec. Currently has two branches - 1.x (with platform renderers - Skottie and lottie-android) and 2.x (with own renderer). 1.x is maintained until the new renderer becomes stable | +| `compottie⁠-⁠dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. Depends on [Okio](https://square.github.io/okio/). For Compottie 2.x only | +| `compottie⁠-⁠network` | Contains `Url` animation spec and asset/font managers (with [Ktor](https://ktor.io/) and local cache with [Okio](https://square.github.io/okio/)). Allows loading animations and assets from web. For Compottie 2.x only | +| `compottie⁠-⁠resources` | Contains asset and font managers powered by official Compose resources. For Compottie 2.x only | + +Add as a Gradle dependency +```kotlin +dependencies { + implementation("io.github.alexzhirkevich:compottie:") + implementation("io.github.alexzhirkevich:compottie-dot:") + implementation("io.github.alexzhirkevich:compottie-network:") + implementation("io.github.alexzhirkevich:compottie-resources:") +} +``` + +or with version catalog + +```toml +[versions] +compottie="" + +[libraries] +compottie = { module = "io.github.alexzhirkevich:compottie", version.ref = "compottie" } +compottie-dot = { module = "io.github.alexzhirkevich:compottie-dot", version.ref = "compottie" } +compottie-network = { module = "io.github.alexzhirkevich:compottie-network", version.ref = "compottie" } +compottie-resources = { module = "io.github.alexzhirkevich:compottie-resources", version.ref = "compottie" } +``` # Usage The following docs describe the Compottie 2.x usage. @@ -53,7 +76,7 @@ fun Loader() { ) } val progress by animateLottieCompositionAsState(composition) - + Image( painter = rememberLottiePainter( composition = composition, @@ -277,10 +300,11 @@ configurations ``` ## Dynamic Properties -Lottie allows you to update Lottie animation properties at runtime. Some reasons you may want to do this are: +Lottie allows you to update animation properties at runtime. Some reasons you may want to do this are: 1. Change colors for day/night or other app theme. -2. Change the progress of a specific layer to show download progress. -3. Change the size and position of something in response to a gesture. +2. Localize animation text +3. Change the progress of a specific layer to show download progress. +4. Change the size and position of something in response to a gesture. Dynamic properties are created with `rememberLottieDynamicProperties` @@ -310,5 +334,3 @@ val painter = rememberLottiePainter( ``` Note, that final property building blocks (such as rotations, color, alpha) are called on EACH ANIMATION FRAME and should be cached if they don't rely on progress and have allocations or hard computations. - - diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index d20eb071..abda86c9 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -43,7 +43,7 @@ private class NetworkCompositionSpec( private val url : String, private val format: LottieAnimationFormat, private val client : HttpClient, - private val cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + private val cacheStrategy: LottieCacheStrategy, private val request : NetworkRequest, ) : LottieCompositionSpec { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt index 452d02da..8659ab71 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicImageLayer.kt @@ -36,38 +36,3 @@ interface DynamicImageLayer: DynamicLayer { fun image(image: AnimationState.(spec : ImageSpec?) -> ImageBitmap) } -class ImageSpec internal constructor( - val id : String, - val path : String, - val name : String, - val width : Int, - val height : Int -) { - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || this::class != other::class) return false - - other as ImageSpec - - if (id != other.id) return false - if (path != other.path) return false - if (name != other.name) return false - if (width != other.width) return false - if (height != other.height) return false - - return true - } - - override fun hashCode(): Int { - var result = id.hashCode() - result = 31 * result + path.hashCode() - result = 31 * result + name.hashCode() - result = 31 * result + width - result = 31 * result + height - return result - } - - override fun toString(): String { - return "ImageSpec(id='$id', path='$path', name='$name', width=$width, height=$height)" - } -} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTextLayer.kt new file mode 100644 index 00000000..f2d8bba6 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/DynamicTextLayer.kt @@ -0,0 +1,42 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextJustify + +interface DynamicTextLayer: DynamicLayer { + + /** + * Dynamically provide text content for this layer. + */ + fun text(provider: PropertyProvider) + + fun fontSize(provider: PropertyProvider) + + fun lineHeight(provider: PropertyProvider) + + fun lineSpacing(provider: PropertyProvider) + + fun fillColor(provider: PropertyProvider) + + fun strokeColor(provider: PropertyProvider) + + fun strokeWidth(provider: PropertyProvider) + + /** + * If stroke should be drawn before fill + * */ + fun strokeOverFill(provider: PropertyProvider) + + fun textJustify(provider: PropertyProvider) + + fun baselineShift(provider: PropertyProvider) + + fun tracking(provider: PropertyProvider) + + fun size(provider: PropertyProvider) + + fun position(provider: PropertyProvider) +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/ImageSpec.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/ImageSpec.kt new file mode 100644 index 00000000..4f576897 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/ImageSpec.kt @@ -0,0 +1,37 @@ +package io.github.alexzhirkevich.compottie.dynamic + +class ImageSpec internal constructor( + val id : String, + val path : String, + val name : String, + val width : Int, + val height : Int +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as ImageSpec + + if (id != other.id) return false + if (path != other.path) return false + if (name != other.name) return false + if (width != other.width) return false + if (height != other.height) return false + + return true + } + + override fun hashCode(): Int { + var result = id.hashCode() + result = 31 * result + path.hashCode() + result = 31 * result + name.hashCode() + result = 31 * result + width + result = 31 * result + height + return result + } + + override fun toString(): String { + return "ImageSpec(id='$id', path='$path', name='$name', width=$width, height=$height)" + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/LottieDynamicProperties.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/LottieDynamicProperties.kt index e2013da8..957af4df 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/LottieDynamicProperties.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/LottieDynamicProperties.kt @@ -3,6 +3,9 @@ package io.github.alexzhirkevich.compottie.dynamic import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract /** * Create and remember [createLottieDynamicProperties]. @@ -12,15 +15,14 @@ import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi * */ @Composable @ExperimentalCompottieApi -fun rememberLottieDynamicProperties( +inline fun rememberLottieDynamicProperties( vararg keys : Any?, - builder: LottieDynamicProperties.() -> Unit -) : LottieDynamicProperties { - return remember(keys) { - createLottieDynamicProperties(builder) - } + crossinline builder: LottieDynamicProperties.() -> Unit +) : LottieDynamicProperties = remember(keys) { + createLottieDynamicProperties(builder) } + /** * Create and remember [LottieDynamicProperties]. * @@ -29,9 +31,13 @@ fun rememberLottieDynamicProperties( * * Use [rememberLottieDynamicProperties] to create it from the composition * */ +@OptIn(ExperimentalContracts::class) inline fun createLottieDynamicProperties( builder: LottieDynamicProperties.() -> Unit ) : LottieDynamicProperties { + contract { + callsInPlace(builder, InvocationKind.EXACTLY_ONCE) + } return DynamicCompositionProvider().apply(builder) } @@ -94,6 +100,14 @@ sealed interface LottieDynamicProperties { * All layers in the chain must have a name. * */ fun imageLayer(vararg path: String, builder: DynamicImageLayer.() -> Unit) + + /** + * Text layer dynamic properties builder. + * + * Path is a chain of layers names up to the required layer. + * All layers in the chain must have a name. + * */ + fun textLayer(vararg path: String, builder: DynamicTextLayer.() -> Unit) } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt index 7398dc84..40262c24 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicCompositionProvider.kt @@ -11,28 +11,37 @@ internal class DynamicCompositionProvider : LottieDynamicProperties { get() = layers.size override fun shapeLayer(vararg path: String, builder: DynamicShapeLayer.() -> Unit) { - val p = path.joinToString(LayerPathSeparator, LayerPathSeparator) - - val provider = when(val existent = layers[p]) { - is DynamicShapeLayerProvider -> existent - is DynamicLayerProvider -> DynamicShapeLayerProvider().apply { - transform = existent.transform - } - - else -> DynamicShapeLayerProvider() - } - - provider.apply(builder) - - layers[p] = provider +// val p = path.joinToString(LayerPathSeparator, LayerPathSeparator) +// +// val provider = when(val existent = layers[p]) { +// is DynamicShapeLayerProvider -> existent +// is DynamicLayerProvider -> DynamicShapeLayerProvider().apply { +// transform = existent.transform +// } +// +// else -> DynamicShapeLayerProvider() +// } +// +// provider.apply(builder) +// +// layers[p] = provider + appendLayer(path, DynamicShapeLayerProvider().apply(builder)) } override fun imageLayer(vararg path: String, builder: DynamicImageLayer.() -> Unit) { - layers[path.joinToString(LayerPathSeparator, LayerPathSeparator)] = DynamicImageLayerProvider().apply(builder) + appendLayer(path, DynamicImageLayerProvider().apply(builder)) + } + + override fun textLayer(vararg path: String, builder: DynamicTextLayer.() -> Unit) { + appendLayer(path, DynamicTextLayerProvider().apply(builder)) } override fun layer(vararg path: String, builder: DynamicLayer.() -> Unit) { - layers[path.joinToString(LayerPathSeparator, LayerPathSeparator)] = DynamicLayerProvider().apply(builder) + appendLayer(path, DynamicLayerProvider().apply(builder)) + } + + private fun appendLayer(path : Array, instance : T) { + layers[path.joinToString(LayerPathSeparator, LayerPathSeparator)] = instance } operator fun get(path: ResolvingPath): DynamicLayerProvider? = layers[path.path] diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTextLayerProvider.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTextLayerProvider.kt new file mode 100644 index 00000000..06239e20 --- /dev/null +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/dynamic/_DynamicTextLayerProvider.kt @@ -0,0 +1,100 @@ +package io.github.alexzhirkevich.compottie.dynamic + +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import io.github.alexzhirkevich.compottie.internal.helpers.text.TextJustify + +internal class DynamicTextLayerProvider : DynamicLayerProvider(), DynamicTextLayer { + + var text: PropertyProvider? = null + private set + + var fontSize: PropertyProvider? = null + private set + + var lineHeight: PropertyProvider? = null + private set + + var lineSpacing: PropertyProvider? = null + private set + + var fillColor: PropertyProvider? = null + private set + + var strokeColor: PropertyProvider? = null + private set + + var strokeWidth: PropertyProvider? = null + private set + + var strokeOverFill: PropertyProvider? = null + private set + + var textJustify: PropertyProvider? = null + private set + + var baselineShift: PropertyProvider? = null + private set + + var tracking: PropertyProvider? = null + private set + + var wrapSize: PropertyProvider? = null + private set + + var wrapPosition: PropertyProvider? = null + private set + + override fun text(provider: PropertyProvider) { + text = provider + } + + override fun fontSize(provider: PropertyProvider) { + fontSize = provider + } + + override fun lineHeight(provider: PropertyProvider) { + lineHeight = provider + } + + override fun lineSpacing(provider: PropertyProvider) { + lineSpacing = provider + } + + override fun fillColor(provider: PropertyProvider) { + fillColor = provider + } + + override fun strokeColor(provider: PropertyProvider) { + strokeColor = provider + } + + override fun strokeWidth(provider: PropertyProvider) { + strokeWidth = provider + } + + override fun strokeOverFill(provider: PropertyProvider) { + strokeOverFill = provider + } + + override fun textJustify(provider: PropertyProvider) { + textJustify = provider + } + + override fun baselineShift(provider: PropertyProvider) { + baselineShift = provider + } + + override fun tracking(provider: PropertyProvider) { + tracking = provider + } + + override fun size(provider: PropertyProvider) { + wrapSize = provider + } + + override fun position(provider: PropertyProvider) { + wrapPosition = provider + } +} \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt index 7d08429a..d919d2ed 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTextDocument.kt @@ -1,10 +1,18 @@ package io.github.alexzhirkevich.compottie.internal.animation +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import io.github.alexzhirkevich.compottie.dynamic.DynamicTextLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.derive import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.text.TextDocument +import io.github.alexzhirkevich.compottie.internal.utils.toOffset +import io.github.alexzhirkevich.compottie.internal.utils.toSize import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient +import kotlin.collections.ArrayList @Serializable internal class AnimatedTextDocument( @@ -21,6 +29,29 @@ internal class AnimatedTextDocument( private val document = TextDocument() + @Transient + private var dynamic :DynamicTextLayerProvider? = null + + private val fillColorList by lazy { + ArrayList(4) + } + + private val strokeColorList by lazy { + ArrayList(4) + } + + private val sizeList by lazy { + ArrayList(2) + } + + private val positionList by lazy { + ArrayList(2) + } + + fun dynamic(provider : DynamicTextLayerProvider?){ + dynamic = provider + } + @Transient private val delegate = BaseKeyframeAnimation( expression = expression, @@ -33,7 +64,45 @@ internal class AnimatedTextDocument( ) override fun interpolated(state: AnimationState): TextDocument { - return delegate.interpolated(state) + val interp = delegate.interpolated(state) + + return document.apply { + fontFamily = interp.fontFamily + fillColor = dynamic?.fillColor?.let { + it.derive(interp.fillColor?.toColor() ?: Color.Unspecified, state).let { + fillColorList.fill(it) + } + } ?: interp.fillColor + strokeColor = dynamic?.strokeColor?.let { + it.derive(interp.strokeColor?.toColor() ?: Color.Unspecified, state).let { + strokeColorList.fill(it) + } + } ?: interp.strokeColor + strokeWidth = dynamic?.strokeWidth.derive(interp.strokeWidth, state) + strokeOverFill = dynamic?.strokeOverFill.derive(interp.strokeOverFill, state) + fontSize = dynamic?.fontSize.derive(interp.fontSize, state) + lineHeight = dynamic?.lineHeight.derive(interp.lineHeight, state) + wrapSize = dynamic?.wrapSize?.let { + it.derive(interp.wrapSize?.toSize() ?: Size.Unspecified, state).let { + sizeList[0] = it.width + sizeList[1] = it.height + sizeList + } + } ?: interp.wrapSize + wrapPosition = dynamic?.wrapPosition?.let { + it.derive(interp.wrapPosition?.toOffset() ?: Offset.Unspecified, state).let { + positionList[0] = it.x + positionList[1] = it.y + positionList + } + } ?: interp.wrapPosition + text = dynamic?.text.derive(interp.text.orEmpty(), state) + textJustify = dynamic?.textJustify.derive(interp.textJustify, state) + textTracking = dynamic?.tracking.derive(interp.textTracking ?: 0f, state) + baselineShift = + dynamic?.baselineShift.derive(interp.baselineShift ?: 0f, state) + textCaps = interp.textCaps + } } fun copy() = AnimatedTextDocument( @@ -41,4 +110,13 @@ internal class AnimatedTextDocument( expression = expression, slotID = slotID ) +} + +private fun MutableList.fill(color : Color) : MutableList { + this[0] = color.red + this[1] = color.green + this[2] = color.blue + this[3] = color.alpha + + return this } \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt index 448cc6b0..0194436c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextDocument.kt @@ -49,4 +49,4 @@ internal class TextDocument( var baselineShift : Float? = null, ) -internal val TextDocument.fontScale get() = fontSize/100f \ No newline at end of file +internal val TextDocument.fontScale get() = fontSize/100f diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt index 315a527a..92b3da1d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/text/TextJustify.kt @@ -5,14 +5,15 @@ import kotlin.jvm.JvmInline @Serializable @JvmInline -internal value class TextJustify(val type : Byte) { +value class TextJustify internal constructor(val type : Byte) { + companion object { val Left = TextJustify(0) val Right = TextJustify(1) val Center = TextJustify(2) - val LastLineLeft = TextJustify(3) - val LastLineRight = TextJustify(4) - val LastLineCenter = TextJustify(5) - val LastLineFull = TextJustify(6) + internal val LastLineLeft = TextJustify(3) + internal val LastLineRight = TextJustify(4) + internal val LastLineCenter = TextJustify(5) + internal val LastLineFull = TextJustify(6) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt index 79ba95ef..155bf148 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/TextLayer.kt @@ -24,6 +24,9 @@ import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastForEachIndexed +import io.github.alexzhirkevich.compottie.dynamic.DynamicCompositionProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicLayerProvider +import io.github.alexzhirkevich.compottie.dynamic.DynamicTextLayerProvider import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.animation.interpolatedNorm import io.github.alexzhirkevich.compottie.internal.animation.toColor @@ -238,9 +241,18 @@ internal class TextLayer( outBounds.set(0f, 0f, composition.animation.width, composition.animation.height) } + override fun setDynamicProperties( + composition: DynamicCompositionProvider?, + state: AnimationState + ): DynamicLayerProvider? { + return super.setDynamicProperties(composition, state).also { + textData.document.dynamic(it as? DynamicTextLayerProvider) + } + } + private fun configurePaint(document: TextDocument, parentAlpha: Float, state: AnimationState) { - val transformOpacity = transform.opacity?.interpolatedNorm(state) ?: 1f + val transformOpacity = transform.opacity.interpolatedNorm(state) val fillOpacity = textAnimation?.style?.fillOpacity?.interpolatedNorm(state) ?: 1f @@ -330,7 +342,6 @@ internal class TextLayer( lineHeight = lineHeight, fontFamily = fontFamily, letterSpacing = letterSpacing, - color = Color.Red, fontWeight = weight, fontStyle = style ) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt index c1416865..ce2d0f36 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/MiscUtil.kt @@ -1,11 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.utils import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size import kotlin.math.max import kotlin.math.min internal fun FloatArray.toOffset() = Offset(this[0], this[1]) internal fun List.toOffset() = Offset(this[0], this[1]) +internal fun List.toSize() = Size(this[0], this[1]) fun floorMod(x: Float, y: Float): Int { return floorMod(x.toInt(), y.toInt()) diff --git a/convention-plugins/src/main/kotlin/root.publication.gradle.kts b/convention-plugins/src/main/kotlin/root.publication.gradle.kts index 1fdaed40..a1e49fad 100644 --- a/convention-plugins/src/main/kotlin/root.publication.gradle.kts +++ b/convention-plugins/src/main/kotlin/root.publication.gradle.kts @@ -16,7 +16,6 @@ nexusPublishing { snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) if (System.getenv("OSSRH_PASSWORD") != null) { - stagingProfileId.set(System.getenv("OSSRH_STAGING_PROFILE_ID")) username.set(System.getenv("OSSRH_USERNAME")) password.set(System.getenv("OSSRH_PASSWORD")) } diff --git a/example/androidapp/build.gradle.kts b/example/androidapp/build.gradle.kts index 1b93ec1d..d6fab739 100644 --- a/example/androidapp/build.gradle.kts +++ b/example/androidapp/build.gradle.kts @@ -42,4 +42,7 @@ dependencies { implementation(project(":compottie")) implementation(libs.androidx.core.ktx) implementation(libs.androidx.activity.compose) + implementation(libs.androidx.activity.compose) + implementation(compose.uiTooling) + implementation(compose.preview) } \ No newline at end of file diff --git a/example/androidapp/src/main/kotlin/MainActivity.kt b/example/androidapp/src/main/kotlin/MainActivity.kt index 97e8958c..0faa789c 100644 --- a/example/androidapp/src/main/kotlin/MainActivity.kt +++ b/example/androidapp/src/main/kotlin/MainActivity.kt @@ -4,10 +4,19 @@ import App import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { App() } } +} + +@Preview +@Composable +fun AppPreview() { + App() } \ No newline at end of file diff --git a/example/shared/src/commonMain/composeResources/files/text.json b/example/shared/src/commonMain/composeResources/files/text.json index 6be3da1c..46b3b1dc 100644 --- a/example/shared/src/commonMain/composeResources/files/text.json +++ b/example/shared/src/commonMain/composeResources/files/text.json @@ -1,77 +1 @@ -{ - "v": "5.5.2", - "fr": 60, - "ip": 0, - "op": 120, - "w": 300, - "h": 100, - "ddd": 0, - "assets": [], - "fonts": { - "list": [ - { - "fPath": "https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf", - "fFamily": "Ubuntu", - "fStyle": "Light Italic", - "fName": "Ubuntu Light Italic", - "origin": 3 - } - ] - }, - "layers": [ - { - "nm": "Text Layer", - "ty": 5, - "sr": 1, - "ks": { - "p": { - "k": [ - 5, - 80 - ], - "a": 0 - } - }, - "ip": 0, - "op": 120, - "st": 0, - "t": { - "a": [], - "d": { - "k": [ - { - "s": { - "f": "Ubuntu Light Italic", - "fc": [ - 0, - 0, - 0 - ], - "s": 100, - "t": "Hello", - "j": 0, - "sc": [ - 0, - 0, - 0 - ], - "sw": 0 - }, - "t": 0 - } - ] - }, - "m": { - "a": { - "k": [ - 0, - 0 - ], - "a": 0 - } - }, - "p": {} - } - } - ] -} \ No newline at end of file +{"v":"5.5.2","fr":60,"ip":0,"op":120,"w":300,"h":100,"ddd":0,"assets":[],"fonts":{"list":[{"fPath":"https://fonts.gstatic.com/s/ubuntu/v15/4iCp6KVjbNBYlgoKejZftWyI.ttf","fFamily":"Ubuntu","fStyle":"Light Italic","fName":"Ubuntu Light Italic","origin":3}]},"layers":[{"nm":"Text Layer","ty":5,"sr":1,"ks":{"p":{"k":[5,80],"a":0}},"ip":0,"op":120,"st":0,"t":{"a":[],"d":{"k":[{"s":{"f":"Ubuntu Light Italic","fc":[0,0,0],"s":100,"t":"Hello","j":0,"sc":[0,0,0],"sw":0},"t":0}]},"m":{"a":{"k":[0,0],"a":0}},"p":{}}}]} \ No newline at end of file diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 23800be0..f7ee2a0d 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset @@ -33,18 +32,19 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.CompottieException -import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec -import io.github.alexzhirkevich.compottie.LottieConstants +import io.github.alexzhirkevich.compottie.LottiePainter import io.github.alexzhirkevich.compottie.NetworkFontManager +import io.github.alexzhirkevich.compottie.ResourcesFontManager +import io.github.alexzhirkevich.compottie.Url import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState -import io.github.alexzhirkevich.compottie.dynamic.LottieGradient import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties import io.github.alexzhirkevich.compottie.rememberLottieComposition import io.github.alexzhirkevich.compottie.rememberLottiePainter @@ -52,8 +52,8 @@ import io.github.alexzhirkevich.compottie.rememberResourcesAssetsManager import io.github.alexzhirkevich.compottie.rememberResourcesFontManager import io.github.alexzhirkevich.shared.generated.resources.ComicNeue import io.github.alexzhirkevich.shared.generated.resources.Res -import kotlinx.coroutines.delay import org.jetbrains.compose.resources.ExperimentalResourceApi +import kotlin.random.Random private val GRADIENT_ELLIPSE = "gradient_ellipse.json" private val TEST = "test.json" @@ -135,12 +135,11 @@ fun App() { // return AllExamples() // return LottieList() - val composition = rememberLottieComposition() { LottieCompositionSpec.ResourceString(ROBOT) // // LottieCompositionSpec.Url( -// "https://assets-v2.lottiefiles.com/a/e9cce796-ee9b-11ee-817f-5ff9e267b845/1IrfDLeScs.lottie", +// "https://assets-v2.lottiefiles.com/a/4a2c7f7e-1171-11ee-ae37-d7b32f8315b2/7qw6O5kPfv.lottie", // broken text pos // "https://lottie.host/02723b80-a213-478e-9320-0e5c3adf88ff/zz4HlIqtSb.lottie", // "https://assets-v2.lottiefiles.com/a/10956594-1169-11ee-98fe-ef3d9d71ad0f/WVFg2bDWGj.lottie", // "https://assets-v2.lottiefiles.com/a/0e63252e-1153-11ee-9e35-dfc2b798a135/sYygPbem7R.lottie", @@ -166,17 +165,16 @@ fun App() { contentAlignment = Alignment.Center ) { - val progress by animateLottieCompositionAsState( + val progress = animateLottieCompositionAsState( iterations = Compottie.IterateForever, composition = composition.value ) - val painter = rememberLottiePainter( + + val painter = rememberLottiePainter( composition = composition.value, - progress = { progress }, - fontManager = remember { - NetworkFontManager() - }, - // fontManager = rememberResourcesFontManager { fontSpec -> + progress = progress::value, + clipToCompositionBounds = false, +// fontManager = rememberResourcesFontManager { fontSpec -> // when (fontSpec.family) { // "Comic Neue" -> Res.font.ComicNeue // else -> null From 031203644d9c2c9c87ea12ae5322b1c0126693e0 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Fri, 28 Jun 2024 15:30:01 +0300 Subject: [PATCH 096/100] file composition spec --- README.md | 108 +++++++++--------- .../compottie/DotLottieAssetsManager.kt | 12 +- .../compottie/DotLottieCompositionSpec.kt | 17 +++ .../compottie/FileCompositionSpec.kt | 51 +++++++++ .../alexzhirkevich/compottie/FileSystem.kt | 18 ++- .../alexzhirkevich/compottie/FileSystem.js.kt | 51 +++++++++ .../compottie/ZipFileSystem.js.kt | 14 ++- .../compottie/FileSystem.jvmNative.kt | 39 +++++++ .../compottie/Conversion.wasmJs.kt | 16 ++- .../compottie/FileSystem.wasmJs.kt | 48 ++++++++ .../compottie/ZipFileSystem.wasmJs.kt | 12 +- .../compottie/FileSystem.web.kt | 10 +- .../compottie/ZipFileSystem.web.kt | 4 +- .../alexzhirkevich/compottie/DiskCache.kt | 1 - .../alexzhirkevich/compottie/DiskLruCache.kt | 3 + .../alexzhirkevich/compottie/RealDiskCache.kt | 1 + .../compottie/UrlCompositionSpec.kt | 24 +--- .../compottie/FileSystem.jvmNative.kt | 6 - .../compottie/CompottieException.kt | 5 +- .../compottie/InternalCompottieApi.kt | 4 +- .../compottie/LottieComposition.kt | 5 +- .../internal/animation/AnimatedGradient.kt | 3 +- .../internal/animation/BezierInterpolation.kt | 8 +- .../internal/shapes/GradientFillShape.kt | 20 ++-- example/shared/src/commonMain/kotlin/App.kt | 19 ++- 25 files changed, 357 insertions(+), 142 deletions(-) create mode 100644 compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt rename {compottie-network => compottie-dot}/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt (72%) create mode 100644 compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt create mode 100644 compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt create mode 100644 compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt rename {compottie-network => compottie-dot}/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt (90%) delete mode 100644 compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt diff --git a/README.md b/README.md index 9ffe10e5..acf64a04 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,6 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderin ![Example](https://github.com/alexzhirkevich/compottie/assets/63979218/2735c77a-d940-4fd7-825c-208454b3960a) # Installation -[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie) > [!IMPORTANT] > Starting from v2.0 Compottie has its own multiplatform rendering engine without any platform delegates. @@ -22,10 +21,12 @@ Compose Multiplatform Adobe After Effects Bodymovin (Lottie) animations renderin | Module | Description | | :----: | ------------- | | `compottie` | Main module with rendering engine and `JsonString` animation spec. Currently has two branches - 1.x (with platform renderers - Skottie and lottie-android) and 2.x (with own renderer). 1.x is maintained until the new renderer becomes stable | -| `compottie⁠-⁠dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. Depends on [Okio](https://square.github.io/okio/). For Compottie 2.x only | +| `compottie⁠-⁠dot` | Contains [dotLottie](https://dotlottie.io/) and ZIP animation spec. For Compottie 2.x only | | `compottie⁠-⁠network` | Contains `Url` animation spec and asset/font managers (with [Ktor](https://ktor.io/) and local cache with [Okio](https://square.github.io/okio/)). Allows loading animations and assets from web. For Compottie 2.x only | | `compottie⁠-⁠resources` | Contains asset and font managers powered by official Compose resources. For Compottie 2.x only | +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.alexzhirkevich/compottie) + Add as a Gradle dependency ```kotlin dependencies { @@ -36,11 +37,11 @@ dependencies { } ``` -or with version catalog +or using the version catalog ```toml [versions] -compottie="" +compottie="" [libraries] compottie = { module = "io.github.alexzhirkevich:compottie", version.ref = "compottie" } @@ -68,58 +69,56 @@ For Compottie 1.x docs please refer to the [airbnb docs](https://github.com/airb ## Basic Usage ```kotlin -@Composable -fun Loader() { - val composition by rememberLottieComposition { - LottieCompositionSpec.JsonString( - Res.readBytes("files/anim.json").decodeToString() - ) - } - val progress by animateLottieCompositionAsState(composition) - - Image( - painter = rememberLottiePainter( - composition = composition, - progress = { progress }, - ), - contentDescription = "Lottie animation" +val composition by rememberLottieComposition { + LottieCompositionSpec.JsonString( + Res.readBytes("files/anim.json").decodeToString() ) } +val progress by animateLottieCompositionAsState(composition) + +Image( + painter = rememberLottiePainter( + composition = composition, + progress = { progress }, + ), + contentDescription = "Lottie animation" +) ``` Or with the `rememberLottiePainter` overload that merges `rememberLottiePainter` and `animateLottieCompositionsState()` ```kotlin -@Composable -fun Loader() { - val composition by rememberLottieComposition { - LottieCompositionSpec.JsonString( - Res.readBytes("files/anim.json").decodeToString() - ) - } - - Image( - painter = rememberLottiePainter( - composition = composition, - progress = { progress }, - ), - contentDescription = "Lottie animation" +val composition by rememberLottieComposition { + LottieCompositionSpec.JsonString( + Res.readBytes("files/anim.json").decodeToString() ) } + +Image( + painter = rememberLottiePainter( + composition = composition, + iterations = Compottie.IterateForever + ), + contentDescription = "Lottie animation" +) ``` ## LottieComposition -`LottieComposition` is the parsed version of your Lottie json file. It is stateless and can be cached/reused freely. Call `rememberLottieComposition(spec)` to create new composition. `LottieCompositionSpec` is an open interface that lets you select the source (string/zip, network/assets, etc.). +`LottieComposition` is the parsed version of your Lottie json file. It is stateless and can be +cached/reused freely. Call `rememberLottieComposition(spec)` to create new composition. +`LottieCompositionSpec` is an open interface that lets you select the animation source (string/zip, network/assets, etc.). For example: ```kotlin -val composition1 by rememberLottieComposition { +val animFromJsonRes by rememberLottieComposition { LottieCompositionSpec.JsonString( Res.readBytes("files/anim.json").decodeToString() ) } -val composition2 by rememberLottieComposition { - LottieCompositionSpec.Url("https://...") + +val animFromUrl by rememberLottieComposition { + LottieCompositionSpec.Url("https://example.com/anim.lotie") } -val composition3 by rememberLottieComposition { + +val animFromArchiveRes by rememberLottieComposition { LottieCompositionSpec.DotLottie( Res.readBytes("files/anim.lottie") ) @@ -209,6 +208,16 @@ You can also use `DotLottie` composition spec even without making a .lottie file your animation with assets using deflate algorithm. The only limitation - animation can't be named as "manifest.json" and should contain exactly one .json file. +The `DotLottie` composition spec works both with dotLottie and simple ZIP files. +For dotLottie files you can specify the animation to run if archive contains multiple animations + +```kotlin +fun LottieCompositionSpec.Companion.DotLottie( + archive: ByteArray, + animationId: String? +) : LottieCompositionSpec +``` + ## Images Images should be avoided whenever possible. They are much larger, less performant, and can lead to pixelation. Whenever possible, try and make your animation consist solely of vectors. However, Lottie does support images in one of 4 ways: @@ -221,16 +230,13 @@ Images should be avoided whenever possible. They are much larger, less performan `compottie-resources` provides ready-to-use implementation that loads assets from compose-resources: ```kotlin -val composition = rememberLottieComposition( +val painter = rememberLottiePainter( + composition = composition, assetsManager = rememberResourcesAssetsManager( directory = "files" // by default, - readBytes = Res::readBytes + readBytes = Res::readBytes ) -) { - LottieCompositionSpec.JsonString( - Res.readBytes("files/anim.json").decodeToString() - ) -} +) ``` ## Fonts @@ -241,10 +247,6 @@ Text can be drawn in 2 ways: using fonts and using glyphs (when characters are b `compottie-resources` provides ready-to-use implementation that loads fonts from compose-resources: ```kotlin -val composition by rememberLottieComposition() { - //... -} - val painter = rememberLottiePainter( composition = composition, fontManager = rememberResourcesFontManager { fontSpec -> @@ -262,10 +264,10 @@ This module brings an additional composition spec called `LottieCompositionSpec. ```kotlin fun LottieCompositionSpec.Companion.Url( url : String, - format: LottieAnimationFormat = LottieAnimationFormat.Undefined, - client: HttpClient = DefaultHttpClient, - request : NetworkRequest = GetRequest, - cacheStrategy: LottieCacheStrategy = DiskCacheStrategy(), + format: LottieAnimationFormat, + client: HttpClient, + request : NetworkRequest, + cacheStrategy: LottieCacheStrategy, ) ``` that can be used to load JSON and dotLottie animations from the Internet. diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index 2f7644f4..20ec9b6f 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -30,18 +30,20 @@ internal class DotLottieAssetsManager( return load("/images", trimPath, trimName)?.let { ImageRepresentable.Bytes(it) + } ?: run { + Compottie.logger?.info("Failed to decode dotLottie asset $trimName") + null } } private suspend fun load(root: String?, trimPath: String?, trimName: String?): ByteArray? { - val fullPath = listOfNotNull(root, trimPath, trimName) - .joinToString("/") - return try { + val fullPath = listOfNotNull(root, trimPath, trimName) + .joinToString("/") + val r = this.root ?: "/".toPath() zipFileSystem.read(r.resolve(fullPath.toPath(true))) - } catch (t: IOException) { - Compottie.logger?.error("Failed to decode dotLottie asset $trimName", t) + } catch (t: Throwable) { return null } } diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt index 6cd69520..f0b111bb 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieCompositionSpec.kt @@ -111,3 +111,20 @@ private class DotLottieCompositionSpec( } == true } } + +@InternalCompottieApi +suspend fun ByteArray.decodeToLottieComposition( + format: LottieAnimationFormat, +) : LottieComposition { + return when (format) { + LottieAnimationFormat.Json -> LottieCompositionSpec.JsonString(decodeToString()).load() + LottieAnimationFormat.DotLottie -> LottieCompositionSpec.DotLottie(this).load() + LottieAnimationFormat.Undefined -> { + try { + decodeToLottieComposition(LottieAnimationFormat.Json) + } catch (t: Throwable) { + decodeToLottieComposition(LottieAnimationFormat.DotLottie) + } + } + } +} \ No newline at end of file diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt new file mode 100644 index 00000000..c23b5e0f --- /dev/null +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt @@ -0,0 +1,51 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Stable + +/** + * For web it is org.w3c.files.File of the file picked by user. + * For other platforms it is [String] + * */ +expect class FilePath + +interface FileReader { + suspend fun read(path: FilePath) : ByteArray +} + +/** + * File composition spec. Usually useful for files **_picked by user_** + * + * @param path file path. For web it is org.w3c.files.File of the file picked by user. + * For other platforms it is [String] + * @param reader file reader. Defaults to ] Okio default file sys + * @param format animation format (JSON/dotLottie) if it is known + * */ +@Stable +fun LottieCompositionSpec.Companion.File( + path: FilePath, + reader: FileReader = defaultFileReader(), + format: LottieAnimationFormat = LottieAnimationFormat.Undefined +) : LottieCompositionSpec = FileCompositionSpec(path, reader, format) + +private class FileCompositionSpec( + private val path : FilePath, + private val reader: FileReader, + private val format: LottieAnimationFormat +) : LottieCompositionSpec { + + override val key: String? + get() = "file_${path.key}" + + @OptIn(InternalCompottieApi::class) + override suspend fun load(cacheKey: Any?): LottieComposition { + return LottieComposition.getOrCreate(cacheKey) { + reader.read(path).decodeToLottieComposition(format) + } + } +} + +internal expect val FilePath.key : String? + +@Stable +internal expect fun defaultFileReader() : FileReader + diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt similarity index 72% rename from compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt rename to compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt index 7ebe9560..47fbed9f 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.kt @@ -8,11 +8,14 @@ import okio.Path import kotlin.random.Random import kotlin.random.nextULong -internal object CacheIsUnsupportedException : Exception() +@InternalCompottieApi +class UnsupportedFileSystemException : CompottieException("File system is not unsupported") -internal expect fun defaultFileSystem() : FileSystem +@InternalCompottieApi +expect fun defaultFileSystem() : FileSystem -internal fun Closeable.closeQuietly() { +@InternalCompottieApi +fun Closeable.closeQuietly() { try { close() } catch (e: RuntimeException) { @@ -20,7 +23,8 @@ internal fun Closeable.closeQuietly() { } catch (_: Exception) {} } -internal fun FileSystem.createFile(file: Path, mustCreate: Boolean = false) { +@InternalCompottieApi +fun FileSystem.createFile(file: Path, mustCreate: Boolean = false) { if (mustCreate) { sink(file, mustCreate = true).closeQuietly() } else if (!exists(file)) { @@ -28,7 +32,8 @@ internal fun FileSystem.createFile(file: Path, mustCreate: Boolean = false) { } } -internal fun FileSystem.createTempFile(): Path { +@InternalCompottieApi +fun FileSystem.createTempFile(): Path { var tempFile: Path do { tempFile = FileSystem.SYSTEM_TEMPORARY_DIRECTORY / "tmp_${Random.nextULong()}" @@ -37,7 +42,8 @@ internal fun FileSystem.createTempFile(): Path { return tempFile } -internal fun FileSystem.deleteContents(directory: Path) { +@InternalCompottieApi +fun FileSystem.deleteContents(directory: Path) { var exception: IOException? = null val files = try { list(directory) diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt new file mode 100644 index 00000000..d6bec033 --- /dev/null +++ b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt @@ -0,0 +1,51 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Stable +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withContext +import okio.FileSystem +import okio.Path.Companion.toPath +import org.khronos.webgl.ArrayBuffer +import org.khronos.webgl.Uint8Array +import org.w3c.files.File +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException + +actual typealias FilePath = File + + +internal actual val FilePath.key : String? + get() = null + +@Stable +internal actual fun defaultFileReader() : FileReader = + FileSystemFileReader + +@Stable +private object FileSystemFileReader: FileReader { + + override suspend fun read(path: FilePath): ByteArray { + return suspendCancellableCoroutine { cont -> + val reader = org.w3c.files.FileReader() + + reader.onload = { + cont.resume( + Uint8Array(it.target.asDynamic().result.unsafeCast()) + .unsafeCast() + ) + } + + reader.onerror = { + cont.resumeWithException( + Exception("Failed to load file. Was it picked by user? Trace: $it") + ) + } + + cont.invokeOnCancellation { + reader.abort() + } + + reader.readAsArrayBuffer(path) + } + } +} \ No newline at end of file diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt index 9af8d2bf..92763c44 100644 --- a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt +++ b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.js.kt @@ -2,7 +2,7 @@ package io.github.alexzhirkevich.compottie import org.khronos.webgl.Uint8Array -internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : ByteArray { +internal actual suspend fun decompress(array: ByteArray, decompressedSize : Int) : ByteArray { val ds = DecompressionStream("deflate-raw") @@ -19,7 +19,8 @@ internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : B .pipeThrough(ds) .getReader() - val inflatedResult = ArrayList(inflatedSize) + val decompressed = ByteArray(decompressedSize) + var ind = 0 while (true) { val result = reader.read().await() @@ -27,11 +28,12 @@ internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : B break } - inflatedResult.addAll( - Uint8Array(result.value.buffer).unsafeCast>() - ) + val chunk = Uint8Array(result.value.buffer).unsafeCast() + + chunk.copyInto(decompressed, ind) + ind += chunk.size } - return inflatedResult.toByteArray() + return decompressed } diff --git a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt new file mode 100644 index 00000000..82dbaa3a --- /dev/null +++ b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt @@ -0,0 +1,39 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Stable +import kotlinx.coroutines.withContext +import okio.FileSystem +import okio.Path +import okio.Path.Companion.toPath +import okio.SYSTEM + +@InternalCompottieApi +actual fun defaultFileSystem() : FileSystem = FileSystem.SYSTEM + +actual typealias FilePath = String + +internal actual val FilePath.key : String? + get() = this + +@OptIn(InternalCompottieApi::class) +@Stable +internal actual fun defaultFileReader() : FileReader = FileSystemFileReader(defaultFileSystem()) + +@Stable +private class FileSystemFileReader(private val fileSystem: FileSystem): FileReader { + override suspend fun read(path: FilePath): ByteArray { + return withContext(ioDispatcher()) { + fileSystem.read(path.toPath()) { + readByteArray() + } + } + } + + override fun equals(other: Any?): Boolean { + return fileSystem == (other as? FileSystemFileReader)?.fileSystem + } + + override fun hashCode(): Int { + return 31 * fileSystem.hashCode() + } +} \ No newline at end of file diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt index c1b083b5..1e9791b2 100644 --- a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/Conversion.wasmJs.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie +import org.khronos.webgl.ArrayBuffer import org.khronos.webgl.Int8Array import org.khronos.webgl.get import org.khronos.webgl.set @@ -30,16 +31,22 @@ internal fun createSourceUnstable(data : JsReference) : JsAny = js("" }) """) +internal fun ArrayBuffer.toByteArray(): ByteArray { + return Int8Array(this).toByteArray() +} + @OptIn(ExperimentalCompottieApi::class) -internal fun Int8Array.toByteArray(): Array { +internal fun Int8Array.toByteArray(): ByteArray { + if (Compottie.useStableWasmMemoryManagement) { - return Array(byteLength) { + return ByteArray(byteLength) { this[it] } } return jsInt8ArrayToKotlinByteArray(this) } + @OptIn(ExperimentalCompottieApi::class) internal fun ByteArray.toInt8Array() : Int8Array { if (Compottie.useStableWasmMemoryManagement) { @@ -81,7 +88,7 @@ private fun byteArrayToInt8ArrayImpl(a: JsReference): Int8Array = js( ) private external fun jsExportInt8ArrayToWasm(src: Int8Array, size: Int, dstAddr: Int) -private fun jsInt8ArrayToKotlinByteArray(x: Int8Array): Array { +private fun jsInt8ArrayToKotlinByteArray(x: Int8Array): ByteArray { val size = x.length @OptIn(UnsafeWasmMemoryApi::class) @@ -89,6 +96,7 @@ private fun jsInt8ArrayToKotlinByteArray(x: Int8Array): Array { val memBuffer = allocator.allocate(size) val dstAddress = memBuffer.address.toInt() jsExportInt8ArrayToWasm(x, size, dstAddress) - Array(size) { i -> (memBuffer + i).loadByte() } + ByteArray(size) { i -> (memBuffer + i).loadByte() } } } + diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt new file mode 100644 index 00000000..dcf8b25d --- /dev/null +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt @@ -0,0 +1,48 @@ +package io.github.alexzhirkevich.compottie + +import androidx.compose.runtime.Stable +import kotlinx.coroutines.suspendCancellableCoroutine +import org.khronos.webgl.ArrayBuffer +import org.khronos.webgl.Int8Array +import org.w3c.dom.events.EventTarget +import org.w3c.files.File +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException + +actual typealias FilePath = File + +internal actual val FilePath.key : String? + get() = null + +@Stable +internal actual fun defaultFileReader() : FileReader = + FileSystemFileReader + +@Stable +private object FileSystemFileReader: FileReader { + + override suspend fun read(path: FilePath): ByteArray { + return suspendCancellableCoroutine { cont -> + val reader = org.w3c.files.FileReader() + + reader.onload = { + val buffer = requireNotNull(it.target).let(::bufferResult) + cont.resume(buffer.toByteArray()) + } + + reader.onerror = { + cont.resumeWithException( + Exception("Failed to load file. Was it picked by user? Trace: $it") + ) + } + + cont.invokeOnCancellation { + reader.abort() + } + + reader.readAsArrayBuffer(path) + } + } +} + +internal fun bufferResult(target : EventTarget) : ArrayBuffer = js("target.result") \ No newline at end of file diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt index 1cdf6a45..7ccf3d9e 100644 --- a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.wasmJs.kt @@ -4,7 +4,7 @@ package io.github.alexzhirkevich.compottie import org.khronos.webgl.Int8Array @OptIn(ExperimentalCompottieApi::class) -internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : ByteArray { +internal actual suspend fun decompress(array: ByteArray, decompressedSize : Int) : ByteArray { val ds = DecompressionStream("deflate-raw") @@ -19,7 +19,8 @@ internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : B .pipeThrough(ds) .getReader() - val inflatedResult = ArrayList(inflatedSize) + val decompressed = ByteArray(decompressedSize) + var ind = 0 while (true) { val result = reader.read().await() @@ -27,9 +28,12 @@ internal actual suspend fun decompress(array: ByteArray, inflatedSize : Int) : B break } - inflatedResult += Int8Array(result.value.buffer).toByteArray() + val chunk = Int8Array(result.value.buffer).toByteArray() + + chunk.copyInto(decompressed, ind) + ind += array.size } - return inflatedResult.toByteArray() + return decompressed } diff --git a/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt similarity index 90% rename from compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt rename to compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt index 3c8b3c99..016fd1ef 100644 --- a/compottie-network/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt +++ b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.web.kt @@ -7,9 +7,9 @@ import okio.Path import okio.Sink import okio.Source -internal actual fun defaultFileSystem() : FileSystem = ThrowingFileSystem +@InternalCompottieApi +actual fun defaultFileSystem() : FileSystem = ThrowingFileSystem -/** A file system that throws if any of its methods are called. */ private object ThrowingFileSystem : FileSystem() { override fun atomicMove(source: Path, target: Path) { @@ -64,7 +64,9 @@ private object ThrowingFileSystem : FileSystem() { throwReadWriteIsUnsupported() } + @OptIn(InternalCompottieApi::class) private fun throwReadWriteIsUnsupported(): Nothing { - throw CacheIsUnsupportedException + throw UnsupportedFileSystemException() } -} \ No newline at end of file +} + diff --git a/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt index deb98fa7..105cdd72 100644 --- a/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt +++ b/compottie-dot/src/webMain/kotlin/io/github/alexzhirkevich/compottie/ZipFileSystem.web.kt @@ -6,7 +6,7 @@ import okio.Path.Companion.toPath import okio.buffer import okio.use -internal expect suspend fun decompress(array: ByteArray, inflatedSize : Int) : ByteArray +internal expect suspend fun decompress(array: ByteArray, decompressedSize : Int) : ByteArray internal actual class ZipFileSystem actual constructor( private val parent : FileSystem, @@ -26,7 +26,7 @@ internal actual class ZipFileSystem actual constructor( if (entry.compressionMethod == COMPRESSION_METHOD_STORED) return bytes - return decompress(bytes, entry.compressedSize.toInt()) + return decompress(bytes, entry.size.toInt()) } private val root = "/".toPath() diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt index a0186b6e..87034aca 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskCache.kt @@ -2,7 +2,6 @@ package io.github.alexzhirkevich.compottie import androidx.compose.runtime.Stable import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.Dispatchers import okio.Closeable import okio.FileSystem import okio.Path diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt index 8a5bd9d6..1cc666f8 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DiskLruCache.kt @@ -421,6 +421,7 @@ internal class DiskLruCache( return size } + @OptIn(InternalCompottieApi::class) private fun completeEdit(editor: Editor, success: Boolean) = synchronized(lock) { val entry = editor.entry check(entry.currentEditor == editor) @@ -602,6 +603,7 @@ internal class DiskLruCache( * Closes the cache and deletes all of its stored values. This will delete all files in the * cache directory including files that weren't created by the cache. */ + @OptIn(InternalCompottieApi::class) private fun delete() { close() fileSystem.deleteContents(directory) @@ -694,6 +696,7 @@ internal class DiskLruCache( * Get the file to read from/write to for [index]. * This file will become the new value for this index if committed. */ + @OptIn(InternalCompottieApi::class) fun file(index: Int): Path { synchronized(lock) { check(!closed) { "editor is closed" } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt index c4fd1235..19b36ec5 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/RealDiskCache.kt @@ -41,6 +41,7 @@ internal class RealDiskCache( cache.evictAll() } + @OptIn(InternalCompottieApi::class) override fun shutdown() { cache.closeQuietly() } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index abda86c9..edba7caf 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -63,13 +63,13 @@ private class NetworkCompositionSpec( Compottie.logger?.info("Searching for animation in cache...") cacheStrategy.load(url)?.let { Compottie.logger?.info("Animation was found in cache. Parsing...") - return@getOrCreate it.decodeLottieComposition(format).also { + return@getOrCreate it.decodeToLottieComposition(format).also { Compottie.logger?.info("Animation was successfully loaded from cache") } } ?: run { Compottie.logger?.info("Animation wasn't found in cache") } - } catch (t : CacheIsUnsupportedException) { + } catch (t : UnsupportedFileSystemException) { Compottie.logger?.info("File system cache is disabled for this strategy on the current platform") } catch (_: Throwable) { Compottie.logger?.info("Failed to load or decode animation from cache") @@ -92,13 +92,13 @@ private class NetworkCompositionSpec( } Compottie.logger?.info("Animation was loaded from web. Parsing...") - val composition = bytes.decodeLottieComposition(format) + val composition = bytes.decodeToLottieComposition(format) Compottie.logger?.info("Animation was successfully loaded from web. Caching...") try { cacheStrategy.save(url, bytes) Compottie.logger?.info("Animation was successfully saved to cache") - } catch (t : CacheIsUnsupportedException) { + } catch (t : UnsupportedFileSystemException) { Compottie.logger?.info("File system cache is disabled for this strategy on the current platform") } catch (t: Throwable) { Compottie.logger?.error( @@ -154,19 +154,3 @@ private class NetworkCompositionSpec( } } - -private suspend fun ByteArray.decodeLottieComposition( - format: LottieAnimationFormat -) : LottieComposition { - return when (format) { - LottieAnimationFormat.Json -> LottieCompositionSpec.JsonString(decodeToString()).load() - LottieAnimationFormat.DotLottie -> LottieCompositionSpec.DotLottie(this).load() - LottieAnimationFormat.Undefined -> { - try { - decodeLottieComposition(LottieAnimationFormat.Json) - } catch (t: Throwable) { - decodeLottieComposition(LottieAnimationFormat.DotLottie) - } - } - } -} \ No newline at end of file diff --git a/compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt b/compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt deleted file mode 100644 index bcbdbc81..00000000 --- a/compottie-network/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.alexzhirkevich.compottie - -import okio.FileSystem -import okio.SYSTEM - -internal actual fun defaultFileSystem() : FileSystem = FileSystem.SYSTEM \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt index 8b6b8b3b..5694d4a6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/CompottieException.kt @@ -1,7 +1,6 @@ package io.github.alexzhirkevich.compottie -class CompottieException internal constructor( +open class CompottieException @InternalCompottieApi constructor( msg : String, cause : Throwable? = null -) : Exception(msg,cause) { -} \ No newline at end of file +) : Exception(msg,cause) \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt index 7cbf5b82..fce52431 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/InternalCompottieApi.kt @@ -1,5 +1,5 @@ package io.github.alexzhirkevich.compottie -@RequiresOptIn("This is internal api used but compottie modules") +@RequiresOptIn("This is internal API used by Compottie modules") @Retention(value = AnnotationRetention.BINARY) -annotation class InternalCompottieApi() +annotation class InternalCompottieApi diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index e5446bb3..de6c373a 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -299,11 +299,12 @@ class LottieComposition internal constructor( } /** - * Clear all previously cached compositions + * Clear all previously in-memory cached compositions * */ fun clearCache() = cache.clear() @OptIn(ExperimentalCompottieApi::class) private val cache = LruMap(limit = Compottie::compositionCacheLimit) } -} \ No newline at end of file +} + diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt index b014c1b1..e05bc891 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedGradient.kt @@ -69,8 +69,7 @@ internal class ColorsWithStops( repeat(n) { i -> mColors[i] = lerp(a.colors[i], b.colors[i], progress) - mColorStops[i] = - androidx.compose.ui.util.lerp(a.colorStops[i], b.colorStops[i], progress) + mColorStops[i] = androidx.compose.ui.util.lerp(a.colorStops[i], b.colorStops[i], progress) } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt index 139532c9..274034d0 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BezierInterpolation.kt @@ -1,8 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.animation -import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable -import kotlinx.serialization.builtins.ArraySerializer import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonArray @@ -10,7 +8,6 @@ import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.JsonTransformingSerializer - @Serializable class BezierInterpolation( @Serializable(with = BezierCoordinateSerializer::class) @@ -20,8 +17,9 @@ class BezierInterpolation( val y : List ) -@OptIn(ExperimentalSerializationApi::class) -internal class BezierCoordinateSerializer : JsonTransformingSerializer>(ListSerializer(Float.serializer())) { +internal class BezierCoordinateSerializer : JsonTransformingSerializer>( + ListSerializer(Float.serializer()) +) { override fun transformDeserialize(element: JsonElement): JsonElement { return if (element is JsonPrimitive){ JsonArray(listOf(element)) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt index 195502aa..1142e0b1 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/shapes/GradientFillShape.kt @@ -62,17 +62,11 @@ internal class GradientFillShape( @SerialName("t") val type : GradientType, - /** - * Gradient Highlight Length. Only if type is Radial - * */ - @SerialName("h") - val highlightLength : AnimatedNumber? = null, - - /** - * Highlight Angle. Only if type is Radial - * */ - @SerialName("a") - val highlightAngle : AnimatedNumber? = null, +// @SerialName("h") +// val highlightLength : AnimatedNumber? = null, +// +// @SerialName("a") +// val highlightAngle : AnimatedNumber? = null, @SerialName("g") val colors : GradientColors, @@ -205,8 +199,8 @@ internal class GradientFillShape( startPoint = startPoint.copy(), endPoint = endPoint.copy(), type = type, - highlightLength = highlightLength?.copy(), - highlightAngle = highlightAngle?.copy(), +// highlightLength = highlightLength?.copy(), +// highlightAngle = highlightAngle?.copy(), colors = colors.copy(), fillRule = fillRule ) diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index f7ee2a0d..09ea610a 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -32,11 +32,13 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.RenderEffect import androidx.compose.ui.layout.ScaleFactor import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.CompottieException +import io.github.alexzhirkevich.compottie.DotLottie import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi import io.github.alexzhirkevich.compottie.LottieComposition import io.github.alexzhirkevich.compottie.LottieCompositionSpec @@ -135,10 +137,19 @@ fun App() { // return AllExamples() // return LottieList() + val composition = rememberLottieComposition() { - LottieCompositionSpec.ResourceString(ROBOT) + +// LottieCompositionSpec.DotLottie( +// Res.readBytes("files/$DOT_WITH_IMAGE") +// ) + +// LottieCompositionSpec.ResourceString(ROBOT) // -// LottieCompositionSpec.Url( + LottieCompositionSpec.Url( + "https://assets-v2.lottiefiles.com/a/a63d8606-1166-11ee-a7f8-83d9759dd8ff/hCTtJKM3Tu.lottie" +// "https://assets-v2.lottiefiles.com/a/d5654818-1168-11ee-a43f-870f05952f24/m5LUOQBrz9.lottie" // radial gr with angle +// "https://assets-v2.lottiefiles.com/a/27cd3f04-1180-11ee-852d-8b2f8ce04afa/SB3d1oChh6.lottie", // broken envelope transform // "https://assets-v2.lottiefiles.com/a/4a2c7f7e-1171-11ee-ae37-d7b32f8315b2/7qw6O5kPfv.lottie", // broken text pos // "https://lottie.host/02723b80-a213-478e-9320-0e5c3adf88ff/zz4HlIqtSb.lottie", // "https://assets-v2.lottiefiles.com/a/10956594-1169-11ee-98fe-ef3d9d71ad0f/WVFg2bDWGj.lottie", @@ -148,7 +159,7 @@ fun App() { // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/august_view_pulse.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/anim_jpg.zip", // "https://github.com/airbnb/lottie-android/raw/master/snapshot-tests/src/main/assets/Tests/ZipInlineImage.zip", -// ) + ) } // If you want to be aware of loading errors @@ -173,7 +184,7 @@ fun App() { val painter = rememberLottiePainter( composition = composition.value, progress = progress::value, - clipToCompositionBounds = false, +// clipToCompositionBounds = false, // fontManager = rememberResourcesFontManager { fontSpec -> // when (fontSpec.family) { // "Comic Neue" -> Res.font.ComicNeue From 2e5fcd70a1b60c300ca697135c953f729afe9f05 Mon Sep 17 00:00:00 2001 From: Zhirkevich Alexander Y Date: Fri, 28 Jun 2024 15:36:49 +0300 Subject: [PATCH 097/100] cleanup --- .../compottie/internal/animation/AnimatedVector2.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt index 27f647fb..5abdc974 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedVector2.kt @@ -63,9 +63,9 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { ) : AnimatedVector2() { @Transient - private val animationVector = Offset(value[0], value[1]) + private val vec = Vec2(value[0], value[1]) - override fun interpolatedInternal(state: AnimationState): Vec2 = animationVector + override fun interpolatedInternal(state: AnimationState): Vec2 = vec override fun copy(): AnimatedVector2 { return Default( @@ -146,13 +146,15 @@ internal sealed class AnimatedVector2 : KeyframeAnimation, Indexable { ) : AnimatedVector2() { override val expression: String? get() = null + override val index: String? get() = null + override fun copy(): AnimatedVector2 { return Split(x.copy(), y.copy()) } override fun interpolatedInternal(state: AnimationState): Vec2 { - return Offset( + return Vec2( x.interpolated(state), y.interpolated(state) ) From ea9f81792d46701649eb4f009e565aceb9828f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 29 Jun 2024 13:46:22 +0300 Subject: [PATCH 098/100] markers map --- .../github/alexzhirkevich/compottie/LottieComposition.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt index ef472619..910a6775 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieComposition.kt @@ -19,6 +19,7 @@ import io.github.alexzhirkevich.compottie.internal.LottieJson import io.github.alexzhirkevich.compottie.internal.assets.CharacterData import io.github.alexzhirkevich.compottie.internal.assets.ImageAsset import io.github.alexzhirkevich.compottie.internal.assets.LottieAsset +import io.github.alexzhirkevich.compottie.internal.helpers.Marker import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async @@ -182,6 +183,8 @@ class LottieComposition internal constructor( private var loadedFonts : Map = emptyMap() + private val markersMap = animation.markers.associateBy(Marker::name) + internal fun findGlyphs(family : String?) : Map? { return charGlyphs[family] ?: run { val font = animation.fonts?.list @@ -270,8 +273,7 @@ class LottieComposition internal constructor( ) } - internal fun marker(name: String?) = - animation.markers.firstOrNull { it.name == name } + internal fun marker(name: String?) = markersMap[name] companion object { @@ -292,7 +294,8 @@ class LottieComposition internal constructor( } /** - * Clear all previously cached compositions + * Clear all in-memory cached compositions. + * This will not clear the file system cache * */ fun clearCache() = cache.clear() From 588ec545d24003b8e0ca4b0303409faba2f94803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 29 Jun 2024 14:47:43 +0300 Subject: [PATCH 099/100] support XYZ rotation --- .../compottie/FileCompositionSpec.kt | 102 +++++++++--------- .../alexzhirkevich/compottie/FileSystem.js.kt | 102 +++++++++--------- .../compottie/FileSystem.jvmNative.kt | 56 +++++----- .../compottie/FileSystem.wasmJs.kt | 96 ++++++++--------- .../internal/animation/AnimatedTransform.kt | 18 ++++ .../animation/BaseKeyframeAnimation.kt | 17 +-- .../compottie/internal/helpers/Transform.kt | 9 ++ .../compottie/internal/utils/Matrix.kt | 19 +++- example/shared/src/commonMain/kotlin/App.kt | 4 +- 9 files changed, 236 insertions(+), 187 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt index c23b5e0f..687b73f6 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/FileCompositionSpec.kt @@ -1,51 +1,51 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Stable - -/** - * For web it is org.w3c.files.File of the file picked by user. - * For other platforms it is [String] - * */ -expect class FilePath - -interface FileReader { - suspend fun read(path: FilePath) : ByteArray -} - -/** - * File composition spec. Usually useful for files **_picked by user_** - * - * @param path file path. For web it is org.w3c.files.File of the file picked by user. - * For other platforms it is [String] - * @param reader file reader. Defaults to ] Okio default file sys - * @param format animation format (JSON/dotLottie) if it is known - * */ -@Stable -fun LottieCompositionSpec.Companion.File( - path: FilePath, - reader: FileReader = defaultFileReader(), - format: LottieAnimationFormat = LottieAnimationFormat.Undefined -) : LottieCompositionSpec = FileCompositionSpec(path, reader, format) - -private class FileCompositionSpec( - private val path : FilePath, - private val reader: FileReader, - private val format: LottieAnimationFormat -) : LottieCompositionSpec { - - override val key: String? - get() = "file_${path.key}" - - @OptIn(InternalCompottieApi::class) - override suspend fun load(cacheKey: Any?): LottieComposition { - return LottieComposition.getOrCreate(cacheKey) { - reader.read(path).decodeToLottieComposition(format) - } - } -} - -internal expect val FilePath.key : String? - -@Stable -internal expect fun defaultFileReader() : FileReader - +//package io.github.alexzhirkevich.compottie +// +//import androidx.compose.runtime.Stable +// +///** +// * For web it is org.w3c.files.File of the file picked by user. +// * For other platforms it is [String] +// * */ +//expect class FilePath +// +//interface FileReader { +// suspend fun read(path: FilePath) : ByteArray +//} +// +///** +// * File composition spec. Usually useful for files **_picked by user_** +// * +// * @param path file path. For web it is org.w3c.files.File of the file picked by user. +// * For other platforms it is [String] +// * @param reader file reader. Defaults to ] Okio default file sys +// * @param format animation format (JSON/dotLottie) if it is known +// * */ +//@Stable +//fun LottieCompositionSpec.Companion.File( +// path: FilePath, +// reader: FileReader = defaultFileReader(), +// format: LottieAnimationFormat = LottieAnimationFormat.Undefined +//) : LottieCompositionSpec = FileCompositionSpec(path, reader, format) +// +//private class FileCompositionSpec( +// private val path : FilePath, +// private val reader: FileReader, +// private val format: LottieAnimationFormat +//) : LottieCompositionSpec { +// +// override val key: String? +// get() = "file_${path.key}" +// +// @OptIn(InternalCompottieApi::class) +// override suspend fun load(cacheKey: Any?): LottieComposition { +// return LottieComposition.getOrCreate(cacheKey) { +// reader.read(path).decodeToLottieComposition(format) +// } +// } +//} +// +//internal expect val FilePath.key : String? +// +//@Stable +//internal expect fun defaultFileReader() : FileReader +// diff --git a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt index d6bec033..1c1e28c3 100644 --- a/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt +++ b/compottie-dot/src/jsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.js.kt @@ -1,51 +1,51 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Stable -import kotlinx.coroutines.suspendCancellableCoroutine -import kotlinx.coroutines.withContext -import okio.FileSystem -import okio.Path.Companion.toPath -import org.khronos.webgl.ArrayBuffer -import org.khronos.webgl.Uint8Array -import org.w3c.files.File -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException - -actual typealias FilePath = File - - -internal actual val FilePath.key : String? - get() = null - -@Stable -internal actual fun defaultFileReader() : FileReader = - FileSystemFileReader - -@Stable -private object FileSystemFileReader: FileReader { - - override suspend fun read(path: FilePath): ByteArray { - return suspendCancellableCoroutine { cont -> - val reader = org.w3c.files.FileReader() - - reader.onload = { - cont.resume( - Uint8Array(it.target.asDynamic().result.unsafeCast()) - .unsafeCast() - ) - } - - reader.onerror = { - cont.resumeWithException( - Exception("Failed to load file. Was it picked by user? Trace: $it") - ) - } - - cont.invokeOnCancellation { - reader.abort() - } - - reader.readAsArrayBuffer(path) - } - } -} \ No newline at end of file +//package io.github.alexzhirkevich.compottie +// +//import androidx.compose.runtime.Stable +//import kotlinx.coroutines.suspendCancellableCoroutine +//import kotlinx.coroutines.withContext +//import okio.FileSystem +//import okio.Path.Companion.toPath +//import org.khronos.webgl.ArrayBuffer +//import org.khronos.webgl.Uint8Array +//import org.w3c.files.File +//import kotlin.coroutines.resume +//import kotlin.coroutines.resumeWithException +// +//actual typealias FilePath = File +// +// +//internal actual val FilePath.key : String? +// get() = null +// +//@Stable +//internal actual fun defaultFileReader() : FileReader = +// FileSystemFileReader +// +//@Stable +//private object FileSystemFileReader: FileReader { +// +// override suspend fun read(path: FilePath): ByteArray { +// return suspendCancellableCoroutine { cont -> +// val reader = org.w3c.files.FileReader() +// +// reader.onload = { +// cont.resume( +// Uint8Array(it.target.asDynamic().result.unsafeCast()) +// .unsafeCast() +// ) +// } +// +// reader.onerror = { +// cont.resumeWithException( +// Exception("Failed to load file. Was it picked by user? Trace: $it") +// ) +// } +// +// cont.invokeOnCancellation { +// reader.abort() +// } +// +// reader.readAsArrayBuffer(path) +// } +// } +//} \ No newline at end of file diff --git a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt index 82dbaa3a..d57f53f0 100644 --- a/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt +++ b/compottie-dot/src/jvmNativeMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.jvmNative.kt @@ -9,31 +9,31 @@ import okio.SYSTEM @InternalCompottieApi actual fun defaultFileSystem() : FileSystem = FileSystem.SYSTEM - -actual typealias FilePath = String - -internal actual val FilePath.key : String? - get() = this - -@OptIn(InternalCompottieApi::class) -@Stable -internal actual fun defaultFileReader() : FileReader = FileSystemFileReader(defaultFileSystem()) - -@Stable -private class FileSystemFileReader(private val fileSystem: FileSystem): FileReader { - override suspend fun read(path: FilePath): ByteArray { - return withContext(ioDispatcher()) { - fileSystem.read(path.toPath()) { - readByteArray() - } - } - } - - override fun equals(other: Any?): Boolean { - return fileSystem == (other as? FileSystemFileReader)?.fileSystem - } - - override fun hashCode(): Int { - return 31 * fileSystem.hashCode() - } -} \ No newline at end of file +// +//actual typealias FilePath = String +// +//internal actual val FilePath.key : String? +// get() = this +// +//@OptIn(InternalCompottieApi::class) +//@Stable +//internal actual fun defaultFileReader() : FileReader = FileSystemFileReader(defaultFileSystem()) +// +//@Stable +//private class FileSystemFileReader(private val fileSystem: FileSystem): FileReader { +// override suspend fun read(path: FilePath): ByteArray { +// return withContext(ioDispatcher()) { +// fileSystem.read(path.toPath()) { +// readByteArray() +// } +// } +// } +// +// override fun equals(other: Any?): Boolean { +// return fileSystem == (other as? FileSystemFileReader)?.fileSystem +// } +// +// override fun hashCode(): Int { +// return 31 * fileSystem.hashCode() +// } +//} \ No newline at end of file diff --git a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt index dcf8b25d..dc1b33b3 100644 --- a/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt +++ b/compottie-dot/src/wasmJsMain/kotlin/io/github/alexzhirkevich/compottie/FileSystem.wasmJs.kt @@ -1,48 +1,48 @@ -package io.github.alexzhirkevich.compottie - -import androidx.compose.runtime.Stable -import kotlinx.coroutines.suspendCancellableCoroutine -import org.khronos.webgl.ArrayBuffer -import org.khronos.webgl.Int8Array -import org.w3c.dom.events.EventTarget -import org.w3c.files.File -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException - -actual typealias FilePath = File - -internal actual val FilePath.key : String? - get() = null - -@Stable -internal actual fun defaultFileReader() : FileReader = - FileSystemFileReader - -@Stable -private object FileSystemFileReader: FileReader { - - override suspend fun read(path: FilePath): ByteArray { - return suspendCancellableCoroutine { cont -> - val reader = org.w3c.files.FileReader() - - reader.onload = { - val buffer = requireNotNull(it.target).let(::bufferResult) - cont.resume(buffer.toByteArray()) - } - - reader.onerror = { - cont.resumeWithException( - Exception("Failed to load file. Was it picked by user? Trace: $it") - ) - } - - cont.invokeOnCancellation { - reader.abort() - } - - reader.readAsArrayBuffer(path) - } - } -} - -internal fun bufferResult(target : EventTarget) : ArrayBuffer = js("target.result") \ No newline at end of file +//package io.github.alexzhirkevich.compottie +// +//import androidx.compose.runtime.Stable +//import kotlinx.coroutines.suspendCancellableCoroutine +//import org.khronos.webgl.ArrayBuffer +//import org.khronos.webgl.Int8Array +//import org.w3c.dom.events.EventTarget +//import org.w3c.files.File +//import kotlin.coroutines.resume +//import kotlin.coroutines.resumeWithException +// +//actual typealias FilePath = File +// +//internal actual val FilePath.key : String? +// get() = null +// +//@Stable +//internal actual fun defaultFileReader() : FileReader = +// FileSystemFileReader +// +//@Stable +//private object FileSystemFileReader: FileReader { +// +// override suspend fun read(path: FilePath): ByteArray { +// return suspendCancellableCoroutine { cont -> +// val reader = org.w3c.files.FileReader() +// +// reader.onload = { +// val buffer = requireNotNull(it.target).let(::bufferResult) +// cont.resume(buffer.toByteArray()) +// } +// +// reader.onerror = { +// cont.resumeWithException( +// Exception("Failed to load file. Was it picked by user? Trace: $it") +// ) +// } +// +// cont.invokeOnCancellation { +// reader.abort() +// } +// +// reader.readAsArrayBuffer(path) +// } +// } +//} +// +//internal fun bufferResult(target : EventTarget) : ArrayBuffer = js("target.result") \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index 5401cb71..cbfff8b9 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -7,6 +7,9 @@ import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt import io.github.alexzhirkevich.compottie.internal.utils.Math import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.preRotate +import io.github.alexzhirkevich.compottie.internal.utils.preRotateX +import io.github.alexzhirkevich.compottie.internal.utils.preRotateY +import io.github.alexzhirkevich.compottie.internal.utils.preRotateZ import io.github.alexzhirkevich.compottie.internal.utils.preScale import io.github.alexzhirkevich.compottie.internal.utils.preTranslate import io.github.alexzhirkevich.compottie.internal.utils.setValues @@ -21,6 +24,9 @@ internal abstract class AnimatedTransform { abstract val position: AnimatedVector2 abstract val scale: AnimatedVector2 abstract val rotation: AnimatedNumber + open val rotationX: AnimatedNumber? = null + open val rotationY: AnimatedNumber? = null + open val rotationZ: AnimatedNumber? = null abstract val opacity: AnimatedNumber abstract val skew: AnimatedNumber abstract val skewAxis: AnimatedNumber @@ -94,6 +100,18 @@ internal abstract class AnimatedTransform { } } + rotationX?.let { + matrix.preRotateX(it.interpolated(state)) + } + + rotationY?.let { + matrix.preRotateY(it.interpolated(state)) + } + + rotationZ?.let { + matrix.preRotateZ(it.interpolated(state)) + } + val skew = skew.interpolated(state).takeIf { it != 0f } skew?.let { sk -> diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt index f22f3778..1271b947 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/BaseKeyframeAnimation.kt @@ -12,17 +12,19 @@ internal class BaseKeyframeAnimation>( ) : KeyframeAnimation { private val sortedKeyframes = keyframes - .sortedBy { it.time } + .sortedBy(Keyframe<*>::time) .takeIf { it != keyframes } ?: keyframes // ensure keyframes are sorted. don't store extra refs list if so - private val timeIntervals = (0..>( override fun interpolated(state: AnimationState): T { + if (sortedKeyframes.isEmpty()) + return emptyValue + val value = when { sortedKeyframes.isEmpty() -> emptyValue state.frame >= lastFrame -> targetValue diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index 4d8448f6..5ea57a63 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -28,6 +28,15 @@ internal class Transform( @SerialName("r") override val rotation : AnimatedNumber = AnimatedNumber.defaultRotation(), + @SerialName("rx") + override val rotationX : AnimatedNumber? = null, + + @SerialName("ry") + override val rotationY : AnimatedNumber? = null, + + @SerialName("rz") + override val rotationZ : AnimatedNumber? = null, + @SerialName("o") override val opacity : AnimatedNumber = AnimatedNumber.defaultOpacity(), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt index 68d7423f..29dbeb7c 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/utils/Matrix.kt @@ -78,8 +78,25 @@ internal fun Matrix.preRotate(degree : Float) { return rotateZ(degree) } +internal fun Matrix.preRotateX(degree : Float) { + preConcat(tempMatrixTransform.apply { + reset() + rotateX(degree) + }) +} - +internal fun Matrix.preRotateY(degree : Float) { + preConcat(tempMatrixTransform.apply { + reset() + rotateY(degree) + }) +} +internal fun Matrix.preRotateZ(degree : Float) { + preConcat(tempMatrixTransform.apply { + reset() + rotateZ(degree) + }) +} internal fun Matrix.preScale(x : Float, y : Float) { // preConcat(tempMatrixTransform.apply { diff --git a/example/shared/src/commonMain/kotlin/App.kt b/example/shared/src/commonMain/kotlin/App.kt index 09ea610a..6336aff9 100644 --- a/example/shared/src/commonMain/kotlin/App.kt +++ b/example/shared/src/commonMain/kotlin/App.kt @@ -147,9 +147,9 @@ fun App() { // LottieCompositionSpec.ResourceString(ROBOT) // LottieCompositionSpec.Url( - "https://assets-v2.lottiefiles.com/a/a63d8606-1166-11ee-a7f8-83d9759dd8ff/hCTtJKM3Tu.lottie" +// "https://assets-v2.lottiefiles.com/a/a63d8606-1166-11ee-a7f8-83d9759dd8ff/hCTtJKM3Tu.lottie" // "https://assets-v2.lottiefiles.com/a/d5654818-1168-11ee-a43f-870f05952f24/m5LUOQBrz9.lottie" // radial gr with angle -// "https://assets-v2.lottiefiles.com/a/27cd3f04-1180-11ee-852d-8b2f8ce04afa/SB3d1oChh6.lottie", // broken envelope transform + "https://assets-v2.lottiefiles.com/a/27cd3f04-1180-11ee-852d-8b2f8ce04afa/SB3d1oChh6.lottie", // rotationXYZ envelope // "https://assets-v2.lottiefiles.com/a/4a2c7f7e-1171-11ee-ae37-d7b32f8315b2/7qw6O5kPfv.lottie", // broken text pos // "https://lottie.host/02723b80-a213-478e-9320-0e5c3adf88ff/zz4HlIqtSb.lottie", // "https://assets-v2.lottiefiles.com/a/10956594-1169-11ee-98fe-ef3d9d71ad0f/WVFg2bDWGj.lottie", From 1249cb88598f6e4e5ed26ed02fe4645ccb11d0a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=96=D0=B8=D1=80=D0=BA=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sat, 29 Jun 2024 15:14:31 +0300 Subject: [PATCH 100/100] logger emoji, warn about arbitrary on Android --- .../compottie/DotLottieAssetsManager.kt | 2 +- .../compottie/UrlCompositionSpec.kt | 8 ++++---- .../internal/platform/Platform.android.kt | 9 +++------ .../alexzhirkevich/compottie/LottieLogger.kt | 10 ++++++++-- .../internal/animation/AnimatedTransform.kt | 15 ++++++++++----- .../compottie/internal/helpers/Mask.kt | 2 +- .../compottie/internal/helpers/Transform.kt | 7 +++++++ .../internal/layers/BaseCompositionLayer.kt | 1 - .../compottie/internal/layers/SolidColorLayer.kt | 2 +- .../compottie/internal/platform/Platform.kt | 4 ++++ .../compottie/internal/platform/Platform.skiko.kt | 4 ++++ 11 files changed, 43 insertions(+), 21 deletions(-) diff --git a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt index 20ec9b6f..04573fd5 100644 --- a/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt +++ b/compottie-dot/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/DotLottieAssetsManager.kt @@ -31,7 +31,7 @@ internal class DotLottieAssetsManager( return load("/images", trimPath, trimName)?.let { ImageRepresentable.Bytes(it) } ?: run { - Compottie.logger?.info("Failed to decode dotLottie asset $trimName") + Compottie.logger?.warn("Failed to decode dotLottie asset $trimName") null } } diff --git a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt index edba7caf..cdd479c4 100644 --- a/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt +++ b/compottie-network/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/UrlCompositionSpec.kt @@ -60,7 +60,7 @@ private class NetworkCompositionSpec( try { LottieComposition.getOrCreate(cacheKey) { try { - Compottie.logger?.info("Searching for animation in cache...") + Compottie.logger?.info("Looking for animation in cache...") cacheStrategy.load(url)?.let { Compottie.logger?.info("Animation was found in cache. Parsing...") return@getOrCreate it.decodeToLottieComposition(format).also { @@ -72,7 +72,7 @@ private class NetworkCompositionSpec( } catch (t : UnsupportedFileSystemException) { Compottie.logger?.info("File system cache is disabled for this strategy on the current platform") } catch (_: Throwable) { - Compottie.logger?.info("Failed to load or decode animation from cache") + Compottie.logger?.warn("Failed to load or decode animation from cache") } Compottie.logger?.info("Fetching animation from web...") @@ -81,13 +81,13 @@ private class NetworkCompositionSpec( val response = request(client, Url(url)).execute() if (!response.status.isSuccess()) { - Compottie.logger?.info("Animation request failed with ${response.status.value} status code") + Compottie.logger?.warn("Animation request failed with ${response.status.value} status code") throw ClientRequestException(response, response.bodyAsText()) } response.bodyAsChannel().toByteArray() } catch (t : ClientRequestException){ - Compottie.logger?.info("Animation request failed with ${t.response.status.value} status code") + Compottie.logger?.warn("Animation request failed with ${t.response.status.value} status code") throw t } Compottie.logger?.info("Animation was loaded from web. Parsing...") diff --git a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt index 8772d416..e88bae29 100644 --- a/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt +++ b/compottie/src/androidMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.android.kt @@ -1,16 +1,13 @@ package io.github.alexzhirkevich.compottie.internal.platform -import android.graphics.RenderEffect import android.os.Build import androidx.annotation.ChecksSdkIntAtLeast -import androidx.compose.ui.graphics.ColorFilter @ChecksSdkIntAtLeast(parameter = 0) internal actual fun isAndroidAtLeast(code : Int) : Boolean = Build.VERSION.SDK_INT >= code -fun foo(){ - ColorFilter -} - @ChecksSdkIntAtLeast(parameter = 0) internal actual fun isAndroidAtMost(code : Int) : Boolean = Build.VERSION.SDK_INT <= code + +internal actual val currentComposeBackend : ComposeBackend + get() = ComposeBackend.Android \ No newline at end of file diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt index cb85cf69..99259fac 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/LottieLogger.kt @@ -6,6 +6,8 @@ interface LottieLogger { fun info(message: String) + fun warn(message: String) + fun error(message: String, throwable: Throwable) /** @@ -13,11 +15,15 @@ interface LottieLogger { * */ object Default : LottieLogger { override fun info(message: String) { - println("[$TAG] $message") + println("ℹ\uFE0F [$TAG] $message") + } + + override fun warn(message: String) { + println("⚠\uFE0F [$TAG] $message") } override fun error(message: String, throwable: Throwable) { - println("[$TAG] $message") + println("⛔ [$TAG] $message") throwable.printStackTrace() } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt index cbfff8b9..bc0841d6 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/animation/AnimatedTransform.kt @@ -4,6 +4,8 @@ import androidx.compose.ui.graphics.Matrix import io.github.alexzhirkevich.compottie.dynamic.DynamicTransformProvider import io.github.alexzhirkevich.compottie.internal.AnimationState import io.github.alexzhirkevich.compottie.internal.helpers.BooleanInt +import io.github.alexzhirkevich.compottie.internal.platform.ComposeBackend +import io.github.alexzhirkevich.compottie.internal.platform.currentComposeBackend import io.github.alexzhirkevich.compottie.internal.utils.Math import io.github.alexzhirkevich.compottie.internal.utils.preConcat import io.github.alexzhirkevich.compottie.internal.utils.preRotate @@ -31,6 +33,7 @@ internal abstract class AnimatedTransform { abstract val skew: AnimatedNumber abstract val skewAxis: AnimatedNumber + var dynamic : DynamicTransformProvider? = null set(value) { if (field !== value) { @@ -100,12 +103,14 @@ internal abstract class AnimatedTransform { } } - rotationX?.let { - matrix.preRotateX(it.interpolated(state)) - } + if (currentComposeBackend != ComposeBackend.Android) { + rotationX?.let { + matrix.preRotateX(it.interpolated(state)) + } - rotationY?.let { - matrix.preRotateY(it.interpolated(state)) + rotationY?.let { + matrix.preRotateY(it.interpolated(state)) + } } rotationZ?.let { diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt index a46f3dc2..44aea944 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Mask.kt @@ -36,7 +36,7 @@ internal class Mask( } if (!mode.isSupported()){ - Compottie.logger?.info("Animation contains unsupported mask type: $mode. It will be treated as an 'Add' mask") + Compottie.logger?.warn("Animation contains unsupported mask type: $mode. It will be treated as an 'Add' mask") } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt index 5ea57a63..7790e92e 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/helpers/Transform.kt @@ -1,5 +1,6 @@ package io.github.alexzhirkevich.compottie.internal.helpers +import io.github.alexzhirkevich.compottie.Compottie import io.github.alexzhirkevich.compottie.internal.animation.AnimatedNumber import io.github.alexzhirkevich.compottie.internal.animation.AnimatedTransform import io.github.alexzhirkevich.compottie.internal.animation.AnimatedVector2 @@ -47,6 +48,12 @@ internal class Transform( override val skewAxis: AnimatedNumber = AnimatedNumber.defaultSkewAxis(), ) : AnimatedTransform() { + init { + if (rotationX != null || rotationY != null){ + Compottie.logger?.warn("Animations contains arbitrary transforms that are not supported on Android") + } + } + fun deepCopy(): Transform { return Transform( anchorPoint = anchorPoint.copy(), diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt index 5b3e8c75..4e64e2cc 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/BaseCompositionLayer.kt @@ -155,7 +155,6 @@ internal abstract class BaseCompositionLayer: BaseLayer() { matteLayers.add(layers[i - 1]) } } - } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt index c3662637..9b21c108 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/layers/SolidColorLayer.kt @@ -120,7 +120,7 @@ internal class SolidColorLayer( color = Color(red = r, green = g, blue = b, alpha = a) } catch (t: Throwable) { // TODO: sometimes colors are exported as #d9.0147ae147aedf.fdf3b645a1c8e6.028f5c28f5c8 - Compottie.logger?.info("Solid color layer (${name}) with unrecognized color: $colorHex") + Compottie.logger?.warn("Solid color layer (${name}) with unrecognized color: $colorHex") color = Color.Transparent } } diff --git a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt index b5b9e247..8966913d 100644 --- a/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt +++ b/compottie/src/commonMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.kt @@ -3,3 +3,7 @@ package io.github.alexzhirkevich.compottie.internal.platform internal expect fun isAndroidAtLeast(code : Int) : Boolean internal expect fun isAndroidAtMost(code : Int) : Boolean +internal expect val currentComposeBackend : ComposeBackend +internal enum class ComposeBackend { + Android, Skiko +} \ No newline at end of file diff --git a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt index 75c36bf0..65687796 100644 --- a/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt +++ b/compottie/src/skikoMain/kotlin/io/github/alexzhirkevich/compottie/internal/platform/Platform.skiko.kt @@ -1,4 +1,8 @@ package io.github.alexzhirkevich.compottie.internal.platform internal actual fun isAndroidAtLeast(code : Int) : Boolean = false + internal actual fun isAndroidAtMost(code : Int) : Boolean = false + +internal actual val currentComposeBackend : ComposeBackend + get() = ComposeBackend.Skiko \ No newline at end of file